Feature/remove some code duplication2

This commit is contained in:
Dominic Bridge 2023-01-10 14:44:58 +00:00 committed by John
parent b7794d239a
commit 1105b96a8f
127 changed files with 844 additions and 935 deletions

View File

@ -36,6 +36,7 @@
<configuration> <configuration>
<source>18</source> <source>18</source>
<target>18</target> <target>18</target>
<compilerArgs>--enable-preview</compilerArgs>
</configuration> </configuration>
</plugin> </plugin>

View File

@ -217,13 +217,14 @@ public final class Emulator {
try { try {
String filepath = new File(Emulator.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getAbsolutePath(); String filepath = new File(Emulator.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getAbsolutePath();
MessageDigest md = MessageDigest.getInstance("MD5");// MD5 MessageDigest md = MessageDigest.getInstance("MD5");// MD5
FileInputStream fis = new FileInputStream(filepath); try(FileInputStream fis = new FileInputStream(filepath)) {
byte[] dataBytes = new byte[1024]; byte[] dataBytes = new byte[1024];
int nread; int nread;
while ((nread = fis.read(dataBytes)) != -1) while ((nread = fis.read(dataBytes)) != -1)
md.update(dataBytes, 0, nread); md.update(dataBytes, 0, nread);
byte[] mdbytes = md.digest(); byte[] mdbytes = md.digest();
for (byte mdbyte : mdbytes) sb.append(Integer.toString((mdbyte & 0xff) + 0x100, 16).substring(1)); for (byte mdbyte : mdbytes) sb.append(Integer.toString((mdbyte & 0xff) + 0x100, 16).substring(1));
}
} catch (Exception e) { } catch (Exception e) {
build = "4.0 Developer Preview Branch"; build = "4.0 Developer Preview Branch";
return; return;

View File

@ -59,6 +59,6 @@ public abstract class ConsoleCommand {
return false; return false;
} }
public abstract void handle(String[] args) throws Exception; public abstract void handle(String[] args);
} }

View File

@ -17,7 +17,7 @@ public class ConsoleInfoCommand extends ConsoleCommand {
public void handle(String[] args) { public void handle(String[] args) {
int seconds = Emulator.getIntUnixTimestamp() - Emulator.getTimeStarted(); int seconds = Emulator.getIntUnixTimestamp() - Emulator.getTimeStarted();
int day = (int) TimeUnit.SECONDS.toDays(seconds); int day = (int) TimeUnit.SECONDS.toDays(seconds);
long hours = TimeUnit.SECONDS.toHours(seconds) - (day * 24); long hours = TimeUnit.SECONDS.toHours(seconds) - (day * 24L);
long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60); long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60);
long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60); long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60);

View File

@ -8,7 +8,7 @@ public class ConsoleShutdownCommand extends ConsoleCommand {
} }
@Override @Override
public void handle(String[] args) throws Exception { public void handle(String[] args) {
new ShutdownCommand().handle(null, args); new ShutdownCommand().handle(null, args);
} }
} }

View File

@ -88,11 +88,11 @@ public class HabboDiffieHellman {
} }
if (this.DHPrime.compareTo(BigInteger.valueOf(2)) < 1) { if (this.DHPrime.compareTo(BigInteger.valueOf(2)) < 1) {
throw new HabboCryptoException("Prime cannot be <= 2!\nPrime: " + this.DHPrime.toString()); throw new HabboCryptoException("Prime cannot be <= 2!\nPrime: " + this.DHPrime);
} }
if (this.DHGenerator.compareTo(this.DHPrime) > -1) { if (this.DHGenerator.compareTo(this.DHPrime) > -1) {
throw new HabboCryptoException("Generator cannot be >= Prime!\nPrime: " + this.DHPrime.toString() + "\nGenerator: " + this.DHGenerator.toString()); throw new HabboCryptoException("Generator cannot be >= Prime!\nPrime: " + this.DHPrime + "\nGenerator: " + this.DHGenerator);
} }
generateDHKeys(); generateDHKeys();

View File

