Wrench now removes covers
This commit is contained in:
@@ -72,6 +72,22 @@ public class CoverManager {
|
|||||||
return false;
|
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) {
|
public void readFromNbt(CompoundNBT nbt) {
|
||||||
covers.clear();
|
covers.clear();
|
||||||
System.out.println(nbt);
|
System.out.println(nbt);
|
||||||
|
@@ -123,6 +123,12 @@ public class CableBlock extends NetworkNodeBlock implements IWaterLoggable {
|
|||||||
super.onDirectionChanged(world, pos, newDirection);
|
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
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public BlockState getStateForPlacement(BlockItemUseContext ctx) {
|
public BlockState getStateForPlacement(BlockItemUseContext ctx) {
|
||||||
|
@@ -2,7 +2,11 @@ package com.refinedmods.refinedstorage.item;
|
|||||||
|
|
||||||
import com.refinedmods.refinedstorage.RS;
|
import com.refinedmods.refinedstorage.RS;
|
||||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
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.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.NetworkUtils;
|
||||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
@@ -11,6 +15,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.item.ItemUseContext;
|
import net.minecraft.item.ItemUseContext;
|
||||||
import net.minecraft.util.ActionResultType;
|
import net.minecraft.util.ActionResultType;
|
||||||
import net.minecraft.util.Rotation;
|
import net.minecraft.util.Rotation;
|
||||||
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
|
||||||
public class WrenchItem extends Item {
|
public class WrenchItem extends Item {
|
||||||
public WrenchItem() {
|
public WrenchItem() {
|
||||||
@@ -23,15 +28,27 @@ public class WrenchItem extends Item {
|
|||||||
return ActionResultType.CONSUME;
|
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())) {
|
if (network != null && !network.getSecurityManager().hasPermission(Permission.BUILD, ctx.getPlayer())) {
|
||||||
WorldUtils.sendNoPermissionMessage(ctx.getPlayer());
|
WorldUtils.sendNoPermissionMessage(ctx.getPlayer());
|
||||||
|
|
||||||
return ActionResultType.FAIL;
|
return ActionResultType.FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockState state = ctx.getWorld().getBlockState(ctx.getPos());
|
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));
|
ctx.getWorld().setBlockState(ctx.getPos(), state.rotate(ctx.getWorld(), ctx.getPos(), Rotation.CLOCKWISE_90));
|
||||||
|
|
||||||
return ActionResultType.CONSUME;
|
return ActionResultType.CONSUME;
|
||||||
|
Reference in New Issue
Block a user