From 3f02f2309697ab2a923291341055b54f0dd88652 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 3 May 2022 23:05:46 +0200 Subject: [PATCH] finished multi fluid ID --- .../com/hbm/inventory/gui/GUIScreenFluid.java | 33 +++++++++++------- .../hbm/items/machine/ItemFluidIDMulti.java | 14 ++++---- src/main/java/com/hbm/main/ServerProxy.java | 1 + .../com/hbm/packet/PlayerInformPacket.java | 4 +++ .../hbm/textures/models/machines/assemfac.png | Bin 6469 -> 6337 bytes 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index f8193a0eb..0d0ab2722 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -16,6 +16,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.EntityPlayer; @@ -24,9 +25,9 @@ import net.minecraft.util.ResourceLocation; public class GUIScreenFluid extends GuiScreen { - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/machine/gui_fluid.png"); + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_fluid.png"); protected int xSize = 176; - protected int ySize = 178; + protected int ySize = 54; protected int guiLeft; protected int guiTop; private GuiTextField search; @@ -38,12 +39,6 @@ public class GUIScreenFluid extends GuiScreen { public GUIScreenFluid(EntityPlayer player) { this.player = player; - - Keyboard.enableRepeatEvents(true); - this.search = new GuiTextField(this.fontRendererObj, guiLeft + 46, guiTop + 10, 86, 12); - this.search.setTextColor(-1); - this.search.setDisabledTextColour(-1); - this.search.setEnableBackgroundDrawing(false); } @Override @@ -67,6 +62,12 @@ public class GUIScreenFluid extends GuiScreen { this.guiLeft = (this.width - this.xSize) / 2; this.guiTop = (this.height - this.ySize) / 2; + Keyboard.enableRepeatEvents(true); + this.search = new GuiTextField(this.fontRendererObj, guiLeft + 46, guiTop + 11, 86, 12); + this.search.setTextColor(-1); + this.search.setDisabledTextColour(-1); + this.search.setEnableBackgroundDrawing(false); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.fluid_identifier_multi) { this.primary = ItemFluidIDMulti.getType(player.getHeldItem(), true); this.secondary = ItemFluidIDMulti.getType(player.getHeldItem(), false); @@ -75,19 +76,22 @@ public class GUIScreenFluid extends GuiScreen { @Override protected void mouseClicked(int i, int j, int button) { + this.search.mouseClicked(i, j, button); for(int k = 0; k < this.searchArray.length; k++) { if(this.searchArray[k] == null) return; - if(7 + k * 18 <= i && 7 + k * 18 + 18 > i && 29 < j && 29 + 18 >= j) { + if(guiLeft + 7 + k * 18 <= i && guiLeft + 7 + k * 18 + 18 > i && guiTop + 29 < j && guiTop + 29 + 18 >= j) { if(button == 0) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); this.primary = this.searchArray[k]; NBTTagCompound data = new NBTTagCompound(); data.setInteger("primary", this.primary.getID()); PacketDispatcher.wrapper.sendToServer(new NBTItemControlPacket(data)); } else if(button == 1) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); this.secondary = this.searchArray[k]; NBTTagCompound data = new NBTTagCompound(); data.setInteger("secondary", this.secondary.getID()); @@ -105,7 +109,7 @@ public class GUIScreenFluid extends GuiScreen { if(this.searchArray[k] == null) return; - if(7 + k * 18 <= i && 7 + k * 18 + 18 > i && 29 < j && 29 + 18 >= j) + if(guiLeft + 7 + k * 18 <= i && guiLeft + 7 + k * 18 + 18 > i && guiTop + 29 < j && guiTop + 29 + 18 >= j) func_146283_a(Arrays.asList(new String[] { I18nUtil.resolveKey(this.searchArray[k].getUnlocalizedName()) }), i, j); } } @@ -126,7 +130,7 @@ public class GUIScreenFluid extends GuiScreen { Color color = new Color(type.getColor()); GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); - drawTexturedModalRect(guiLeft + 12 + k * 18, guiTop + 30, 12 + k * 18, 56, 8, 14); + drawTexturedModalRect(guiLeft + 12 + k * 18, guiTop + 31, 12 + k * 18, 56, 8, 14); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); if(type == this.primary && type == this.secondary) { @@ -148,11 +152,16 @@ public class GUIScreenFluid extends GuiScreen { super.keyTyped(c, key); } - if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + if(key == 1) { this.mc.thePlayer.closeScreen(); } } + @Override + public boolean doesGuiPauseGame() { + return false; + } + private void updateSearch() { this.searchArray = new FluidType[9]; diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 02fa8c49c..c8b2165dd 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -7,6 +7,9 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.items.IItemControlReceiver; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -14,9 +17,11 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -33,6 +38,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte setType(stack, secondary, true); setType(stack, primary, false); world.playSoundAtEntity(player, "random.orb", 0.25F, 1.25F); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.startTranslation(secondary.getUnlocalizedName()).flush(), /*MainRegistry.proxy.ID_DETONATOR*/ 7, 3000), (EntityPlayerMP) player); } if(world.isRemote && player.isSneaking()) { @@ -54,10 +60,6 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - if(!(stack.getItem() instanceof ItemFluidIdentifier)) - return; - list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info")); list.add(" " + I18n.format(getType(stack, true).getUnlocalizedName())); list.add(I18nUtil.resolveKey(getUnlocalizedName() + ".info2")); @@ -105,8 +107,8 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte @Override @SideOnly(Side.CLIENT) - public IIcon getIconFromDamageForRenderPass(int pass, int meta) { - return pass == 1 ? this.overlayIcon : super.getIconFromDamageForRenderPass(pass, meta); + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + return pass == 1 ? this.overlayIcon : super.getIconFromDamageForRenderPass(meta, pass); } @Override diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 652352d87..eaf324f5f 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -20,6 +20,7 @@ public class ServerProxy { public static final int ID_JETPACK = 4; public static final int ID_HUD = 5; public static final int ID_DETONATOR = 6; + public static final int ID_FLUID_ID = 7; public void registerRenderInfo() { } public void registerTileEntitySpecialRenderer() { } diff --git a/src/main/java/com/hbm/packet/PlayerInformPacket.java b/src/main/java/com/hbm/packet/PlayerInformPacket.java index 590bb294b..01bb8b599 100644 --- a/src/main/java/com/hbm/packet/PlayerInformPacket.java +++ b/src/main/java/com/hbm/packet/PlayerInformPacket.java @@ -24,23 +24,27 @@ public class PlayerInformPacket implements IMessage { public PlayerInformPacket(String dmesg, int id) { this.fancy = false; this.dmesg = dmesg; + this.id = id; } public PlayerInformPacket(IChatComponent component, int id) { this.fancy = true; this.component = component; + this.id = id; } public PlayerInformPacket(String dmesg, int id, int millis) { this.fancy = false; this.dmesg = dmesg; this.millis = millis; + this.id = id; } public PlayerInformPacket(IChatComponent component, int id, int millis) { this.fancy = true; this.component = component; this.millis = millis; + this.id = id; } @Override diff --git a/src/main/resources/assets/hbm/textures/models/machines/assemfac.png b/src/main/resources/assets/hbm/textures/models/machines/assemfac.png index a9d04cb335299831a0699c113514ae6a5f496a42..086cb2ee3a17d2811237f74f10bf7d5e2f0356e5 100644 GIT binary patch literal 6337 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 literal 6469 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 W>UL;feZc=B5bC