diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java index 9fa9430f9..7ee9dbe68 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java @@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; import com.raoulvdberge.refinedstorage.item.ItemBlockBase; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.block.Block; @@ -18,6 +19,8 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.IItemHandler; import javax.annotation.Nullable; @@ -31,14 +34,18 @@ public abstract class BlockBase extends Block { this.info = info; setHardness(info.getHardness()); - setRegistryName(info.getModId(), info.getId()); + setRegistryName(info.getId()); setCreativeTab(RS.INSTANCE.tab); setSoundType(info.getSoundType()); } + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + } + @Override public String getUnlocalizedName() { - return "block." + info.getModId() + ":" + info.getId(); + return "block." + info.getId().toString(); } protected BlockStateContainer.Builder createBlockStateBuilder() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java index ee6c757a4..b475569f1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java @@ -8,10 +8,12 @@ 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.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTraceResult; import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTracer; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable; +import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelCableCover; import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.TileCable; import com.raoulvdberge.refinedstorage.tile.TileNode; @@ -22,6 +24,7 @@ import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.tileentity.TileEntity; @@ -34,6 +37,8 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.List; @@ -65,7 +70,20 @@ public class BlockCable extends BlockNode { return BlockInfoBuilder.forId(id).material(Material.GLASS).soundType(SoundType.GLASS).hardness(0.35F); } - public boolean hasConnectivityState() { + void registerCover(IModelRegistration modelRegistration) { + modelRegistration.addBakedModelOverride(info.getId(), BakedModelCableCover::new); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + registerCover(modelRegistration); + } + + @Override + public boolean hasConnectedState() { return false; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java index 41be61ed8..ac698b67d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java @@ -2,17 +2,22 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsConstructor; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileConstructor; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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 net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -22,6 +27,15 @@ public class BlockConstructor extends BlockCable { super(createBuilder("constructor").tileEntity(TileConstructor::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { @@ -72,7 +86,7 @@ public class BlockConstructor extends BlockCable { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java index 7c4dcc371..86547f2e1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java @@ -1,15 +1,18 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.RSBlocks; +import com.raoulvdberge.refinedstorage.RS; 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.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileController; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -22,6 +25,9 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.common.Loader; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockController extends BlockNodeProxy { public static final PropertyEnum TYPE = PropertyEnum.create("type", ControllerType.class); @@ -31,6 +37,23 @@ public class BlockController extends BlockNodeProxy { super(BlockInfoBuilder.forId("controller").tileEntity(TileController::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelMeshDefinition(this, stack -> { + ControllerEnergyType energyType = stack.getItemDamage() == ControllerType.CREATIVE.getId() ? ControllerEnergyType.ON : TileController.getEnergyType(ItemBlockController.getEnergyStored(stack), RS.INSTANCE.config.controllerCapacity); + + return new ModelResourceLocation(RS.ID + ":controller" + (Loader.isModLoaded("ctm") ? "_glow" : ""), "energy_type=" + energyType); + }); + + modelRegistration.setStateMapper(this, new StateMapperBase() { + @Override + protected ModelResourceLocation getModelResourceLocation(IBlockState state) { + return new ModelResourceLocation(RS.ID + ":controller" + (Loader.isModLoaded("ctm") ? "_glow" : ""), "energy_type=" + state.getValue(ENERGY_TYPE)); + } + }); + } + @Override public void getSubBlocks(CreativeTabs tab, NonNullList items) { for (int i = 0; i <= 1; i++) { @@ -84,7 +107,7 @@ public class BlockController extends BlockNodeProxy { @Override public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { - ItemStack stack = new ItemStack(RSBlocks.CONTROLLER, 1, RSBlocks.CONTROLLER.getMetaFromState(state)); + ItemStack stack = new ItemStack(this, 1, getMetaFromState(state)); stack.setTagCompound(new NBTTagCompound()); stack.getTagCompound().setInteger(TileController.NBT_ENERGY, ((TileController) world.getTileEntity(pos)).getEnergy().getStored()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java index 22f3c1d31..d4d2740c3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafter.java @@ -1,11 +1,13 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileCrafter; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -17,6 +19,8 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -25,6 +29,13 @@ public class BlockCrafter extends BlockNode { super(BlockInfoBuilder.forId("crafter").tileEntity(TileCrafter::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override @Nullable public BlockDirection getDirection() { @@ -58,7 +69,7 @@ public class BlockCrafter extends BlockNode { if (displayName != null) { for (ItemStack drop : drops) { - if (drop.getItem() == Item.getItemFromBlock(RSBlocks.CRAFTER)) { + if (drop.getItem() == Item.getItemFromBlock(this)) { drop.setStackDisplayName(displayName); } } @@ -66,7 +77,7 @@ public class BlockCrafter extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafterManager.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafterManager.java index 682e8d3d9..5651cbf24 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafterManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCrafterManager.java @@ -4,14 +4,19 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileCrafterManager; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -20,6 +25,13 @@ public class BlockCrafterManager extends BlockNode { super(BlockInfoBuilder.forId("crafter_manager").tileEntity(TileCrafterManager::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override @Nullable public BlockDirection getDirection() { @@ -36,7 +48,7 @@ public class BlockCrafterManager extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCraftingMonitor.java index f73891408..fc22e5289 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCraftingMonitor.java @@ -4,13 +4,18 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -19,6 +24,13 @@ public class BlockCraftingMonitor extends BlockNode { super(BlockInfoBuilder.forId("crafting_monitor").tileEntity(TileCraftingMonitor::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override @Nullable public BlockDirection getDirection() { @@ -31,7 +43,7 @@ public class BlockCraftingMonitor extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java index 0da46a405..f6ad973f6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDestructor.java @@ -3,15 +3,20 @@ 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.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileDestructor; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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 net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -21,6 +26,15 @@ public class BlockDestructor extends BlockCable { super(createBuilder("destructor").tileEntity(TileDestructor::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { @@ -42,7 +56,7 @@ public class BlockDestructor extends BlockCable { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDetector.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDetector.java index 975ec9bcb..bfed5115c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDetector.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDetector.java @@ -2,12 +2,15 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsDetector; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileDetector; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockRenderLayer; @@ -17,6 +20,8 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockDetector extends BlockNode { private static final PropertyBool POWERED = PropertyBool.create("powered"); @@ -25,6 +30,13 @@ public class BlockDetector extends BlockNode { super(BlockInfoBuilder.forId("detector").tileEntity(TileDetector::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override protected BlockStateContainer createBlockState() { return createBlockStateBuilder() diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java index 25df2464f..7f2c5dec7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskDrive.java @@ -4,9 +4,13 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.model.ModelDiskDrive; +import com.raoulvdberge.refinedstorage.render.model.loader.CustomModelLoaderDefault; import com.raoulvdberge.refinedstorage.tile.TileDiskDrive; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -15,6 +19,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -25,6 +31,14 @@ public class BlockDiskDrive extends BlockNode { super(BlockInfoBuilder.forId("disk_drive").tileEntity(TileDiskDrive::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + modelRegistration.addModelLoader(new CustomModelLoaderDefault(info.getId(), ModelDiskDrive::new)); + } + @Override @Nullable public BlockDirection getDirection() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskManipulator.java index 8974ab31a..0fecc1d38 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockDiskManipulator.java @@ -4,9 +4,13 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.model.ModelDiskManipulator; +import com.raoulvdberge.refinedstorage.render.model.loader.CustomModelLoaderDefault; import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -15,6 +19,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -25,6 +31,14 @@ public class BlockDiskManipulator extends BlockNode { super(BlockInfoBuilder.forId("disk_manipulator").tileEntity(TileDiskManipulator::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + modelRegistration.addModelLoader(new CustomModelLoaderDefault(info.getId(), ModelDiskManipulator::new)); + } + @Override @Nullable public BlockDirection getDirection() { @@ -55,7 +69,7 @@ public class BlockDiskManipulator extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java index d19e65818..75757df97 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExporter.java @@ -2,16 +2,20 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsExporter; import com.raoulvdberge.refinedstorage.tile.TileExporter; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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 net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -21,6 +25,14 @@ public class BlockExporter extends BlockCable { super(createBuilder("exporter").tileEntity(TileExporter::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java index 7fa9c9b97..297eec6b4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java @@ -3,18 +3,22 @@ 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.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsExternalStorage; import com.raoulvdberge.refinedstorage.tile.TileExternalStorage; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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 net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -24,6 +28,14 @@ public class BlockExternalStorage extends BlockCable { super(createBuilder("external_storage").tileEntity(TileExternalStorage::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidInterface.java index 7c10db898..db7a88787 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidInterface.java @@ -3,26 +3,36 @@ 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.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileFluidInterface; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockFluidInterface extends BlockNode { public BlockFluidInterface() { super(BlockInfoBuilder.forId("fluid_interface").tileEntity(TileFluidInterface::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { return openNetworkGui(RSGui.FLUID_INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT); } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java index 329377a0b..6b0802f7b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java @@ -6,10 +6,12 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeF import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.item.ItemBlockFluidStorage; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileFluidStorage; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -22,6 +24,8 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockFluidStorage extends BlockNode { public static final PropertyEnum TYPE = PropertyEnum.create("type", FluidStorageType.class); @@ -30,6 +34,16 @@ public class BlockFluidStorage extends BlockNode { super(BlockInfoBuilder.forId("fluid_storage").hardness(5.8F).tileEntity(TileFluidStorage::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, FluidStorageType.TYPE_64K.getId(), new ModelResourceLocation(info.getId(), "type=64k")); + modelRegistration.setModel(this, FluidStorageType.TYPE_256K.getId(), new ModelResourceLocation(info.getId(), "type=256k")); + modelRegistration.setModel(this, FluidStorageType.TYPE_1024K.getId(), new ModelResourceLocation(info.getId(), "type=1024k")); + modelRegistration.setModel(this, FluidStorageType.TYPE_4096K.getId(), new ModelResourceLocation(info.getId(), "type=4096k")); + modelRegistration.setModel(this, FluidStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation(info.getId(), "type=creative")); + } + @Override public void getSubBlocks(CreativeTabs tab, NonNullList items) { for (int i = 0; i <= 4; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java index 952f07372..fa48928f3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java @@ -5,10 +5,13 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -18,6 +21,8 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -28,6 +33,16 @@ public class BlockGrid extends BlockNode { super(BlockInfoBuilder.forId("grid").tileEntity(TileGrid::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, GridType.NORMAL.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=normal")); + modelRegistration.setModel(this, GridType.CRAFTING.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=crafting")); + modelRegistration.setModel(this, GridType.PATTERN.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=pattern")); + modelRegistration.setModel(this, GridType.FLUID.getId(), new ModelResourceLocation(info.getId(), "connected=false,direction=north,type=fluid")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override @Nullable public BlockDirection getDirection() { @@ -64,7 +79,7 @@ public class BlockGrid extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java index 946006d7d..c2a45bb24 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockImporter.java @@ -2,16 +2,20 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsImporter; import com.raoulvdberge.refinedstorage.tile.TileImporter; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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 net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -21,6 +25,14 @@ public class BlockImporter extends BlockCable { super(createBuilder("importer").tileEntity(TileImporter::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java index d4dd3850c..cdeccdabb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockInterface.java @@ -3,26 +3,36 @@ 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.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileInterface; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockInterface extends BlockNode { public BlockInterface() { super(BlockInfoBuilder.forId("interface").tileEntity(TileInterface::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { return openNetworkGui(RSGui.INTERFACE, player, world, pos, side, Permission.MODIFY, Permission.INSERT, Permission.EXTRACT); } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java index 2990d87c1..ca93d7b17 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockMachineCasing.java @@ -1,9 +1,19 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockMachineCasing extends BlockBase { public BlockMachineCasing() { super(BlockInfoBuilder.forId("machine_casing").create()); } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkReceiver.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkReceiver.java index e126cce3c..d92a38bf9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkReceiver.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkReceiver.java @@ -1,7 +1,12 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileNetworkReceiver; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockNetworkReceiver extends BlockNode { public BlockNetworkReceiver() { @@ -9,7 +14,14 @@ public class BlockNetworkReceiver extends BlockNode { } @Override - public boolean hasConnectivityState() { + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + + @Override + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkTransmitter.java index b463bc7b3..5aecd2a00 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNetworkTransmitter.java @@ -2,26 +2,38 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockNetworkTransmitter extends BlockNode { public BlockNetworkTransmitter() { super(BlockInfoBuilder.forId("network_transmitter").tileEntity(TileNetworkTransmitter::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { return openNetworkGui(RSGui.NETWORK_TRANSMITTER, player, world, pos, side); } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java index 754330c24..13ee830ce 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockNode.java @@ -60,7 +60,7 @@ public abstract class BlockNode extends BlockNodeProxy { protected BlockStateContainer.Builder createBlockStateBuilder() { BlockStateContainer.Builder builder = super.createBlockStateBuilder(); - if (hasConnectivityState()) { + if (hasConnectedState()) { builder.add(CONNECTED); } @@ -76,7 +76,7 @@ public abstract class BlockNode extends BlockNodeProxy { public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { state = super.getActualState(state, world, pos); - if (hasConnectivityState()) { + if (hasConnectedState()) { TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileNode) { @@ -87,7 +87,7 @@ public abstract class BlockNode extends BlockNodeProxy { return state; } - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return false; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java index 5500f962e..d3e2d493e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java @@ -7,13 +7,16 @@ 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.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsPortableGrid; +import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionPortableGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -25,6 +28,8 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -37,6 +42,13 @@ public class BlockPortableGrid extends BlockBase { super(BlockInfoBuilder.forId("portable_grid").tileEntity(TilePortableGrid::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setStateMapper(this, new StateMap.Builder().ignore(TYPE).build()); + modelRegistration.setModelMeshDefinition(this, new ItemMeshDefinitionPortableGrid()); + } + @Override @Nullable public BlockDirection getDirection() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockQuartzEnrichedIron.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockQuartzEnrichedIron.java index cde66c1df..a8745deed 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockQuartzEnrichedIron.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockQuartzEnrichedIron.java @@ -1,9 +1,19 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockQuartzEnrichedIron extends BlockBase { public BlockQuartzEnrichedIron() { super(BlockInfoBuilder.forId("quartz_enriched_iron_block").create()); } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java index 4d2e5ab6d..ed46f2dcb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java @@ -5,9 +5,12 @@ 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.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileReader; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -15,6 +18,8 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -24,6 +29,15 @@ public class BlockReader extends BlockCable { super(createBuilder("reader").tileEntity(TileReader::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { @@ -68,7 +82,7 @@ public class BlockReader extends BlockCable { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockRelay.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockRelay.java index db33c43e7..887efb63b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockRelay.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockRelay.java @@ -2,25 +2,38 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileRelay; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockRelay extends BlockNode { public BlockRelay() { super(BlockInfoBuilder.forId("relay").tileEntity(TileRelay::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { return openNetworkGui(RSGui.RELAY, player, world, pos, side); } - public boolean hasConnectivityState() { + @Override + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java index 859c105a9..24c4b6577 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java @@ -5,13 +5,18 @@ 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.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileSecurityManager; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -20,6 +25,13 @@ public class BlockSecurityManager extends BlockNode { super(BlockInfoBuilder.forId("security_manager").tileEntity(TileSecurityManager::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override @Nullable public BlockDirection getDirection() { @@ -40,7 +52,7 @@ public class BlockSecurityManager extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java index 24c769590..25a934549 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java @@ -6,10 +6,12 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeS import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.item.ItemBlockStorage; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileStorage; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -22,6 +24,8 @@ import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class BlockStorage extends BlockNode { public static final PropertyEnum TYPE = PropertyEnum.create("type", ItemStorageType.class); @@ -30,6 +34,16 @@ public class BlockStorage extends BlockNode { super(BlockInfoBuilder.forId("storage").tileEntity(TileStorage::new).hardness(5.8F).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, ItemStorageType.TYPE_1K.getId(), new ModelResourceLocation(info.getId(), "type=1k")); + modelRegistration.setModel(this, ItemStorageType.TYPE_4K.getId(), new ModelResourceLocation(info.getId(), "type=4k")); + modelRegistration.setModel(this, ItemStorageType.TYPE_16K.getId(), new ModelResourceLocation(info.getId(), "type=16k")); + modelRegistration.setModel(this, ItemStorageType.TYPE_64K.getId(), new ModelResourceLocation(info.getId(), "type=64k")); + modelRegistration.setModel(this, ItemStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation(info.getId(), "type=creative")); + } + @Override public void getSubBlocks(CreativeTabs tab, NonNullList items) { for (int i = 0; i <= 4; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java index 072852b29..6adcf133e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java @@ -4,8 +4,10 @@ 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.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; @@ -14,6 +16,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; @@ -22,6 +26,12 @@ public class BlockStorageMonitor extends BlockNode { super(BlockInfoBuilder.forId("storage_monitor").tileEntity(TileStorageMonitor::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north")); + } + @Override @Nullable public BlockDirection getDirection() { @@ -65,7 +75,7 @@ public class BlockStorageMonitor extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWirelessTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWirelessTransmitter.java index 291081d70..1d19984a6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWirelessTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWirelessTransmitter.java @@ -2,11 +2,14 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsWirelessTransmitter; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter; import net.minecraft.block.Block; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -19,6 +22,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -28,6 +33,13 @@ public class BlockWirelessTransmitter extends BlockNode { super(BlockInfoBuilder.forId("wireless_transmitter").tileEntity(TileWirelessTransmitter::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + } + @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { return openNetworkGui(RSGui.WIRELESS_TRANSMITTER, player, world, pos, side); @@ -72,7 +84,7 @@ public class BlockWirelessTransmitter extends BlockNode { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java index b9a58b25c..22cb916e0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java @@ -6,9 +6,12 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterCha 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.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; +import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.TileWriter; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -16,6 +19,8 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -25,6 +30,15 @@ public class BlockWriter extends BlockCable { super(createBuilder("writer").tileEntity(TileWriter::new).create()); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + modelRegistration.setStateMapper(this, new StateMapperCTM(info.getId())); + + registerCover(modelRegistration); + } + @Override @Nullable public BlockDirection getDirection() { @@ -89,7 +103,7 @@ public class BlockWriter extends BlockCable { } @Override - public boolean hasConnectivityState() { + public boolean hasConnectedState() { return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java index 4c147a556..555758eda 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java @@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.block.info; import com.raoulvdberge.refinedstorage.tile.TileBase; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; +import net.minecraft.util.ResourceLocation; import javax.annotation.Nullable; import java.util.function.Supplier; @@ -38,13 +39,8 @@ public class BlockInfo implements IBlockInfo { } @Override - public String getId() { - return id; - } - - @Override - public String getModId() { - return modId; + public ResourceLocation getId() { + return new ResourceLocation(modId, id); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java index 96d4018f9..6ceb5d891 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/IBlockInfo.java @@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.block.info; import com.raoulvdberge.refinedstorage.tile.TileBase; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; +import net.minecraft.util.ResourceLocation; import javax.annotation.Nullable; @@ -11,9 +12,7 @@ public interface IBlockInfo { SoundType getSoundType(); - String getId(); - - String getModId(); + ResourceLocation getId(); Object getModObject(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index 203d9351b..d3e8dd24a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -1,56 +1,50 @@ package com.raoulvdberge.refinedstorage.proxy; import com.raoulvdberge.refinedstorage.RS; -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.apiimpl.autocrafting.CraftingPattern; -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.block.BlockBase; import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview; import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart; import com.raoulvdberge.refinedstorage.item.*; import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; 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; import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelPattern; import com.raoulvdberge.refinedstorage.render.model.loader.CustomModelLoaderCover; -import com.raoulvdberge.refinedstorage.render.model.loader.CustomModelLoaderDefault; -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 net.minecraft.block.state.IBlockState; +import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; -import net.minecraft.client.renderer.block.statemap.StateMap; -import net.minecraft.client.renderer.block.statemap.StateMapperBase; +import net.minecraft.client.renderer.block.statemap.IStateMapper; import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.ICustomModelLoader; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -public class ProxyClient extends ProxyCommon { +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +public class ProxyClient extends ProxyCommon implements IModelRegistration { + private Map> bakedModelOverrides = new HashMap<>(); + @Override public void preInit(FMLPreInitializationEvent e) { super.preInit(e); @@ -197,94 +191,16 @@ public class ProxyClient extends ProxyCommon { ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_FORTUNE_2, new ModelResourceLocation("refinedstorage:fortune_upgrade", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_FORTUNE_3, new ModelResourceLocation("refinedstorage:fortune_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.CABLE), 0, new ModelResourceLocation("refinedstorage:cable", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.MACHINE_CASING), 0, new ModelResourceLocation("refinedstorage:machine_casing", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DISK_DRIVE), 0, new ModelResourceLocation("refinedstorage:disk_drive", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.EXPORTER), 0, new ModelResourceLocation("refinedstorage:exporter", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.IMPORTER), 0, new ModelResourceLocation("refinedstorage:importer", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.EXTERNAL_STORAGE), 0, new ModelResourceLocation("refinedstorage:external_storage", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.INTERFACE), 0, new ModelResourceLocation("refinedstorage:interface", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_INTERFACE), 0, new ModelResourceLocation("refinedstorage:fluid_interface", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE), ItemStorageType.TYPE_1K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=1k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE), ItemStorageType.TYPE_4K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=4k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE), ItemStorageType.TYPE_16K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=16k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE), ItemStorageType.TYPE_64K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=64k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE), ItemStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:storage", "type=creative")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), FluidStorageType.TYPE_64K.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=64k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), FluidStorageType.TYPE_256K.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=256k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), FluidStorageType.TYPE_1024K.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=1024k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), FluidStorageType.TYPE_4096K.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=4096k")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), FluidStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=creative")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DISK_MANIPULATOR), 0, new ModelResourceLocation("refinedstorage:disk_manipulator", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.QUARTZ_ENRICHED_IRON), 0, new ModelResourceLocation("refinedstorage:quartz_enriched_iron_block", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE_MONITOR), 0, new ModelResourceLocation("refinedstorage:storage_monitor", "connected=false,direction=north")); ModelLoader.setCustomModelResourceLocation(RSItems.COVER, 0, new ModelResourceLocation("refinedstorage:cover", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.HOLLOW_COVER, 0, new ModelResourceLocation("refinedstorage:hollow_cover", "inventory")); - ModelLoaderRegistry.registerLoader(new CustomModelLoaderDefault(new ResourceLocation(RS.ID, "disk_drive"), ModelDiskDrive::new)); - ModelLoaderRegistry.registerLoader(new CustomModelLoaderDefault(new ResourceLocation(RS.ID, "disk_manipulator"), ModelDiskManipulator::new)); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.GRID), GridType.NORMAL.getId(), new ModelResourceLocation("refinedstorage:grid", "connected=false,direction=north,type=normal")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.GRID), GridType.CRAFTING.getId(), new ModelResourceLocation("refinedstorage:grid", "connected=false,direction=north,type=crafting")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.GRID), GridType.PATTERN.getId(), new ModelResourceLocation("refinedstorage:grid", "connected=false,direction=north,type=pattern")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.GRID), GridType.FLUID.getId(), new ModelResourceLocation("refinedstorage:grid", "connected=false,direction=north,type=fluid")); - ModelLoader.setCustomStateMapper(RSBlocks.GRID, new StateMapperCTM("refinedstorage:grid")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.CRAFTING_MONITOR), 0, new ModelResourceLocation("refinedstorage:crafting_monitor", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.CRAFTING_MONITOR, new StateMapperCTM("refinedstorage:crafting_monitor")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.WIRELESS_TRANSMITTER), 0, new ModelResourceLocation("refinedstorage:wireless_transmitter", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.WIRELESS_TRANSMITTER, new StateMapperCTM("refinedstorage:wireless_transmitter")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.NETWORK_TRANSMITTER), 0, new ModelResourceLocation("refinedstorage:network_transmitter", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.NETWORK_TRANSMITTER, new StateMapperCTM("refinedstorage:network_transmitter")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.NETWORK_RECEIVER), 0, new ModelResourceLocation("refinedstorage:network_receiver", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.NETWORK_RECEIVER, new StateMapperCTM("refinedstorage:network_receiver")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DETECTOR), 0, new ModelResourceLocation("refinedstorage:detector", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.DETECTOR, new StateMapperCTM("refinedstorage:detector")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.RELAY), 0, new ModelResourceLocation("refinedstorage:relay", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.RELAY, new StateMapperCTM("refinedstorage:relay")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.SECURITY_MANAGER), 0, new ModelResourceLocation("refinedstorage:security_manager", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.SECURITY_MANAGER, new StateMapperCTM("refinedstorage:security_manager")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.READER), 0, new ModelResourceLocation("refinedstorage:reader", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.READER, new StateMapperCTM("refinedstorage:reader")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.WRITER), 0, new ModelResourceLocation("refinedstorage:writer", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.WRITER, new StateMapperCTM("refinedstorage:writer")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.CRAFTER), 0, new ModelResourceLocation("refinedstorage:crafter", "connected=false,direction=north")); - ModelLoader.setCustomStateMapper(RSBlocks.CRAFTER, new StateMapperCTM("refinedstorage:crafter")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.CONSTRUCTOR), 0, new ModelResourceLocation("refinedstorage:constructor", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.CONSTRUCTOR, new StateMapperCTM("refinedstorage:constructor")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DESTRUCTOR), 0, new ModelResourceLocation("refinedstorage:destructor", "inventory")); - ModelLoader.setCustomStateMapper(RSBlocks.DESTRUCTOR, new StateMapperCTM("refinedstorage:destructor")); - - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.CRAFTER_MANAGER), 0, new ModelResourceLocation("refinedstorage:crafter_manager", "connected=false,direction=north")); - ModelLoader.setCustomStateMapper(RSBlocks.CRAFTER_MANAGER, new StateMapperCTM("refinedstorage:crafter_manager")); - - ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(RSBlocks.CONTROLLER), stack -> { - ControllerEnergyType energyType = stack.getItemDamage() == ControllerType.CREATIVE.getId() ? ControllerEnergyType.ON : TileController.getEnergyType(ItemBlockController.getEnergyStored(stack), RS.INSTANCE.config.controllerCapacity); - - return new ModelResourceLocation("refinedstorage:controller" + (Loader.isModLoaded("ctm") ? "_glow" : ""), "energy_type=" + energyType); - }); - ModelLoader.setCustomStateMapper(RSBlocks.CONTROLLER, new StateMapperBase() { - @Override - protected ModelResourceLocation getModelResourceLocation(IBlockState state) { - return new ModelResourceLocation("refinedstorage:controller" + (Loader.isModLoaded("ctm") ? "_glow" : ""), "energy_type=" + state.getValue(BlockController.ENERGY_TYPE)); - } - }); - ModelLoaderRegistry.registerLoader(new CustomModelLoaderCover()); - ModelLoader.setCustomStateMapper(RSBlocks.PORTABLE_GRID, new StateMap.Builder().ignore(BlockPortableGrid.TYPE).build()); - ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(RSBlocks.PORTABLE_GRID), new ItemMeshDefinitionPortableGrid()); + addBakedModelOverride(new ResourceLocation(RS.ID, "pattern"), BakedModelPattern::new); + + for (BlockBase block : blocksToRegister) { + block.registerModels(this); + } } public static void onReceiveCraftingPreviewResponse(MessageGridCraftingPreviewResponse message) { @@ -311,21 +227,37 @@ public class ProxyClient extends ProxyCommon { @SubscribeEvent public void onModelBake(ModelBakeEvent e) { - for (ModelResourceLocation model : e.getModelRegistry().getKeys()) { - if (model.getResourceDomain().equals(RS.ID)) { - if (model.getResourcePath().equals("pattern")) { - e.getModelRegistry().putObject(model, new BakedModelPattern(e.getModelRegistry().getObject(model))); - } else if (model.getResourcePath().equals("cable") || - model.getResourcePath().equals("exporter") || - model.getResourcePath().equals("importer") || - model.getResourcePath().equals("external_storage") || - model.getResourcePath().equals("constructor") || - model.getResourcePath().equals("destructor") || - model.getResourcePath().equals("reader") || - model.getResourcePath().equals("writer")) { - e.getModelRegistry().putObject(model, new BakedModelCableCover(e.getModelRegistry().getObject(model))); - } + for (ModelResourceLocation resource : e.getModelRegistry().getKeys()) { + ResourceLocation key = new ResourceLocation(resource.getResourceDomain(), resource.getResourcePath()); + + if (bakedModelOverrides.containsKey(key)) { + e.getModelRegistry().putObject(resource, bakedModelOverrides.get(key).apply(e.getModelRegistry().getObject(resource))); } } } + + @Override + public void addBakedModelOverride(ResourceLocation resource, Function override) { + bakedModelOverrides.put(resource, override); + } + + @Override + public void setModel(Block block, int meta, ModelResourceLocation resource) { + ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), meta, resource); + } + + @Override + public void setModelMeshDefinition(Block block, ItemMeshDefinition meshDefinition) { + ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(block), meshDefinition); + } + + @Override + public void addModelLoader(ICustomModelLoader modelLoader) { + ModelLoaderRegistry.registerLoader(modelLoader); + } + + @Override + public void setStateMapper(Block block, IStateMapper stateMapper) { + ModelLoader.setCustomStateMapper(block, stateMapper); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index a9ad98a7c..00d995db0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -81,7 +81,7 @@ import java.util.List; public class ProxyCommon { private List itemsToRegister = new LinkedList<>(); - private List blocksToRegister = new LinkedList<>(); + protected List blocksToRegister = new LinkedList<>(); public void preInit(FMLPreInitializationEvent e) { MinecraftForge.EVENT_BUS.register(this); @@ -346,7 +346,7 @@ public class ProxyCommon { private void registerTile(IBlockInfo info) { Class clazz = info.createTileEntity().getClass(); - GameRegistry.registerTileEntity(clazz, new ResourceLocation(info.getModId(), info.getId())); + GameRegistry.registerTileEntity(clazz, info.getId()); try { TileBase tileInstance = clazz.newInstance(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java b/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java new file mode 100644 index 000000000..0066cc16c --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java @@ -0,0 +1,23 @@ +package com.raoulvdberge.refinedstorage.render; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.statemap.IStateMapper; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ICustomModelLoader; + +import java.util.function.Function; + +public interface IModelRegistration { + void addBakedModelOverride(ResourceLocation resource, Function override); + + void setModel(Block block, int meta, ModelResourceLocation resource); + + void setModelMeshDefinition(Block block, ItemMeshDefinition meshDefinition); + + void addModelLoader(ICustomModelLoader modelLoader); + + void setStateMapper(Block block, IStateMapper stateMapper); +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java index 7aa686166..ea211a165 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.render.model; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelDiskDrive; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -15,12 +16,12 @@ import java.util.List; import java.util.function.Function; public class ModelDiskDrive implements IModel { - private static final ResourceLocation MODEL_BASE = new ResourceLocation("refinedstorage:block/disk_drive"); + private static final ResourceLocation MODEL_BASE = new ResourceLocation(RS.ID + ":block/disk_drive"); - private static final ResourceLocation MODEL_DISK = new ResourceLocation("refinedstorage:block/disk"); - private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation("refinedstorage:block/disk_near_capacity"); - private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation("refinedstorage:block/disk_full"); - private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation("refinedstorage:block/disk_disconnected"); + private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disk"); + private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disk_near_capacity"); + private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disk_full"); + private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disk_disconnected"); @Override public Collection getDependencies() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java index 3dc667cab..2dc1e5224 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.render.model; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelDiskManipulator; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -17,15 +18,15 @@ import java.util.List; import java.util.function.Function; public class ModelDiskManipulator implements IModel { - private static final ResourceLocation MODEL_BASE_CONNECTED = new ResourceLocation("refinedstorage:block/disk_manipulator_connected" + (Loader.isModLoaded("ctm") ? "_glow" : "")); - private static final ResourceLocation MODEL_BASE_DISCONNECTED = new ResourceLocation("refinedstorage:block/disk_manipulator_disconnected"); + private static final ResourceLocation MODEL_BASE_CONNECTED = new ResourceLocation(RS.ID + ":block/disk_manipulator_connected" + (Loader.isModLoaded("ctm") ? "_glow" : "")); + private static final ResourceLocation MODEL_BASE_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disk_manipulator_disconnected"); - private static final ResourceLocation MODEL_DISK = new ResourceLocation("refinedstorage:block/disk"); - private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation("refinedstorage:block/disk_near_capacity"); - private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation("refinedstorage:block/disk_full"); - private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation("refinedstorage:block/disk_disconnected"); + private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disk"); + private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disk_near_capacity"); + private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disk_full"); + private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disk_disconnected"); - private static final ResourceLocation TEXTURE_BASE_CONNECTED_GLOW = new ResourceLocation("refinedstorage:blocks/disk_manipulator_connected_glow"); + private static final ResourceLocation TEXTURE_BASE_CONNECTED_GLOW = new ResourceLocation(RS.ID + ":blocks/disk_manipulator_connected_glow"); @Override public Collection getDependencies() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/statemapper/StateMapperCTM.java b/src/main/java/com/raoulvdberge/refinedstorage/render/statemapper/StateMapperCTM.java index 661e577ec..6b3924542 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/statemapper/StateMapperCTM.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/statemapper/StateMapperCTM.java @@ -3,19 +3,20 @@ package com.raoulvdberge.refinedstorage.render.statemapper; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.Loader; public class StateMapperCTM extends StateMapperBase { private static final String CTM_MOD_ID = "ctm"; - private String location; + private ResourceLocation location; - public StateMapperCTM(String location) { + public StateMapperCTM(ResourceLocation location) { this.location = location; } @Override protected ModelResourceLocation getModelResourceLocation(IBlockState state) { - return new ModelResourceLocation(location + (Loader.isModLoaded(CTM_MOD_ID) ? "_glow" : ""), getPropertyString(state.getProperties())); + return new ModelResourceLocation(location.toString() + (Loader.isModLoaded(CTM_MOD_ID) ? "_glow" : ""), getPropertyString(state.getProperties())); } }