aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/net
diff options
context:
space:
mode:
authorquerns <33518699+querns@users.noreply.github.com>2024-09-08 13:02:12 -0500
committerGitHub <noreply@github.com>2024-09-08 18:02:12 +0000
commit3b2431ea07cff32fa174f496a1e16246a89b429e (patch)
tree3987a80f2fd5e396ae70821971b3d673e003dfe0 /src/main/java/gregtech/api/net
parent8ca97eab0abfc33a37a15fe4a66bc112c743480a (diff)
downloadGT5-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.java76
-rw-r--r--src/main/java/gregtech/api/net/GTPacketTypes.java1
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
;