Scrap concept of "named states", go back to looping through properties for block sub-types

This commit is contained in:
Cheeserolls 2015-04-03 22:32:02 +01:00
parent 8ca7e90be0
commit 68e56e5324
35 changed files with 430 additions and 391 deletions

View file

@ -8,16 +8,17 @@
package biomesoplenty.api.block; package biomesoplenty.api.block;
import java.util.Map; import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
public interface IBOPBlock { public interface IBOPBlock {
public Map<String, IBlockState> getNamedStates();
public IBlockState getNamedState(String name);
public Class<? extends ItemBlock> getItemClass(); public Class<? extends ItemBlock> getItemClass();
public int getItemRenderColor(IBlockState state, int tintIndex); public int getItemRenderColor(IBlockState state, int tintIndex);
public IProperty[] getPresetProperties();
public IProperty[] getRenderProperties();
public IBlockState getDefaultState();
public String getStateName(IBlockState state);
} }

View file

@ -8,9 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
@ -38,14 +35,15 @@ public class BlockBOPDirt extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { COARSE, VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { COARSE, VARIANT });}
// implement IDHBlock // implement IBOPBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {COARSE, VARIANT}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {COARSE, VARIANT}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state)
{
return (Boolean.TRUE.equals(state.getValue(COARSE)) ? "coarse_" : "") + ((BOPDirtType) state.getValue(VARIANT)).getName() + "_dirt";
}
public BlockBOPDirt() { public BlockBOPDirt() {
@ -56,16 +54,7 @@ public class BlockBOPDirt extends Block implements IBOPBlock
this.setHardness(0.5F); this.setHardness(0.5F);
this.setHarvestLevel("shovel", 0); this.setHarvestLevel("shovel", 0);
this.setStepSound(Block.soundTypeGravel); this.setStepSound(Block.soundTypeGravel);
this.setDefaultState( this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(false)).withProperty(VARIANT, BOPDirtType.LOAMY) );
// define named states
this.namedStates.put("loamy_dirt", this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(false)).withProperty(VARIANT, BOPDirtType.LOAMY) );
this.namedStates.put("sandy_dirt", this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(false)).withProperty(VARIANT, BOPDirtType.SANDY) );
this.namedStates.put("silty_dirt", this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(false)).withProperty(VARIANT, BOPDirtType.SILTY) );
this.namedStates.put("coarse_loamy_dirt", this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(true)).withProperty(VARIANT, BOPDirtType.LOAMY) );
this.namedStates.put("coarse_sandy_dirt", this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(true)).withProperty(VARIANT, BOPDirtType.SANDY) );
this.namedStates.put("coarse_silty_dirt", this.blockState.getBaseState().withProperty(COARSE, Boolean.valueOf(true)).withProperty(VARIANT, BOPDirtType.SILTY) );
this.setDefaultState(this.namedStates.get("loamy_dirt"));
} }

View file

