From f31369ab95bf969080810dc2f103e539fb0536ee Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 30 Jul 2024 02:21:01 +0300 Subject: [PATCH] Thread fix --- .../java/alterwain/offlineskin/SendSet.java | 8 +++++++- .../offlineskin/packet/Packet246SkinSet.java | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/alterwain/offlineskin/SendSet.java b/src/main/java/alterwain/offlineskin/SendSet.java index 67ed756..8fd6991 100644 --- a/src/main/java/alterwain/offlineskin/SendSet.java +++ b/src/main/java/alterwain/offlineskin/SendSet.java @@ -8,14 +8,20 @@ public class SendSet extends Thread { private final String username; private final boolean isCape; + private boolean isRunning = true; + public SendSet(String username, boolean isCape) { this.username = username; this.isCape = isCape; } + public void setRunning(boolean isRunning) { + this.isRunning = isRunning; + } + @Override public void run() { - while(true) { + while(isRunning) { try { Thread.sleep(4000); if (isCape) { diff --git a/src/main/java/alterwain/offlineskin/packet/Packet246SkinSet.java b/src/main/java/alterwain/offlineskin/packet/Packet246SkinSet.java index e02a1f0..ddd8a54 100644 --- a/src/main/java/alterwain/offlineskin/packet/Packet246SkinSet.java +++ b/src/main/java/alterwain/offlineskin/packet/Packet246SkinSet.java @@ -14,9 +14,13 @@ import java.awt.image.BufferedImage; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; public class Packet246SkinSet extends Packet { + private static final Map skinThread = new HashMap<>(); + private static final Map capeThread = new HashMap<>(); private String username; private byte[] skin; private byte[] cape; @@ -67,8 +71,18 @@ public class Packet246SkinSet extends Packet { BufferedImage skin1 = OfflineSkinMod.bytesToImage(this.skin); BufferedImage cape1 = OfflineSkinMod.bytesToImage(this.cape); OfflineSkinMod.skins.put(this.username, new SkinConfig(skin1, cape1, this.modelType)); - new SendSet(this.username, false).start(); - new SendSet(this.username, true).start(); + if( Packet246SkinSet.skinThread.containsKey(this.username) ) { + Packet246SkinSet.skinThread.get(this.username).setRunning(false); + } + SendSet ss = new SendSet(this.username, false); + Packet246SkinSet.skinThread.put(this.username, ss); + ss.start(); + if( Packet246SkinSet.capeThread.containsKey(this.username) ) { + Packet246SkinSet.capeThread.get(this.username).setRunning(false); + } + SendSet cs = new SendSet(this.username, true); + Packet246SkinSet.capeThread.put(this.username, cs); + cs.start(); } @Override