/
Drawbridge.java
94 lines (78 loc) · 2.93 KB
/
Drawbridge.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package slimeknights.tmechworks.blocks;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.mantle.block.EnumBlock;
import slimeknights.tmechworks.blocks.logic.DrawbridgeLogic;
import slimeknights.tmechworks.blocks.logic.DrawbridgeLogicBase;
import slimeknights.tmechworks.blocks.logic.ExtendedDrawbridgeLogic;
import javax.annotation.Nonnull;
import java.util.List;
import java.util.Locale;
public class Drawbridge extends RedstoneMachine<Drawbridge.DrawbridgeType>
{
public static final PropertyEnum<DrawbridgeType> TYPE = PropertyEnum.create("type", DrawbridgeType.class, DrawbridgeType.values());
public Drawbridge ()
{
super(Material.IRON, TYPE, DrawbridgeType.class);
this.setDefaultState(this.getDefaultState().withProperty(TYPE, DrawbridgeType.NORMAL));
}
@Override public int getMetaFromState (IBlockState state)
{
return ((DrawbridgeType) state.getValue(TYPE)).ordinal();
}
@Override public IBlockState getStateFromMeta (int meta)
{
return getDefaultState().withProperty(TYPE, DrawbridgeType.values()[meta]);
}
@Override public TileEntity createNewTileEntity (@Nonnull World worldIn, int meta)
{
try
{
return DrawbridgeType.values()[meta].tileEntityClass.newInstance();
}
catch (InstantiationException | IllegalAccessException e)
{
e.printStackTrace();
}
return null;
}
@Nonnull @Override protected BlockStateContainer createBlockState ()
{
return new BlockStateContainer(this, FACING, TYPE);
}
@SideOnly(Side.CLIENT) public void getSubBlocks (Item itemIn, CreativeTabs tab, List<ItemStack> list)
{
list.add(new ItemStack(itemIn, 1, 0));
list.add(new ItemStack(itemIn, 1, 1));
list.add(new ItemStack(itemIn, 1, 2));
}
public enum DrawbridgeType implements IStringSerializable, EnumBlock.IEnumMeta
{
NORMAL(DrawbridgeLogic.class),
ADVANCED(DrawbridgeLogicBase.class),
EXTENDED(ExtendedDrawbridgeLogic.class);
public final Class<? extends DrawbridgeLogicBase> tileEntityClass;
DrawbridgeType (Class<? extends DrawbridgeLogicBase> te)
{
tileEntityClass = te;
}
@Override public String getName ()
{
return this.toString().toLowerCase(Locale.US);
}
@Override
public int getMeta() {
return ordinal();
}
}
}