Disassemble contraption when bearing block being rotated by wrench

This commit is contained in:
Snownee 2021-03-18 23:26:15 +08:00
parent 3b36526443
commit 7954aed0fd
2 changed files with 23 additions and 0 deletions

View file

@ -3,6 +3,9 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be
import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.item.ItemUseContext;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.Axis;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -29,4 +32,15 @@ public abstract class BearingBlock extends DirectionalKineticBlock {
return true; return true;
} }
@Override
public ActionResultType onWrenched(BlockState state, ItemUseContext context) {
ActionResultType resultType = super.onWrenched(state, context);
if (!context.getWorld().isRemote && resultType.isAccepted()) {
TileEntity te = context.getWorld().getTileEntity(context.getPos());
if (te instanceof MechanicalBearingTileEntity) {
((MechanicalBearingTileEntity) te).disassemble();
}
}
return resultType;
}
} }

View file

@ -5,6 +5,7 @@ import com.simibubi.create.foundation.block.ITE;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemUseContext;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
@ -51,4 +52,12 @@ public class ClockworkBearingBlock extends BearingBlock implements ITE<Clockwork
return ClockworkBearingTileEntity.class; return ClockworkBearingTileEntity.class;
} }
@Override
public ActionResultType onWrenched(BlockState state, ItemUseContext context) {
ActionResultType resultType = super.onWrenched(state, context);
if (!context.getWorld().isRemote && resultType.isAccepted())
withTileEntityDo(context.getWorld(), context.getPos(), ClockworkBearingTileEntity::disassemble);
return resultType;
}
} }