A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: fa50633fe0e5167d46dc797201fdfa2acc2fdb46 (2745 bytes)[doc][blame][raw]
1
package poppy.modules;3
import java.util.HashSet;5
import org.bukkit.Location;6
import org.bukkit.Tag;7
import org.bukkit.Material;8
import org.bukkit.block.Block;9
import org.bukkit.block.data.Directional;10
import org.bukkit.block.data.type.Observer;11
import org.bukkit.block.data.type.TripwireHook;12
import org.bukkit.entity.ItemFrame;13
import org.bukkit.event.EventHandler;14
import org.bukkit.event.Listener;15
import org.bukkit.event.block.BlockRedstoneEvent;16
import org.bukkit.inventory.ItemStack;19
public class BlockDetectorModule implements Listener20
{21
@EventHandler22
public void onBlockRedstone(BlockRedstoneEvent event)23
{24
final Block block = event.getBlock();26
if(block.getType() != Material.OBSERVER) return;28
final ItemFrame[] itemframes = HopperSorterModule.getBlockItemFrames(block);29
final ItemStack[] itemstacks = getItemsFromItemframes(itemframes);31
if(itemstacks.length <= 0) return;33
final Observer observer = (Observer) block.getBlockData();35
if(block.getBlockData() instanceof Directional)36
{37
final Location location = observer.getFacing().getDirection().toLocation(block.getWorld());38
final Block faceblock = block.getLocation().add(location.toVector()).getBlock();40
boolean check = false;42
for(ItemStack item : itemstacks)43
{44
if(item.getType() == faceblock.getType())45
{46
observer.setPowered(true);47
check = true;48
}49
}51
if(!check) event.setNewCurrent(0);52
}53
}55
public static ItemStack[] getItemsFromItemframes(ItemFrame[] itemframes)56
{57
final HashSet<ItemStack> itemstacks = new HashSet <ItemStack>();59
for(ItemFrame itemframe : itemframes)60
{61
itemstacks.add(itemframe.getItem());62
}63
return itemstacks.toArray(new ItemStack[itemstacks.size()]);64
}66
@EventHandler67
public void onBlockRedstoneHook(BlockRedstoneEvent event)68
{69
final Block block = event.getBlock();71
if(block.getType() != Material.TRIPWIRE_HOOK) return;72
if (!(block.getBlockData() instanceof TripwireHook)) return;74
final TripwireHook tripwireHook = (TripwireHook) block.getBlockData();76
if(tripwireHook.getFacing().toString() == "NORTH" || tripwireHook.getFacing().toString() == "EAST")77
{78
if(tripwireHook.isPowered())79
{80
if(tripwireHook.getFacing().toString() == "NORTH")81
{82
Block aBlock = block.getLocation().clone().add(0, 0, 1).getBlock();84
if(!Tag.TRAPDOORS.isTagged(aBlock.getType())) return;86
block.breakNaturally();87
block.setType(Material.TRIPWIRE_HOOK);88
}90
if(tripwireHook.getFacing().toString() == "EAST")91
{92
Block aBlock = block.getLocation().clone().add(-1, 0, 0).getBlock();94
if(!Tag.TRAPDOORS.isTagged(aBlock.getType())) return;96
block.breakNaturally();97
block.setType(Material.TRIPWIRE_HOOK);98
}99
}100
}101
}102
}