diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/DDLock.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/DDLock.java index 3b00196b..4066905a 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/DDLock.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/DDLock.java @@ -40,7 +40,7 @@ public class DDLock * otherwise returns true * @param flag */ - public void lock(boolean flag) + protected void lock(boolean flag) { this.isLocked = flag; } @@ -157,7 +157,7 @@ public class DDLock - public static DDLock createLock(ItemStack itemStack, int lockKey2) + protected static DDLock createLock(ItemStack itemStack, int lockKey2) { itemStack.getTagCompound().setBoolean("HasCreatedLock", true); DDLock.setKeys(itemStack, new int[]{lockKey2}); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/DimLink.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/DimLink.java index de26cd53..a07b46de 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/DimLink.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/DimLink.java @@ -10,7 +10,7 @@ public abstract class DimLink { protected Point4D point; protected int orientation; - private DDLock lock; + protected DDLock lock; protected DimLink parent; protected LinkTail tail; protected List children; @@ -151,36 +151,9 @@ public abstract class DimLink { return this.hasLock()&&this.lock.isLocked(); } - + public DDLock getLock() { - PocketManager.getDimensionData(this.source().getDimension()).flagModified(); return this.lock; } - /** - * only use this on the client to update errything - * @param lock - */ - public void setLock(DDLock lock) - { - PocketManager.getDimensionData(this.source().getDimension()).flagModified(); - this.lock = lock; - } - - /** - * create a lock from a key. Returns false if this door already has a lock, or if they has already locked a door - * @param itemStack - * @return - */ - public boolean createLock(ItemStack itemStack, int lockKey) - { - if(this.hasLock()||DDLock.hasCreatedLock(itemStack)) - { - return false; - } - this.lock = DDLock.createLock(itemStack, lockKey); - PocketManager.getDimensionData(this.source().getDimension()).flagModified(); - return true; - } - } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/NewDimData.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/NewDimData.java index eef34325..36b5f3d8 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/NewDimData.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/NewDimData.java @@ -7,6 +7,7 @@ import java.util.Random; import java.util.TreeMap; import StevenDimDoors.mod_pocketDim.watcher.ClientLinkData; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.config.DDProperties; @@ -98,6 +99,31 @@ public abstract class NewDimData implements IPackable //Set new orientation this.orientation=orientation; } + + /** + * only use this on the client to update errything + * @param lock + */ + public void setLock(DDLock lock) + { + this.lock = lock; + } + + /** + * create a lock from a key. Returns false if this door already has a lock, or if they has already locked a door + * @param itemStack + * @return + */ + public boolean createLock(ItemStack itemStack, int lockKey) + { + if(this.hasLock()||DDLock.hasCreatedLock(itemStack)) + { + return false; + } + this.lock = DDLock.createLock(itemStack, lockKey); + return true; + } + } protected static Random random = new Random(); @@ -561,6 +587,27 @@ public abstract class NewDimData implements IPackable link.setDestination(x, y, z, this); this.modified = true; } + + public void lock(DimLink link, boolean locked) + { + InnerDimLink innerLink = (InnerDimLink)link; + innerLink.lock.lock(locked); + modified = true; + } + + public void setLock(DimLink link, DDLock lock) + { + InnerDimLink innerLink = (InnerDimLink)link; + innerLink.setLock(lock); + modified = true; + } + + public void createLock(DimLink link, ItemStack item, int lockKey) + { + InnerDimLink innerLink = (InnerDimLink)link; + innerLink.createLock(item, lockKey); + modified = true; + } public DimLink getRandomLink() { @@ -583,11 +630,6 @@ public abstract class NewDimData implements IPackable return modified; } - public void flagModified() - { - modified = true; - } - public void clearModified() { this.modified = false; @@ -655,13 +697,12 @@ public abstract class NewDimData implements IPackable children.add(childLink.source().toPoint3D()); } PackedLinkTail tail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType()); - Links.add(new PackedLinkData(link.point,parentPoint,tail,link.orientation,children,link.getLock())); + Links.add(new PackedLinkData(link.point,parentPoint,tail,link.orientation,children,link.lock)); PackedLinkTail tempTail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType()); if(Tails.contains(tempTail)) { Tails.add(tempTail); - } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java index 0488fa9c..393b708f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java @@ -80,7 +80,7 @@ public class PocketManager Point4D source = link.point; NewDimData dimension = getDimensionData(source.getDimension()); DimLink dLink = dimension.getLink(source); - dLink.setLock(link.lock); + dLink.lock=link.lock; } } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemDDKey.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemDDKey.java index 70b838a9..a79162e7 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemDDKey.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemDDKey.java @@ -102,7 +102,7 @@ public class ItemDDKey extends Item { world.playSoundAtEntity(player, mod_pocketDim.modid + ":keyLock", 1F, 1F); } - link.getLock().lock(!link.isLocked()); + PocketManager.getDimensionData(world).lock(link, !link.isLocked()); PocketManager.getLinkWatcher().update(new ClientLinkData(link.source(),link.getLock())); } else @@ -115,7 +115,7 @@ public class ItemDDKey extends Item if(!DDLock.hasCreatedLock(itemStack)) { world.playSoundAtEntity(player, mod_pocketDim.modid + ":keyLock", 1F, 1F); - link.createLock(itemStack, world.rand.nextInt(Integer.MAX_VALUE)); + PocketManager.getDimensionData(world).createLock(link, itemStack, world.rand.nextInt(Integer.MAX_VALUE)); PocketManager.getLinkWatcher().update(new ClientLinkData(link.source(),link.getLock())); } }