Created the BlockRitualStone and had it implement IRitualStone. Created .json files necessary

Created PropertyRuneType.
This commit is contained in:
WayofTime 2015-11-06 21:41:15 -05:00
parent 8f623de469
commit bf912ae03f
19 changed files with 332 additions and 1 deletions

View file

@ -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);
}
}

View file

@ -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));
}
}

View file

@ -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;
}
}

View file

@ -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<? extends ItemBlock> itemBlock, String name) {

View file

@ -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"
}
}
}
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/RitualStone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/WaterRitualStone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/FireRitualStone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/EarthRitualStone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/AirRitualStone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/DuskRitualStone"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bloodmagic:blocks/LightRitualStone"
}
}

View file

@ -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 ]
}
}
}

View file

@ -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 ]
}
}
}

View file

@ -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 ]
}
}
}

View file

@ -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 ]
}
}
}

View file

@ -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 ]
}
}
}

View file

@ -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 ]
}
}
}

View file

@ -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 ]
}
}
}