@ -8,12 +8,10 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import net.minecraft.block.BlockDoor; import net.minecraft.block.BlockDoor;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
@ -24,13 +22,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockBOPDoor extends BlockDoor implements IBOPBlock public class BlockBOPDoor extends BlockDoor implements IBOPBlock
{ {
// implement IDHBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
public Class<? extends ItemBlock> getItemClass() {return null;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return null; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public IProperty[] getRenderProperties() { return new IProperty[] {FACING, OPEN, HINGE, HALF}; }
public String getStateName(IBlockState state) {return "";}
private Item doorItem; private Item doorItem;

View file

@ -8,24 +8,23 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockFence; import net.minecraft.block.BlockFence;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
public class BlockBOPFence extends BlockFence implements IBOPBlock public class BlockBOPFence extends BlockFence implements IBOPBlock
{ {
// implement IDHBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); // implement IBOPBlock
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public IProperty[] getRenderProperties() { return new IProperty[] {NORTH, EAST, SOUTH, WEST}; }
public String getStateName(IBlockState state) {return "";}
public BlockBOPFence() public BlockBOPFence()

View file

@ -8,12 +8,10 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockFenceGate; import net.minecraft.block.BlockFenceGate;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
@ -23,12 +21,12 @@ import net.minecraft.item.ItemBlock;
public class BlockBOPFenceGate extends BlockFenceGate implements IBOPBlock public class BlockBOPFenceGate extends BlockFenceGate implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {FACING, OPEN, IN_WALL}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
public BlockBOPFenceGate() public BlockBOPFenceGate()

View file

@ -47,18 +47,20 @@ public class BlockBOPFlower1 extends BlockDecoration {
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((FlowerType) state.getValue(VARIANT)).getName();
}
public BlockBOPFlower1() public BlockBOPFlower1()
{ {
super(); super();
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, FlowerType.CLOVER) );
// define named states
for(FlowerType flowerType : FlowerType.values())
{
this.namedStates.put(flowerType.getName(), this.blockState.getBaseState().withProperty(VARIANT, flowerType));
}
this.setDefaultState(this.getNamedState("clover"));
} }

View file

@ -35,18 +35,20 @@ public class BlockBOPFlower2 extends BlockDecoration {
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((FlowerType) state.getValue(VARIANT)).getName();
}
public BlockBOPFlower2() public BlockBOPFlower2()
{ {
super(); super();
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, FlowerType.LAVENDER) );
// define named states
for(FlowerType flowerType : FlowerType.values())
{
this.namedStates.put(flowerType.getName(), this.blockState.getBaseState().withProperty(VARIANT, flowerType));
}
this.setDefaultState(this.getNamedState("lavender"));
} }

View file

@ -8,25 +8,23 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
public class BlockBOPGeneric extends Block implements IBOPBlock public class BlockBOPGeneric extends Block implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
public BlockBOPGeneric() { public BlockBOPGeneric() {

View file

@ -8,8 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.block.BOPBlocks;
@ -47,15 +45,24 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock
public static enum BOPGrassType implements IStringSerializable {SPECTRAL_MOSS, SMOLDERING, LOAMY, SANDY, SILTY, ORIGIN, OVERGROWN_NETHERRACK; public String getName() {return this.name().toLowerCase();}}; public static enum BOPGrassType implements IStringSerializable {SPECTRAL_MOSS, SMOLDERING, LOAMY, SANDY, SILTY, ORIGIN, OVERGROWN_NETHERRACK; public String getName() {return this.name().toLowerCase();}};
public static final PropertyEnum VARIANT = PropertyEnum.create("variant", BOPGrassType.class); public static final PropertyEnum VARIANT = PropertyEnum.create("variant", BOPGrassType.class);
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT, SNOWY });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { SNOWY, VARIANT });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {SNOWY, VARIANT}; }
public String getStateName(IBlockState state) {
BOPGrassType grassType = (BOPGrassType)state.getValue(VARIANT);
switch (grassType)
{
case SPECTRAL_MOSS: case OVERGROWN_NETHERRACK:
return grassType.getName();
default:
return grassType.getName() + "_grass_block";
}
}
public BlockBOPGrass() public BlockBOPGrass()
@ -66,17 +73,7 @@ public class BlockBOPGrass extends BlockGrass implements IBOPBlock
this.setHardness(0.6F); this.setHardness(0.6F);
this.setHarvestLevel("shovel", 0); // TODO: I think this just determines which tool speeds up digging - need to investigate more this.setHarvestLevel("shovel", 0); // TODO: I think this just determines which tool speeds up digging - need to investigate more
this.setStepSound(Block.soundTypeGrass); this.setStepSound(Block.soundTypeGrass);
this.setDefaultState(this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.LOAMY));
// define named states
this.namedStates.put("spectral_moss", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.SPECTRAL_MOSS) );
this.namedStates.put("smoldering_grass_block", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.SMOLDERING) );
this.namedStates.put("loamy_grass_block", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.LOAMY) );
this.namedStates.put("sandy_grass_block", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.SANDY) );
this.namedStates.put("silty_grass_block", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.SILTY) );
this.namedStates.put("origin_grass_block", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.ORIGIN) );
this.namedStates.put("overgrown_netherrack", this.blockState.getBaseState().withProperty(SNOWY, Boolean.valueOf(false)).withProperty(VARIANT, BOPGrassType.OVERGROWN_NETHERRACK) );
this.setDefaultState(this.namedStates.get("loamy_grass_block"));
} }

View file

@ -8,9 +8,7 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Random; import java.util.Random;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
@ -38,12 +36,12 @@ public class BlockBOPLeaves extends BlockLeaves implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] {CHECK_DECAY, DECAYABLE});} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] {CHECK_DECAY, DECAYABLE});}
// implement IDHBlock // implement IBOPBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
private ItemStack sapling; private ItemStack sapling;

View file

@ -8,9 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPLilypad; import biomesoplenty.common.item.ItemBOPLilypad;
import net.minecraft.block.BlockLilyPad; import net.minecraft.block.BlockLilyPad;
@ -31,25 +28,28 @@ public class BlockBOPLilypad extends BlockLilyPad implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
// need to use a custom item class because of the unique way lilies are placed
public Class<? extends ItemBlock> getItemClass() {return ItemBOPLilypad.class;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
// need to use a custom item class because of the unique way lilies are placed
public Class<? extends ItemBlock> getItemClass() { return ItemBOPLilypad.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state) {
LilypadType type = (LilypadType) state.getValue(VARIANT);
switch (type)
{
case DUCKWEED:
return type.getName();
default:
return "lily_"+type.getName();
}
}
public BlockBOPLilypad() public BlockBOPLilypad()
{ {
// define named states this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, LilypadType.MEDIUM));
this.namedStates.put("lily_medium", this.blockState.getBaseState().withProperty(VARIANT, LilypadType.MEDIUM) );
this.namedStates.put("lily_small", this.blockState.getBaseState().withProperty(VARIANT, LilypadType.SMALL) );
this.namedStates.put("lily_tiny", this.blockState.getBaseState().withProperty(VARIANT, LilypadType.TINY) );
this.namedStates.put("duckweed", this.blockState.getBaseState().withProperty(VARIANT, LilypadType.DUCKWEED) );
this.setDefaultState(this.namedStates.get("lily_medium"));
} }
@Override @Override

View file

@ -8,9 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockLog; import net.minecraft.block.BlockLog;
@ -26,12 +23,13 @@ public class BlockBOPLog extends BlockLog implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { LOG_AXIS });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { LOG_AXIS });}
// implement IDHBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); // implement IBOPBlock
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public IProperty[] getRenderProperties() { return new IProperty[] {LOG_AXIS}; }
public String getStateName(IBlockState state) {return "";}
public BlockBOPLog() public BlockBOPLog()

