Wrench now removes covers
This commit is contained in:
@@ -72,6 +72,22 @@ public class CoverManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Cover removeCover(Direction direction){
|
||||
if (hasCover(direction)){
|
||||
Cover cover = covers.remove(direction);
|
||||
|
||||
node.markDirty();
|
||||
|
||||
if (node.getNetwork() != null) {
|
||||
node.getNetwork().getNodeGraph().invalidate(Action.PERFORM, node.getNetwork().getWorld(), node.getNetwork().getPosition());
|
||||
}
|
||||
|
||||
return cover;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void readFromNbt(CompoundNBT nbt) {
|
||||
covers.clear();
|
||||
System.out.println(nbt);
|
||||
|
@@ -123,6 +123,12 @@ public class CableBlock extends NetworkNodeBlock implements IWaterLoggable {
|
||||
super.onDirectionChanged(world, pos, newDirection);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
|
||||
super.neighborChanged(state, world, pos, blockIn, fromPos, isMoving);
|
||||
world.setBlockState(pos, getState(world.getBlockState(pos), world, pos));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext ctx) {
|
||||
|
@@ -2,7 +2,11 @@ package com.refinedmods.refinedstorage.item;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.node.ICoverable;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.security.Permission;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.Cover;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverType;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import net.minecraft.block.BlockState;
|
||||
@@ -11,6 +15,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Rotation;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
|
||||
public class WrenchItem extends Item {
|
||||
public WrenchItem() {
|
||||
@@ -23,15 +28,27 @@ public class WrenchItem extends Item {
|
||||
return ActionResultType.CONSUME;
|
||||
}
|
||||
|
||||
INetwork network = NetworkUtils.getNetworkFromNode(NetworkUtils.getNodeFromTile(ctx.getWorld().getTileEntity(ctx.getPos())));
|
||||
INetworkNode node = NetworkUtils.getNodeFromTile(ctx.getWorld().getTileEntity(ctx.getPos()));
|
||||
INetwork network = NetworkUtils.getNetworkFromNode(node);
|
||||
if (network != null && !network.getSecurityManager().hasPermission(Permission.BUILD, ctx.getPlayer())) {
|
||||
WorldUtils.sendNoPermissionMessage(ctx.getPlayer());
|
||||
|
||||
return ActionResultType.FAIL;
|
||||
}
|
||||
|
||||
BlockState state = ctx.getWorld().getBlockState(ctx.getPos());
|
||||
|
||||
if (node instanceof ICoverable && ((ICoverable) node).getCoverManager().hasCover(ctx.getFace())){
|
||||
Cover cover = ((ICoverable) node).getCoverManager().removeCover(ctx.getFace());
|
||||
if (cover != null){
|
||||
ItemStack stack1 = cover.getType().createStack();
|
||||
CoverItem.setItem(stack1, cover.getStack());
|
||||
ItemHandlerHelper.giveItemToPlayer(ctx.getPlayer(), stack1);
|
||||
ctx.getWorld().notifyBlockUpdate(ctx.getPos(), state, state, 3);
|
||||
ctx.getWorld().notifyNeighborsOfStateChange(ctx.getPos(), ctx.getWorld().getBlockState(ctx.getPos()).getBlock());
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
ctx.getWorld().setBlockState(ctx.getPos(), state.rotate(ctx.getWorld(), ctx.getPos(), Rotation.CLOCKWISE_90));
|
||||
|
||||
return ActionResultType.CONSUME;
|
||||
|
Reference in New Issue
Block a user