@ -20,6 +20,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
@Slf4j @Slf4j
public class Bot implements Runnable { public class Bot implements Runnable {
@ -42,7 +43,7 @@ public class Bot implements Runnable {
private int chatTimeOut; private int chatTimeOut;
private int chatTimestamp; private int chatTimestamp;
private short lastChatIndex; private short lastChatIndex;
private int bubble; private final int bubble;
private final String type; private final String type;
@ -108,7 +109,7 @@ public class Bot implements Runnable {
this.chatRandom = false; this.chatRandom = false;
this.chatDelay = 10; this.chatDelay = 10;
this.chatTimeOut = Emulator.getIntUnixTimestamp() + this.chatDelay; this.chatTimeOut = Emulator.getIntUnixTimestamp() + this.chatDelay;
this.chatLines = new ArrayList<>(Arrays.asList("Default Message :D")); this.chatLines = new ArrayList<>(List.of("Default Message :D"));
this.type = bot.getType(); this.type = bot.getType();
this.effect = bot.getEffect(); this.effect = bot.getEffect();
this.bubble = bot.getBubbleId(); this.bubble = bot.getBubbleId();

View File

@ -26,14 +26,14 @@ public class CatalogLimitedConfiguration implements Runnable {
public CatalogLimitedConfiguration(int itemId, LinkedList<Integer> availableNumbers, int totalSet) { public CatalogLimitedConfiguration(int itemId, LinkedList<Integer> availableNumbers, int totalSet) {
this.itemId = itemId; this.itemId = itemId;
this.totalSet = totalSet; this.totalSet = totalSet;
LinkedList<Integer> numbers = new LinkedList(availableNumbers); LinkedList<Integer> numbers = new LinkedList<>(availableNumbers);
if (Emulator.getConfig().getBoolean("catalog.ltd.random", true)) { if (Emulator.getConfig().getBoolean("catalog.ltd.random", true)) {
Collections.shuffle(numbers); Collections.shuffle(numbers);
} else { } else {
Collections.reverse(numbers); Collections.reverse(numbers);
} }
limitedNumbers = new LinkedBlockingQueue(numbers); limitedNumbers = new LinkedBlockingQueue<>(numbers);
} }
public int getNumber() { public int getNumber() {
@ -70,7 +70,7 @@ public class CatalogLimitedConfiguration implements Runnable {
public void generateNumbers(int starting, int amount) { public void generateNumbers(int starting, int amount) {
synchronized (lock) { synchronized (lock) {
LinkedList<Integer> numbers = new LinkedList(); LinkedList<Integer> numbers = new LinkedList<>();
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO catalog_items_limited (catalog_item_id, number) VALUES (?, ?)")) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO catalog_items_limited (catalog_item_id, number) VALUES (?, ?)")) {
statement.setInt(1, this.itemId); statement.setInt(1, this.itemId);
@ -93,7 +93,7 @@ public class CatalogLimitedConfiguration implements Runnable {
Collections.reverse(numbers); Collections.reverse(numbers);
} }
limitedNumbers = new LinkedBlockingQueue(numbers); limitedNumbers = new LinkedBlockingQueue<>(numbers);
} }
} }

View File

@ -125,6 +125,37 @@ public abstract class CatalogPage implements Comparable<CatalogPage>, ISerialize
} }
} }
protected void appendImagesAndText(ServerMessage message) {
message.appendInt(3);
message.appendString(getHeaderImage());
message.appendString(getTeaserImage());
message.appendString(getSpecialImage());
message.appendInt(3);
message.appendString(getTextOne());
message.appendString(getTextDetails());
message.appendString(getTextTeaser());
}
protected void appendGuildImagesAndText(ServerMessage message) {
message.appendInt(2);
message.appendString(getHeaderImage());
message.appendString(getTeaserImage());
message.appendInt(3);
message.appendString(getTextOne());
message.appendString(getTextDetails());
message.appendString(getTextTeaser());
}
protected void appendPetImagesAndText(ServerMessage message){
message.appendInt(2);
message.appendString(getHeaderImage());
message.appendString(getTeaserImage());
message.appendInt(4);
message.appendString(getTextOne());
message.appendString(getTextTwo());
message.appendString(getTextDetails());
message.appendString(getTextTeaser());
}
@Override @Override
public int compareTo(CatalogPage page) { public int compareTo(CatalogPage page) {
return this.getOrderNum() - page.getOrderNum(); return this.getOrderNum() - page.getOrderNum();

View File

@ -15,13 +15,6 @@ public class BadgeDisplayLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("badge_display"); message.appendString("badge_display");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,8 @@ public class BuildersClubAddonsLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("builders_club_addons"); message.appendString("builders_club_addons");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,6 @@ public class BuildersClubLoyaltyLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("builders_club_loyalty"); message.appendString("builders_club_loyalty");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class ColorGroupingLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("default_3x3_color_grouping"); message.appendString("default_3x3_color_grouping");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,6 @@ public class Default_3x3Layout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("default_3x3"); message.appendString("default_3x3");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,12 +14,6 @@ public class GuildForumLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("guild_forum"); message.appendString("guild_forum");
message.appendInt(2); appendGuildImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,12 +14,6 @@ public class GuildFrontpageLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("guild_frontpage"); message.appendString("guild_frontpage");
message.appendInt(2); appendGuildImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,12 +14,6 @@ public class GuildFurnitureLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("guild_custom_furni"); message.appendString("guild_custom_furni");
message.appendInt(2); appendGuildImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,6 @@ public class InfoMonkeyLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("monkey"); message.appendString("monkey");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,6 @@ public class InfoNikoLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("monkey"); message.appendString("monkey");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class LoyaltyVipBuyLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("loyalty_vip_buy"); message.appendString("loyalty_vip_buy");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class PetCustomizationLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("petcustomization"); message.appendString("petcustomization");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class Pets2Layout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("pets2"); message.appendString("pets2");
message.appendInt(2); appendPetImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(4);
message.appendString(super.getTextOne());
message.appendString(super.getTextTwo());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class Pets3Layout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("pets3"); message.appendString("pets3");
message.appendInt(2); appendPetImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(4);
message.appendString(super.getTextOne());
message.appendString(super.getTextTwo());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class PetsLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("pets"); message.appendString("pets");
message.appendInt(2); appendPetImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(4);
message.appendString(super.getTextOne());
message.appendString(super.getTextTwo());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class ProductPage1Layout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("productpage1"); message.appendString("productpage1");
message.appendInt(2); appendPetImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendInt(4);
message.appendString(super.getTextOne());
message.appendString(super.getTextTwo());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,7 @@ public class RecentPurchasesLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("default_3x3"); message.appendString("default_3x3");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,7 @@ public class RecyclerInfoLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("recycler_info"); message.appendString("recycler_info");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class RecyclerPrizesLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("recycler_prizes"); message.appendString("recycler_prizes");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,6 @@ public class SpacesLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("spaces_new"); message.appendString("spaces_new");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -15,13 +15,6 @@ public class TrophiesLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("trophies"); message.appendString("trophies");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -14,13 +14,6 @@ public class VipBuyLayout extends CatalogPage {
@Override @Override
public void serialize(ServerMessage message) { public void serialize(ServerMessage message) {
message.appendString("vip_buy"); message.appendString("vip_buy");
message.appendInt(3); appendImagesAndText(message);
message.appendString(super.getHeaderImage());
message.appendString(super.getTeaserImage());
message.appendString(super.getSpecialImage());
message.appendInt(3);
message.appendString(super.getTextOne());
message.appendString(super.getTextDetails());
message.appendString(super.getTextTeaser());
} }
} }

View File

@ -13,9 +13,40 @@ public class AboutCommand extends Command {
public AboutCommand() { public AboutCommand() {
super(null, new String[]{"about", "info", "online", "server"}); super(null, new String[]{"about", "info", "online", "server"});
} }
public static final String credits = "Arcturus Morningstar is an opensource project based on Arcturus By TheGeneral \n" + public static final String credits = """
"The Following people have all contributed to this emulator:\n" + Arcturus Morningstar is an opensource project based on Arcturus By TheGeneral\s
" TheGeneral\n Beny\n Alejandro\n Capheus\n Skeletor\n Harmonic\n Mike\n Remco\n zGrav \n Quadral \n Harmony\n Swirny\n ArpyAge\n Mikkel\n Rodolfo\n Rasmus\n Kitt Mustang\n Snaiker\n nttzx\n necmi\n Dome\n Jose Flores\n Cam\n Oliver\n Narzo\n Tenshie\n MartenM\n Ridge\n SenpaiDipper\n Snaiker\n Thijmen"; The Following people have all contributed to this emulator:
TheGeneral
Beny
Alejandro
Capheus
Skeletor
Harmonic
Mike
Remco
zGrav\s
Quadral\s
Harmony
Swirny
ArpyAge
Mikkel
Rodolfo
Rasmus
Kitt Mustang
Snaiker
nttzx
necmi
Dome
Jose Flores
Cam
Oliver
Narzo
Tenshie
MartenM
Ridge
SenpaiDipper
Snaiker
Thijmen""";
@Override @Override
public boolean handle(GameClient gameClient, String[] params) { public boolean handle(GameClient gameClient, String[] params) {
@ -23,7 +54,7 @@ public class AboutCommand extends Command {
int seconds = Emulator.getIntUnixTimestamp() - Emulator.getTimeStarted(); int seconds = Emulator.getIntUnixTimestamp() - Emulator.getTimeStarted();
int day = (int) TimeUnit.SECONDS.toDays(seconds); int day = (int) TimeUnit.SECONDS.toDays(seconds);
long hours = TimeUnit.SECONDS.toHours(seconds) - (day * 24); long hours = TimeUnit.SECONDS.toHours(seconds) - (day * 24L);
long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60); long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60);
long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60); long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60);

View File

@ -2,6 +2,17 @@ package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.core.CommandLog; import com.eu.habbo.core.CommandLog;
import com.eu.habbo.habbohotel.commands.badge.BadgeCommand;
import com.eu.habbo.habbohotel.commands.badge.MassBadgeCommand;
import com.eu.habbo.habbohotel.commands.badge.RoomBadgeCommand;
import com.eu.habbo.habbohotel.commands.bans.BanCommand;
import com.eu.habbo.habbohotel.commands.bans.MachineBanCommand;
import com.eu.habbo.habbohotel.commands.bans.SuperbanCommand;
import com.eu.habbo.habbohotel.commands.gift.GiftCommand;
import com.eu.habbo.habbohotel.commands.gift.MassGiftCommand;
import com.eu.habbo.habbohotel.commands.points.MassPointsCommand;
import com.eu.habbo.habbohotel.commands.points.PointsCommand;
import com.eu.habbo.habbohotel.commands.points.RoomPointsCommand;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.permissions.Permission;
import com.eu.habbo.habbohotel.permissions.PermissionSetting; import com.eu.habbo.habbohotel.permissions.PermissionSetting;

View File

@ -17,7 +17,6 @@ public class FreezeCommand extends Command {
if (habbo == null) { if (habbo == null) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
} else { } else {
if (habbo.getRoomUnit().canWalk()) { if (habbo.getRoomUnit().canWalk()) {
habbo.getRoomUnit().setCanWalk(false); habbo.getRoomUnit().setCanWalk(false);
@ -28,8 +27,8 @@ public class FreezeCommand extends Command {
habbo.whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.unfrozen"), RoomChatMessageBubbles.ALERT); habbo.whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.unfrozen"), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.user_unfrozen").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.user_unfrozen").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
} }
return true;
} }
return true;
} else { } else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", ""), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", ""), RoomChatMessageBubbles.ALERT);
return true; return true;

View File

@ -1,86 +0,0 @@
package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import gnu.trove.map.hash.THashMap;
import java.util.Map;
public class MassGiftCommand extends Command {
public MassGiftCommand() {
super("cmd_massgift", Emulator.getTexts().getValue("commands.keys.cmd_massgift").split(";"));
}
@Override
public boolean handle(final GameClient gameClient, String[] params) {
if (params.length >= 2) {
int itemId;
try {
itemId = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return true;
}
if (itemId <= 0) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return true;
}
final Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(itemId);
if (baseItem == null) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
return true;
}
StringBuilder message = new StringBuilder();
if (params.length > 2) {
for (int i = 2; i < params.length; i++) {
message.append(params[i]).append(" ");
}
}
final String finalMessage = message.toString();
THashMap<String, String> keys = new THashMap<>();
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}notifications/gift.gif");
keys.put("message", Emulator.getTexts().getValue("generic.gift.received.anonymous"));
ServerMessage giftNotificiationMessage = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
Emulator.getThreading().run(() -> {
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
Habbo habbo = set.getValue();
HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, "");
Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]);
String extraData = "1\t" + item.getId();
extraData += "\t0\t0\t0\t" + finalMessage + "\t0\t0";
Emulator.getGameEnvironment().getItemManager().createGift(habbo.getHabboInfo().getUsername(), giftItem, extraData, 0, 0);
habbo.getClient().sendResponse(new FurniListInvalidateComposer());
habbo.getClient().sendResponse(giftNotificiationMessage);
}
});
return true;
}
return false;
}
}

View File

@ -1,66 +0,0 @@
package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
public class PointsCommand extends Command {
public PointsCommand() {
super("cmd_points", Emulator.getTexts().getValue("commands.keys.cmd_points").split(";"));
}
@Override
public boolean handle(GameClient gameClient, String[] params) {
if (params.length >= 3) {
Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(params[1]);
if (habbo != null) {
try {
int type = Emulator.getConfig().getInt("seasonal.primary.type");
if (params.length == 4) {
try {
type = Integer.parseInt(params[3]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
return true;
}
}
int amount;
try {
amount = Integer.parseInt(params[2]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;
}
if (amount != 0) {
habbo.givePoints(type, amount);
if (habbo.getHabboInfo().getCurrentRoom() != null)
habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
else
habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)));
// habbo.getClient().sendResponse(new UserPointsComposer(habbo.getHabboInfo().getCurrencyAmount(type), amount, type));
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_points.send").replace("%amount%", amount + "").replace("%user%", params[1]).replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
}
} catch (NumberFormatException e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
}
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.user_offline").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
}
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
}
return true;
}
}

View File

@ -1,71 +0,0 @@
package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.wired.WiredRewardResultMessageComposer;
public class RoomGiftCommand extends Command {
public RoomGiftCommand() {
super("cmd_roomgift", Emulator.getTexts().getValue("commands.keys.cmd_roomgift").split(";"));
}
@Override
public boolean handle(final GameClient gameClient, String[] params) {
if (params.length >= 2) {
int itemId;
try {
itemId = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return true;
}
if (itemId <= 0) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return true;
}
final Item baseItem = Emulator.getGameEnvironment().getItemManager().getItem(itemId);
if (baseItem == null) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
return true;
}
StringBuilder message = new StringBuilder();
if (params.length > 2) {
for (int i = 2; i < params.length; i++) {
message.append(params[i]).append(" ");
}
}
final String finalMessage = message.toString();
for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, baseItem, 0, 0, "");
Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]);
String extraData = "1\t" + item.getId();
extraData += "\t0\t0\t0\t" + finalMessage + "\t0\t0";
Emulator.getGameEnvironment().getItemManager().createGift(habbo.getHabboInfo().getUsername(), giftItem, extraData, 0, 0);
habbo.getClient().sendResponse(new FurniListInvalidateComposer());
habbo.getClient().sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_ITEM));
}
return true;
}
return false;
}
}

