From 7e22e215e59ad88c91b6a4438f3b37331cfbe687 Mon Sep 17 00:00:00 2001 From: duckietm Date: Wed, 8 Apr 2026 08:21:20 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=86=99=20Fix=20NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed in-memory disconnection race caused by a sloppy antipattern pervasive in Habbo.java --- .../com/eu/habbo/habbohotel/users/Habbo.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Emulator/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java b/Emulator/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java index 399fc1c0..ef097d48 100644 --- a/Emulator/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java +++ b/Emulator/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java @@ -273,7 +273,7 @@ public class Habbo implements Runnable { return; this.getHabboInfo().addPixels(event.points); - if (this.client != null) this.client.sendResponse(new UserCurrencyComposer(this.client.getHabbo())); + if (this.client != null) this.client.sendResponse(new UserCurrencyComposer(this)); } @@ -292,7 +292,7 @@ public class Habbo implements Runnable { this.getHabboInfo().addCurrencyAmount(event.type, event.points); if (this.client != null) - this.client.sendResponse(new UserPointsComposer(this.client.getHabbo().getHabboInfo().getCurrencyAmount(type), event.points, event.type)); + this.client.sendResponse(new UserPointsComposer(this.getHabboInfo().getCurrencyAmount(type), event.points, event.type)); } @@ -303,7 +303,7 @@ public class Habbo implements Runnable { public void whisper(String message, RoomChatMessageBubbles bubble) { if (this.getRoomUnit().isInRoom()) { - this.client.sendResponse(new RoomUserWhisperComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble))); + this.client.sendResponse(new RoomUserWhisperComposer(new RoomChatMessage(message, this.getRoomUnit(), bubble))); } } @@ -315,7 +315,7 @@ public class Habbo implements Runnable { public void talk(String message, RoomChatMessageBubbles bubble) { if (this.getRoomUnit().isInRoom()) { - this.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserTalkComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble)).compose()); + this.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserTalkComposer(new RoomChatMessage(message, this.getRoomUnit(), bubble)).compose()); } } @@ -327,7 +327,7 @@ public class Habbo implements Runnable { public void shout(String message, RoomChatMessageBubbles bubble) { if (this.getRoomUnit().isInRoom()) { - this.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserShoutComposer(new RoomChatMessage(message, this.client.getHabbo().getRoomUnit(), bubble)).compose()); + this.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserShoutComposer(new RoomChatMessage(message, this.getRoomUnit(), bubble)).compose()); } } @@ -446,7 +446,7 @@ public class Habbo implements Runnable { this.client.sendResponse(new FloodCounterComposer(remaining)); this.client.sendResponse(new MutedWhisperComposer(remaining)); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.getHabboInfo().getCurrentRoom(); if (room != null && !isFlood) { room.sendComposer(new RoomUserIgnoredComposer(this, RoomUserIgnoredComposer.MUTED).compose()); } @@ -456,7 +456,7 @@ public class Habbo implements Runnable { public void unMute() { this.habboStats.unMute(); this.client.sendResponse(new FloodCounterComposer(3)); - Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); + Room room = this.getHabboInfo().getCurrentRoom(); if (room != null) { room.sendComposer(new RoomUserIgnoredComposer(this, RoomUserIgnoredComposer.UNIGNORED).compose()); } @@ -493,18 +493,18 @@ public class Habbo implements Runnable { public void respect(Habbo target) { - if (target != null && target != this.client.getHabbo()) { + if (target != null && target != this) { target.getHabboStats().respectPointsReceived++; - this.client.getHabbo().getHabboStats().respectPointsGiven++; - this.client.getHabbo().getHabboStats().respectPointsToGive--; - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RoomUserRespectComposer(target).compose()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new RoomUserActionComposer(this.client.getHabbo().getRoomUnit(), RoomUserAction.THUMB_UP).compose()); + this.getHabboStats().respectPointsGiven++; + this.getHabboStats().respectPointsToGive--; + this.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserRespectComposer(target).compose()); + this.getHabboInfo().getCurrentRoom().sendComposer(new RoomUserActionComposer(this.getRoomUnit(), RoomUserAction.THUMB_UP).compose()); - AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("RespectGiven")); + AchievementManager.progressAchievement(this, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RespectGiven")); AchievementManager.progressAchievement(target, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RespectEarned")); - this.client.getHabbo().getHabboInfo().getCurrentRoom().unIdle(this.client.getHabbo()); - this.client.getHabbo().getHabboInfo().getCurrentRoom().dance(this.client.getHabbo().getRoomUnit(), DanceType.NONE); + this.getHabboInfo().getCurrentRoom().unIdle(this); + this.getHabboInfo().getCurrentRoom().dance(this.getRoomUnit(), DanceType.NONE); } }