1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package com.gmail.nossr50.runnables;
- import com.gmail.nossr50.mcMMO;
- import com.gmail.nossr50.util.BlockUtils;
- import com.gmail.nossr50.util.CancellableRunnable;
- import com.gmail.nossr50.util.MetadataConstants;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockFace;
- import java.util.List;
- public class PistonTrackerTask extends CancellableRunnable {
- private final List<Block> blocks;
- private final BlockFace direction;
- private final Block futureEmptyBlock;
- public PistonTrackerTask(List<Block> blocks, BlockFace direction, Block futureEmptyBlock) {
- this.blocks = blocks;
- this.direction = direction;
- this.futureEmptyBlock = futureEmptyBlock;
- }
- @Override
- public void run() {
- // Check to see if futureEmptyBlock is empty - if it isn't; the blocks didn't move
- if (!BlockUtils.isPistonPiece(futureEmptyBlock.getState())) {
- return;
- }
- if (mcMMO.getPlaceStore().isTrue(futureEmptyBlock)) {
- mcMMO.getPlaceStore().setFalse(futureEmptyBlock);
- }
- for (Block b : blocks) {
- Block nextBlock = b.getRelative(direction);
- if (nextBlock.hasMetadata(MetadataConstants.METADATA_KEY_PISTON_TRACKING)) {
- BlockUtils.setUnnaturalBlock(nextBlock);
- nextBlock.removeMetadata(MetadataConstants.METADATA_KEY_PISTON_TRACKING, mcMMO.p);
- }
- else if (mcMMO.getPlaceStore().isTrue(nextBlock)) {
- // Block doesn't have metadatakey but isTrue - set it to false
- mcMMO.getPlaceStore().setFalse(nextBlock);
- }
- }
- }
- }
|