PistonTrackerTask.java 1.6 KB

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