Ported Sliding Blast Door from 1.12.2 using new door API. Introduced door skins
@ -601,6 +601,7 @@ public class ModBlocks {
|
|||||||
|
|
||||||
public static Block vault_door;
|
public static Block vault_door;
|
||||||
public static Block blast_door;
|
public static Block blast_door;
|
||||||
|
public static Block sliding_blast_door;
|
||||||
public static Block fire_door;
|
public static Block fire_door;
|
||||||
public static Block transition_seal;
|
public static Block transition_seal;
|
||||||
|
|
||||||
@ -2064,6 +2065,9 @@ public class ModBlocks {
|
|||||||
|
|
||||||
vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door");
|
vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door");
|
||||||
blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door");
|
blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door");
|
||||||
|
|
||||||
|
sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(150.0F).setResistance(7500.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door");
|
||||||
|
|
||||||
fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door");
|
fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door");
|
||||||
transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal");
|
transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal");
|
||||||
|
|
||||||
@ -2985,7 +2989,8 @@ public class ModBlocks {
|
|||||||
GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName());
|
GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName());
|
GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName());
|
GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName());
|
||||||
|
GameRegistry.registerBlock(sliding_blast_door, sliding_blast_door.getUnlocalizedName());
|
||||||
|
|
||||||
//Doors
|
//Doors
|
||||||
GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName());
|
GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName());
|
||||||
GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName());
|
GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName());
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.hbm.blocks.generic;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.BlockDummyable;
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.items.special.ItemDoorSkin;
|
||||||
import com.hbm.tileentity.DoorDecl;
|
import com.hbm.tileentity.DoorDecl;
|
||||||
import com.hbm.tileentity.TileEntityDoorGeneric;
|
import com.hbm.tileentity.TileEntityDoorGeneric;
|
||||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
@ -54,12 +55,14 @@ public class BlockDoorGeneric extends BlockDummyable {
|
|||||||
TileEntityDoorGeneric door = (TileEntityDoorGeneric) world.getTileEntity(pos1[0], pos1[1], pos1[2]);
|
TileEntityDoorGeneric door = (TileEntityDoorGeneric) world.getTileEntity(pos1[0], pos1[1], pos1[2]);
|
||||||
|
|
||||||
if(door != null) {
|
if(door != null) {
|
||||||
return door.tryToggle(playerIn);
|
if(playerIn.getHeldItem() != null && playerIn.getHeldItem().getItem() instanceof ItemDoorSkin) {
|
||||||
|
return door.setSkinIndex((byte) playerIn.getHeldItem().getItemDamage());
|
||||||
|
} else {
|
||||||
|
return door.tryToggle(playerIn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!playerIn.isSneaking())
|
return !playerIn.isSneaking();
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -2,16 +2,20 @@ package com.hbm.interfaces;
|
|||||||
|
|
||||||
public interface IDoor {
|
public interface IDoor {
|
||||||
|
|
||||||
public void open();
|
void open();
|
||||||
public void close();
|
void close();
|
||||||
public DoorState getState();
|
DoorState getState();
|
||||||
public void toggle();
|
void toggle();
|
||||||
public default boolean setTexture(String tex) {
|
default boolean setTexture(String tex) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
default void setTextureState(byte tex) { }
|
||||||
|
|
||||||
|
default boolean setSkinIndex(byte skinIndex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public default void setTextureState(byte tex) { };
|
|
||||||
|
|
||||||
public enum DoorState {
|
enum DoorState {
|
||||||
CLOSED,
|
CLOSED,
|
||||||
OPEN,
|
OPEN,
|
||||||
CLOSING,
|
CLOSING,
|
||||||
|
|||||||
@ -1174,6 +1174,17 @@ public class AssemblerRecipes {
|
|||||||
new ComparableStack(ModItems.bolt_dura_steel, 12),
|
new ComparableStack(ModItems.bolt_dura_steel, 12),
|
||||||
new OreDictStack(KEY_YELLOW, 4)
|
new OreDictStack(KEY_YELLOW, 4)
|
||||||
}, 1200);
|
}, 1200);
|
||||||
|
|
||||||
|
makeRecipe(new ComparableStack(ModBlocks.sliding_blast_door, 1), new AStack[] {
|
||||||
|
new OreDictStack(STEEL.ingot(), 16),
|
||||||
|
new OreDictStack(W.ingot(), 8),
|
||||||
|
new ComparableStack(ModBlocks.reinforced_glass, 4),
|
||||||
|
new ComparableStack(Blocks.quartz_block, 10),
|
||||||
|
new ComparableStack(ModItems.plate_polymer, 3),
|
||||||
|
new ComparableStack(ModItems.bolt_tungsten, 3),
|
||||||
|
new ComparableStack(ModItems.bolt_dura_steel, 3),
|
||||||
|
new ComparableStack(ModItems.motor, 2)
|
||||||
|
}, 300);
|
||||||
|
|
||||||
if(Loader.isModLoaded("Mekanism")) {
|
if(Loader.isModLoaded("Mekanism")) {
|
||||||
|
|
||||||
|
|||||||
@ -2321,7 +2321,9 @@ public class ModItems {
|
|||||||
public static Item door_metal;
|
public static Item door_metal;
|
||||||
public static Item door_office;
|
public static Item door_office;
|
||||||
public static Item door_bunker;
|
public static Item door_bunker;
|
||||||
|
|
||||||
|
public static Item sliding_blast_door_skin;
|
||||||
|
|
||||||
public static Item record_lc;
|
public static Item record_lc;
|
||||||
public static Item record_ss;
|
public static Item record_ss;
|
||||||
public static Item record_vc;
|
public static Item record_vc;
|
||||||
@ -5349,6 +5351,8 @@ public class ModItems {
|
|||||||
door_office = new ItemModDoor().setUnlocalizedName("door_office").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_office");
|
door_office = new ItemModDoor().setUnlocalizedName("door_office").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_office");
|
||||||
door_bunker = new ItemModDoor().setUnlocalizedName("door_bunker").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_bunker");
|
door_bunker = new ItemModDoor().setUnlocalizedName("door_bunker").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_bunker");
|
||||||
|
|
||||||
|
sliding_blast_door_skin = new ItemSlidingBlastDoorSkin().setUnlocalizedName("sliding_blast_door_skin").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":sliding_blast_door_default");
|
||||||
|
|
||||||
record_lc = new ItemModRecord("lc").setUnlocalizedName("record_lc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_lc");
|
record_lc = new ItemModRecord("lc").setUnlocalizedName("record_lc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_lc");
|
||||||
record_ss = new ItemModRecord("ss").setUnlocalizedName("record_ss").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_ss");
|
record_ss = new ItemModRecord("ss").setUnlocalizedName("record_ss").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_ss");
|
||||||
record_vc = new ItemModRecord("vc").setUnlocalizedName("record_vc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_vc");
|
record_vc = new ItemModRecord("vc").setUnlocalizedName("record_vc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_vc");
|
||||||
@ -7962,7 +7966,8 @@ public class ModItems {
|
|||||||
GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName());
|
GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(door_office, door_office.getUnlocalizedName());
|
GameRegistry.registerItem(door_office, door_office.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(door_bunker, door_bunker.getUnlocalizedName());
|
GameRegistry.registerItem(door_bunker, door_bunker.getUnlocalizedName());
|
||||||
|
GameRegistry.registerItem(sliding_blast_door_skin, sliding_blast_door_skin.getUnlocalizedName());
|
||||||
|
|
||||||
//Records
|
//Records
|
||||||
GameRegistry.registerItem(record_lc, record_lc.getUnlocalizedName());
|
GameRegistry.registerItem(record_lc, record_lc.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(record_ss, record_ss.getUnlocalizedName());
|
GameRegistry.registerItem(record_ss, record_ss.getUnlocalizedName());
|
||||||
|
|||||||
36
src/main/java/com/hbm/items/special/ItemDoorSkin.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package com.hbm.items.special;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ItemDoorSkin extends Item {
|
||||||
|
protected final IIcon[] icons;
|
||||||
|
|
||||||
|
public ItemDoorSkin(int skinCount) {
|
||||||
|
setMaxStackSize(1);
|
||||||
|
icons = new IIcon[skinCount];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getHasSubtypes() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSubItems(Item item, CreativeTabs creativeTabs, List list) {
|
||||||
|
for(int i = 0; i < icons.length; i++) {
|
||||||
|
list.add(new ItemStack(item, 1, i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IIcon getIconFromDamage(int meta) {
|
||||||
|
return icons[meta];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.hbm.items.special;
|
||||||
|
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
|
||||||
|
public class ItemSlidingBlastDoorSkin extends ItemDoorSkin {
|
||||||
|
public ItemSlidingBlastDoorSkin() {
|
||||||
|
super(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void registerIcons(IIconRegister reg) {
|
||||||
|
this.itemIcon = reg.registerIcon(this.getIconString());
|
||||||
|
|
||||||
|
this.icons[0] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_default");
|
||||||
|
this.icons[1] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_variant1");
|
||||||
|
this.icons[2] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_variant2");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1083,6 +1083,11 @@ public class CraftingManager {
|
|||||||
ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_TRANSISTOR),
|
ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_TRANSISTOR),
|
||||||
ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_BLANK)
|
ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_BLANK)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
addRecipeAuto(new ItemStack(ModItems.sliding_blast_door_skin), "SPS", "DPD", "SPS", 'P', Items.paper, 'D', "dye", 'S', STEEL.plate());
|
||||||
|
addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin, 1, 1), new ItemStack(ModItems.sliding_blast_door_skin, 1, 0));
|
||||||
|
addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin, 1, 2), new ItemStack(ModItems.sliding_blast_door_skin, 1, 1));
|
||||||
|
addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin), new ItemStack(ModItems.sliding_blast_door_skin, 1, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void crumple() {
|
public static void crumple() {
|
||||||
|
|||||||
@ -290,7 +290,15 @@ public class ResourceManager {
|
|||||||
public static final IModelCustom blast_door_tooth = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_tooth.obj"));
|
public static final IModelCustom blast_door_tooth = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_tooth.obj"));
|
||||||
public static final IModelCustom blast_door_slider = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_slider.obj"));
|
public static final IModelCustom blast_door_slider = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_slider.obj"));
|
||||||
public static final IModelCustom blast_door_block = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_block.obj"));
|
public static final IModelCustom blast_door_block = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_block.obj"));
|
||||||
|
|
||||||
|
//Sliding Blast Door
|
||||||
|
public static final ResourceLocation sliding_blast_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door.png");
|
||||||
|
public static final ResourceLocation sliding_blast_door_variant1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door_variant1.png");
|
||||||
|
public static final ResourceLocation sliding_blast_door_variant2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door_variant2.png");
|
||||||
|
|
||||||
|
public static AnimatedModel sliding_blast_door;
|
||||||
|
public static Animation sliding_blast_door_anim;
|
||||||
|
|
||||||
//Doors
|
//Doors
|
||||||
public static AnimatedModel transition_seal;
|
public static AnimatedModel transition_seal;
|
||||||
public static Animation transition_seal_anim;
|
public static Animation transition_seal_anim;
|
||||||
@ -1356,5 +1364,8 @@ public class ResourceManager {
|
|||||||
public static void loadAnimatedModels(){
|
public static void loadAnimatedModels(){
|
||||||
transition_seal = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"), true);
|
transition_seal = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"), true);
|
||||||
transition_seal_anim = ColladaLoader.loadAnim(24040, new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"));
|
transition_seal_anim = ColladaLoader.loadAnim(24040, new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"));
|
||||||
|
|
||||||
|
sliding_blast_door = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/sliding_blast_door.dae"));
|
||||||
|
sliding_blast_door_anim = ColladaLoader.loadAnim(1200, new ResourceLocation(RefStrings.MODID, "models/doors/sliding_blast_door.dae"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,20 +15,22 @@ public class TEDoorAnimationPacket implements IMessage {
|
|||||||
|
|
||||||
public int x, y, z;
|
public int x, y, z;
|
||||||
public byte state;
|
public byte state;
|
||||||
|
public byte skinIndex;
|
||||||
public byte texture;
|
public byte texture;
|
||||||
|
|
||||||
public TEDoorAnimationPacket() {
|
public TEDoorAnimationPacket() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public TEDoorAnimationPacket(int x, int y, int z, byte state) {
|
public TEDoorAnimationPacket(int x, int y, int z, byte state) {
|
||||||
this(x, y, z, state, (byte) -1);
|
this(x, y, z, state, (byte) 0, (byte) -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TEDoorAnimationPacket(int x, int y, int z, byte state, byte tex) {
|
public TEDoorAnimationPacket(int x, int y, int z, byte state, byte skinIndex, byte tex) {
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
this.z = z;
|
this.z = z;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
this.skinIndex = skinIndex;
|
||||||
this.texture = tex;
|
this.texture = tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,6 +40,7 @@ public class TEDoorAnimationPacket implements IMessage {
|
|||||||
y = buf.readInt();
|
y = buf.readInt();
|
||||||
z = buf.readInt();
|
z = buf.readInt();
|
||||||
state = buf.readByte();
|
state = buf.readByte();
|
||||||
|
skinIndex = buf.readByte();
|
||||||
if(buf.readableBytes() == 1){
|
if(buf.readableBytes() == 1){
|
||||||
texture = buf.readByte();
|
texture = buf.readByte();
|
||||||
}
|
}
|
||||||
@ -49,6 +52,7 @@ public class TEDoorAnimationPacket implements IMessage {
|
|||||||
buf.writeInt(y);
|
buf.writeInt(y);
|
||||||
buf.writeInt(z);
|
buf.writeInt(z);
|
||||||
buf.writeByte(state);
|
buf.writeByte(state);
|
||||||
|
buf.writeByte(skinIndex);
|
||||||
if(texture != -1){
|
if(texture != -1){
|
||||||
buf.writeByte(texture);
|
buf.writeByte(texture);
|
||||||
}
|
}
|
||||||
@ -63,6 +67,7 @@ public class TEDoorAnimationPacket implements IMessage {
|
|||||||
TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z);
|
TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z);
|
||||||
if(te instanceof IAnimatedDoor){
|
if(te instanceof IAnimatedDoor){
|
||||||
((IAnimatedDoor) te).handleNewState(m.state);
|
((IAnimatedDoor) te).handleNewState(m.state);
|
||||||
|
((IAnimatedDoor) te).setSkinIndex(m.skinIndex);
|
||||||
((IAnimatedDoor) te).setTextureState(m.texture);
|
((IAnimatedDoor) te).setTextureState(m.texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer {
|
|||||||
AnimatedModel animModel = door.getAnimatedModel();
|
AnimatedModel animModel = door.getAnimatedModel();
|
||||||
if(animModel != null){
|
if(animModel != null){
|
||||||
Animation anim = door.getAnim();
|
Animation anim = door.getAnim();
|
||||||
bindTexture(door.getTextureForPart(""));
|
bindTexture(door.getTextureForPart(te.getSkinIndex(), ""));
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
long startTime = te.state > 1 ? te.animStartTime : time;
|
long startTime = te.state > 1 ? te.animStartTime : time;
|
||||||
boolean reverse = te.state == 1 || te.state == 2;
|
boolean reverse = te.state == 1 || te.state == 2;
|
||||||
@ -83,14 +83,14 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer {
|
|||||||
if(!door.doesRender(p.getLeft(), false))
|
if(!door.doesRender(p.getLeft(), false))
|
||||||
continue;
|
continue;
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
bindTexture(door.getTextureForPart(p.getLeft()));
|
bindTexture(door.getTextureForPart(te.getSkinIndex(), p.getLeft()));
|
||||||
doPartTransform(door, p.getLeft(), openTicks, false);
|
doPartTransform(door, p.getLeft(), openTicks, false);
|
||||||
GL11.glCallList(p.getRight());
|
GL11.glCallList(p.getRight());
|
||||||
for(String name : door.getChildren(p.getLeft())){
|
for(String name : door.getChildren(p.getLeft())){
|
||||||
if(!door.doesRender(name, true))
|
if(!door.doesRender(name, true))
|
||||||
continue;
|
continue;
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
bindTexture(door.getTextureForPart(name));
|
bindTexture(door.getTextureForPart(te.getSkinIndex(), name));
|
||||||
doPartTransform(door, name, openTicks, true);
|
doPartTransform(door, name, openTicks, true);
|
||||||
model.renderPart(name);
|
model.renderPart(name);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
|
|||||||
@ -1,306 +1,425 @@
|
|||||||
package com.hbm.tileentity;
|
package com.hbm.tileentity;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
|
||||||
|
|
||||||
import com.hbm.animloader.AnimatedModel;
|
import com.hbm.animloader.AnimatedModel;
|
||||||
import com.hbm.animloader.Animation;
|
import com.hbm.animloader.Animation;
|
||||||
import com.hbm.main.ResourceManager;
|
import com.hbm.main.ResourceManager;
|
||||||
import com.hbm.render.loader.WavefrontObjDisplayList;
|
import com.hbm.render.loader.WavefrontObjDisplayList;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
public abstract class DoorDecl {
|
public abstract class DoorDecl {
|
||||||
|
|
||||||
public static final DoorDecl TRANSITION_SEAL = new DoorDecl(){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOpenSoundStart() {
|
|
||||||
return "hbm:door.TransitionSealOpen";
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getSoundVolume(){
|
|
||||||
return 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void getTranslation(String partName, float openTicks, boolean child, float[] trans) {
|
|
||||||
if(!partName.equals("base")){
|
|
||||||
set(trans, 0, 3.5F*getNormTime(openTicks), 0);
|
|
||||||
} else {
|
|
||||||
super.getTranslation(partName, openTicks, child, trans);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void doOffsetTransform() {
|
|
||||||
GL11.glTranslated(0, 0, 0.5);
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public double[][] getClippingPlanes() {
|
|
||||||
return super.getClippingPlanes();
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int timeToOpen() {
|
|
||||||
return 480;
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[][] getDoorOpenRanges(){
|
|
||||||
//3 is tall
|
|
||||||
//4 is wide
|
|
||||||
return new int[][]{{-9, 2, 0, 20, 20, 1}};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public static final DoorDecl TRANSITION_SEAL = new DoorDecl() {
|
||||||
public int[] getDimensions(){
|
|
||||||
return new int[]{23, 0, 0, 0, 13, 12};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
|
||||||
return super.getBlockBound(x, y, z, open);
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
public String getOpenSoundStart() {
|
||||||
public ResourceLocation getTextureForPart(String partName){
|
return "hbm:door.TransitionSealOpen";
|
||||||
return ResourceManager.transition_seal_tex;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
public float getSoundVolume() {
|
||||||
public Animation getAnim() {
|
return 6;
|
||||||
return ResourceManager.transition_seal_anim;
|
}
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public AnimatedModel getAnimatedModel() {
|
|
||||||
return ResourceManager.transition_seal;
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public WavefrontObjDisplayList getModel(){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static final DoorDecl FIRE_DOOR = new DoorDecl(){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOpenSoundEnd() {
|
|
||||||
return "hbm:door.wghStop";
|
|
||||||
};
|
|
||||||
@Override
|
|
||||||
public String getOpenSoundLoop() {
|
|
||||||
return "hbm:door.wghStart";
|
|
||||||
};
|
|
||||||
@Override
|
|
||||||
public String getSoundLoop2() {
|
|
||||||
return "hbm:door.alarm6";
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getSoundVolume(){
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void getTranslation(String partName, float openTicks, boolean child, float[] trans) {
|
|
||||||
if(!partName.equals("frame")){
|
|
||||||
set(trans, 0, 3*getNormTime(openTicks), 0);
|
|
||||||
} else {
|
|
||||||
super.getTranslation(partName, openTicks, child, trans);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public void doOffsetTransform() {
|
|
||||||
GL11.glTranslated(0, 0, 0.5);
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public double[][] getClippingPlanes() {
|
|
||||||
return new double[][]{{0, -1, 0, 3.0001}};
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int timeToOpen() {
|
|
||||||
return 160;
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[][] getDoorOpenRanges(){
|
|
||||||
return new int[][]{{-1, 0, 0, 3, 4, 1}};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getDimensions(){
|
@SideOnly(Side.CLIENT)
|
||||||
return new int[]{2, 0, 0, 0, 2, 1};
|
public void getTranslation(String partName, float openTicks, boolean child, float[] trans) {
|
||||||
}
|
if (!partName.equals("base")) {
|
||||||
|
set(trans, 0, 3.5F * getNormTime(openTicks), 0);
|
||||||
@Override
|
} else {
|
||||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
super.getTranslation(partName, openTicks, child, trans);
|
||||||
if(!open)
|
}
|
||||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
}
|
||||||
if(z == 1){
|
|
||||||
return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1);
|
|
||||||
} else if(z == -2){
|
|
||||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1);
|
|
||||||
} else if(y > 1){
|
|
||||||
return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1);
|
|
||||||
} else if(y == 0) {
|
|
||||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1);
|
|
||||||
} else {
|
|
||||||
return super.getBlockBound(x, y, z, open);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public ResourceLocation getTextureForPart(String partName){
|
public void doOffsetTransform() {
|
||||||
return ResourceManager.fire_door_tex;
|
GL11.glTranslated(0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public WavefrontObjDisplayList getModel(){
|
public double[][] getClippingPlanes() {
|
||||||
return ResourceManager.fire_door;
|
return super.getClippingPlanes();
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
//Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z)
|
@Override
|
||||||
public abstract int[][] getDoorOpenRanges();
|
public int timeToOpen() {
|
||||||
|
return 480;
|
||||||
public abstract int[] getDimensions();
|
}
|
||||||
|
|
||||||
public float getDoorRangeOpenTime(int ticks, int idx){
|
@Override
|
||||||
return getNormTime(ticks);
|
public int[][] getDoorOpenRanges() {
|
||||||
}
|
//3 is tall
|
||||||
|
//4 is wide
|
||||||
public int timeToOpen(){
|
return new int[][]{{-9, 2, 0, 20, 20, 1}};
|
||||||
return 20;
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
public float getNormTime(float time){
|
public int[] getDimensions() {
|
||||||
return getNormTime(time, 0, timeToOpen());
|
return new int[]{23, 0, 0, 0, 13, 12};
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getNormTime(float time, float min, float max){
|
@Override
|
||||||
return BobMathUtil.remap01_clamp(time, min, max);
|
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||||
}
|
return super.getBlockBound(x, y, z, open);
|
||||||
|
}
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public abstract ResourceLocation getTextureForPart(String partName);
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
@SideOnly(Side.CLIENT)
|
public ResourceLocation getTextureForPart(int skinIndex, String partName) {
|
||||||
public abstract WavefrontObjDisplayList getModel();
|
return ResourceManager.transition_seal_tex;
|
||||||
|
}
|
||||||
@SideOnly(Side.CLIENT)
|
|
||||||
public AnimatedModel getAnimatedModel(){
|
@Override
|
||||||
return null;
|
@SideOnly(Side.CLIENT)
|
||||||
}
|
public Animation getAnim() {
|
||||||
|
return ResourceManager.transition_seal_anim;
|
||||||
@SideOnly(Side.CLIENT)
|
}
|
||||||
public Animation getAnim(){
|
|
||||||
return null;
|
@Override
|
||||||
}
|
@SideOnly(Side.CLIENT)
|
||||||
|
public AnimatedModel getAnimatedModel() {
|
||||||
@SideOnly(Side.CLIENT)
|
return ResourceManager.transition_seal;
|
||||||
public void getTranslation(String partName, float openTicks, boolean child, float[] trans){
|
}
|
||||||
set(trans, 0, 0, 0);
|
|
||||||
}
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
@SideOnly(Side.CLIENT)
|
public WavefrontObjDisplayList getModel() {
|
||||||
public void getRotation(String partName, float openTicks, float[] rot){
|
return null;
|
||||||
set(rot, 0, 0, 0);
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
public static final DoorDecl FIRE_DOOR = new DoorDecl() {
|
||||||
public void getOrigin(String partName, float[] orig){
|
|
||||||
set(orig, 0, 0, 0);
|
@Override
|
||||||
}
|
public String getOpenSoundEnd() {
|
||||||
|
return "hbm:door.wghStop";
|
||||||
@SideOnly(Side.CLIENT)
|
}
|
||||||
public boolean doesRender(String partName, boolean child){
|
|
||||||
return true;
|
@Override
|
||||||
}
|
public String getOpenSoundLoop() {
|
||||||
|
return "hbm:door.wghStart";
|
||||||
private static final String[] nothing = new String[]{};
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@Override
|
||||||
public String[] getChildren(String partName){
|
public String getSoundLoop2() {
|
||||||
return nothing;
|
return "hbm:door.alarm6";
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@Override
|
||||||
public double[][] getClippingPlanes(){
|
public float getSoundVolume() {
|
||||||
return new double[][]{};
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@Override
|
||||||
public void doOffsetTransform(){
|
@SideOnly(Side.CLIENT)
|
||||||
}
|
public void getTranslation(String partName, float openTicks, boolean child, float[] trans) {
|
||||||
|
if (!partName.equals("frame")) {
|
||||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open){
|
set(trans, 0, 3 * getNormTime(openTicks), 0);
|
||||||
return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
} else {
|
||||||
}
|
super.getTranslation(partName, openTicks, child, trans);
|
||||||
|
}
|
||||||
public boolean isLadder(boolean open){
|
}
|
||||||
return false;
|
|
||||||
}
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
public String getOpenSoundLoop(){
|
public void doOffsetTransform() {
|
||||||
return null;
|
GL11.glTranslated(0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Hack
|
@Override
|
||||||
public String getSoundLoop2(){
|
@SideOnly(Side.CLIENT)
|
||||||
return null;
|
public double[][] getClippingPlanes() {
|
||||||
}
|
return new double[][]{{0, -1, 0, 3.0001}};
|
||||||
|
}
|
||||||
public String getCloseSoundLoop(){
|
|
||||||
return getOpenSoundLoop();
|
@Override
|
||||||
}
|
public int timeToOpen() {
|
||||||
|
return 160;
|
||||||
public String getOpenSoundStart(){
|
}
|
||||||
return null;
|
|
||||||
}
|
@Override
|
||||||
|
public int[][] getDoorOpenRanges() {
|
||||||
public String getCloseSoundStart(){
|
return new int[][]{{-1, 0, 0, 3, 4, 1}};
|
||||||
return getOpenSoundStart();
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
public String getOpenSoundEnd(){
|
public int[] getDimensions() {
|
||||||
return null;
|
return new int[]{2, 0, 0, 0, 2, 1};
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCloseSoundEnd(){
|
@Override
|
||||||
return getOpenSoundEnd();
|
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||||
}
|
if (!open)
|
||||||
|
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||||
public float getSoundVolume(){
|
if (z == 1) {
|
||||||
return 1;
|
return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1);
|
||||||
}
|
} else if (z == -2) {
|
||||||
|
return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1);
|
||||||
public float[] set(float[] f, float x, float y, float z){
|
} else if (y > 1) {
|
||||||
f[0] = x;
|
return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1);
|
||||||
f[1] = y;
|
} else if (y == 0) {
|
||||||
f[2] = z;
|
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1);
|
||||||
return f;
|
} else {
|
||||||
};
|
return super.getBlockBound(x, y, z, open);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ResourceLocation getTextureForPart(int skinIndex, String partName) {
|
||||||
|
return ResourceManager.fire_door_tex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public WavefrontObjDisplayList getModel() {
|
||||||
|
return ResourceManager.fire_door;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final DoorDecl SLIDE_DOOR = new DoorDecl() {
|
||||||
|
@Override
|
||||||
|
public String getOpenSoundEnd() {
|
||||||
|
return "hbm:door.sliding_door_opened";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCloseSoundEnd() {
|
||||||
|
return "hbm:door.sliding_door_shut";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getOpenSoundLoop() {
|
||||||
|
return "hbm:door.sliding_door_opening";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSoundLoop2() {
|
||||||
|
return "hbm:door.sliding_door_opening";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getSoundVolume() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void doOffsetTransform() {
|
||||||
|
GL11.glRotated(-90, 0, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public double[][] getClippingPlanes() {
|
||||||
|
return new double[][]{
|
||||||
|
{-1, 0, 0, 3.50001},
|
||||||
|
{1, 0, 0, 3.50001}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int timeToOpen() {
|
||||||
|
return 24;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[][] getDoorOpenRanges() {
|
||||||
|
return new int[][]{{-2, 0, 0, 4, 5, 1}};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getDimensions() {
|
||||||
|
return new int[]{3, 0, 0, 0, 3, 3};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||||
|
if (open) {
|
||||||
|
if (y == 3) {
|
||||||
|
return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1);
|
||||||
|
} else if (y == 0) {
|
||||||
|
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.08, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.getBlockBound(x, y, z, open);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasSkins() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSkinCount() {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ResourceLocation getTextureForPart(int skinIndex, String partName) {
|
||||||
|
return new ResourceLocation[] {
|
||||||
|
ResourceManager.sliding_blast_door_tex,
|
||||||
|
ResourceManager.sliding_blast_door_variant1_tex,
|
||||||
|
ResourceManager.sliding_blast_door_variant2_tex
|
||||||
|
}[skinIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WavefrontObjDisplayList getModel() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Animation getAnim() {
|
||||||
|
return ResourceManager.sliding_blast_door_anim;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatedModel getAnimatedModel() {
|
||||||
|
return ResourceManager.sliding_blast_door;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z)
|
||||||
|
public abstract int[][] getDoorOpenRanges();
|
||||||
|
|
||||||
|
public abstract int[] getDimensions();
|
||||||
|
|
||||||
|
public float getDoorRangeOpenTime(int ticks, int idx) {
|
||||||
|
return getNormTime(ticks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int timeToOpen() {
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getNormTime(float time) {
|
||||||
|
return getNormTime(time, 0, timeToOpen());
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getNormTime(float time, float min, float max) {
|
||||||
|
return BobMathUtil.remap01_clamp(time, min, max);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasSkins() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSkinCount() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ResourceLocation getTextureForPart(String partName) {
|
||||||
|
return getTextureForPart(0, partName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public abstract ResourceLocation getTextureForPart(int skinIndex, String partName);
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public abstract WavefrontObjDisplayList getModel();
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public AnimatedModel getAnimatedModel() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public Animation getAnim() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void getTranslation(String partName, float openTicks, boolean child, float[] trans) {
|
||||||
|
set(trans, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void getRotation(String partName, float openTicks, float[] rot) {
|
||||||
|
set(rot, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void getOrigin(String partName, float[] orig) {
|
||||||
|
set(orig, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public boolean doesRender(String partName, boolean child) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String[] nothing = new String[]{};
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public String[] getChildren(String partName) {
|
||||||
|
return nothing;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public double[][] getClippingPlanes() {
|
||||||
|
return new double[][]{};
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void doOffsetTransform() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||||
|
return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLadder(boolean open) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOpenSoundLoop() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Hack
|
||||||
|
public String getSoundLoop2() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCloseSoundLoop() {
|
||||||
|
return getOpenSoundLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOpenSoundStart() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCloseSoundStart() {
|
||||||
|
return getOpenSoundStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOpenSoundEnd() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCloseSoundEnd() {
|
||||||
|
return getOpenSoundEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getSoundVolume() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float[] set(float[] f, float x, float y, float z) {
|
||||||
|
f[0] = x;
|
||||||
|
f[1] = y;
|
||||||
|
f[2] = z;
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn
|
|||||||
public long animStartTime = 0;
|
public long animStartTime = 0;
|
||||||
public int redstonePower;
|
public int redstonePower;
|
||||||
public boolean shouldUseBB = false;
|
public boolean shouldUseBB = false;
|
||||||
|
private byte skinIndex = 0;
|
||||||
|
|
||||||
public Set<BlockPos> activatedBlocks = new HashSet<>(4);
|
public Set<BlockPos> activatedBlocks = new HashSet<>(4);
|
||||||
|
|
||||||
private AudioWrapper audio;
|
private AudioWrapper audio;
|
||||||
@ -140,7 +142,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn
|
|||||||
if(state == 2 && openTicks == 0) {
|
if(state == 2 && openTicks == 0) {
|
||||||
state = 0;
|
state = 0;
|
||||||
}
|
}
|
||||||
PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100));
|
PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, skinIndex, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100));
|
||||||
|
|
||||||
if(redstonePower == -1 && state == 0){
|
if(redstonePower == -1 && state == 0){
|
||||||
tryToggle(-1);
|
tryToggle(-1);
|
||||||
@ -288,6 +290,21 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn
|
|||||||
shouldUseBB = false;
|
shouldUseBB = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getSkinIndex() {
|
||||||
|
return skinIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setSkinIndex(byte skinIndex) {
|
||||||
|
if(!getDoorType().hasSkins())
|
||||||
|
return false;
|
||||||
|
if(getDoorType().getSkinCount() < skinIndex) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.skinIndex = skinIndex;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AxisAlignedBB getRenderBoundingBox(){
|
public AxisAlignedBB getRenderBoundingBox(){
|
||||||
return INFINITE_EXTENT_AABB;
|
return INFINITE_EXTENT_AABB;
|
||||||
@ -305,6 +322,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn
|
|||||||
this.animStartTime = tag.getInteger("animStartTime");
|
this.animStartTime = tag.getInteger("animStartTime");
|
||||||
this.redstonePower = tag.getInteger("redstoned");
|
this.redstonePower = tag.getInteger("redstoned");
|
||||||
this.shouldUseBB = tag.getBoolean("shouldUseBB");
|
this.shouldUseBB = tag.getBoolean("shouldUseBB");
|
||||||
|
this.skinIndex = tag.getByte("skin");
|
||||||
NBTTagCompound activatedBlocks = tag.getCompoundTag("activatedBlocks");
|
NBTTagCompound activatedBlocks = tag.getCompoundTag("activatedBlocks");
|
||||||
this.activatedBlocks.clear();
|
this.activatedBlocks.clear();
|
||||||
for(int i = 0; i < activatedBlocks.func_150296_c().size()/3; i ++){
|
for(int i = 0; i < activatedBlocks.func_150296_c().size()/3; i ++){
|
||||||
@ -322,6 +340,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn
|
|||||||
tag.setLong("animStartTime", animStartTime);
|
tag.setLong("animStartTime", animStartTime);
|
||||||
tag.setInteger("redstoned", redstonePower);
|
tag.setInteger("redstoned", redstonePower);
|
||||||
tag.setBoolean("shouldUseBB", shouldUseBB);
|
tag.setBoolean("shouldUseBB", shouldUseBB);
|
||||||
|
if(getDoorType().hasSkins())
|
||||||
|
tag.setByte("skin", skinIndex);
|
||||||
NBTTagCompound activatedBlocks = new NBTTagCompound();
|
NBTTagCompound activatedBlocks = new NBTTagCompound();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(BlockPos p : this.activatedBlocks){
|
for(BlockPos p : this.activatedBlocks){
|
||||||
|
|||||||
@ -3838,6 +3838,7 @@ item.singularity_super_heated.name=Superheated Resonating Singularity
|
|||||||
item.siox.name=SiOX Cancer Medication
|
item.siox.name=SiOX Cancer Medication
|
||||||
item.siox.desc=Reverses mesothelioma with the power of Asbestos!
|
item.siox.desc=Reverses mesothelioma with the power of Asbestos!
|
||||||
item.siren_track.name=Siren Track
|
item.siren_track.name=Siren Track
|
||||||
|
item.sliding_blast_door_skin.name=Sliding Blast Door Skin
|
||||||
item.smashing_hammer.name=Smashing Hammer
|
item.smashing_hammer.name=Smashing Hammer
|
||||||
item.solid_fuel.name=Solid Fuel
|
item.solid_fuel.name=Solid Fuel
|
||||||
item.solid_fuel_bf.name=Solid Fuel (Balefire)
|
item.solid_fuel_bf.name=Solid Fuel (Balefire)
|
||||||
@ -5083,6 +5084,7 @@ tile.sellafield.4.name=Infernal Sellafite
|
|||||||
tile.sellafield.5.name=Sellafite-Corium
|
tile.sellafield.5.name=Sellafite-Corium
|
||||||
tile.sellafield_slaked.name=Slaked Sellafite
|
tile.sellafield_slaked.name=Slaked Sellafite
|
||||||
tile.semtex.name=Semtex
|
tile.semtex.name=Semtex
|
||||||
|
tile.sliding_blast_door.name=Sliding Blast Door
|
||||||
tile.solar_mirror.name=Heliostat Mirror
|
tile.solar_mirror.name=Heliostat Mirror
|
||||||
tile.soyuz_capsule.name=Cargo Landing Capsule
|
tile.soyuz_capsule.name=Cargo Landing Capsule
|
||||||
tile.soyuz_launcher.name=Soyuz Launch Platform
|
tile.soyuz_launcher.name=Soyuz Launch Platform
|
||||||
|
|||||||
@ -59,6 +59,9 @@
|
|||||||
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},
|
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},
|
||||||
"door.wghStop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": true}]},
|
"door.wghStop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": true}]},
|
||||||
"door.alarm6": {"category": "block", "sounds": [{"name": "block/door/alarm6", "stream": true}]},
|
"door.alarm6": {"category": "block", "sounds": [{"name": "block/door/alarm6", "stream": true}]},
|
||||||
|
"door.sliding_door_shut": {"category": "block", "sounds": [{"name": "block/door/sliding_door_shut", "stream": false}]},
|
||||||
|
"door.sliding_door_opened": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opened", "stream": false}]},
|
||||||
|
"door.sliding_door_opening": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opening", "stream": false}]},
|
||||||
|
|
||||||
"item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]},
|
"item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]},
|
||||||
"item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]},
|
"item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]},
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/textures/blocks/img.png
Normal file
|
After Width: | Height: | Size: 153 B |
|
After Width: | Height: | Size: 246 B |
|
After Width: | Height: | Size: 246 B |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 40 KiB |