diff --git a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockColoredInsulatorBase.java b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockColoredInsulatorBase.java index 1697c83..e69de29 100644 --- a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockColoredInsulatorBase.java +++ b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockColoredInsulatorBase.java @@ -1,103 +0,0 @@ -package com.micatechnologies.realgrid.blocks.insulators; - -import blusunrize.immersiveengineering.api.IEProperties; -import net.minecraft.block.properties.IProperty; -import net.minecraft.block.properties.PropertyInteger; -import net.minecraft.block.state.BlockStateContainer; -import net.minecraft.block.state.IBlockState; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.property.ExtendedBlockState; -import net.minecraftforge.common.property.IUnlistedProperty; - -import javax.annotation.Nullable; - -/** - * Abstract base for insulator blocks that support two color variants (meta 0 and 1). - * Handles the COLOR block state property, meta encoding, sub-blocks, and TE color sync. - * - * Concrete subclasses only need to provide the TE factory via {@link #createColoredTE()}. - */ -public abstract class BlockColoredInsulatorBase extends BlockInsulatorBase { - - public static final PropertyInteger COLOR = PropertyInteger.create("color", 0, 1); - - protected BlockColoredInsulatorBase(String registryName) { - super(registryName); - setDefaultState(blockState.getBaseState() - .withProperty(FACING, EnumFacing.NORTH) - .withProperty(COLOR, 0)); - } - - /** Creates the TE for this color-variant insulator. Color is set separately. */ - protected abstract TileEntityInsulatorBase createColoredTE(); - - @Override - @SuppressWarnings("rawtypes") - protected BlockStateContainer createBlockState() { - return new ExtendedBlockState(this, - new IProperty[]{ FACING, COLOR }, - new IUnlistedProperty[]{ IEProperties.CONNECTIONS }); - } - - @Override - public IBlockState getStateFromMeta(int meta) { - EnumFacing facing = EnumFacing.byHorizontalIndex(meta & 3); - int color = (meta >> 2) & 1; - return getDefaultState().withProperty(FACING, facing).withProperty(COLOR, color); - } - - @Override - public int getMetaFromState(IBlockState state) { - int facing = state.getValue(FACING).getHorizontalIndex(); - int color = state.getValue(COLOR); - return facing | (color << 2); - } - - @Override - public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, - float hitX, float hitY, float hitZ, - int meta, EntityLivingBase placer, EnumHand hand) { - EnumFacing playerFacing = placer.getHorizontalFacing().getOpposite(); - int color = meta > 0 ? 1 : 0; - return getDefaultState().withProperty(FACING, playerFacing).withProperty(COLOR, color); - } - - @Override - public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, - EntityLivingBase placer, ItemStack stack) { - super.onBlockPlacedBy(world, pos, state, placer, stack); - if (!world.isRemote) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof TileEntityInsulatorBase) { - ((TileEntityInsulatorBase) te).colorVariant = state.getValue(COLOR); - } - } - } - - @Override - public int damageDropped(IBlockState state) { - return state.getValue(COLOR); - } - - @Override - public void getSubBlocks(CreativeTabs tab, NonNullList items) { - items.add(new ItemStack(this, 1, 0)); - items.add(new ItemStack(this, 1, 1)); - } - - @Nullable - @Override - public TileEntity createNewTileEntity(World world, int meta) { - TileEntityInsulatorBase te = createColoredTE(); - te.colorVariant = (meta >> 2) & 1; - return te; - } -} diff --git a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINew.java b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINew.java index d665c5b..51757f1 100644 --- a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINew.java +++ b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINew.java @@ -1,18 +1,22 @@ package com.micatechnologies.realgrid.blocks.insulators; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + /** - * Porcelain Post Top Insulator Block — color variants: white (0) and black (1). - * - * All color-variant block state logic lives in {@link BlockColoredInsulatorBase}. + * Porcelain Post Top Insulator Block (New, Large). */ -public class BlockMacLeanPINew extends BlockColoredInsulatorBase { +public class BlockMacLeanPINew extends BlockInsulatorBase { public BlockMacLeanPINew() { super("large_maclean_porcelain_insulator_new"); } + @Nullable @Override - protected TileEntityInsulatorBase createColoredTE() { + public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityMacLeanPINew(); } } diff --git a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall.java b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall.java index 57c8bdf..5ac2f83 100644 --- a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall.java +++ b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall.java @@ -1,18 +1,22 @@ package com.micatechnologies.realgrid.blocks.insulators; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + /** - * Porcelain Post Top Insulator Block — color variants: white (0) and black (1). - * - * All color-variant block state logic lives in {@link BlockColoredInsulatorBase}. + * Porcelain Post Top Insulator Block (New, Small). */ -public class BlockMacLeanPINewSmall extends BlockColoredInsulatorBase { +public class BlockMacLeanPINewSmall extends BlockInsulatorBase { public BlockMacLeanPINewSmall() { super("small_maclean_porcelain_insulator_new"); } + @Nullable @Override - protected TileEntityInsulatorBase createColoredTE() { + public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityMacLeanPINewSmall(); } } diff --git a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall2.java b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall2.java index 81c23dc..9fa53ae 100644 --- a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall2.java +++ b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPINewSmall2.java @@ -1,18 +1,22 @@ package com.micatechnologies.realgrid.blocks.insulators; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + /** - * Porcelain Post Top Insulator Block — color variants: white (0) and black (1). - * - * All color-variant block state logic lives in {@link BlockColoredInsulatorBase}. + * Porcelain Post Top Insulator Block (New, Small, Version 2). */ -public class BlockMacLeanPINewSmall2 extends BlockColoredInsulatorBase { +public class BlockMacLeanPINewSmall2 extends BlockInsulatorBase { public BlockMacLeanPINewSmall2() { super("small_maclean_porcelain_insulator_new_2"); } + @Nullable @Override - protected TileEntityInsulatorBase createColoredTE() { + public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityMacLeanPINewSmall2(); } } diff --git a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOld.java b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOld.java index ea2585f..4767a9a 100644 --- a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOld.java +++ b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOld.java @@ -1,18 +1,22 @@ package com.micatechnologies.realgrid.blocks.insulators; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + /** - * Porcelain Post Top Insulator Block — color variants: white (0) and black (1). - * - * All color-variant block state logic lives in {@link BlockColoredInsulatorBase}. + * Porcelain Post Top Insulator Block (Old, Large). */ -public class BlockMacLeanPIOld extends BlockColoredInsulatorBase { +public class BlockMacLeanPIOld extends BlockInsulatorBase { public BlockMacLeanPIOld() { super("large_maclean_porcelain_insulator_old"); } + @Nullable @Override - protected TileEntityInsulatorBase createColoredTE() { + public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityMacLeanPIOld(); } } diff --git a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOldSmall.java b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOldSmall.java index 36538a3..59db69d 100644 --- a/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOldSmall.java +++ b/src/main/java/com/micatechnologies/realgrid/blocks/insulators/BlockMacLeanPIOldSmall.java @@ -1,18 +1,22 @@ package com.micatechnologies.realgrid.blocks.insulators; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + /** - * Porcelain Post Top Insulator Block — color variants: white (0) and black (1). - * - * All color-variant block state logic lives in {@link BlockColoredInsulatorBase}. + * Porcelain Post Top Insulator Block (Old, Small). */ -public class BlockMacLeanPIOldSmall extends BlockColoredInsulatorBase { +public class BlockMacLeanPIOldSmall extends BlockInsulatorBase { public BlockMacLeanPIOldSmall() { super("small_maclean_porcelain_insulator_old"); } + @Nullable @Override - protected TileEntityInsulatorBase createColoredTE() { + public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityMacLeanPIOldSmall(); } } diff --git a/src/main/java/com/micatechnologies/realgrid/init/ModItems.java b/src/main/java/com/micatechnologies/realgrid/init/ModItems.java index 0bbfa4d..d845a3f 100644 --- a/src/main/java/com/micatechnologies/realgrid/init/ModItems.java +++ b/src/main/java/com/micatechnologies/realgrid/init/ModItems.java @@ -1,10 +1,8 @@ package com.micatechnologies.realgrid.init; import com.micatechnologies.realgrid.RealGrid; -import com.micatechnologies.realgrid.blocks.insulators.BlockColoredInsulatorBase; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.Mod; @@ -23,14 +21,6 @@ public static void registerModels(ModelRegistryEvent event) item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory") ); - if (item instanceof ItemBlock - && ((ItemBlock) item).getBlock() instanceof BlockColoredInsulatorBase) - { - ModelLoader.setCustomModelResourceLocation( - item, 1, - new ModelResourceLocation(item.getRegistryName(), "inventory") - ); - } } } } diff --git a/src/main/java/com/micatechnologies/realgrid/items/ItemBlockBase.java b/src/main/java/com/micatechnologies/realgrid/items/ItemBlockBase.java index 31e02dc..e8ff92a 100644 --- a/src/main/java/com/micatechnologies/realgrid/items/ItemBlockBase.java +++ b/src/main/java/com/micatechnologies/realgrid/items/ItemBlockBase.java @@ -1,6 +1,5 @@ package com.micatechnologies.realgrid.items; -import com.micatechnologies.realgrid.blocks.insulators.BlockColoredInsulatorBase; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; @@ -9,15 +8,11 @@ public class ItemBlockBase extends ItemBlock public ItemBlockBase(Block block) { super(block); - if (block instanceof BlockColoredInsulatorBase) { - setHasSubtypes(true); - setMaxDamage(0); - } } @Override public int getMetadata(int damage) { - return getHasSubtypes() ? damage : 0; + return 0; } } diff --git a/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_new.json b/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_new.json index e7c5130..19df9ce 100644 --- a/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_new.json +++ b/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_new.json @@ -21,10 +21,6 @@ "y": 270 } }, - "color": { - "0": {}, - "1": {} - }, "inventory": [ { "model": "realgrid:large_maclean_porcelain_insulator_new" diff --git a/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_old.json b/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_old.json index f517ddb..3315854 100644 --- a/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_old.json +++ b/src/main/resources/assets/realgrid/blockstates/large_maclean_porcelain_insulator_old.json @@ -21,10 +21,6 @@ "y": 270 } }, - "color": { - "0": {}, - "1": {} - }, "inventory": [ { "model": "realgrid:large_maclean_porcelain_insulator_old" diff --git a/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new.json b/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new.json index 78f3b24..a34f446 100644 --- a/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new.json +++ b/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new.json @@ -21,10 +21,6 @@ "y": 270 } }, - "color": { - "0": {}, - "1": {} - }, "inventory": [ { "model": "realgrid:small_maclean_porcelain_insulator_new" diff --git a/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new_2.json b/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new_2.json index 46321b7..a51fe31 100644 --- a/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new_2.json +++ b/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_new_2.json @@ -21,10 +21,6 @@ "y": 270 } }, - "color": { - "0": {}, - "1": {} - }, "inventory": [ { "model": "realgrid:small_maclean_porcelain_insulator_new_2" diff --git a/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_old.json b/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_old.json index 715f895..9322e67 100644 --- a/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_old.json +++ b/src/main/resources/assets/realgrid/blockstates/small_maclean_porcelain_insulator_old.json @@ -21,10 +21,6 @@ "y": 270 } }, - "color": { - "0": {}, - "1": {} - }, "inventory": [ { "model": "realgrid:small_maclean_porcelain_insulator_old"