View file

@ -9,12 +9,14 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState; import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.util.IStringSerializable; import net.minecraft.util.IStringSerializable;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
@ -32,20 +34,22 @@ public class BlockBOPMushroom extends BlockDecoration
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((MushroomType) state.getValue(VARIANT)).getName();
}
public BlockBOPMushroom() public BlockBOPMushroom()
{ {
// set some defaults // set some defaults
this.setBlockBoundsByRadiusAndHeight(0.2F, 0.4F); this.setBlockBoundsByRadiusAndHeight(0.2F, 0.4F);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, MushroomType.TOADSTOOL) );
// define named states
this.namedStates.put("toadstool", this.blockState.getBaseState().withProperty(VARIANT, MushroomType.TOADSTOOL));
this.namedStates.put("portobello", this.blockState.getBaseState().withProperty(VARIANT, MushroomType.PORTOBELLO));
this.namedStates.put("blue_milk_cap", this.blockState.getBaseState().withProperty(VARIANT, MushroomType.BLUE_MILK_CAP));
this.namedStates.put("glowshroom", this.blockState.getBaseState().withProperty(VARIANT, MushroomType.GLOWSHROOM));
this.namedStates.put("flat_mushroom", this.blockState.getBaseState().withProperty(VARIANT, MushroomType.FLAT_MUSHROOM));
this.namedStates.put("shadow_shroom", this.blockState.getBaseState().withProperty(VARIANT, MushroomType.SHADOW_SHROOM));
this.setDefaultState(this.namedStates.get("toadstool"));
} }
// map from state to meta and vice verca // map from state to meta and vice verca
@ -94,7 +98,6 @@ public class BlockBOPMushroom extends BlockDecoration
boolean onStone = (groundBlock == Blocks.stone || groundBlock == BOPBlocks.stone); // TODO: hard dirt too? the other edge cases? boolean onStone = (groundBlock == Blocks.stone || groundBlock == BOPBlocks.stone); // TODO: hard dirt too? the other edge cases?
boolean onEndstone = (groundBlock == Blocks.end_stone); boolean onEndstone = (groundBlock == Blocks.end_stone);
//System.out.println("ground block is " + BlockStateUtils.getStateInfoAsString(groundState));
if (groundBlock instanceof BlockBOPGrass) if (groundBlock instanceof BlockBOPGrass)
{ {
switch ((BlockBOPGrass.BOPGrassType) groundState.getValue(BlockBOPGrass.VARIANT)) switch ((BlockBOPGrass.BOPGrassType) groundState.getValue(BlockBOPGrass.VARIANT))

View file

@ -8,24 +8,22 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockStairs; import net.minecraft.block.BlockStairs;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
public class BlockBOPStairs extends BlockStairs implements IBOPBlock public class BlockBOPStairs extends BlockStairs implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {FACING, HALF, SHAPE}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
public BlockBOPStairs(IBlockState modelState) public BlockBOPStairs(IBlockState modelState)

View file

@ -8,9 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -37,12 +34,16 @@ public class BlockBOPStone extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT, POLISHED });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT, POLISHED });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); // implement IBOPBlock
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT, POLISHED}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT, POLISHED}; }
public String getStateName(IBlockState state)
{
return (Boolean.TRUE.equals(state.getValue(POLISHED)) ? "polished_" : "") + ((StoneType) state.getValue(VARIANT)).getName();
}
public BlockBOPStone() public BlockBOPStone()
@ -51,20 +52,10 @@ public class BlockBOPStone extends Block implements IBOPBlock
// set some defaults // set some defaults
this.setStepSound(Block.soundTypeStone); this.setStepSound(Block.soundTypeStone);
this.setHarvestLevel("pickaxe", 1, this.getDefaultState().withProperty(VARIANT, StoneType.LIMESTONE)); this.setHarvestLevel("pickaxe", 1, this.getDefaultState().withProperty(VARIANT, StoneType.LIMESTONE));
this.setHarvestLevel("pickaxe", 2, this.getDefaultState().withProperty(VARIANT, StoneType.SILTSTONE)); this.setHarvestLevel("pickaxe", 2, this.getDefaultState().withProperty(VARIANT, StoneType.SILTSTONE));
this.setHarvestLevel("pickaxe", 3, this.getDefaultState().withProperty(VARIANT, StoneType.SHALE)); this.setHarvestLevel("pickaxe", 3, this.getDefaultState().withProperty(VARIANT, StoneType.SHALE));
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, StoneType.LIMESTONE).withProperty(POLISHED, Boolean.valueOf(false)) );
// define named states
this.namedStates.put("limestone", this.blockState.getBaseState().withProperty(VARIANT, StoneType.LIMESTONE).withProperty(POLISHED, Boolean.valueOf(false)) );
this.namedStates.put("siltstone", this.blockState.getBaseState().withProperty(VARIANT, StoneType.SILTSTONE).withProperty(POLISHED, Boolean.valueOf(false)) );
this.namedStates.put("shale", this.blockState.getBaseState().withProperty(VARIANT, StoneType.SHALE).withProperty(POLISHED, Boolean.valueOf(false)) );
this.namedStates.put("polished_limestone", this.blockState.getBaseState().withProperty(VARIANT, StoneType.LIMESTONE).withProperty(POLISHED, Boolean.valueOf(true)) );
this.namedStates.put("polished_siltstone", this.blockState.getBaseState().withProperty(VARIANT, StoneType.SILTSTONE).withProperty(POLISHED, Boolean.valueOf(true)) );
this.namedStates.put("polished_shale", this.blockState.getBaseState().withProperty(VARIANT, StoneType.SHALE).withProperty(POLISHED, Boolean.valueOf(true)) );
this.setDefaultState(this.namedStates.get("limestone"));
} }

