|  | @@ -12,7 +12,9 @@ import net.minecraft.block.material.Material;
 | 
	
		
			
				|  |  |  import net.minecraft.command.arguments.BlockStateParser;
 | 
	
		
			
				|  |  |  import net.minecraft.entity.Entity;
 | 
	
		
			
				|  |  |  import net.minecraft.entity.EntityType;
 | 
	
		
			
				|  |  | +import net.minecraft.entity.LivingEntity;
 | 
	
		
			
				|  |  |  import net.minecraft.entity.player.ServerPlayerEntity;
 | 
	
		
			
				|  |  | +import net.minecraft.fluid.FluidState;
 | 
	
		
			
				|  |  |  import net.minecraft.fluid.Fluids;
 | 
	
		
			
				|  |  |  import net.minecraft.inventory.IInventory;
 | 
	
		
			
				|  |  |  import net.minecraft.item.ItemStack;
 | 
	
	
		
			
				|  | @@ -66,6 +68,26 @@ public class BlockCommands {
 | 
	
		
			
				|  |  |              new Offset(0, 1, 1), // new Offset(1, 1, 1),
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @SuppressWarnings("deprecation")
 | 
	
		
			
				|  |  | +    private static void breakBlock(World w, Entity e, BlockPos pos) {
 | 
	
		
			
				|  |  | +        BlockState state = w.getBlockState(pos);
 | 
	
		
			
				|  |  | +        if(state.isAir(w, pos)) {
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            FluidState fState = w.getFluidState(pos);
 | 
	
		
			
				|  |  | +            if(!(state.getBlock() instanceof AbstractFireBlock)) {
 | 
	
		
			
				|  |  | +                w.playEvent(2001, pos, Block.getStateId(state));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            TileEntity te = state.hasTileEntity() ? w.getTileEntity(pos) : null;
 | 
	
		
			
				|  |  | +            ItemStack stack = ItemStack.EMPTY;
 | 
	
		
			
				|  |  | +            if(e instanceof LivingEntity) {
 | 
	
		
			
				|  |  | +                stack = ((LivingEntity) e).getActiveItemStack();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            Block.spawnDrops(state, w, pos, te, e, stack);
 | 
	
		
			
				|  |  | +            w.setBlockState(pos, fState.getBlockState(), 3, 512);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @SuppressWarnings({"unchecked", "rawtypes"})
 | 
	
		
			
				|  |  |      public static void registerFunctions(ScriptManager sm) {
 | 
	
		
			
				|  |  |          sm.registerFunction("block.gettag", (sc, in) -> BlockTags.getCollection()
 | 
	
	
		
			
				|  | @@ -178,8 +200,7 @@ public class BlockCommands {
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          sm.registerConsumer("block.break", (sc, in) -> {
 | 
	
		
			
				|  |  |              Location l = (Location) in[0].get(sc);
 | 
	
		
			
				|  |  | -            Entity ent = (Entity) in[1].get(sc);
 | 
	
		
			
				|  |  | -            l.getWorld().destroyBlock(l.getBlockPos(), true, ent);
 | 
	
		
			
				|  |  | +            breakBlock(l.getWorld(), (Entity) in[1].get(sc), l.getBlockPos());
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          sm.registerConsumer("block.set", (sc, in) -> {
 | 
	
		
			
				|  |  |              Location l = (Location) in[0].get(sc);
 |