diff --git a/changelog b/changelog index 90daba41c..b8b612730 100644 --- a/changelog +++ b/changelog @@ -1,8 +1,11 @@ ## Changed * Blast doors will now pulverize any block that gets in their way during closing * The nuclear and RTG furnaces will be retired, their recipes have been removed but they remain operational for now +* Changed the magnetron recipe to be 3 copper plates and 4 tungsten wires +* Added recipes to some secret ammo types ## Fixed * Fixed the CCGT's steam output breaking as soon as the steam buffer runs full * Fixed crash caused by mobs holding belt-fed guns -* Fixed boiler heat input being way too low due to operation order (diffusion was applied AFTER the input heat was capped) \ No newline at end of file +* Fixed boiler heat input being way too low due to operation order (diffusion was applied AFTER the input heat was capped) +* Fixed stinger playing its lockon sound on the wrong side \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java index 10e0fa577..e2382367a 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java @@ -1,15 +1,20 @@ package com.hbm.blocks.machine.albion; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.albion.TileEntityPABeamline; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class BlockPABeamline extends BlockDummyable { +public class BlockPABeamline extends BlockDummyable implements ITooltipProvider { public BlockPABeamline() { super(Material.iron); @@ -25,4 +30,9 @@ public class BlockPABeamline extends BlockDummyable { @Override public int[] getDimensions() { return new int[] {0, 0, 0, 0, 1, 1}; } @Override public int getOffset() { return 0; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java index 0f27704bb..4cb922bde 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java @@ -1,6 +1,9 @@ package com.hbm.blocks.machine.albion; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; @@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPADetector; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockPADetector extends BlockDummyable { +public class BlockPADetector extends BlockDummyable implements ITooltipProvider { public BlockPADetector() { super(Material.iron); @@ -48,4 +52,9 @@ public class BlockPADetector extends BlockDummyable { this.makeExtra(world, x - rot.offsetX * 4 + dir.offsetX, y, z - rot.offsetZ * 4 + dir.offsetZ); this.makeExtra(world, x - rot.offsetX * 4 - dir.offsetX, y, z - rot.offsetZ * 4 - dir.offsetZ); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java index 6e26e4fa4..0a5fc5da4 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java @@ -1,6 +1,9 @@ package com.hbm.blocks.machine.albion; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; @@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPADipole; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockPADipole extends BlockDummyable { +public class BlockPADipole extends BlockDummyable implements ITooltipProvider { public BlockPADipole() { super(Material.iron); @@ -49,4 +53,9 @@ public class BlockPADipole extends BlockDummyable { this.makeExtra(world, x, y + 1, z + 1); this.makeExtra(world, x, y + 1, z - 1); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java index 9f8330524..b123b2321 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java @@ -1,6 +1,9 @@ package com.hbm.blocks.machine.albion; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; @@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockPAQuadrupole extends BlockDummyable { +public class BlockPAQuadrupole extends BlockDummyable implements ITooltipProvider { public BlockPAQuadrupole() { super(Material.iron); @@ -45,4 +49,9 @@ public class BlockPAQuadrupole extends BlockDummyable { this.makeExtra(world, x, y + 1, z); this.makeExtra(world, x, y - 1, z); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java index 68e5a1dbb..eb5354ed4 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java @@ -1,6 +1,9 @@ package com.hbm.blocks.machine.albion; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; @@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPARFC; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockPARFC extends BlockDummyable { +public class BlockPARFC extends BlockDummyable implements ITooltipProvider { public BlockPARFC() { super(Material.iron); @@ -48,4 +52,9 @@ public class BlockPARFC extends BlockDummyable { this.makeExtra(world, x - dir.offsetX * 3, y - 1, z - dir.offsetZ * 3); this.makeExtra(world, x, y - 1, z); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java index f278ccd60..4b7461433 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java @@ -1,6 +1,9 @@ package com.hbm.blocks.machine.albion; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; @@ -8,11 +11,12 @@ import com.hbm.tileentity.machine.albion.TileEntityPASource; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockPASource extends BlockDummyable { +public class BlockPASource extends BlockDummyable implements ITooltipProvider { public BlockPASource() { super(Material.iron); @@ -50,4 +54,9 @@ public class BlockPASource extends BlockDummyable { this.makeExtra(world, x - dir.offsetX + rot.offsetX * 2, y, z - dir.offsetZ + rot.offsetZ * 2); this.makeExtra(world, x - dir.offsetX - rot.offsetX * 2, y, z - dir.offsetZ - rot.offsetZ * 2); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + 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 49777c12d..42b323fec 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -158,8 +158,6 @@ public class WeaponRecipes { //Ammo assemblies - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_claws, 1), new Object[] { " X ", "X X", " XX", 'X', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', GOLD.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ModItems.ball_tatb }); //240mm Shells diff --git a/src/main/java/com/hbm/handler/nei/ParticleAcceleratorHandler.java b/src/main/java/com/hbm/handler/nei/ParticleAcceleratorHandler.java new file mode 100644 index 000000000..e2a56ff2c --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ParticleAcceleratorHandler.java @@ -0,0 +1,37 @@ +package com.hbm.handler.nei; + +import java.util.Locale; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.ParticleAcceleratorRecipes; +import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorRecipe; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; + +public class ParticleAcceleratorHandler extends NEIUniversalHandler { + + public ParticleAcceleratorHandler() { + super(ModBlocks.pa_detector.getLocalizedName(), ModBlocks.pa_detector, ParticleAcceleratorRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmParticleAccelerator"; + } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + + ParticleAcceleratorRecipe paRecipe = ParticleAcceleratorRecipes.getOutput(rec.input[0].item, rec.input[1].item); + + if(paRecipe != null) { + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String momentum = "Momentum: " + String.format(Locale.US, "%,d", paRecipe.momentum); + int side = 8; + fontRenderer.drawString(momentum, side, 52, 0x404040); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPASource.java b/src/main/java/com/hbm/inventory/gui/GUIPASource.java index c95e3f344..bc2aa1c1e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPASource.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPASource.java @@ -1,5 +1,7 @@ package com.hbm.inventory.gui; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; import org.lwjgl.opengl.GL11; @@ -9,6 +11,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.albion.TileEntityPASource; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -39,7 +42,11 @@ public class GUIPASource extends GuiInfoContainer { source.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower()); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, "Last momentum: " + source.lastSpeed); + List info = new ArrayList(); + info.add(EnumChatFormatting.BLUE + "Last momentum: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", source.lastSpeed)); + String[] message = I18nUtil.resolveKeyArray("pa." + this.source.state.name().toLowerCase(Locale.US) + ".desc"); + for(String s : message) info.add(EnumChatFormatting.YELLOW + s); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, info); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 30, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation"); } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 4eb3cdf92..4ede78f73 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -99,7 +99,7 @@ public class Mats { //Base metals public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setAutogen(FRAGMENT, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setAutogen(FRAGMENT, WIRE, BOLT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setAutogen(FRAGMENT, NUGGET, WIRE, BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT).m(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 5f66525e2..4c532269e 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -32,6 +32,7 @@ import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; +import com.hbm.items.machine.ItemPACoil.EnumCoilType; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; @@ -107,7 +108,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.tritium_deuterium_cake, 1), new AStack[] {new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.cell_tritium, 2), new OreDictStack(LI.ingot(), 4), },150); makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50); makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50); - makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(ALLOY.plate(), 3), new OreDictStack(W.wireFine(), 1), new ComparableStack(ModItems.coil_tungsten, 1), },100); + makeRecipe(new ComparableStack(ModItems.magnetron, 1), new AStack[] {new OreDictStack(CU.plate(), 3), new OreDictStack(W.wireFine(), 4), },100); makeRecipe(new ComparableStack(ModItems.redcoil_capacitor, 1), new AStack[] {new OreDictStack(GOLD.plate(), 3), new ComparableStack(ModItems.fuse, 1), new OreDictStack(ALLOY.wireFine(), 4), new ComparableStack(ModItems.coil_advanced_alloy, 6), new ComparableStack(Blocks.redstone_block, 2), },200); makeRecipe(new ComparableStack(ModItems.part_lithium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(LI.dust(), 1), },50); makeRecipe(new ComparableStack(ModItems.part_beryllium, 8), new AStack[] {new OreDictStack(ANY_RUBBER.ingot(), 1), new OreDictStack(BE.dust(), 1), },50); @@ -548,14 +549,6 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.pipe(), 24), new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4) }, 600); - - makeRecipe(new ComparableStack(ModItems.pellet_chlorophyte, 2), new AStack[] { - new ComparableStack(ModItems.powder_chlorophyte, 1), - new OreDictStack(PB.nugget(), 12), - }, 50); - makeRecipe(new ComparableStack(ModItems.pellet_canister, 2), new AStack[] { - new OreDictStack(IRON.ingot(), 3), - }, 50); makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] { new ComparableStack(ModBlocks.machine_lithium_battery, 3), @@ -946,6 +939,50 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC) }, 200); + makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.GOLD), new AStack[] { new OreDictStack(GOLD.wireDense(), 128) }, 400); + makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.NIOBIUM), new AStack[] { new OreDictStack(NB.wireDense(), 64), new OreDictStack(TI.wireDense(), 64) }, 400); + makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.BSCCO), new AStack[] { new OreDictStack(BSCCO.wireDense(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 64) }, 400); + makeRecipe(new ComparableStack(ModItems.pa_coil, 1, EnumCoilType.CHLOROPHYTE), new AStack[] { new OreDictStack(CU.wireDense(), 128), new ComparableStack(ModItems.powder_chlorophyte, 16) }, 400); + + makeRecipe(new ComparableStack(ModBlocks.pa_beamline), new AStack[] { + new OreDictStack(STEEL.plateCast(), 8), + new OreDictStack(CU.plate(), 16), + new OreDictStack(GOLD.wireDense(), 4) + }, 200); + makeRecipe(new ComparableStack(ModBlocks.pa_rfc), new AStack[] { + new ComparableStack(ModBlocks.pa_beamline, 3), + new OreDictStack(STEEL.plateCast(), 16), + new OreDictStack(CU.plate(), 64), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.magnetron, 16), + }, 400); + makeRecipe(new ComparableStack(ModBlocks.pa_quadrupole), new AStack[] { + new ComparableStack(ModBlocks.pa_beamline, 1), + new OreDictStack(STEEL.plateCast(), 16), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID), + }, 400); + makeRecipe(new ComparableStack(ModBlocks.pa_dipole), new AStack[] { + new ComparableStack(ModBlocks.pa_beamline, 2), + new OreDictStack(STEEL.plateCast(), 16), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), + }, 400); + makeRecipe(new ComparableStack(ModBlocks.pa_source), new AStack[] { + new ComparableStack(ModBlocks.pa_beamline, 3), + new OreDictStack(STEEL.plateCast(), 16), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.magnetron, 16), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.QUANTUM), + }, 400); + makeRecipe(new ComparableStack(ModBlocks.pa_detector), new AStack[] { + new ComparableStack(ModBlocks.pa_beamline, 3), + new OreDictStack(STEEL.plateCast(), 24), + new OreDictStack(GOLD.wireDense(), 16), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM), + }, 400); + makeRecipe(new ComparableStack(ModBlocks.machine_exposure_chamber, 1), new AStack[] { !exp ? new OreDictStack(AL.plateCast(), 12) : new OreDictStack(AL.heavyComp(), 1), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), diff --git a/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java b/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java index 24349890b..7fd75f04e 100644 --- a/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.google.gson.JsonElement; @@ -12,7 +13,6 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; -import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -26,65 +26,65 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe { recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_hydrogen), new ComparableStack(ModItems.particle_copper), - 900, - new ItemStack(ModItems.particle_aproton), - new ItemStack(ModItems.particle_aelectron) + 300, + new ItemStack(ModItems.particle_amat), + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_amat), new ComparableStack(ModItems.particle_amat), - 900, + 400, new ItemStack(ModItems.particle_aschrab), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_aschrab), new ComparableStack(ModItems.particle_aschrab), - 100000, + 10_000, new ItemStack(ModItems.particle_dark), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_hydrogen), new ComparableStack(ModItems.particle_amat), - 2000, + 2_500, new ItemStack(ModItems.particle_muon), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_hydrogen), new ComparableStack(ModItems.particle_lead), - 5000, + 6_500, new ItemStack(ModItems.particle_higgs), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_muon), new ComparableStack(ModItems.particle_higgs), - 2000, + 5_000, new ItemStack(ModItems.particle_tachyon), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_muon), new ComparableStack(ModItems.particle_dark), - 100000, + 12_500, new ItemStack(ModItems.particle_strange), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_strange), new ComparableStack(ModItems.powder_magic), - 500000, + 12_500, new ItemStack(ModItems.particle_sparkticle), new ItemStack(ModItems.dust) )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(ModItems.particle_sparkticle), new ComparableStack(ModItems.particle_higgs), - 1000000, + 70_000, new ItemStack(ModItems.particle_digamma), - new ItemStack(ModItems.particle_empty) + null )); recipes.add(new ParticleAcceleratorRecipe( new ComparableStack(Items.chicken), @@ -93,21 +93,13 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe { new ItemStack(ModItems.nugget), new ItemStack(ModItems.nugget) )); - recipes.add(new ParticleAcceleratorRecipe( - new ComparableStack(Blocks.sand), - new ComparableStack(Blocks.sand), - 10, - new ItemStack(ModItems.static_sandwich), - new ItemStack(ModItems.static_sandwich) - )); } - public ParticleAcceleratorRecipe getOutput(ItemStack input1, ItemStack input2, int momentum) { + public static ParticleAcceleratorRecipe getOutput(ItemStack input1, ItemStack input2) { for(ParticleAcceleratorRecipe recipe : recipes) { - if(momentum >= recipe.momentum && - ((recipe.input1.matchesRecipe(input1, true) && recipe.input2.matchesRecipe(input2, true)) || + if(((recipe.input1.matchesRecipe(input1, true) && recipe.input2.matchesRecipe(input2, true)) || (recipe.input1.matchesRecipe(input2, true) && recipe.input2.matchesRecipe(input1, true)))) { return recipe; } @@ -116,6 +108,20 @@ public class ParticleAcceleratorRecipes extends SerializableRecipe { return null; } + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(ParticleAcceleratorRecipe entry : ParticleAcceleratorRecipes.recipes) { + List outputs = new ArrayList(); + if(entry.output1 != null) outputs.add(entry.output1); + if(entry.output2 != null) outputs.add(entry.output2); + recipes.put(new Object[] {entry.input1, entry.input2}, outputs.toArray(new ItemStack[0])); + } + + return recipes; + } + public static class ParticleAcceleratorRecipe { public AStack input1; public AStack input2; diff --git a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java index fcbfb1934..d11a40f93 100644 --- a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java @@ -18,6 +18,8 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumSecretType; import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -71,6 +73,17 @@ public class PedestalRecipes extends SerializableRecipe { new OreDictStack(BSCCO.ingot(), 16), new OreDictStack(STAR.block(), 64), new OreDictStack(BSCCO.ingot(), 16), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.item_secret, 2, EnumSecretType.CONTROLLER), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL)) .extra(PedestalExtraCondition.FULL_MOON)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_SM.ordinal()), + new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1), + new ComparableStack(ModItems.powder_magic), new ComparableStack(ModBlocks.moon_turf), new ComparableStack(ModItems.powder_magic), + new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1)) + .extra(PedestalExtraCondition.FULL_MOON)); + recipes.add(new PedestalRecipe(new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.FOLLY_NUKE.ordinal()), + new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1), + new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.ammo_standard, 4, EnumAmmo.NUKE_HIGH), new ComparableStack(ModItems.powder_magic), + new OreDictStack(STAR.ingot(), 1), new ComparableStack(ModItems.powder_magic), new OreDictStack(STAR.ingot(), 1)) + .extra(PedestalExtraCondition.FULL_MOON)); } @Override 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 9ff9ae027..47b60d9e2 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -43,7 +43,6 @@ public class AnvilRecipes extends SerializableRecipe { public static void register() { registerSmithing(); - registerConstruction(); } @Override public String getFileName() { return "hbmAnvil.json"; } @@ -598,7 +597,6 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); - pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1); } public static void registerConstructionUpgrades() { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a4da0ac16..bfc0235d3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1186,10 +1186,6 @@ public class ModItems { public static Item pellet_gas; public static Item magnetron; public static Item pellet_buckshot; - public static Item pellet_flechette; - public static Item pellet_chlorophyte; - public static Item pellet_canister; - public static Item pellet_claws; public static Item pellet_charged; public static Item designator; @@ -3614,10 +3610,6 @@ public class ModItems { pellet_gas = new ItemCustomLore().setUnlocalizedName("pellet_gas").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellet_gas"); magnetron = new ItemCustomLore().setUnlocalizedName("magnetron").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnetron_alt"); pellet_buckshot = new Item().setUnlocalizedName("pellet_buckshot").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellets_lead"); - pellet_flechette = new Item().setUnlocalizedName("pellet_flechette").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellets_flechette"); - pellet_chlorophyte = new Item().setUnlocalizedName("pellet_chlorophyte").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellets_chlorophyte"); - pellet_canister = new Item().setUnlocalizedName("pellet_canister").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellets_canister"); - pellet_claws = new Item().setUnlocalizedName("pellet_claws").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellets_claws"); pellet_charged = new Item().setUnlocalizedName("pellet_charged").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellets_charged"); designator = new ItemDesingator().setUnlocalizedName("designator").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":designator"); @@ -5711,10 +5703,6 @@ public class ModItems { GameRegistry.registerItem(tritium_deuterium_cake, tritium_deuterium_cake.getUnlocalizedName()); GameRegistry.registerItem(pellet_cluster, pellet_cluster.getUnlocalizedName()); GameRegistry.registerItem(pellet_buckshot, pellet_buckshot.getUnlocalizedName()); - GameRegistry.registerItem(pellet_flechette, pellet_flechette.getUnlocalizedName()); - GameRegistry.registerItem(pellet_chlorophyte, pellet_chlorophyte.getUnlocalizedName()); - GameRegistry.registerItem(pellet_canister, pellet_canister.getUnlocalizedName()); - GameRegistry.registerItem(pellet_claws, pellet_claws.getUnlocalizedName()); GameRegistry.registerItem(pellet_charged, pellet_charged.getUnlocalizedName()); GameRegistry.registerItem(pellet_gas, pellet_gas.getUnlocalizedName()); GameRegistry.registerItem(magnetron, magnetron.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemPACoil.java b/src/main/java/com/hbm/items/machine/ItemPACoil.java index 0bd562e21..2b68d7a8c 100644 --- a/src/main/java/com/hbm/items/machine/ItemPACoil.java +++ b/src/main/java/com/hbm/items/machine/ItemPACoil.java @@ -1,12 +1,14 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ItemEnumMulti; import com.hbm.util.EnumUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; public class ItemPACoil extends ItemEnumMulti { @@ -16,30 +18,33 @@ public class ItemPACoil extends ItemEnumMulti { } public static enum EnumCoilType { - GOLD(0, 10_000, 0, 10_000, 0.99D), - NIOBIUM(5_000, 100_000, 5_000, 100_000, 0.999D), - BSCCO(50_000, 500_000, 50_000, 500_000, 0.99975D); + GOLD(0, 2_200, 0, 2_200, 15), + NIOBIUM(1_500, 8_400, 1_500, 8_400, 21), + BSCCO(7_500, 15_000, 7_500, 15_000, 27), + CHLOROPHYTE(14_500, 75_000, 14_500, 75_000, 51); public int quadMin; public int quadMax; public int diMin; public int diMax; - public double diMult; + public int diDistMin; - private EnumCoilType(int quadMin, int quadMax, int diMin, int diMax, double diMult) { + private EnumCoilType(int quadMin, int quadMax, int diMin, int diMax, int diDistMin) { this.quadMin = quadMin; this.quadMax = quadMax; this.diMin = diMin; this.diMax = diMax; - this.diMult = diMult; + this.diDistMin = diDistMin; } } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { EnumCoilType type = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - list.add("Quadrupole operational range: " + type.quadMin + " - " + type.quadMax); - list.add("Dipole operational range: " + type.diMin + " - " + type.diMax); - list.add("Dipole momentum multiplier: x" + type.diMult); + list.add(EnumChatFormatting.BLUE + "Quadrupole operational range: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", type.quadMin) + " - " + String.format(Locale.US, "%,d", type.quadMax)); + list.add(EnumChatFormatting.BLUE + "Dipole operational range: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", type.diMin) + " - " + String.format(Locale.US, "%,d", type.diMax)); + list.add(EnumChatFormatting.BLUE + "Dipole minimum side length: " + EnumChatFormatting.RESET + type.diDistMin); + list.add(EnumChatFormatting.RED + "Minimums not met result in a power draw penalty!"); + list.add(EnumChatFormatting.RED + "Maximums exceeded result in the particle crashing!"); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 1f1ba45d3..ae862270a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -771,26 +771,27 @@ public class Orchestras { public static BiConsumer ORCHESTRA_STINGER = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; - if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); - AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); - if(ItemGunStinger.getLockonProgress(stack) > 0 && !ItemGunStinger.getIsLockedOn(stack)) { - //start sound - if(runningAudio == null || !runningAudio.isPlaying()) { - AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.lockon", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10); - ItemGunBaseNT.loopedSounds.put(entity, audio); - audio.startSound(); + if(entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + if(ItemGunStinger.getLockonProgress(stack) > 0 && !ItemGunStinger.getIsLockedOn(stack)) { + //start sound + if(runningAudio == null || !runningAudio.isPlaying()) { + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.lockon", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10); + ItemGunBaseNT.loopedSounds.put(entity, audio); + audio.startSound(); + } + //keepalive + if(runningAudio != null && runningAudio.isPlaying()) { + runningAudio.keepAlive(); + runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); + } + } else { + //stop sound due to timeout + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); } - //keepalive - if(runningAudio != null && runningAudio.isPlaying()) { - runningAudio.keepAlive(); - runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); - } - } else { - //stop sound due to timeout - if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); } if(type == AnimType.RELOAD) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 97ff87f63..bb4402ad2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1639,6 +1639,10 @@ public class MainRegistry { ignoreMappings.add("hbm:item.assembly_calamity"); ignoreMappings.add("hbm:item.assembly_lacunae"); ignoreMappings.add("hbm:item.assembly_luna"); + ignoreMappings.add("hbm:item.pellet_chlorophyte"); + ignoreMappings.add("hbm:item.pellet_canister"); + ignoreMappings.add("hbm:item.pellet_claws"); + ignoreMappings.add("hbm:item.pellet_flechette"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 0d541e52f..69b0f4474 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -69,6 +69,7 @@ public class NEIRegistry { handlers.add(new RotaryFurnaceHandler()); handlers.add(new AmmoPressHandler()); handlers.add(new CompressorHandler()); + handlers.add(new ParticleAcceleratorHandler()); //this shit comes last handlers.add(new FluidRecipeHandler()); diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java index 8a5041d66..effe4f514 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java @@ -19,7 +19,9 @@ public class TileEntityPABeamline extends TileEntity implements IParticleUser { } @Override - public void onEnter(Particle particle, ForgeDirection dir) { } + public void onEnter(Particle particle, ForgeDirection dir) { + particle.addDistance(3); + } @Override public BlockPos getExitPos(Particle particle) { diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java index 72da84fea..58f73310d 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java @@ -49,6 +49,10 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr public long getMaxPower() { return 1_000_000; } + + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return slot == 1 || slot == 2; } + @Override public boolean canExtractItem(int slot, ItemStack stack, int side) { return slot == 3 || slot == 4; } + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 1, 2, 3, 4 }; } AxisAlignedBB bb = null; @@ -107,7 +111,7 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr (recipe.input1.matchesRecipe(particle.input2, true) && recipe.input2.matchesRecipe(particle.input1, true)))) { if(canAccept(recipe)) { if(recipe.output1.getItem().hasContainerItem(recipe.output1)) this.decrStackSize(1, 1); - if(recipe.output2.getItem().hasContainerItem(recipe.output2)) this.decrStackSize(2, 1); + if(recipe.output2 != null && recipe.output2.getItem().hasContainerItem(recipe.output2)) this.decrStackSize(2, 1); if(slots[3] == null) { slots[3] = recipe.output1.copy(); @@ -115,10 +119,12 @@ public class TileEntityPADetector extends TileEntityCooledBase implements IGUIPr slots[3].stackSize += recipe.output1.stackSize; } - if(slots[4] == null) { - slots[4] = recipe.output2.copy(); - } else { - slots[4].stackSize += recipe.output2.stackSize; + if(recipe.output2 != null) { + if(slots[4] == null) { + slots[4] = recipe.output2.copy(); + } else { + slots[4].stackSize += recipe.output2.stackSize; + } } } particle.crash(PAState.SUCCESS); diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java index 147f9bf41..607621bed 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java @@ -40,7 +40,7 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv @Override public long getMaxPower() { - return 1_000_000; + return 5_000_000; } @Override @@ -70,7 +70,8 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv int mult = 1; if(slots[1] != null && slots[1].getItem() == ModItems.pa_coil) { type = EnumUtil.grabEnumSafely(EnumCoilType.class, slots[1].getItemDamage()); - mult = type.diMin > particle.momentum ? 5 : 1; + if(type.diMin > particle.momentum) mult *= 5; + if(type.diDistMin > particle.distanceTraveled) mult *= 5; } if(!isCool()) particle.crash(PAState.CRASH_NOCOOL); @@ -79,8 +80,8 @@ public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProv if(type != null && type.diMax < particle.momentum) particle.crash(PAState.CRASH_OVERSPEED); if(particle.invalid) return; - - particle.momentum *= type.diMult; + + particle.resetDistance(); this.power -= this.usage * mult; } diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java index 0a666cfd1..a68c36576 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java @@ -62,7 +62,8 @@ public class TileEntityPAQuadrupole extends TileEntityCooledBase implements IGUI if(type != null && type.quadMax < particle.momentum) particle.crash(PAState.CRASH_OVERSPEED); if(particle.invalid) return; - + + particle.addDistance(3); particle.focus(focusGain); this.power -= this.usage * mult; } diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java index 14172d8a6..e9ce4a119 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java @@ -51,7 +51,8 @@ public class TileEntityPARFC extends TileEntityCooledBase implements IGUIProvide if(this.power < this.usage) particle.crash(PAState.CRASH_NOPOWER); if(particle.invalid) return; - + + particle.addDistance(9); particle.momentum += this.momentumGain; particle.defocus(defocusGain); this.power -= this.usage; diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java index ec799e43a..629a230b9 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java @@ -127,7 +127,7 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv super.serialize(buf); buf.writeInt(debugSpeed); buf.writeByte((byte) this.state.ordinal()); - buf.writeInt(particle != null ? particle.momentum : 0); + buf.writeInt(this.lastSpeed); } @Override @@ -135,10 +135,7 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv super.deserialize(buf); debugSpeed = buf.readInt(); state = EnumUtil.grabEnumSafely(PAState.class, buf.readByte()); - int lastSpeed = buf.readInt(); - if(lastSpeed != 0) { - this.lastSpeed = lastSpeed; - } + this.lastSpeed = buf.readInt(); } @Override @@ -243,6 +240,7 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv public ForgeDirection dir; public int momentum; public int defocus; + public int distanceTraveled; public static final int maxDefocus = 100; public boolean invalid = false; @@ -268,8 +266,12 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv this.x = pos.getX(); this.y = pos.getY(); this.z = pos.getZ(); + this.source.lastSpeed = this.momentum; } + public void addDistance(int dist) { this.distanceTraveled += dist; } + public void resetDistance() { this.distanceTraveled = 0; } + public void defocus(int amount) { this.defocus += amount; if(this.defocus > this.maxDefocus) this.crash(PAState.CRASH_DEFOCUS); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 6250af4a8..04e024ca7 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2939,6 +2939,10 @@ item.ore_seared.name=Geätztes %serz item.ore_separated.name=Separiertes %serz item.overfuse.name=Singularitätsschraubenzieher item.oxy_mask.name=Sauerstoffmaske +item.pa_coil.bscco.name=Große BSCCO-Spule +item.pa_coil.chlorophyte.name=Große Grünalgenspule +item.pa_coil.gold.name=Große Goldspule +item.pa_coil.niobium.name=Große NbTi-Spule item.paa_boots.name=PaA-"olle Latschen" item.paa_legs.name=PaA-Beinverstärkungsschienen item.paa_plate.name=PaA-Brustschutzplatte diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index efdcb62a9..a51ad1b72 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3787,6 +3787,7 @@ item.overfuse.name=Singularity Screwdriver item.overfuse.desc=Say what? item.oxy_mask.name=Oxygen Mask item.pa_coil.bscco.name=Large BSCCO Coil +item.pa_coil.chlorophyte.name=Large Chlorophyte Coil item.pa_coil.gold.name=Large Gold Coil item.pa_coil.niobium.name=Large NbTi Coil item.paa_boots.name=PaA "good ol' shoes" @@ -4832,16 +4833,27 @@ itemGroup.tabTest=Nuclear Tech Mod Test Tab itemGroup.tabWeapon=NTM Weapons and Turrets pa.idle=Idle +pa.idle.desc=Idle pa.running=Running +pa.running.desc=Running pa.success=Success +pa.success.desc=Success pa.pause_unloaded=Paused +pa.pause_unloaded.desc=The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded. pa.crash_defocus=Defocus! +pa.crash_defocus.desc=The particle has lost focus.$Ensure the accelerator has enough quadrupole magnets. pa.crash_derail=Derail! +pa.crash_derail.desc=The particle has left the accelerator.$Ensure no parts are missing,$and that dipoles are configured correctly. pa.crash_cannot_enter=Denied! +pa.crash_cannot_enter.desc=The particle tried to enter$part of the accelerator, but couldn't.$Ensure all parts are oriented correctly. pa.crash_nocool=No cooling! +pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoroethyl. pa.crash_nopower=No power! +pa.crash_nopower.desc=The particle has entered an unpowered$part of the accelerator. Ensure all parts$receive power, and that the$power supply is sufficient. pa.crash_nocoil=No coils! +pa.crash_nocoil.desc=The particle has entered a dipole$or quadrupole which lacks coils.$Install coils to allow this part to work. pa.crash_overspeed=Overspeed! +pa.crash_overspeed.desc=The particle has entered a dipole$or quadrupole, while its speed exceeded$the coil's rating. Install higher$tier coils, or configure the dipoles$to leave the accelerator ring sooner. potion.hbm_bang=! ! ! potion.hbm_death=Astolfization @@ -5193,7 +5205,7 @@ tile.cm_engine.bismuth.name=Bismuth Motor Block tile.cm_engine.desh.name=Desh Motor Block tile.cm_engine.standard.name=Motor Block tile.cm_flux.name=Neutron Flux Receiver -tile.cm_heat.name=Heat receiver +tile.cm_heat.name=Heat Receiver tile.cm_port.alloy.name=Advanced Alloy Port tile.cm_port.desh.name=Desh Port tile.cm_port.steel.name=Steel Port @@ -5846,11 +5858,17 @@ tile.ore_verticium.name=Dollar Green Mineral tile.ore_volcano.name=Geothermal Vent tile.ore_weidanium.name=Weidite tile.pa_beamline.name=Beamline +tile.pa_beamline.desc=Optional part, connects different accelerator parts.$Also allows to cheaply extend the ring's size,$for meeting dipole coil size requirements. tile.pa_detector.name=Particle Detector +tile.pa_detector.desc=Requires cooling!$Accepts particles and performs the recipe.$Recipes may require containers (particle capsules).$Particle needs a defocus of 0 to be accepted. tile.pa_dipole.name=Dipole Magnets +tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with restone applied.$Requires large coils to work. tile.pa_quadrupole.name=Quadrupole Magnets +tile.pa_quadrupole.desc=Requires cooling!$Reduces particle defocus by 100 points.$Requires large coils to work. tile.pa_rfc.name=RF Cavity +tile.pa_rfc.desc=Requires cooling!$Accelerates particles by 100 points,$and adds 100 points of defocus. tile.pa_source.name=Particle Source +tile.pa_source.desc=Requires cooling!$Uses two items to create a particle. tile.part_emitter.name=Deco Particle Emitter tile.pedestal.name=Pedestal tile.pink_barrel.name=Kerosene Barrel diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal.png b/src/main/resources/assets/hbm/textures/items/ingot_metal.png new file mode 100644 index 000000000..1e84401a9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_metal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_alt.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_alt.png new file mode 100644 index 000000000..3b5e1f721 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_metal_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pa_coil.chlorophyte.png b/src/main/resources/assets/hbm/textures/items/pa_coil.chlorophyte.png new file mode 100644 index 000000000..9e5a7d984 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pa_coil.chlorophyte.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/_yellowwood.png b/src/main/resources/assets/hbm/textures/models/weapons/_yellowwood.png new file mode 100644 index 000000000..e0aa2929d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/_yellowwood.png differ