diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index fb417cb48..2920ad664 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -335,6 +335,9 @@ container.rtgFurnace=RTG-Ofen tile.machine_electric_furnace_off.name=Elektrischer Ofen tile.machine_electric_furnace_on.name=Elektrischer Ofen container.electricFurnace=Elektrischer Ofen +tile.machine_arc_furnace_off.name=Lichtbogenofen +tile.machine_arc_furnace_on.name=Lichtbogenofen +container.arcFurnace=Lichtbogenofen tile.machine_generator.name=Atomreaktor (Alt) container.generator=Atomreaktor tile.red_wire_coated.name=Geschirmtes rotes Kupferkabel @@ -518,6 +521,9 @@ item.chemistry_template.name=Chemievorlage: item.siren_track.name=Sirenentrack item.fuse.name=Sicherung +item.arc_electrode.name=Graphitelektrode +item.arc_electrode_burnt.name=Geschmolzene Elektrode +item.arc_electrode_desh.name=Desh-Elektrode tile.test_nuke.name=Test Atombombe @@ -1085,6 +1091,8 @@ item.rod_dual_waste.name=Doppelter Atommüllstab item.rod_quad_waste.name=Vierfacher Atommüllstab item.gun_rpg.name=Carl Gustav Reaktive Panzerbüchse +item.gun_karl.name=Karl +item.gun_panzerschreck.name=Panzerschreck item.gun_rpg_ammo.name=Rakete item.gun_stinger.name=FIM-92 Stinger item.gun_skystinger.name=The One Sky Stinger diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 12a3f7601..e8408f4f3 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -335,6 +335,9 @@ container.rtgFurnace=RTG Furnace tile.machine_electric_furnace_off.name=Electric Furnace tile.machine_electric_furnace_on.name=Electric Furnace container.electricFurnace=Electric Furnace +tile.machine_arc_furnace_off.name=Arc Furnace +tile.machine_arc_furnace_on.name=Arc Furnace +container.arcFurnace=Arc Furnace tile.machine_generator.name=Nuclear Reactor (Old) container.generator=Nuclear Reactor tile.red_wire_coated.name=Coated Red Copper Cable @@ -518,6 +521,9 @@ item.chemistry_template.name=Chemistry Template: item.siren_track.name=Siren Track item.fuse.name=Fuse +item.arc_electrode.name=Graphite Electrode +item.arc_electrode_burnt.name=Molten Electrode +item.arc_electrode_desh.name=Desh Electrode tile.test_nuke.name=Test Nuke @@ -1085,6 +1091,8 @@ item.rod_dual_waste.name=Nuclear Waste Dual Rod item.rod_quad_waste.name=Nuclear Waste Quad Rod item.gun_rpg.name=Carl Gustav Recoilless Rifle +item.gun_karl.name=Karl +item.gun_panzerschreck.name=Panzerschreck item.gun_rpg_ammo.name=Rocket item.gun_stinger.name=FIM-92 Stinger item.gun_skystinger.name=The One Sky Stinger diff --git a/assets/hbm/textures/blocks/machine_amgen_side.png b/assets/hbm/textures/blocks/machine_amgen_side.png new file mode 100644 index 000000000..374d34705 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_amgen_side.png differ diff --git a/assets/hbm/textures/blocks/machine_amgen_top.png b/assets/hbm/textures/blocks/machine_amgen_top.png new file mode 100644 index 000000000..0e5a9c901 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_amgen_top.png differ diff --git a/assets/hbm/textures/blocks/machine_arc_furnace_top_el.png b/assets/hbm/textures/blocks/machine_arc_furnace_top_rods.png similarity index 100% rename from assets/hbm/textures/blocks/machine_arc_furnace_top_el.png rename to assets/hbm/textures/blocks/machine_arc_furnace_top_rods.png diff --git a/assets/hbm/textures/blocks/machine_gas_furnace_off.png b/assets/hbm/textures/blocks/machine_gas_furnace_off.png new file mode 100644 index 000000000..92fb934f8 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_gas_furnace_off.png differ diff --git a/assets/hbm/textures/blocks/machine_gas_furnace_on.png b/assets/hbm/textures/blocks/machine_gas_furnace_on.png new file mode 100644 index 000000000..2addbfbe7 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_gas_furnace_on.png differ diff --git a/assets/hbm/textures/blocks/machine_gas_furnace_side.png b/assets/hbm/textures/blocks/machine_gas_furnace_side.png new file mode 100644 index 000000000..4ce572787 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_gas_furnace_side.png differ diff --git a/assets/hbm/textures/blocks/machine_gas_furnace_top.png b/assets/hbm/textures/blocks/machine_gas_furnace_top.png new file mode 100644 index 000000000..aa6472535 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_gas_furnace_top.png differ diff --git a/assets/hbm/textures/gui/gui_arc.png b/assets/hbm/textures/gui/gui_arc.png new file mode 100644 index 000000000..521fbb4dc Binary files /dev/null and b/assets/hbm/textures/gui/gui_arc.png differ diff --git a/assets/hbm/textures/blocks/arc/arc_electrode.png b/assets/hbm/textures/items/arc_electrode.png similarity index 100% rename from assets/hbm/textures/blocks/arc/arc_electrode.png rename to assets/hbm/textures/items/arc_electrode.png diff --git a/assets/hbm/textures/blocks/arc/arc_electrode_burnt.png b/assets/hbm/textures/items/arc_electrode_burnt.png similarity index 100% rename from assets/hbm/textures/blocks/arc/arc_electrode_burnt.png rename to assets/hbm/textures/items/arc_electrode_burnt.png diff --git a/assets/hbm/textures/items/arc_electrode_desh.png b/assets/hbm/textures/items/arc_electrode_desh.png new file mode 100644 index 000000000..05730206b Binary files /dev/null and b/assets/hbm/textures/items/arc_electrode_desh.png differ diff --git a/assets/hbm/textures/models/epress_body.png b/assets/hbm/textures/models/epress_body.png index 91eeaa1c4..68cb7185e 100644 Binary files a/assets/hbm/textures/models/epress_body.png and b/assets/hbm/textures/models/epress_body.png differ diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index a4fed6270..ce128f655 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -332,6 +332,7 @@ public class ModBlocks { public static Block machine_arc_furnace_off; public static Block machine_arc_furnace_on; + public static final int guiID_machine_arc = 82; //public static Block machine_deuterium; public static final int guiID_machine_deuterium = 20; @@ -461,6 +462,7 @@ public class ModBlocks { public static Block machine_rtg_cyan; //public static Block machine_rtg_blue; //public static Block machine_rtg_purple; + public static Block machine_amgen; public static Block machine_well; public static Block oil_pipe; @@ -893,6 +895,7 @@ public class ModBlocks { machine_rtg_cyan = new MachineRTG(Material.iron).setBlockName("machine_rtg_cyan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); //machine_rtg_blue = new MachineRTG(Material.iron).setBlockName("machine_rtg_blue").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); //machine_rtg_purple = new MachineRTG(Material.iron).setBlockName("machine_rtg_purple").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_amgen = new MachineAmgen(Material.iron).setBlockName("machine_amgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); red_wire_coated = new WireCoated(Material.iron).setBlockName("red_wire_coated").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_wire_coated"); red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_icon"); @@ -1413,6 +1416,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); + GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_bottom, machine_spp_bottom.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_top, machine_spp_top.getUnlocalizedName()); //GameRegistry.registerBlock(machine_rtg_red, machine_rtg_red.getUnlocalizedName()); diff --git a/com/hbm/blocks/machine/MachineAmgen.java b/com/hbm/blocks/machine/MachineAmgen.java new file mode 100644 index 000000000..2f06427b7 --- /dev/null +++ b/com/hbm/blocks/machine/MachineAmgen.java @@ -0,0 +1,44 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineAmgen; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class MachineAmgen extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon iconTop; + + public MachineAmgen(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMachineAmgen(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_amgen_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_amgen_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); + } + +} diff --git a/com/hbm/blocks/machine/MachineArcFurnace.java b/com/hbm/blocks/machine/MachineArcFurnace.java index 3bf9f5a13..80d86f30a 100644 --- a/com/hbm/blocks/machine/MachineArcFurnace.java +++ b/com/hbm/blocks/machine/MachineArcFurnace.java @@ -6,7 +6,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; -import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -39,6 +38,8 @@ public class MachineArcFurnace extends BlockContainer { private IIcon iconTop; @SideOnly(Side.CLIENT) private IIcon iconBottom; + @SideOnly(Side.CLIENT) + private IIcon iconRods; public MachineArcFurnace(boolean blockState) { super(Material.iron); @@ -53,12 +54,23 @@ public class MachineArcFurnace extends BlockContainer { this.iconTop = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_arc_furnace_top_on" : ":machine_arc_furnace_top")); this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":machine_arc_furnace_bottom"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_arc_furnace_side"); + this.iconRods = iconRegister.registerIcon(RefStrings.MODID + ":machine_arc_furnace_top_rods"); } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { + if(this == ModBlocks.machine_arc_furnace_off) { + + if(side == 1 && metadata > 5) { + return iconRods; + } + } + + if(metadata > 5) + metadata -= 4; + if(side == 0) return this.iconBottom; if(side == 1) @@ -147,7 +159,7 @@ public class MachineArcFurnace extends BlockContainer { TileEntityMachineArcFurnace entity = (TileEntityMachineArcFurnace) world.getTileEntity(x, y, z); if(entity != null) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_electric_furnace, world, x, y, z); + FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_arc, world, x, y, z); } return true; } else { diff --git a/com/hbm/entity/logic/EntityEMP.java b/com/hbm/entity/logic/EntityEMP.java new file mode 100644 index 000000000..117e5aa7f --- /dev/null +++ b/com/hbm/entity/logic/EntityEMP.java @@ -0,0 +1,28 @@ +package com.hbm.entity.logic; + +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityEMP extends Entity { + + public EntityEMP(World p_i1582_1_) { + super(p_i1582_1_); + } + + @Override + protected void entityInit() { } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + // TODO Auto-generated method stub + + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + // TODO Auto-generated method stub + + } + +} diff --git a/com/hbm/entity/missile/EntityMissileEMPStrong.java b/com/hbm/entity/missile/EntityMissileEMPStrong.java new file mode 100644 index 000000000..a65f531d7 --- /dev/null +++ b/com/hbm/entity/missile/EntityMissileEMPStrong.java @@ -0,0 +1,48 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityMissileEMPStrong extends EntityMissileBaseAdvanced { + + public EntityMissileEMPStrong(World p_i1582_1_) { + super(p_i1582_1_); + } + + public EntityMissileEMPStrong(World world, float x, float y, float z, int a, int b) { + super(world, x, y, z, a, b); + } + + @Override + public void onImpact() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 25.0F, true, true, true); + } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_steel, 10)); + list.add(new ItemStack(ModItems.plate_titanium, 6)); + list.add(new ItemStack(ModItems.thruster_medium, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier2, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return new ItemStack(ModItems.warhead_generic_medium); + } + + @Override + public int getMissileType() { + return 1; + } +} diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index f458fbef3..5213df71c 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -731,6 +731,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_machine_arc: + { + if(entity instanceof TileEntityMachineArcFurnace) + { + return new ContainerMachineArcFurnace(player.inventory, (TileEntityMachineArcFurnace) entity); + } + return null; + } } } else { //CLIENTONLY CONTAINERS @@ -1462,6 +1471,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_machine_arc: + { + if(entity instanceof TileEntityMachineArcFurnace) + { + return new GUIMachineArcFurnace(player.inventory, (TileEntityMachineArcFurnace) entity); + } + return null; + } } } else { //CLIENTONLY GUIS diff --git a/com/hbm/inventory/container/ContainerMachineArcFurnace.java b/com/hbm/inventory/container/ContainerMachineArcFurnace.java new file mode 100644 index 000000000..72a31760d --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachineArcFurnace.java @@ -0,0 +1,88 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; +import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineArcFurnace extends Container { + + private TileEntityMachineArcFurnace diFurnace; + + public ContainerMachineArcFurnace(InventoryPlayer invPlayer, TileEntityMachineArcFurnace tedf) { + + diFurnace = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 56, 17)); + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 1, 116, 35)); + this.addSlotToContainer(new Slot(tedf, 2, 38, 53)); + this.addSlotToContainer(new Slot(tedf, 3, 56, 53)); + this.addSlotToContainer(new Slot(tedf, 4, 74, 53)); + this.addSlotToContainer(new Slot(tedf, 5, 8, 53)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + } + } + + @Override + public void addCraftingToCrafters(ICrafting crafting) { + super.addCraftingToCrafters(crafting); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 5) { + if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 0, 1, false)) + { + if (!this.mergeItemStack(var5, 2, 6, false)) + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return diFurnace.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/gui/GUIMachineArcFurnace.java b/com/hbm/inventory/gui/GUIMachineArcFurnace.java new file mode 100644 index 000000000..e1dd01046 --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineArcFurnace.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineArcFurnace; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineArcFurnace extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_arc.png"); + private TileEntityMachineArcFurnace diFurnace; + + public GUIMachineArcFurnace(InventoryPlayer invPlayer, TileEntityMachineArcFurnace tedf) { + super(new ContainerMachineArcFurnace(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 166; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 51 - 34, 16, 34, diFurnace.power, diFurnace.maxPower); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + //failsafe TE clone + //if initial TE invalidates, new TE is fetched + //if initial ZE is still present, it'll be used instead + //works so that container packets can still be used + //efficiency! + TileEntityMachineArcFurnace fs = null; + + if(diFurnace.isInvalid() && diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord) instanceof TileEntityMachineArcFurnace) + fs = (TileEntityMachineArcFurnace) diFurnace.getWorldObj().getTileEntity(diFurnace.xCoord, diFurnace.yCoord, diFurnace.zCoord); + else + fs = diFurnace; + + if(fs.hasPower()) { + int i = (int)diFurnace.getPowerRemainingScaled(34); + drawTexturedModalRect(guiLeft + 8, guiTop + 51 - i, 176, 67 - i, 16, i); + } + + if(diFurnace.canProcess() && diFurnace.hasPower()) + { + drawTexturedModalRect(guiLeft + 55, guiTop + 35, 176, 0, 15, 16); + } + + int j1 = fs.getDiFurnaceProgressScaled(24); + drawTexturedModalRect(guiLeft + 79, guiTop + 34, 176, 16, j1 + 1, 17); + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index b896deaad..3c9509e20 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -1118,6 +1118,9 @@ public class ModItems { public static Item titanium_filter; public static Item screwdriver; public static Item overfuse; + public static Item arc_electrode; + public static Item arc_electrode_burnt; + public static Item arc_electrode_desh; public static Item dynosphere_base; public static Item dynosphere_desh; public static Item dynosphere_desh_charged; @@ -2573,6 +2576,9 @@ public class ModItems { titanium_filter = new ItemCapacitor(72000).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); screwdriver = new ItemCustomLore().setUnlocalizedName("screwdriver").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":screwdriver"); overfuse = new ItemCustomLore().setUnlocalizedName("overfuse").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":overfuse"); + arc_electrode = new ItemCustomLore().setUnlocalizedName("arc_electrode").setMaxDamage(250).setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode"); + arc_electrode_burnt = new Item().setUnlocalizedName("arc_electrode_burnt").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode_burnt"); + arc_electrode_desh = new ItemCustomLore().setUnlocalizedName("arc_electrode_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode_desh"); dynosphere_base = new Item().setUnlocalizedName("dynosphere_base").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":dynosphere_base"); dynosphere_desh = new ItemBattery(10000L, 100, 0).setUnlocalizedName("dynosphere_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":dynosphere_desh"); @@ -3641,6 +3647,9 @@ public class ModItems { GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName()); GameRegistry.registerItem(screwdriver, screwdriver.getUnlocalizedName()); GameRegistry.registerItem(overfuse, overfuse.getUnlocalizedName()); + GameRegistry.registerItem(arc_electrode, arc_electrode.getUnlocalizedName()); + GameRegistry.registerItem(arc_electrode_burnt, arc_electrode_burnt.getUnlocalizedName()); + GameRegistry.registerItem(arc_electrode_desh, arc_electrode_desh.getUnlocalizedName()); //Particle Collider Items GameRegistry.registerItem(crystal_energy, crystal_energy.getUnlocalizedName()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index b7f769c72..40ced53ee 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -626,6 +626,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(ItemBattery.getEmptyBattery(ModItems.factory_core_advanced), new Object[] { "BSB", "LHL", "BSB", 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced), 'S', "blockSulfur", 'L', "blockLead", 'H', Item.getItemFromBlock(ModBlocks.factory_advanced_hull) })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.fuse, 1), new Object[] { " S ", "GAG", " S ", 'S', "plateSteel", 'G', Item.getItemFromBlock(Blocks.glass_pane), 'A', ModItems.wire_aluminium })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.arc_electrode, 1), new Object[] { "C", "T", "C", 'C', "dustCoal", 'T', ModItems.bolt_tungsten })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.arc_electrode_desh, 1), new Object[] { "C", "T", "C", 'C', "dustDesh", 'T', ModItems.arc_electrode })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.redcoil_capacitor, 1), new Object[] { "PFP", "CBC", "CBC", 'P', "plateGold", 'B', Item.getItemFromBlock(Blocks.redstone_block), 'C', ModItems.coil_advanced_alloy, 'F', ModItems.fuse })); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.titanium_filter, 1), new Object[] { "PFP", "CBC", "CBC", 'P', "plateLead", 'B', "U238", 'C', "plateTitanium", 'F', ModItems.fuse })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.detonator, 1), new Object[] { " W", "SC", "CE", 'S', "plateSteel", 'W', ModItems.wire_red_copper, 'C', ModItems.circuit_red_copper, 'E', "ingotSteel" })); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index eb8dea227..5fd6ab7a5 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -109,6 +109,7 @@ import com.hbm.entity.grenade.EntityGrenadeZOMG; import com.hbm.entity.item.EntityMinecartTest; import com.hbm.entity.logic.EntityBomber; import com.hbm.entity.logic.EntityDeathBlast; +import com.hbm.entity.logic.EntityEMP; import com.hbm.entity.logic.EntityMissileTest; import com.hbm.entity.logic.EntityNukeExplosion; import com.hbm.entity.logic.EntityNukeExplosionAdvanced; @@ -132,6 +133,7 @@ import com.hbm.entity.missile.EntityMissileClusterStrong; import com.hbm.entity.missile.EntityMissileDoomsday; import com.hbm.entity.missile.EntityMissileDrill; import com.hbm.entity.missile.EntityMissileEMP; +import com.hbm.entity.missile.EntityMissileEMPStrong; import com.hbm.entity.missile.EntityMissileEndo; import com.hbm.entity.missile.EntityMissileExo; import com.hbm.entity.missile.EntityMissileGeneric; @@ -287,6 +289,7 @@ import com.hbm.tileentity.machine.TileEntityFWatzCore; import com.hbm.tileentity.machine.TileEntityForceField; import com.hbm.tileentity.machine.TileEntityFusionMultiblock; import com.hbm.tileentity.machine.TileEntityHatch; +import com.hbm.tileentity.machine.TileEntityMachineAmgen; import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; import com.hbm.tileentity.machine.TileEntityMachineAssembler; import com.hbm.tileentity.machine.TileEntityMachineBattery; @@ -784,6 +787,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityCoreReceiver.class, "tileentity_v0_receiver"); GameRegistry.registerTileEntity(TileEntityCoreInjector.class, "tileentity_v0_injector"); GameRegistry.registerTileEntity(TileEntityMachineArcFurnace.class, "tileentity_arc_furnace"); + GameRegistry.registerTileEntity(TileEntityMachineAmgen.class, "tileentity_amgen"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -920,6 +924,8 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityMinerRocket.class, "entity_miner_lander", 132, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityFogFX.class, "entity_nuclear_fog", 133, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityDuchessGambit.class, "entity_duchessgambit", 134, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityMissileEMPStrong.class, "entity_missile_emp_strong", 135, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityEMP.class, "entity_emp_logic", 136, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); @@ -1509,6 +1515,8 @@ public class MainRegistry recipes.overridePreSetRecipe(new ItemStack(Blocks.stone), new ItemStack(Blocks.gravel, 1)); recipes.overridePreSetRecipe(new ItemStack(Blocks.cobblestone), new ItemStack(Blocks.gravel, 1)); recipes.overridePreSetRecipe(new ItemStack(Blocks.stonebrick), new ItemStack(Blocks.gravel, 1)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.gravel), new ItemStack(Blocks.sand, 1)); + recipes.overridePreSetRecipe(new ItemStack(Blocks.sand), new ItemStack(ModItems.dust, 2)); recipes.overridePreSetRecipe(new ItemStack(Blocks.brick_block), new ItemStack(Items.clay_ball, 4)); recipes.overridePreSetRecipe(new ItemStack(Blocks.brick_stairs), new ItemStack(Items.clay_ball, 3)); recipes.overridePreSetRecipe(new ItemStack(Items.flower_pot), new ItemStack(Items.clay_ball, 3)); @@ -1529,6 +1537,8 @@ public class MainRegistry recipes.overridePreSetRecipe(new ItemStack(ModItems.fragment_meteorite), new ItemStack(ModItems.powder_meteorite_tiny, 1)); recipes.overridePreSetRecipe(new ItemStack(ModBlocks.block_meteor), new ItemStack(ModItems.powder_meteorite, 10)); recipes.overridePreSetRecipe(new ItemStack(Items.enchanted_book), new ItemStack(ModItems.powder_magic, 1)); + recipes.overridePreSetRecipe(new ItemStack(ModItems.arc_electrode_burnt), new ItemStack(ModItems.powder_coal, 1)); + recipes.overridePreSetRecipe(new ItemStack(ModItems.arc_electrode_desh), new ItemStack(ModItems.powder_desh, 2)); for(int i = 0; i < 16; i++) { recipes.overridePreSetRecipe(new ItemStack(Blocks.stained_hardened_clay, 1, i), new ItemStack(Items.clay_ball, 4)); diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 52efcef58..4da3c1a97 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -336,6 +336,7 @@ public class ResourceManager { public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileV2_BU.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileAA.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_HE.png"); + public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_EMP.png"); public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_IN.png"); public static final ResourceLocation missileStrong_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_CL.png"); public static final ResourceLocation missileStrong_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileStrong_BU.png"); diff --git a/com/hbm/packet/AuxGaugePacket.java b/com/hbm/packet/AuxGaugePacket.java index 8d07e029a..58c824988 100644 --- a/com/hbm/packet/AuxGaugePacket.java +++ b/com/hbm/packet/AuxGaugePacket.java @@ -10,6 +10,7 @@ import com.hbm.tileentity.deco.TileEntityBomber; import com.hbm.tileentity.machine.TileEntityAMSBase; import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; +import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; import com.hbm.tileentity.machine.TileEntityMachineBoiler; import com.hbm.tileentity.machine.TileEntityMachineBoilerElectric; import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; @@ -195,6 +196,12 @@ public class AuxGaugePacket implements IMessage { if(m.id == 0) furn.dualCookTime = m.value; } + if (te instanceof TileEntityMachineArcFurnace) { + TileEntityMachineArcFurnace furn = (TileEntityMachineArcFurnace)te; + + if(m.id == 0) + furn.dualCookTime = m.value; + } if (te instanceof TileEntityMachineBoilerElectric) { TileEntityMachineBoilerElectric boiler = (TileEntityMachineBoilerElectric)te; diff --git a/com/hbm/tileentity/machine/TileEntityMachineAmgen.java b/com/hbm/tileentity/machine/TileEntityMachineAmgen.java new file mode 100644 index 000000000..5387dd45b --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityMachineAmgen.java @@ -0,0 +1,83 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.ISource; +import com.hbm.lib.Library; +import com.hbm.saveddata.RadiationSavedData; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.chunk.Chunk; + +public class TileEntityMachineAmgen extends TileEntity implements ISource { + + public List list = new ArrayList(); + public long power; + public long maxPower = 50; + boolean tact = false; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + RadiationSavedData data = RadiationSavedData.getData(worldObj); + Chunk c = worldObj.getChunkFromBlockCoords(xCoord, zCoord); + float rad = data.getRadNumFromCoord(c.xPosition, c.zPosition); + + power += rad; + + data.decrementRad(worldObj, xCoord, zCoord, 5F); + + tact = false; + ffgeuaInit(); + tact = true; + ffgeuaInit(); + } + } + + @Override + public void ffgeuaInit() { + ffgeua(this.xCoord, this.yCoord + 1, this.zCoord, getTact()); + ffgeua(this.xCoord, this.yCoord - 1, this.zCoord, getTact()); + ffgeua(this.xCoord - 1, this.yCoord, this.zCoord, getTact()); + ffgeua(this.xCoord + 1, this.yCoord, this.zCoord, getTact()); + ffgeua(this.xCoord, this.yCoord, this.zCoord - 1, getTact()); + ffgeua(this.xCoord, this.yCoord, this.zCoord + 1, getTact()); + } + + @Override + public void ffgeua(int x, int y, int z, boolean newTact) { + + Library.ffgeua(x, y, z, newTact, this, worldObj); + } + + @Override + public boolean getTact() { + return tact; + } + + @Override + public long getSPower() { + return power; + } + + @Override + public void setSPower(long i) { + power = i; + } + + @Override + public List getList() { + return list; + } + + @Override + public void clearList() { + list.clear(); + } + +} diff --git a/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index 22dcc8e44..15c606d23 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -1,7 +1,9 @@ package com.hbm.tileentity.machine; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineArcFurnace; import com.hbm.interfaces.IConsumer; +import com.hbm.items.ModItems; import com.hbm.items.special.ItemBattery; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; @@ -23,16 +25,22 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv public int dualCookTime; public long power; public static final long maxPower = 100000; - public static final int processingSpeed = 100; + public static final int processingSpeed = 20; - private static final int[] slots_top = new int[] {1}; - private static final int[] slots_bottom = new int[] {2, 0}; + //0: i + //1: o + //2: 1 + //3: 2 + //4: 3 + //5: b + private static final int[] slots_top = new int[] {0, 2, 3, 4, 5}; + private static final int[] slots_bottom = new int[] {1, 2, 3, 4, 5}; private static final int[] slots_side = new int[] {0}; private String customName; public TileEntityMachineArcFurnace() { - slots = new ItemStack[3]; + slots = new ItemStack[6]; } @Override @@ -68,7 +76,7 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv @Override public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.electricFurnace"; + return this.hasCustomInventoryName() ? this.customName : "container.arcFurnace"; } @Override @@ -103,11 +111,18 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 0) + + if(i == 1) + return false; + + if(i == 5) if(itemStack.getItem() instanceof ItemBattery) return true; - if(i == 1) + if(i == 2 || i == 3 || i == 4) + return itemStack.getItem() == ModItems.arc_electrode || itemStack.getItem() == ModItems.arc_electrode_desh; + + if(i == 0) return true; return false; @@ -188,12 +203,16 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - if(i == 0) + if(i == 5) if (itemStack.getItem() instanceof ItemBattery && ItemBattery.getCharge(itemStack) == 0) return true; - if(i == 2) + + if(i == 1) return true; + if(i == 2 || i == 3 || i == 4) + return itemStack.getItem() == ModItems.arc_electrode_burnt; + return false; } @@ -213,46 +232,62 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv return this.dualCookTime > 0; } + private boolean hasElectrodes() { + + if(slots[2] != null && slots[3] != null && slots[4] != null) { + if((slots[2].getItem() == ModItems.arc_electrode || slots[2].getItem() == ModItems.arc_electrode_desh) && + (slots[3].getItem() == ModItems.arc_electrode || slots[3].getItem() == ModItems.arc_electrode_desh) && + (slots[4].getItem() == ModItems.arc_electrode || slots[4].getItem() == ModItems.arc_electrode_desh)) + return true; + } + + return false; + } + public boolean canProcess() { - if(slots[1] == null) + + if(!hasElectrodes()) + return false; + + if(slots[0] == null) { return false; } - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); + ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); if(itemStack == null) { return false; } - if(slots[2] == null) + if(slots[1] == null) { return true; } - if(!slots[2].isItemEqual(itemStack)) { + if(!slots[1].isItemEqual(itemStack)) { return false; } - if(slots[2].stackSize < getInventoryStackLimit() && slots[2].stackSize < slots[2].getMaxStackSize()) { + if(slots[1].stackSize < getInventoryStackLimit() && slots[1].stackSize < slots[1].getMaxStackSize()) { return true; }else{ - return slots[2].stackSize < itemStack.getMaxStackSize(); + return slots[1].stackSize < itemStack.getMaxStackSize(); } } private void processItem() { if(canProcess()) { - ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[1]); + ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); - if(slots[2] == null) + if(slots[1] == null) { - slots[2] = itemStack.copy(); - }else if(slots[2].isItemEqual(itemStack)) { - slots[2].stackSize += itemStack.stackSize; + slots[1] = itemStack.copy(); + }else if(slots[1].isItemEqual(itemStack)) { + slots[1].stackSize += itemStack.stackSize; } - for(int i = 1; i < 2; i++) + for(int i = 0; i < 1; i++) { if(slots[i].stackSize <= 0) { @@ -265,6 +300,15 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv slots[i] = null; } } + + for(int i = 2; i < 5; i++) { + if(slots[i] != null && slots[i].getItem() == ModItems.arc_electrode) { + if(slots[i].getItemDamage() < slots[i].getMaxDamage()) + slots[i].setItemDamage(slots[i].getItemDamage() + 1); + else + slots[i] = new ItemStack(ModItems.arc_electrode_burnt); + } + } } } @@ -279,9 +323,9 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv { dualCookTime++; - power -= 50; + power -= 1000; - if(this.dualCookTime == TileEntityMachineElectricFurnace.processingSpeed) + if(this.dualCookTime == processingSpeed) { this.dualCookTime = 0; this.processItem(); @@ -304,7 +348,19 @@ public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInv MachineArcFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } - power = Library.chargeTEFromItems(slots, 0, power, maxPower); + if(worldObj.getBlock(xCoord, yCoord, zCoord) == ModBlocks.machine_arc_furnace_off) { + + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + + if(hasElectrodes() && meta <= 5) { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, meta + 4, 2); + } + if(!hasElectrodes() && meta > 5) { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, meta - 4, 2); + } + } + + power = Library.chargeTEFromItems(slots, 5, power, maxPower); PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power)); PacketDispatcher.wrapper.sendToAll(new AuxGaugePacket(xCoord, yCoord, zCoord, dualCookTime, 0));