From 8254e7de6176d496e35384ce83bc1ebad3ff70a7 Mon Sep 17 00:00:00 2001 From: Beny Date: Wed, 15 May 2019 21:36:11 +0100 Subject: [PATCH] Fix NullPointerException when rank doesn't exist. Renamed some methods to be more descriptive. --- .../com/eu/habbo/habbohotel/commands/GiveRankCommand.java | 2 +- .../habbo/habbohotel/permissions/PermissionsManager.java | 8 ++++++-- .../java/com/eu/habbo/habbohotel/users/HabboInfo.java | 4 +++- .../habbo/habbohotel/users/inventory/BadgesComponent.java | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java b/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java index 57da48a9..11e3a5c3 100644 --- a/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java +++ b/src/main/java/com/eu/habbo/habbohotel/commands/GiveRankCommand.java @@ -41,7 +41,7 @@ public class GiveRankCommand extends Command } else { - rank = Emulator.getGameEnvironment().getPermissionsManager().getRank(params[2]); + rank = Emulator.getGameEnvironment().getPermissionsManager().getRankByName(params[2]); } if (rank != null) diff --git a/src/main/java/com/eu/habbo/habbohotel/permissions/PermissionsManager.java b/src/main/java/com/eu/habbo/habbohotel/permissions/PermissionsManager.java index 96ed14d0..828dcad8 100644 --- a/src/main/java/com/eu/habbo/habbohotel/permissions/PermissionsManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/permissions/PermissionsManager.java @@ -108,7 +108,7 @@ public class PermissionsManager } - public Rank getRank(String rankName) + public Rank getRankByName(String rankName) { for (Rank rank : this.ranks.valueCollection()) { @@ -161,8 +161,12 @@ public class PermissionsManager return this.badges.keySet(); } - public List getRanks(String code) + public List getRanksByBadgeCode(String code) { return this.badges.get(code); } + + public List getAllRanks() { + return new ArrayList<>(this.ranks.valueCollection()); + } } diff --git a/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java b/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java index 3e1ffba3..15b6f22b 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/HabboInfo.java @@ -80,6 +80,8 @@ public class HabboInfo implements Runnable if (this.rank == null) { Emulator.getLogging().logErrorLine("No existing rank found with id " + set.getInt("rank") + ". Make sure an entry in the permissions table exists."); + Emulator.getLogging().logUserLine(this.username + " has an invalid rank with id " + set.getInt("rank") + ". Make sure an entry in the permissions table exists."); + this.rank = Emulator.getGameEnvironment().getPermissionsManager().getRank(1); } this.accountCreated = set.getInt("account_created"); @@ -514,7 +516,7 @@ public class HabboInfo implements Runnable statement.setInt(6, Emulator.getIntUnixTimestamp()); statement.setInt(8, this.homeRoom); statement.setString(9, this.ipLogin); - statement.setInt(10, this.rank.getId()); + statement.setInt(10, this.rank != null ? this.rank.getId() : 1); statement.setString(11, this.machineID); statement.setString(12, this.username); statement.setInt(13, this.id); diff --git a/src/main/java/com/eu/habbo/habbohotel/users/inventory/BadgesComponent.java b/src/main/java/com/eu/habbo/habbohotel/users/inventory/BadgesComponent.java index 16e56a7d..25e58d0e 100644 --- a/src/main/java/com/eu/habbo/habbohotel/users/inventory/BadgesComponent.java +++ b/src/main/java/com/eu/habbo/habbohotel/users/inventory/BadgesComponent.java @@ -41,7 +41,7 @@ public class BadgesComponent { boolean delete = true; - for (Rank rank : Emulator.getGameEnvironment().getPermissionsManager().getRanks(badge.getCode())) + for (Rank rank : Emulator.getGameEnvironment().getPermissionsManager().getRanksByBadgeCode(badge.getCode())) { if (rank.getId() == habbo.getHabboInfo().getRank().getId()) {