View File

@ -25,10 +25,9 @@ public class SetMaxCommand extends Command {
} else { } else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.invalid_number"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.invalid_number"), RoomChatMessageBubbles.ALERT);
} }
return true;
} else { } else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.forgot_number"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.forgot_number"), RoomChatMessageBubbles.ALERT);
}
return true; return true;
} }
}
} }

View File

@ -1,6 +1,7 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.badge;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
@ -14,7 +15,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Slf4j @Slf4j
public class BadgeCommand extends Command { public class BadgeCommand extends BaseBadgeCommand {
public BadgeCommand() { public BadgeCommand() {
super("cmd_badge", Emulator.getTexts().getValue("commands.keys.cmd_badge").split(";")); super("cmd_badge", Emulator.getTexts().getValue("commands.keys.cmd_badge").split(";"));

View File

@ -0,0 +1,37 @@
package com.eu.habbo.habbohotel.commands.badge;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboBadge;
import com.eu.habbo.habbohotel.users.inventory.BadgesComponent;
import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
import com.eu.habbo.messages.outgoing.users.BadgeReceivedComposer;
import gnu.trove.map.hash.THashMap;
public abstract class BaseBadgeCommand extends Command {
public BaseBadgeCommand(String permission, String[] keys) {
super(permission, keys);
}
protected ServerMessage createServerMessage(String badge) {
THashMap<String, String> keys = new THashMap<>();
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}album1584/" + badge + ".gif");
keys.put("message", Emulator.getTexts().getValue("commands.generic.cmd_badge.received"));
return new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
}
protected void sendBadgeToClient(String badge, ServerMessage message, Habbo habbo) {
if (habbo.isOnline()) {
if (habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
HabboBadge b = BadgesComponent.createBadge(badge, habbo);
habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
habbo.getClient().sendResponse(message);
}
}
}
}

View File

@ -1,6 +1,7 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.badge;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
@ -14,7 +15,7 @@ import gnu.trove.map.hash.THashMap;
import java.util.Map; import java.util.Map;
public class MassBadgeCommand extends Command { public class MassBadgeCommand extends BaseBadgeCommand {
public MassBadgeCommand() { public MassBadgeCommand() {
super("cmd_massbadge", Emulator.getTexts().getValue("commands.keys.cmd_massbadge").split(";")); super("cmd_massbadge", Emulator.getTexts().getValue("commands.keys.cmd_massbadge").split(";"));
} }
@ -27,23 +28,12 @@ public class MassBadgeCommand extends Command {
badge = params[1]; badge = params[1];
if (!badge.isEmpty()) { if (!badge.isEmpty()) {
THashMap<String, String> keys = new THashMap<>(); ServerMessage message = createServerMessage(badge);
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}album1584/" + badge + ".gif");
keys.put("message", Emulator.getTexts().getValue("commands.generic.cmd_badge.received"));
ServerMessage message = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) { for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
Habbo habbo = set.getValue(); Habbo habbo = set.getValue();
if (habbo.isOnline()) { sendBadgeToClient(badge, message, habbo);
if (habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
HabboBadge b = BadgesComponent.createBadge(badge, habbo);
habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
habbo.getClient().sendResponse(message);
}
}
} }
return true; return true;
} }
@ -53,4 +43,6 @@ public class MassBadgeCommand extends Command {
} }
} }

View File

@ -1,6 +1,7 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.badge;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
@ -12,7 +13,7 @@ import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageCo
import com.eu.habbo.messages.outgoing.users.BadgeReceivedComposer; import com.eu.habbo.messages.outgoing.users.BadgeReceivedComposer;
import gnu.trove.map.hash.THashMap; import gnu.trove.map.hash.THashMap;
public class RoomBadgeCommand extends Command { public class RoomBadgeCommand extends BaseBadgeCommand {
public RoomBadgeCommand() { public RoomBadgeCommand() {
super("cmd_roombadge", Emulator.getTexts().getValue("commands.keys.cmd_roombadge").split(";")); super("cmd_roombadge", Emulator.getTexts().getValue("commands.keys.cmd_roombadge").split(";"));
} }
@ -28,21 +29,10 @@ public class RoomBadgeCommand extends Command {
badge = params[1]; badge = params[1];
if (!badge.isEmpty()) { if (!badge.isEmpty()) {
THashMap<String, String> keys = new THashMap<>(); ServerMessage message = createServerMessage(badge);
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}album1584/" + badge + ".gif");
keys.put("message", Emulator.getTexts().getValue("commands.generic.cmd_badge.received"));
ServerMessage message = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getHabbos()) { for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getHabbos()) {
if (habbo.isOnline()) { sendBadgeToClient(badge, message, habbo);
if (habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
HabboBadge b = BadgesComponent.createBadge(badge, habbo);
habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
habbo.getClient().sendResponse(message);
}
}
} }
} }
return true; return true;
@ -51,4 +41,6 @@ public class RoomBadgeCommand extends Command {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roombadge.no_badge"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roombadge.no_badge"), RoomChatMessageBubbles.ALERT);
return true; return true;
} }
} }

View File

@ -1,6 +1,7 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.bans;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.modtool.ModToolBan; import com.eu.habbo.habbohotel.modtool.ModToolBan;
import com.eu.habbo.habbohotel.modtool.ModToolBanType; import com.eu.habbo.habbohotel.modtool.ModToolBanType;

View File

@ -0,0 +1,53 @@
package com.eu.habbo.habbohotel.commands.bans;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboInfo;
import com.eu.habbo.habbohotel.users.HabboManager;
public abstract class BaseBanCommand extends Command {
protected HabboInfo habboInfo;
protected String reason;
protected int count;
public BaseBanCommand(String permission, String[] keys) {
super(permission, keys);
}
@Override
public boolean handle(GameClient gameClient, String[] params) throws Exception {
this.reason = getReason(params);
this.habboInfo = getHabboInfo(params);
return false;
}
private String getReason(String[] params) {
StringBuilder reason = new StringBuilder();
if (params.length > 2) {
for (int i = 2; i < params.length; i++) {
reason.append(params[i]);
reason.append(" ");
}
}
return reason.toString();
}
protected HabboInfo getHabboInfo(String[] params) {
if (params.length >= 2) {
Habbo h = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
if (h != null) {
return h.getHabboInfo();
} else {
return HabboManager.getOfflineHabboInfo(params[1]);
}
}
return null;
}
}

View File

