fixing problem with gates saved in older version (hopefully); check if gate is really open in isOpen() method
This commit is contained in:
parent
d4123d137a
commit
52a9278dfc
@ -81,7 +81,7 @@ public class Gate
|
|||||||
|
|
||||||
public Integer[][] getGateBlocks()
|
public Integer[][] getGateBlocks()
|
||||||
{
|
{
|
||||||
return gateBlocks;
|
return gateBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -200,6 +200,22 @@ public class Gate
|
|||||||
|
|
||||||
public boolean isOpen()
|
public boolean isOpen()
|
||||||
{
|
{
|
||||||
|
// check if gate is really open
|
||||||
|
if (getGateBlocks() == null)
|
||||||
|
{
|
||||||
|
isOpen = false;
|
||||||
|
}
|
||||||
|
else if (!isHidden())
|
||||||
|
{
|
||||||
|
Integer[] gateBlock = getGateBlocks()[0];
|
||||||
|
Block b = new Location(from.getWorld(), gateBlock[0], gateBlock[1], gateBlock[2]).getBlock();
|
||||||
|
|
||||||
|
if (b.getType() != Material.PORTAL)
|
||||||
|
{
|
||||||
|
isOpen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return this.isOpen;
|
return this.isOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,6 +310,28 @@ public class Gate
|
|||||||
|
|
||||||
fillIds();
|
fillIds();
|
||||||
|
|
||||||
|
// old releases did not save gate blocks - this fixes the problem
|
||||||
|
for (Gate g : getAll())
|
||||||
|
{
|
||||||
|
if (g.getGateBlocks() == null && g.getFrom() != null)
|
||||||
|
{
|
||||||
|
Plugin.log("Fixing problems with old gate: " + g.getId());
|
||||||
|
|
||||||
|
Set<Block> gateBlocks = FloodUtil.getGateFrameBlocks(g.getFrom().getBlock());
|
||||||
|
|
||||||
|
if (gateBlocks == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
g.setGateBlocks(gateBlocks);
|
||||||
|
|
||||||
|
if (((Block) gateBlocks.toArray()[0]).getType() == Material.PORTAL )
|
||||||
|
g.setOpen(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
save();
|
||||||
|
// end of fix
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user