View file

@ -8,12 +8,10 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.BlockVine; import net.minecraft.block.BlockVine;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
@ -23,12 +21,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockBOPVine extends BlockVine implements IBOPBlock public class BlockBOPVine extends BlockVine implements IBOPBlock
{ {
// implement IDHBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); // implement IBOPBlock
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public IProperty[] getRenderProperties() { return new IProperty[] {UP, NORTH, EAST, SOUTH, WEST}; }
public String getStateName(IBlockState state) {return "";}
// if set to true, (the default), use BlockVine getBlockColor(), getRenderColor() and colorMultiplier() functions to color the texture based on biome // if set to true, (the default), use BlockVine getBlockColor(), getRenderColor() and colorMultiplier() functions to color the texture based on biome

View file

@ -29,6 +29,7 @@ public class BlockBamboo extends BlockDecoration
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { AGE });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { AGE });}
public BlockBamboo() public BlockBamboo()
{ {
this.setHardness(0.2F); this.setHardness(0.2F);
@ -96,7 +97,6 @@ public class BlockBamboo extends BlockDecoration
int age = ((Integer)state.getValue(AGE)).intValue(); int age = ((Integer)state.getValue(AGE)).intValue();
int treeHeight = 1; int treeHeight = 1;
while (worldIn.getBlockState(pos.down(treeHeight)).getBlock() == this) {++treeHeight;} while (worldIn.getBlockState(pos.down(treeHeight)).getBlock() == this) {++treeHeight;}
//System.out.println("Banboo age: "+age+" tree height: "+treeHeight);
if (treeHeight < 4) if (treeHeight < 4)
{ {

View file

@ -8,9 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
@ -40,13 +37,15 @@ public class BlockBones extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { AXIS, VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { AXIS, VARIANT });}
// implement IDHBlock // implement IBOPBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {AXIS, VARIANT}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state)
{
return ((BoneType) state.getValue(VARIANT)).getName() + "_bone_segment";
}
public BlockBones() public BlockBones()
{ {
@ -57,13 +56,7 @@ public class BlockBones extends Block implements IBOPBlock
this.setResistance(5.0F); this.setResistance(5.0F);
this.setStepSound(Block.soundTypeStone); this.setStepSound(Block.soundTypeStone);
// define named states this.setDefaultState(this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.Y).withProperty(VARIANT, BoneType.LARGE));
this.namedStates.put("small_bone_segment", this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.Y).withProperty(VARIANT, BoneType.SMALL));
this.namedStates.put("medium_bone_segment", this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.Y).withProperty(VARIANT, BoneType.MEDIUM));
this.namedStates.put("large_bone_segment", this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.Y).withProperty(VARIANT, BoneType.LARGE));
this.setDefaultState(this.namedStates.get("large_bone_segment"));
} }

View file

