From e62955f667fe3fe780b615315105268677f2be71 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 15 Jan 2024 19:53:35 +0100 Subject: [PATCH] radar fixes --- changelog | 4 ++ gradle.properties | 2 +- .../java/com/hbm/inventory/gui/GUIFunnel.java | 28 +++++++++- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../render/tileentity/RenderRadarScreen.java | 5 +- .../machine/TileEntityMachineFunnel.java | 50 ++++++++++++++++-- .../machine/TileEntityMachineRadarLarge.java | 22 ++++++++ .../machine/TileEntityMachineRadarNT.java | 10 +--- .../machine/TileEntityMachineRadarScreen.java | 3 ++ .../textures/gui/processing/gui_funnel.png | Bin 1164 -> 1486 bytes 10 files changed, 108 insertions(+), 18 deletions(-) diff --git a/changelog b/changelog index 7293090d2..4ed8554c2 100644 --- a/changelog +++ b/changelog @@ -6,6 +6,7 @@ * Capacity can be changed by right-clicking if the pipette is empty ## Changed +* Updated russian localization * There is now a config option to disable the biome change caused by fallout. The config will also determine whether the biomes are registered at all, which prevents them from conflicting with other mods' biomes when disabled. * Chemical plants now have a timer that starts after loading/unloading fluids using item fluid containers from the input buffers, this creates a delay between switching from loading and unloading, making it possible to retrieve fluids using pipettes. * In addition to delaying overheats, efficiency upgrades now reduce the cyclotron's coolant demand @@ -13,6 +14,7 @@ * Meteorite swords now render their variant glint in first person view * Meteorite swords are now a lot larger, similar to most other NTM swords * Non-custom missile items now render in 3D +* Combinator funnels can now be configured whether to only do 3x3, 2x2 or both recipe types ## Fixed * Fixed trenchmaster armor not doing most of the armor calculation, making it the worst armor @@ -21,3 +23,5 @@ * Fixed fallout being able to replace bedrock * Fixed the upgrade info of the large mining drill being incorrect * Fixed cyclotron not having the new upgrade info tooltip +* Fixed the large radar not actually having a larger scan range +* Fixed radar blips going out of bounds when using a radar screen with a large radar or a radar with a different config diff --git a/gradle.properties b/gradle.properties index 1b2ab7ac0..963b4f95a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4844 +mod_build_number=4845 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java index 1ee5069b3..817be3b10 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java @@ -4,15 +4,18 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFunnel; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineFunnel; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -public class GUIFunnel extends GuiContainer { +public class GUIFunnel extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_funnel.png"); private TileEntityMachineFunnel funnel; @@ -24,6 +27,25 @@ public class GUIFunnel extends GuiContainer { this.xSize = 176; this.ySize = 168; } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 159, guiTop + 73, 10, 10, mouseX, mouseY, "Mode: " + (funnel.mode == funnel.MODE_3x3 ? "3x3 only" : funnel.mode == funnel.MODE_2x2 ? "2x2 only" : "3x3 then 2x2")); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(this.checkClick(x, y, 159, 73, 10, 10)) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, funnel.xCoord, funnel.yCoord, funnel.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { @@ -38,5 +60,7 @@ public class GUIFunnel extends GuiContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + drawTexturedModalRect(guiLeft + 159, guiTop + 73, 176, funnel.mode * 10, 10, 10); } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 89362f753..df5d5a653 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4844)"; + public static final String VERSION = "1.0.27 BETA (4845)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java index 90130463e..5980da6a6 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRadarScreen.java @@ -7,7 +7,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUIMachineRadarNT; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; -import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; import api.hbm.entity.RadarEntry; @@ -71,8 +70,8 @@ public class RenderRadarScreen extends TileEntitySpecialRenderer implements IIte for(RadarEntry entry : screen.entries) { - double sX = (entry.posX - screen.refX) / ((double) TileEntityMachineRadarNT.radarRange + 1) * (0.875D); - double sZ = (entry.posZ - screen.refZ) / ((double) TileEntityMachineRadarNT.radarRange + 1) * (0.875D); + double sX = (entry.posX - screen.refX) / ((double) screen.range + 1) * (0.875D); + double sZ = (entry.posZ - screen.refZ) / ((double) screen.range + 1) * (0.875D); double size = 0.0625D; tess.addVertexWithUV(0.38, 1 - sZ + size, 0.5 - sX + size, 216D / 256D, (entry.blipLevel * 8F + 8F) / 256F); tess.addVertexWithUV(0.38, 1 - sZ + size, 0.5 - sX - size, 224D / 256D, (entry.blipLevel * 8F + 8F) / 256F); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java index ee40ccf8f..3a1933554 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerFunnel; import com.hbm.inventory.gui.GUIFunnel; import com.hbm.tileentity.IGUIProvider; @@ -8,6 +9,7 @@ import com.hbm.tileentity.machine.TileEntityMachineAutocrafter.InventoryCrafting import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -15,9 +17,15 @@ import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class TileEntityMachineFunnel extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityMachineFunnel extends TileEntityMachineBase implements IGUIProvider, IControlReceiver { + + public int mode = 0; + public static final int MODE_ALL = 0; + public static final int MODE_3x3 = 1; + public static final int MODE_2x2 = 2; public TileEntityMachineFunnel() { super(18); @@ -37,9 +45,9 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG if(slots[i] != null) { int stacksize = 9; - ItemStack compressed = slots[i].stackSize < 9 ? null : this.getFrom9(slots[i]); + ItemStack compressed = (mode == MODE_2x2 || slots[i].stackSize < 9) ? null : this.getFrom9(slots[i]); if(compressed == null) { - compressed = slots[i].stackSize < 4 ? null : this.getFrom4(slots[i]); + compressed = (mode == MODE_3x3 || slots[i].stackSize < 4) ? null : this.getFrom4(slots[i]); stacksize = 4; } @@ -54,8 +62,20 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG } } } + + this.networkPackNT(15); } } + + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(this.mode); + } + + @Override + public void deserialize(ByteBuf buf) { + this.mode = buf.readInt(); + } public int[] topAccess = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; public int[] bottomAccess = new int[] { 9, 10, 11, 12, 13, 14, 15, 16, 17 }; @@ -104,6 +124,18 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG } return null; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.mode = nbt.getInteger("mode"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("mode", mode); + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { @@ -115,4 +147,16 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFunnel(player.inventory, this); } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + this.mode++; + if(mode > 2) mode = 0; + this.markDirty(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java index 4fd6d497b..79b60e6b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarLarge.java @@ -1,12 +1,34 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.lib.Library; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.util.fauxpointtwelve.DirPos; import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineRadarLarge extends TileEntityMachineRadarNT { + public static int radarLargeRange = 3_000; + + @Override + public String getConfigName() { + return "radar_large"; + } + + @Override + public void readIfPresent(JsonObject obj) { + radarLargeRange = IConfigurableMachine.grab(obj, "I:radarLargeRange", radarLargeRange); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:radarLargeRange").value(radarLargeRange); + } + @Override public int getRange() { return radarLargeRange; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index ab8f13643..b29d37ea4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -81,7 +81,6 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static int maxPower = 100_000; public static int consumption = 500; public static int radarRange = 1_000; - public static int radarLargeRange = 3_000; public static int radarBuffer = 30; public static int radarAltitude = 55; public static int chunkLoadCap = 10; @@ -102,7 +101,6 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption); radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); - radarLargeRange = IConfigurableMachine.grab(obj, "I:radarLargeRange", radarLargeRange); radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap); @@ -114,7 +112,6 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I writer.name("L:powerCap").value(maxPower); writer.name("L:consumption").value(consumption); writer.name("I:radarRange").value(radarRange); - writer.name("I:radarLargeRange").value(radarLargeRange); writer.name("I:radarBuffer").value(radarBuffer); writer.name("I:radarAltitude").value(radarAltitude); writer.name("B:generateChunks").value(generateChunks); @@ -207,6 +204,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I screen.refX = xCoord; screen.refY = yCoord; screen.refZ = zCoord; + screen.range = this.getRange(); screen.linked = true; } } @@ -328,7 +326,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(this.power < consumption) return; this.power -= consumption; - int scan = this.scanRange(); + int scan = this.getRange(); RadarScanParams params = new RadarScanParams(this.scanMissiles, this.scanShells, this.scanPlayers, this.smartMode); @@ -394,10 +392,6 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return 0; } - - protected int scanRange() { - return radarRange; - } @Override public void setPower(long i) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java index 663b6835a..ba08f0d82 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java @@ -21,6 +21,7 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack public int refX; public int refY; public int refZ; + public int range; public boolean linked; @Override @@ -43,6 +44,7 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack buf.writeInt(refX); buf.writeInt(refY); buf.writeInt(refZ); + buf.writeInt(range); buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); } @@ -53,6 +55,7 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack refX = buf.readInt(); refY = buf.readInt(); refZ = buf.readInt(); + range = buf.readInt(); int count = buf.readInt(); this.entries.clear(); for(int i = 0; i < count; i++) { diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_funnel.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_funnel.png index 23f79d5049a806457297ce20f7eebfa8c03f68f8..2f4670d815c6ca5f19ed7351966cf3b21774c99b 100644 GIT binary patch literal 1486 zcmcIkdo0B5v!&32wH+7WNf+}k8Z~{ z+7ey6;GZR}A0DxK8g^(x!5U_~=C?i-U+-M=f3d%hf7L9_X1eN+J0EVB0g}fDA*r=FO zkQQRCjO2?G!XHlCzcZ6#`hJjOg5ejZ2p2gd$GR^&@tMZ+7)MJl%K&7oL>Dl2=GC|( zrklfkV)Zwz1;JcD&+MZ%Rf7{_BpF*oPRz~hO*I$^Rg}b?wy8>Kv8`mJu;TSuFCqBb^nG7x82^KhCg*bouLOYDQ6@ z)@M+&c#reQ|7W|+M6n*L?H!mOP}LiOVq-wuAV~(Alz}IucN6JggeKZmzJ_qiAjzhc zN~NHTy-4BhPN4wt`wiWiZddNr+~k}(Y(k$uCG^Ilh^St@;>T=0OVmvP}}7T zbY*IZX0H@UmFfzej^$woYH;>=D+alLVlKWuZ6)tMyViI%5>0k(rJKb zT|T$W_YZ`d?=o*)_-Wps1@RM=zsob$X)!h=FfkltVQAuHU=e2EP-77AVNjUC z;9vlk*n948+V#@a`3rJyOC7)1H}|OZ^wX(d`R>o=b+~$*d4t>i@1}i=Wv#o*YrIPB z^%zk#<1`f_VOA~YaC_U;?|)xOZ%l4a&RUfecJ$UIU6wd-lOjf|7s3gv#BV1Q}M~Z|1*Py?0d$XEpzVeYZiTFZ*=Yzc5aw|lOd$mh9Ub)ZTw@4TN^i59AEmfE`|vy*a-L>7|=Q2 zY#O%Zu73afs(I3JzT;1P9Q=;YY`9&>iN|Ni5tZ}p@qyUuYxgxO*WKSUxA<+0-t?>1 zHTh-?p`|O{cW$4&^KtU4-$a`RiS`XQKQr`wv;A0RRDQ!hIP|iKZ)j+}?4AcM3fAs7 zepV@6FyILdE!`Wp+U_6U<_W@$Z)EC@cRKw3D2FTcU=M~l94XH~Sib>kE#uq&*k!?A z3&9iT9+uDH*dqU)k)%L812*DtU79~jlX8*Lg)&4Wq}^vJ(b_Oq`Avb%)rb~1MuPTU#2rDZ#?T3t=|AL-qY33 JWt~$(69D_sk5d2u