NEWS: Welcome to my new homepage! <3

BlockDetectorModule.java - poppy - A feature-rich Minecraft plugin which enhances gaming experience

poppy

A feature-rich Minecraft plugin which enhances gaming experience
git clone git://192.168.2.2/poppy
Log | Files | Refs | README

BlockDetectorModule.java (2745B)


      1 package poppy.modules;
      2 
      3 import java.util.HashSet;
      4 
      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;
     17 
     18 
     19 public class BlockDetectorModule implements Listener
     20 {
     21 	@EventHandler
     22 	public void onBlockRedstone(BlockRedstoneEvent event)
     23 	{
     24 		final Block block = event.getBlock();
     25 
     26 		if(block.getType() != Material.OBSERVER) return;
     27 
     28 		final ItemFrame[] itemframes = HopperSorterModule.getBlockItemFrames(block);
     29 		final ItemStack[] itemstacks = getItemsFromItemframes(itemframes);
     30 
     31 		if(itemstacks.length <= 0) return;
     32 
     33 		final Observer observer = (Observer) block.getBlockData();
     34 
     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();
     39 
     40 			boolean check = false;
     41 
     42 			for(ItemStack item : itemstacks)
     43 			{
     44 				if(item.getType() == faceblock.getType())
     45 				{
     46 					observer.setPowered(true);
     47 					check = true;
     48 				}
     49 			}
     50 
     51 			if(!check) event.setNewCurrent(0);
     52 		}
     53 	}
     54 
     55 	public static ItemStack[] getItemsFromItemframes(ItemFrame[] itemframes)
     56 	{
     57 		final HashSet<ItemStack> itemstacks = new HashSet <ItemStack>();
     58 
     59 		for(ItemFrame itemframe : itemframes)
     60 		{
     61 			itemstacks.add(itemframe.getItem());
     62 		}
     63 		return itemstacks.toArray(new ItemStack[itemstacks.size()]);
     64 	}
     65 
     66 	@EventHandler
     67 	public void onBlockRedstoneHook(BlockRedstoneEvent event)
     68 	{
     69 		final Block block = event.getBlock();
     70 
     71 		if(block.getType() != Material.TRIPWIRE_HOOK) return;
     72 		if (!(block.getBlockData() instanceof TripwireHook)) return;
     73 
     74 		final TripwireHook tripwireHook = (TripwireHook) block.getBlockData();
     75 
     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();
     83 
     84 					if(!Tag.TRAPDOORS.isTagged(aBlock.getType())) return;
     85 
     86 					block.breakNaturally();
     87 					block.setType(Material.TRIPWIRE_HOOK);
     88 				}
     89 
     90 				if(tripwireHook.getFacing().toString() == "EAST")
     91 				{
     92 					Block aBlock = block.getLocation().clone().add(-1, 0, 0).getBlock();
     93 
     94 					if(!Tag.TRAPDOORS.isTagged(aBlock.getType())) return;
     95 
     96 					block.breakNaturally();
     97 					block.setType(Material.TRIPWIRE_HOOK);
     98 				}
     99 			}
    100 		}
    101 	}
    102 }