From e903763d2556774d8de98460548cff374f5c8f21 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Thu, 10 May 2018 09:33:58 +0200 Subject: [PATCH] Death ray and radar functionality, fixed thingy crafting recipe --- assets/hbm/textures/models/sat_scanner.png | Bin 5590 -> 5579 bytes com/hbm/inventory/gui/GUIAMSBase.java | 7 +- .../inventory/gui/GUIScreenSatInterface.java | 64 +++++++++++++- com/hbm/main/CraftingManager.java | 2 +- com/hbm/packet/PacketDispatcher.java | 4 +- com/hbm/packet/SatLaserPacket.java | 80 ++++++++++++++++++ com/hbm/saveddata/SatelliteSaveStructure.java | 3 + 7 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 com/hbm/packet/SatLaserPacket.java diff --git a/assets/hbm/textures/models/sat_scanner.png b/assets/hbm/textures/models/sat_scanner.png index d98044a3e049b1f89ebcbab001b6f1d9715c314f..d76b09571b1663fc567300b56200ee6543c9b844 100644 GIT binary patch delta 5550 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 Hu0mjfYwirx diff --git a/com/hbm/inventory/gui/GUIAMSBase.java b/com/hbm/inventory/gui/GUIAMSBase.java index 4f5ff210e..ab87a8764 100644 --- a/com/hbm/inventory/gui/GUIAMSBase.java +++ b/com/hbm/inventory/gui/GUIAMSBase.java @@ -4,11 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerAMSBase; -import com.hbm.inventory.container.ContainerMachinePumpjack; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityAMSBase; -import com.hbm.tileentity.machine.TileEntityMachinePumpjack; - import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; @@ -35,10 +32,10 @@ public class GUIAMSBase extends GuiInfoContainer { base.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 70 - 52, 16, 52); base.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 124 - 52, 16, 52); base.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 124 - 52, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 124 - 104, 7, 104, base.power, base.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 124 - 104, 7, 104, base.power, TileEntityAMSBase.maxPower); this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 124 - 106, 7, 106, new String[] { "Restriction Field:", base.field + "%" }); this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 124 - 106, 7, 106, new String[] { "Efficiency:", base.efficiency + "%" }); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 124 - 106, 7, 106, new String[] { "Heat:", base.heat + "/" + base.maxHeat }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 124 - 106, 7, 106, new String[] { "Heat:", base.heat + "/" + TileEntityAMSBase.maxHeat }); } @Override diff --git a/com/hbm/inventory/gui/GUIScreenSatInterface.java b/com/hbm/inventory/gui/GUIScreenSatInterface.java index a534ff0c3..91a8aa992 100644 --- a/com/hbm/inventory/gui/GUIScreenSatInterface.java +++ b/com/hbm/inventory/gui/GUIScreenSatInterface.java @@ -6,8 +6,11 @@ import java.util.List; import org.lwjgl.opengl.GL11; +import com.hbm.entity.missile.EntityMissileBase; +import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.handler.FluidTypeHandler.FluidType; import com.hbm.inventory.MachineRecipes; +import com.hbm.inventory.gui.GUIScreenTemplateFolder.FolderButton; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemAssemblyTemplate.EnumAssemblyTemplate; import com.hbm.items.tool.ItemCassette; @@ -16,9 +19,12 @@ import com.hbm.items.tool.ItemChemistryTemplate; import com.hbm.items.tool.ItemFluidIdentifier; import com.hbm.items.tool.ItemSatChip; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.packet.ItemFolderPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.SatLaserPacket; import com.hbm.saveddata.SatelliteSaveStructure; +import com.hbm.saveddata.SatelliteSaveStructure.SatelliteType; import com.hbm.saveddata.SatelliteSavedData; import net.minecraft.client.Minecraft; @@ -27,11 +33,14 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; +import net.minecraft.entity.Entity; +import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; @@ -54,6 +63,21 @@ public class GUIScreenSatInterface extends GuiScreen { public void updateScreen() { } + + protected void mouseClicked(int i, int j, int k) { + + if(connectedSat != null && connectedSat.satelliteType == SatelliteType.LASER) { + + if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); + + + int x = (int)player.posX - guiLeft + i - 8 - 100; + int z = (int)player.posZ - guiTop + j - 8 - 100; + PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, connectedSat.satelliteID)); + } + } + } public void drawScreen(int mouseX, int mouseY, float f) { @@ -80,6 +104,16 @@ public class GUIScreenSatInterface extends GuiScreen { protected void drawGuiContainerForegroundLayer(int i, int j) { + if(connectedSat != null && connectedSat.satelliteType == SatelliteType.LASER) { + + + if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { + + int x = (int)player.posX - guiLeft + i - 8 - 100; + int z = (int)player.posZ - guiTop + j - 8 - 100; + func_146283_a(Arrays.asList(new String[] { x + " / " + z }), i, j); + } + } } protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { @@ -95,7 +129,7 @@ public class GUIScreenSatInterface extends GuiScreen { switch(connectedSat.satelliteType) { case LASER: - break; + drawMap(); break; case MAPPER: drawMap(); break; @@ -232,6 +266,34 @@ public class GUIScreenSatInterface extends GuiScreen { private void drawRadar() { + List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.posX - 100, 0, player.posZ - 100, player.posX + 100, 5000, player.posZ + 100)); + + if(!entities.isEmpty()) { + for(Entity e : entities) { + + if(e.width * e.width * e.height >= 0.5D) { + int x = (int)((e.posX - player.posX) / ((double)100 * 2 + 1) * (200D - 8D)) - 4; + int z = (int)((e.posZ - player.posZ) / ((double)100 * 2 + 1) * (200D - 8D)) - 4 - 9; + + int t = 5; + + if(e instanceof EntityMissileBaseAdvanced) { + t = ((EntityMissileBaseAdvanced)e).getMissileType(); + } + + if(e instanceof EntityMob) { + t = 6; + } + + if(e instanceof EntityPlayer) { + t = 7; + } + + drawTexturedModalRect(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); + } + } + } + } private void prontMap() { diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 00a726d02..3ba0826d4 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -1156,7 +1156,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(ModItems.ams_core_sing, 1), new Object[] { "EAE", "ASA", "EAE", 'E', ModItems.plate_euphemium, 'A', ModItems.cell_anti_schrabidium, 'S', ModItems.singularity }); GameRegistry.addRecipe(new ItemStack(ModItems.ams_core_wormhole, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.plate_dineutronium, 'P', ModItems.powder_spark_mix, 'S', ModItems.singularity }); GameRegistry.addRecipe(new ItemStack(ModItems.ams_core_eyeofharmony, 1), new Object[] { "ALA", "LSL", "ALA", 'A', ModItems.plate_dalekanium, 'L', new ItemStack(ModItems.fluid_barrel_full, 1, FluidType.LAVA.getID()), 'S', ModItems.black_hole }); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "N N", 'N', "nuggetGold", 'G', "ingotGold", 'S', ModItems.battery_spark_cell_10000 })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "G G", 'N', "nuggetGold", 'G', "ingotGold", 'S', ModItems.battery_spark_cell_10000 })); GameRegistry.addShapelessRecipe(new ItemStack(Items.paper, 1), new Object[] { new ItemStack(ModItems.assembly_template, 1, OreDictionary.WILDCARD_VALUE) }); GameRegistry.addShapelessRecipe(new ItemStack(Items.paper, 1), new Object[] { new ItemStack(ModItems.chemistry_template, 1, OreDictionary.WILDCARD_VALUE) }); diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index 549a59371..ac4e5f998 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -55,12 +55,14 @@ public class PacketDispatcher { wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); - //Signals server to change ItemStack's + //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); + //Signals server to perform orbital strike + wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); } } diff --git a/com/hbm/packet/SatLaserPacket.java b/com/hbm/packet/SatLaserPacket.java new file mode 100644 index 000000000..a3cd4d30c --- /dev/null +++ b/com/hbm/packet/SatLaserPacket.java @@ -0,0 +1,80 @@ +package com.hbm.packet; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.saveddata.SatelliteSaveStructure; +import com.hbm.saveddata.SatelliteSavedData; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class SatLaserPacket implements IMessage { + + //0: Add + //1: Subtract + //2: Set + int x; + int z; + int freq; + + public SatLaserPacket() + { + + } + + public SatLaserPacket(int x, int z, int freq) + { + this.x = x; + this.z = z; + this.freq = freq; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + z = buf.readInt(); + freq = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(z); + buf.writeInt(freq); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(SatLaserPacket m, MessageContext ctx) { + + EntityPlayer p = ctx.getServerHandler().playerEntity; + + SatelliteSavedData data = (SatelliteSavedData)p.worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + if(data == null) { + p.worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData(p.worldObj)); + + data = (SatelliteSavedData)p.worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + } + + SatelliteSaveStructure sat = data.getSatFromFreq(m.freq); + + if(sat != null) { + if(sat.lastOp + 10000 < System.currentTimeMillis()) { + sat.lastOp = System.currentTimeMillis(); + + int y = p.worldObj.getHeightValue(m.x, m.z); + + ExplosionLarge.explodeFire(p.worldObj, m.x, y, m.z, 50, true, true, true); + } + } + + return null; + } + } +} diff --git a/com/hbm/saveddata/SatelliteSaveStructure.java b/com/hbm/saveddata/SatelliteSaveStructure.java index 8a8460f30..705fd5642 100644 --- a/com/hbm/saveddata/SatelliteSaveStructure.java +++ b/com/hbm/saveddata/SatelliteSaveStructure.java @@ -11,6 +11,7 @@ public class SatelliteSaveStructure { public int satelliteID; public int satDim; public SatelliteType satelliteType; + public long lastOp; public SatelliteSaveStructure() { } @@ -51,12 +52,14 @@ public class SatelliteSaveStructure { satelliteID = nbt.getInteger("sat_" + index + "_id"); satelliteType = SatelliteType.getEnum(nbt.getInteger("sat_" + index + "_type")); satDim = nbt.getInteger("sat_" + index + "_dim"); + lastOp = nbt.getLong("sat_" + index + "_op"); } public void writeToNBT(NBTTagCompound nbt, int index) { nbt.setInteger("sat_" + index + "_id", satelliteID); nbt.setInteger("sat_" + index + "_type", satelliteType.getID()); nbt.setInteger("sat_" + index + "_dim", satDim); + nbt.setLong("sat_" + index + "_op", lastOp); } }