From 8f623de4690e70f615407db839fee9edd56dd202 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 6 Nov 2015 17:26:38 -0500 Subject: [PATCH 1/2] Created test block which is coupled to the Default Spell Modifier .json model. The model has three submodels: the core, the output, and the input. --- .../bloodmagic/block/BlockTestSpellBlock.java | 67 +++++++ .../bloodmagic/registry/ModBlocks.java | 11 +- .../blockstates/BlockTestSpellBlock.json | 29 +++ .../block/sub/BlockSpellModifierCore.json | 19 ++ .../block/sub/BlockSpellModifierInput.json | 176 ++++++++++++++++++ .../block/sub/BlockSpellModifierOutput.json | 67 +++++++ .../textures/models/SpellModifierDefault.png | Bin 1193 -> 1193 bytes 7 files changed, 365 insertions(+), 4 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/block/BlockTestSpellBlock.java create mode 100644 src/main/resources/assets/bloodmagic/blockstates/BlockTestSpellBlock.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierCore.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierInput.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierOutput.json diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockTestSpellBlock.java b/src/main/java/WayofTime/bloodmagic/block/BlockTestSpellBlock.java new file mode 100644 index 00000000..cefd5f05 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/block/BlockTestSpellBlock.java @@ -0,0 +1,67 @@ +package WayofTime.bloodmagic.block; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.IBlockAccess; +import WayofTime.bloodmagic.BloodMagic; + +public class BlockTestSpellBlock extends Block { + public static final PropertyDirection INPUT = PropertyDirection + .create("input"); + public static final PropertyDirection OUTPUT = PropertyDirection + .create("output"); + + public BlockTestSpellBlock() { + super(Material.rock); + setHardness(2.0F); + setResistance(5.0F); + + setUnlocalizedName(BloodMagic.MODID + ".testSpellBlock"); + setCreativeTab(BloodMagic.tabBloodMagic); + this.setDefaultState(this.blockState.getBaseState() + .withProperty(INPUT, EnumFacing.DOWN) + .withProperty(OUTPUT, EnumFacing.UP)); + } + + @Override + public IBlockState getStateFromMeta(int meta) { + return this.getDefaultState(); + } + + @Override + public int getMetaFromState(IBlockState state) { + return 0; + } + + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) { + return state.withProperty(INPUT, EnumFacing.DOWN) + .withProperty(OUTPUT, EnumFacing.UP); + } + + @Override + protected BlockState createBlockState() { + return new BlockState(this, new IProperty[] { INPUT, OUTPUT }); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean isFullCube() { + return false; + } + + @Override + public boolean isPassable(IBlockAccess blockAccess, BlockPos pos) { + return false; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java b/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java index 8e52f16f..8837990e 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java @@ -1,27 +1,29 @@ package WayofTime.bloodmagic.registry; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fml.common.registry.GameRegistry; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.block.BlockAltar; import WayofTime.bloodmagic.block.BlockBloodRune; import WayofTime.bloodmagic.block.BlockLifeEssence; import WayofTime.bloodmagic.block.BlockRitualController; +import WayofTime.bloodmagic.block.BlockTestSpellBlock; import WayofTime.bloodmagic.item.block.ItemBlockBloodRune; import WayofTime.bloodmagic.item.block.ItemBlockRitualController; import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.tile.TileImperfectRitualStone; import WayofTime.bloodmagic.tile.TileMasterRitualStone; import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fml.common.registry.GameRegistry; public class ModBlocks { public static Block altar; public static Block bloodRune; public static Block ritualStone; + public static Block testSpellBlock; public static Block lifeEssence; @@ -36,6 +38,7 @@ public class ModBlocks altar = registerBlock(new BlockAltar()); bloodRune = registerBlock(new BlockBloodRune(), ItemBlockBloodRune.class); ritualStone = registerBlock(new BlockRitualController(), ItemBlockRitualController.class); + testSpellBlock = registerBlock(new BlockTestSpellBlock()); initTiles(); } diff --git a/src/main/resources/assets/bloodmagic/blockstates/BlockTestSpellBlock.json b/src/main/resources/assets/bloodmagic/blockstates/BlockTestSpellBlock.json new file mode 100644 index 00000000..8bdc9a94 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/blockstates/BlockTestSpellBlock.json @@ -0,0 +1,29 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "bloodmagic:sub/BlockSpellModifierCore", + "textures": { + "model": "bloodmagic:models/SpellModifierDefault" + }, + + "uvlock": false + }, + "variants": { + "input": { + "up": {"submodel": "bloodmagic:sub/BlockSpellModifierInput", "x": 90}, + "down": {"submodel": "bloodmagic:sub/BlockSpellModifierInput", "x": -90}, + "east": {"submodel": "bloodmagic:sub/BlockSpellModifierInput", "y": -90}, + "west": {"submodel": "bloodmagic:sub/BlockSpellModifierInput", "y": 90}, + "north": {"submodel": "bloodmagic:sub/BlockSpellModifierInput", "y": 180}, + "south": {"submodel": "bloodmagic:sub/BlockSpellModifierInput"} + }, + "output": { + "up": {"submodel": "bloodmagic:sub/BlockSpellModifierOutput", "transform": {"rotation": {"z": 90}} }, + "down": {"submodel": "bloodmagic:sub/BlockSpellModifierOutput", "transform": {"rotation": {"z": -90}} }, + "west": {"submodel": "bloodmagic:sub/BlockSpellModifierOutput", "y": 180}, + "east": {"submodel": "bloodmagic:sub/BlockSpellModifierOutput"}, + "north": {"submodel": "bloodmagic:sub/BlockSpellModifierOutput", "y": -90}, + "south": {"submodel": "bloodmagic:sub/BlockSpellModifierOutput", "y": 90} + } + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierCore.json b/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierCore.json new file mode 100644 index 00000000..53852b6a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierCore.json @@ -0,0 +1,19 @@ +{ + "textures": { + "particle": "#model" + }, + "elements": [ + { "from": [ 5, 5, 5 ], + "to": [ 11, 11, 11 ], + "faces": { + "down": { "uv": [ 3, 0, 4.5, 1.5 ], "texture": "#model" }, + "up": { "uv": [ 1.5, 0, 3, 1.5 ], "texture": "#model" }, + "north": { "uv": [ 1.5, 1.5, 3, 3 ], "texture": "#model" }, + "south": { "uv": [ 4.5, 1.5, 6, 3 ], "texture": "#model" }, + "west": { "uv": [ 3, 1.5, 4.5, 3 ], "texture": "#model" }, + "east": { "uv": [ 0, 1.5, 1.5, 3 ], "texture": "#model" } + }, + "__comment": "This is the core of the model" + } + ] +} diff --git a/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierInput.json b/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierInput.json new file mode 100644 index 00000000..c632c397 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierInput.json @@ -0,0 +1,176 @@ +{ + "textures": { + "particle": "#model" + }, + "elements": [ + { + "from": [ 6, 13, 6 ], + "to": [ 10, 14, 10 ], + "faces": { + "down": { "uv": [ 5.75, 9, 6.75, 8 ], "texture": "#model" }, + "up": { "uv": [ 4.75, 8, 5.75, 9 ], "texture": "#model" }, + "north": { "uv": [ 6.75, 9, 7.75, 9.25 ], "texture": "#model" }, + "south": { "uv": [ 4.75, 9, 5.75, 9.25 ], "texture": "#model" }, + "west": { "uv": [ 3.75, 9, 4.75, 9.25 ], "texture": "#model" }, + "east": { "uv": [ 5.75, 9, 6.75, 9.25 ], "texture": "#model" } + }, + "__comment": "Top symbol" + }, + { + "from": [ 6, 2, 6 ], + "to": [ 10, 3, 10 ], + "faces": { + "down": { "uv": [ 5.75, 10.75, 6.75, 9.75 ], "texture": "#model" }, + "up": { "uv": [ 4.75, 9.75, 5.75, 10.75 ], "texture": "#model" }, + "north": { "uv": [ 6.75, 10.75, 7.75, 11 ], "texture": "#model" }, + "south": { "uv": [ 4.75, 10.75, 5.75, 11 ], "texture": "#model" }, + "west": { "uv": [ 3.75, 10.75, 4.75, 11 ], "texture": "#model" }, + "east": { "uv": [ 5.75, 10.75, 6.75, 11 ], "texture": "#model" } + }, + "__comment": "Bottom symbol" + }, + { + "from": [ 2, 6, 6 ], + "to": [ 3, 10, 10 ], + "faces": { + "down": { "uv": [ 4.5, 12.5, 4.75, 11.5 ], "texture": "#model" }, + "up": { "uv": [ 4.25, 11.5, 4.5, 12.5 ], "texture": "#model" }, + "north": { "uv": [ 5.5, 12.5, 5.75, 13.5 ], "texture": "#model" }, + "south": { "uv": [ 4.25, 12.5, 4.5, 13.5 ], "texture": "#model" }, + "west": { "uv": [ 3.25, 12.5, 4.25, 13.5 ], "texture": "#model" }, + "east": { "uv": [ 4.5, 12.5, 5.5, 13.5 ], "texture": "#model" } + }, + "__comment": "Left symbol" + }, + { + "from": [ 13, 6, 6 ], + "to": [ 14, 10, 10 ], + "faces": { + "down": { "uv": [ 4.5, 15, 4.75, 14 ], "texture": "#model" }, + "up": { "uv": [ 4.25, 14, 4.5, 15 ], "texture": "#model" }, + "north": { "uv": [ 5.5, 15, 5.75, 16 ], "texture": "#model" }, + "south": { "uv": [ 4.25, 15, 4.5, 16 ], "texture": "#model" }, + "west": { "uv": [ 3.25, 15, 4.25, 16 ], "texture": "#model" }, + "east": { "uv": [ 4.5, 15, 5.5, 16 ], "texture": "#model" } + }, + "__comment": "Right symbol" + }, + { + "from": [ 7, 13, 10 ], + "to": [ 9, 14, 15 ], + "faces": { + "down": { "uv": [ 1.75, 9.25, 2.25, 8 ], "texture": "#model" }, + "up": { "uv": [ 1.25, 8, 1.75, 9.25 ], "texture": "#model" }, + "north": { "uv": [ 3, 9.25, 3.5, 9.5 ], "texture": "#model" }, + "south": { "uv": [ 1.25, 9.25, 1.75, 9.5 ], "texture": "#model" }, + "west": { "uv": [ 0, 9.25, 1.25, 9.5 ], "texture": "#model" }, + "east": { "uv": [ 1.75, 9.25, 3, 9.5 ], "texture": "#model" } + }, + "__comment": "Top holding bar" + }, + { + "from": [ 7, 2, 10 ], + "to": [ 9, 3, 15 ], + "faces": { + "down": { "uv": [ 1.75, 11, 2.25, 9.75 ], "texture": "#model" }, + "up": { "uv": [ 1.25, 9.75, 1.75, 11 ], "texture": "#model" }, + "north": { "uv": [ 3, 11, 3.5, 11.25 ], "texture": "#model" }, + "south": { "uv": [ 1.25, 11, 1.75, 11.25 ], "texture": "#model" }, + "west": { "uv": [ 0, 11, 1.25, 11.25 ], "texture": "#model" }, + "east": { "uv": [ 1.75, 11, 3, 11.25 ], "texture": "#model" } + }, + "__comment": "Bottom holding bar" + }, + { + "from": [ 2, 7, 10 ], + "to": [ 3, 9, 15 ], + "faces": { + "down": { "uv": [ 1.5, 15.25, 1.75, 14 ], "texture": "#model" }, + "up": { "uv": [ 1.25, 14, 1.5, 15.25 ], "texture": "#model" }, + "north": { "uv": [ 2.75, 15.25, 3, 15.75 ], "texture": "#model" }, + "south": { "uv": [ 1.25, 15.25, 1.5, 15.75 ], "texture": "#model" }, + "west": { "uv": [ 0, 15.25, 1.25, 15.75 ], "texture": "#model" }, + "east": { "uv": [ 1.5, 15.25, 2.75, 15.75 ], "texture": "#model" } + }, + "__comment": "Left holding bar" + }, + { + "from": [ 13, 7, 10 ], + "to": [ 14, 9, 15 ], + "faces": { + "down": { "uv": [ 1.5, 12.75, 1.75, 11.5 ], "texture": "#model" }, + "up": { "uv": [ 1.25, 11.5, 1.5, 12.75 ], "texture": "#model" }, + "north": { "uv": [ 2.75, 12.75, 3, 13.25 ], "texture": "#model" }, + "south": { "uv": [ 1.25, 12.75, 1.5, 13.25 ], "texture": "#model" }, + "west": { "uv": [ 0, 12.75, 1.25, 13.25 ], "texture": "#model" }, + "east": { "uv": [ 1.5, 12.75, 2.75, 13.25 ], "texture": "#model" } + }, + "__comment": "Right holding bar" + }, + { + "from": [ 6, 6, 15 ], + "to": [ 10, 10, 16 ], + "faces": { + "down": { "uv": [ 7.5, 4.75, 8.5, 4.5 ], "texture": "#model" }, + "up": { "uv": [ 6.5, 4.5, 7.5, 4.75 ], "texture": "#model" }, + "north": { "uv": [ 7.75, 4.75, 8.75, 5.75 ], "texture": "#model" }, + "south": { "uv": [ 6.5, 4.75, 7.5, 5.75 ], "texture": "#model" }, + "west": { "uv": [ 6.25, 4.75, 6.5, 5.75 ], "texture": "#model" }, + "east": { "uv": [ 7.5, 4.75, 7.75, 5.75 ], "texture": "#model" } + }, + "__comment": "Central point" + }, + { + "from": [ 3, 11, 14 ], + "to": [ 13, 13, 16 ], + "faces": { + "down": { "uv": [ 3, 3.75, 5.5, 3.25 ], "texture": "#model" }, + "up": { "uv": [ 0.5, 3.25, 3, 3.75 ], "texture": "#model" }, + "north": { "uv": [ 3.5, 3.75, 6, 4.25 ], "texture": "#model" }, + "south": { "uv": [ 0.5, 3.75, 3, 4.25 ], "texture": "#model" }, + "west": { "uv": [ 0, 3.75, 0.5, 4.25 ], "texture": "#model" }, + "east": { "uv": [ 3, 3.75, 3.5, 4.25 ], "texture": "#model" } + }, + "__comment": "Top main brace" + }, + { + "from": [ 3, 3, 14 ], + "to": [ 13, 5, 16 ], + "faces": { + "down": { "uv": [ 3, 7.25, 5.5, 6.75 ], "texture": "#model" }, + "up": { "uv": [ 0.5, 6.75, 3, 7.25 ], "texture": "#model" }, + "north": { "uv": [ 3.5, 7.25, 6, 7.75 ], "texture": "#model" }, + "south": { "uv": [ 0.5, 7.25, 3, 7.75 ], "texture": "#model" }, + "west": { "uv": [ 0, 7.25, 0.5, 7.75 ], "texture": "#model" }, + "east": { "uv": [ 3, 7.25, 3.5, 7.75 ], "texture": "#model" } + }, + "__comment": "Bottom main brace" + }, + { + "from": [ 3, 5, 14 ], + "to": [ 5, 11, 16 ], + "faces": { + "down": { "uv": [ 1, 5, 1.5, 4.5 ], "texture": "#model" }, + "up": { "uv": [ 0.5, 4.5, 1, 5 ], "texture": "#model" }, + "north": { "uv": [ 1.5, 5, 2, 6.5 ], "texture": "#model" }, + "south": { "uv": [ 0.5, 5, 1, 6.5 ], "texture": "#model" }, + "west": { "uv": [ 0, 5, 0.5, 6.5 ], "texture": "#model" }, + "east": { "uv": [ 1, 5, 1.5, 6.5 ], "texture": "#model" } + }, + "__comment": "Left main brace" + }, + { + "from": [ 11, 5, 14 ], + "to": [ 13, 11, 16 ], + "faces": { + "down": { "uv": [ 5, 5, 5.5, 4.5 ], "texture": "#model" }, + "up": { "uv": [ 4.5, 4.5, 5, 5 ], "texture": "#model" }, + "north": { "uv": [ 5.5, 5, 6, 6.5 ], "texture": "#model" }, + "south": { "uv": [ 4.5, 5, 5, 6.5 ], "texture": "#model" }, + "west": { "uv": [ 4, 5, 4.5, 6.5 ], "texture": "#model" }, + "east": { "uv": [ 5, 5, 5.5, 6.5 ], "texture": "#model" } + }, + "__comment": "Right main brace" + } + ] +} diff --git a/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierOutput.json b/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierOutput.json new file mode 100644 index 00000000..b08bbd47 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/sub/BlockSpellModifierOutput.json @@ -0,0 +1,67 @@ +{ + "textures": { + "particle": "#model" + }, + "elements": [ + { + "from": [ 15, 6, 6 ], + "to": [ 16, 10, 10 ], + "faces": { + "down": { "uv": [ 14, 5.75, 14.25, 6.75 ], "texture": "#model" }, + "up": { "uv": [ 13.75, 5.75, 14, 6.75 ], "texture": "#model" }, + "north": { "uv": [ 15, 6.75, 15.25, 7.75 ], "texture": "#model" }, + "south": { "uv": [ 13.75, 6.75, 14, 7.75 ], "texture": "#model" }, + "west": { "uv": [ 12.75, 6.75, 13.75, 7.75 ], "texture": "#model" }, + "east": { "uv": [ 14, 6.75, 15, 7.75 ], "texture": "#model" } + } + }, + { + "from": [ 13, 3, 3 ], + "to": [ 16, 5, 5 ], + "faces": { + "down": { "uv": [ 14, 4.5, 14.75, 5 ], "texture": "#model" }, + "up": { "uv": [ 13.25, 4.5, 14, 5 ], "texture": "#model" }, + "north": { "uv": [ 14.5, 5, 15.25, 5.5 ], "texture": "#model" }, + "south": { "uv": [ 13.25, 5, 14, 5.5 ], "texture": "#model" }, + "west": { "uv": [ 12.75, 5, 13.25, 5.5 ], "texture": "#model" }, + "east": { "uv": [ 14, 5, 14.5, 5.5 ], "texture": "#model" } + } + }, + { + "from": [ 13, 11, 3 ], + "to": [ 16, 13, 5 ], + "faces": { + "down": { "uv": [ 14, 4.5, 14.75, 5 ], "texture": "#model" }, + "up": { "uv": [ 13.25, 4.5, 14, 5 ], "texture": "#model" }, + "north": { "uv": [ 14.5, 5, 15.25, 5.5 ], "texture": "#model" }, + "south": { "uv": [ 13.25, 5, 14, 5.5 ], "texture": "#model" }, + "west": { "uv": [ 12.75, 5, 13.25, 5.5 ], "texture": "#model" }, + "east": { "uv": [ 14, 5, 14.5, 5.5 ], "texture": "#model" } + } + }, + { + "from": [ 13, 3, 11 ], + "to": [ 16, 5, 13 ], + "faces": { + "down": { "uv": [ 14, 4.5, 14.75, 5 ], "texture": "#model" }, + "up": { "uv": [ 13.25, 4.5, 14, 5 ], "texture": "#model" }, + "north": { "uv": [ 14.5, 5, 15.25, 5.5 ], "texture": "#model" }, + "south": { "uv": [ 13.25, 5, 14, 5.5 ], "texture": "#model" }, + "west": { "uv": [ 12.75, 5, 13.25, 5.5 ], "texture": "#model" }, + "east": { "uv": [ 14, 5, 14.5, 5.5 ], "texture": "#model" } + } + }, + { + "from": [ 13, 11, 11 ], + "to": [ 16, 13, 13 ], + "faces": { + "down": { "uv": [ 14, 4.5, 14.75, 5 ], "texture": "#model" }, + "up": { "uv": [ 13.25, 4.5, 14, 5 ], "texture": "#model" }, + "north": { "uv": [ 14.5, 5, 15.25, 5.5 ], "texture": "#model" }, + "south": { "uv": [ 13.25, 5, 14, 5.5 ], "texture": "#model" }, + "west": { "uv": [ 12.75, 5, 13.25, 5.5 ], "texture": "#model" }, + "east": { "uv": [ 14, 5, 14.5, 5.5 ], "texture": "#model" } + } + } + ] +} diff --git a/src/main/resources/assets/bloodmagic/textures/models/SpellModifierDefault.png b/src/main/resources/assets/bloodmagic/textures/models/SpellModifierDefault.png index f72ff9f8b68a33a7c7832535d241de3b10143a23..efd531cf41db8a544f5562330f9aba95ca9805ab 100644 GIT binary patch delta 60 zcmZ3 Date: Fri, 6 Nov 2015 21:41:15 -0500 Subject: [PATCH 2/2] Created the BlockRitualStone and had it implement IRitualStone. Created .json files necessary Created PropertyRuneType. --- .../api/ritual/PropertyRuneType.java | 48 +++++++++++ .../bloodmagic/block/BlockRitualStone.java | 83 +++++++++++++++++++ .../item/block/ItemBlockRitualStone.java | 24 ++++++ .../bloodmagic/registry/ModBlocks.java | 13 ++- .../blockstates/BlockRitualStone.json | 47 +++++++++++ .../models/block/BlockRitualStone0.json | 6 ++ .../models/block/BlockRitualStone1.json | 6 ++ .../models/block/BlockRitualStone2.json | 6 ++ .../models/block/BlockRitualStone3.json | 6 ++ .../models/block/BlockRitualStone4.json | 6 ++ .../models/block/BlockRitualStone5.json | 6 ++ .../models/block/BlockRitualStone6.json | 6 ++ .../models/item/BlockRitualStone0.json | 10 +++ .../models/item/BlockRitualStone1.json | 11 +++ .../models/item/BlockRitualStone2.json | 11 +++ .../models/item/BlockRitualStone3.json | 11 +++ .../models/item/BlockRitualStone4.json | 11 +++ .../models/item/BlockRitualStone5.json | 11 +++ .../models/item/BlockRitualStone6.json | 11 +++ 19 files changed, 332 insertions(+), 1 deletion(-) create mode 100644 src/main/java/WayofTime/bloodmagic/api/ritual/PropertyRuneType.java create mode 100644 src/main/java/WayofTime/bloodmagic/block/BlockRitualStone.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/block/ItemBlockRitualStone.java create mode 100644 src/main/resources/assets/bloodmagic/blockstates/BlockRitualStone.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone0.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone1.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone2.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone3.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone4.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone5.json create mode 100644 src/main/resources/assets/bloodmagic/models/block/BlockRitualStone6.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone0.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone1.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone2.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone3.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone4.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone5.json create mode 100644 src/main/resources/assets/bloodmagic/models/item/BlockRitualStone6.json diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/PropertyRuneType.java b/src/main/java/WayofTime/bloodmagic/api/ritual/PropertyRuneType.java new file mode 100644 index 00000000..02bfb8a2 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/PropertyRuneType.java @@ -0,0 +1,48 @@ +package WayofTime.bloodmagic.api.ritual; + +import java.util.Collection; + +import net.minecraft.block.properties.PropertyEnum; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.Collections2; +import com.google.common.collect.Lists; + +public class PropertyRuneType extends PropertyEnum +{ + protected PropertyRuneType(String name, Collection values) + { + super(name, EnumRuneType.class, values); + } + + /** + * Create a new PropertyRuneType with the given name + */ + public static PropertyRuneType create(String name) + { + /** + * Create a new PropertyRuneType with all directions that match the given Predicate + */ + return create(name, Predicates.alwaysTrue()); + } + + /** + * Create a new PropertyRuneType with all directions that match the given Predicate + */ + public static PropertyRuneType create(String name, Predicate filter) + { + /** + * Create a new PropertyRuneType for the given direction values + */ + return create(name, Collections2.filter(Lists.newArrayList(EnumRuneType.values()), filter)); + } + + /** + * Create a new PropertyRuneType for the given direction values + */ + public static PropertyRuneType create(String name, Collection values) + { + return new PropertyRuneType(name, values); + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockRitualStone.java b/src/main/java/WayofTime/bloodmagic/block/BlockRitualStone.java new file mode 100644 index 00000000..39024568 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/block/BlockRitualStone.java @@ -0,0 +1,83 @@ +package WayofTime.bloodmagic.block; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +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 WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.ritual.EnumRuneType; +import WayofTime.bloodmagic.api.ritual.IRitualStone; +import WayofTime.bloodmagic.api.ritual.PropertyRuneType; + +public class BlockRitualStone extends Block implements IRitualStone { + + public static final String[] names = { "blank", "water", "fire", "earth", "air", "dusk", "dawn" }; + public static final PropertyRuneType TYPE = PropertyRuneType.create("TYPE"); + + public BlockRitualStone() { + super(Material.iron); + + setUnlocalizedName(BloodMagic.MODID + ".ritualStone."); + setCreativeTab(BloodMagic.tabBloodMagic); + setStepSound(soundTypeStone); + setHardness(2.0F); + setResistance(5.0F); + setHarvestLevel("pickaxe", 2); + } + + @Override + public IBlockState getStateFromMeta(int meta) { + return this.getDefaultState() + .withProperty(TYPE, EnumRuneType.byMetadata(meta)); + } + + @Override + public int getMetaFromState(IBlockState state) { + return ((EnumRuneType) state.getValue(TYPE)).ordinal(); + } + + @Override + public int damageDropped(IBlockState state) { + return 0; + } + + @Override + protected BlockState createBlockState() { + return new BlockState(this, TYPE); + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { + return new ItemStack(this, 1, this.getMetaFromState(world + .getBlockState(pos))); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void getSubBlocks(Item item, CreativeTabs creativeTabs, List list) { + for (int i = 0; i < names.length; i++) + list.add(new ItemStack(this, 1, i)); + } + + @Override + public boolean isRuneType(World world, BlockPos pos, int meta, EnumRuneType runeType) { + return this.getRitualStone(world, pos, meta).equals(runeType); + } + + private EnumRuneType getRitualStone(World world, BlockPos pos, int meta) { + IBlockState state = this.getStateFromMeta(meta); + return ((EnumRuneType) state.getValue(TYPE)); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockRitualStone.java b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockRitualStone.java new file mode 100644 index 00000000..ce80ebea --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockRitualStone.java @@ -0,0 +1,24 @@ +package WayofTime.bloodmagic.item.block; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import WayofTime.bloodmagic.block.BlockRitualStone; + +public class ItemBlockRitualStone extends ItemBlock { + + public ItemBlockRitualStone(Block block) { + super(block); + setHasSubtypes(true); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + BlockRitualStone.names[stack.getItemDamage()]; + } + + @Override + public int getMetadata(int meta) { + return meta; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java b/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java index 8837990e..4f5c3289 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModBlocks.java @@ -10,9 +10,11 @@ import WayofTime.bloodmagic.block.BlockAltar; import WayofTime.bloodmagic.block.BlockBloodRune; import WayofTime.bloodmagic.block.BlockLifeEssence; import WayofTime.bloodmagic.block.BlockRitualController; +import WayofTime.bloodmagic.block.BlockRitualStone; import WayofTime.bloodmagic.block.BlockTestSpellBlock; import WayofTime.bloodmagic.item.block.ItemBlockBloodRune; import WayofTime.bloodmagic.item.block.ItemBlockRitualController; +import WayofTime.bloodmagic.item.block.ItemBlockRitualStone; import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.tile.TileImperfectRitualStone; import WayofTime.bloodmagic.tile.TileMasterRitualStone; @@ -22,6 +24,7 @@ public class ModBlocks { public static Block altar; public static Block bloodRune; + public static Block ritualController; public static Block ritualStone; public static Block testSpellBlock; @@ -37,7 +40,8 @@ public class ModBlocks altar = registerBlock(new BlockAltar()); bloodRune = registerBlock(new BlockBloodRune(), ItemBlockBloodRune.class); - ritualStone = registerBlock(new BlockRitualController(), ItemBlockRitualController.class); + ritualController = registerBlock(new BlockRitualController(), ItemBlockRitualController.class); + ritualStone = registerBlock(new BlockRitualStone(), ItemBlockRitualStone.class); testSpellBlock = registerBlock(new BlockTestSpellBlock()); initTiles(); @@ -65,8 +69,15 @@ public class ModBlocks renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(bloodRune), 7); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(bloodRune), 8); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(bloodRune), 9); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualController), 0); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualController), 1); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 0); renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 1); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 2); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 3); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 4); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 5); + renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(ritualStone), 6); } private static Block registerBlock(Block block, Class itemBlock, String name) { diff --git a/src/main/resources/assets/bloodmagic/blockstates/BlockRitualStone.json b/src/main/resources/assets/bloodmagic/blockstates/BlockRitualStone.json new file mode 100644 index 00000000..9eead647 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/blockstates/BlockRitualStone.json @@ -0,0 +1,47 @@ +{ + "forge_marker": 1, + "defaults": { + "textures": { }, + "model": "cube_all", + "uvlock": true + }, + "variants": { + "type": { + "blank": { + "textures": { + "all": "bloodmagic:blocks/RitualStone" + } + }, + "water": { + "textures": { + "all": "bloodmagic:blocks/WaterRitualStone" + } + }, + "fire": { + "textures": { + "all": "bloodmagic:blocks/FireRitualStone" + } + }, + "earth": { + "textures": { + "all": "bloodmagic:blocks/EarthRitualStone" + } + }, + "air": { + "textures": { + "all": "bloodmagic:blocks/AirRitualStone" + } + }, + "dusk": { + "textures": { + "all": "bloodmagic:blocks/DuskRitualStone" + } + }, + "dawn": { + "textures": { + "all": "bloodmagic:blocks/LightRitualStone" + } + } + } + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone0.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone0.json new file mode 100644 index 00000000..1a936326 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone0.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/RitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone1.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone1.json new file mode 100644 index 00000000..fbe92e67 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone1.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/WaterRitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone2.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone2.json new file mode 100644 index 00000000..7a72cfb8 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/FireRitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone3.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone3.json new file mode 100644 index 00000000..d64c897e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/EarthRitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone4.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone4.json new file mode 100644 index 00000000..113fbce0 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone4.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/AirRitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone5.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone5.json new file mode 100644 index 00000000..82a6751e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone5.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/DuskRitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone6.json b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone6.json new file mode 100644 index 00000000..75200e70 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/block/BlockRitualStone6.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "bloodmagic:blocks/LightRitualStone" + } +} diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone0.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone0.json new file mode 100644 index 00000000..2b6b4a92 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone0.json @@ -0,0 +1,10 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone0", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone1.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone1.json new file mode 100644 index 00000000..4badac0c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone1.json @@ -0,0 +1,11 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone1", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} + diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone2.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone2.json new file mode 100644 index 00000000..678f5582 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone2.json @@ -0,0 +1,11 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone2", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} + diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone3.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone3.json new file mode 100644 index 00000000..72ebfc67 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone3.json @@ -0,0 +1,11 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone3", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} + diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone4.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone4.json new file mode 100644 index 00000000..6920fffa --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone4.json @@ -0,0 +1,11 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone4", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} + diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone5.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone5.json new file mode 100644 index 00000000..10db8434 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone5.json @@ -0,0 +1,11 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone5", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} + diff --git a/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone6.json b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone6.json new file mode 100644 index 00000000..e8ae0c87 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/BlockRitualStone6.json @@ -0,0 +1,11 @@ +{ + "parent": "bloodmagic:block/BlockRitualStone6", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} +