22
33import com .google .common .collect .Lists ;
44import com .sk89q .craftbook .ChangedSign ;
5- import com .sk89q .craftbook .bukkit .util .CraftBookBukkitUtil ;
65import com .sk89q .craftbook .mechanics .ic .AbstractICFactory ;
76import com .sk89q .craftbook .mechanics .ic .AbstractSelfTriggeredIC ;
87import com .sk89q .craftbook .mechanics .ic .ChipState ;
1817import com .sk89q .worldedit .bukkit .BukkitAdapter ;
1918import com .sk89q .worldedit .math .BlockVector3 ;
2019import com .sk89q .worldedit .world .block .BaseBlock ;
21- import com .sk89q .worldedit .world .block .BlockStateHolder ;
2220import com .sk89q .worldedit .world .block .BlockTypes ;
2321import org .bukkit .Material ;
2422import org .bukkit .Server ;
2523import org .bukkit .block .Block ;
26- import org .bukkit .inventory . ItemStack ;
24+ import org .bukkit .block . data . BlockData ;
2725
2826import 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