diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/CuboidTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/CuboidTag.java index 1885e30b9b..3c03444626 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/CuboidTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/CuboidTag.java @@ -76,6 +76,7 @@ public CuboidTag clone() { cuboid = new CuboidTag(); } cuboid.noteName = null; + cuboid.priorNoteName = null; cuboid.flagTracker = null; cuboid.pairs = new ArrayList<>(pairs.size()); for (LocationPair pair : pairs) { @@ -293,7 +294,7 @@ public void regenerate(LocationTag point_1, LocationTag point_2) { public List pairs = new ArrayList<>(); - public String noteName = null; + public String noteName = null, priorNoteName = null; public AbstractFlagTracker flagTracker = null; @@ -602,12 +603,28 @@ public void makeUnique(String id) { @Override public void forget() { + if (noteName == null) { + return; + } + priorNoteName = noteName; NotedAreaTracker.remove(this); NoteManager.remove(this); noteName = null; flagTracker = null; } + @Override + public CuboidTag refreshState() { + if (noteName == null && priorNoteName != null) { + Notable note = NoteManager.getSavedObject(priorNoteName); + if (note instanceof CuboidTag) { + return (CuboidTag) note; + } + priorNoteName = null; + } + return this; + } + String prefix = "Cuboid"; @Override diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/EllipsoidTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/EllipsoidTag.java index aa94190a76..e9e9621cd7 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/EllipsoidTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/EllipsoidTag.java @@ -145,7 +145,7 @@ public EllipsoidTag(LocationTag center, LocationTag size) { public LocationTag size; - public String noteName = null; + public String noteName = null, priorNoteName = null; public AbstractFlagTracker flagTracker = null; @@ -284,11 +284,28 @@ public void makeUnique(String id) { @Override public void forget() { + if (noteName == null) { + return; + } + priorNoteName = noteName; NotedAreaTracker.remove(this); NoteManager.remove(this); noteName = null; flagTracker = null; } + + @Override + public EllipsoidTag refreshState() { + if (noteName == null && priorNoteName != null) { + Notable note = NoteManager.getSavedObject(priorNoteName); + if (note instanceof EllipsoidTag) { + return (EllipsoidTag) note; + } + priorNoteName = null; + } + return this; + } + @Override public int hashCode() { if (noteName != null) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java index a90502feb3..1853b4eb93 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java @@ -176,7 +176,7 @@ public void setInventory(Inventory inventory) { this.inventory = inventory; } - public String noteName; + public String noteName = null, priorNoteName = null; public void makeUnique(String id) { InventoryTag toNote = new InventoryTag(inventory, idType, idHolder); @@ -205,12 +205,29 @@ public void makeUnique(String id) { @Override public void forget() { + if (noteName == null) { + return; + } + priorNoteName = noteName; NoteManager.remove(this); InventoryScriptHelper.notedInventories.remove(inventory); flagTracker = null; noteName = null; } + @Override + public InventoryTag refreshState() { + if (noteName == null && priorNoteName != null) { + Notable note = NoteManager.getSavedObject(priorNoteName); + if (note instanceof InventoryTag) { + return (InventoryTag) note; + } + priorNoteName = null; + } + trackTemporaryInventory(this); + return this; + } + @Override public AbstractFlagTracker getFlagTracker() { return flagTracker; diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/PolygonTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/PolygonTag.java index 8cfe3570e0..3a0004e670 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/PolygonTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/PolygonTag.java @@ -68,7 +68,7 @@ public class PolygonTag implements ObjectTag, Cloneable, Notable, Adjustable, Ar public Corner boxMin = new Corner(), boxMax = new Corner(); - public String noteName = null; + public String noteName = null, priorNoteName = null; public AbstractFlagTracker flagTracker = null; @@ -422,12 +422,28 @@ public void makeUnique(String id) { @Override public void forget() { + if (noteName == null) { + return; + } + priorNoteName = noteName; NotedAreaTracker.remove(this); NoteManager.remove(this); noteName = null; flagTracker = null; } + @Override + public PolygonTag refreshState() { + if (noteName == null && priorNoteName != null) { + Notable note = NoteManager.getSavedObject(priorNoteName); + if (note instanceof PolygonTag) { + return (PolygonTag) note; + } + priorNoteName = null; + } + return this; + } + String prefix = "Polygon"; @Override