From b45172294d3131da569a0031addb55aa7c90f110 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 30 Oct 2015 21:20:23 -0700 Subject: [PATCH] JSON models hurt my head --- .../block/BlockRitualHome.java | 68 ++++++++++++++++++ .../item/block/ItemBlockRitualHome.java | 25 +++++++ .../registry/ModBlocks.java | 11 +++ .../util/helper/InventoryRenderHelper.java | 4 ++ .../blockstates/BlockRitualHome.json | 24 +++++++ ...{MasterStone.png => MasterRitualStone.png} | Bin 6 files changed, 132 insertions(+) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/block/BlockRitualHome.java create mode 100644 src/main/java/WayofTime/alchemicalWizardry/item/block/ItemBlockRitualHome.java create mode 100644 src/main/resources/assets/alchemicalwizardry/blockstates/BlockRitualHome.json rename src/main/resources/assets/alchemicalwizardry/textures/blocks/{MasterStone.png => MasterRitualStone.png} (100%) diff --git a/src/main/java/WayofTime/alchemicalWizardry/block/BlockRitualHome.java b/src/main/java/WayofTime/alchemicalWizardry/block/BlockRitualHome.java new file mode 100644 index 00000000..3da1bc81 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/block/BlockRitualHome.java @@ -0,0 +1,68 @@ +package WayofTime.alchemicalWizardry.block; + +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.List; + +public class BlockRitualHome extends Block { + + public static final String[] names = { "master", "imperfect" }; + public static final PropertyInteger META = PropertyInteger.create("meta", 0, names.length - 1); + + public BlockRitualHome() { + super(Material.rock); + + setUnlocalizedName(AlchemicalWizardry.MODID + ".stone.ritual."); + setCreativeTab(AlchemicalWizardry.tabBloodMagic); + setStepSound(soundTypeStone); + setHardness(2.0F); + setHarvestLevel("pickaxe", 2); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for (int i = 0; i < names.length; i++) + list.add(new ItemStack(this, 1, i)); + } + + @Override + public IBlockState getStateFromMeta(int meta) { + return this.getDefaultState().withProperty(META, meta); + } + + @Override + public int getMetaFromState(IBlockState state) { + return (Integer) state.getValue(META); + } + + @Override + public int damageDropped(IBlockState state) { + return getMetaFromState(state); + } + + @Override + protected BlockState createBlockState() { + return new BlockState(this, META); + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { + return new ItemStack(this, 1, this.getMetaFromState(world.getBlockState(pos))); + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/item/block/ItemBlockRitualHome.java b/src/main/java/WayofTime/alchemicalWizardry/item/block/ItemBlockRitualHome.java new file mode 100644 index 00000000..cea2b12a --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/item/block/ItemBlockRitualHome.java @@ -0,0 +1,25 @@ +package WayofTime.alchemicalWizardry.item.block; + +import WayofTime.alchemicalWizardry.block.BlockRitualHome; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemBlockRitualHome extends ItemBlock { + + public ItemBlockRitualHome(Block block) { + super(block); + + setHasSubtypes(true); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + BlockRitualHome.names[stack.getItemDamage()]; + } + + @Override + public int getMetadata(int meta) { + return meta; + } +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/registry/ModBlocks.java b/src/main/java/WayofTime/alchemicalWizardry/registry/ModBlocks.java index adbec31b..cd44c943 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/registry/ModBlocks.java +++ b/src/main/java/WayofTime/alchemicalWizardry/registry/ModBlocks.java @@ -4,6 +4,8 @@ import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.ConfigHandler; import WayofTime.alchemicalWizardry.block.BlockAltar; import WayofTime.alchemicalWizardry.block.BlockLifeEssence; +import WayofTime.alchemicalWizardry.block.BlockRitualHome; +import WayofTime.alchemicalWizardry.item.block.ItemBlockRitualHome; import WayofTime.alchemicalWizardry.util.helper.InventoryRenderHelper; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; @@ -13,6 +15,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry; public class ModBlocks { public static Block altar; + public static Block ritualStone; public static Block lifeEssence; @@ -23,7 +26,9 @@ public class ModBlocks { public static void init() { FluidRegistry.registerFluid(BlockLifeEssence.getLifeEssence()); lifeEssence = registerBlock(new BlockLifeEssence()); + altar = registerBlock(new BlockAltar()); + ritualStone = registerBlock(new BlockRitualHome(), ItemBlockRitualHome.class); initTiles(); } @@ -36,6 +41,8 @@ public class ModBlocks { InventoryRenderHelper renderHelper = AlchemicalWizardry.instance.getRenderHelper(); renderHelper.fluidRender(lifeEssence); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 0); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 1); } private static Block registerBlock(Block block, Class itemBlock, String name) { @@ -45,6 +52,10 @@ public class ModBlocks { return block; } + private static Block registerBlock(Block block, Class itemBlock) { + return registerBlock(block, itemBlock, block.getClass().getSimpleName()); + } + private static Block registerBlock(Block block, String name) { if (!ConfigHandler.blockBlacklist.contains(name)) GameRegistry.registerBlock(block, name); diff --git a/src/main/java/WayofTime/alchemicalWizardry/util/helper/InventoryRenderHelper.java b/src/main/java/WayofTime/alchemicalWizardry/util/helper/InventoryRenderHelper.java index 310ebf3c..98d129e0 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/util/helper/InventoryRenderHelper.java +++ b/src/main/java/WayofTime/alchemicalWizardry/util/helper/InventoryRenderHelper.java @@ -64,6 +64,10 @@ public class InventoryRenderHelper { itemRender(item, meta, item.getClass().getSimpleName() + meta); } + public void itemRender(Item item, String name) { + itemRender(item, 0, name); + } + /** * Shorthand of {@code itemRender(Item, int)} * diff --git a/src/main/resources/assets/alchemicalwizardry/blockstates/BlockRitualHome.json b/src/main/resources/assets/alchemicalwizardry/blockstates/BlockRitualHome.json new file mode 100644 index 00000000..a68e4d31 --- /dev/null +++ b/src/main/resources/assets/alchemicalwizardry/blockstates/BlockRitualHome.json @@ -0,0 +1,24 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": { + "all": "alchemicalwizardry:blocks/MasterRitualStone" + }, + "model": "cube_all", + "uvlock": true + }, + "variants": { + "meta": { + 0: { + "textures": { + "all": "alchemicalwizardry:blocks/MasterRitualStone" + } + }, + 1: { + "textures": { + "all": "alchemicalwizardry:blocks/ImperfectRitualStone" + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/alchemicalwizardry/textures/blocks/MasterStone.png b/src/main/resources/assets/alchemicalwizardry/textures/blocks/MasterRitualStone.png similarity index 100% rename from src/main/resources/assets/alchemicalwizardry/textures/blocks/MasterStone.png rename to src/main/resources/assets/alchemicalwizardry/textures/blocks/MasterRitualStone.png