@ -1,54 +1,32 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.bans;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.IPBanCommand;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.modtool.ModToolBanType; import com.eu.habbo.habbohotel.modtool.ModToolBanType;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboInfo;
import com.eu.habbo.habbohotel.users.HabboManager;
public class MachineBanCommand extends Command { public class MachineBanCommand extends BaseBanCommand {
public MachineBanCommand() { public MachineBanCommand() {
super("cmd_machine_ban", Emulator.getTexts().getValue("commands.keys.cmd_machine_ban").split(";")); super("cmd_machine_ban", Emulator.getTexts().getValue("commands.keys.cmd_machine_ban").split(";"));
} }
@Override @Override
public boolean handle(GameClient gameClient, String[] params) { public boolean handle(GameClient gameClient, String[] params) throws Exception {
HabboInfo habbo = null; super.handle(gameClient, params);
StringBuilder reason = new StringBuilder();
if (params.length >= 2) {
Habbo h = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
if (h != null) { if (habboInfo != null) {
habbo = h.getHabboInfo(); if (habboInfo == gameClient.getHabbo().getHabboInfo()) {
} else {
habbo = HabboManager.getOfflineHabboInfo(params[1]);
}
}
if (params.length > 2) {
for (int i = 2; i < params.length; i++) {
reason.append(params[i]);
reason.append(" ");
}
}
int count;
if (habbo != null) {
if (habbo == gameClient.getHabbo().getHabboInfo()) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_machine_ban.ban_self"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_machine_ban.ban_self"), RoomChatMessageBubbles.ALERT);
return true; return true;
} }
if (habbo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) { if (habboInfo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
return true; return true;
} }
count = Emulator.getGameEnvironment().getModToolManager().ban(habbo.getId(), gameClient.getHabbo(), reason.toString(), IPBanCommand.TEN_YEARS, ModToolBanType.MACHINE, -1).size(); count = Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, IPBanCommand.TEN_YEARS, ModToolBanType.MACHINE, -1).size();
} else { } else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
return true; return true;

View File

@ -1,52 +1,32 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.bans;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.IPBanCommand;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.modtool.ModToolBanType; import com.eu.habbo.habbohotel.modtool.ModToolBanType;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboInfo;
import com.eu.habbo.habbohotel.users.HabboManager;
public class SuperbanCommand extends Command { public class SuperbanCommand extends BaseBanCommand {
public SuperbanCommand() { public SuperbanCommand() {
super("cmd_super_ban", Emulator.getTexts().getValue("commands.keys.cmd_super_ban").split(";")); super("cmd_super_ban", Emulator.getTexts().getValue("commands.keys.cmd_super_ban").split(";"));
} }
@Override @Override
public boolean handle(GameClient gameClient, String[] params) { public boolean handle(GameClient gameClient, String[] params) throws Exception {
HabboInfo habbo = null; super.handle(gameClient, params);
StringBuilder reason = new StringBuilder();
if (params.length >= 2) {
Habbo h = Emulator.getGameEnvironment().getHabboManager().getHabbo(params[1]);
if (h != null) { if (habboInfo != null) {
habbo = h.getHabboInfo(); if (habboInfo == gameClient.getHabbo().getHabboInfo()) {
} else {
habbo = HabboManager.getOfflineHabboInfo(params[1]);
}
}
if (params.length > 2) {
for (int i = 2; i < params.length; i++) {
reason.append(params[i]);
reason.append(" ");
}
}
int count;
if (habbo != null) {
if (habbo == gameClient.getHabbo().getHabboInfo()) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_super_ban.ban_self"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_super_ban.ban_self"), RoomChatMessageBubbles.ALERT);
return true; return true;
} }
if (habbo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) { if (habboInfo.getRank().getId() >= gameClient.getHabbo().getHabboInfo().getRank().getId()) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.target_rank_higher"), RoomChatMessageBubbles.ALERT);
return true; return true;
} }
count = Emulator.getGameEnvironment().getModToolManager().ban(habbo.getId(), gameClient.getHabbo(), reason.toString(), IPBanCommand.TEN_YEARS, ModToolBanType.SUPER, -1).size(); count = Emulator.getGameEnvironment().getModToolManager().ban(habboInfo.getId(), gameClient.getHabbo(), reason, IPBanCommand.TEN_YEARS, ModToolBanType.SUPER, -1).size();
} else { } else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT); gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.user_offline"), RoomChatMessageBubbles.ALERT);
return true; return true;

View File

@ -0,0 +1,81 @@
package com.eu.habbo.habbohotel.commands.gift;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public abstract class BaseGiftCommand extends Command {
public BaseGiftCommand(String permission, String[] keys) {
super(permission, keys);
}
protected boolean validateGiftCommand(GameClient gameClient, String[] params) {
Integer itemId = getItemId(params);
if (itemId == null) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return false;
}
if (itemId <= 0) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return false;
}
final Item baseItem = getBaseItem(itemId);
if (baseItem == null) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_found").replace("%itemid%", itemId + ""), RoomChatMessageBubbles.ALERT);
return false;
}
return true;
}
protected String getFinalMessage(String[] params) {
String message = "";
if (params.length > 2) {
message = IntStream.range(2, params.length).mapToObj(i -> params[i] + " ").collect(Collectors.joining());
}
return message;
}
protected void createGift(String finalMessage, Habbo habbo, String[] params) {
HabboItem item = Emulator.getGameEnvironment().getItemManager().createItem(0, getBaseItem(params), 0, 0, "");
Item giftItem = Emulator.getGameEnvironment().getItemManager().getItem((Integer) Emulator.getGameEnvironment().getCatalogManager().giftFurnis.values().toArray()[Emulator.getRandom().nextInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size())]);
String extraData = "1\t" + item.getId();
extraData += "\t0\t0\t0\t" + finalMessage + "\t0\t0";
Emulator.getGameEnvironment().getItemManager().createGift(habbo.getHabboInfo().getUsername(), giftItem, extraData, 0, 0);
habbo.getClient().sendResponse(new FurniListInvalidateComposer());
}
protected Item getBaseItem(String[] params) {
return Emulator.getGameEnvironment().getItemManager().getItem(getItemId(params));
}
protected Item getBaseItem(Integer itemId) {
return Emulator.getGameEnvironment().getItemManager().getItem(itemId);
}
protected Integer getItemId(String[] params) {
try {
return Integer.parseInt(params[1]);
} catch (Exception e) {
return null;
}
}
}

View File

@ -1,6 +1,7 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.gift;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
@ -13,7 +14,7 @@ import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageCo
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import gnu.trove.map.hash.THashMap; import gnu.trove.map.hash.THashMap;
public class GiftCommand extends Command { public class GiftCommand extends BaseGiftCommand {
public GiftCommand() { public GiftCommand() {
super("cmd_gift", Emulator.getTexts().getValue("commands.keys.cmd_gift").split(";")); super("cmd_gift", Emulator.getTexts().getValue("commands.keys.cmd_gift").split(";"));
} }

View File

@ -0,0 +1,53 @@
package com.eu.habbo.habbohotel.commands.gift;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import gnu.trove.map.hash.THashMap;
import java.util.Map;
public class MassGiftCommand extends BaseGiftCommand {
public MassGiftCommand() {
super("cmd_massgift", Emulator.getTexts().getValue("commands.keys.cmd_massgift").split(";"));
}
@Override
public boolean handle(final GameClient gameClient, String[] params) {
if (params.length >= 2) {
if(!validateGiftCommand(gameClient, params)){
return true;
}
final String finalMessage = getFinalMessage(params);
THashMap<String, String> keys = new THashMap<>();
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}notifications/gift.gif");
keys.put("message", Emulator.getTexts().getValue("generic.gift.received.anonymous"));
ServerMessage giftNotificationMessage = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
Emulator.getThreading().run(() -> {
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
Habbo habbo = set.getValue();
createGift(finalMessage, habbo, params);
habbo.getClient().sendResponse(giftNotificationMessage);
}
});
return true;
}
return false;
}
}

View File

@ -0,0 +1,40 @@
package com.eu.habbo.habbohotel.commands.gift;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.wired.WiredRewardResultMessageComposer;
public class RoomGiftCommand extends BaseGiftCommand {
public RoomGiftCommand() {
super("cmd_roomgift", Emulator.getTexts().getValue("commands.keys.cmd_roomgift").split(";"));
}
@Override
public boolean handle(final GameClient gameClient, String[] params) {
if (params.length >= 2) {
if (!validateGiftCommand(gameClient, params)) {
return true;
}
final String finalMessage = getFinalMessage(params);
for (Habbo habbo : gameClient.getHabbo().getHabboInfo().getCurrentRoom().getHabbos()) {
createGift(finalMessage, habbo, params);
habbo.getClient().sendResponse(new WiredRewardResultMessageComposer(WiredRewardResultMessageComposer.REWARD_RECEIVED_ITEM));
}
return true;
}
return false;
}
}

View File

@ -0,0 +1,9 @@
package com.eu.habbo.habbohotel.commands.points;
import com.eu.habbo.habbohotel.commands.Command;
public abstract class BasePointsCommand extends Command {
public BasePointsCommand(String permission, String[] keys) {
super(permission, keys);
}
}

View File

@ -1,13 +1,14 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.points;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
import java.util.Map; import java.util.Map;
public class MassPointsCommand extends Command { public class MassPointsCommand extends BasePointsCommand {
public MassPointsCommand() { public MassPointsCommand() {
super("cmd_masspoints", Emulator.getTexts().getValue("commands.keys.cmd_masspoints").split(";")); super("cmd_masspoints", Emulator.getTexts().getValue("commands.keys.cmd_masspoints").split(";"));
} }

View File

@ -0,0 +1,68 @@
package com.eu.habbo.habbohotel.commands.points;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
public class PointsCommand extends BasePointsCommand {
public PointsCommand() {
super("cmd_points", Emulator.getTexts().getValue("commands.keys.cmd_points").split(";"));
}
@Override
public boolean handle(GameClient gameClient, String[] params) {
if (params.length < 3) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;
}
Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(params[1]);
if (habbo == null) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.user_offline").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
}
try {
int type = Emulator.getConfig().getInt("seasonal.primary.type");
int amount;
if (params.length == 4) {
try {
type = Integer.parseInt(params[3]);
} catch (NumberFormatException e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
return true;
}
}
try {
amount = Integer.parseInt(params[2]);
} catch (NumberFormatException e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;
}
if (amount != 0) {
habbo.givePoints(type, amount);
if (habbo.getHabboInfo().getCurrentRoom() != null)
habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
else
habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_points.received").replace("%amount%", amount + "").replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)));
// habbo.getClient().sendResponse(new UserPointsComposer(habbo.getHabboInfo().getCurrencyAmount(type), amount, type));
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_points.send").replace("%amount%", amount + "").replace("%user%", params[1]).replace("%type%", Emulator.getTexts().getValue("seasonal.name." + type)), RoomChatMessageBubbles.ALERT);
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
}
} catch (NumberFormatException e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
}
return true;
}
}

View File