@ -34,6 +34,22 @@ public class BlockCoral extends BlockDecoration
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { LEVEL, VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { LEVEL, VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
CoralType type = (CoralType) state.getValue(VARIANT);
switch (type)
{
case ALGAE:
return type.getName();
default:
return type.getName()+"_coral";
}
}
public BlockCoral() public BlockCoral()
{ {
super(Material.water); super(Material.water);
@ -42,15 +58,7 @@ public class BlockCoral extends BlockDecoration
this.setHardness(0.6F); this.setHardness(0.6F);
this.setStepSound(Block.soundTypeSand); this.setStepSound(Block.soundTypeSand);
this.setBlockBoundsByRadiusAndHeight(0.4F, 0.8F); this.setBlockBoundsByRadiusAndHeight(0.4F, 0.8F);
this.setDefaultState( this.blockState.getBaseState().withProperty(LEVEL, 15).withProperty(VARIANT, CoralType.PINK) );
// define named states
this.namedStates.put("pink_coral", this.blockState.getBaseState().withProperty(LEVEL, 15).withProperty(VARIANT, CoralType.PINK) );
this.namedStates.put("orange_coral", this.blockState.getBaseState().withProperty(LEVEL, 15).withProperty(VARIANT, CoralType.ORANGE) );
this.namedStates.put("blue_coral", this.blockState.getBaseState().withProperty(LEVEL, 15).withProperty(VARIANT, CoralType.BLUE) );
this.namedStates.put("glowing_coral", this.blockState.getBaseState().withProperty(LEVEL, 15).withProperty(VARIANT, CoralType.GLOWING) );
this.namedStates.put("algae", this.blockState.getBaseState().withProperty(LEVEL, 15).withProperty(VARIANT, CoralType.ALGAE) );
this.setDefaultState(this.namedStates.get("pink_coral"));
} }

View file

@ -8,8 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
@ -17,6 +15,7 @@ import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
@ -24,12 +23,12 @@ import net.minecraft.item.ItemBlock;
public class BlockCrystal extends Block implements IBOPBlock public class BlockCrystal extends Block implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
public BlockCrystal() { public BlockCrystal() {

View file

@ -8,12 +8,11 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
@ -31,12 +30,12 @@ import biomesoplenty.common.item.ItemBOPBlock;
public class BlockDecoration extends Block implements IBOPBlock public class BlockDecoration extends Block implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
protected Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
// constructor // constructor

View file

@ -31,6 +31,8 @@ class BlockDoubleDecoration extends BlockDecoration {
public static final PropertyEnum HALF = PropertyEnum.create("half", Half.class); public static final PropertyEnum HALF = PropertyEnum.create("half", Half.class);
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { HALF });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { HALF });}
public IProperty[] getRenderProperties() { return new IProperty[] {HALF}; }
public float radius; public float radius;
public float height; public float height;
public boolean fromTop; public boolean fromTop;

View file

@ -12,7 +12,6 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import biomesoplenty.api.block.BOPBlocks; import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockFoliage.FoliageType;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
@ -40,16 +39,20 @@ public class BlockDoubleFoliage extends BlockDoubleDecoration implements ISheara
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { HALF, VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { HALF, VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {HALF, VARIANT}; }
public String getStateName(IBlockState state)
{
return ((FoliageType) state.getValue(VARIANT)).getName();
}
public BlockDoubleFoliage() public BlockDoubleFoliage()
{ {
super(); super();
this.setDefaultState( this.blockState.getBaseState().withProperty(HALF, Half.LOWER) .withProperty(VARIANT, FoliageType.FLAX) );
// define named states
for(FoliageType foliageType : FoliageType.values())
{
this.namedStates.put(foliageType.getName(), this.blockState.getBaseState().withProperty(HALF, Half.LOWER) .withProperty(VARIANT, foliageType));
}
this.setDefaultState(this.getNamedState("flax"));
} }
// map from state to meta and vice verca - use highest bit for Half, and lower bits for variant // map from state to meta and vice verca - use highest bit for Half, and lower bits for variant

View file

@ -8,13 +8,11 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -34,13 +32,12 @@ import biomesoplenty.common.item.ItemBOPBlock;
public class BlockFlesh extends Block implements IBOPBlock public class BlockFlesh extends Block implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;} public IProperty[] getRenderProperties() { return new IProperty[] {}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
public BlockFlesh() { public BlockFlesh() {
super(Material.sponge); super(Material.sponge);

View file

@ -52,18 +52,20 @@ public class BlockFoliage extends BlockDecoration implements IShearable
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((FoliageType) state.getValue(VARIANT)).getName();
}
public BlockFoliage() public BlockFoliage()
{ {
super(); super();
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, FoliageType.SHORTGRASS) );
// define named states
for(FoliageType foliageType : FoliageType.values())
{
this.namedStates.put(foliageType.getName(), this.blockState.getBaseState().withProperty(VARIANT, foliageType));
}
this.setDefaultState(this.getNamedState("shortgrass"));
} }
// map from state to meta and vice verca // map from state to meta and vice verca

View file

@ -34,21 +34,23 @@ public class BlockFruit extends BlockDecoration
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((FruitType) state.getValue(VARIANT)).getName() + "_block";
}
// constructor // constructor
public BlockFruit() { public BlockFruit() {
// set some defaults // set some defaults
this.setStepSound(Block.soundTypeGrass); this.setStepSound(Block.soundTypeGrass);
this.setBlockBoundsByRadiusAndHeight(0.25F, 0.25F, true); this.setBlockBoundsByRadiusAndHeight(0.25F, 0.25F, true);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, FruitType.APPLE) );
// define named states
this.namedStates.put("apple_block", this.blockState.getBaseState().withProperty(VARIANT, FruitType.APPLE));
this.namedStates.put("persimmon_block", this.blockState.getBaseState().withProperty(VARIANT, FruitType.PERSIMMON));
this.namedStates.put("peach_block", this.blockState.getBaseState().withProperty(VARIANT, FruitType.PEACH));
this.namedStates.put("pear_block", this.blockState.getBaseState().withProperty(VARIANT, FruitType.PEAR));
this.setDefaultState(this.namedStates.get("apple_block"));
} }
// map from state to meta and vice verca // map from state to meta and vice verca

View file

