diff options
author | querns <33518699+querns@users.noreply.github.com> | 2024-09-08 13:02:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-08 18:02:12 +0000 |
commit | 3b2431ea07cff32fa174f496a1e16246a89b429e (patch) | |
tree | 3987a80f2fd5e396ae70821971b3d673e003dfe0 /src/main/java/gregtech/api/net | |
parent | 8ca97eab0abfc33a37a15fe4a66bc112c743480a (diff) | |
download | GT5-Unofficial-3b2431ea07cff32fa174f496a1e16246a89b429e.tar.gz GT5-Unofficial-3b2431ea07cff32fa174f496a1e16246a89b429e.tar.bz2 GT5-Unofficial-3b2431ea07cff32fa174f496a1e16246a89b429e.zip |
Adds Infinite Spray Can, left click event for item behaviors (#3085)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Co-authored-by: boubou19 <miisterunknown@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/net')
-rw-r--r-- | src/main/java/gregtech/api/net/GTPacketInfiniteSpraycan.java | 76 | ||||
-rw-r--r-- | src/main/java/gregtech/api/net/GTPacketTypes.java | 1 |
2 files changed, 77 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/net/GTPacketInfiniteSpraycan.java b/src/main/java/gregtech/api/net/GTPacketInfiniteSpraycan.java new file mode 100644 index 0000000000..66ad89590f --- /dev/null +++ b/src/main/java/gregtech/api/net/GTPacketInfiniteSpraycan.java @@ -0,0 +1,76 @@ +package gregtech.api.net; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.network.INetHandler; +import net.minecraft.network.NetHandlerPlayServer; +import net.minecraft.world.IBlockAccess; + +import com.google.common.io.ByteArrayDataInput; + +import gregtech.api.enums.SoundResource; +import gregtech.api.items.MetaBaseItem; +import gregtech.api.util.GTUtility; +import gregtech.common.items.behaviors.BehaviourSprayColorInfinite; +import io.netty.buffer.ByteBuf; + +public class GTPacketInfiniteSpraycan extends GTPacketNew { + + private boolean wasSneaking; + private EntityPlayerMP player; + + public GTPacketInfiniteSpraycan() { + super(true); + } + + public GTPacketInfiniteSpraycan(boolean wasSneaking) { + super(false); + this.wasSneaking = wasSneaking; + } + + @Override + public byte getPacketID() { + return GTPacketTypes.INFINITE_SPRAYCAN.id; + } + + @Override + public void encode(final ByteBuf aOut) { + aOut.writeBoolean(wasSneaking); + } + + @Override + public GTPacketNew decode(final ByteArrayDataInput aData) { + return new GTPacketInfiniteSpraycan(aData.readBoolean()); + } + + @Override + public void setINetHandler(final INetHandler aHandler) { + player = ((NetHandlerPlayServer) aHandler).playerEntity; + } + + @Override + public void process(final IBlockAccess aWorld) { + ItemStack currentItemStack = player.inventory.getCurrentItem(); + if (currentItemStack != null && currentItemStack.getItem() instanceof MetaBaseItem item) { + item.forEachBehavior(currentItemStack, behavior -> { + if (behavior instanceof BehaviourSprayColorInfinite spraycanBehavior) { + spraycanBehavior.setNewColor(currentItemStack, wasSneaking); + player.sendSlotContents(player.inventoryContainer, player.inventory.currentItem, currentItemStack); + + GTUtility.sendSoundToPlayers( + player.worldObj, + SoundResource.GT_SPRAYCAN_SHAKE, + 1.0F, + 1, + (int) player.posX, + (int) player.posY, + (int) player.posZ); + + return true; + } + + return false; + }); + } + } +} diff --git a/src/main/java/gregtech/api/net/GTPacketTypes.java b/src/main/java/gregtech/api/net/GTPacketTypes.java index d635706e68..17081ba92e 100644 --- a/src/main/java/gregtech/api/net/GTPacketTypes.java +++ b/src/main/java/gregtech/api/net/GTPacketTypes.java @@ -24,6 +24,7 @@ public enum GTPacketTypes { SEND_OREGEN_PATTERN(19, new GTPacketSendOregenPattern()), TOOL_SWITCH_MODE(20, new GTPacketToolSwitchMode()), MUSIC_SYSTEM_DATA(21, new GTPacketMusicSystemData()), + INFINITE_SPRAYCAN(22, new GTPacketInfiniteSpraycan()), // merge conflict prevention comment, keep a trailing comma above ; |