@ -1,11 +1,12 @@
package com.eu.habbo.habbohotel.commands; package com.eu.habbo.habbohotel.commands.points;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles; import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
public class RoomPointsCommand extends Command { public class RoomPointsCommand extends BasePointsCommand {
public RoomPointsCommand() { public RoomPointsCommand() {
super("cmd_roompoints", Emulator.getTexts().getValue("commands.keys.cmd_roompoints").split(";")); super("cmd_roompoints", Emulator.getTexts().getValue("commands.keys.cmd_roompoints").split(";"));
} }

View File

@ -39,7 +39,7 @@ public class CraftingRecipe {
} }
public boolean canBeCrafted() { public boolean canBeCrafted() {
return this.limited && this.remaining <= 0; return !this.limited || this.remaining > 0;
} }
public synchronized boolean decrease() { public synchronized boolean decrease() {

View File

@ -98,7 +98,7 @@ public class ForumThread implements Runnable, ISerialize {
this.commentIndex = 0; this.commentIndex = 0;
} }
public static ForumThread create(Guild guild, Habbo opener, String subject, String message) throws Exception { public static ForumThread create(Guild guild, Habbo opener, String subject, String message) {
ForumThread createdThread = null; ForumThread createdThread = null;
if (Emulator.getPluginManager().fireEvent(new GuildForumThreadBeforeCreated(guild, opener, subject, message)).isCancelled()) if (Emulator.getPluginManager().fireEvent(new GuildForumThreadBeforeCreated(guild, opener, subject, message)).isCancelled())

View File

@ -11,7 +11,7 @@ public enum ForumThreadState {
HIDDEN_BY_GUILD_ADMIN(20); HIDDEN_BY_GUILD_ADMIN(20);
@Getter @Getter
private int stateId; private final int stateId;
public static ForumThreadState fromValue(int value) { public static ForumThreadState fromValue(int value) {

View File

@ -24,7 +24,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
public class InteractionBuildArea extends InteractionCustomValues { public class InteractionBuildArea extends InteractionCustomValues {
protected static final THashMap<String, String> defaultValues = new THashMap<String, String>(); protected static final THashMap<String, String> defaultValues = new THashMap<>();
private final THashSet<RoomTile> tiles; private final THashSet<RoomTile> tiles;
@ -110,7 +110,6 @@ public class InteractionBuildArea extends InteractionCustomValues {
} }
} }
THashSet<RoomTile> oldTiles = this.tiles;
THashSet<RoomTile> newTiles = new THashSet<>(); THashSet<RoomTile> newTiles = new THashSet<>();
int minX = Math.max(0, newLocation.getX() - Integer.parseInt(this.values.get("tilesBack"))); int minX = Math.max(0, newLocation.getX() - Integer.parseInt(this.values.get("tilesBack")));
@ -127,7 +126,7 @@ public class InteractionBuildArea extends InteractionCustomValues {
} }
if (!canBuild.isEmpty()) { if (!canBuild.isEmpty()) {
for (RoomTile tile : oldTiles) { for (RoomTile tile : this.tiles) {
THashSet<HabboItem> tileItems = room.getItemsAt(tile); THashSet<HabboItem> tileItems = room.getItemsAt(tile);
if (newTiles.contains(tile)) continue; if (newTiles.contains(tile)) continue;
for (HabboItem tileItem : tileItems) { for (HabboItem tileItem : tileItems) {

View File

@ -48,7 +48,7 @@ public class InteractionDice extends HabboItem {
if (client != null) { if (client != null) {
if (RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), client.getHabbo().getRoomUnit().getCurrentLocation())) { if (RoomLayout.tilesAdjecent(room.getLayout().getTile(this.getX(), this.getY()), client.getHabbo().getRoomUnit().getCurrentLocation())) {
if (!this.getExtradata().equalsIgnoreCase("-1")) { if (!this.getExtradata().equalsIgnoreCase("-1")) {
FurnitureDiceRolledEvent event = (FurnitureDiceRolledEvent) Emulator.getPluginManager().fireEvent(new FurnitureDiceRolledEvent(this, client.getHabbo(), -1)); FurnitureDiceRolledEvent event = Emulator.getPluginManager().fireEvent(new FurnitureDiceRolledEvent(this, client.getHabbo(), -1));
if (event.isCancelled()) if (event.isCancelled())
return; return;

View File

@ -10,14 +10,13 @@ import gnu.trove.set.hash.THashSet;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List;
public class InteractionGuildFurni extends InteractionDefault { public class InteractionGuildFurni extends InteractionDefault {
private int guildId; private int guildId;
private static final THashSet<String> ROTATION_8_ITEMS = new THashSet<>() { private static final THashSet<String> ROTATION_8_ITEMS = new THashSet<>(
{ List.of("gld_wall_tall")
this.add("gld_wall_tall"); );
}
};
public InteractionGuildFurni(ResultSet set, Item baseItem) throws SQLException { public InteractionGuildFurni(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem); super(set, baseItem);

View File

@ -9,13 +9,14 @@ import gnu.trove.map.hash.THashMap;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Map;
public class InteractionInformationTerminal extends InteractionCustomValues { public class InteractionInformationTerminal extends InteractionCustomValues {
public static final THashMap<String, String> defaultValues = new THashMap<>() { public static final THashMap<String, String> defaultValues = new THashMap<>(
{ Map.of(
this.put("internalLink", "habbopages/chat/commands"); "internalLink", "habbopages/chat/commands"
} )
}; );
public InteractionInformationTerminal(ResultSet set, Item baseItem) throws SQLException { public InteractionInformationTerminal(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem, defaultValues); super(set, baseItem, defaultValues);

View File

@ -19,29 +19,18 @@ import gnu.trove.set.hash.THashSet;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Map;
public class InteractionMuteArea extends InteractionCustomValues { public class InteractionMuteArea extends InteractionCustomValues {
public static final THashMap<String, String> defaultValues = new THashMap<>() { public static final THashMap<String, String> defaultValues = new THashMap<>(
{ Map.of(
this.put("tilesLeft", "0"); "tilesLeft", "0",
} "tilesRight", "0",
"tilesFront", "0",
{ "tilesBack", "0",
this.put("tilesRight", "0"); "state", "0"
} )
);
{
this.put("tilesFront", "0");
}
{
this.put("tilesBack", "0");
}
{
this.put("state", "0");
}
};
private final THashSet<RoomTile> tiles; private final THashSet<RoomTile> tiles;

View File

@ -7,29 +7,16 @@ import gnu.trove.map.hash.THashMap;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Map;
public class InteractionRoomAds extends InteractionCustomValues { public class InteractionRoomAds extends InteractionCustomValues {
public final static THashMap<String, String> defaultValues = new THashMap<>() { public final static THashMap<String, String> defaultValues = new THashMap<>(Map.of(
{ "imageUrl", "" ,
this.put("imageUrl", ""); "clickUrl", "",
} "offsetX", "0",
"offsetY", "0",
{ "offsetZ", "0")
this.put("clickUrl", ""); );
}
{
this.put("offsetX", "0");
}
{
this.put("offsetY", "0");
}
{
this.put("offsetZ", "0");
}
};
public InteractionRoomAds(ResultSet set, Item baseItem) throws SQLException { public InteractionRoomAds(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem, defaultValues); super(set, baseItem, defaultValues);

View File

@ -128,9 +128,7 @@ public class InteractionTeleport extends HabboItem {
List<Runnable> onSuccess = new ArrayList<>(); List<Runnable> onSuccess = new ArrayList<>();
List<Runnable> onFail = new ArrayList<>(); List<Runnable> onFail = new ArrayList<>();
onSuccess.add(() -> { onSuccess.add(() -> tryTeleport(client, room));
tryTeleport(client, room);
});
unit.setGoalLocation(infrontTile); unit.setGoalLocation(infrontTile);
Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, infrontTile, room, onSuccess, onFail)); Emulator.getThreading().run(new RoomUnitWalkToLocation(unit, infrontTile, room, onSuccess, onFail));
@ -202,10 +200,7 @@ public class InteractionTeleport extends HabboItem {
if (unit == null) if (unit == null)
return false; return false;
if (habbo.getHabboInfo().getRiding() != null) return habbo.getHabboInfo().getRiding() == null;
return false;
return true;
} }
public void startTeleport(Room room, Habbo habbo) { public void startTeleport(Room room, Habbo habbo) {

View File

@ -8,13 +8,12 @@ import gnu.trove.map.hash.THashMap;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Map;
public class InteractionTileEffectProvider extends InteractionCustomValues { public class InteractionTileEffectProvider extends InteractionCustomValues {
public static final THashMap<String, String> defaultValues = new THashMap<>() { public static final THashMap<String, String> defaultValues = new THashMap<>(
{ Map.of("effectId", "0")
this.put("effectId", "0"); );
}
};
public InteractionTileEffectProvider(ResultSet set, Item baseItem) throws SQLException { public InteractionTileEffectProvider(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem, defaultValues); super(set, baseItem, defaultValues);

View File

@ -9,6 +9,7 @@ import com.eu.habbo.habbohotel.rooms.RoomUnit;
import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeDisplayVideoMessageComposer; import com.eu.habbo.messages.outgoing.rooms.items.youtube.YoutubeDisplayVideoMessageComposer;
import com.eu.habbo.threading.runnables.YoutubeAdvanceVideo;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;

View File

@ -4,5 +4,5 @@ import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnit;
public interface ConditionalGate { public interface ConditionalGate {
public void onRejected(RoomUnit roomUnit, Room room, Object[] objects); void onRejected(RoomUnit roomUnit, Room room, Object[] objects);
} }

View File

@ -50,9 +50,7 @@ public class InteractionPetDrink extends InteractionDefault {
if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentLocation())) { if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentLocation())) {
List<Runnable> onSuccess = new ArrayList<>(); List<Runnable> onSuccess = new ArrayList<>();
onSuccess.add(() -> { onSuccess.add(() -> this.change(room, this.getBaseItem().getStateCount() - 1));
this.change(room, this.getBaseItem().getStateCount() - 1);
});
client.getHabbo().getRoomUnit().setGoalLocation(closestTile); client.getHabbo().getRoomUnit().setGoalLocation(closestTile);
Emulator.getThreading().run(new RoomUnitWalkToLocation(client.getHabbo().getRoomUnit(), closestTile, room, onSuccess, new ArrayList<>())); Emulator.getThreading().run(new RoomUnitWalkToLocation(client.getHabbo().getRoomUnit(), closestTile, room, onSuccess, new ArrayList<>()));

View File

@ -40,12 +40,12 @@ public class InteractionPetTree extends InteractionDefault {
Pet pet = room.getPet(roomUnit); Pet pet = room.getPet(roomUnit);
if (pet != null && pet.getPetData().haveToyItem(this.getBaseItem()) && this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getGoal())) { if (pet != null && pet.getPetData().haveToyItem(this.getBaseItem()) && this.getOccupyingTiles(room.getLayout()).contains(pet.getRoomUnit().getGoal())) {
RoomUnitStatus task = RoomUnitStatus.HANG; RoomUnitStatus task = switch (pet.getTask()) {
switch(pet.getTask()){ case RING_OF_FIRE -> RoomUnitStatus.RINGOFFIRE;
case RING_OF_FIRE: task = RoomUnitStatus.RINGOFFIRE; break; case SWING -> RoomUnitStatus.SWING;
case SWING: task = RoomUnitStatus.SWING; break; case ROLL -> RoomUnitStatus.ROLL;
case ROLL: task = RoomUnitStatus.ROLL; break; default -> RoomUnitStatus.HANG;
} };
if (pet.getEnergy() >= 35 && task != RoomUnitStatus.HANG) { if (pet.getEnergy() >= 35 && task != RoomUnitStatus.HANG) {
pet.getRoomUnit().setCanWalk(false); pet.getRoomUnit().setCanWalk(false);

View File

@ -20,7 +20,7 @@ import java.util.stream.Collectors;
public class WiredConditionFurniTypeMatch extends InteractionWiredCondition { public class WiredConditionFurniTypeMatch extends InteractionWiredCondition {
public static final WiredConditionType type = WiredConditionType.STUFF_IS; public static final WiredConditionType type = WiredConditionType.STUFF_IS;
private THashSet<HabboItem> items = new THashSet<>(); private final THashSet<HabboItem> items = new THashSet<>();
public WiredConditionFurniTypeMatch(ResultSet set, Item baseItem) throws SQLException { public WiredConditionFurniTypeMatch(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem); super(set, baseItem);
@ -44,8 +44,7 @@ public class WiredConditionFurniTypeMatch extends InteractionWiredCondition {
if (stuff != null) { if (stuff != null) {
if (stuff.length >= 1) { if (stuff.length >= 1) {
if (stuff[0] instanceof HabboItem) { if (stuff[0] instanceof HabboItem triggeringItem) {
HabboItem triggeringItem = (HabboItem)stuff[0];
return this.items.stream().anyMatch(item -> item == triggeringItem); return this.items.stream().anyMatch(item -> item == triggeringItem);
} }
} }

View File

@ -50,7 +50,7 @@ public class WiredConditionLessTimeElapsed extends InteractionWiredCondition {
if (!wiredData.equals("")) if (!wiredData.equals(""))
this.cycles = Integer.parseInt(wiredData); this.cycles = Integer.parseInt(wiredData);
} }
} catch (Exception e) { } catch (Exception ignored) {
} }
} }

View File

@ -50,7 +50,7 @@ public class WiredConditionMoreTimeElapsed extends InteractionWiredCondition {
if (!wiredData.equals("")) if (!wiredData.equals(""))
this.cycles = Integer.parseInt(wiredData); this.cycles = Integer.parseInt(wiredData);
} }
} catch (Exception e) { } catch (Exception ignored) {
} }
} }

View File

@ -23,7 +23,7 @@ public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition {
public static final WiredConditionType type = WiredConditionType.NOT_FURNI_HAVE_FURNI; public static final WiredConditionType type = WiredConditionType.NOT_FURNI_HAVE_FURNI;
private boolean all; private boolean all;
private THashSet<HabboItem> items; private final THashSet<HabboItem> items;
public WiredConditionNotFurniHaveFurni(ResultSet set, Item baseItem) throws SQLException { public WiredConditionNotFurniHaveFurni(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem); super(set, baseItem);

View File

@ -20,7 +20,7 @@ import java.util.stream.Collectors;
public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition { public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition {
public static final WiredConditionType type = WiredConditionType.NOT_STUFF_IS; public static final WiredConditionType type = WiredConditionType.NOT_STUFF_IS;
private THashSet<HabboItem> items = new THashSet<>(); private final THashSet<HabboItem> items = new THashSet<>();
public WiredConditionNotFurniTypeMatch(ResultSet set, Item baseItem) throws SQLException { public WiredConditionNotFurniTypeMatch(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem); super(set, baseItem);
@ -39,8 +39,7 @@ public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition {
if (stuff != null) { if (stuff != null) {
if (stuff.length >= 1) { if (stuff.length >= 1) {
if (stuff[0] instanceof HabboItem) { if (stuff[0] instanceof HabboItem triggeringItem) {
HabboItem triggeringItem = (HabboItem)stuff[0];
return this.items.stream().noneMatch(item -> item == triggeringItem); return this.items.stream().noneMatch(item -> item == triggeringItem);
} }
} }

View File

@ -79,7 +79,7 @@ public class WiredEffectBotTeleport extends InteractionWiredEffect {
} }
} }
Emulator.getThreading().run(() -> { roomUnit.isWiredTeleporting = true; }, Math.max(0, WiredHandler.TELEPORT_DELAY - 500)); Emulator.getThreading().run(() -> roomUnit.isWiredTeleporting = true, Math.max(0, WiredHandler.TELEPORT_DELAY - 500));
Emulator.getThreading().run(new RoomUnitTeleport(roomUnit, room, tile.getX(), tile.getY(), tile.getStackHeight() + (tile.getState() == RoomTileState.SIT ? -0.5 : 0), roomUnit.getEffectId()), WiredHandler.TELEPORT_DELAY); Emulator.getThreading().run(new RoomUnitTeleport(roomUnit, room, tile.getX(), tile.getY(), tile.getStackHeight() + (tile.getState() == RoomTileState.SIT ? -0.5 : 0), roomUnit.getEffectId()), WiredHandler.TELEPORT_DELAY);
} }

View File

@ -263,23 +263,16 @@ public class WiredEffectChangeFurniDirection extends InteractionWiredEffect {
} }
private RoomUserRotation nextRotation(RoomUserRotation currentRotation) { private RoomUserRotation nextRotation(RoomUserRotation currentRotation) {
switch (this.blockedAction) { return switch (this.blockedAction) {
case ACTION_TURN_BACK: case ACTION_TURN_BACK -> RoomUserRotation.fromValue(currentRotation.getValue()).getOpposite();
return RoomUserRotation.fromValue(currentRotation.getValue()).getOpposite(); case ACTION_TURN_LEFT_45 -> RoomUserRotation.counterClockwise(currentRotation);
case ACTION_TURN_LEFT_45: case ACTION_TURN_LEFT_90 ->
return RoomUserRotation.counterClockwise(currentRotation); RoomUserRotation.counterClockwise(RoomUserRotation.counterClockwise(currentRotation));
case ACTION_TURN_LEFT_90: case ACTION_TURN_RIGHT_45 -> RoomUserRotation.clockwise(currentRotation);
return RoomUserRotation.counterClockwise(RoomUserRotation.counterClockwise(currentRotation)); case ACTION_TURN_RIGHT_90 -> RoomUserRotation.clockwise(RoomUserRotation.clockwise(currentRotation));
case ACTION_TURN_RIGHT_45: case ACTION_TURN_RANDOM -> RoomUserRotation.fromValue(Emulator.getRandom().nextInt(8));
return RoomUserRotation.clockwise(currentRotation); case ACTION_WAIT, default -> currentRotation;
case ACTION_TURN_RIGHT_90: };
return RoomUserRotation.clockwise(RoomUserRotation.clockwise(currentRotation));
case ACTION_TURN_RANDOM:
return RoomUserRotation.fromValue(Emulator.getRandom().nextInt(8));
case ACTION_WAIT:
default:
return currentRotation;
}
} }
@Override @Override

View File

@ -27,7 +27,7 @@ public class WiredEffectGiveHandItem extends WiredEffectWhisper {
if (habbo != null) { if (habbo != null) {
room.giveHandItem(habbo, itemId); room.giveHandItem(habbo, itemId);
} }
} catch (Exception e) { } catch (Exception ignored) {
} }
return false; return false;
} }

View File

@ -4,7 +4,6 @@ import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings;
import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnit;
@ -13,7 +12,6 @@ import com.eu.habbo.habbohotel.wired.WiredEffectType;
import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredHandler;
import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.hotelview.BonusRareInfoMessageComposer; import com.eu.habbo.messages.outgoing.hotelview.BonusRareInfoMessageComposer;
import gnu.trove.procedure.TObjectProcedure;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@ -48,14 +46,11 @@ public class WiredEffectGiveHotelviewBonusRarePoints extends InteractionWiredEff
if (this.requiresTriggeringUser()) { if (this.requiresTriggeringUser()) {
List<Integer> invalidTriggers = new ArrayList<>(); List<Integer> invalidTriggers = new ArrayList<>();
room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure<InteractionWiredTrigger>() { room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(object -> {
@Override
public boolean execute(InteractionWiredTrigger object) {
if (!object.isTriggeredByRoomUnit()) { if (!object.isTriggeredByRoomUnit()) {
invalidTriggers.add(object.getBaseItem().getSpriteId()); invalidTriggers.add(object.getBaseItem().getSpriteId());
} }
return true; return true;
}
}); });
message.appendInt(invalidTriggers.size()); message.appendInt(invalidTriggers.size());
for (Integer i : invalidTriggers) { for (Integer i : invalidTriggers) {
@ -119,7 +114,7 @@ public class WiredEffectGiveHotelviewBonusRarePoints extends InteractionWiredEff
try { try {
this.amount = Integer.parseInt(wiredData.split("\t")[1]); this.amount = Integer.parseInt(wiredData.split("\t")[1]);
} catch (Exception e) { } catch (Exception ignored) {
} }
} }
} }

View File

@ -115,7 +115,7 @@ public class WiredEffectGiveRespect extends InteractionWiredEffect {
try { try {
this.respects = Integer.parseInt(data[1]); this.respects = Integer.parseInt(data[1]);
} catch (Exception e) { } catch (Exception ignored) {
} }
} }

View File

@ -4,7 +4,6 @@ import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings;
import com.eu.habbo.habbohotel.permissions.Permission; import com.eu.habbo.habbohotel.permissions.Permission;
import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.Room;
@ -18,7 +17,6 @@ import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.incoming.wired.WiredSaveException; import com.eu.habbo.messages.incoming.wired.WiredSaveException;
import com.eu.habbo.messages.outgoing.rooms.users.WhisperMessageComposer; import com.eu.habbo.messages.outgoing.rooms.users.WhisperMessageComposer;
import com.eu.habbo.threading.runnables.RoomUnitKick; import com.eu.habbo.threading.runnables.RoomUnitKick;
import gnu.trove.procedure.TObjectProcedure;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@ -129,14 +127,11 @@ public class WiredEffectKickHabbo extends InteractionWiredEffect {
if (this.requiresTriggeringUser()) { if (this.requiresTriggeringUser()) {
List<Integer> invalidTriggers = new ArrayList<>(); List<Integer> invalidTriggers = new ArrayList<>();
room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure<InteractionWiredTrigger>() { room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(object -> {
@Override
public boolean execute(InteractionWiredTrigger object) {
if (!object.isTriggeredByRoomUnit()) { if (!object.isTriggeredByRoomUnit()) {
invalidTriggers.add(object.getBaseItem().getSpriteId()); invalidTriggers.add(object.getBaseItem().getSpriteId());
} }
return true; return true;
}
}); });
message.appendInt(invalidTriggers.size()); message.appendInt(invalidTriggers.size());
for (Integer i : invalidTriggers) { for (Integer i : invalidTriggers) {

View File

@ -197,7 +197,7 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect {
this.direction = Integer.parseInt(data[0]); this.direction = Integer.parseInt(data[0]);
this.spacing = Integer.parseInt(data[1]); this.spacing = Integer.parseInt(data[1]);
this.setDelay(Integer.parseInt(data[2])); this.setDelay(Integer.parseInt(data[2]));
} catch (Exception e) { } catch (Exception ignored) {
} }
for (String s : data[3].split("\r")) { for (String s : data[3].split("\r")) {

View File

@ -106,7 +106,7 @@ public class WiredEffectMuteHabbo extends InteractionWiredEffect {
this.setDelay(Integer.parseInt(data[0])); this.setDelay(Integer.parseInt(data[0]));
this.length = Integer.parseInt(data[1]); this.length = Integer.parseInt(data[1]);
this.message = data[2]; this.message = data[2];
} catch (Exception e) { } catch (Exception ignored) {
} }
} }
} }

View File

@ -48,14 +48,11 @@ public class WiredEffectResetTimers extends InteractionWiredEffect {
if (this.requiresTriggeringUser()) { if (this.requiresTriggeringUser()) {
List<Integer> invalidTriggers = new ArrayList<>(); List<Integer> invalidTriggers = new ArrayList<>();
room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure<InteractionWiredTrigger>() { room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(object -> {
@Override
public boolean execute(InteractionWiredTrigger object) {
if (!object.isTriggeredByRoomUnit()) { if (!object.isTriggeredByRoomUnit()) {
invalidTriggers.add(object.getBaseItem().getSpriteId()); invalidTriggers.add(object.getBaseItem().getSpriteId());
} }
return true; return true;
}
}); });
message.appendInt(invalidTriggers.size()); message.appendInt(invalidTriggers.size());
for (Integer i : invalidTriggers) { for (Integer i : invalidTriggers) {
@ -98,7 +95,7 @@ public class WiredEffectResetTimers extends InteractionWiredEffect {
if (!wiredData.equals("")) { if (!wiredData.equals("")) {
this.delay = Integer.parseInt(wiredData); this.delay = Integer.parseInt(wiredData);
} }
} catch (Exception e) { } catch (Exception ignored) {
} }
} }

View File

@ -53,14 +53,11 @@ public class WiredEffectWhisper extends InteractionWiredEffect {
if (this.requiresTriggeringUser()) { if (this.requiresTriggeringUser()) {
List<Integer> invalidTriggers = new ArrayList<>(); List<Integer> invalidTriggers = new ArrayList<>();
room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(new TObjectProcedure<InteractionWiredTrigger>() { room.getRoomSpecialTypes().getTriggers(this.getX(), this.getY()).forEach(object -> {
@Override
public boolean execute(InteractionWiredTrigger object) {
if (!object.isTriggeredByRoomUnit()) { if (!object.isTriggeredByRoomUnit()) {
invalidTriggers.add(object.getBaseItem().getSpriteId()); invalidTriggers.add(object.getBaseItem().getSpriteId());
} }
return true; return true;
}
}); });
message.appendInt(invalidTriggers.size()); message.appendInt(invalidTriggers.size());
for (Integer i : invalidTriggers) { for (Integer i : invalidTriggers) {

View File

@ -4,8 +4,8 @@ import com.eu.habbo.habbohotel.wired.WiredMatchFurniSetting;
import gnu.trove.set.hash.THashSet; import gnu.trove.set.hash.THashSet;
public interface InteractionWiredMatchFurniSettings { public interface InteractionWiredMatchFurniSettings {
public THashSet<WiredMatchFurniSetting> getMatchFurniSettings(); THashSet<WiredMatchFurniSetting> getMatchFurniSettings();
public boolean shouldMatchState(); boolean shouldMatchState();
public boolean shouldMatchRotation(); boolean shouldMatchRotation();
public boolean shouldMatchPosition(); boolean shouldMatchPosition();
} }

View File

@ -1,14 +1,12 @@
package com.eu.habbo.habbohotel.items.interactions.wired.triggers; package com.eu.habbo.habbohotel.items.interactions.wired.triggers;
import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings;
import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnit;
import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.habbohotel.wired.WiredTriggerType;
import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.ServerMessage;
import gnu.trove.procedure.TObjectProcedure;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@ -60,18 +58,15 @@ public class WiredTriggerGameStarts extends InteractionWiredTrigger {
message.appendString(""); message.appendString("");
message.appendInt(0); message.appendInt(0);
message.appendInt(0); message.appendInt(0);
message.appendInt(this.type.getCode()); message.appendInt(type.getCode());
if (!this.isTriggeredByRoomUnit()) { if (!this.isTriggeredByRoomUnit()) {
List<Integer> invalidTriggers = new ArrayList<>(); List<Integer> invalidTriggers = new ArrayList<>();
room.getRoomSpecialTypes().getEffects(this.getX(), this.getY()).forEach(new TObjectProcedure<InteractionWiredEffect>() { room.getRoomSpecialTypes().getEffects(this.getX(), this.getY()).forEach(object -> {
@Override
public boolean execute(InteractionWiredEffect object) {
if (object.requiresTriggeringUser()) { if (object.requiresTriggeringUser()) {
invalidTriggers.add(object.getBaseItem().getSpriteId()); invalidTriggers.add(object.getBaseItem().getSpriteId());
} }
return true; return true;
}
}); });
message.appendInt(invalidTriggers.size()); message.appendInt(invalidTriggers.size());
for (Integer i : invalidTriggers) { for (Integer i : invalidTriggers) {

View File

@ -20,7 +20,7 @@ import java.util.stream.Collectors;
public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger { public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
public static final WiredTriggerType type = WiredTriggerType.WALKS_OFF_FURNI; public static final WiredTriggerType type = WiredTriggerType.WALKS_OFF_FURNI;
private THashSet<HabboItem> items; private final THashSet<HabboItem> items;
public WiredTriggerHabboWalkOffFurni(ResultSet set, Item baseItem) throws SQLException { public WiredTriggerHabboWalkOffFurni(ResultSet set, Item baseItem) throws SQLException {
super(set, baseItem); super(set, baseItem);
@ -76,7 +76,7 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
if (item != null) if (item != null)
this.items.add(item); this.items.add(item);
} catch (Exception e) { } catch (Exception ignored) {
} }
} }
} }

View File

@ -127,7 +127,7 @@ public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
if (item != null) if (item != null)
this.items.add(item); this.items.add(item);
} catch (Exception e) { } catch (Exception ignored) {
} }
} }
} }

View File

@ -3,7 +3,6 @@ package com.eu.habbo.habbohotel.items.interactions.wired.triggers;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.items.ICycleable; import com.eu.habbo.habbohotel.items.ICycleable;
import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect;
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger; import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings; import com.eu.habbo.habbohotel.items.interactions.wired.WiredSettings;
import com.eu.habbo.habbohotel.items.interactions.wired.WiredTriggerReset; import com.eu.habbo.habbohotel.items.interactions.wired.WiredTriggerReset;
@ -12,7 +11,6 @@ import com.eu.habbo.habbohotel.rooms.RoomUnit;
import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredHandler;
import com.eu.habbo.habbohotel.wired.WiredTriggerType; import com.eu.habbo.habbohotel.wired.WiredTriggerType;
import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.ServerMessage;
import gnu.trove.procedure.TObjectProcedure;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@ -88,14 +86,11 @@ public class WiredTriggerRepeaterLong extends InteractionWiredTrigger implements
if (!this.isTriggeredByRoomUnit()) { if (!this.isTriggeredByRoomUnit()) {
List<Integer> invalidTriggers = new ArrayList<>(); List<Integer> invalidTriggers = new ArrayList<>();
room.getRoomSpecialTypes().getEffects(this.getX(), this.getY()).forEach(new TObjectProcedure<InteractionWiredEffect>() { room.getRoomSpecialTypes().getEffects(this.getX(), this.getY()).forEach(object -> {
@Override
public boolean execute(InteractionWiredEffect object) {
if (object.requiresTriggeringUser()) { if (object.requiresTriggeringUser()) {
invalidTriggers.add(object.getBaseItem().getSpriteId()); invalidTriggers.add(object.getBaseItem().getSpriteId());
} }
return true; return true;
}
}); });
message.appendInt(invalidTriggers.size()); message.appendInt(invalidTriggers.size());
for (Integer i : invalidTriggers) { for (Integer i : invalidTriggers) {

View File

@ -53,7 +53,7 @@ public class WiredTriggerScoreAchieved extends InteractionWiredTrigger {
} else { } else {
try { try {
this.score = Integer.parseInt(wiredData); this.score = Integer.parseInt(wiredData);
} catch (Exception e) { } catch (Exception ignored) {
} }
} }
} }

View File

@ -85,7 +85,6 @@ public class PetCommand implements Comparable<PetCommand> {
} }
pet.say(pet.petData.randomVocal(PetVocalsType.DISOBEY)); pet.say(pet.petData.randomVocal(PetVocalsType.DISOBEY));
return;
} }
} }
} }

View File

@ -9,7 +9,7 @@ import com.eu.habbo.habbohotel.rooms.RoomUnitStatus;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.threading.runnables.PetClearPosture; import com.eu.habbo.threading.runnables.PetClearPosture;
public class ActionCroak extends PetAction { public class ActionCroak extends ActionVocals {
public ActionCroak() { public ActionCroak() {
super(PetTasks.SPEAK, false); super(PetTasks.SPEAK, false);
this.minimumActionDuration = 2000; this.minimumActionDuration = 2000;
@ -21,19 +21,10 @@ public class ActionCroak extends PetAction {
Emulator.getThreading().run(new PetClearPosture(pet, RoomUnitStatus.CROAK, null, false), this.minimumActionDuration); Emulator.getThreading().run(new PetClearPosture(pet, RoomUnitStatus.CROAK, null, false), this.minimumActionDuration);
if (pet.getHappiness() > 70) petSay(pet);
pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_HAPPY));
else if (pet.getHappiness() < 30)
pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_SAD));
else if (pet.getLevelHunger() > 65)
pet.say(pet.getPetData().randomVocal(PetVocalsType.HUNGRY));
else if (pet.getLevelThirst() > 65)
pet.say(pet.getPetData().randomVocal(PetVocalsType.THIRSTY));
else if (pet.getEnergy() < 25)
pet.say(pet.getPetData().randomVocal(PetVocalsType.TIRED));
else if (pet.getTask() == PetTasks.NEST || pet.getTask() == PetTasks.DOWN)
pet.say(pet.getPetData().randomVocal(PetVocalsType.SLEEPING));
return true; return true;
} }
} }

View File

@ -9,7 +9,7 @@ import com.eu.habbo.habbohotel.rooms.RoomUnitStatus;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.threading.runnables.PetClearPosture; import com.eu.habbo.threading.runnables.PetClearPosture;
public class ActionSpeak extends PetAction { public class ActionSpeak extends ActionVocals {
public ActionSpeak() { public ActionSpeak() {
super(PetTasks.SPEAK, false); super(PetTasks.SPEAK, false);
@ -21,18 +21,7 @@ public class ActionSpeak extends PetAction {
pet.setMuted(false); pet.setMuted(false);
Emulator.getThreading().run(new PetClearPosture(pet, RoomUnitStatus.SPEAK, null, false), 2000); Emulator.getThreading().run(new PetClearPosture(pet, RoomUnitStatus.SPEAK, null, false), 2000);
if (pet.getHappiness() > 70) petSay(pet);
pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_HAPPY));
else if (pet.getHappiness() < 30)
pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_SAD));
else if (pet.getLevelHunger() > 65)
pet.say(pet.getPetData().randomVocal(PetVocalsType.HUNGRY));
else if (pet.getLevelThirst() > 65)
pet.say(pet.getPetData().randomVocal(PetVocalsType.THIRSTY));
else if (pet.getEnergy() < 25)
pet.say(pet.getPetData().randomVocal(PetVocalsType.TIRED));
else if (pet.getTask() == PetTasks.NEST || pet.getTask() == PetTasks.DOWN)
pet.say(pet.getPetData().randomVocal(PetVocalsType.SLEEPING));
return true; return true;
} }

View File

@ -0,0 +1,28 @@
package com.eu.habbo.habbohotel.pets.actions;
import com.eu.habbo.habbohotel.pets.Pet;
import com.eu.habbo.habbohotel.pets.PetAction;
import com.eu.habbo.habbohotel.pets.PetTasks;
import com.eu.habbo.habbohotel.pets.PetVocalsType;
public abstract class ActionVocals extends PetAction {
protected ActionVocals(PetTasks petTask, boolean stopsPetWalking) {
super(petTask, stopsPetWalking);
}
protected void petSay(Pet pet) {
if (pet.getHappiness() > 70)
pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_HAPPY));
else if (pet.getHappiness() < 30)
pet.say(pet.getPetData().randomVocal(PetVocalsType.GENERIC_SAD));
else if (pet.getLevelHunger() > 65)
pet.say(pet.getPetData().randomVocal(PetVocalsType.HUNGRY));
else if (pet.getLevelThirst() > 65)
pet.say(pet.getPetData().randomVocal(PetVocalsType.THIRSTY));
else if (pet.getEnergy() < 25)
pet.say(pet.getPetData().randomVocal(PetVocalsType.TIRED));
else if (pet.getTask() == PetTasks.NEST || pet.getTask() == PetTasks.DOWN)
pet.say(pet.getPetData().randomVocal(PetVocalsType.SLEEPING));
}
}

View File

@ -18,7 +18,7 @@ public class Poll {
@Setter @Setter
private int lastQuestionId; private int lastQuestionId;
private ArrayList<PollQuestion> questions; private final ArrayList<PollQuestion> questions;
public Poll(ResultSet set) throws SQLException { public Poll(ResultSet set) throws SQLException {
this.id = set.getInt("id"); this.id = set.getInt("id");

View File

@ -14,7 +14,7 @@ public class CustomRoomLayout extends RoomLayout implements Runnable {
private final int roomId; private final int roomId;
private boolean needsUpdate; private boolean needsUpdate;
public CustomRoomLayout(ResultSet set, Room room) throws SQLException { public CustomRoomLayout(ResultSet set, Room room) {
super(set, room); super(set, room);
this.roomId = room.getId(); this.roomId = room.getId();

View File

@ -85,7 +85,7 @@ public class RoomChatMessage implements Runnable, ISerialize, DatabaseLoggable {
this.targetHabbo = chatMessage.getTargetHabbo(); this.targetHabbo = chatMessage.getTargetHabbo();
this.bubble = chatMessage.getBubble(); this.bubble = chatMessage.getBubble();
this.roomUnitId = chatMessage.roomUnitId; this.roomUnitId = chatMessage.roomUnitId;
this.emotion = (byte) chatMessage.getEmotion(); this.emotion = chatMessage.getEmotion();
} }
public RoomChatMessage(String message, RoomUnit roomUnit, RoomChatMessageBubbles bubble) { public RoomChatMessage(String message, RoomUnit roomUnit, RoomChatMessageBubbles bubble) {

View File

@ -331,6 +331,7 @@ public class HabboInfo implements Runnable {
roomUnit.stopWalking(); roomUnit.stopWalking();
if (room != null) if (room != null)
room.sendComposer(new UserUpdateComposer(roomUnit).compose()); room.sendComposer(new UserUpdateComposer(roomUnit).compose());
List<RoomTile> availableTiles = isRemoving ? new ArrayList<>() : this.getCurrentRoom().getLayout().getWalkableTilesAround(roomUnit.getCurrentLocation()); List<RoomTile> availableTiles = isRemoving ? new ArrayList<>() : this.getCurrentRoom().getLayout().getWalkableTilesAround(roomUnit.getCurrentLocation());
RoomTile tile = availableTiles.isEmpty() ? roomUnit.getCurrentLocation() : availableTiles.get(0); RoomTile tile = availableTiles.isEmpty() ? roomUnit.getCurrentLocation() : availableTiles.get(0);

View File

@ -37,6 +37,7 @@ import java.util.List;
@Slf4j @Slf4j
public abstract class HabboItem implements Runnable, IEventTriggers { public abstract class HabboItem implements Runnable, IEventTriggers {
@SuppressWarnings("rawtypes")
private static final Class[] TOGGLING_INTERACTIONS = new Class[]{ private static final Class[] TOGGLING_INTERACTIONS = new Class[]{
InteractionGameTimer.class, InteractionGameTimer.class,
InteractionWired.class, InteractionWired.class,

View File

@ -176,7 +176,7 @@ public class PacketManager {
return; return;
} }
final MessageHandler handler = handlerClass.newInstance(); final MessageHandler handler = handlerClass.getDeclaredConstructor().newInstance();
if (handler.getRatelimit() > 0) { if (handler.getRatelimit() > 0) {
if (client.messageTimestamps.containsKey(handlerClass) && System.currentTimeMillis() - client.messageTimestamps.get(handlerClass) < handler.getRatelimit()) { if (client.messageTimestamps.containsKey(handlerClass) && System.currentTimeMillis() - client.messageTimestamps.get(handlerClass) < handler.getRatelimit()) {

Some files were not shown because too many files have changed in this diff Show More