@ -8,9 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -31,13 +28,16 @@ public class BlockGem extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((GemType) state.getValue(VARIANT)).getName() + "_block";
}
public BlockGem() public BlockGem()
@ -49,19 +49,7 @@ public class BlockGem extends Block implements IBOPBlock
this.setResistance(10.0F); this.setResistance(10.0F);
this.setStepSound(Block.soundTypeMetal); this.setStepSound(Block.soundTypeMetal);
this.setHarvestLevel("pickaxe", 2); this.setHarvestLevel("pickaxe", 2);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, GemType.AMETHYST) );
// define named states
this.namedStates.put("amethyst_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.AMETHYST) );
this.namedStates.put("ruby_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.RUBY) );
this.namedStates.put("peridot_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.PERIDOT) );
this.namedStates.put("topaz_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.TOPAZ) );
this.namedStates.put("tanzanite_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.TANZANITE) );
this.namedStates.put("malachite_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.MALACHITE) );
this.namedStates.put("sapphire_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.SAPPHIRE) );
this.namedStates.put("amber_block", this.blockState.getBaseState().withProperty(VARIANT, GemType.AMBER) );
this.setDefaultState(this.namedStates.get("amethyst_block"));
} }
// map from state to meta and vice verca // map from state to meta and vice verca

View file

@ -10,14 +10,13 @@ package biomesoplenty.common.block;
import static biomesoplenty.common.block.BlockGem.VARIANT; import static biomesoplenty.common.block.BlockGem.VARIANT;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.api.item.BOPItems; import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockGem.GemType; import biomesoplenty.common.block.BlockGem.GemType;
import biomesoplenty.common.item.ItemBOPBlock; import biomesoplenty.common.item.ItemBOPBlock;
import biomesoplenty.common.util.block.BlockStateUtils;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
@ -33,13 +32,16 @@ public class BlockGemOre extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((GemType) state.getValue(VARIANT)).getName() + "_ore";
}
public BlockGemOre() public BlockGemOre()
@ -50,22 +52,14 @@ public class BlockGemOre extends Block implements IBOPBlock
this.setHardness(3.0F); this.setHardness(3.0F);
this.setResistance(5.0F); this.setResistance(5.0F);
this.setStepSound(Block.soundTypePiston); this.setStepSound(Block.soundTypePiston);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, GemType.AMETHYST) );
// define named states
this.namedStates.put("amethyst_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.AMETHYST) );
this.namedStates.put("ruby_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.RUBY) );
this.namedStates.put("peridot_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.PERIDOT) );
this.namedStates.put("topaz_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.TOPAZ) );
this.namedStates.put("tanzanite_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.TANZANITE) );
this.namedStates.put("malachite_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.MALACHITE) );
this.namedStates.put("sapphire_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.SAPPHIRE) );
this.namedStates.put("amber_ore", this.blockState.getBaseState().withProperty(VARIANT, GemType.AMBER) );
this.setDefaultState(this.namedStates.get("amethyst_ore"));
// all variants need pickaxe:2 to harvest, except amethyst which needs pickaxe:3 // all variants need pickaxe:2 to harvest, except amethyst which needs pickaxe:3
for (IBlockState state : this.namedStates.values()) {this.setHarvestLevel("pickaxe", 2, state);} for (IBlockState state : BlockStateUtils.getBlockPresets(this))
this.setHarvestLevel("pickaxe", 3, this.namedStates.get("amethyst_ore")); {
this.setHarvestLevel("pickaxe", 2, state);
}
this.setHarvestLevel("pickaxe", 3, this.blockState.getBaseState().withProperty(VARIANT, GemType.AMETHYST));
} }

View file

@ -8,8 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -37,13 +35,16 @@ public class BlockHive extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((HiveType) state.getValue(VARIANT)).getName() + "_block";
}
public BlockHive() public BlockHive()
{ {
@ -52,15 +53,7 @@ public class BlockHive extends Block implements IBOPBlock
// set some defaults // set some defaults
this.setHardness(0.5F); this.setHardness(0.5F);
this.setStepSound(Block.soundTypeGrass); this.setStepSound(Block.soundTypeGrass);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, HiveType.HIVE) );
// define named states
this.namedStates.put("hive_block", this.blockState.getBaseState().withProperty(VARIANT, HiveType.HIVE) );
this.namedStates.put("honeycomb_block", this.blockState.getBaseState().withProperty(VARIANT, HiveType.HONEYCOMB) );
this.namedStates.put("empty_honeycomb_block", this.blockState.getBaseState().withProperty(VARIANT, HiveType.EMPTY_HONEYCOMB) );
this.namedStates.put("filled_honeycomb_block", this.blockState.getBaseState().withProperty(VARIANT, HiveType.FILLED_HONEYCOMB) );
this.setDefaultState(this.namedStates.get("hive_block"));
} }
// map from state to meta and vice verca // map from state to meta and vice verca

View file

@ -8,8 +8,6 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -40,15 +38,17 @@ public class BlockMud extends Block implements IBOPBlock
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IDHBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>();
public Map<String, IBlockState> getNamedStates() {return this.namedStates;}
public IBlockState getNamedState(String name) {return this.namedStates.get(name);}
public Class<? extends ItemBlock> getItemClass() {return ItemBOPBlock.class;}
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);}
// implement IBOPBlock
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((MudType) state.getValue(VARIANT)).getName();
}
// constructor
public BlockMud() { public BlockMud() {
super(Material.sand); super(Material.sand);
@ -56,12 +56,7 @@ public class BlockMud extends Block implements IBOPBlock
// set some defaults // set some defaults
this.setHardness(0.6F); this.setHardness(0.6F);
this.setStepSound(Block.soundTypeSand); this.setStepSound(Block.soundTypeSand);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, MudType.MUD) );
// define named states
this.namedStates.put("mud", this.blockState.getBaseState().withProperty(VARIANT, MudType.MUD) );
this.namedStates.put("quicksand", this.blockState.getBaseState().withProperty(VARIANT, MudType.QUICKSAND) );
this.setDefaultState(this.namedStates.get("mud"));
} }

