lock tweaks
Changed how locks are modified so all modifications occur through NewDimData
This commit is contained in:
parent
77241e6f90
commit
e8fa928c50
5 changed files with 55 additions and 41 deletions
|
@ -40,7 +40,7 @@ public class DDLock
|
||||||
* otherwise returns true
|
* otherwise returns true
|
||||||
* @param flag
|
* @param flag
|
||||||
*/
|
*/
|
||||||
public void lock(boolean flag)
|
protected void lock(boolean flag)
|
||||||
{
|
{
|
||||||
this.isLocked = 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);
|
itemStack.getTagCompound().setBoolean("HasCreatedLock", true);
|
||||||
DDLock.setKeys(itemStack, new int[]{lockKey2});
|
DDLock.setKeys(itemStack, new int[]{lockKey2});
|
||||||
|
|
|
@ -10,7 +10,7 @@ public abstract class DimLink
|
||||||
{
|
{
|
||||||
protected Point4D point;
|
protected Point4D point;
|
||||||
protected int orientation;
|
protected int orientation;
|
||||||
private DDLock lock;
|
protected DDLock lock;
|
||||||
protected DimLink parent;
|
protected DimLink parent;
|
||||||
protected LinkTail tail;
|
protected LinkTail tail;
|
||||||
protected List<DimLink> children;
|
protected List<DimLink> children;
|
||||||
|
@ -151,36 +151,9 @@ public abstract class DimLink
|
||||||
{
|
{
|
||||||
return this.hasLock()&&this.lock.isLocked();
|
return this.hasLock()&&this.lock.isLocked();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DDLock getLock()
|
public DDLock getLock()
|
||||||
{
|
{
|
||||||
PocketManager.getDimensionData(this.source().getDimension()).flagModified();
|
|
||||||
return this.lock;
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import java.util.Random;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
import StevenDimDoors.mod_pocketDim.watcher.ClientLinkData;
|
import StevenDimDoors.mod_pocketDim.watcher.ClientLinkData;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import StevenDimDoors.mod_pocketDim.Point3D;
|
import StevenDimDoors.mod_pocketDim.Point3D;
|
||||||
import StevenDimDoors.mod_pocketDim.config.DDProperties;
|
import StevenDimDoors.mod_pocketDim.config.DDProperties;
|
||||||
|
@ -98,6 +99,31 @@ public abstract class NewDimData implements IPackable<PackedDimData>
|
||||||
//Set new orientation
|
//Set new orientation
|
||||||
this.orientation=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();
|
protected static Random random = new Random();
|
||||||
|
|
||||||
|
@ -561,6 +587,27 @@ public abstract class NewDimData implements IPackable<PackedDimData>
|
||||||
link.setDestination(x, y, z, this);
|
link.setDestination(x, y, z, this);
|
||||||
this.modified = true;
|
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()
|
public DimLink getRandomLink()
|
||||||
{
|
{
|
||||||
|
@ -583,11 +630,6 @@ public abstract class NewDimData implements IPackable<PackedDimData>
|
||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void flagModified()
|
|
||||||
{
|
|
||||||
modified = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clearModified()
|
public void clearModified()
|
||||||
{
|
{
|
||||||
this.modified = false;
|
this.modified = false;
|
||||||
|
@ -655,13 +697,12 @@ public abstract class NewDimData implements IPackable<PackedDimData>
|
||||||
children.add(childLink.source().toPoint3D());
|
children.add(childLink.source().toPoint3D());
|
||||||
}
|
}
|
||||||
PackedLinkTail tail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType());
|
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());
|
PackedLinkTail tempTail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType());
|
||||||
if(Tails.contains(tempTail))
|
if(Tails.contains(tempTail))
|
||||||
{
|
{
|
||||||
Tails.add(tempTail);
|
Tails.add(tempTail);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class PocketManager
|
||||||
Point4D source = link.point;
|
Point4D source = link.point;
|
||||||
NewDimData dimension = getDimensionData(source.getDimension());
|
NewDimData dimension = getDimensionData(source.getDimension());
|
||||||
DimLink dLink = dimension.getLink(source);
|
DimLink dLink = dimension.getLink(source);
|
||||||
dLink.setLock(link.lock);
|
dLink.lock=link.lock;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ public class ItemDDKey extends Item
|
||||||
{
|
{
|
||||||
world.playSoundAtEntity(player, mod_pocketDim.modid + ":keyLock", 1F, 1F);
|
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()));
|
PocketManager.getLinkWatcher().update(new ClientLinkData(link.source(),link.getLock()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -115,7 +115,7 @@ public class ItemDDKey extends Item
|
||||||
if(!DDLock.hasCreatedLock(itemStack))
|
if(!DDLock.hasCreatedLock(itemStack))
|
||||||
{
|
{
|
||||||
world.playSoundAtEntity(player, mod_pocketDim.modid + ":keyLock", 1F, 1F);
|
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()));
|
PocketManager.getLinkWatcher().update(new ClientLinkData(link.source(),link.getLock()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue