diff --git a/changelog b/changelog index f7e259775..f7108e12f 100644 --- a/changelog +++ b/changelog @@ -26,6 +26,9 @@ * Fluid traits are now listed in a fixed order instead of being arranged randomly * Hidden fluid trait descriptions will now be added below the visible part of that trait instead of below the last visible trait * The methusalem turret no longer drops anything when broken +* Gaseous fuels now have a combusion multiplier of 1.5 instead of 1.25 +* LPG now has half the base burn value, preventing an unreasonable jump in efficiency simply by liquefacting petroleum gas + * While overall slightly less efficient that petroleum gas per unit of petroleum needed, LPG is still very much desirable due to being much easier to burn at max efficiency ## Fixed * Fixed the structure toggle on the world creation screen not working correctly on most world types diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index a24e5753e..94c961f5e 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1048,6 +1048,7 @@ public class ModBlocks { public static Block machine_orbus; public static Block launch_pad; + public static Block launch_pad_rusted; public static Block launch_pad_large; public static Block machine_missile_assembly; @@ -2167,6 +2168,7 @@ public class ModBlocks { tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); + launch_pad_rusted = new LaunchPadRusted(Material.iron).setBlockName("launch_pad_rusted").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad_rusted"); launch_pad_large = new LaunchPadLarge(Material.iron).setBlockName("launch_pad_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3517,6 +3519,7 @@ public class ModBlocks { //Missile Blocks GameRegistry.registerBlock(machine_missile_assembly, machine_missile_assembly.getUnlocalizedName()); GameRegistry.registerBlock(launch_pad, launch_pad.getUnlocalizedName()); + GameRegistry.registerBlock(launch_pad_rusted, launch_pad_rusted.getUnlocalizedName()); GameRegistry.registerBlock(launch_pad_large, launch_pad_large.getUnlocalizedName()); GameRegistry.registerBlock(compact_launcher, compact_launcher.getUnlocalizedName()); GameRegistry.registerBlock(launch_table, launch_table.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchPadRusted.java b/src/main/java/com/hbm/blocks/bomb/LaunchPadRusted.java new file mode 100644 index 000000000..eec626d2c --- /dev/null +++ b/src/main/java/com/hbm/blocks/bomb/LaunchPadRusted.java @@ -0,0 +1,81 @@ +package com.hbm.blocks.bomb; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.interfaces.IBomb; +import com.hbm.tileentity.bomb.TileEntityLaunchPadRusted; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class LaunchPadRusted extends BlockDummyable implements IBomb { + + public LaunchPadRusted(Material mat) { + super(mat); + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5D, 0D, -1.5D, -0.5D, 1D, -0.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(0.5D, 0D, -1.5D, 1.5D, 1D, -0.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5D, 0D, 0.5D, -0.5D, 1D, 1.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(0.5D, 0D, 0.5D, 1.5D, 1D, 1.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.5D, 0.5D, -1.5D, 0.5D, 1D, 1.5D)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5D, 0.5D, -0.5D, 1.5D, 1D, 0.5D)); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityLaunchPadRusted(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public BombReturnCode explode(World world, int x, int y, int z) { + + if(!world.isRemote) { + + int[] corePos = findCore(world, x, y, z); + if(corePos != null){ + TileEntity core = world.getTileEntity(corePos[0], corePos[1], corePos[2]); + if(core instanceof TileEntityLaunchPadRusted){ + TileEntityLaunchPadRusted entity = (TileEntityLaunchPadRusted)core; + return entity.launch(); + } + } + } + + return BombReturnCode.UNDEFINED; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block blockIn){ + + if(!world.isRemote){ + + int[] corePos = findCore(world, x, y, z); + if(corePos != null){ + TileEntity core = world.getTileEntity(corePos[0], corePos[1], corePos[2]); + if(core instanceof TileEntityLaunchPadRusted){ + TileEntityLaunchPadRusted launchpad = (TileEntityLaunchPadRusted)core; + launchpad.updateRedstonePower(x, y, z); + } + } + } + super.onNeighborBlockChange( world, x, y, z, blockIn); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java b/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java index d24000546..ff1ed304c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java @@ -155,17 +155,19 @@ public class BlockSnowglobe extends BlockContainer implements IGUIProvider { } public static enum SnowglobeType { - NONE( "NONE"), - RIVETCITY( "Rivet City"), - TENPENNYTOWER( "Tenpenny Tower"), - LUCKY38( "Lucky 38"), - SIERRAMADRE( "Sierra Madre"), - PRYDWEN( "Prydwen"); + NONE( "NONE", null), + RIVETCITY( "Rivet City", "Welcome to Rivet City. Please wait while the bridge extends."), + TENPENNYTOWER( "Tenpenny Tower", "Tenpenny Tower is the brainchild of Allistair Tenpenny, a British refugee who came to the Capital Wasteland seeking his fortune."), + LUCKY38( "Lucky 38", "My guess? Leads to a big cashout at some casino - and if the \"38\" on it is any indication... well... Lucky 38 it is."), + SIERRAMADRE( "Sierra Madre", "It's the moment you've been waiting for, the reason we're all here - the Gala Event, the Grand Opening of the Sierra Madre Casino."), + PRYDWEN( "Prydwen", "People of the Commonwealth. Do not interfere. Our intentions are peaceful. We are the Brotherhood of Steel."); public String label; + public String inscription; - private SnowglobeType(String label) { + private SnowglobeType(String label, String inscription) { this.label = label; + this.inscription = inscription; } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerLaunchPadRusted.java b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadRusted.java new file mode 100644 index 000000000..a69c5f4c1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerLaunchPadRusted.java @@ -0,0 +1,37 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.bomb.TileEntityLaunchPadRusted; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerLaunchPadRusted extends Container { + + private TileEntityLaunchPadRusted launchpad; + + public ContainerLaunchPadRusted(InventoryPlayer invPlayer, TileEntityLaunchPadRusted tedf) { + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 154 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 212)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int par2) { + return null; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return launchpad.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 8a2c09a26..8c97be180 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -621,8 +621,8 @@ public class Fluids { registerCalculatedFuel(CRACKOIL, (baseline / 1D * flammabilityLow * demandLow * complexityCracking), 0, null); registerCalculatedFuel(CRACKOIL_DS, (baseline / 1D * flammabilityLow * demandLow * complexityCracking * complexityHydro), 0, null); registerCalculatedFuel(OIL_COKER, (baseline / 1D * flammabilityLow * demandLow * complexityCoker), 0, null); - registerCalculatedFuel(GAS, (baseline / 1D * flammabilityNormal * demandVeryLow), 1.25, FuelGrade.GAS); - registerCalculatedFuel(GAS_COKER, (baseline / 1D * flammabilityNormal * demandVeryLow * complexityCoker), 1.25, FuelGrade.GAS); + registerCalculatedFuel(GAS, (baseline / 1D * flammabilityNormal * demandVeryLow), 1.5, FuelGrade.GAS); + registerCalculatedFuel(GAS_COKER, (baseline / 1D * flammabilityNormal * demandVeryLow * complexityCoker), 1.5, FuelGrade.GAS); registerCalculatedFuel(HEAVYOIL, (baseline / 0.5 * flammabilityLow * demandLow * complexityRefinery), 1.25D, FuelGrade.LOW); registerCalculatedFuel(SMEAR, (baseline / 0.35 * flammabilityLow * demandLow * complexityRefinery * complexityFraction), 1.25D, FuelGrade.LOW); registerCalculatedFuel(RECLAIMED, (baseline / 0.28 * flammabilityLow * demandLow * complexityRefinery * complexityFraction * complexityChemplant), 1.25D, FuelGrade.LOW); @@ -641,10 +641,10 @@ public class Fluids { registerCalculatedFuel(LIGHTOIL_DS, (baseline / 0.15 * flammabilityNormal * demandHigh * complexityRefinery * complexityHydro), 1.5D, FuelGrade.MEDIUM); registerCalculatedFuel(LIGHTOIL_CRACK, (baseline / 0.30 * flammabilityNormal * demandHigh * complexityRefinery * complexityCracking), 1.5D, FuelGrade.MEDIUM); registerCalculatedFuel(KEROSENE, (baseline / 0.09 * flammabilityNormal * demandHigh * complexityRefinery * complexityFraction), 1.5D, FuelGrade.AERO); - registerCalculatedFuel(PETROLEUM, (baseline / 0.10 * flammabilityNormal * demandMedium * complexityRefinery), 1.25, FuelGrade.GAS); + registerCalculatedFuel(PETROLEUM, (baseline / 0.10 * flammabilityNormal * demandMedium * complexityRefinery), 1.5, FuelGrade.GAS); registerCalculatedFuel(AROMATICS, (baseline / 0.15 * flammabilityLow * demandHigh * complexityRefinery * complexityCracking), 0, null); registerCalculatedFuel(UNSATURATEDS, (baseline / 0.15 * flammabilityHigh * demandHigh * complexityRefinery * complexityCracking), 0, null); - registerCalculatedFuel(LPG, (baseline / 0.05 * flammabilityNormal * demandMedium * complexityRefinery * complexityChemplant), 2.5, FuelGrade.HIGH); + registerCalculatedFuel(LPG, (baseline / 0.1 * flammabilityNormal * demandMedium * complexityRefinery * complexityChemplant), 2.5, FuelGrade.HIGH); registerCalculatedFuel(NITAN, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * 25L, 2.5, FuelGrade.HIGH); registerCalculatedFuel(BALEFIRE, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * 100L, 2.5, FuelGrade.HIGH); registerCalculatedFuel(HEAVYOIL_VACUUM, (baseline / 0.4 * flammabilityLow * demandLow * complexityVacuum), 1.25D, FuelGrade.LOW); @@ -656,7 +656,7 @@ public class Fluids { registerCalculatedFuel(DIESEL_REFORM, DIESEL.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 2.5D, FuelGrade.HIGH); registerCalculatedFuel(DIESEL_CRACK_REFORM, DIESEL_CRACK.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 2.5D, FuelGrade.HIGH); registerCalculatedFuel(KEROSENE_REFORM, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 1.5D, FuelGrade.AERO); - registerCalculatedFuel(REFORMGAS, (baseline / 0.06 * flammabilityHigh * demandLow * complexityVacuum * complexityFraction), 1.25D, FuelGrade.GAS); + registerCalculatedFuel(REFORMGAS, (baseline / 0.06 * flammabilityHigh * demandLow * complexityVacuum * complexityFraction), 1.5D, FuelGrade.GAS); //all hail the spreadsheet //the spreadsheet must not be questioned diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index ae7dbc1b1..092b1080f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -284,7 +284,7 @@ public class GUIAnvil extends GuiContainer { for(AStack stack : recipe.input) { if(stack instanceof ComparableStack) { - ItemStack input = ((ComparableStack) stack).toStack(); + ComparableStack input = (ComparableStack) stack; boolean hasItem = false; int amount = 0; for(int i = 0; i < inventory.mainInventory.length; i++) { @@ -292,15 +292,15 @@ public class GUIAnvil extends GuiContainer { if(stackItem == null) { continue; } - if(stackItem.getItem() == input.getItem() && input.getItemDamage() == stackItem.getItemDamage()) { + if(input.matchesRecipe(stackItem, true)) { hasItem = true; amount += stackItem.stackSize; } } if(hasItem && amount >= stack.stacksize) { - list.add(">" + input.stackSize + "x " + input.getDisplayName()); + list.add(">" + input.stacksize + "x " + input.toStack().getDisplayName()); } else { - list.add(EnumChatFormatting.RED + ">" + input.stackSize + "x " + input.getDisplayName()); + list.add(EnumChatFormatting.RED + ">" + input.stacksize + "x " + input.toStack().getDisplayName()); } } else if(stack instanceof OreDictStack) { OreDictStack input = (OreDictStack) stack; diff --git a/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java b/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java new file mode 100644 index 000000000..2a4d6d626 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java @@ -0,0 +1,84 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerLaunchPadRusted; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.bomb.TileEntityLaunchPadRusted; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUILaunchPadRusted extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_launch_pad_rusted.png"); + private TileEntityLaunchPadRusted launchpad; + + public GUILaunchPadRusted(InventoryPlayer invPlayer, TileEntityLaunchPadRusted tedf) { + super(new ContainerLaunchPadRusted(invPlayer, tedf)); + launchpad = tedf; + + this.xSize = 176; + this.ySize = 236; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.launchpad.hasCustomInventoryName() ? this.launchpad.getInventoryName() : I18n.format(this.launchpad.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + /*if(launchpad.slots[0] != null) { + Consumer renderer = ItemRenderMissileGeneric.renderers.get(new ComparableStack(launchpad.slots[0]).makeSingular()); + if(renderer != null) { + GL11.glPushMatrix(); + + GL11.glTranslatef(guiLeft + 70, guiTop + 120, 100); + + double scale = 1D; + + if(launchpad.slots[0].getItem() instanceof ItemMissile) { + ItemMissile missile = (ItemMissile) launchpad.slots[0].getItem(); + switch(missile.formFactor) { + case ABM: scale = 1.45D; break; + case MICRO: scale = 2.5D; break; + case V2: scale = 1.75D; break; + case STRONG: scale = 1.375D; break; + case HUGE: scale = 0.925D; break; + case ATLAS: scale = 0.875D; break; + case OTHER: break; + } + if(missile == ModItems.missile_stealth) scale = 1.125D; + } + + GL11.glRotatef(90, 0, 1, 0); + GL11.glScaled(scale, scale, scale); + GL11.glScalef(-8, -8, -8); + + GL11.glPushMatrix(); + GL11.glRotatef(75, 0.0F, 1.0F, 0.0F); + RenderHelper.enableStandardItemLighting(); + GL11.glPopMatrix(); + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + renderer.accept(Minecraft.getMinecraft().getTextureManager()); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } + }*/ + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSnowglobe.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSnowglobe.java index 7fb95e184..03021464e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSnowglobe.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSnowglobe.java @@ -1,8 +1,11 @@ package com.hbm.inventory.gui; +import java.util.List; + import org.lwjgl.opengl.GL11; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.util.I18nUtil; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; @@ -78,7 +81,7 @@ public class GUIScreenSnowglobe extends GuiScreen { } nextLevel += 10; - } + }*/ if(this.snowglobe.type.inscription != null) { @@ -87,14 +90,14 @@ public class GUIScreenSnowglobe extends GuiScreen { nextLevel += 10; - String[] list = this.snowglobe.type.inscription.split("\\$"); + List list = I18nUtil.autoBreakWithParagraphs(this.fontRendererObj, this.snowglobe.type.inscription, 280); for(String text : list) { this.fontRendererObj.drawStringWithShadow(text, (int)(left + sizeX / 2 - this.fontRendererObj.getStringWidth(text) / 2), nextLevel, 0x009900); nextLevel += 10; } nextLevel += 10; - }*/ + } GL11.glEnable(GL11.GL_LIGHTING); } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index e510ee224..2a618ce69 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -23,6 +23,7 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; public class AnvilRecipes { @@ -753,7 +754,7 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.ingot_tcalloy, 1), 0.25F) } ).setTier(3)); - + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.deco_computer), new AnvilOutput[] { @@ -765,6 +766,58 @@ public class AnvilRecipes { } ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.deco_crt, 1, OreDictionary.WILDCARD_VALUE), + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.crt_display, 1)), + new AnvilOutput(new ItemStack(ModItems.scrap, 2)), + new AnvilOutput(new ItemStack(ModItems.wire_copper, 2)), + new AnvilOutput(new ItemStack(ModItems.wire_gold, 2), 0.25F), + new AnvilOutput(new ItemStack(ModItems.circuit_aluminium, 1), 0.25F) + + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.deco_toaster, 1, 0), //iron toaster + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.plate_iron, 3)), + new AnvilOutput(new ItemStack(ModItems.scrap, 1)), + new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 1)), + new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F), + new AnvilOutput(new ItemStack(ModItems.battery_generic, 1), 0.25F), + new AnvilOutput(new ItemStack(ModItems.battery_advanced, 1), 0.1F), + new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.01F) + + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.deco_toaster, 1, 1), // steel toaster + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.plate_steel, 3)), + new AnvilOutput(new ItemStack(ModItems.scrap, 1)), + new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 2)), + new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F), + new AnvilOutput(new ItemStack(ModItems.battery_lithium, 1), 0.25F), + new AnvilOutput(new ItemStack(ModItems.battery_sc_uranium, 1), 0.1F), + new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.05F) + + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModBlocks.deco_toaster, 1, 2), // wooden toaster + new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.powder_sawdust, 4)), + new AnvilOutput(new ItemStack(ModItems.scrap, 1)), + new AnvilOutput(new ItemStack(ModItems.coil_tungsten, 4)), + new AnvilOutput(new ItemStack(Items.bread, 1), 0.5F), + new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.5F), + new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.5F), + new AnvilOutput(new ItemStack(ModItems.gem_alexandrite, 1), 0.25F), + new AnvilOutput(new ItemStack(ModItems.flame_pony, 1), 0.01F) + + } + ).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.filing_cabinet), new AnvilOutput[] { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 71d8d9173..badd7a22b 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1303,6 +1303,10 @@ public class ModItems { public static Item bobmazon_tools; public static Item bobmazon_hidden; + public static Item launch_code_piece; + public static Item launch_code; + public static Item launch_key; + public static Item missile_assembly; public static Item missile_generic; public static Item missile_anti_ballistic; @@ -3929,6 +3933,9 @@ public class ModItems { designator_range = new ItemDesingatorRange().setUnlocalizedName("designator_range").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":designator_range_alt"); designator_manual = new ItemDesingatorManual().setUnlocalizedName("designator_manual").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":designator_manual"); designator_arty_range = new ItemDesignatorArtyRange().setUnlocalizedName("designator_arty_range").setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":designator_arty_range"); + launch_code_piece = new Item().setUnlocalizedName("launch_code_piece").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":launch_code_piece"); + launch_code = new Item().setUnlocalizedName("launch_code").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":launch_code"); + launch_key = new Item().setUnlocalizedName("launch_key").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":launch_key"); missile_assembly = new Item().setUnlocalizedName("missile_assembly").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":missile_assembly"); missile_generic = new ItemMissile(MissileFormFactor.V2, MissileTier.TIER1).setUnlocalizedName("missile_generic").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_generic"); missile_anti_ballistic = new ItemMissile(MissileFormFactor.ABM, MissileTier.TIER1).setUnlocalizedName("missile_anti_ballistic").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_anti_ballistic"); @@ -6843,9 +6850,7 @@ public class ModItems { GameRegistry.registerItem(designator_range, designator_range.getUnlocalizedName()); GameRegistry.registerItem(designator_manual, designator_manual.getUnlocalizedName()); GameRegistry.registerItem(designator_arty_range, designator_arty_range.getUnlocalizedName()); - //GameRegistry.registerItem(turret_control, turret_control.getUnlocalizedName()); GameRegistry.registerItem(turret_chip, turret_chip.getUnlocalizedName()); - //GameRegistry.registerItem(turret_biometry, turret_biometry.getUnlocalizedName()); GameRegistry.registerItem(linker, linker.getUnlocalizedName()); GameRegistry.registerItem(reactor_sensor, reactor_sensor.getUnlocalizedName()); GameRegistry.registerItem(oil_detector, oil_detector.getUnlocalizedName()); @@ -6877,6 +6882,9 @@ public class ModItems { GameRegistry.registerItem(padlock, padlock.getUnlocalizedName()); GameRegistry.registerItem(padlock_reinforced, padlock_reinforced.getUnlocalizedName()); GameRegistry.registerItem(padlock_unbreakable, padlock_unbreakable.getUnlocalizedName()); + GameRegistry.registerItem(launch_code_piece, launch_code_piece.getUnlocalizedName()); + GameRegistry.registerItem(launch_code, launch_code.getUnlocalizedName()); + GameRegistry.registerItem(launch_key, launch_key.getUnlocalizedName()); //Missiles //Tier 0 diff --git a/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java b/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java index 2292b028f..f8ad256b6 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSnowglobe.java @@ -3,17 +3,25 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockSnowglobe.SnowglobeType; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.lib.RefStrings; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.loader.HFRWavefrontObject; +import com.hbm.util.EnumUtil; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.model.IModelCustom; -public class RenderSnowglobe extends TileEntitySpecialRenderer { +public class RenderSnowglobe extends TileEntitySpecialRenderer implements IItemRendererProvider { public static final IModelCustom snowglobe = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/snowglobe.obj"), false).asDisplayList(); public static final ResourceLocation socket = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/snowglobe.png"); @@ -25,21 +33,29 @@ public class RenderSnowglobe extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glRotated(22.5D * tile.getBlockMetadata() + 90, 0, -1, 0); + + TileEntitySnowglobe te = (TileEntitySnowglobe) tile; + renderSnowglobe(te.type); + + GL11.glPopMatrix(); + } + + public static void renderSnowglobe(SnowglobeType type) { + GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - - GL11.glRotated(22.5D * tile.getBlockMetadata() + 90, 0, -1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); double scale = 0.0625D; GL11.glScaled(scale, scale, scale); - this.bindTexture(socket); + Minecraft.getMinecraft().getTextureManager().bindTexture(socket); snowglobe.renderPart("Socket"); - - TileEntitySnowglobe te = (TileEntitySnowglobe) tile; - this.bindTexture(features); - switch(te.type) { + Minecraft.getMinecraft().getTextureManager().bindTexture(features); + + switch(type) { case NONE: break; case RIVETCITY: snowglobe.renderPart("RivetCity"); break; case TENPENNYTOWER: snowglobe.renderPart("TenpennyTower"); break; @@ -48,7 +64,28 @@ public class RenderSnowglobe extends TileEntitySpecialRenderer { case PRYDWEN: snowglobe.renderPart("Prydwen"); break; default: break; } - - GL11.glPopMatrix(); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.snowglobe); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(10, 10, 10); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glTranslated(0, 0.25, 0); + GL11.glScaled(3, 3, 3); + SnowglobeType type = EnumUtil.grabEnumSafely(SnowglobeType.class, item.getItemDamage()); + renderSnowglobe(type); + }}; } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 0ac00c5e2..857c3a3a1 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -88,14 +88,12 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase implements IEne @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - this.delay = nbt.getInteger("delay"); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setInteger("delay", delay); } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java new file mode 100644 index 000000000..ae6320306 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java @@ -0,0 +1,132 @@ +package com.hbm.tileentity.bomb; + +import java.util.HashSet; +import java.util.Set; + +import com.hbm.interfaces.IBomb.BombReturnCode; +import com.hbm.inventory.container.ContainerLaunchPadRusted; +import com.hbm.inventory.gui.GUILaunchPadRusted; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements IGUIProvider { + + public int prevRedstonePower; + public int redstonePower; + public Set activatedBlocks = new HashSet<>(4); + + public boolean missileLoaded; + + public TileEntityLaunchPadRusted() { + super(3); + } + + @Override + public String getName() { + return "container.launchPadRusted"; + } + + @Override + public void updateEntity() { + + } + + public BombReturnCode launch() { + return BombReturnCode.UNDEFINED; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.redstonePower = nbt.getInteger("redstonePower"); + this.prevRedstonePower = nbt.getInteger("prevRedstonePower"); + NBTTagCompound activatedBlocks = nbt.getCompoundTag("activatedBlocks"); + this.activatedBlocks.clear(); + for(int i = 0; i < activatedBlocks.func_150296_c().size() / 3; i++) { + this.activatedBlocks.add(new BlockPos(activatedBlocks.getInteger("x" + i), activatedBlocks.getInteger("y" + i), activatedBlocks.getInteger("z" + i))); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("redstonePower", redstonePower); + nbt.setInteger("prevRedstonePower", prevRedstonePower); + NBTTagCompound activatedBlocks = new NBTTagCompound(); + int i = 0; + for(BlockPos p : this.activatedBlocks) { + activatedBlocks.setInteger("x" + i, p.getX()); + activatedBlocks.setInteger("y" + i, p.getY()); + activatedBlocks.setInteger("z" + i, p.getZ()); + i++; + } + nbt.setTag("activatedBlocks", activatedBlocks); + } + + public void updateRedstonePower(int x, int y, int z) { + BlockPos pos = new BlockPos(x, y, z); + boolean powered = worldObj.isBlockIndirectlyGettingPowered(x, y, z); + boolean contained = activatedBlocks.contains(pos); + if(!contained && powered){ + activatedBlocks.add(pos); + if(redstonePower == -1){ + redstonePower = 0; + } + redstonePower++; + } else if(contained && !powered){ + activatedBlocks.remove(pos); + redstonePower--; + if(redstonePower == 0){ + redstonePower = -1; + } + } + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 15, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerLaunchPadRusted(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUILaunchPadRusted(player.inventory, this); + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/gui_launch_pad_rusted.png b/src/main/resources/assets/hbm/textures/gui/weapon/gui_launch_pad_rusted.png new file mode 100644 index 000000000..97741eba5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/weapon/gui_launch_pad_rusted.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/weapon/gui_launch_pad_structure.png b/src/main/resources/assets/hbm/textures/gui/weapon/gui_launch_pad_structure.png deleted file mode 100644 index a2dc1aad1..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/weapon/gui_launch_pad_structure.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/launch_code.png b/src/main/resources/assets/hbm/textures/items/launch_code.png new file mode 100644 index 000000000..ef5db0f47 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/launch_code.png differ diff --git a/src/main/resources/assets/hbm/textures/items/launch_code_piece.png b/src/main/resources/assets/hbm/textures/items/launch_code_piece.png new file mode 100644 index 000000000..ee74304f5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/launch_code_piece.png differ diff --git a/src/main/resources/assets/hbm/textures/items/launch_key.png b/src/main/resources/assets/hbm/textures/items/launch_key.png new file mode 100644 index 000000000..7bdc33ec4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/launch_key.png differ