diff --git a/Emulator/pom.xml b/Emulator/pom.xml index 17628061..07ebff7c 100644 --- a/Emulator/pom.xml +++ b/Emulator/pom.xml @@ -6,7 +6,7 @@ com.eu.habbo Habbo - 4.2.26 + 4.2.28 UTF-8 diff --git a/Emulator/src/main/java/com/eu/habbo/messages/incoming/guilds/GuildAcceptMembershipEvent.java b/Emulator/src/main/java/com/eu/habbo/messages/incoming/guilds/GuildAcceptMembershipEvent.java index b4898da6..88f05e7e 100644 --- a/Emulator/src/main/java/com/eu/habbo/messages/incoming/guilds/GuildAcceptMembershipEvent.java +++ b/Emulator/src/main/java/com/eu/habbo/messages/incoming/guilds/GuildAcceptMembershipEvent.java @@ -25,45 +25,55 @@ public class GuildAcceptMembershipEvent extends MessageHandler { int userId = this.packet.readInt(); Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(guildId); + + if (guild == null) { + return; + } + + GuildMember actorMember = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, this.client.getHabbo()); + boolean canAccept = guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() + || this.client.getHabbo().hasPermission(Permission.ACC_GUILD_ADMIN) + || (actorMember != null && (actorMember.getRank().equals(GuildRank.ADMIN) || actorMember.getRank().equals(GuildRank.OWNER))); + + if (!canAccept) { + return; + } + + GuildMember targetMember = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId); + + if (targetMember == null) { + this.client.sendResponse(new GuildAcceptMemberErrorComposer(guild.getId(), GuildAcceptMemberErrorComposer.NO_LONGER_MEMBER)); + return; + } + + if (targetMember.getRank().type != GuildRank.REQUESTED.type) { + this.client.sendResponse(new GuildAcceptMemberErrorComposer(guild.getId(), GuildAcceptMemberErrorComposer.ALREADY_ACCEPTED)); + return; + } + Habbo habbo = Emulator.getGameEnvironment().getHabboManager().getHabbo(userId); - if (guild != null) { - GuildMember groupMember = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, this.client.getHabbo()); - if (guild.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() - || this.client.getHabbo().hasPermission(Permission.ACC_GUILD_ADMIN) - || (groupMember != null && (groupMember.getRank().equals(GuildRank.ADMIN) || groupMember.getRank().equals(GuildRank.OWNER)))) { - if (habbo != null) { - if (habbo.getHabboStats().hasGuild(guild.getId())) { - this.client.sendResponse(new GuildAcceptMemberErrorComposer(guild.getId(), GuildAcceptMemberErrorComposer.ALREADY_ACCEPTED)); - return; - } else { - //Check the user has requested - GuildMember member = Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, habbo); - if (member == null || member.getRank().type != GuildRank.REQUESTED.type) { - this.client.sendResponse(new GuildAcceptMemberErrorComposer(guild.getId(), GuildAcceptMemberErrorComposer.NO_LONGER_MEMBER)); - return; - } else { - GuildAcceptedMembershipEvent event = new GuildAcceptedMembershipEvent(guild, userId, habbo); - Emulator.getPluginManager().fireEvent(event); - if (!event.isCancelled()) { - habbo.getHabboStats().addGuild(guild.getId()); - Emulator.getGameEnvironment().getGuildManager().joinGuild(guild, this.client, habbo.getHabboInfo().getId(), true); - guild.decreaseRequestCount(); - guild.increaseMemberCount(); - this.client.sendResponse(new GuildRefreshMembersListComposer(guild)); - Room room = habbo.getHabboInfo().getCurrentRoom(); - if (room != null) { - if (room.getGuildId() == guildId) { - habbo.getClient().sendResponse(new GuildInfoComposer(guild, habbo.getClient(), false, Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId))); - room.refreshRightsForHabbo(habbo); - } - } - } - } - } - } else { - Emulator.getGameEnvironment().getGuildManager().joinGuild(guild, this.client, userId, true); - } + GuildAcceptedMembershipEvent event = new GuildAcceptedMembershipEvent(guild, userId, habbo); + Emulator.getPluginManager().fireEvent(event); + + if (event.isCancelled()) { + return; + } + + if (habbo != null) { + habbo.getHabboStats().addGuild(guild.getId()); + } + + Emulator.getGameEnvironment().getGuildManager().joinGuild(guild, this.client, userId, true); + guild.decreaseRequestCount(); + guild.increaseMemberCount(); + this.client.sendResponse(new GuildRefreshMembersListComposer(guild)); + + if (habbo != null) { + Room room = habbo.getHabboInfo().getCurrentRoom(); + if (room != null && room.getGuildId() == guildId) { + habbo.getClient().sendResponse(new GuildInfoComposer(guild, habbo.getClient(), false, Emulator.getGameEnvironment().getGuildManager().getGuildMember(guildId, userId))); + room.refreshRightsForHabbo(habbo); } } }