Cleanup enum container implementation

This commit is contained in:
Nicholas Ignoffo 2016-10-18 16:38:56 -07:00
parent 6a4c56293b
commit 1aad7ee531
5 changed files with 32 additions and 12 deletions

View file

@ -98,9 +98,13 @@ public class BlockInversionPillar extends BlockEnumContainer<EnumSubWillType> im
} }
@Override @Override
public TileEntity createNewTileEntity(World worldIn, int meta) public boolean hasTileEntity(IBlockState state) {
{ return true;
return new TileInversionPillar(EnumDemonWillType.values()[meta % 5]); }
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileInversionPillar(state.getValue(getProperty()).getType());
} }
protected BlockStateContainer createStateContainer() protected BlockStateContainer createStateContainer()

View file

@ -237,8 +237,12 @@ public class BlockMimic extends BlockEnumContainer<EnumMimic> implements IVarian
} }
@Override @Override
public TileEntity createNewTileEntity(World worldIn, int meta) public boolean hasTileEntity(IBlockState state) {
{ return true;
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return new TileMimic(); return new TileMimic();
} }

View file

@ -109,9 +109,13 @@ public class BlockRitualController extends BlockEnumContainer<EnumRitualControll
} }
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) public boolean hasTileEntity(IBlockState state) {
{ return true;
return meta == 0 ? (new TileMasterRitualStone()) : (new TileImperfectRitualStone()); }
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
return state.getValue(getProperty()) == EnumRitualController.MASTER ? new TileMasterRitualStone() : new TileImperfectRitualStone();
} }
// IVariantProvider // IVariantProvider

View file

@ -1,6 +1,5 @@
package WayofTime.bloodmagic.block.base; package WayofTime.bloodmagic.block.base;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -8,13 +7,11 @@ import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public abstract class BlockEnumContainer<E extends Enum<E> & IStringSerializable> extends BlockEnum<E> implements ITileEntityProvider public abstract class BlockEnumContainer<E extends Enum<E> & IStringSerializable> extends BlockEnum<E>
{ {
public BlockEnumContainer(Material material, Class<E> enumClass, String propName) public BlockEnumContainer(Material material, Class<E> enumClass, String propName)
{ {
super(material, enumClass, propName); super(material, enumClass, propName);
this.isBlockContainer = true;
} }
public BlockEnumContainer(Material material, Class<E> enumClass) public BlockEnumContainer(Material material, Class<E> enumClass)
@ -22,6 +19,12 @@ public abstract class BlockEnumContainer<E extends Enum<E> & IStringSerializable
this(material, enumClass, "type"); this(material, enumClass, "type");
} }
@Override
public abstract boolean hasTileEntity(IBlockState state);
@Override
public abstract TileEntity createTileEntity(World world, IBlockState state);
@Override @Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) public void breakBlock(World worldIn, BlockPos pos, IBlockState state)
{ {

View file

@ -2,6 +2,7 @@ package WayofTime.bloodmagic.block.enums;
import java.util.Locale; import java.util.Locale;
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
import net.minecraft.util.IStringSerializable; import net.minecraft.util.IStringSerializable;
public enum EnumSubWillType implements IStringSerializable public enum EnumSubWillType implements IStringSerializable
@ -23,4 +24,8 @@ public enum EnumSubWillType implements IStringSerializable
{ {
return this.toString(); return this.toString();
} }
public EnumDemonWillType getType() {
return EnumDemonWillType.valueOf(name());
}
} }