PistonTrackerTask.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.gmail.nossr50.runnables;
  2. import com.gmail.nossr50.mcMMO;
  3. import com.gmail.nossr50.util.BlockUtils;
  4. import org.bukkit.block.Block;
  5. import org.bukkit.block.BlockFace;
  6. import org.bukkit.scheduler.BukkitRunnable;
  7. import java.util.List;
  8. public class PistonTrackerTask extends BukkitRunnable {
  9. private List<Block> blocks;
  10. private BlockFace direction;
  11. private Block futureEmptyBlock;
  12. public PistonTrackerTask(List<Block> blocks, BlockFace direction, Block futureEmptyBlock) {
  13. this.blocks = blocks;
  14. this.direction = direction;
  15. this.futureEmptyBlock = futureEmptyBlock;
  16. }
  17. @Override
  18. public void run() {
  19. // Check to see if futureEmptyBlock is empty - if it isn't; the blocks didn't move
  20. if (!BlockUtils.isPistonPiece(futureEmptyBlock.getState())) {
  21. return;
  22. }
  23. if (mcMMO.getPlaceStore().isTrue(futureEmptyBlock)) {
  24. mcMMO.getPlaceStore().setFalse(futureEmptyBlock);
  25. }
  26. for (Block b : blocks) {
  27. Block nextBlock = b.getRelative(direction);
  28. if (nextBlock.hasMetadata(mcMMO.PISTON_TRACKING_METAKEY)) {
  29. mcMMO.getPlaceStore().setTrue(nextBlock);
  30. nextBlock.removeMetadata(mcMMO.PISTON_TRACKING_METAKEY, mcMMO.p);
  31. } else if (mcMMO.getPlaceStore().isTrue(nextBlock)) {
  32. // Block doesn't have metadatakey but isTrue - set it to false
  33. mcMMO.getPlaceStore().setFalse(nextBlock);
  34. }
  35. }
  36. }
  37. }