Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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<ItemStack> 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;
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
10 changes: 0 additions & 10 deletions src/main/java/com/micatechnologies/realgrid/init/ModItems.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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")
);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@
"y": 270
}
},
"color": {
"0": {},
"1": {}
},
"inventory": [
{
"model": "realgrid:large_maclean_porcelain_insulator_new"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@
"y": 270
}
},
"color": {
"0": {},
"1": {}
},
"inventory": [
{
"model": "realgrid:large_maclean_porcelain_insulator_old"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@
"y": 270
}
},
"color": {
"0": {},
"1": {}
},
"inventory": [
{
"model": "realgrid:small_maclean_porcelain_insulator_new"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@
"y": 270
}
},
"color": {
"0": {},
"1": {}
},
"inventory": [
{
"model": "realgrid:small_maclean_porcelain_insulator_new_2"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@
"y": 270
}
},
"color": {
"0": {},
"1": {}
},
"inventory": [
{
"model": "realgrid:small_maclean_porcelain_insulator_old"
Expand Down