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:
parent
8d14bd3a9f
commit
1b1954d47d
@ -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,9 +706,17 @@ 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)) {
|
||||||
|
if(item != null) {
|
||||||
|
if(fits(b, BlockStorage.retrieve(block))) {
|
||||||
|
pushItems(b, BlockStorage.retrieve(block));
|
||||||
|
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());
|
||||||
|
block.setType(Material.AIR);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
||||||
if (fits(b, items)) {
|
if (fits(b, items)) {
|
||||||
pushItems(b, items);
|
pushItems(b, items);
|
||||||
@ -711,15 +725,37 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@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 {
|
||||||
|
System.out.println("DEBUG: " + item);
|
||||||
|
if(item != null) {
|
||||||
|
if(fits(b, BlockStorage.retrieve(block))) {
|
||||||
|
pushItems(b, BlockStorage.retrieve(block));
|
||||||
|
System.out.println("DEBUG: IF I'm HERE");
|
||||||
|
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());
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
||||||
if (fits(b, items)) {
|
if (fits(b, items)) {
|
||||||
pushItems(b, items);
|
pushItems(b, items);
|
||||||
|
System.out.println("DEBUG: ELSE I'm HERE");
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
||||||
block.setType(Material.SKULL);
|
block.setType(Material.SKULL);
|
||||||
block.setData((byte) 1);
|
block.setData((byte) 1);
|
||||||
@ -731,6 +767,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
|
|||||||
b.setType(Material.AIR);
|
b.setType(Material.AIR);
|
||||||
BlockStorage.moveBlockInfo(b, block);
|
BlockStorage.moveBlockInfo(b, block);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch(Exception x) {
|
} catch(Exception x) {
|
||||||
x.printStackTrace();
|
x.printStackTrace();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user