1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

Fixed Android Miner not breaking Slimefun blocks correctly

This commit is contained in:
Redemption 2018-01-03 16:25:29 +01:00 committed by GitHub
parent 8d14bd3a9f
commit 1b1954d47d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -316,17 +316,20 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
} }
case DIG_FORWARD: { case DIG_FORWARD: {
Block block = b.getRelative(BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation"))); Block block = b.getRelative(BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation")));
mine(b, block); SlimefunItem item = BlockStorage.check(block);
mine(b, block, item);
break; break;
} }
case DIG_UP: { case DIG_UP: {
Block block = b.getRelative(BlockFace.UP); Block block = b.getRelative(BlockFace.UP);
mine(b, block); SlimefunItem item = BlockStorage.check(block);
mine(b, block, item);
break; break;
} }
case DIG_DOWN: { case DIG_DOWN: {
Block block = b.getRelative(BlockFace.DOWN); Block block = b.getRelative(BlockFace.DOWN);
mine(b, block); SlimefunItem item = BlockStorage.check(block);
mine(b, block, item);
break; break;
} }
case CATCH_FISH: { case CATCH_FISH: {
@ -344,19 +347,22 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
case MOVE_AND_DIG_FORWARD: { case MOVE_AND_DIG_FORWARD: {
BlockFace face = BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation")); BlockFace face = BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation"));
Block block = b.getRelative(face); Block block = b.getRelative(face);
movedig(b, face, block); SlimefunItem item = BlockStorage.check(block);
movedig(b, face, block, item);
break; break;
} }
case MOVE_AND_DIG_UP: { case MOVE_AND_DIG_UP: {
BlockFace face = BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation")); BlockFace face = BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation"));
Block block = b.getRelative(BlockFace.UP); Block block = b.getRelative(BlockFace.UP);
movedig(b, face, block); SlimefunItem item = BlockStorage.check(block);
movedig(b, face, block, item);
break; break;
} }
case MOVE_AND_DIG_DOWN: { case MOVE_AND_DIG_DOWN: {
BlockFace face = BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation")); BlockFace face = BlockFace.valueOf(BlockStorage.getBlockInfo(b, "rotation"));
Block block = b.getRelative(BlockFace.DOWN); Block block = b.getRelative(BlockFace.DOWN);
movedig(b, face, block); SlimefunItem item = BlockStorage.check(block);
movedig(b, face, block, item);
break; break;
} }
case INTERFACE_ITEMS: { case INTERFACE_ITEMS: {
@ -700,36 +706,67 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
} }
} }
private void mine(Block b, Block block) { private void mine(Block b, Block block, SlimefunItem item) {
Collection<ItemStack> drops = block.getDrops(); Collection<ItemStack> drops = block.getDrops();
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getBlockInfo(b, "owner")), block)) { if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getBlockInfo(b, "owner")), block)) {
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); if(item != null) {
if (fits(b, items)) { if(fits(b, BlockStorage.retrieve(block))) {
pushItems(b, items); pushItems(b, BlockStorage.retrieve(block));
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); if(SlimefunItem.blockhandler.containsKey(item.getID())) SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG);
block.setType(Material.AIR); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
block.setType(Material.AIR);
}
}else {
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
if (fits(b, items)) {
pushItems(b, items);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
block.setType(Material.AIR);
}
} }
} }
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private void movedig(Block b, BlockFace face, Block block) { private void movedig(Block b, BlockFace face, Block block, SlimefunItem item) {
Collection<ItemStack> drops = block.getDrops(); Collection<ItemStack> drops = block.getDrops();
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getBlockInfo(b, "owner")), block)) { if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && CSCoreLib.getLib().getProtectionManager().canBuild(UUID.fromString(BlockStorage.getBlockInfo(b, "owner")), block)) {
try { try {
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]); System.out.println("DEBUG: " + item);
if (fits(b, items)) { if(item != null) {
pushItems(b, items); if(fits(b, BlockStorage.retrieve(block))) {
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType()); pushItems(b, BlockStorage.retrieve(block));
block.setType(Material.SKULL); System.out.println("DEBUG: IF I'm HERE");
block.setData((byte) 1); if(SlimefunItem.blockhandler.containsKey(item.getID())) SlimefunItem.blockhandler.get(item.getID()).onBreak(null, block, item, UnregisterReason.ANDROID_DIG);
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
Skull skull = (Skull) block.getState(); block.setType(Material.SKULL);
skull.setRotation(face); block.setData((byte) 1);
skull.update(true, false);
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem())); Skull skull = (Skull) block.getState();
b.setType(Material.AIR); skull.setRotation(face);
BlockStorage.moveBlockInfo(b, block); skull.update(true, false);
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
b.setType(Material.AIR);
BlockStorage.moveBlockInfo(b, block);
}
}
else {
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
if (fits(b, items)) {
pushItems(b, items);
System.out.println("DEBUG: ELSE I'm HERE");
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
block.setType(Material.SKULL);
block.setData((byte) 1);
Skull skull = (Skull) block.getState();
skull.setRotation(face);
skull.update(true, false);
CustomSkull.setSkull(block, CustomSkull.getTexture(getItem()));
b.setType(Material.AIR);
BlockStorage.moveBlockInfo(b, block);
}
} }
} catch(Exception x) { } catch(Exception x) {
x.printStackTrace(); x.printStackTrace();