From 23ceed62a3d4ebb996a268787a6547045aedce0b Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Thu, 11 Dec 2014 19:39:22 -0800 Subject: [PATCH] Fixed disappearing subdivisions. Was happening on both resize and on extend downward. --- .../GriefPrevention/DataStore.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/DataStore.java b/src/me/ryanhamshire/GriefPrevention/DataStore.java index 19f4088..e25f25f 100644 --- a/src/me/ryanhamshire/GriefPrevention/DataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/DataStore.java @@ -696,6 +696,9 @@ public abstract class DataStore if(claim.parent != null) claim = claim.parent; + //note any subdivisions + ArrayList subdivisions = new ArrayList(claim.children); + //delete the claim this.deleteClaim(claim); @@ -703,6 +706,9 @@ public abstract class DataStore claim.lesserBoundaryCorner.setY(newDepth); claim.greaterBoundaryCorner.setY(newDepth); + //re-add the subdivisions (deleteClaim() removed them) + claim.children.addAll(subdivisions); + //make all subdivisions reach to the same depth for(int i = 0; i < claim.children.size(); i++) { @@ -942,7 +948,10 @@ public abstract class DataStore //see CreateClaim() for details on return value synchronized public CreateClaimResult resizeClaim(Claim claim, int newx1, int newx2, int newy1, int newy2, int newz1, int newz2) { - //remove old claim + //note any subdivisions before deleting the claim + ArrayList subdivisions = new ArrayList(claim.children); + + //remove old claim this.deleteClaim(claim); //try to create this new claim, ignoring the original when checking for overlap @@ -972,13 +981,8 @@ public abstract class DataStore result.claim.managers.add(managers.get(i)); } - //copy subdivisions from old claim - for(int i = 0; i < claim.children.size(); i++) - { - Claim subdivision = claim.children.get(i); - subdivision.parent = result.claim; - result.claim.children.add(subdivision); - } + //restore subdivisions + result.claim.children.addAll(subdivisions); //save those changes this.saveClaim(result.claim);