From 7f91038b08aca444f756ca25fd92650dc4a8a44d Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Sep 2024 21:30:47 +0200 Subject: [PATCH] conveyor destroyer mode --- changelog | 2 + gradle.properties | 2 +- .../com/hbm/blocks/network/CraneInserter.java | 7 ++- .../container/ContainerCraneInserter.java | 2 +- .../hbm/inventory/gui/GUICraneInserter.java | 21 ++++++++- .../java/com/hbm/items/tool/ItemDiscord.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../network/TileEntityCraneExtractor.java | 3 +- .../network/TileEntityCraneInserter.java | 43 +++++++++++++++++- .../gui/storage/gui_crane_inserter.png | Bin 1236 -> 1815 bytes 10 files changed, 74 insertions(+), 10 deletions(-) diff --git a/changelog b/changelog index c26beadfa9..ed28884611 100644 --- a/changelog +++ b/changelog @@ -6,6 +6,8 @@ * Updated CMB brick texture * The ICF machine block now renders with its 3d model in the creative inventory * "Toggle backpack" keybind is now called "toggle jetpack" to reduce confusion +* The xenium resonator can now teleport players using the radar linker +* Inserters now have a toggleable destroyer mode which will delete items that cannot be inserted or cached instead of spilling them ## Fixed * Fixed pumpjack gauges not syncing properly diff --git a/gradle.properties b/gradle.properties index 93317634fa..856cc07bfb 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=5061 +mod_build_number=5082 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java index 22dcdcad8e..b21009505b 100644 --- a/src/main/java/com/hbm/blocks/network/CraneInserter.java +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -82,10 +82,13 @@ public void onItemEnter(World world, int x, int y, int z, ForgeDirection dir, IC addToInventory(inv, access, toAdd, outputDirection.getOpposite().ordinal()); } + TileEntityCraneInserter inserter = null; + if(toAdd.stackSize > 0) { - addToInventory((TileEntityCraneInserter) world.getTileEntity(x, y, z), null, toAdd, outputDirection.getOpposite().ordinal()); + inserter = (TileEntityCraneInserter) world.getTileEntity(x, y, z); + addToInventory(inserter, null, toAdd, outputDirection.getOpposite().ordinal()); } - if(toAdd.stackSize > 0) { + if(toAdd.stackSize > 0 && inserter != null && !inserter.destroyer) { EntityItem drop = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, toAdd.copy()); world.spawnEntityInWorld(drop); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java index ad08c4a45d..aa5acf9503 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java @@ -17,7 +17,7 @@ public ContainerCraneInserter(InventoryPlayer invPlayer, TileEntityCraneInserter for(int i = 0; i < 3; i++) { for(int j = 0; j < 7; j++) { - this.addSlotToContainer(new Slot(inserter, j + i * 7, 26 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new Slot(inserter, j + i * 7, 8 + j * 18, 17 + i * 18)); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java index 28813d9aef..a4890ae00a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java @@ -4,11 +4,15 @@ import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneInserter; import net.minecraft.client.Minecraft; +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 GUICraneInserter extends GuiInfoContainer { @@ -23,11 +27,23 @@ public GUICraneInserter(InventoryPlayer invPlayer, TileEntityCraneInserter tedf) this.xSize = 176; this.ySize = 185; } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 34 < y && guiTop + 34 + 18 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("destroyer", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, inserter.xCoord, inserter.yCoord, inserter.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.inserter.hasCustomInventoryName() ? this.inserter.getInventoryName() : I18n.format(this.inserter.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 18, 5, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -36,5 +52,8 @@ protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(inserter.destroyer) + drawTexturedModalRect(guiLeft + 151, guiTop + 34, 176, 0, 18, 18); } } diff --git a/src/main/java/com/hbm/items/tool/ItemDiscord.java b/src/main/java/com/hbm/items/tool/ItemDiscord.java index 75f8893de8..b17818c25b 100644 --- a/src/main/java/com/hbm/items/tool/ItemDiscord.java +++ b/src/main/java/com/hbm/items/tool/ItemDiscord.java @@ -20,7 +20,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla MovingObjectPosition pos = Library.rayTrace(player, 100, 1); - if(pos.typeOfHit == MovingObjectType.BLOCK) { + if(pos != null && pos.typeOfHit == MovingObjectType.BLOCK) { if(!world.isRemote) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index af861b2802..0707248a90 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ 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 (5061)"; + public static final String VERSION = "1.0.27 BETA (5082)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 628b3946c2..9d858387a6 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -2,7 +2,6 @@ import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingItem; -import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.inventory.gui.GUICraneExtractor; import com.hbm.items.ModItems; @@ -26,7 +25,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiver, IControlReceiverFilter { +public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiverFilter { public boolean isWhitelist = false; public ModulePatternMatcher matcher; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java index b98985bc20..151bf3628a 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.network; import com.hbm.blocks.network.CraneInserter; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.inventory.gui.GUICraneInserter; import com.hbm.tileentity.IGUIProvider; @@ -8,18 +9,22 @@ 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; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider { +public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider, IControlReceiver { + public boolean destroyer = true; public static final int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; public TileEntityCraneInserter() { @@ -82,9 +87,23 @@ public void updateEntity() { } } } + + this.networkPackNT(15); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(destroyer); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + destroyer = buf.readBoolean(); + } + @Override public int[] getAccessibleSlotsFromSide(int side) { return access; @@ -110,4 +129,26 @@ public Container provideContainer(int ID, EntityPlayer player, World world, int public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneInserter(player.inventory, this); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.destroyer = nbt.getBoolean("destroyer"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("destroyer", this.destroyer); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("destroyer")) this.destroyer = !this.destroyer; + } } diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png index 114a1561a704c5c6990e1ab8c4571c469c4c5518..17e78f6bc557e3724c84afaffcdd26d81dc64ff9 100644 GIT binary patch literal 1815 zcmb_cc~H}55dD5JB!S^R6y*w)VyO`bSk7Qjj&KPADpk4UR6sy9g#aM|E67nmq#~Em zDsmGEmlDBP6{Oq)hzJ1`MF7hqLz*CuwHWHt&+^t423l==c38NKfY*5ti-q86tUjEdQ)#hZukbyF(9Rd3q~Gin#_%0a+RUF8$pK<-=T*Mn?OnJD(38LD&Rgk$l}G0azwAT z`@ak^;5d|YWgn$zQcOKXymbc$2P@r_)O7IMobyTNAC&{Yvt+Vh(M|B-PHR>YK&LVT z*P^9onFlxEUmD^N^J#^ZJahEYJy7?BbOqgFiF=It)TpB?7W z-^-xlV`rgEtG?Wa82d1=VoX7jZvCpuuq{mprR1PVEfnYixHID77w} z?w{sV@P~_?DuZL28ttY9>yp+Maw_rt_uT?9D)G&p9z{|O4b$B>kqeiG;I|{a=v7^7 zF>0YiQ79fO`5R0Rwn|Q$Q_uja2i`*$s?r|q?>a_%Jr|Nn=f^1qA&DrP@-T|Oc|YD z<+OH3T3Vck0*n&MVs~>G(tx)p3;ZTxpjHCN9Keo=&kiRn%v+-wrLa2nI5=oB4b)?bKeGTmOa?}&d*Pt4a3#qMAbej-b&F9k=|gWL*)$p$*I?$k zZZxmJ(oz9BpKQ9ZYz9-$%rFCv5!_uO`CWYfW6@iBSQS7q+ZHbrwcofcsE$*&kE9|_ zWnfHCOWy3NE$odxzA*{kEy#F!>NphqR6fK?QwM63`akiRxxf*t;E5m2b@^TP# zB+#ft)z12Ff70hrt;8%66v;FHqu`W#EE$g%k~X&*V==Bhj>2Mc33!kD5n(uChlwb3*px(!5>D-s0K!Y_t@toM-EYE7i2&u9YBVD8yjO vd|ciDFr7CbE@Hb#LDw7PAIAAlnHtAOszpi6sq;#bHi2xd94)I3cqjY@T$|zW literal 1236 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGv=x2KC^ zNX4ADcLVbtMF_NAELv^OnsZp%@snKyM_ha4wC9RUzDBxkvNe-m|9QUW$y$eo{Sw?= z3%6}In{o2ILCtsB2Yc7fpHLbr`~S~P1D;T&3sd8z&lP?6d}WhP=sAJin^Jr4vpy)> zoog{`{)3{OA)!~lR;?{kyU?n8o@ymHPh2mLfHwvz( zH)EQ4Ij67J;cqc7s@GApA%_W60<4kmue8~mt?OP#g?^1-DYTH$Y2_%loBtXV&bI&J z)?Z(h8(&=$blJG!_S>-MpLag>Wzf&~C-xw&c7eSf(O&b*u( zoomlCv_1Z~U!zgRsa9l?C5oP_Ql}&W48sTp9Y17UVpvy)mzgu>Y&K_ zUYx^{b)1Y?{$8AM92m>H<|iu$Sc4+#uZ(o#twJ(l`LE2a%3XpSRVm6B%J#6rvWe|p zjtuP$mbPbp?hu{v_6AoD(5W$V@{UK7m>|I#GmeKPlpPOy@V0^*ng@3m+5b(K-oH9a zqAf9Y+Rk8#Yiby-=kFB%@EwslV5x*W`ob}Lx3X)N50Vy1 PgADL=^>bP0l+XkKX|T4?