Add better block info system.

This commit is contained in:
raoulvdberge
2018-07-09 10:00:34 +02:00
parent 0751e6c7c9
commit 6fa0d26afc
59 changed files with 623 additions and 666 deletions

View File

@@ -15,7 +15,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.BlockFluidStorage;
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;

View File

@@ -15,7 +15,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.BlockStorage;
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.tile.TileStorage;

View File

@@ -8,8 +8,8 @@ import com.raoulvdberge.refinedstorage.api.util.IOneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import com.raoulvdberge.refinedstorage.item.ItemPattern;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import net.minecraft.item.Item;

View File

@@ -1,21 +1,14 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.container.ContainerBase;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
import com.raoulvdberge.refinedstorage.item.ItemBlockBase;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
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;
@@ -30,32 +23,25 @@ import net.minecraftforge.items.IItemHandler;
import javax.annotation.Nullable;
public abstract class BlockBase extends Block {
private final String name;
protected final IBlockInfo info;
public BlockBase(String name) {
super(Material.ROCK);
public BlockBase(IBlockInfo info) {
super(info.getMaterial());
this.name = name;
this.info = info;
setHardness(1.9F);
setRegistryName(getDomain(), name);
setHardness(info.getHardness());
setRegistryName(info.getModId(), info.getId());
setCreativeTab(RS.INSTANCE.tab);
}
protected String getDomain() {
return RS.ID;
}
protected Object getModObject() {
return RS.INSTANCE;
setSoundType(info.getSoundType());
}
@Override
public String getUnlocalizedName() {
return "block." + getDomain() + ":" + name;
return "block." + info.getModId() + ":" + info.getId();
}
protected BlockStateContainer.Builder createBlockStateBuilder() {
protected BlockStateContainer.Builder createStateBuilder() {
BlockStateContainer.Builder builder = new BlockStateContainer.Builder(this);
if (getDirection() != null) {
@@ -67,7 +53,7 @@ public abstract class BlockBase extends Block {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder().build();
return createStateBuilder().build();
}
public Item createItem() {
@@ -111,10 +97,6 @@ public abstract class BlockBase extends Block {
EnumFacing newDirection = getDirection().cycle(tile.getDirection());
if (tile instanceof TileNode && ((TileNode) tile).getNode() instanceof ICoverable && ((ICoverable) ((TileNode) tile).getNode()).getCoverManager().hasCover(newDirection)) {
return false;
}
tile.setDirection(newDirection);
WorldUtils.updateBlock(world, pos);
@@ -129,21 +111,15 @@ public abstract class BlockBase extends Block {
public void breakBlock(World world, BlockPos pos, IBlockState state) {
dropContents(world, pos);
removeTile(world, pos, state);
for (EntityPlayer player : world.playerEntities) {
if (player.openContainer instanceof ContainerBase && ((ContainerBase) player.openContainer).getTile() != null && ((ContainerBase) player.openContainer).getTile().getPos().equals(pos)) {
player.closeScreen();
}
}
}
protected void removeTile(World world, BlockPos pos, IBlockState state) {
void removeTile(World world, BlockPos pos, IBlockState state) {
if (hasTileEntity(state)) {
world.removeTileEntity(pos);
}
}
protected void dropContents(World world, BlockPos pos) {
void dropContents(World world, BlockPos pos) {
TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBase && ((TileBase) tile).getDrops() != null) {
@@ -169,51 +145,22 @@ public abstract class BlockBase extends Block {
world.setBlockToAir(pos);
}
protected boolean tryOpenNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing) {
return tryOpenNetworkGui(guiId, player, world, pos, facing, Permission.MODIFY);
}
protected boolean tryOpenNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing, Permission... permissions) {
TileEntity tile = world.getTileEntity(pos);
if (tile != null && tile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing)) {
INetworkNodeProxy nodeProxy = CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY.cast(tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing));
INetworkNode node = nodeProxy.getNode();
if (node.getNetwork() != null) {
for (Permission permission : permissions) {
if (!node.getNetwork().getSecurityManager().hasPermission(permission, player)) {
WorldUtils.sendNoPermissionMessage(player);
return false;
}
}
}
}
player.openGui(getModObject(), guiId, world, pos.getX(), pos.getY(), pos.getZ());
return true;
@Override
public final boolean hasTileEntity(IBlockState state) {
return info.hasTileEntity();
}
@Override
public boolean canEntityDestroy(IBlockState state, IBlockAccess world, BlockPos pos, Entity entity) {
TileEntity tile = world.getTileEntity(pos);
if (tile != null && tile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, null)) {
INetworkNodeProxy nodeProxy = tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, null);
INetworkNode node = nodeProxy.getNode();
if (node.getNetwork() != null) {
return entity instanceof EntityPlayer && node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, (EntityPlayer) entity);
}
}
return super.canEntityDestroy(state, world, pos, entity);
public final TileEntity createTileEntity(World world, IBlockState state) {
return info.createTileEntity();
}
@Nullable
public Direction getDirection() {
return Direction.HORIZONTAL;
public BlockDirection getDirection() {
return null;
}
public final IBlockInfo getInfo() {
return info;
}
}

View File

@@ -4,6 +4,9 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
import com.raoulvdberge.refinedstorage.block.property.PropertyObject;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTraceResult;
import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTracer;
@@ -13,6 +16,8 @@ import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.TileCable;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.BlockStateContainer;
@@ -30,7 +35,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.property.IExtendedBlockState;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
@@ -49,17 +53,16 @@ public class BlockCable extends BlockNode {
private static final PropertyBool UP = PropertyBool.create("up");
private static final PropertyBool DOWN = PropertyBool.create("down");
public BlockCable(String name) {
super(name);
public BlockCable(IBlockInfo info) {
super(info);
}
public BlockCable() {
this("cable");
super(createBuilder("cable").tileEntity(TileCable::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCable();
static BlockInfoBuilder createBuilder(String id) {
return BlockInfoBuilder.forId(id).material(Material.GLASS).soundType(SoundType.GLASS).hardness(0.35F);
}
public boolean hasConnectivityState() {
@@ -68,7 +71,7 @@ public class BlockCable extends BlockNode {
@Override
protected BlockStateContainer createBlockState() {
return super.createBlockStateBuilder()
return super.createStateBuilder()
.add(NORTH)
.add(EAST)
.add(SOUTH)
@@ -339,10 +342,4 @@ public class BlockCable extends BlockNode {
public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) {
return BlockFaceShape.UNDEFINED;
}
@Override
@Nullable
public Direction getDirection() {
return null;
}
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsConstructor;
@@ -18,7 +19,13 @@ import java.util.List;
public class BlockConstructor extends BlockCable {
public BlockConstructor() {
super("constructor");
super(createBuilder("constructor").tileEntity(TileConstructor::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -55,32 +62,17 @@ public class BlockConstructor extends BlockCable {
return groups;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileConstructor();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!canAccessGui(state, world, pos, hitX, hitY, hitZ)) {
return false;
}
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.CONSTRUCTOR, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.CONSTRUCTOR, player, world, pos, side);
}
@Override
public boolean hasConnectivityState() {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
}
}

View File

@@ -2,6 +2,9 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType;
import com.raoulvdberge.refinedstorage.block.enums.ControllerType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.ItemBlockController;
import com.raoulvdberge.refinedstorage.tile.TileController;
import net.minecraft.block.properties.PropertyEnum;
@@ -13,7 +16,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
@@ -21,14 +23,12 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockController extends BlockBase {
public class BlockController extends BlockNodeProxy {
public static final PropertyEnum TYPE = PropertyEnum.create("type", ControllerType.class);
public static final PropertyEnum ENERGY_TYPE = PropertyEnum.create("energy_type", ControllerEnergyType.class);
public BlockController() {
super("controller");
super(BlockInfoBuilder.forId("controller").tileEntity(TileController::new).create());
}
@Override
@@ -40,7 +40,7 @@ public class BlockController extends BlockBase {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
return createStateBuilder()
.add(TYPE)
.add(ENERGY_TYPE)
.build();
@@ -62,23 +62,9 @@ public class BlockController extends BlockBase {
.withProperty(ENERGY_TYPE, ((TileController) world.getTileEntity(pos)).getEnergyType());
}
@Override
public boolean hasTileEntity(IBlockState state) {
return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileController();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.CONTROLLER, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.CONTROLLER, player, world, pos, side);
}
@Override
@@ -108,12 +94,6 @@ public class BlockController extends BlockBase {
@Override
public Item createItem() {
return new ItemBlockController();
}
@Nullable
@Override
public Direction getDirection() {
return null;
return new ItemBlockController(this, getDirection());
}
}

View File

@@ -2,6 +2,8 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileCrafter;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
@@ -20,12 +22,13 @@ import javax.annotation.Nullable;
public class BlockCrafter extends BlockNode {
public BlockCrafter() {
super("crafter");
super(BlockInfoBuilder.forId("crafter").tileEntity(TileCrafter::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCrafter();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY_FACE_PLAYER;
}
@Override
@@ -44,21 +47,7 @@ public class BlockCrafter extends BlockNode {
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.CRAFTER, player, world, pos, side);
}
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY_FACE_PLAYER;
}
public boolean hasConnectivityState() {
return true;
return openNetworkGui(RSGui.CRAFTER, player, world, pos, side);
}
@Override
@@ -75,4 +64,9 @@ public class BlockCrafter extends BlockNode {
}
}
}
@Override
public boolean hasConnectivityState() {
return true;
}
}

View File

@@ -2,29 +2,33 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileCrafterManager;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockCrafterManager extends BlockNode {
public BlockCrafterManager() {
super("crafter_manager");
super(BlockInfoBuilder.forId("crafter_manager").tileEntity(TileCrafterManager::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCrafterManager();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote && tryOpenNetworkGui(RSGui.CRAFTER_MANAGER, player, world, pos, side, Permission.MODIFY, Permission.AUTOCRAFTING)) {
if (!world.isRemote && openNetworkGui(RSGui.CRAFTER_MANAGER, player, world, pos, side, Permission.MODIFY, Permission.AUTOCRAFTING)) {
((TileCrafterManager) world.getTileEntity(pos)).getNode().sendTo((EntityPlayerMP) player);
}

View File

@@ -2,32 +2,32 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockCraftingMonitor extends BlockNode {
public BlockCraftingMonitor() {
super("crafting_monitor");
super(BlockInfoBuilder.forId("crafting_monitor").tileEntity(TileCraftingMonitor::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileCraftingMonitor();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.CRAFTING_MONITOR, player, world, pos, side, Permission.MODIFY, Permission.AUTOCRAFTING);
}
return true;
return openNetworkGui(RSGui.CRAFTING_MONITOR, player, world, pos, side, Permission.MODIFY, Permission.AUTOCRAFTING);
}
@Override

View File

@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.tile.TileDestructor;
import net.minecraft.block.state.IBlockState;
@@ -17,12 +18,13 @@ import java.util.List;
public class BlockDestructor extends BlockCable {
public BlockDestructor() {
super("destructor");
super(createBuilder("destructor").tileEntity(TileDestructor::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileDestructor();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -36,21 +38,11 @@ public class BlockDestructor extends BlockCable {
return false;
}
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.DESTRUCTOR, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.DESTRUCTOR, player, world, pos, side);
}
@Override
public boolean hasConnectivityState() {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
}
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsDetector;
import com.raoulvdberge.refinedstorage.tile.TileDetector;
import net.minecraft.block.properties.PropertyBool;
@@ -17,18 +18,16 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockDetector extends BlockNode {
private static final PropertyBool POWERED = PropertyBool.create("powered");
public BlockDetector() {
super("detector");
super(BlockInfoBuilder.forId("detector").tileEntity(TileDetector::new).create());
}
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
return createStateBuilder()
.add(POWERED)
.build();
}
@@ -46,8 +45,8 @@ public class BlockDetector extends BlockNode {
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileDetector();
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
return openNetworkGui(RSGui.DETECTOR, player, world, pos, side);
}
@Override
@@ -64,15 +63,6 @@ public class BlockDetector extends BlockNode {
return true;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.DETECTOR, player, world, pos, side);
}
return true;
}
@Override
@SuppressWarnings("deprecation")
public boolean isOpaqueCube(IBlockState state) {
@@ -90,12 +80,6 @@ public class BlockDetector extends BlockNode {
return BlockRenderLayer.CUTOUT;
}
@Override
@Nullable
public Direction getDirection() {
return null;
}
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) {

View File

@@ -1,6 +1,9 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.block.property.PropertyObject;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
@@ -13,30 +16,29 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.property.IExtendedBlockState;
import javax.annotation.Nullable;
public class BlockDiskDrive extends BlockNode {
public static final PropertyObject<Integer[]> DISK_STATE = new PropertyObject<>("disk_state", Integer[].class);
public BlockDiskDrive() {
super("disk_drive");
super(BlockInfoBuilder.forId("disk_drive").tileEntity(TileDiskDrive::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileDiskDrive();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.DISK_DRIVE, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.DISK_DRIVE, player, world, pos, side);
}
@Override
protected BlockStateContainer.Builder createBlockStateBuilder() {
return super.createBlockStateBuilder().add(DISK_STATE);
protected BlockStateContainer.Builder createStateBuilder() {
return super.createStateBuilder().add(DISK_STATE);
}
@Override

View File

@@ -1,6 +1,9 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.block.property.PropertyObject;
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
@@ -13,30 +16,29 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.property.IExtendedBlockState;
import javax.annotation.Nullable;
public class BlockDiskManipulator extends BlockNode {
public static final PropertyObject<Integer[]> DISK_STATE = new PropertyObject<>("disk_state", Integer[].class);
public BlockDiskManipulator() {
super("disk_manipulator");
super(BlockInfoBuilder.forId("disk_manipulator").tileEntity(TileDiskManipulator::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileDiskManipulator();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.DISK_MANIPULATOR, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.DISK_MANIPULATOR, player, world, pos, side);
}
@Override
protected BlockStateContainer.Builder createBlockStateBuilder() {
return super.createBlockStateBuilder().add(DISK_STATE);
protected BlockStateContainer.Builder createStateBuilder() {
return super.createStateBuilder().add(DISK_STATE);
}
@Override

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsExporter;
import com.raoulvdberge.refinedstorage.tile.TileExporter;
@@ -17,7 +18,13 @@ import java.util.List;
public class BlockExporter extends BlockCable {
public BlockExporter() {
super("exporter");
super(createBuilder("exporter").tileEntity(TileExporter::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -48,27 +55,12 @@ public class BlockExporter extends BlockCable {
return groups;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileExporter();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!canAccessGui(state, world, pos, hitX, hitY, hitZ)) {
return false;
}
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.EXPORTER, player, world, pos, side);
}
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
return openNetworkGui(RSGui.EXPORTER, player, world, pos, side);
}
}

View File

@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeExternalStorage;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsExternalStorage;
@@ -20,7 +21,13 @@ import java.util.List;
public class BlockExternalStorage extends BlockCable {
public BlockExternalStorage() {
super("external_storage");
super(createBuilder("external_storage").tileEntity(TileExternalStorage::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -57,22 +64,13 @@ public class BlockExternalStorage extends BlockCable {
return groups;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileExternalStorage();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!canAccessGui(state, world, pos, hitX, hitY, hitZ)) {
return false;
}
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.EXTERNAL_STORAGE, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.EXTERNAL_STORAGE, player, world, pos, side);
}
@Override
@@ -92,10 +90,4 @@ public class BlockExternalStorage extends BlockCable {
}
}
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
}
}

View File

@@ -2,44 +2,27 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileFluidInterface;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockFluidInterface extends BlockNode {
public BlockFluidInterface() {
super("fluid_interface");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileFluidInterface();
super(BlockInfoBuilder.forId("fluid_interface").tileEntity(TileFluidInterface::new).create());
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.FLUID_INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT);
}
return true;
return openNetworkGui(RSGui.FLUID_INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT);
}
@Override
public boolean hasConnectivityState() {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return null;
}
}

View File

@@ -3,6 +3,8 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.ItemBlockFluidStorage;
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;
import net.minecraft.block.properties.PropertyEnum;
@@ -14,7 +16,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
@@ -22,15 +23,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockFluidStorage extends BlockNode {
public static final PropertyEnum TYPE = PropertyEnum.create("type", FluidStorageType.class);
public BlockFluidStorage() {
super("fluid_storage");
setHardness(5.8F);
super(BlockInfoBuilder.forId("fluid_storage").hardness(5.8F).tileEntity(TileFluidStorage::new).create());
}
@Override
@@ -42,7 +39,7 @@ public class BlockFluidStorage extends BlockNode {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
return createStateBuilder()
.add(TYPE)
.build();
}
@@ -57,29 +54,14 @@ public class BlockFluidStorage extends BlockNode {
return ((FluidStorageType) state.getValue(TYPE)).getId();
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileFluidStorage();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.FLUID_STORAGE, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.FLUID_STORAGE, player, world, pos, side);
}
@Override
public Item createItem() {
return new ItemBlockFluidStorage();
}
@Override
@Nullable
public Direction getDirection() {
return null;
return new ItemBlockFluidStorage(this, getDirection());
}
@Override

View File

@@ -2,6 +2,8 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.ItemBlockBase;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import net.minecraft.block.properties.PropertyEnum;
@@ -11,23 +13,25 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockGrid extends BlockNode {
public static final PropertyEnum TYPE = PropertyEnum.create("type", GridType.class);
public BlockGrid() {
super("grid");
super(BlockInfoBuilder.forId("grid").tileEntity(TileGrid::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileGrid();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
@@ -39,7 +43,7 @@ public class BlockGrid extends BlockNode {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
return createStateBuilder()
.add(TYPE)
.build();
}
@@ -56,11 +60,7 @@ public class BlockGrid extends BlockNode {
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.GRID, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.GRID, player, world, pos, side);
}
@Override

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsImporter;
import com.raoulvdberge.refinedstorage.tile.TileImporter;
@@ -17,7 +18,13 @@ import java.util.List;
public class BlockImporter extends BlockCable {
public BlockImporter() {
super("importer");
super(createBuilder("importer").tileEntity(TileImporter::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -48,27 +55,12 @@ public class BlockImporter extends BlockCable {
return groups;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileImporter();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!canAccessGui(state, world, pos, hitX, hitY, hitZ)) {
return false;
}
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.IMPORTER, player, world, pos, side);
}
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
return openNetworkGui(RSGui.IMPORTER, player, world, pos, side);
}
}

View File

@@ -2,44 +2,27 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileInterface;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockInterface extends BlockNode {
public BlockInterface() {
super("interface");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileInterface();
super(BlockInfoBuilder.forId("interface").tileEntity(TileInterface::new).create());
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT);
}
return true;
return openNetworkGui(RSGui.INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT);
}
@Override
public boolean hasConnectivityState() {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return null;
}
}

View File

@@ -1,15 +1,9 @@
package com.raoulvdberge.refinedstorage.block;
import javax.annotation.Nullable;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
public class BlockMachineCasing extends BlockBase {
public BlockMachineCasing() {
super("machine_casing");
}
@Override
@Nullable
public Direction getDirection() {
return null;
super(BlockInfoBuilder.forId("machine_casing").create());
}
}

View File

@@ -1,26 +1,11 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileNetworkReceiver;
import net.minecraft.block.state.IBlockState;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockNetworkReceiver extends BlockNode {
public BlockNetworkReceiver() {
super("network_receiver");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileNetworkReceiver();
}
@Override
@Nullable
public Direction getDirection() {
return null;
super(BlockInfoBuilder.forId("network_receiver").tileEntity(TileNetworkReceiver::new).create());
}
@Override

View File

@@ -1,40 +1,23 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockNetworkTransmitter extends BlockNode {
public BlockNetworkTransmitter() {
super("network_transmitter");
super(BlockInfoBuilder.forId("network_transmitter").tileEntity(TileNetworkTransmitter::new).create());
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.NETWORK_TRANSMITTER, player, world, pos, side);
}
return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileNetworkTransmitter();
}
@Override
@Nullable
public Direction getDirection() {
return null;
return openNetworkGui(RSGui.NETWORK_TRANSMITTER, player, world, pos, side);
}
@Override

View File

@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeManager;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
@@ -15,16 +16,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public abstract class BlockNode extends BlockBase {
public abstract class BlockNode extends BlockNodeProxy {
public static final PropertyBool CONNECTED = PropertyBool.create("connected");
public BlockNode(String name) {
super(name);
}
@Override
public boolean hasTileEntity(IBlockState state) {
return true;
public BlockNode(IBlockInfo info) {
super(info);
}
@Override
@@ -61,8 +57,8 @@ public abstract class BlockNode extends BlockBase {
}
@Override
protected BlockStateContainer.Builder createBlockStateBuilder() {
BlockStateContainer.Builder builder = super.createBlockStateBuilder();
protected BlockStateContainer.Builder createStateBuilder() {
BlockStateContainer.Builder builder = super.createStateBuilder();
if (hasConnectivityState()) {
builder.add(CONNECTED);
@@ -73,7 +69,7 @@ public abstract class BlockNode extends BlockBase {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder().build();
return createStateBuilder().build();
}
@Override

View File

@@ -0,0 +1,86 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public abstract class BlockNodeProxy extends BlockBase {
public BlockNodeProxy(IBlockInfo info) {
super(info);
}
@Override
public boolean canEntityDestroy(IBlockState state, IBlockAccess world, BlockPos pos, Entity entity) {
TileEntity tile = world.getTileEntity(pos);
if (tile != null && tile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, null)) {
INetworkNode node = tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, null).getNode();
if (node.getNetwork() != null) {
return entity instanceof EntityPlayer && node.getNetwork().getSecurityManager().hasPermission(Permission.BUILD, (EntityPlayer) entity);
}
}
return super.canEntityDestroy(state, world, pos, entity);
}
@Override
public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) {
if (!world.isRemote && getDirection() != null) {
TileBase tile = (TileBase) world.getTileEntity(pos);
EnumFacing newDirection = getDirection().cycle(tile.getDirection());
if (tile instanceof TileNode && ((TileNode) tile).getNode() instanceof ICoverable && ((ICoverable) ((TileNode) tile).getNode()).getCoverManager().hasCover(newDirection)) {
return false;
}
}
return super.rotateBlock(world, pos, axis);
}
protected boolean openNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing) {
return openNetworkGui(guiId, player, world, pos, facing, Permission.MODIFY);
}
protected boolean openNetworkGui(int guiId, EntityPlayer player, World world, BlockPos pos, EnumFacing facing, Permission... permissions) {
if (world.isRemote) {
return true;
}
TileEntity tile = world.getTileEntity(pos);
if (tile != null && tile.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing)) {
INetworkNodeProxy nodeProxy = CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY.cast(tile.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, facing));
INetworkNode node = nodeProxy.getNode();
if (node.getNetwork() != null) {
for (Permission permission : permissions) {
if (!node.getNetwork().getSecurityManager().hasPermission(permission, player)) {
WorldUtils.sendNoPermissionMessage(player);
return false;
}
}
}
}
player.openGui(info.getModObject(), guiId, world, pos.getX(), pos.getY(), pos.getZ());
return true;
}
}

View File

@@ -2,6 +2,10 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridDiskState;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
@@ -14,7 +18,6 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
@@ -31,28 +34,18 @@ public class BlockPortableGrid extends BlockBase {
public static final PropertyBool CONNECTED = PropertyBool.create("connected");
public BlockPortableGrid() {
super("portable_grid");
}
@Override
public boolean hasTileEntity(IBlockState state) {
return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TilePortableGrid();
}
@Override
public Item createItem() {
return new ItemBlockPortableGrid();
super(BlockInfoBuilder.forId("portable_grid").tileEntity(TilePortableGrid::new).create());
}
@Override
@Nullable
public Direction getDirection() {
return Direction.HORIZONTAL;
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
public Item createItem() {
return new ItemBlockPortableGrid(this, getDirection());
}
@Override
@@ -98,7 +91,7 @@ public class BlockPortableGrid extends BlockBase {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
return createStateBuilder()
.add(TYPE)
.add(DISK_STATE)
.add(CONNECTED)

View File

@@ -1,15 +1,9 @@
package com.raoulvdberge.refinedstorage.block;
import javax.annotation.Nullable;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
public class BlockQuartzEnrichedIron extends BlockBase {
public BlockQuartzEnrichedIron() {
super("quartz_enriched_iron_block");
}
@Override
@Nullable
public Direction getDirection() {
return null;
super(BlockInfoBuilder.forId("quartz_enriched_iron_block").create());
}
}

View File

@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeReader;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.tile.TileReader;
import net.minecraft.block.state.IBlockState;
@@ -20,7 +21,13 @@ import java.util.List;
public class BlockReader extends BlockCable {
public BlockReader() {
super("reader");
super(createBuilder("reader").tileEntity(TileReader::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -46,7 +53,7 @@ public class BlockReader extends BlockCable {
}
}
} else {
tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side);
openNetworkGui(RSGui.READER_WRITER, player, world, pos, side);
}
}
@@ -60,19 +67,8 @@ public class BlockReader extends BlockCable {
return tile instanceof TileReader && side == ((TileReader) tile).getDirection().getOpposite();
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileReader();
}
@Override
public boolean hasConnectivityState() {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
}
}

View File

@@ -1,40 +1,23 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileRelay;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockRelay extends BlockNode {
public BlockRelay() {
super("relay");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileRelay();
super(BlockInfoBuilder.forId("relay").tileEntity(TileRelay::new).create());
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.RELAY, player, world, pos, side);
}
return true;
}
@Override
@Nullable
public Direction getDirection() {
return null;
return openNetworkGui(RSGui.RELAY, player, world, pos, side);
}
public boolean hasConnectivityState() {

View File

@@ -3,23 +3,27 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileSecurityManager;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockSecurityManager extends BlockNode {
public BlockSecurityManager() {
super("security_manager");
super(BlockInfoBuilder.forId("security_manager").tileEntity(TileSecurityManager::new).create());
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileSecurityManager();
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
@@ -28,7 +32,7 @@ public class BlockSecurityManager extends BlockNode {
if (player.getGameProfile().getId().equals(((TileSecurityManager) world.getTileEntity(pos)).getNode().getOwner())) {
player.openGui(RS.INSTANCE, RSGui.SECURITY_MANAGER, world, pos.getX(), pos.getY(), pos.getZ());
} else {
tryOpenNetworkGui(RSGui.SECURITY_MANAGER, player, world, pos, side, Permission.MODIFY, Permission.SECURITY);
openNetworkGui(RSGui.SECURITY_MANAGER, player, world, pos, side, Permission.MODIFY, Permission.SECURITY);
}
}

View File

@@ -3,6 +3,8 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.ItemBlockStorage;
import com.raoulvdberge.refinedstorage.tile.TileStorage;
import net.minecraft.block.properties.PropertyEnum;
@@ -14,7 +16,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
@@ -22,15 +23,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockStorage extends BlockNode {
public static final PropertyEnum TYPE = PropertyEnum.create("type", ItemStorageType.class);
public BlockStorage() {
super("storage");
setHardness(5.8F);
super(BlockInfoBuilder.forId("storage").tileEntity(TileStorage::new).hardness(5.8F).create());
}
@Override
@@ -42,7 +39,7 @@ public class BlockStorage extends BlockNode {
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
return createStateBuilder()
.add(TYPE)
.build();
}
@@ -57,29 +54,14 @@ public class BlockStorage extends BlockNode {
return ((ItemStorageType) state.getValue(TYPE)).getId();
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileStorage();
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.STORAGE, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.STORAGE, player, world, pos, side);
}
@Override
public Item createItem() {
return new ItemBlockStorage();
}
@Override
@Nullable
public Direction getDirection() {
return null;
return new ItemBlockStorage(this, getDirection());
}
@Override

View File

@@ -2,11 +2,12 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeStorageMonitor;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
@@ -18,7 +19,13 @@ import javax.annotation.Nullable;
public class BlockStorageMonitor extends BlockNode {
public BlockStorageMonitor() {
super("storage_monitor");
super(BlockInfoBuilder.forId("storage_monitor").tileEntity(TileStorageMonitor::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.HORIZONTAL;
}
@Override
@@ -27,7 +34,7 @@ public class BlockStorageMonitor extends BlockNode {
ItemStack held = player.inventory.getCurrentItem();
if (player.isSneaking()) {
tryOpenNetworkGui(RSGui.STORAGE_MONITOR, player, world, pos, side);
openNetworkGui(RSGui.STORAGE_MONITOR, player, world, pos, side);
} else {
NetworkNodeStorageMonitor storageMonitor = ((TileStorageMonitor) world.getTileEntity(pos)).getNode();
@@ -57,12 +64,6 @@ public class BlockStorageMonitor extends BlockNode {
}
}
@Nullable
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileStorageMonitor();
}
@Override
public boolean hasConnectivityState() {
return true;

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsWirelessTransmitter;
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
import net.minecraft.block.Block;
@@ -10,7 +11,6 @@ import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
@@ -25,21 +25,12 @@ import java.util.List;
public class BlockWirelessTransmitter extends BlockNode {
public BlockWirelessTransmitter() {
super("wireless_transmitter");
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileWirelessTransmitter();
super(BlockInfoBuilder.forId("wireless_transmitter").tileEntity(TileWirelessTransmitter::new).create());
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
tryOpenNetworkGui(RSGui.WIRELESS_TRANSMITTER, player, world, pos, side);
}
return true;
return openNetworkGui(RSGui.WIRELESS_TRANSMITTER, player, world, pos, side);
}
@Override
@@ -85,12 +76,6 @@ public class BlockWirelessTransmitter extends BlockNode {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return null;
}
@Override
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flag) {
super.addInformation(stack, world, tooltip, flag);

View File

@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeWriter;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.tile.TileWriter;
import net.minecraft.block.state.IBlockState;
@@ -21,7 +22,13 @@ import java.util.List;
public class BlockWriter extends BlockCable {
public BlockWriter() {
super("writer");
super(createBuilder("writer").tileEntity(TileWriter::new).create());
}
@Override
@Nullable
public BlockDirection getDirection() {
return BlockDirection.ANY;
}
@Override
@@ -47,18 +54,13 @@ public class BlockWriter extends BlockCable {
}
}
} else {
tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side);
openNetworkGui(RSGui.READER_WRITER, player, world, pos, side);
}
}
return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileWriter();
}
@Override
@SuppressWarnings("deprecation")
public int getWeakPower(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
@@ -90,10 +92,4 @@ public class BlockWriter extends BlockCable {
public boolean hasConnectivityState() {
return true;
}
@Override
@Nullable
public Direction getDirection() {
return Direction.ANY;
}
}

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.enums;
import net.minecraft.util.IStringSerializable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.enums;
import net.minecraft.util.IStringSerializable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.enums;
import net.minecraft.util.IStringSerializable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.enums;
import net.minecraft.util.IStringSerializable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.enums;
import net.minecraft.util.IStringSerializable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.enums;
import net.minecraft.util.IStringSerializable;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.info;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.entity.EntityLivingBase;
@@ -7,14 +7,14 @@ import net.minecraft.util.math.BlockPos;
import java.util.Arrays;
public enum Direction {
public enum BlockDirection {
ANY(EnumFacing.VALUES),
ANY_FACE_PLAYER(EnumFacing.VALUES),
HORIZONTAL(EnumFacing.NORTH, EnumFacing.EAST, EnumFacing.SOUTH, EnumFacing.WEST);
private final PropertyDirection property;
Direction(EnumFacing... allowed) {
BlockDirection(EnumFacing... allowed) {
this.property = PropertyDirection.create("direction", Arrays.asList(allowed));
}

View File

@@ -0,0 +1,70 @@
package com.raoulvdberge.refinedstorage.block.info;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import javax.annotation.Nullable;
import java.util.function.Supplier;
public class BlockInfo implements IBlockInfo {
private final Material material;
private final SoundType soundType;
private final float hardness;
private final String id;
private final String modId;
private final Object modObject;
@Nullable
private final Supplier<TileBase> tileSupplier;
public BlockInfo(Material material, SoundType soundType, float hardness, String id, String modId, Object modObject, Supplier<TileBase> tileSupplier) {
this.material = material;
this.soundType = soundType;
this.hardness = hardness;
this.id = id;
this.modId = modId;
this.modObject = modObject;
this.tileSupplier = tileSupplier;
}
@Override
public Material getMaterial() {
return material;
}
@Override
public SoundType getSoundType() {
return soundType;
}
@Override
public String getId() {
return id;
}
@Override
public String getModId() {
return modId;
}
@Override
public Object getModObject() {
return modObject;
}
@Override
public float getHardness() {
return hardness;
}
@Nullable
@Override
public TileBase createTileEntity() {
return tileSupplier.get();
}
@Override
public boolean hasTileEntity() {
return tileSupplier != null;
}
}

View File

@@ -0,0 +1,63 @@
package com.raoulvdberge.refinedstorage.block.info;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import java.util.function.Supplier;
public final class BlockInfoBuilder {
private Material material = Material.ROCK;
private String id;
private String modId;
private Object modObject;
private float hardness = 1.9F;
private SoundType soundType = SoundType.STONE;
private Supplier<TileBase> tileSupplier;
private BlockInfoBuilder() {
}
public static BlockInfoBuilder forMod(Object modObject, String modId, String id) {
BlockInfoBuilder builder = new BlockInfoBuilder();
builder.modObject = modObject;
builder.modId = modId;
builder.id = id;
return builder;
}
public static BlockInfoBuilder forId(String id) {
return forMod(RS.INSTANCE, RS.ID, id);
}
public BlockInfoBuilder material(Material material) {
this.material = material;
return this;
}
public BlockInfoBuilder soundType(SoundType soundType) {
this.soundType = soundType;
return this;
}
public BlockInfoBuilder hardness(float hardness) {
this.hardness = hardness;
return this;
}
public BlockInfoBuilder tileEntity(Supplier<TileBase> tileSupplier) {
this.tileSupplier = tileSupplier;
return this;
}
public BlockInfo create() {
return new BlockInfo(material, soundType, hardness, id, modId, modObject, tileSupplier);
}
}

View File

@@ -0,0 +1,26 @@
package com.raoulvdberge.refinedstorage.block.info;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import javax.annotation.Nullable;
public interface IBlockInfo {
Material getMaterial();
SoundType getSoundType();
String getId();
String getModId();
Object getModObject();
float getHardness();
@Nullable
TileBase createTileEntity();
boolean hasTileEntity();
}

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.block;
package com.raoulvdberge.refinedstorage.block.property;
import net.minecraftforge.common.property.IUnlistedProperty;

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.block.Direction;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
@@ -13,9 +13,9 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class ItemBlockBase extends ItemBlock {
private Direction direction;
private BlockDirection direction;
public ItemBlockBase(Block block, Direction direction, boolean subtypes) {
public ItemBlockBase(Block block, BlockDirection direction, boolean subtypes) {
super(block);
setRegistryName(block.getRegistryName());

View File

@@ -1,9 +1,10 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.block.ControllerType;
import com.raoulvdberge.refinedstorage.block.enums.ControllerType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.tile.TileController;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer;
@@ -15,8 +16,8 @@ import javax.annotation.Nullable;
import java.util.List;
public class ItemBlockController extends ItemBlockBase {
public ItemBlockController() {
super(RSBlocks.CONTROLLER, RSBlocks.CONTROLLER.getDirection(), true);
public ItemBlockController(Block block, BlockDirection direction) {
super(block, direction, true);
}
@Override

View File

@@ -1,6 +1,6 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.block.Direction;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
@@ -23,7 +23,7 @@ public abstract class ItemBlockEnergyItem extends ItemBlockBase {
private int energyCapacity;
public ItemBlockEnergyItem(Block block, Direction direction, int energyCapacity) {
public ItemBlockEnergyItem(Block block, BlockDirection direction, int energyCapacity) {
super(block, direction, true);
this.energyCapacity = energyCapacity;

View File

@@ -7,6 +7,8 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
@@ -23,8 +25,8 @@ import java.util.List;
import java.util.UUID;
public class ItemBlockFluidStorage extends ItemBlockBase {
public ItemBlockFluidStorage() {
super(RSBlocks.FLUID_STORAGE, RSBlocks.FLUID_STORAGE.getDirection(), true);
public ItemBlockFluidStorage(Block block, BlockDirection direction) {
super(block, direction, true);
}
@Override

View File

@@ -1,9 +1,10 @@
package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer;
@@ -19,8 +20,8 @@ import javax.annotation.Nullable;
import java.util.List;
public class ItemBlockPortableGrid extends ItemBlockEnergyItem {
public ItemBlockPortableGrid() {
super(RSBlocks.PORTABLE_GRID, RSBlocks.PORTABLE_GRID.getDirection(), RS.INSTANCE.config.portableGridCapacity);
public ItemBlockPortableGrid(Block block, BlockDirection direction) {
super(block, direction, RS.INSTANCE.config.portableGridCapacity);
}
@Override

View File

@@ -7,6 +7,8 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
@@ -23,8 +25,8 @@ import java.util.List;
import java.util.UUID;
public class ItemBlockStorage extends ItemBlockBase {
public ItemBlockStorage() {
super(RSBlocks.STORAGE, RSBlocks.STORAGE.getDirection(), true);
public ItemBlockStorage(Block block, BlockDirection direction) {
super(block, direction, true);
}
@Override

View File

@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;

View File

@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs;

View File

@@ -5,17 +5,19 @@ import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.RSKeyBindings;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern;
import com.raoulvdberge.refinedstorage.block.*;
import com.raoulvdberge.refinedstorage.block.BlockController;
import com.raoulvdberge.refinedstorage.block.BlockPortableGrid;
import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType;
import com.raoulvdberge.refinedstorage.block.enums.ControllerType;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview;
import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.item.*;
import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse;
import com.raoulvdberge.refinedstorage.render.collision.BlockHighlightListener;
import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionPortableGrid;
import com.raoulvdberge.refinedstorage.render.model.ModelDiskDrive;
import com.raoulvdberge.refinedstorage.render.model.ModelDiskManipulator;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelCableCover;
@@ -26,9 +28,6 @@ import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM;
import com.raoulvdberge.refinedstorage.render.tesr.TileEntitySpecialRendererStorageMonitor;
import com.raoulvdberge.refinedstorage.tile.TileController;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
@@ -44,7 +43,6 @@ import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Loader;
@@ -52,8 +50,6 @@ import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.util.UUID;
public class ProxyClient extends ProxyCommon {
@Override
public void preInit(FMLPreInitializationEvent e) {
@@ -289,55 +285,7 @@ public class ProxyClient extends ProxyCommon {
ModelLoaderRegistry.registerLoader(new CustomModelLoaderCover());
ModelLoader.setCustomStateMapper(RSBlocks.PORTABLE_GRID, new StateMap.Builder().ignore(BlockPortableGrid.TYPE).build());
ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(RSBlocks.PORTABLE_GRID), stack -> {
ItemHandlerBase disk = new ItemHandlerBase(1);
if (stack.hasTagCompound()) {
StackUtils.readItems(disk, 4, stack.getTagCompound());
}
UUID diskId = disk.getStackInSlot(0).isEmpty() ? null : ((IStorageDiskProvider) disk.getStackInSlot(0).getItem()).getId(disk.getStackInSlot(0));
IPortableGrid.IPortableGridRenderInfo renderInfo = new IPortableGrid.IPortableGridRenderInfo() {
@Override
public int getStored() {
if (diskId == null) {
return 0;
}
API.instance().getStorageDiskSync().sendRequest(diskId);
IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(diskId);
return data == null ? 0 : data.getStored();
}
@Override
public int getCapacity() {
if (diskId == null) {
return 0;
}
API.instance().getStorageDiskSync().sendRequest(diskId);
IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(diskId);
return data == null ? 0 : data.getCapacity();
}
@Override
public boolean hasStorage() {
return diskId != null;
}
@Override
public boolean isActive() {
return (stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() > 0 || stack.getMetadata() == ItemBlockPortableGrid.TYPE_CREATIVE) && hasStorage();
}
};
return new ModelResourceLocation("refinedstorage:portable_grid", "connected=" + Boolean.toString(renderInfo.isActive()) + ",direction=north,disk_state=" + TilePortableGrid.getDiskState(renderInfo));
});
ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(RSBlocks.PORTABLE_GRID), new ItemMeshDefinitionPortableGrid());
}
public static void onReceiveCraftingPreviewResponse(MessageGridCraftingPreviewResponse message) {

View File

@@ -27,6 +27,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.externalstorage.ExternalS
import com.raoulvdberge.refinedstorage.apiimpl.storage.externalstorage.ExternalStorageProviderItem;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.BlockBase;
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.container.ContainerCrafter;
import com.raoulvdberge.refinedstorage.container.ContainerCrafterManager;
@@ -45,14 +46,12 @@ import com.raoulvdberge.refinedstorage.network.*;
import com.raoulvdberge.refinedstorage.recipe.RecipeCover;
import com.raoulvdberge.refinedstorage.recipe.RecipeHollowCover;
import com.raoulvdberge.refinedstorage.recipe.RecipeHollowWideCover;
import com.raoulvdberge.refinedstorage.tile.*;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -188,34 +187,6 @@ public class ProxyCommon {
MinecraftForge.EVENT_BUS.register(new NetworkNodeListener());
registerTile(TileController.class, "controller");
registerTile(TileGrid.class, "grid");
registerTile(TileDiskDrive.class, "disk_drive");
registerTile(TileExternalStorage.class, "external_storage");
registerTile(TileImporter.class, "importer");
registerTile(TileExporter.class, "exporter");
registerTile(TileDetector.class, "detector");
registerTile(TileDestructor.class, "destructor");
registerTile(TileConstructor.class, "constructor");
registerTile(TileStorage.class, "storage");
registerTile(TileRelay.class, "relay");
registerTile(TileInterface.class, "interface");
registerTile(TileCraftingMonitor.class, "crafting_monitor");
registerTile(TileWirelessTransmitter.class, "wireless_transmitter");
registerTile(TileCrafter.class, "crafter");
registerTile(TileCable.class, "cable");
registerTile(TileNetworkReceiver.class, "network_receiver");
registerTile(TileNetworkTransmitter.class, "network_transmitter");
registerTile(TileFluidInterface.class, "fluid_interface");
registerTile(TileFluidStorage.class, "fluid_storage");
registerTile(TileDiskManipulator.class, "disk_manipulator");
registerTile(TileSecurityManager.class, "security_manager");
registerTile(TileReader.class, "reader");
registerTile(TileWriter.class, "writer");
registerTile(TileStorageMonitor.class, "storage_monitor");
registerTile(TilePortableGrid.class, "portable_grid");
registerTile(TileCrafterManager.class, "crafter_manager");
registerBlock(RSBlocks.CONTROLLER);
registerBlock(RSBlocks.GRID);
registerBlock(RSBlocks.PORTABLE_GRID);
@@ -365,17 +336,23 @@ public class ProxyCommon {
blocksToRegister.add(block);
registerItem(block.createItem());
if (block.getInfo().hasTileEntity()) {
registerTile(block.getInfo());
}
}
private void registerItem(Item item) {
itemsToRegister.add(item);
}
private void registerTile(Class<? extends TileBase> tile, String id) {
GameRegistry.registerTileEntity(tile, new ResourceLocation(RS.ID, id));
private void registerTile(IBlockInfo info) {
Class<? extends TileBase> clazz = info.createTileEntity().getClass();
GameRegistry.registerTileEntity(clazz, new ResourceLocation(RS.ID, info.getId()));
try {
TileBase tileInstance = tile.newInstance();
TileBase tileInstance = clazz.newInstance();
if (tileInstance instanceof TileNode) {
API.instance().getNetworkNodeRegistry().add(((TileNode) tileInstance).getNodeId(), (tag, world, pos) -> {

View File

@@ -0,0 +1,71 @@
package com.raoulvdberge.refinedstorage.render.meshdefinition;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.ItemStack;
import net.minecraftforge.energy.CapabilityEnergy;
import java.util.UUID;
public class ItemMeshDefinitionPortableGrid implements ItemMeshDefinition {
// TODO: Optimize
@Override
public ModelResourceLocation getModelLocation(ItemStack stack) {
ItemHandlerBase disk = new ItemHandlerBase(1);
if (stack.hasTagCompound()) {
StackUtils.readItems(disk, 4, stack.getTagCompound());
}
UUID diskId = disk.getStackInSlot(0).isEmpty() ? null : ((IStorageDiskProvider) disk.getStackInSlot(0).getItem()).getId(disk.getStackInSlot(0));
IPortableGrid.IPortableGridRenderInfo renderInfo = new IPortableGrid.IPortableGridRenderInfo() {
@Override
public int getStored() {
if (diskId == null) {
return 0;
}
API.instance().getStorageDiskSync().sendRequest(diskId);
IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(diskId);
return data == null ? 0 : data.getStored();
}
@Override
public int getCapacity() {
if (diskId == null) {
return 0;
}
API.instance().getStorageDiskSync().sendRequest(diskId);
IStorageDiskSyncData data = API.instance().getStorageDiskSync().getData(diskId);
return data == null ? 0 : data.getCapacity();
}
@Override
public boolean hasStorage() {
return diskId != null;
}
@Override
public boolean isActive() {
return (stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() > 0 || stack.getMetadata() == ItemBlockPortableGrid.TYPE_CREATIVE) && hasStorage();
}
};
return new ModelResourceLocation(RS.ID + ":portable_grid", "connected=" + Boolean.toString(renderInfo.isActive()) + ",direction=north,disk_state=" + TilePortableGrid.getDiskState(renderInfo));
}
}

View File

@@ -34,8 +34,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerFluid;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerItem;
import com.raoulvdberge.refinedstorage.block.BlockController;
import com.raoulvdberge.refinedstorage.block.ControllerEnergyType;
import com.raoulvdberge.refinedstorage.block.ControllerType;
import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType;
import com.raoulvdberge.refinedstorage.block.enums.ControllerType;
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.integration.forgeenergy.EnergyProxy;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;

View File

@@ -24,8 +24,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheListenerGridP
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerItem;
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskItemPortable;
import com.raoulvdberge.refinedstorage.block.BlockPortableGrid;
import com.raoulvdberge.refinedstorage.block.PortableGridDiskState;
import com.raoulvdberge.refinedstorage.block.PortableGridType;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridDiskState;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridType;
import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;