diff --git a/src/main/java/refinedstorage/block/BlockBase.java b/src/main/java/refinedstorage/block/BlockBase.java index 9def51704..c8af29e6b 100755 --- a/src/main/java/refinedstorage/block/BlockBase.java +++ b/src/main/java/refinedstorage/block/BlockBase.java @@ -5,7 +5,6 @@ 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.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.Item; @@ -56,7 +55,7 @@ public abstract class BlockBase extends Block { } public Item createItem() { - return new ItemBlockBase(this, false); + return new ItemBlockBase(this, getPlacementType(), false); } @Override @@ -98,26 +97,6 @@ public abstract class BlockBase extends Block { return false; } - @Override - public IBlockState onBlockPlaced(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase entity) { - IBlockState state = super.onBlockPlaced(world, pos, facing, hitX, hitY, hitZ, meta, entity); - - if (getPlacementType() != null) { - return state.withProperty(DIRECTION, getPlacementType().getFrom(facing, pos, entity)); - } - - return state; - } - - @Override - public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack stack) { - super.onBlockPlacedBy(world, pos, state, player, stack); - - if (getPlacementType() != null) { - ((TileBase) world.getTileEntity(pos)).setDirection(state.getValue(DIRECTION)); - } - } - @Override public void breakBlock(World world, BlockPos pos, IBlockState state) { TileEntity tile = world.getTileEntity(pos); @@ -147,7 +126,7 @@ public abstract class BlockBase extends Block { world.setBlockToAir(pos); } - protected EnumPlacementType getPlacementType() { + public EnumPlacementType getPlacementType() { return EnumPlacementType.HORIZONTAL; } } diff --git a/src/main/java/refinedstorage/block/BlockCable.java b/src/main/java/refinedstorage/block/BlockCable.java index 0c11019d1..1febb9233 100755 --- a/src/main/java/refinedstorage/block/BlockCable.java +++ b/src/main/java/refinedstorage/block/BlockCable.java @@ -233,7 +233,7 @@ public class BlockCable extends BlockCoverable { return false; } - protected EnumPlacementType getPlacementType() { + public EnumPlacementType getPlacementType() { return null; } diff --git a/src/main/java/refinedstorage/block/BlockDiskDrive.java b/src/main/java/refinedstorage/block/BlockDiskDrive.java index 35aa8c510..906554cd4 100755 --- a/src/main/java/refinedstorage/block/BlockDiskDrive.java +++ b/src/main/java/refinedstorage/block/BlockDiskDrive.java @@ -15,6 +15,7 @@ import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageGui; import refinedstorage.tile.TileDiskDrive; +// @TODO: Fix bug where it doesn't display correctly public class BlockDiskDrive extends BlockNode { private static final PropertyInteger STORED = PropertyInteger.create("stored", 0, 7); diff --git a/src/main/java/refinedstorage/block/BlockGrid.java b/src/main/java/refinedstorage/block/BlockGrid.java index 7360a1124..923502a41 100755 --- a/src/main/java/refinedstorage/block/BlockGrid.java +++ b/src/main/java/refinedstorage/block/BlockGrid.java @@ -73,6 +73,6 @@ public class BlockGrid extends BlockNode { @Override public Item createItem() { - return new ItemBlockBase(this, true); + return new ItemBlockBase(this, getPlacementType(), true); } } diff --git a/src/main/java/refinedstorage/block/EnumPlacementType.java b/src/main/java/refinedstorage/block/EnumPlacementType.java index 650c8f9e4..72f9fbc13 100755 --- a/src/main/java/refinedstorage/block/EnumPlacementType.java +++ b/src/main/java/refinedstorage/block/EnumPlacementType.java @@ -25,7 +25,7 @@ public enum EnumPlacementType { this.allowed = allowed; } - EnumFacing getFrom(EnumFacing facing, BlockPos pos, EntityLivingBase entity) { + public EnumFacing getFrom(EnumFacing facing, BlockPos pos, EntityLivingBase entity) { switch (this) { case ANY: return facing.getOpposite(); @@ -38,7 +38,7 @@ public enum EnumPlacementType { } } - EnumFacing getNext(EnumFacing previous) { + public EnumFacing getNext(EnumFacing previous) { switch (this) { case ANY: case ANY_FACE_PLAYER: diff --git a/src/main/java/refinedstorage/item/ItemBlockBase.java b/src/main/java/refinedstorage/item/ItemBlockBase.java index 647af94f3..9c5d948da 100755 --- a/src/main/java/refinedstorage/item/ItemBlockBase.java +++ b/src/main/java/refinedstorage/item/ItemBlockBase.java @@ -1,15 +1,27 @@ package refinedstorage.item; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import refinedstorage.block.EnumPlacementType; +import refinedstorage.tile.TileBase; public class ItemBlockBase extends ItemBlock { - public ItemBlockBase(Block block, boolean subtypes) { + private EnumPlacementType placementType; + + public ItemBlockBase(Block block, EnumPlacementType placementType, boolean subtypes) { super(block); setRegistryName(block.getRegistryName()); + this.placementType = placementType; + if (subtypes) { setMaxDamage(0); setHasSubtypes(true); @@ -29,4 +41,18 @@ public class ItemBlockBase extends ItemBlock { return getUnlocalizedName(); } + + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, IBlockState newState) { + boolean result = super.placeBlockAt(stack, player, world, pos, side, hitX, hitY, hitZ, newState); + + if (result && placementType != null) { + TileEntity tile = world.getTileEntity(pos); + + if (tile instanceof TileBase) { + ((TileBase) tile).setDirection(placementType.getFrom(side, pos, player)); + } + } + + return result; + } } diff --git a/src/main/java/refinedstorage/item/ItemBlockController.java b/src/main/java/refinedstorage/item/ItemBlockController.java index 1a77c1288..d66c8b314 100755 --- a/src/main/java/refinedstorage/item/ItemBlockController.java +++ b/src/main/java/refinedstorage/item/ItemBlockController.java @@ -14,7 +14,7 @@ import java.util.List; public class ItemBlockController extends ItemBlockBase { public ItemBlockController() { - super(RefinedStorageBlocks.CONTROLLER, true); + super(RefinedStorageBlocks.CONTROLLER, RefinedStorageBlocks.CONTROLLER.getPlacementType(), true); } @Override diff --git a/src/main/java/refinedstorage/item/ItemBlockFluidStorage.java b/src/main/java/refinedstorage/item/ItemBlockFluidStorage.java index d9a7f360f..d33b01440 100755 --- a/src/main/java/refinedstorage/item/ItemBlockFluidStorage.java +++ b/src/main/java/refinedstorage/item/ItemBlockFluidStorage.java @@ -20,7 +20,7 @@ import java.util.List; public class ItemBlockFluidStorage extends ItemBlockBase { public ItemBlockFluidStorage() { - super(RefinedStorageBlocks.FLUID_STORAGE, true); + super(RefinedStorageBlocks.FLUID_STORAGE, RefinedStorageBlocks.FLUID_STORAGE.getPlacementType(), true); } @Override diff --git a/src/main/java/refinedstorage/item/ItemBlockStorage.java b/src/main/java/refinedstorage/item/ItemBlockStorage.java index 73dbec43f..bba1c5ced 100755 --- a/src/main/java/refinedstorage/item/ItemBlockStorage.java +++ b/src/main/java/refinedstorage/item/ItemBlockStorage.java @@ -20,7 +20,7 @@ import java.util.List; public class ItemBlockStorage extends ItemBlockBase { public ItemBlockStorage() { - super(RefinedStorageBlocks.STORAGE, true); + super(RefinedStorageBlocks.STORAGE, RefinedStorageBlocks.STORAGE.getPlacementType(), true); } @Override diff --git a/src/main/java/refinedstorage/proxy/ClientProxy.java b/src/main/java/refinedstorage/proxy/ClientProxy.java index f020eb554..fe525eec6 100755 --- a/src/main/java/refinedstorage/proxy/ClientProxy.java +++ b/src/main/java/refinedstorage/proxy/ClientProxy.java @@ -35,7 +35,7 @@ public class ClientProxy extends CommonProxy { @SubscribeEvent public void onModelBake(ModelBakeEvent e) { for (ModelResourceLocation model : e.getModelRegistry().getKeys()) { - for (BlockCable cable : cables) { + for (BlockCable cable : cableTypes) { if (model.getResourceDomain().equals(RefinedStorage.ID) && model.getResourcePath().equals(cable.getName()) && !model.getVariant().equals("inventory")) { e.getModelRegistry().putObject(model, new ModelMultipartContainer(e.getModelRegistry().getObject(model), input -> cable.canRenderInLayer(input))); } diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 5582bb1da..231be8d8d 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -4,7 +4,6 @@ import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.event.FMLInitializationEvent; @@ -35,7 +34,7 @@ import java.util.ArrayList; import java.util.List; public class CommonProxy { - protected List cables = new ArrayList<>(); + protected List cableTypes = new ArrayList<>(); public void preInit(FMLPreInitializationEvent e) { RefinedStorageAPI.SOLDERER_REGISTRY = new SoldererRegistry(); @@ -627,9 +626,9 @@ public class CommonProxy { private void registerBlock(BlockCable cable) { GameRegistry.register(cable); - GameRegistry.register(new ItemBlock(cable).setRegistryName(cable.getRegistryName())); + GameRegistry.register(new ItemBlockBase(cable, cable.getPlacementType(), false)); - cables.add(cable); + cableTypes.add(cable); } private void registerTile(Class tile, String id) {