@Override public String toString() { return (isTopHalf() ? "TOP" : "BOTTOM") + " half of " + super.toString(); }
@Override public void onBlockChanged(GlowBlock block, Material oldType, byte oldData, Material newType, byte newData) { if (newType != Material.AIR) { return; } if (oldType.getData() == Door.class) { Door door = new Door(oldType); door.setData(oldData); if (door.isTopHalf()) { Block b = block.getRelative(BlockFace.DOWN); if (b.getState().getData() instanceof Door) { b.setType(Material.AIR); } } else { Block b = block.getRelative(BlockFace.UP); if (b.getState().getData() instanceof Door) { b.setType(Material.AIR); } } } }
@Override public void run(NPC npc, Block point, ListIterator<Block> path) { BlockState state = point.getState(); Door door = (Door) state.getData(); if (npc.getStoredLocation().distance(point.getLocation()) < 2) { boolean bottom = !door.isTopHalf(); Block set = bottom ? point : point.getRelative(BlockFace.DOWN); state = set.getState(); door = (Door) state.getData(); door.setOpen(true); state.setData(door); state.update(); } } }
Door door = new Door(); door.setConnectedTo("door1"); //this is for test door.setX(event.getX()); door.setY(event.getY()); doors.add(door); drawFloor();
/** * @return whether this is the top half of the door */ public boolean isTopHalf() { return ((getData() & 0x8) == 0x8); }
public class MapObjectFactory { public MapObject create(int i) { if (i == 0) return new Door(); if (i == 1) return new OtherSubClass(); // etc, then a "default" in case above conditions not met return new MapObject(); } }
/** * Opens the door. */ public void open() { BlockState state = block.getState(); ((Door) state.getData()).setOpen(true); state.update(true); }
@Override public String toString() { return (isTopHalf() ? "TOP" : "BOTTOM") + " half of " + super.toString(); }
Door door = new Door(); door.setConnectedTo("door1"); //this is for test door.setX(event.getX()); door.setY(event.getY()); doors.add(door); drawFloor();
/** * @deprecated Does not work (correctly) anymore */ @Deprecated public boolean isOpen() { return ((getData() & 0x4) == 0x4); }
public void operateDoor() { Door door = new Door(); new LockDoor().execute(door); new OpenDoor().execute(door); }
/** * Opens and closes the door when right-clicked by the player. */ @Override public boolean blockInteract(GlowPlayer player, GlowBlock block, BlockFace face, Vector clickedLoc) { // handles opening and closing the door if (block.getType() == Material.IRON_DOOR_BLOCK) { return false; } GlowBlockState state = block.getState(); MaterialData data = state.getData(); if (data instanceof Door) { Door door = (Door) data; if (door.isTopHalf()) { door = null; block = block.getWorld().getBlockAt(block.getX(), block.getY() - 1, block.getZ()); state = block.getState(); data = state.getData(); if (data instanceof Door) { door = (Door) data; } } if (door != null) { door.setOpen(!door.isOpen()); } state.update(true); } return true; }
/** * Add a past state for this block, extending for the other block in case of * doors. This is for the case of interaction or redstone level change. * * @param block * @param relevantFlags */ private void addBlockWithAttachedPotential(final Block block, final long relevantFlags) { final MaterialData materialData = block.getState().getData(); if (materialData instanceof Door) { final Door door = (Door) materialData; final Block otherBlock = block.getRelative(door.isTopHalf() ? BlockFace.DOWN : BlockFace.UP); /* * TODO: In case of redstone: Double doors... detect those too? Is it still more * efficient than using BlockPhysics with lazy delayed updating * (TickListener...). Hinge corner... possibilities? */ if (otherBlock != null // Top of the map / special case. && (BlockProperties.getBlockFlags(otherBlock.getType()) | relevantFlags) == 0) { tracker.addBlocks(block, otherBlock); return; } } // Only add the block in question itself. tracker.addBlocks(block); }
/** * @return BlockFace.SELF * @deprecated Does not work (correctly) anymore */ @Deprecated public BlockFace getHingeCorner() { byte d = getData(); if ((d & 0x3) == 0x3) { return BlockFace.NORTH_WEST; } else if ((d & 0x1) == 0x1) { return BlockFace.SOUTH_EAST; } else if ((d & 0x2) == 0x2) { return BlockFace.SOUTH_WEST; } return BlockFace.NORTH_EAST; }
for(int i = 0; i<=9; i++){ al.add(new Door("closed", i)); }
if (doorData.isTopHalf()) { targetBlock = targetBlock.getRelative(BlockFace.DOWN); blockState = targetBlock.getState(); if (doorData.isOpen()) { return SpellResult.NO_TARGET; doorData.setOpen(true); break; case CLOSE: if (!doorData.isOpen()) { return SpellResult.NO_TARGET; doorData.setOpen(false); break; case TOGGLE: doorData.setOpen(!doorData.isOpen()); break;
door_bottom = (door.isTopHalf()) ? block.getRelative(BlockFace.DOWN) : block; boolean opened = TARDISStaticUtils.isDoorOpen(door_bottom); if (opened && preset.hasDoor()) {