Skip to content

Commit ea3c2aa

Browse files
committed
Fixed a few issues with the block breaker ICs
1 parent 00c83cb commit ea3c2aa

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

src/main/java/com/sk89q/craftbook/mechanics/ic/gates/world/blocks/BlockBreaker.java

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.google.common.collect.Lists;
44
import com.sk89q.craftbook.ChangedSign;
5-
import com.sk89q.craftbook.bukkit.util.CraftBookBukkitUtil;
65
import com.sk89q.craftbook.mechanics.ic.AbstractICFactory;
76
import com.sk89q.craftbook.mechanics.ic.AbstractSelfTriggeredIC;
87
import com.sk89q.craftbook.mechanics.ic.ChipState;
@@ -18,12 +17,11 @@
1817
import com.sk89q.worldedit.bukkit.BukkitAdapter;
1918
import com.sk89q.worldedit.math.BlockVector3;
2019
import com.sk89q.worldedit.world.block.BaseBlock;
21-
import com.sk89q.worldedit.world.block.BlockStateHolder;
2220
import com.sk89q.worldedit.world.block.BlockTypes;
2321
import org.bukkit.Material;
2422
import org.bukkit.Server;
2523
import org.bukkit.block.Block;
26-
import org.bukkit.inventory.ItemStack;
24+
import org.bukkit.block.data.BlockData;
2725

2826
import java.util.List;
2927

@@ -60,8 +58,8 @@ public void think(ChipState state) {
6058
state.setOutput(0, breakBlock());
6159
}
6260

63-
private Block broken, chest;
64-
private BlockStateHolder item;
61+
private Block broken;
62+
private BaseBlock item;
6563

6664
@Override
6765
public void load() {
@@ -70,34 +68,32 @@ public void load() {
7068

7169
public boolean breakBlock() {
7270

71+
boolean above = ((Factory) getFactory()).above;
7372
if (broken == null) {
74-
7573
Block bl = getBackBlock();
7674

77-
if (((Factory)getFactory()).above) {
78-
broken = bl.getRelative(0, -1, 0);
79-
} else {
75+
if (above) {
8076
broken = bl.getRelative(0, 1, 0);
77+
} else {
78+
broken = bl.getRelative(0, -1, 0);
8179
}
8280
}
8381

84-
if (broken == null || broken.getType() == Material.AIR || broken.getType() == Material.MOVING_PISTON || Blocks
85-
.containsFuzzy(((Factory) getFactory()).blockBlacklist, BukkitAdapter.adapt(broken.getBlockData())))
86-
return false;
82+
BlockData brokenData = broken.getBlockData();
8783

88-
if (!item.equalsFuzzy(BukkitAdapter.adapt(broken.getBlockData())))
84+
if (broken.getType() == Material.AIR || broken.getType() == Material.MOVING_PISTON || Blocks
85+
.containsFuzzy(((Factory) getFactory()).blockBlacklist, BukkitAdapter.adapt(brokenData))) {
86+
return false;
87+
}
8988

90-
ICUtil.collectItem(this, BlockVector3.at(0, 1, 0), BlockUtil.getBlockDrops(broken, null));
91-
broken.setType(Material.AIR);
89+
if (item == null || item.equalsFuzzy(BukkitAdapter.adapt(brokenData))) {
90+
ICUtil.collectItem(this, above ? BlockVector3.at(0, -1, 0) : BlockVector3.at(0, 1, 0), BlockUtil.getBlockDrops(broken, null));
91+
broken.setType(Material.AIR);
92+
}
9293

9394
return true;
9495
}
9596

96-
public void dropItem(ItemStack item) {
97-
98-
CraftBookBukkitUtil.toSign(getSign()).getWorld().dropItem(BlockUtil.getBlockCentre(CraftBookBukkitUtil.toSign(getSign()).getBlock()), item);
99-
}
100-
10197
public static class Factory extends AbstractICFactory implements ConfigurableIC {
10298

10399
boolean above;
@@ -120,7 +116,7 @@ public IC create(ChangedSign sign) {
120116
public void verify(ChangedSign sign) throws ICVerificationException {
121117

122118
if(!sign.getLine(2).trim().isEmpty()) {
123-
BlockStateHolder item = BlockSyntax.getBlock(sign.getLine(2), true);
119+
BaseBlock item = BlockSyntax.getBlock(sign.getLine(2), true);
124120
if(item == null)
125121
throw new ICVerificationException("An invalid block was provided on line 2!");
126122
if(Blocks.containsFuzzy(blockBlacklist, item))

0 commit comments

Comments
 (0)