mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-26 15:16:45 +01:00
We can simplify this!
Didn’t realize there was a event.getBlocks() method for BlockPistonRetractEvent as well.
This commit is contained in:
parent
cfa0daefc5
commit
90b31a29f5
@ -106,15 +106,13 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
// If we're pulling a slime block, it might have something attached to it!
|
// If we're pulling a slime block, it might have something attached to it!
|
||||||
if (movedBlock.getRelative(direction).getState().getType() == Material.SLIME_BLOCK) {
|
if (movedBlock.getRelative(direction).getState().getType() == Material.SLIME_BLOCK) {
|
||||||
// Check if any other slime blocks are attached, because they can also pull blocks
|
for (Block block : event.getBlocks()) {
|
||||||
List<Block> adjacentBlocks = BlockUtils.getAdjacentBlocks(movedBlock.getRelative(direction), Material.SLIME_BLOCK);
|
// // Treat the slime blocks as if it is the sticky piston itself, because pulling
|
||||||
for (Block b : adjacentBlocks) {
|
// // a slime block with a sticky piston is effectively the same as moving a sticky piston.
|
||||||
new StickyPistonTrackerTask(direction, event.getBlock(), b).runTaskLater(plugin, 2);
|
new StickyPistonTrackerTask(direction, event.getBlock(), block).runTaskLater(plugin, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Treat the slime block as if it is the sticky piston itself, because pulling
|
return;
|
||||||
// a slime block with a sticky piston is effectively the same as moving a sticky piston.
|
|
||||||
movedBlock = movedBlock.getRelative(direction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Needed only because under some circumstances Minecraft doesn't move the block
|
// Needed only because under some circumstances Minecraft doesn't move the block
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
package com.gmail.nossr50.util;
|
package com.gmail.nossr50.util;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.bukkit.CropState;
|
import org.bukkit.CropState;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.NetherWartsState;
|
import org.bukkit.NetherWartsState;
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.block.BlockFace;
|
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.material.CocoaPlant;
|
import org.bukkit.material.CocoaPlant;
|
||||||
import org.bukkit.material.CocoaPlant.CocoaPlantSize;
|
import org.bukkit.material.CocoaPlant.CocoaPlantSize;
|
||||||
@ -320,32 +316,6 @@ public final class BlockUtils {
|
|||||||
return type == Material.PISTON_MOVING_PIECE || type == Material.AIR;
|
return type == Material.PISTON_MOVING_PIECE || type == Material.AIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the adjacent blocks of the base block if it is equal to a certain material
|
|
||||||
*
|
|
||||||
* @param base The base block to check
|
|
||||||
* @param material The Material to check for
|
|
||||||
* @return a list with the adjacent blocks
|
|
||||||
*/
|
|
||||||
public static List<Block> getAdjacentBlocks(Block base, Material material) {
|
|
||||||
List<Block> blocks = new ArrayList<Block>();
|
|
||||||
|
|
||||||
if (base.getRelative(BlockFace.NORTH).getType() == material) {
|
|
||||||
blocks.add(base.getRelative(BlockFace.NORTH));
|
|
||||||
}
|
|
||||||
if (base.getRelative(BlockFace.EAST).getType() == material) {
|
|
||||||
blocks.add(base.getRelative(BlockFace.EAST));
|
|
||||||
}
|
|
||||||
if (base.getRelative(BlockFace.SOUTH).getType() == material) {
|
|
||||||
blocks.add(base.getRelative(BlockFace.SOUTH));
|
|
||||||
}
|
|
||||||
if (base.getRelative(BlockFace.WEST).getType() == material) {
|
|
||||||
blocks.add(base.getRelative(BlockFace.WEST));
|
|
||||||
}
|
|
||||||
|
|
||||||
return blocks;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a HashSet containing every transparent block
|
* Get a HashSet containing every transparent block
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user