diff --git a/src/main/java/forestry/core/IItemTyped.java b/src/main/java/forestry/core/IItemTyped.java new file mode 100644 index 000000000..c53101f1c --- /dev/null +++ b/src/main/java/forestry/core/IItemTyped.java @@ -0,0 +1,5 @@ +package forestry.core; + +public interface IItemTyped { + public Enum getTypeFromMeta(int meta); +} diff --git a/src/main/java/forestry/core/gadgets/BlockSoil.java b/src/main/java/forestry/core/gadgets/BlockSoil.java index 0fba88efc..e7cf3721e 100755 --- a/src/main/java/forestry/core/gadgets/BlockSoil.java +++ b/src/main/java/forestry/core/gadgets/BlockSoil.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import forestry.core.IItemTyped; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -45,7 +46,7 @@ import forestry.core.render.TextureManager; * @author * */ -public class BlockSoil extends Block { +public class BlockSoil extends Block implements IItemTyped { public enum SoilType { HUMUS, BOG_EARTH, PEAT; @@ -222,7 +223,7 @@ public class BlockSoil extends Block { return false; } - public static SoilType getTypeFromMeta(int meta) { + public SoilType getTypeFromMeta(int meta) { int type = meta & 0x03; int maturity = meta >> 2; diff --git a/src/main/java/forestry/core/items/ItemSoilBlock.java b/src/main/java/forestry/core/items/ItemSoilBlock.java deleted file mode 100644 index e4f5f50d1..000000000 --- a/src/main/java/forestry/core/items/ItemSoilBlock.java +++ /dev/null @@ -1,21 +0,0 @@ -package forestry.core.items; - -import forestry.core.gadgets.BlockSoil; -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; - -public class ItemSoilBlock extends ItemForestryBlock { - - public ItemSoilBlock(Block block) { - super(block); - } - - @Override - public String getUnlocalizedName(ItemStack itemstack) { - if (this.getBlock() instanceof BlockSoil) { - BlockSoil.SoilType soilType = BlockSoil.getTypeFromMeta(itemstack.getItemDamage()); - return getBlock().getUnlocalizedName() + "." + soilType.ordinal(); - } - return super.getUnlocalizedName(itemstack); - } -} diff --git a/src/main/java/forestry/core/items/ItemTypedBlock.java b/src/main/java/forestry/core/items/ItemTypedBlock.java new file mode 100644 index 000000000..556ee28b5 --- /dev/null +++ b/src/main/java/forestry/core/items/ItemTypedBlock.java @@ -0,0 +1,30 @@ +package forestry.core.items; + +import forestry.core.IItemTyped; +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; + +/** + * For blocks whose type depends on metadata. + * This allows control over which localized name maps to which meta value. + */ +public class ItemTypedBlock extends ItemForestryBlock { + + public ItemTypedBlock(Block block) { + super(block); + } + + @Override + public String getUnlocalizedName(ItemStack itemstack) { + Block block = getBlock(); + if (block instanceof IItemTyped) { + IItemTyped blockTyped = (IItemTyped)block; + Enum type = blockTyped.getTypeFromMeta(itemstack.getItemDamage()); + if (type != null) + return getBlock().getUnlocalizedName() + "." + type.ordinal(); + else + return null; + } + return super.getUnlocalizedName(itemstack); + } +} diff --git a/src/main/java/forestry/plugins/PluginCore.java b/src/main/java/forestry/plugins/PluginCore.java index e48d8e6ac..d1ede8490 100755 --- a/src/main/java/forestry/plugins/PluginCore.java +++ b/src/main/java/forestry/plugins/PluginCore.java @@ -64,7 +64,7 @@ import forestry.core.items.ItemAssemblyKit; import forestry.core.items.ItemCrated; import forestry.core.items.ItemForestry; import forestry.core.items.ItemForestryBlock; -import forestry.core.items.ItemSoilBlock; +import forestry.core.items.ItemTypedBlock; import forestry.core.items.ItemForestryPickaxe; import forestry.core.items.ItemForestryShovel; import forestry.core.items.ItemFruit; @@ -112,7 +112,7 @@ public class PluginCore extends NativePlugin implements IFuelHandler { definitionEscritoire = ((BlockBase) ForestryBlock.core.block()).addDefinition(new MachineDefinition(Defaults.DEFINITION_ESCRITOIRE_META, "forestry.Escritoire", TileEscritoire.class, Proxies.render.getRenderEscritoire())); - ForestryBlock.soil.registerBlock(new BlockSoil(), ItemSoilBlock.class, "soil"); + ForestryBlock.soil.registerBlock(new BlockSoil(), ItemTypedBlock.class, "soil"); ForestryBlock.soil.block().setHarvestLevel("shovel", 0, 0); ForestryBlock.soil.block().setHarvestLevel("shovel", 0, 1);