From be2c17f1028c6129e97620c7d9ecad79b7b06579 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 24 Dec 2023 00:30:53 +0100 Subject: [PATCH] can't wait for the silly people on discord bug me 24/7 about this fuckin g commit i swear to god this is why we can't have nice things --- src/main/java/com/hbm/blocks/ModBlocks.java | 13 + .../com/hbm/blocks/generic/BlockKeyhole.java | 244 ++++++++++++++++++ .../com/hbm/blocks/generic/BlockLoot.java | 5 - .../com/hbm/blocks/generic/BlockModDoor.java | 4 + .../com/hbm/blocks/generic/BlockPedestal.java | 141 ++++++++++ src/main/java/com/hbm/items/ModItems.java | 3 + .../java/com/hbm/items/tool/ItemModDoor.java | 147 +++++------ src/main/java/com/hbm/main/ClientProxy.java | 3 + src/main/java/com/hbm/main/MainRegistry.java | 3 + .../com/hbm/render/block/RenderPedestal.java | 68 +++++ .../com/hbm/render/tileentity/RenderLoot.java | 56 ++++ .../render/tileentity/RenderPedestalTile.java | 61 +++++ .../java/com/hbm/tileentity/TileMappings.java | 2 + src/main/resources/assets/hbm/lang/de_DE.lang | 6 + src/main/resources/assets/hbm/lang/en_US.lang | 6 + .../hbm/textures/blocks/door_red_lower.png | Bin 0 -> 179 bytes .../hbm/textures/blocks/door_red_upper.png | Bin 0 -> 155 bytes .../hbm/textures/blocks/pedestal_side.png | Bin 0 -> 252 bytes .../hbm/textures/blocks/pedestal_top.png | Bin 0 -> 233 bytes .../assets/hbm/textures/items/door_red.png | Bin 0 -> 243 bytes 20 files changed, 672 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockKeyhole.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockPedestal.java create mode 100644 src/main/java/com/hbm/render/block/RenderPedestal.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/door_red_lower.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/door_red_upper.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/pedestal_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/pedestal_top.png create mode 100644 src/main/resources/assets/hbm/textures/items/door_red.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 587bb4025..fa2c429f3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -132,6 +132,8 @@ public class ModBlocks { public static Block cluster_depth_iron; public static Block cluster_depth_titanium; public static Block cluster_depth_tungsten; + + public static Block stone_keyhole; public static Block stone_depth_nether; public static Block ore_depth_nether_neodymium; @@ -303,6 +305,7 @@ public class ModBlocks { public static Block deco_emitter; public static Block part_emitter; public static Block deco_loot; + public static Block pedestal; public static Block bobblehead; public static Block snowglobe; @@ -614,6 +617,7 @@ public class ModBlocks { public static Block door_metal; public static Block door_office; public static Block door_bunker; + public static Block door_red; public static Block barbed_wire; public static Block barbed_wire_fire; @@ -1367,6 +1371,8 @@ public class ModBlocks { cluster_depth_tungsten = new BlockDepthOre().setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); + stone_keyhole = new BlockKeyhole().setBlockName("stone_keyhole").setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":stone_keyhole"); + ore_random = new BlockMotherOfAllOres().setBlockName("ore_random").setCreativeTab(MainRegistry.blockTab); ore_bedrock = new BlockBedrockOreTE().setBlockName("ore_bedrock").setCreativeTab(null); ore_volcano = new BlockFissure().setBlockName("ore_volcano").setLightLevel(1F).setCreativeTab(MainRegistry.blockTab); @@ -1543,6 +1549,7 @@ public class ModBlocks { deco_emitter = new BlockEmitter().setBlockName("deco_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":emitter"); part_emitter = new PartEmitter().setBlockName("part_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":part_top"); deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + pedestal = new BlockPedestal().setBlockName("pedestal").setCreativeTab(null).setHardness(2.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":pedestal_top"); bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); hazmat = new BlockGeneric(Material.cloth).setBlockName("hazmat").setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":hazmat"); @@ -2154,6 +2161,7 @@ public class ModBlocks { door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); door_bunker = new BlockModDoor(Material.iron).setBlockName("door_bunker").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_bunker"); + door_red = new BlockModDoor(Material.iron).setBlockName("door_red").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_red"); barbed_wire = new BarbedWire(Material.iron).setBlockName("barbed_wire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_model"); barbed_wire_fire = new BarbedWire(Material.iron).setBlockName("barbed_wire_fire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_fire_model"); @@ -2584,6 +2592,9 @@ public class ModBlocks { register(ore_bedrock); register(ore_volcano); + //Secret + register(stone_keyhole); + //Crystals GameRegistry.registerBlock(crystal_power, crystal_power.getUnlocalizedName()); GameRegistry.registerBlock(crystal_energy, crystal_energy.getUnlocalizedName()); @@ -2738,6 +2749,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); + GameRegistry.registerBlock(pedestal, pedestal.getUnlocalizedName()); GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); GameRegistry.registerBlock(hazmat, hazmat.getUnlocalizedName()); @@ -3079,6 +3091,7 @@ public class ModBlocks { GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerBlock(door_red, door_red.getUnlocalizedName()); GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); GameRegistry.registerBlock(large_vehicle_door, large_vehicle_door.getUnlocalizedName()); GameRegistry.registerBlock(qe_containment, qe_containment.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java new file mode 100644 index 000000000..14dee9d9d --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java @@ -0,0 +1,244 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemModDoor; +import com.hbm.main.MainRegistry; +import com.hbm.util.WeightedRandomObject; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockStone; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.WeightedRandom; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockKeyhole extends BlockStone { + + protected IIcon iconTop; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon("stone"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == 0 || side == 1 ? this.iconTop : this.blockIcon; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + return new ItemStack(Blocks.stone); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.key_red && side != 0 && side != 1) { + if(world.isRemote) return true; + ForgeDirection dir = ForgeDirection.getOrientation(side); + generateRoom(world, x - dir.offsetX * 4, y - 2, z - dir.offsetZ * 4); + int b = 0; + if(side == 2) b = 1; + if(side == 5) b = 2; + if(side == 3) b = 3; + if(side == 4) b = 0; + ItemModDoor.placeDoorBlock(world, x, y - 1, z, b, ModBlocks.door_red); + world.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); + player.triggerAchievement(MainRegistry.achRedRoom); + return true; + } + + return false; + } + + protected static void generateRoom(World world, int x, int y, int z) { + + int size = 9; + int height = 5; + int width = size / 2; + + //Outer Edges, top and bottom + for(int i = -width; i <= width; i++) { + world.setBlock(x + i, y, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y + height - 1, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + height - 1, z + i, ModBlocks.brick_red, 6, 3); + } + + for(int i = 1; i <= height - 2; i++) { + //Outer edges, sides + world.setBlock(x + width, y + i, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y + i, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + i, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + i, z - width, ModBlocks.brick_red, 6, 3); + + //Walls + for(int j = -width + 1; j <= width - 1; j++) { + world.setBlock(x + width, y + i, z + j, ModBlocks.brick_red, 4, 3); + world.setBlock(x - width, y + i, z + j, ModBlocks.brick_red, 5, 3); + world.setBlock(x + j, y + i, z + width, ModBlocks.brick_red, 2, 3); + world.setBlock(x + j, y + i, z - width, ModBlocks.brick_red, 3, 3); + } + } + + for(int i = -width + 1; i <= width - 1; i++) { + for(int j = -width + 1; j <= width - 1; j++) { + //Floor and ceiling + world.setBlock(x + i, y, z + j, ModBlocks.brick_red, 1, 3); + world.setBlock(x + i, y + height - 1, z + j, ModBlocks.brick_red, 0, 3); + + for(int k = 1; k <= height - 2; k++) { + world.setBlock(x + i, y + k, z + j, Blocks.air); + } + } + } + + //Torches + int torchDist = width - 1; + int torchOff = torchDist - 1; + world.setBlock(x + torchDist, y + 2, z + torchOff, Blocks.torch); + world.setBlock(x + torchDist, y + 2, z - torchOff, Blocks.torch); + world.setBlock(x - torchDist, y + 2, z + torchOff, Blocks.torch); + world.setBlock(x - torchDist, y + 2, z - torchOff, Blocks.torch); + world.setBlock(x + torchOff, y + 2, z + torchDist, Blocks.torch); + world.setBlock(x - torchOff, y + 2, z + torchDist, Blocks.torch); + world.setBlock(x + torchOff, y + 2, z - torchDist, Blocks.torch); + world.setBlock(x - torchOff, y + 2, z - torchDist, Blocks.torch); + + //Cobwebs + if(world.rand.nextInt(4) == 0) { + for(int i = -width + 1; i <= width - 1; i++) { + for(int j = -width + 1; j <= width - 1; j++) { + if(world.rand.nextBoolean()) world.setBlock(x + i, y + height - 2, z + j, Blocks.web); + } + } + } + + //Pillars + if(world.rand.nextInt(4) == 0) { + for(int i = 1; i <= height - 2; i++) { + world.setBlock(x + width - 2, y + i, z + width - 2, ModBlocks.concrete_colored, 14, 3); + world.setBlock(x + width - 2, y + i, z - width + 2, ModBlocks.concrete_colored, 14, 3); + world.setBlock(x - width + 2, y + i, z + width - 2, ModBlocks.concrete_colored, 14, 3); + world.setBlock(x - width + 2, y + i, z - width + 2, ModBlocks.concrete_colored, 14, 3); + } + } + + //Fire + if(world.rand.nextInt(4) == 0) { + world.setBlock(x + width - 1, y, z + width - 1, Blocks.netherrack); + world.setBlock(x + width - 1, y, z - width + 1, Blocks.netherrack); + world.setBlock(x - width + 1, y, z + width - 1, Blocks.netherrack); + world.setBlock(x - width + 1, y, z - width + 1, Blocks.netherrack); + world.setBlock(x + width - 1, y + 1, z + width - 1, Blocks.fire); + world.setBlock(x + width - 1, y + 1, z - width + 1, Blocks.fire); + world.setBlock(x - width + 1, y + 1, z + width - 1, Blocks.fire); + world.setBlock(x - width + 1, y + 1, z - width + 1, Blocks.fire); + } + + //Circle + if(world.rand.nextInt(4) == 0) { + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + if(i != 0 || j != 0) world.setBlock(x + i, y, z + j, ModBlocks.concrete_colored, 14, 3); + } + } + } + + //Lava + if(world.rand.nextInt(4) == 0) { + world.setBlock(x + width - 2, y, z + width - 1, Blocks.lava); + world.setBlock(x + width - 3, y, z + width - 1, Blocks.lava); + world.setBlock(x - width + 2, y, z + width - 1, Blocks.lava); + world.setBlock(x - width + 3, y, z + width - 1, Blocks.lava); + world.setBlock(x + width - 2, y, z - width + 1, Blocks.lava); + world.setBlock(x + width - 3, y, z - width + 1, Blocks.lava); + world.setBlock(x - width + 2, y, z - width + 1, Blocks.lava); + world.setBlock(x - width + 3, y, z - width + 1, Blocks.lava); + world.setBlock(x + width - 1, y, z + width - 2, Blocks.lava); + world.setBlock(x + width - 1, y, z + width - 3, Blocks.lava); + world.setBlock(x + width - 1, y, z - width + 2, Blocks.lava); + world.setBlock(x + width - 1, y, z - width + 3, Blocks.lava); + world.setBlock(x - width + 1, y, z + width - 2, Blocks.lava); + world.setBlock(x - width + 1, y, z + width - 3, Blocks.lava); + world.setBlock(x - width + 1, y, z - width + 2, Blocks.lava); + world.setBlock(x - width + 1, y, z - width + 3, Blocks.lava); + } + + int rand = world.rand.nextInt(20); + + if(rand == 0) { + world.setBlock(x, y + 1, z, ModBlocks.deco_loot); + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y + 1, z); + loot.addItem(new ItemStack(ModItems.trenchmaster_helmet), 0, 0, 0); + loot.addItem(new ItemStack(ModItems.trenchmaster_plate), 0, 0, 0); + loot.addItem(new ItemStack(ModItems.trenchmaster_legs), 0, 0, 0); + loot.addItem(new ItemStack(ModItems.trenchmaster_boots), 0, 0, 0); + } else { + spawnPedestalItem(world, x, y + 1, z); + } + + //Clear dropped items + List items = world.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(x + 0.5, y, z + 0.5, x + 0.5, y + height, z + 0.5).expand(size / 2D, 0, size / 2D)); + for(EntityItem item : items) item.setDead(); + } + + public static List pedestalItems; + + public static void spawnPedestalItem(World world, int x, int y, int z) { + world.setBlock(x, y, z, ModBlocks.pedestal); + TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z); + if(pedestalItems == null) initPedestal(); + pedestal.item = ((WeightedRandomObject) WeightedRandom.getRandomItem(world.rand, pedestalItems)).asStack().copy(); + } + + public static void initPedestal() { + pedestalItems = new ArrayList(); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.ballistic_gauntlet), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.night_vision), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.protection_charm), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.armor_polish), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.bandaid), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.serum), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.quartz_plutonium), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.morning_glory), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.lodestone), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.spider_milk), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.ink), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.heart_container), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.black_diamond), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.wd40), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.scrumpy), 10)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.wild_p), 5)); + + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.starmetal_sword), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.radaway_flush), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.gem_alexandrite), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.crackpipe), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.flask_infusion), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModBlocks.boxcar), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.book_of_), 5)); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockLoot.java b/src/main/java/com/hbm/blocks/generic/BlockLoot.java index cf949e161..6ce450275 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLoot.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLoot.java @@ -48,11 +48,6 @@ public class BlockLoot extends BlockContainer { return null; } - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - } - @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockModDoor.java b/src/main/java/com/hbm/blocks/generic/BlockModDoor.java index 2d003020c..b0ccc6634 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockModDoor.java +++ b/src/main/java/com/hbm/blocks/generic/BlockModDoor.java @@ -319,6 +319,8 @@ public class BlockModDoor extends Block { return ModItems.door_metal; else if (this == ModBlocks.door_office) return ModItems.door_office; + else if (this == ModBlocks.door_red) + return ModItems.door_red; else return ModItems.door_bunker; } @@ -379,6 +381,8 @@ public class BlockModDoor extends Block { return ModItems.door_metal; else if (this == ModBlocks.door_office) return ModItems.door_office; + else if (this == ModBlocks.door_red) + return ModItems.door_red; else return ModItems.door_bunker; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java new file mode 100644 index 000000000..2930323f7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -0,0 +1,141 @@ +package com.hbm.blocks.generic; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class BlockPedestal extends BlockContainer { + + protected IIcon iconSide; + + public BlockPedestal() { + super(Material.rock); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPedestal(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":pedestal_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == 0 || side == 1 ? this.blockIcon : this.iconSide; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) return true; + if(player.isSneaking()) return false; + + TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z); + + if(pedestal.item == null && player.getHeldItem() != null) { + pedestal.item = player.getHeldItem().copy(); + player.inventory.mainInventory[player.inventory.currentItem] = null; + pedestal.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } else if(pedestal.item != null && player.getHeldItem() == null) { + player.inventory.mainInventory[player.inventory.currentItem] = pedestal.item.copy(); + pedestal.item = null; + pedestal.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + + return false; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + if(!world.isRemote) { + TileEntityPedestal entity = (TileEntityPedestal) world.getTileEntity(x, y, z); + if(entity != null && entity.item != null) { + EntityItem item = new EntityItem(world, x + 0.5, y, z + 0.5, entity.item.copy()); + world.spawnEntityInWorld(item); + } + } + + super.breakBlock(world, x, y, z, block, meta); + } + + public static class TileEntityPedestal extends TileEntity { + + public ItemStack item; + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.item = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("item")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + if(this.item != null) { + NBTTagCompound stack = new NBTTagCompound(); + this.item.writeToNBT(stack); + nbt.setTag("item", stack); + } + } + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 72651c636..d91f9821f 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2352,6 +2352,7 @@ public class ModItems { public static Item door_metal; public static Item door_office; public static Item door_bunker; + public static Item door_red; public static Item sliding_blast_door_skin; @@ -5409,6 +5410,7 @@ public class ModItems { door_metal = new ItemModDoor().setUnlocalizedName("door_metal").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_metal"); 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_red = new ItemModDoor().setUnlocalizedName("door_red").setCreativeTab(null).setTextureName(RefStrings.MODID + ":door_red"); sliding_blast_door_skin = new ItemSlidingBlastDoorSkin().setUnlocalizedName("sliding_blast_door_skin").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":sliding_blast_door_default"); @@ -8058,6 +8060,7 @@ public class ModItems { GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerItem(door_office, door_office.getUnlocalizedName()); GameRegistry.registerItem(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerItem(door_red, door_red.getUnlocalizedName()); GameRegistry.registerItem(sliding_blast_door_skin, sliding_blast_door_skin.getUnlocalizedName()); //Records diff --git a/src/main/java/com/hbm/items/tool/ItemModDoor.java b/src/main/java/com/hbm/items/tool/ItemModDoor.java index 6ed3f84f3..e7ead99c9 100644 --- a/src/main/java/com/hbm/items/tool/ItemModDoor.java +++ b/src/main/java/com/hbm/items/tool/ItemModDoor.java @@ -6,105 +6,82 @@ import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class ItemModDoor extends Item -{ - public ItemModDoor() - { - this.maxStackSize = 1; - this.setCreativeTab(CreativeTabs.tabRedstone); - } +public class ItemModDoor extends Item { + + public ItemModDoor() { + this.maxStackSize = 1; + this.setCreativeTab(CreativeTabs.tabRedstone); + } - /** - * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return - * True if something happen and false if it don't. This is for ITEMS, not BLOCKS - */ - public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) - { - if (p_77648_7_ != 1) - { - return false; - } - else - { - ++p_77648_5_; - Block block; + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { + if(side != 1) { + return false; + } else { + ++y; + + Block block = Blocks.air; - if(this == ModItems.door_metal) - block = ModBlocks.door_metal; - else if(this == ModItems.door_office) - block = ModBlocks.door_office; - else - block = ModBlocks.door_bunker; + if(this == ModItems.door_metal) block = ModBlocks.door_metal; + if(this == ModItems.door_office) block = ModBlocks.door_office; + if(this == ModItems.door_bunker) block = ModBlocks.door_bunker; + if(this == ModItems.door_red) block = ModBlocks.door_red; - if (p_77648_2_.canPlayerEdit(p_77648_4_, p_77648_5_, p_77648_6_, p_77648_7_, p_77648_1_) && p_77648_2_.canPlayerEdit(p_77648_4_, p_77648_5_ + 1, p_77648_6_, p_77648_7_, p_77648_1_)) - { - if (!block.canPlaceBlockAt(p_77648_3_, p_77648_4_, p_77648_5_, p_77648_6_)) - { - return false; - } - else - { - int i1 = MathHelper.floor_double((double)((p_77648_2_.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; - placeDoorBlock(p_77648_3_, p_77648_4_, p_77648_5_, p_77648_6_, i1, block); - --p_77648_1_.stackSize; - return true; - } - } - else - { - return false; - } - } - } + if(player.canPlayerEdit(x, y, z, side, stack) && player.canPlayerEdit(x, y + 1, z, side, stack)) { + if(!block.canPlaceBlockAt(world, x, y, z)) { + return false; + } else { + int i1 = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; + placeDoorBlock(world, x, y, z, i1, block); + --stack.stackSize; + return true; + } + } else { + return false; + } + } + } - public static void placeDoorBlock(World p_150924_0_, int p_150924_1_, int p_150924_2_, int p_150924_3_, int p_150924_4_, Block p_150924_5_) - { - byte b0 = 0; - byte b1 = 0; + public static void placeDoorBlock(World world, int x, int y, int z, int meta, Block door) { + byte offsetX = 0; + byte offsetZ = 0; - if (p_150924_4_ == 0) - { - b1 = 1; - } + if(meta == 0) { + offsetZ = 1; + } - if (p_150924_4_ == 1) - { - b0 = -1; - } + if(meta == 1) { + offsetX = -1; + } - if (p_150924_4_ == 2) - { - b1 = -1; - } + if(meta == 2) { + offsetZ = -1; + } - if (p_150924_4_ == 3) - { - b0 = 1; - } + if(meta == 3) { + offsetX = 1; + } - int i1 = (p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_, p_150924_3_ - b1).isNormalCube() ? 1 : 0) + (p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_ + 1, p_150924_3_ - b1).isNormalCube() ? 1 : 0); - int j1 = (p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_, p_150924_3_ + b1).isNormalCube() ? 1 : 0) + (p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_ + 1, p_150924_3_ + b1).isNormalCube() ? 1 : 0); - boolean flag = p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_, p_150924_3_ - b1) == p_150924_5_ || p_150924_0_.getBlock(p_150924_1_ - b0, p_150924_2_ + 1, p_150924_3_ - b1) == p_150924_5_; - boolean flag1 = p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_, p_150924_3_ + b1) == p_150924_5_ || p_150924_0_.getBlock(p_150924_1_ + b0, p_150924_2_ + 1, p_150924_3_ + b1) == p_150924_5_; - boolean flag2 = false; + int i1 = (world.getBlock(x - offsetX, y, z - offsetZ).isNormalCube() ? 1 : 0) + (world.getBlock(x - offsetX, y + 1, z - offsetZ).isNormalCube() ? 1 : 0); + int j1 = (world.getBlock(x + offsetX, y, z + offsetZ).isNormalCube() ? 1 : 0) + (world.getBlock(x + offsetX, y + 1, z + offsetZ).isNormalCube() ? 1 : 0); + boolean flag = world.getBlock(x - offsetX, y, z - offsetZ) == door || world.getBlock(x - offsetX, y + 1, z - offsetZ) == door; + boolean flag1 = world.getBlock(x + offsetX, y, z + offsetZ) == door || world.getBlock(x + offsetX, y + 1, z + offsetZ) == door; + boolean flag2 = false; - if (flag && !flag1) - { - flag2 = true; - } - else if (j1 > i1) - { - flag2 = true; - } + if(flag && !flag1) { + flag2 = true; + } else if(j1 > i1) { + flag2 = true; + } - p_150924_0_.setBlock(p_150924_1_, p_150924_2_, p_150924_3_, p_150924_5_, p_150924_4_, 2); - p_150924_0_.setBlock(p_150924_1_, p_150924_2_ + 1, p_150924_3_, p_150924_5_, 8 | (flag2 ? 1 : 0), 2); - p_150924_0_.notifyBlocksOfNeighborChange(p_150924_1_, p_150924_2_, p_150924_3_, p_150924_5_); - p_150924_0_.notifyBlocksOfNeighborChange(p_150924_1_, p_150924_2_ + 1, p_150924_3_, p_150924_5_); - } + world.setBlock(x, y, z, door, meta, 2); + world.setBlock(x, y + 1, z, door, 8 | (flag2 ? 1 : 0), 2); + world.notifyBlocksOfNeighborChange(x, y, z, door); + world.notifyBlocksOfNeighborChange(x, y + 1, z, door); + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 453f04adb..7a4cdf259 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -47,6 +47,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; @@ -171,6 +172,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltF.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDemonLamp.class, new RenderDemonLamp()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLoot.class, new RenderLoot()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPedestal.class, new RenderPedestalTile()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter()); @@ -824,6 +826,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); RenderingRegistry.registerBlockHandler(new RenderSplitter()); RenderingRegistry.registerBlockHandler(new RenderCapacitor()); + RenderingRegistry.registerBlockHandler(new RenderPedestal()); RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index fd5073c80..ec9ace167 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -190,6 +190,7 @@ public class MainRegistry { public static Achievement achGoFish; public static Achievement achNo9; public static Achievement achInferno; + public static Achievement achRedRoom; public static Achievement bobHidden; public static Achievement horizonsStart; public static Achievement horizonsEnd; @@ -678,6 +679,7 @@ public class MainRegistry { achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.ACID), null).initIndependentStat().registerStat(); achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); + achRedRoom = new Achievement("achievement.redRoom", "redRoom", -10, 10, ModItems.key_red, null).initIndependentStat().setSpecial().registerStat(); bobHidden = new Achievement("achievement.hidden", "hidden", 15, -4, ModItems.gun_dampfmaschine, null).initIndependentStat().registerStat(); @@ -757,6 +759,7 @@ public class MainRegistry { achWitchtaunter, achNo9, achInferno, + achRedRoom, achSlimeball, achSulfuric, bossCreeper, diff --git a/src/main/java/com/hbm/render/block/RenderPedestal.java b/src/main/java/com/hbm/render/block/RenderPedestal.java new file mode 100644 index 000000000..5c8eef3dc --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderPedestal.java @@ -0,0 +1,68 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockPedestal; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; + +public class RenderPedestal implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + + for(int i = 0; i < 3; i++) { + if(i == 0) renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 0.25, 1.0); + if(i == 1) renderer.setRenderBounds(0.0, 0.75, 0.0, 1.0, 1.0, 1.0); + if(i == 2) renderer.setRenderBounds(0.125, 0.25, 0.125, 0.875, 0.75, 0.875); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + } + + tessellator.draw(); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 0.25, 1.0); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.0, 0.75, 0.0, 1.0, 1.0, 1.0); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.125, 0.25, 0.125, 0.875, 0.75, 0.875); + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return BlockPedestal.renderID; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index 125ebb617..da6545a1e 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -5,13 +5,16 @@ import org.lwjgl.opengl.GL12; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; +import com.hbm.items.armor.ArmorTrenchmaster; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelFatman; import com.hbm.render.model.ModelLeverAction; import com.hbm.util.Tuple.Quartet; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureMap; @@ -48,6 +51,8 @@ public class RenderLoot extends TileEntitySpecialRenderer { } else if(stack.getItem() == ModItems.gun_lever_action) { renderShotgun(); + } else if(stack.getItem() instanceof ArmorTrenchmaster) { + renderTrenchmaster(stack); } else { renderStandardItem(item.getW()); } @@ -58,6 +63,57 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } + private void renderTrenchmaster(ItemStack stack) { + GL11.glPushMatrix(); + GL11.glTranslated(0.5, 1.5, 0.5); + GL11.glScaled(0.0625, 0.0625, 0.0625); + GL11.glRotated(180, 1, 0, 0); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + if(stack.getItem() == ModItems.trenchmaster_helmet) { + bindTexture(ResourceManager.trenchmaster_helmet); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + ResourceManager.armor_trenchmaster.renderPart("Helmet"); + GL11.glDisable(GL11.GL_BLEND); + float lastX = OpenGlHelper.lastBrightnessX; + float lastY = OpenGlHelper.lastBrightnessY; + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glDisable(GL11.GL_LIGHTING); + ResourceManager.armor_trenchmaster.renderPart("Light"); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY); + } + if(stack.getItem() == ModItems.trenchmaster_plate) { + bindTexture(ResourceManager.trenchmaster_chest); + ResourceManager.armor_trenchmaster.renderPart("Chest"); + bindTexture(ResourceManager.trenchmaster_arm); + GL11.glPushMatrix(); + GL11.glRotated(-3, 1, 0, 0); + ResourceManager.armor_trenchmaster.renderPart("LeftArm"); + ResourceManager.armor_trenchmaster.renderPart("RightArm"); + GL11.glPopMatrix(); + } + if(stack.getItem() == ModItems.trenchmaster_legs) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + ResourceManager.armor_trenchmaster.renderPart("LeftLeg"); + GL11.glPushMatrix(); + GL11.glRotated(-0.1, 1, 0, 0); + ResourceManager.armor_trenchmaster.renderPart("RightLeg"); + GL11.glPopMatrix(); + } + if(stack.getItem() == ModItems.trenchmaster_boots) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.trenchmaster_leg); + ResourceManager.armor_trenchmaster.renderPart("LeftBoot"); + GL11.glPushMatrix(); + GL11.glRotated(-0.1, 1, 0, 0); + ResourceManager.armor_trenchmaster.renderPart("RightBoot"); + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + } + private void renderNuke() { GL11.glScaled(0.5, 0.5, 0.5); GL11.glTranslated(1, 0.5, 1); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java b/src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java new file mode 100644 index 000000000..6f39d7389 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPedestalTile.java @@ -0,0 +1,61 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; + +public class RenderPedestalTile extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 1, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + RenderHelper.enableStandardItemLighting(); + + TileEntityPedestal pedestal = (TileEntityPedestal) te; + + if(pedestal.item != null) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack stack = pedestal.item.copy(); + GL11.glScaled(1.5, 1.5, 1.5); + + if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) { + GL11.glTranslated(0, 0.125, 0); + GL11.glRotatef(player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp + 180, 0.0F, -1.0F, 0.0F); + + if(!RenderManager.instance.options.fancyGraphics) { + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + } + + GL11.glTranslated(0, Math.sin((player.ticksExisted + interp) * 0.1) * 0.0625, 0); + } else { + GL11.glTranslated(0, Math.sin((player.ticksExisted + interp) * 0.1) * 0.0625 + 0.0625, 0); + } + + EntityItem dummy = new EntityItem(te.getWorldObj(), 0, 0, 0, stack); + dummy.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + + GL11.glPopMatrix(); + } + +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b4d3693fa..bbd9a724e 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -12,6 +12,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -205,6 +206,7 @@ public class TileMappings { put(TileEntityCustomMachine.class, "tileentity_custom_machine"); put(TileEntityLoot.class, "tileentity_ntm_loot"); + put(TileEntityPedestal.class, "tileentity_ntm_pedestal"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); put(TileEntitySnowglobe.class, "tileentity_ntm_snowglobe"); put(TileEntityEmitter.class, "tileentity_ntm_emitter"); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c5df0b0e1..a07ccfd74 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -66,6 +66,8 @@ achievement.radium.desc=SIE SIND GEFEUERT WEIL SIE RADIUM IN MEINEN KAFFEE GESCH achievement.radium=MISTER UNGLAUBLICH achievement.radPoison.desc=Leide an Strahlenkrankheit. achievement.radPoison=Yay, Strahlung! +achievement.redRoom.desc=? +achievement.redRoom=Die andere Seite achievement.sacrifice.desc=Sterbe im Feuer, aber irgendwie auch nicht. achievement.sacrifice=Sororizid achievement.selenium.desc=Lange nicht gesehen! @@ -1705,6 +1707,7 @@ item.dnt_plate.name=dineutrom brustplatte item.door_bunker.name=Bunkertür item.door_metal.name=Metalltür item.door_office.name=Bürotür +item.door_red.name=Rote Tür item.dosimeter.name=Dosimeter item.drax.name=Terra-Bohrer item.drax_mk2.name=Gehärteter Terra-Bohrer @@ -3893,6 +3896,7 @@ tile.drone_waypoint_request.name=Logistikdronen-Wegpunkt tile.door_bunker.name=Bunkertür tile.door_metal.name=Metalltür tile.door_office.name=Bürotür +tile.door_red.name=Rote Tür tile.ducrete.name=Ducretefliese tile.ducrete_stairs.name=Ducretefliesentreppe tile.ducrete_smooth.name=Ducrete @@ -4312,6 +4316,7 @@ tile.ore_uranium_scorched.name=Verschmortes Uranerz tile.ore_verticium.name=Dollargrünes Mineral tile.ore_volcano.name=Thermale Fissur tile.ore_weidanium.name=Weidit +tile.pedestal.name=Podest tile.pink_barrel.name=Kerosinfass tile.pink_log.name=Pinkes Holz tile.pink_planks.name=Pinke Holzbretter @@ -4479,6 +4484,7 @@ tile.stone_cracked.name=Rissiger Stein tile.stone_depth.name=Tiefenfels tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_gneiss.name=Graphitschiefer +tile.stone_keyhole.name=Seltsamer Stein tile.stone_porous.name=Poröser Stein tile.stone_resource.asbestos.name=Chrysotil tile.stone_resource.bauxite.name=Bauxit diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 3c982082f..6dac2d884 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -94,6 +94,8 @@ achievement.RBMK.desc=He's delusional, get him to the infirmary. achievement.RBMK=3.6 Roentegen? achievement.redBalloons.desc="This is what we've waited for. This is it, boys, this is war." achievement.redBalloons=99 Red Balloons +achievement.redRoom.desc=? +achievement.redRoom=The Other Side achievement.sacrifice.desc=Face the fire and live. achievement.sacrifice=Sororicide achievement.schrab.desc=Regardless, I wouldn't look at it for too long. @@ -2405,6 +2407,7 @@ item.dnt_plate.name=dineutrom chestplate item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door +item.door_red.name=Red Door item.dosimeter.name=Dosimeter item.drax.name=Terra Drill item.drax_mk2.name=Hardened Terra Drill @@ -4884,6 +4887,7 @@ tile.drone_waypoint_request.name=Logistics Drone Waypoint tile.door_bunker.name=Bunker Door tile.door_metal.name=Metal Door tile.door_office.name=Office Door +tile.door_red.name=Red Door tile.ducrete.name=Ducrete Tile tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete @@ -5311,6 +5315,7 @@ tile.ore_verticium.name=Dollar Green Mineral tile.ore_volcano.name=Geothermal Vent tile.ore_weidanium.name=Weidite tile.part_emitter.name=Deco Particle Emitter +tile.pedestal.name=Pedestal tile.pink_barrel.name=Kerosene Barrel tile.pink_log.name=Pink Log tile.pink_planks.name=Pink Wood Planks @@ -5482,6 +5487,7 @@ tile.stone_cracked.name=Cracked Stone tile.stone_depth.name=Depth Rock tile.stone_depth_nether.name=Nether Depth Rock tile.stone_gneiss.name=Graphitic Schist +tile.stone_keyhole.name=Strange Stone tile.stone_porous.name=Porous Stone tile.stone_resource.asbestos.name=Chrysotile tile.stone_resource.bauxite.name=Bauxite diff --git a/src/main/resources/assets/hbm/textures/blocks/door_red_lower.png b/src/main/resources/assets/hbm/textures/blocks/door_red_lower.png new file mode 100644 index 0000000000000000000000000000000000000000..d3771415f6d6ba0370c0c72dd1f62ddf6feb6e96 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfe+F~XejF+I|2%$9PRfBBx+;I?$K00x^Y8S5Pe4--X?%xrv2r$MpA0 z_^4J&?6CWP=;Xfte>9hIYkWJjf^jh$PcAb9lbP7wLk;Sr+UH98X0$`hJ^-6tJsIXv*9pve2P#4zDX;@Y$X>&p+1G2EJcC zO>`rxMab^B;B4P{&okEUp0|;&LC1I3p1@b!9Q|iU$X&^%X-13^ORI3MBG~V|9|MzQ+=Blndh#U^J5a*SF__gKX(^b+P$;>7r@Lg z_xrNK?DfxbBDb%Y=iHF&mUgby>h2jyZ^gETh0|P^vpg0x7`J`dr?}#%y;Drqs-Jec zyO_;%#e+l(S`1dr_l~)C*5~@xn~l>t68IK+e5-Y`@^tx7<^N(&KgZ?7<@+Xnm0}Pn fmZ^GD6(#R{&B1o+hd@!FTNylE{an^LB{Ts5dMR6P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/door_red.png b/src/main/resources/assets/hbm/textures/items/door_red.png new file mode 100644 index 0000000000000000000000000000000000000000..4fde1b88968557ef33c59fc3082fa5f1adaeb884 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@>hAfIEF;D zCZ{Mc>}p-|UpT0lf6BhES|yz2{`~Xql>We^mL$6CQ=!3%4V#S&jE#hjh9#t` zor+oH#K5+t^{Ax8{y#|uQ=cS0`1OZd{rA7m%Ux!BmT+9)>aj|=!nl}EqV&KDW;a=b zR}F#ea3Kay+r_K%R_xiLaiEPx;!H hdDA#8At8Z*;drI>|7oHjbAhgA@O1TaS?83{1OPv@UDW^p literal 0 HcmV?d00001