diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java index 69715346a..dcddaf52d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java @@ -12,6 +12,7 @@ import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.Item; @@ -158,6 +159,25 @@ public abstract class BlockBase extends Block { return true; } + @Override + public boolean canEntityDestroy(IBlockState state, IBlockAccess world, BlockPos pos, Entity entity) { + TileEntity tile = world.getTileEntity(pos); + + if (tile != null && tile.hasCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, null)) { + INetworkNode node = tile.getCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, null); + + if (node.getNetwork() != null) { + if (!(entity instanceof EntityPlayer)) { + return false; + } + + return node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, (EntityPlayer) entity); + } + } + + return super.canEntityDestroy(state, world, pos, entity); + } + public EnumPlacementType getPlacementType() { return EnumPlacementType.HORIZONTAL; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java index 4481734d1..1cfc498b1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java @@ -45,4 +45,9 @@ public class BlockSecurityManager extends BlockNode { return true; } + + @Override + public boolean hasConnectivityState() { + return true; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index 0a54a3551..347dc778a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -153,6 +153,7 @@ public class ProxyClient extends ProxyCommon { ModelLoader.setCustomModelResourceLocation(RSItems.GRID_FILTER, 0, new ModelResourceLocation("refinedstorage:grid_filter", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.NETWORK_CARD, 0, new ModelResourceLocation("refinedstorage:network_card", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.WRENCH, 0, new ModelResourceLocation("refinedstorage:wrench", "inventory")); + ModelLoader.setCustomModelResourceLocation(RSItems.SECURITY_CARD, 0, new ModelResourceLocation("refinedstorage:security_card", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, 0, new ModelResourceLocation("refinedstorage:upgrade", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_RANGE, new ModelResourceLocation("refinedstorage:range_upgrade", "inventory")); @@ -204,6 +205,7 @@ public class ProxyClient extends ProxyCommon { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), EnumFluidStorageType.TYPE_512K.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=512k")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), EnumFluidStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=creative")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DISK_MANIPULATOR), 0, new ModelResourceLocation("refinedstorage:disk_manipulator", "inventory")); + ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.SECURITY_MANAGER), 0, new ModelResourceLocation("refinedstorage:security_manager", "inventory")); ModelLoaderRegistry.registerLoader(new ICustomModelLoader() { @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java index 4cd757440..15e237ba3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java @@ -163,4 +163,9 @@ public class TileSecurityManager extends TileNode implements ISecurityCardContai public IItemHandler getDrops() { return new CombinedInvWrapper(cards, editCard); } + + @Override + public boolean hasConnectivityState() { + return true; + } } diff --git a/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json b/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json index 0526b619f..88f2eceb7 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json +++ b/src/main/resources/assets/refinedstorage/blockstates/machine_casing.json @@ -3,7 +3,7 @@ "defaults": { "model": "cube_all", "textures": { - "all": "refinedstorage:blocks/casing" + "all": "refinedstorage:blocks/machine_casing" } }, "variants": { diff --git a/src/main/resources/assets/refinedstorage/blockstates/security_manager.json b/src/main/resources/assets/refinedstorage/blockstates/security_manager.json new file mode 100755 index 000000000..6f83a86df --- /dev/null +++ b/src/main/resources/assets/refinedstorage/blockstates/security_manager.json @@ -0,0 +1,42 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "cube_all", + "textures": { + "all": "refinedstorage:blocks/machine_casing" + } + }, + "variants": { + "inventory": [ + { + "transform": "forge:default-block" + } + ], + "connected": { + "true": { + }, + "false": { + } + }, + "direction": { + "north": { + "y": 0 + }, + "east": { + "y": 90 + }, + "south": { + "y": 180 + }, + "west": { + "y": 270 + }, + "up": { + "x": 270 + }, + "down": { + "x": 90 + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/security_card.json b/src/main/resources/assets/refinedstorage/models/item/security_card.json new file mode 100755 index 000000000..6cc78ce4a --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/security_card.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/security_card" + } +} diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/casing.png b/src/main/resources/assets/refinedstorage/textures/blocks/machine_casing.png similarity index 100% rename from src/main/resources/assets/refinedstorage/textures/blocks/casing.png rename to src/main/resources/assets/refinedstorage/textures/blocks/machine_casing.png diff --git a/src/main/resources/assets/refinedstorage/textures/items/security_card.png b/src/main/resources/assets/refinedstorage/textures/items/security_card.png new file mode 100755 index 000000000..7e6a6297a Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/items/security_card.png differ