package fr.c_far.lampfloorauto; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; public class FloorLamp { private final Material LAMP_ON = Material.REDSTONE_LAMP_ON; private final Material LAMP_OFF = Material.REDSTONE_LAMP_OFF; private final Material BASE = Material.COBBLE_WALL; private final int MAX_HEIGHT_FLOOR_LAMP = 6; public boolean isFloorLamp(Block b) { if(!b.getType().equals(BASE)) return false; Block lamp = getBlockLamp(b); Material m = lamp.getType(); if(!(m.equals(LAMP_ON) || m.equals(LAMP_OFF))) return false; int distance = lamp.getY() - b.getY(); if(distance >= MAX_HEIGHT_FLOOR_LAMP || distance <= 1) return false; Block fence = b; for(int i = 1; i < distance; i++) { fence = fence.getRelative(BlockFace.UP); if(!fence.getType().equals(Material.FENCE)) return false; } return true; } public boolean setON(Block b) { if(!b.getType().equals(BASE)) return false; getBlockLamp(b).setType(LAMP_ON); if(LAMP_ON.equals(Material.REDSTONE_LAMP_ON)) { Block rb = b.getWorld().getHighestBlockAt(b.getLocation()); rb.setType(Material.REDSTONE_BLOCK); rb.setType(Material.AIR); } return true; } public boolean setOFF(Block b) { if(!b.getType().equals(BASE)) return false; getBlockLamp(b).setType(LAMP_OFF); return true; } private Block getBlockLamp(Block b) { return b.getWorld().getHighestBlockAt(b.getLocation()).getRelative(BlockFace.DOWN); } }