From fff48c5ca12a7cbc83b85c980ac20eb0e6b2883e Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 16 Oct 2022 18:13:56 +0200 Subject: [PATCH] and there we go --- src/main/java/com/hbm/blocks/ModBlocks.java | 12 +-- .../hbm/blocks/generic/BlockStorageCrate.java | 8 +- .../blocks/machine/DummyBlockAssembler.java | 5 -- .../hbm/blocks/machine/MachineHeatBoiler.java | 18 +++- .../java/com/hbm/crafting/WeaponRecipes.java | 1 + .../handlers/CargoShellCraftingHandler.java | 81 ++++++++++++++++++ .../projectile/EntityArtilleryRocket.java | 20 +++++ .../projectile/EntityArtilleryShell.java | 51 +++++++++++ .../projectile/EntityThrowableInterp.java | 4 - .../entity/projectile/EntityThrowableNT.java | 4 +- .../hbm/inventory/gui/GuiInfoContainer.java | 5 +- .../inventory/recipes/AssemblerRecipes.java | 33 ++++++- .../hbm/inventory/recipes/MachineRecipes.java | 3 - .../com/hbm/items/tool/ItemOilDetector.java | 17 ++-- .../com/hbm/items/weapon/ItemAmmoArty.java | 24 +++++- .../com/hbm/items/weapon/ItemAmmoHIMARS.java | 1 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 3 +- .../hbm/render/item/ItemRenderLibrary.java | 20 ++++- .../machine/TileEntityCrucible.java | 3 +- .../machine/TileEntityHeatBoiler.java | 1 - .../tileentity/machine/TileEntityITER.java | 13 ++- .../machine/rbmk/TileEntityRBMKRod.java | 6 +- .../network/TileEntityConverterRfHe.java | 2 +- .../turret/TileEntityTurretArty.java | 22 +++-- .../turret/TileEntityTurretHIMARS.java | 8 +- src/main/resources/assets/hbm/lang/de_DE.lang | 50 +++++++++-- src/main/resources/assets/hbm/lang/en_US.lang | 42 ++++++++- .../hbm/textures/items/ammo_arty_cargo.png | Bin 311 -> 365 bytes .../textures/items/ammo_arty_cargo_full.png | Bin 0 -> 311 bytes .../textures/items/ammo_arty_cargo_open.png | Bin 365 -> 0 bytes .../hbm/textures/models/turrets/himars.png | Bin 4115 -> 5466 bytes src/main/resources/mcmod.info | 2 +- 34 files changed, 395 insertions(+), 67 deletions(-) create mode 100644 src/main/java/com/hbm/crafting/handlers/CargoShellCraftingHandler.java create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_arty_cargo_full.png delete mode 100644 src/main/resources/assets/hbm/textures/items/ammo_arty_cargo_open.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 00ebc6cc9..bb9c059d0 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2982,12 +2982,12 @@ public class ModBlocks { GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); //Crates - GameRegistry.registerBlock(crate_iron, crate_iron.getUnlocalizedName()); - GameRegistry.registerBlock(crate_steel, crate_steel.getUnlocalizedName()); - GameRegistry.registerBlock(crate_desh, crate_desh.getUnlocalizedName()); - GameRegistry.registerBlock(crate_tungsten, crate_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(safe, safe.getUnlocalizedName()); - GameRegistry.registerBlock(mass_storage, ItemBlockBase.class, mass_storage.getUnlocalizedName()); + register(crate_iron); + register(crate_steel); + register(crate_desh); + register(crate_tungsten); + register(safe); + register(mass_storage); //Junk GameRegistry.registerBlock(boxcar, boxcar.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java index 5dddb69ed..8844789ea 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java @@ -3,6 +3,7 @@ package com.hbm.blocks.generic; import java.io.IOException; import java.util.Random; +import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemLock; @@ -38,7 +39,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class BlockStorageCrate extends BlockContainer { +public class BlockStorageCrate extends BlockContainer implements IBlockMulti { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -264,4 +265,9 @@ public class BlockStorageCrate extends BlockContainer { public Item getItemDropped(int i, Random rand, int j) { return null; } + + @Override + public int getSubCount() { + return 0; + } } diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java b/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java index 18719d914..9eacde4da 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java @@ -1,9 +1,6 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IDummy; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityMachineAssembler; @@ -11,8 +8,6 @@ import com.hbm.tileentity.machine.TileEntityMachineAssembler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; 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.entity.player.EntityPlayer; import net.minecraft.item.Item; diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java index c4d6bdc67..4264b777d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java @@ -6,9 +6,11 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.trait.FT_Heatable; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityHeatBoiler; @@ -29,7 +31,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; -public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, IBlockMulti { +public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, ITooltipProvider, IBlockMulti { public MachineHeatBoiler() { super(Material.iron); @@ -112,9 +114,12 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I int[] pos = this.findCore(world, x, y, z); if(pos != null) { - TileEntityHeatBoiler stirling = (TileEntityHeatBoiler)world.getTileEntity(pos[0], pos[1], pos[2]); - if(stirling.hasExploded) { - dmg = 1; + TileEntityHeatBoiler boiler = (TileEntityHeatBoiler)world.getTileEntity(pos[0], pos[1], pos[2]); + if(boiler.hasExploded) { + //dmg = 1; + ret.add(new ItemStack(ModItems.ingot_steel, 4)); + ret.add(new ItemStack(ModItems.plate_copper, 8)); + return ret; } } @@ -180,4 +185,9 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I public int getSubCount() { return 0; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 2ca3c5638..d5e80cfa2 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -282,6 +282,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 3), new Object[] { " P ", "NSN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 0) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 6), new Object[] { "DSD", "SCS", "DSD", 'D', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 3), 'C', ModBlocks.det_cord }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, ModItems.circuit_red_copper, ModItems.ducttape }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 8), new Object[] { " I ", " S ", "CCC", 'C', ModItems.cordite, 'I', ModItems.sphere_steel, 'S', ModItems.hull_small_steel }); //DGK Belts CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_dgk, 1), new Object[] { "LLL", "GGG", "CCC", 'L', PB.plate(), 'G', ModItems.ballistite, 'C', CU.ingot() }); diff --git a/src/main/java/com/hbm/crafting/handlers/CargoShellCraftingHandler.java b/src/main/java/com/hbm/crafting/handlers/CargoShellCraftingHandler.java new file mode 100644 index 000000000..0dc724a49 --- /dev/null +++ b/src/main/java/com/hbm/crafting/handlers/CargoShellCraftingHandler.java @@ -0,0 +1,81 @@ +package com.hbm.crafting.handlers; + +import com.hbm.items.ModItems; + +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class CargoShellCraftingHandler implements IRecipe { + + @Override + public boolean matches(InventoryCrafting inventory, World world) { + + int itemCount = 0; + int shellCount = 0; + + for(int i = 0; i < 9; i++) { + ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3); + + if(stack != null) { + + if(stack.getItem().hasContainerItem(stack) || !stack.getItem().doesContainerItemLeaveCraftingGrid(stack)) + return false; + + itemCount++; + + if(stack.getItem() == ModItems.ammo_arty && stack.getItemDamage() == 8 && !stack.hasTagCompound()) { + shellCount++; + } + } + } + + return itemCount == 2 && shellCount == 1; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting inventory) { + + ItemStack shell = null; + ItemStack cargo = null; + + for(int i = 0; i < 9; i++) { + ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3); + + if(stack == null) + continue; + + if(stack.getItem() == ModItems.ammo_arty && stack.getItemDamage() == 8 && !stack.hasTagCompound()) { + ItemStack copy = stack.copy(); + copy.stackSize = 1; + shell = copy; + } else { + ItemStack copy = stack.copy(); + copy.stackSize = 1; + cargo = copy; + } + } + + if(shell == null || cargo == null) + return null; + + if(!shell.hasTagCompound()) + shell.stackTagCompound = new NBTTagCompound(); + + shell.stackTagCompound.setTag("cargo", cargo.writeToNBT(new NBTTagCompound())); + + return shell; + } + + @Override + public int getRecipeSize() { + return 9; + } + + @Override + public ItemStack getRecipeOutput() { + return new ItemStack(ModItems.ammo_shell, 1, 8); + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java index 41f75310e..5f906b878 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java @@ -86,6 +86,13 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu @Override public void onUpdate() { + + if(worldObj.isRemote) { + this.lastTickPosX = this.posX; + this.lastTickPosY = this.posY; + this.lastTickPosZ = this.posZ; + } + super.onUpdate(); if(!worldObj.isRemote) { @@ -103,6 +110,14 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); this.getType().onUpdate(this); + } else { + + Vec3 v = Vec3.createVectorHelper(lastTickPosX - posX, lastTickPosY - posY, lastTickPosZ - posZ); + double velocity = v.lengthVector(); + v = v.normalize(); + + int offset = 6; + if(velocity > 1) for(int i = offset; i < velocity + offset; i++) MainRegistry.proxy.spawnParticle(posX + v.xCoord * i, posY + v.yCoord * i, posZ + v.zCoord * i, "exKerosene", null); } } @@ -195,4 +210,9 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu public RadarTargetType getTargetType() { return RadarTargetType.ARTILLERY; } + + @Override + public int approachNum() { + return 0; // + } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java index 8e66e0b47..b7a4c3e80 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java @@ -11,9 +11,12 @@ import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraftforge.common.ForgeChunkManager; @@ -43,9 +46,12 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa private boolean shouldWhistle = false; private boolean didWhistle = false; + private ItemStack cargo = null; + public EntityArtilleryShell(World world) { super(world); this.ignoreFrustumCheck = true; + this.setSize(0.5F, 0.5F); } @Override @@ -133,6 +139,10 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa } else { this.setPosition(this.posX, this.posY, this.posZ); } + + if(Vec3.createVectorHelper(this.syncPosX - this.posX, this.syncPosY - this.posY, this.syncPosZ - this.posZ).lengthVector() < 0.2) { + worldObj.spawnParticle("smoke", posX, posY + 0.5, posZ, 0.0, 0.1, 0.0); + } } } @@ -210,22 +220,30 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); + nbt.setInteger("type", this.dataWatcher.getWatchableObjectInt(10)); nbt.setBoolean("shouldWhistle", this.shouldWhistle); nbt.setBoolean("didWhistle", this.didWhistle); nbt.setDouble("targetX", this.targetX); nbt.setDouble("targetY", this.targetY); nbt.setDouble("targetZ", this.targetZ); + + if(this.cargo != null) + nbt.setTag("cargo", this.cargo.writeToNBT(new NBTTagCompound())); } @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); + this.dataWatcher.updateObject(10, nbt.getInteger("type")); this.shouldWhistle = nbt.getBoolean("shouldWhistle"); this.didWhistle = nbt.getBoolean("didWhistle"); this.targetX = nbt.getDouble("targetX"); this.targetY = nbt.getDouble("targetY"); this.targetZ = nbt.getDouble("targetZ"); + + NBTTagCompound compound = nbt.getCompoundTag("cargo"); + this.setCargo(ItemStack.loadItemStackFromNBT(compound)); } @Override @@ -238,6 +256,39 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa return 9.81 * 0.05; } + @Override + protected int groundDespawn() { + return cargo != null ? 0 : 1200; + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + public boolean canAttackWithItem() { + return true; + } + + public void setCargo(ItemStack stack) { + this.cargo = stack; + } + + @Override + public boolean interactFirst(EntityPlayer player) { + + if(!worldObj.isRemote) { + if(this.cargo != null) { + player.inventory.addItemStackToInventory(this.cargo.copy()); + player.inventoryContainer.detectAndSendChanges(); + } + this.setDead(); + } + + return false; + } + @Override public RadarTargetType getTargetType() { return RadarTargetType.ARTILLERY; diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java index d211ce964..08c860a57 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableInterp.java @@ -32,10 +32,6 @@ public abstract class EntityThrowableInterp extends EntityThrowableNT { public void onUpdate() { if(!worldObj.isRemote) { - int orientation = this.dataWatcher.getWatchableObjectInt(10); - if(orientation >= 6 && !this.inGround) { - this.dataWatcher.updateObject(10, orientation - 6); - } super.onUpdate(); } else { if(this.turnProgress > 0) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index 86e57240b..608f999d5 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -226,8 +226,8 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.prevRotationYaw += 360.0F; } - //this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; - //this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; float drag = this.getAirDrag(); double gravity = this.getGravityVelocity(); diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index bc473af93..46836a484 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -150,8 +150,8 @@ public abstract class GuiInfoContainer extends GuiContainer { minY = this.height - height - 6; } - this.zLevel = 300.0F; - itemRender.zLevel = 300.0F; + this.zLevel = 400.0F; + itemRender.zLevel = 400.0F; //int j1 = -267386864; int colorBg = 0xF0100010; this.drawGradientRect(minX - 3, minY - 4, minX + longestline + 3, minY - 3, colorBg, colorBg); @@ -193,6 +193,7 @@ public abstract class GuiInfoContainer extends GuiContainer { this.drawGradientRect(minX + indent - 1, minY - 1, minX + indent + 17, minY + 17, 0xffff0000, 0xffff0000); this.drawGradientRect(minX + indent, minY, minX + indent + 16, minY + 16, 0xffb0b0b0, 0xffb0b0b0); } + GL11.glEnable(GL11.GL_DEPTH_TEST); itemRender.renderItemAndEffectIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), stack, minX + indent, minY); itemRender.renderItemOverlayIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), stack, minX + indent, minY, null); RenderHelper.disableStandardItemLighting(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 078efd54c..32e0180c0 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -284,7 +284,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.block(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(STEEL.plate(), 16), new OreDictStack(AL.plate(), 6), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 8), },400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 16), new OreDictStack(STEEL.plate(), 20), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.coil_tungsten, 8), new ComparableStack(ModItems.wire_red_copper, 8), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },350); + makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.plate(), 16), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.canister_full, 1, Fluids.LUBRICANT.getID()), },160); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); @@ -395,7 +395,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.ams_limiter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 6), new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.crystal_diamond, 1)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_emitter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 24), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModItems.crystal_redstone, 5), new ComparableStack(ModBlocks.machine_lithium_battery)}, 600); makeRecipe(new ComparableStack(ModBlocks.ams_base, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 12), new OreDictStack(STEEL.plate(), 28), new ComparableStack(ModBlocks.steel_scaffold, 30), new ComparableStack(ModBlocks.steel_grate, 8), new ComparableStack(ModBlocks.barrel_steel, 2)}, 600); - makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 24), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); + makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.plate_polymer, 24), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300); makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit_targeting_tier5, 1), new ComparableStack(ModBlocks.machine_transformer, 1), },1000); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100); @@ -750,6 +750,35 @@ public class AssemblerRecipes { new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1) }, 200); + makeRecipe(new ComparableStack(ModBlocks.turret_himars, 1), new AStack[] { + new ComparableStack(ModBlocks.machine_battery, 1), + new OreDictStack(STEEL.ingot(), 128), + new OreDictStack(DURA.ingot(), 64), + new OreDictStack(ANY_PLASTIC.ingot(), 64), + new ComparableStack(ModItems.motor_desh, 5), + new ComparableStack(ModItems.circuit_targeting_tier4, 3), + new ComparableStack(ModItems.mechanism_launcher_2, 5), + new ComparableStack(ModBlocks.machine_radar, 1), + new ComparableStack(ModItems.crt_display, 1) + }, 300); + + makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, 0), new AStack[] { + new OreDictStack(STEEL.plate(), 24), + new OreDictStack(ANY_PLASTIC.ingot(), 12), + new OreDictStack(ANY_SMOKELESS.dust(), 48), + new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 6), + new ComparableStack(ModItems.circuit_copper, 6), + new ComparableStack(ModItems.wire_gold, 12) + }, 100); + + makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, 1), new AStack[] { + new OreDictStack(STEEL.plate(), 24), + new OreDictStack(ANY_PLASTIC.ingot(), 6), + new OreDictStack(ANY_SMOKELESS.dust(), 36), + new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), + new ComparableStack(ModItems.circuit_red_copper, 2), + new ComparableStack(ModItems.wire_gold, 8) + }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_silex, 1), new AStack[] { new ComparableStack(Blocks.glass, 12), diff --git a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java index e770043aa..4152a9c40 100644 --- a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java @@ -28,9 +28,6 @@ public class MachineRecipes { //return: FluidType, amount produced, amount required, heat required (°C * 100) public static Object[] getBoilerOutput(FluidType type) { - if(type == Fluids.WATER) return new Object[] { Fluids.STEAM, 500, 5, 10000 }; - if(type == Fluids.STEAM) return new Object[] { Fluids.HOTSTEAM, 5, 50, 30000 }; - if(type == Fluids.HOTSTEAM) return new Object[] { Fluids.SUPERHOTSTEAM, 5, 50, 45000 }; if(type == Fluids.OIL) return new Object[] { Fluids.HOTOIL, 5, 5, 35000 }; if(type == Fluids.CRACKOIL) return new Object[] { Fluids.HOTCRACKOIL, 5, 5, 35000 }; diff --git a/src/main/java/com/hbm/items/tool/ItemOilDetector.java b/src/main/java/com/hbm/items/tool/ItemOilDetector.java index ce1c5fa0c..45d41af10 100644 --- a/src/main/java/com/hbm/items/tool/ItemOilDetector.java +++ b/src/main/java/com/hbm/items/tool/ItemOilDetector.java @@ -3,13 +3,16 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -77,17 +80,17 @@ public class ItemOilDetector extends Item { oil = true; if(!world.isRemote) { - + if(direct) { - player.addChatMessage(new ChatComponentTranslation(this.getUnlocalizedName() + ".bullseye").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_GREEN))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(this.getUnlocalizedName() + ".bullseye").color(EnumChatFormatting.DARK_GREEN).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); } else if(oil) { - player.addChatMessage(new ChatComponentTranslation(this.getUnlocalizedName() + ".detected").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(this.getUnlocalizedName() + ".detected").color(EnumChatFormatting.GOLD).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); } else { - player.addChatMessage(new ChatComponentTranslation(this.getUnlocalizedName() + ".noOil").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(this.getUnlocalizedName() + ".noOil").color(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); } } - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); player.swingItem(); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 24aefdb0e..29ef557c4 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -121,10 +121,20 @@ public class ItemAmmoArty extends Item { list.add(r + "(that is the best skull and crossbones"); list.add(r + "minecraft's unicode has to offer)"); break; + case CARGO: + + if(stack.hasTagCompound() && stack.stackTagCompound.getCompoundTag("cargo") != null) { + ItemStack cargo = ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("cargo")); + list.add(y + cargo.getDisplayName()); + } else { + list.add(r + "Empty"); + } + break; } } - + private IIcon[] icons = new IIcon[itemTypes.length]; + private IIcon iconCargo; @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { @@ -134,6 +144,18 @@ public class ItemAmmoArty extends Item { for(int i = 0; i < icons.length; i++) { this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + itemTypes[i].name); } + + this.iconCargo = reg.registerIcon(RefStrings.MODID + ":ammo_arty_cargo_full"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack stack) { + + if(stack.getItemDamage() == CARGO && stack.hasTagCompound() && stack.stackTagCompound.getCompoundTag("cargo") != null) { + return this.iconCargo; + } + + return this.getIconFromDamage(stack.getItemDamage()); } @Override diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 4809a7c80..0a76f7cd9 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -32,6 +32,7 @@ public class ItemAmmoHIMARS extends Item { this.setHasSubtypes(true); this.setCreativeTab(MainRegistry.weaponTab); this.setTextureName(RefStrings.MODID + ":ammo_rocket"); + this.setMaxStackSize(1); init(); } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 7039d641b..4b6627a13 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4375)"; + public static final String VERSION = "1.0.27 BETA (4389)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 3bd5870e2..dedc6be3e 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -384,6 +384,7 @@ public class ClientProxy extends ServerProxy { //templates MinecraftForgeClient.registerItemRenderer(ModItems.assembly_template, new ItemRenderTemplate()); MinecraftForgeClient.registerItemRenderer(ModItems.chemistry_template, new ItemRenderTemplate()); + MinecraftForgeClient.registerItemRenderer(ModItems.crucible_template, new ItemRenderTemplate()); //hot stuff MinecraftForgeClient.registerItemRenderer(ModItems.ingot_steel_dusted, new ItemRendererHot()); MinecraftForgeClient.registerItemRenderer(ModItems.ingot_chainsteel, new ItemRendererHot()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 98a15001b..6b1bbd525 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -2,7 +2,6 @@ package com.hbm.main; import java.util.ArrayList; import java.util.List; -import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockGenericStairs; @@ -59,10 +58,12 @@ public class CraftingManager { GameRegistry.addRecipe(new RBMKFuelCraftingHandler()); GameRegistry.addRecipe(new MKUCraftingHandler()); GameRegistry.addRecipe(new ToolboxCraftingHandler()); + GameRegistry.addRecipe(new CargoShellCraftingHandler()); //TODO: find out what this actually did RecipeSorter.register("hbm:rbmk", RBMKFuelCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:toolbox", ToolboxCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); + RecipeSorter.register("hbm:cargo", CargoShellCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:mku", MKUCraftingHandler.class, RecipeSorter.Category.SHAPED, "after:minecraft:shaped before:minecraft:shapeless"); } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 56032d009..717ec9cd5 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1360,8 +1360,9 @@ public class ItemRenderLibrary { renderers.put(ModItems.ammo_himars, new ItemRenderBase( ) { public void renderInventory() { - GL11.glTranslated(0, -2.5, 0); - GL11.glScaled(4, 4, 4); + GL11.glTranslated(0, -2, 0); + double scale = 2.75D; + GL11.glScaled(scale, scale, scale); GL11.glRotated(System.currentTimeMillis() % 3600 / 10D, 0, 1, 0); } public void renderCommonWithStack(ItemStack item) { @@ -1370,7 +1371,20 @@ public class ItemRenderLibrary { GL11.glRotated(90, 1, 0, 0); HIMARSRocket type = ItemAmmoHIMARS.itemTypes[item.getItemDamage()]; GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(type.texture); ResourceManager.turret_himars.renderPart(type.modelType == 0 ? "RocketStandard" : "RocketSingle"); + bindTexture(type.texture); + if(type.modelType == 0) { + GL11.glTranslated(0.75, 0, 0); + ResourceManager.turret_himars.renderPart("RocketStandard"); + GL11.glTranslated(-1.5, 0, 0); + GL11.glTranslated(0, -3.375D, 0); + ResourceManager.turret_himars.renderPart("TubeStandard"); + } else { + GL11.glTranslated(0.75, 0, 0); + ResourceManager.turret_himars.renderPart("RocketSingle"); + GL11.glTranslated(-1.5, 0, 0); + GL11.glTranslated(0, -3.375D, 0); + ResourceManager.turret_himars.renderPart("TubeSingle"); + } GL11.glShadeModel(GL11.GL_FLAT); }}); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 2f6a15989..91a84d522 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -266,7 +266,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro CrucibleRecipe recipe = getLoadedRecipe(); for(MaterialStack material : materials) { - boolean mainStack = recipe != null && getQuantaFromType(recipe.input, material.material) > 0; + boolean mainStack = recipe != null && (getQuantaFromType(recipe.input, material.material) > 0 || getQuantaFromType(recipe.output, material.material) > 0); if(mainStack) { this.addToStack(this.recipeStack, material); @@ -359,6 +359,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro //this allows pouring the ouput material back into the crucible if(recipe != null && getQuantaFromType(recipe.output, mat.material) > 0) { recipeAmount += mat.amount; + matchesRecipe = true; continue; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index dacc1993f..40e65db2a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -63,7 +63,6 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid if(this.tanks[1].getFill() > 0) { this.sendFluid(); - fillFluidInit(tanks[1].getTankType()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 4cccb4016..aae146248 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -272,7 +272,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser slots[1].stackSize--; - if(slots[1].stackSize <=0) + if(slots[1].stackSize <= 0) slots[1] = null; this.markDirty(); @@ -286,7 +286,16 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser @Override public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return new int[] { 2, 4 }; + return new int[] { 1, 2, 4 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + + if(i == 1 && BreederRecipes.getOutput(itemStack) != null) + return true; + + return false; } private void produceByproduct() { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index ed3c69a31..3f17d439b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -173,6 +173,8 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(rod.getStackInSlot(0) != null && rod.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { rod.receiveFlux(stream, flux); return 0; + } else { + return flux; } } @@ -190,7 +192,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return 0; } - //set neutrons to slow + //multiply neutron count with rod setting if(te instanceof TileEntityRBMKControl) { TileEntityRBMKControl control = (TileEntityRBMKControl)te; @@ -227,7 +229,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM int hits = 0; for(int h = 0; h <= limit; h++) { - if(!worldObj.getBlock(x, y, z).isOpaqueCube()) + if(!worldObj.getBlock(x, y + h, z).isOpaqueCube()) hits++; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index 4308103a6..0949504e7 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -30,7 +30,7 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn } private long subBuffer; - private boolean recursionBrake = false;; + private boolean recursionBrake = false; @Untested @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index cfc551c83..4ad7a19ee 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -160,17 +160,17 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen return mode == MODE_CANNON ? 20D : 50D; } - public int getShellLoaded() { + public ItemStack getShellLoaded() { for(int i = 1; i < 10; i++) { if(slots[i] != null) { if(slots[i].getItem() == ModItems.ammo_arty) { - return slots[i].getItemDamage(); + return slots[i]; } } } - return -1; + return null; } public void conusmeAmmo(Item ammo) { @@ -185,7 +185,7 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen this.markDirty(); } - public void spawnShell(int type) { + public void spawnShell(ItemStack type) { Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); @@ -196,7 +196,15 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, (float) getV0(), 0.0F); proj.setTarget((int) tPos.xCoord, (int) tPos.yCoord, (int) tPos.zCoord); - proj.setType(type); + proj.setType(type.getItemDamage()); + + if(type.getItemDamage() == 8 && type.hasTagCompound()) { + NBTTagCompound cargo = type.stackTagCompound.getCompoundTag("cargo"); + + if(cargo != null) { + proj.setCargo(ItemStack.loadItemStackFromNBT(cargo)); + } + } if(this.mode != this.MODE_CANNON) proj.setWhistle(true); @@ -353,9 +361,9 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen if(timer % delay == 0) { - int conf = this.getShellLoaded(); + ItemStack conf = this.getShellLoaded(); - if(conf != -1) { + if(conf != null) { this.spawnShell(conf); this.conusmeAmmo(ModItems.ammo_arty); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 25.0F, 1.0F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 58c0afe31..6e57f56b5 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -68,17 +68,17 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem @Override public double getBarrelLength() { - return 3D; + return 0.5D; } @Override public double getAcceptableInaccuracy() { - return 0; + return 5D; //they're guided missiles so who gives a shit } @Override public double getHeightOffset() { - return 3D; + return 5D; } @Override @@ -303,7 +303,7 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem if(this.hasAmmo() && this.tPos != null) { this.spawnShell(this.typeLoaded); this.ammo--; - this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 25.0F, 1.0F); + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.rocketFlame", 25.0F, 1.0F); } if(this.mode == this.MODE_MANUAL && !this.targetQueue.isEmpty()) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 6ff8568b3..5f43b32ef 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -10,7 +10,7 @@ achievement.bossMeltdown.desc=Mehr schlecht als recht, aber was will man machen. achievement.bossMeltdown=3,6 Röntgen achievement.bossWorm.desc=Der Fabstaff. Mein Arsch. Jetzt fang an zu rechnen. achievement.bossWorm=Disassembling Balls-O-Tron -achievement.bossUFO.desc=Yo, what do we have here? A huge spacecraft pulling up to the bloockship? +achievement.bossUFO.desc=Yo, what do we have here? A huge spacecraft pulling up to the blockship? achievement.bossUFO=Ayy Lmao achievement.c20_5.desc=??? achievement.c20_5=Kapitel [ZWANZIG KOMMA FÜNF] @@ -76,8 +76,8 @@ achievement.space.desc=Scheitere in jeder möglichen Weise und verschwende 90 Mi achievement.space=Die finale Grenz-ach vergiss es achievement.tasteofblood.desc=ist nicht Teil des Testprotokolls. achievement.tasteofblood=Der Geschmack von Blut -achievement.witchtaunter.desc=Diese komischen Kraturen können dir garnichts! -achievement.witchtaunter=Hexen verstpotten +achievement.witchtaunter.desc=Diese komischen Kreaturen können dir garnichts! +achievement.witchtaunter=Hexen verspotten armor.blastProtection=Explosionsmodifikator: %s armor.cap=Schadensobergrenze: %s @@ -385,6 +385,7 @@ container.turretArty=Greg container.turretChekhov=Tschechows Gewehr container.turretFriendly=Mister Friendly container.turretFritz=Fritz +container.turretHIMARS=Henry container.turretHoward=Howard container.turretJeremy=Jeremy container.turretMaxwell=Maxwell @@ -752,6 +753,7 @@ item.ammo_9mm_chlorophyte.name=9mm Patrone (Grünalgen) item.ammo_9mm_du.name=9mm Patrone (DU) item.ammo_9mm_rocket.name=9mm Rakete item.ammo_arty.name=16" Artilleriegranate +item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung) item.ammo_arty_classic.name=16" Artilleriegranate (Das Factorio-Spezial) item.ammo_arty_he.name=16" Artilleriegranate (HE) item.ammo_arty_mini_nuke.name=16" Mikroatomgranate @@ -787,6 +789,8 @@ item.ammo_grenade_phosphorus.name=40mm Granate (WP) item.ammo_grenade_sleek.name=40mm Granate (IF-F&E) item.ammo_grenade_toxic.name=40mm Granate (Chemisch) item.ammo_grenade_tracer.name=40mm Übungsgranate +item.ammo_himars_standard.name=M28 gelenkte Artillerierakete +item.ammo_himars_single.name=M39A1 gelenkte Artillerierakete item.ammo_mirv.name=Mini-MIRV item.ammo_mirv_high.name=Mini-MIRV (Stark) item.ammo_mirv_low.name=Mini-MIRV (Schwach) @@ -3175,18 +3179,26 @@ tile.bomber.name=Abgestürtzer Bomber tile.book_guide.name=Hbm's Nuclear Tech Mod Handbuch [LEGACY] tile.boxcar.name=Güterwagon tile.brick_asbestos.name=Asbestziegel +tile.brick_asbestos_stairs.name=Asbestziegeltreppe tile.brick_compound.name=Verstärkter Verbund +tile.brick_compound_stairs.name=Verbundtreppe tile.brick_concrete.name=Betonziegel +tile.brick_concrete_stairs.name=Concrete Brick Stairs tile.brick_concrete_broken.name=Gebrochene Betonziegel +tile.brick_concrete_broken_stairs.name=Gebrochene Betonziegeltreppe tile.brick_concrete_cracked.name=Rissige Betonziegel +tile.brick_concrete_cracked_stairs.name=Rissige Betonziegeltreppe tile.brick_concrete_marked.name=Beschriebene Betonziegel tile.brick_concrete_mossy.name=Bemooste Betonziegel -tile.brick_ducrete.name=Ducrete-Ziegel +tile.brick_concrete_mossy.name=Bemooste Betonziegeltreppe +tile.brick_ducrete.name=Ducreteziegel +tile.brick_ducrete_stairs.name=Ducreteziegeltreppe tile.brick_dungeon.name=Berzelianitziegel tile.brick_dungeon_circle.name=Berzelianitkreis tile.brick_dungeon_flat.name=Berzelianitblock tile.brick_dungeon_tile.name=Berzelianitfliese tile.brick_fire.name=Schamottsteinziegel +tile.brick_fire_stairs.name=Schamottsteintreppe tile.brick_jungle.name=Enargitziegel tile.brick_jungle_circle.name=Mechanistenzirkel tile.brick_jungle_cracked.name=Rissige Enargitziegel @@ -3197,7 +3209,16 @@ tile.brick_jungle_mystic.name=Arkane Enargitziegel tile.brick_jungle_ooze.name=Radioaktive Enargitziegel tile.brick_jungle_trap.name=Enargit-Falle tile.brick_light.name=Helle Ziegel +tile.brick_light_stairs.name=Helle Ziegeltreppe tile.brick_obsidian.name=Obsidianziegel +tile.brick_obsidian_stairs.name=Obsidianziegeltreppe +tile.brick_slab.brick_asbestos.name=Asbestziegelstufe +tile.brick_slab.brick_compound.name=Verbundstufe +tile.brick_slab.brick_fire.name=Schamottsteinstufe +tile.brick_slab.brick_light.name=Helle Ziegelstufe +tile.brick_slab.brick_obsidian.name=Obsidianziegelstufe +tile.brick_slab.reinforced_brick.name=Verstärkte Steinstufe +tile.brick_slab.reinforced_stone.name=Verdichtete Steinstufe tile.broadcaster_pc.name=Korrupter Sender tile.burning_earth.name=Brennendes Gras tile.c4.name=C4 @@ -3224,6 +3245,12 @@ tile.cmb_brick_reinforced.name=Verstärkte CMB-Ziegel tile.compact_launcher.name=Kompakt-Startrampe tile.concrete.name=Betonfliese tile.concrete_asbestos.name=Asbestbeton +tile.concrete_asbestos_stairs.name=Asbestbetontreppe +tile.concrete_brick_slab.brick_concrete.name=Betonziegelstufe +tile.concrete_brick_slab.brick_concrete_broken.name=Rissige Betonziegelstufe +tile.concrete_brick_slab.brick_concrete_cracked.name=Gebrochene Betonziegelstufe +tile.concrete_brick_slab.brick_concrete_mossy.name=Bemooste Betonziegelstufe +tile.concrete_brick_slab.brick_ducrete.name=Ducreteziegelstufe tile.concrete_colored.black.name=Schwarzer Beton tile.concrete_colored.blue.name=Blauer Beton tile.concrete_colored.brown.name=Brauner Beton @@ -3241,7 +3268,14 @@ tile.concrete_colored.silver.name=Hellgrauer Beton tile.concrete_colored.white.name=Weißer Beton tile.concrete_colored.yellow.name=Gelber Beton tile.concrete_pillar.name=Stahlbetonsäule +tile.concrete_slab.concrete.name=Betonfliesenstufe +tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe +tile.concrete_slab.concrete_smooth.name=Betonstufe +tile.concrete_slab.ducrete.name=Ducretefliesenstufe +tile.concrete_slab.ducrete_smooth.name=Ducretestufe tile.concrete_smooth.name=Beton +tile.concrete_stairs.name=Betonfliesentreppe +tile.concrete_smooth_stairs.name=Betontreppe tile.concrete_super.name=Super Beton tile.concrete_super_broken.name=Schimmliger Schutt tile.conveyor.name=Förderband @@ -3324,8 +3358,10 @@ tile.dfc_stabilizer.name=DFC-Stabilisator tile.dirt_dead.name=Tote Erde tile.dirt_oily.name=Ölige Erde tile.drill_pipe.name=Bohrgestänge -tile.ducrete.name=Ducrete-Fliese +tile.ducrete.name=Ducretefliese +tile.ducrete_stairs.name=Ducretefliesentreppe tile.ducrete_smooth.name=Ducrete +tile.ducrete_smooth_stairs.name=Ducretetreppe tile.dummy_block.name=Dummyblock tile.dummy_port.name=Dummyblock (Stromanschluss) tile.dungeon_chain.name=Metallkette @@ -3469,6 +3505,7 @@ tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energiespeicherblock tile.machine_battery_potato.name=Kartoffelbatterieblock tile.machine_boiler.name=Boiler +tile.machine_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$Wärmestransferrate: ΔT*0.01 TU/t tile.machine_boiler_electric_off.name=Elektrischer Boiler tile.machine_boiler_electric_on.name=Elektrischer Boiler tile.machine_boiler_off.name=Dampfkessel @@ -3743,6 +3780,7 @@ tile.red_pylon.name=Strommasten tile.red_pylon_large.name=Hochspannungsmasten tile.red_wire_coated.name=Geschirmtes rotes Kupferkabel tile.reinforced_brick.name=Verstärkter Stein +tile.reinforced_brick_stairs.name=Verstärkte Steintreppe tile.reinforced_ducrete.name=Verstärkter Ducrete tile.reinforced_glass.name=Verstärktes Glas tile.reinforced_lamp_off.name=Verstärkte Lampe @@ -3750,6 +3788,7 @@ tile.reinforced_lamp_on.name=Verstärkte Lampe tile.reinforced_light.name=Verstärkter Glowstone tile.reinforced_sand.name=Verstärkter Sandstein tile.reinforced_stone.name=Verdichteter Stein +tile.reinforced_stone_stairs.name=Verdichtete Steintreppe tile.rejuvinator.name=Regenerationsmaschine tile.residue.name=Wolkenrückstände tile.safe.name=Panzerschrank @@ -3835,6 +3874,7 @@ tile.turret_cwis.name=Phalanx Mk-15 CIWS tile.turret_flamer.name=Flammenwerfergeschütz tile.turret_friendly.name=Gatlingeschütz "Mister Friendly" tile.turret_fritz.name=Schwered Flammenwerfergeschütz "Fritz" +tile.turret_himars.name=Raketenartilleriegeschütz "Henry" tile.turret_heavy.name=Schweres MG-Geschütz tile.turret_howard.name=Goalkeeper-Zwilling CIWS "Howard" tile.turret_howard_damaged.name=Goalkeeper-Zwilling CIWS "turret_howard_damaged" diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e7dee54f0..94bca60ad 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -576,6 +576,7 @@ container.turretArty=Greg container.turretChekhov=Chekhov's Gun container.turretFriendly=Mister Friendly container.turretFritz=Fritz +container.turretHIMARS=Henry container.turretHoward=Howard container.turretJeremy=Jeremy container.turretMaxwell=Maxwell @@ -980,6 +981,7 @@ item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte) item.ammo_9mm_du.name=9mm Round (DU) item.ammo_9mm_rocket.name=9mm Rocket item.ammo_arty.name=16" Artillery Shell +item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell item.ammo_arty_classic.name=16" Artillery Shell (The Factorio Special) item.ammo_arty_he.name=16" High Explosive Artillery Shell item.ammo_arty_mini_nuke.name=16" Micro Nuclear Artillery Shell @@ -1015,6 +1017,8 @@ item.ammo_grenade_phosphorus.name=40mm Grenade (WP) item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) item.ammo_grenade_toxic.name=40mm Grenade (Chemical) item.ammo_grenade_tracer.name=40mm Training Grenade +item.ammo_himars_standard.name=M28 Guided Artillery Rocket Pod +item.ammo_himars_single.name=M39A1 Guided Artillery Rocket Pod item.ammo_mirv.name=Mini MIRV item.ammo_mirv_high.name=Mini MIRV (High Yield) item.ammo_mirv_low.name=Mini MIRV (Low Yield) @@ -3612,18 +3616,26 @@ tile.bomber.name=Crashed Bomber tile.book_guide.name=Hbm's Nuclear Tech Mod Manual [LEGACY] tile.boxcar.name=Boxcar tile.brick_asbestos.name=Asbestos Bricks +tile.brick_asbestos_stairs.name=Asbestos Brick Stairs tile.brick_compound.name=Compound Mesh +tile.brick_compound_stairs.name=Compound Mesh Stairs tile.brick_concrete.name=Concrete Bricks +tile.brick_concrete_stairs.name=Concrete Brick Stairs tile.brick_concrete_broken.name=Broken Concrete Bricks +tile.brick_concrete_broken_stairs.name=Broken Concrete Brick Stairs tile.brick_concrete_cracked.name=Cracked Concrete Bricks +tile.brick_concrete_cracked_stairs.name=Cracked Concrete Brick Stairs tile.brick_concrete_marked.name=Marked Concrete Bricks tile.brick_concrete_mossy.name=Mossy Concrete Bricks +tile.brick_concrete_mossy_stairs.name=Mossy Concrete Brick Stairs tile.brick_ducrete.name=Ducrete Bricks +tile.brick_ducrete_stairs.name=Ducrete Brick Stairs tile.brick_dungeon.name=Berzelianite Bricks tile.brick_dungeon_circle.name=Berzelianite Cirlce tile.brick_dungeon_flat.name=Berzelianite Block tile.brick_dungeon_tile.name=Berzelianite Tile tile.brick_fire.name=Firebricks +tile.brick_fire_stairs.name=Firebrick Stairs tile.brick_jungle.name=Enargite Bricks tile.brick_jungle_circle.name=Mechanist's Circle tile.brick_jungle_cracked.name=Cracked Enargite Bricks @@ -3634,7 +3646,16 @@ tile.brick_jungle_mystic.name=Arcane Enargite Bricks tile.brick_jungle_ooze.name=Radioactive Enargite Bricks tile.brick_jungle_trap.name=Trapped Enargite Bricks tile.brick_light.name=Light Bricks +tile.brick_light_stairs.name=Light Bricks Stairs tile.brick_obsidian.name=Obsidian Bricks +tile.brick_obsidian_stairs.name=Obsidian Brick Stairs +tile.brick_slab.brick_asbestos.name=Asbestos Brick Slab +tile.brick_slab.brick_compound.name=Compound Mesh Slab +tile.brick_slab.brick_fire.name=Firebrick Slab +tile.brick_slab.brick_light.name=Light Brick Slab +tile.brick_slab.brick_obsidian.name=Obsidian Brick Slab +tile.brick_slab.reinforced_brick.name=Reinforced Stone Slab +tile.brick_slab.reinforced_stone.name=Dense Stone Slab tile.broadcaster_pc.name=Corrupted Broadcaster tile.burning_earth.name=Burning Grass tile.c4.name=C-4 @@ -3661,6 +3682,12 @@ tile.cmb_brick_reinforced.name=Reinforced CMB Bricks tile.compact_launcher.name=Compact Launch Pad tile.concrete.name=Concrete Tile tile.concrete_asbestos.name=Asbestos Concrete +tile.concrete_asbestos_stairs.name=Asbestos Concrete Stairs +tile.concrete_brick_slab.brick_concrete.name=Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_broken.name=Broken Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_cracked.name=Cracked Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_mossy.name=Mossy Concrete Brick Slab +tile.concrete_brick_slab.brick_ducrete.name=Ducrete Brick Slab tile.concrete_colored.black.name=Black Concrete tile.concrete_colored.blue.name=Blue Concrete tile.concrete_colored.brown.name=Brown Concrete @@ -3678,7 +3705,14 @@ tile.concrete_colored.silver.name=Light Gray Concrete tile.concrete_colored.white.name=White Concrete tile.concrete_colored.yellow.name=Yellow Concrete tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar -tile.concrete_smooth.name=Concrete +tile.concrete_slab.concrete.name=Concrete Tile Slab +tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab +tile.concrete_slab.concrete_smooth.name=Concrete Slab +tile.concrete_slab.ducrete.name=Ducrete Tile Slab +tile.concrete_slab.ducrete_smooth.name=Ducrete Slab +tile.concrete_smooth.name=Concrete Stairs +tile.concrete_smooth_stairs.name=Concrete +tile.concrete_stairs.name=Concrete Tile Stairs tile.concrete_super.name=Über Concrete tile.concrete_super_broken.name=Moldy Debris tile.conveyor.name=Conveyor Belt @@ -3763,7 +3797,9 @@ tile.dirt_dead.name=Dead Dirt tile.dirt_oily.name=Oily Dirt tile.drill_pipe.name=Drill Pipe tile.ducrete.name=Ducrete Tile +tile.ducrete_stairs.name=Ducrete Tile Stairs tile.ducrete_smooth.name=Ducrete +tile.ducrete_smooth_stairs.name=Ducrete Stairs tile.dummy_block.name=Dummy Block tile.dummy_port.name=Dummy Block (Electricity Port) tile.dungeon_chain.name=Metal Chain @@ -3907,6 +3943,7 @@ tile.machine_bat9000.name=Big-Ass Tank 9000 tile.machine_battery.name=Energy Storage Block tile.machine_battery_potato.name=Potato Battery Block tile.machine_boiler.name=Boiler +tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t tile.machine_boiler_electric_off.name=Electric Boiler tile.machine_boiler_electric_on.name=Electric Boiler tile.machine_boiler_off.name=Boiler @@ -4184,6 +4221,7 @@ tile.red_pylon.name=Electricity Pole tile.red_pylon_large.name=Large Electricity Pylon tile.red_wire_coated.name=Coated Red Copper Cable tile.reinforced_brick.name=Reinforced Stone +tile.reinforced_brick_stairs.name=Reinforced Stone Stairs tile.reinforced_ducrete.name=Reinforced Ducrete tile.reinforced_glass.name=Reinforced Glass tile.reinforced_lamp_off.name=Reinforced Lamp @@ -4191,6 +4229,7 @@ tile.reinforced_lamp_on.name=Reinforced Lamp tile.reinforced_light.name=Reinforced Glowstone tile.reinforced_sand.name=Reinforced Sandstone tile.reinforced_stone.name=Dense Stone +tile.reinforced_stone_stairs.name=Dense Stone Stairs tile.rejuvinator.name=Rejuvination Device tile.residue.name=Cloud Residue tile.safe.name=Safe @@ -4277,6 +4316,7 @@ tile.turret_flamer.name=Flamethrower Turret tile.turret_friendly.name=Chaingun Turret "Mister Friendly" tile.turret_fritz.name=Heavy Flamethrower Turret "Fritz" tile.turret_heavy.name=Heavy Machine Gun Turret +tile.turret_himars.name=Rocket Artillery Turret "Henry" tile.turret_howard.name=Goalkeeper Twin Chaingun CIWS "Howard" tile.turret_howard_damaged.name=Goalkeeper Twin Chaingun CIWS "Methusalem" tile.turret_jeremy.name=Autocannon Turret "Jeremy" diff --git a/src/main/resources/assets/hbm/textures/items/ammo_arty_cargo.png b/src/main/resources/assets/hbm/textures/items/ammo_arty_cargo.png index 471ce714d9996b35882e5f6460c8352ac4fd1102..1e5b2b28734bc1be00e7756427c5aaf3fd5b41cc 100644 GIT binary patch delta 323 zcmV-J0lfaV0__5jGk*ajNkljsiGa#oSI5cmw{oeQg?>9`SqA2Xxo9H)at*NR? z^c$2?R!T_}MQk=3F$By2cDo%~YoaJZDP{9K?-c907RDH~)_-0nqOW3%p>10LvMdAW z94V!2UDtjGPDM)DJv2=Nz}@Z2x*lH!v;M&t(cZI&f z_8{0F&pK`$=RDL4m;#aEkE>C@B}f>YfRPM_HO%DYBj9oUCME;m_wTHqUMJ68tZ$c= VkE^20c#Z%7002ovPDHLkV1nWMl|cXi delta 269 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 b&Rsr@#JtStOkv!wA7>j2dvmhs^?&{cB{c{h diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index d99a28e57..3041f9144 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4375", + "version":"1.0.27_X4389", "mcversion": "1.7.10", "url": "", "updateUrl": "",