so://phie

poppy

A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy

blob: 12dfdf858c6ea1b04acc48f03ac9818803317157 (1657 bytes)[doc][blame][raw]

1package poppy.modules;

2

3import java.util.HashSet;

4

5import org.bukkit.Location;

6import org.bukkit.Material;

7import org.bukkit.block.Block;

8import org.bukkit.block.data.Directional;

9import org.bukkit.block.data.type.Observer;

10import org.bukkit.entity.ItemFrame;

11import org.bukkit.event.EventHandler;

12import org.bukkit.event.Listener;

13import org.bukkit.event.block.BlockRedstoneEvent;

14import org.bukkit.inventory.ItemStack;

15

16

17public class BlockDetectorModule implements Listener

18{

19 @EventHandler

20 public void onBlockRedstone(BlockRedstoneEvent event)

21 {

22 final Block block = event.getBlock();

23

24 if(block.getType() != Material.OBSERVER) return;

25

26 final ItemFrame[] itemframes = HopperSorterModule.getBlockItemFrames(block);

27 final ItemStack[] itemstacks = getItemsFromItemframes(itemframes);

28

29 if(itemstacks.length <= 0) return;

30

31 final Observer observer = (Observer) block.getBlockData();

32

33 if(block.getBlockData() instanceof Directional)

34 {

35 final Location location = observer.getFacing().getDirection().toLocation(block.getWorld());

36 final Block faceblock = block.getLocation().add(location.toVector()).getBlock();

37

38 boolean check = false;

39

40 for(ItemStack item : itemstacks)

41 {

42 if(item.getType() == faceblock.getType())

43 {

44 observer.setPowered(true);

45 check = true;

46 }

47 }

48

49 if(!check) event.setNewCurrent(0);

50 }

51 }

52

53 public static ItemStack[] getItemsFromItemframes(ItemFrame[] itemframes)

54 {

55 final HashSet<ItemStack> itemstacks = new HashSet <ItemStack>();

56

57 for(ItemFrame itemframe : itemframes)

58 {

59 itemstacks.add(itemframe.getItem());

60 }

61 return itemstacks.toArray(new ItemStack[itemstacks.size()]);

62 }

63}