View file

@ -28,19 +28,23 @@ public class BlockStoneFormations extends BlockDecoration
@Override @Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });} protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
public IProperty[] getRenderProperties() { return new IProperty[] {VARIANT}; }
public String getStateName(IBlockState state)
{
return ((StoneFormationType) state.getValue(VARIANT)).getName();
}
// constructor // constructor
public BlockStoneFormations() { public BlockStoneFormations() {
// set some defaults // set some defaults
this.setHardness(0.5F); this.setHardness(0.5F);
this.setStepSound(Block.soundTypePiston); this.setStepSound(Block.soundTypePiston);
this.setDefaultState( this.blockState.getBaseState().withProperty(VARIANT, StoneFormationType.STALAGMITE) );
// define named states
this.namedStates.put("stalactite", this.blockState.getBaseState().withProperty(VARIANT, StoneFormationType.STALACTITE) );
this.namedStates.put("stalagmite", this.blockState.getBaseState().withProperty(VARIANT, StoneFormationType.STALAGMITE) );
this.setDefaultState(this.namedStates.get("stalagmite"));
} }
// map from state to meta and vice verca // map from state to meta and vice verca

View file

@ -8,26 +8,26 @@
package biomesoplenty.common.block; package biomesoplenty.common.block;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.BlockCrops; import net.minecraft.block.BlockCrops;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.api.item.BOPItems; import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.item.ItemBOPBlock;
// TODO: stop snow settling on this (floats above it) // TODO: stop snow settling on this (floats above it)
public class BlockTurnip extends BlockCrops implements IBOPBlock public class BlockTurnip extends BlockCrops implements IBOPBlock
{ {
// implement IDHBlock // implement IBOPBlock
private Map<String, IBlockState> namedStates = new HashMap<String, IBlockState>(); public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
public Map<String, IBlockState> getNamedStates() {return this.namedStates;} public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
public IBlockState getNamedState(String name) {return this.namedStates.get(name);} public IProperty[] getPresetProperties() { return new IProperty[] {}; }
public Class<? extends ItemBlock> getItemClass() {return null;} public IProperty[] getRenderProperties() { return new IProperty[] {AGE}; }
public int getItemRenderColor(IBlockState state, int tintIndex) {return this.getRenderColor(state);} public String getStateName(IBlockState state) {return "";}
@Override @Override

View file

@ -10,7 +10,7 @@ package biomesoplenty.common.init;
import static biomesoplenty.api.block.BOPBlocks.*; import static biomesoplenty.api.block.BOPBlocks.*;
import java.util.Map; import com.google.common.collect.ImmutableSet;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -57,6 +57,7 @@ import biomesoplenty.common.block.BlockStoneFormations;
import biomesoplenty.common.block.BlockTurnip; import biomesoplenty.common.block.BlockTurnip;
import biomesoplenty.common.block.BlockFlesh; import biomesoplenty.common.block.BlockFlesh;
import biomesoplenty.common.handler.GuiEventHandler; import biomesoplenty.common.handler.GuiEventHandler;
import biomesoplenty.common.util.block.BlockStateUtils;
import biomesoplenty.common.util.inventory.CreativeTabBOP; import biomesoplenty.common.util.inventory.CreativeTabBOP;
import biomesoplenty.core.BiomesOPlenty; import biomesoplenty.core.BiomesOPlenty;
@ -282,21 +283,22 @@ public class ModBlocks
if (block instanceof IBOPBlock) if (block instanceof IBOPBlock)
{ {
// if this block supports the IBOPBlock interface then we can use getNamedStates() and getItemClass() // if this block supports the IBOPBlock interface then we can determine the item block class, and sub-blocks automatically
IBOPBlock bopBlock = (IBOPBlock)block; IBOPBlock bopBlock = (IBOPBlock)block;
GameRegistry.registerBlock(block, bopBlock.getItemClass(), blockName); GameRegistry.registerBlock(block, bopBlock.getItemClass(), blockName);
if (bopBlock.getNamedStates().isEmpty()) ImmutableSet<IBlockState> presets = BlockStateUtils.getBlockPresets(bopBlock);
if (presets.isEmpty())
{ {
// block has no named variants to register // block has no sub-blocks to register
registerBlockVariant(block, blockName, block.getMetaFromState(block.getDefaultState())); registerBlockVariant(block, blockName, block.getMetaFromState(block.getDefaultState()));
} }
else else
{ {
// register all the named variants // register all the sub-blocks
for (Map.Entry<String,IBlockState> entry : bopBlock.getNamedStates().entrySet()) for (IBlockState state : presets)
{ {
String stateName = entry.getKey(); String stateName = bopBlock.getStateName(state);
IBlockState state = entry.getValue();
int stateMeta = block.getMetaFromState(state); int stateMeta = block.getMetaFromState(state);
registerBlockVariant(block, stateName, stateMeta); registerBlockVariant(block, stateName, stateMeta);
} }

View file

@ -11,8 +11,12 @@ package biomesoplenty.common.item;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.google.common.collect.ImmutableSet;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.block.BlockBOPGrass; import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.util.block.BlockStateUtils;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@ -46,13 +50,14 @@ public class ItemBOPBlock extends ItemBlock
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void getSubItems(Item itemIn, CreativeTabs tab, List subItems) public void getSubItems(Item itemIn, CreativeTabs tab, List subItems)
{ {
if (bopBlock.getNamedStates().isEmpty()) ImmutableSet<IBlockState> presets = BlockStateUtils.getBlockPresets(bopBlock);
if (presets.isEmpty())
{ {
subItems.add(new ItemStack(this.block, 1, this.block.getMetaFromState( this.block.getDefaultState() ))); subItems.add(new ItemStack(this.block, 1, this.block.getMetaFromState( this.block.getDefaultState() )));
} }
else else
{ {
for (IBlockState state : this.bopBlock.getNamedStates().values()) for (IBlockState state : presets)
{ {
subItems.add(new ItemStack(this.block, 1, this.block.getMetaFromState(state))); subItems.add(new ItemStack(this.block, 1, this.block.getMetaFromState(state)));
} }
@ -75,17 +80,18 @@ public class ItemBOPBlock extends ItemBlock
@Override @Override
public String getUnlocalizedName(ItemStack stack) public String getUnlocalizedName(ItemStack stack)
{ {
if (bopBlock.getNamedStates().isEmpty()) ImmutableSet<IBlockState> presets = BlockStateUtils.getBlockPresets(bopBlock);
if (presets.isEmpty())
{ {
return super.getUnlocalizedName(); return super.getUnlocalizedName();
} }
else else
{ {
int meta = stack.getMetadata(); int meta = stack.getMetadata();
for (Map.Entry<String,IBlockState> entry : bopBlock.getNamedStates().entrySet()) { for (IBlockState state : presets) {
if (block.getMetaFromState(entry.getValue()) == meta) if (block.getMetaFromState(state) == meta)
{ {
return super.getUnlocalizedName() + "." + entry.getKey(); return super.getUnlocalizedName() + "." + bopBlock.getStateName(state);
} }
} }
return super.getUnlocalizedName() + "." + meta; return super.getUnlocalizedName() + "." + meta;

View file

@ -11,11 +11,15 @@ package biomesoplenty.common.util.block;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.Stack;
import java.util.Map.Entry; import java.util.Map.Entry;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBOPBlock;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
@ -42,6 +46,81 @@ public class BlockStateUtils
} }
public static ImmutableSet<IBlockState> getBlockPresets(IBOPBlock block)
{
return getStatesSet(block.getDefaultState(), block.getPresetProperties());
}
public static ImmutableSet<IBlockState> getBlockRenderStates(IBOPBlock block)
{
return getStatesSet(block.getDefaultState(), block.getRenderProperties());
}
public static ImmutableSet<IBlockState> getStatesSet(IBlockState baseState, IProperty... properties)
{
Stack<IProperty> propStack = new Stack<IProperty>();
List<IBlockState> states = new ArrayList<IBlockState>();
for (IProperty prop : properties) {propStack.push(prop);}
if (!propStack.isEmpty())
{
AddStatesToList(baseState, states, propStack);
}
ImmutableSet<IBlockState> ret = ImmutableSet.copyOf(states);
return ret;
}
private static void AddStatesToList(IBlockState state, List<IBlockState> list, Stack<IProperty> stack)
{
if (stack.empty())
{
list.add(state);
return;
}
else
{
IProperty prop = stack.pop();
for (Object value : prop.getAllowedValues())
{
AddStatesToList(state.withProperty(prop, (Comparable)value), list, stack);
}
stack.push(prop);
}
}
/*
public static Map<String,IBlockState> getStatesSetNamed(IBlockState baseState, IProperty... properties)
{
Stack<IProperty> propStack = new Stack<IProperty>();
Map<String,IBlockState> states = new HashMap<String, IBlockState>();
for (IProperty prop : properties) {propStack.push(prop);}
AddStatesToMap(baseState, states, propStack);
return states;
}
private static void AddStatesToMap(IBlockState state, Map<String, IBlockState> map, Stack<IProperty> stack)
{
if (stack.empty())
{
map.put(state.getBlock().getStateName(state), state);
return;
}
else
{
IProperty prop = stack.pop();
for (Object value : prop.getAllowedValues())
{
AddStatesToMap(state.withProperty(prop, (Comparable)value), map, stack);
}
stack.push(prop);
}
}
*/
public static IProperty getPropertyByName(IBlockState blockState, String propertyName) public static IProperty getPropertyByName(IBlockState blockState, String propertyName)
{ {
for (IProperty property : (ImmutableSet<IProperty>) blockState.getProperties().keySet()) for (IProperty property : (ImmutableSet<IProperty>) blockState.getProperties().keySet())
@ -53,6 +132,7 @@ public class BlockStateUtils
return null; return null;
} }
public static boolean isValidPropertyName(IBlockState blockState, String propertyName) public static boolean isValidPropertyName(IBlockState blockState, String propertyName)
{ {
return getPropertyByName(blockState, propertyName) != null; return getPropertyByName(blockState, propertyName) != null;
@ -199,4 +279,5 @@ public class BlockStateUtils
return validValues.get(counter); return validValues.get(counter);
} }
} }
} }