Merge branch 'feature/code-cleanup' into 'ms4/dev'

Use Lombok, use math functions, encapsulate fields, use some java18 features,...

See merge request morningstar/Arcturus-Community!23
This commit is contained in:
John 2023-01-09 23:04:13 +00:00
commit dacf69657d
1065 changed files with 6044 additions and 10643 deletions

View File

@ -16,7 +16,7 @@ Arcturus Morningstar is as a fork of Arcturus Emulator by TheGeneral. Arcturus M
[![image](https://img.shields.io/discord/557240155040251905?style=for-the-badge&logo=discord&color=7289DA&label=KREWS&logoColor=fff)](https://discord.gg/BzfFsTp)
## Download ##
[![image](https://img.shields.io/badge/STABLE%20RELEASES-3.0.0-success.svg?style=for-the-badge&logo=appveyor)](https://git.krews.org/morningstar/Arcturus-Community/-/releases)
[![image](https://img.shields.io/badge/STABLE%20RELEASES-3.5.1-success.svg?style=for-the-badge&logo=appveyor)](https://git.krews.org/morningstar/Arcturus-Community/-/releases)
[![image](https://img.shields.io/badge/DEVELOPER%20PREVIEW-4.0.0-red.svg?style=for-the-badge&logo=appveyor)](https://git.krews.org/morningstar/Arcturus-Community/-/jobs) *

21
pom.xml
View File

@ -34,8 +34,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>18</source>
<target>18</target>
</configuration>
</plugin>
@ -92,21 +92,21 @@
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.49.Final</version>
<version>4.1.86.Final</version>
</dependency>
<!-- GSON -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
<version>2.8.9</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
@ -143,14 +143,14 @@
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
<version>1.15.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<version>1.2.9</version>
<scope>compile</scope>
</dependency>
@ -165,5 +165,12 @@
<artifactId>joda-time</artifactId>
<version>2.10.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,2 @@
-- Trade Currency Setting
INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('redeem.currency.trade', '1');

View File

@ -17,6 +17,7 @@ import com.eu.habbo.plugin.events.emulator.EmulatorStartShutdownEvent;
import com.eu.habbo.plugin.events.emulator.EmulatorStoppedEvent;
import com.eu.habbo.threading.ThreadPooling;
import com.eu.habbo.util.imager.badges.BadgeImager;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -29,6 +30,7 @@ import java.util.concurrent.ThreadLocalRandom;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
public final class Emulator {
public static final int MAJOR = 4;
@ -45,14 +47,17 @@ public final class Emulator {
private static final Logger LOGGER = LoggerFactory.getLogger(Emulator.class);
private static final String OS_NAME = (System.getProperty("os.name") != null ? System.getProperty("os.name") : "Unknown");
private static final String CLASS_PATH = (System.getProperty("java.class.path") != null ? System.getProperty("java.class.path") : "Unknown");
private static final String logo =
"\n" +
"███╗ ███╗ ██████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ███████╗████████╗ █████╗ ██████╗ \n" +
"████╗ ████║██╔═══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗\n" +
"██╔████╔██║██║ ██║██████╔╝██╔██╗ ██║██║██╔██╗ ██║██║ ███╗███████╗ ██║ ███████║██████╔╝\n" +
"██║╚██╔╝██║██║ ██║██╔══██╗██║╚██╗██║██║██║╚██╗██║██║ ██║╚════██║ ██║ ██╔══██║██╔══██╗\n" +
"██║ ╚═╝ ██║╚██████╔╝██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝███████║ ██║ ██║ ██║██║ ██║\n" +
"╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝\n";
"""
\s
""";
@ -64,7 +69,6 @@ public final class Emulator {
private static GameServer gameServer;
private static RCONServer rconServer;
private static CameraClient cameraClient;
private static Logging logging;
private static Database database;
private static DatabaseLogger databaseLogger;
private static ThreadPooling threading;
@ -90,7 +94,7 @@ public final class Emulator {
scanner.nextLine();
}
public static void main(String[] args) throws Exception {
public static void main(String[] args) {
try {
// Check if running on Windows and not in IntelliJ.
// If so, we need to reconfigure the console appender and enable Jansi for colors.
@ -107,7 +111,6 @@ public final class Emulator {
setBuild();
Emulator.stopped = false;
ConsoleCommand.load();
Emulator.logging = new Logging();
System.out.println(logo);
@ -116,11 +119,11 @@ public final class Emulator {
System.out.println();
promptEnterKey();
}
LOGGER.info("eek. Has it really been a year?");
LOGGER.info("This project is for educational purposes only. This Emulator is an open-source fork of Arcturus created by TheGeneral.");
LOGGER.info("Version: {}", version);
LOGGER.info("Build: {}", build);
LOGGER.info("Follow our development at https://git.krews.org/morningstar/Arcturus-Community");
log.info("eek. Has it really been a year?");
log.info("This project is for educational purposes only. This Emulator is an open-source fork of Arcturus created by TheGeneral.");
log.info("Version: {}", version);
log.info("Build: {}", build);
log.info("Follow our development at https://git.krews.org/morningstar/Arcturus-Community");
long startTime = System.nanoTime();
@ -153,16 +156,16 @@ public final class Emulator {
Emulator.rconServer.connect();
Emulator.badgeImager = new BadgeImager();
LOGGER.info("Arcturus Morningstar has successfully loaded.");
LOGGER.info("System launched in: {}ms. Using {} threads!", (System.nanoTime() - startTime) / 1e6, Runtime.getRuntime().availableProcessors() * 2);
LOGGER.info("Memory: {}/{}MB", (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024), (runtime.freeMemory()) / (1024 * 1024));
log.info("Arcturus Morningstar has successfully loaded.");
log.info("System launched in: {}ms. Using {} threads!", (System.nanoTime() - startTime) / 1e6, Runtime.getRuntime().availableProcessors() * 2);
log.info("Memory: {}/{}MB", (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024), (runtime.freeMemory()) / (1024 * 1024));
Emulator.debugging = Emulator.getConfig().getBoolean("debug.mode");
if (debugging) {
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.DEBUG);
LOGGER.debug("Debugging enabled.");
log.debug("Debugging enabled.");
}
Emulator.getPluginManager().fireEvent(new EmulatorLoadedEvent());
@ -170,7 +173,7 @@ public final class Emulator {
Emulator.timeStarted = getIntUnixTimestamp();
if (Emulator.getConfig().getInt("runtime.threads") < (Runtime.getRuntime().availableProcessors() * 2)) {
LOGGER.warn("Emulator settings runtime.threads ({}) can be increased to ({}) to possibly increase performance.",
log.warn("Emulator settings runtime.threads ({}) can be increased to ({}) to possibly increase performance.",
Emulator.getConfig().getInt("runtime.threads"),
Runtime.getRuntime().availableProcessors() * 2);
}
@ -193,7 +196,7 @@ public final class Emulator {
System.out.println("Waiting for command: ");
} catch (Exception e) {
if (!(e instanceof IOException && e.getMessage().equals("Bad file descriptor"))) {
LOGGER.error("Error while reading command", e);
log.error("Error while reading command", e);
}
}
}
@ -234,7 +237,7 @@ public final class Emulator {
Emulator.isShuttingDown = true;
Emulator.isReady = false;
LOGGER.info("Stopping Arcturus Morningstar {}", version);
log.info("Stopping Arcturus Morningstar {}", version);
try {
if (Emulator.getPluginManager() != null)
@ -285,7 +288,7 @@ public final class Emulator {
} catch (Exception ignored) {
}
LOGGER.info("Stopped Arcturus Morningstar {}", version);
log.info("Stopped Arcturus Morningstar {}", version);
if (Emulator.database != null) {
Emulator.getDatabase().dispose();
@ -332,13 +335,6 @@ public final class Emulator {
return rconServer;
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public static Logging getLogging() {
return logging;
}
public static ThreadPooling getThreading() {
return threading;
@ -384,7 +380,7 @@ public final class Emulator {
int totalSeconds = 0;
Matcher m = Pattern.compile("(([0-9]*) (second|minute|hour|day|week|month|year))").matcher(timeString);
Map<String,Integer> map = new HashMap<String,Integer>();
Map<String,Integer> map = new HashMap<>();
map.put("second", 1);
map.put("minute", 60);
map.put("hour", 3600);
@ -406,13 +402,12 @@ public final class Emulator {
}
public static Date modifyDate(Date date, String timeString) {
int totalSeconds = 0;
Calendar c = Calendar.getInstance();
c.setTime(date);
Matcher m = Pattern.compile("(([0-9]*) (second|minute|hour|day|week|month|year))").matcher(timeString);
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> map = new HashMap<>();
map.put("second", Calendar.SECOND);
map.put("minute", Calendar.MINUTE);
map.put("hour", Calendar.HOUR);
@ -437,7 +432,7 @@ public final class Emulator {
String res = "";
Date aux = stringToDate("1970-01-01 00:00:00");
if(aux == null) return null;
Timestamp aux1 = dateToTimeStamp(aux);
Timestamp aux2 = dateToTimeStamp(date);
long difference = aux2.getTime() - aux1.getTime();
@ -451,7 +446,7 @@ public final class Emulator {
try {
res = format.parse(date);
} catch (Exception e) {
LOGGER.error("Error parsing date", e);
log.error("Error parsing date", e);
}
return res;
}

View File

@ -7,8 +7,7 @@ import com.eu.habbo.messages.incoming.friends.HabboSearchEvent;
import com.eu.habbo.messages.incoming.navigator.RoomTextSearchEvent;
import com.eu.habbo.messages.outgoing.users.UserObjectComposer;
import com.eu.habbo.threading.runnables.AchievementUpdater;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -16,10 +15,9 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Map;
@Slf4j
public class CleanerThread implements Runnable {
private static final Logger LOGGER = LoggerFactory.getLogger(CleanerThread.class);
private static final int DELAY = 10000;
private static final int RELOAD_HALL_OF_FAME = 1800;
private static final int RELOAD_NEWS_LIST = 3600;
@ -128,10 +126,10 @@ public class CleanerThread implements Runnable {
statement.execute("DELETE FROM users_effects WHERE total <= 0");
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
LOGGER.info("Database -> Cleaned!");
log.info("Database -> Cleaned!");
}
public void refillDailyRespects() {
@ -140,13 +138,13 @@ public class CleanerThread implements Runnable {
statement.setInt(2, Emulator.getConfig().getInt("hotel.daily.respect.pets"));
statement.executeUpdate();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
if (Emulator.isReady) {
for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
habbo.getHabboStats().respectPointsToGive = Emulator.getConfig().getInt("hotel.daily.respect");
habbo.getHabboStats().petRespectPointsToGive = Emulator.getConfig().getInt("hotel.daily.respect.pets");
habbo.getHabboStats().setRespectPointsToGive(Emulator.getConfig().getInt("hotel.daily.respect"));
habbo.getHabboStats().setPetRespectPointsToGive(Emulator.getConfig().getInt("hotel.daily.respect.pets"));
habbo.getClient().sendResponse(new UserObjectComposer(habbo));
}
}
@ -162,7 +160,7 @@ public class CleanerThread implements Runnable {
habbo.clearCaches();
}
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
}

View File

@ -2,10 +2,12 @@ package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.commands.Command;
import lombok.AllArgsConstructor;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@AllArgsConstructor
public class CommandLog implements DatabaseLoggable {
private static final String INSERT_QUERY = "INSERT INTO commandlogs (`user_id`, `timestamp`, `command`, `params`, `succes`) VALUES (?, ?, ?, ?, ?)";
@ -16,13 +18,6 @@ public class CommandLog implements DatabaseLoggable {
private final String params;
private final boolean succes;
public CommandLog(int userId, Command command, String params, boolean succes) {
this.userId = userId;
this.command = command;
this.params = params;
this.succes = succes;
}
@Override
public String getQuery() {
return CommandLog.INSERT_QUERY;

View File

@ -3,21 +3,18 @@ package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import com.eu.habbo.plugin.events.emulator.EmulatorConfigUpdatedEvent;
import gnu.trove.map.hash.THashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.sql.*;
import java.util.Map;
import java.util.Properties;
@Slf4j
public class ConfigurationManager {
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationManager.class);
private final Properties properties;
private final String configurationPath;
public boolean loaded = false;
@ -47,11 +44,11 @@ public class ConfigurationManager {
if (!useEnvVarsForDbConnection) {
try {
File f = new File(this.configurationPath);
input = new FileInputStream(f);
input = Files.newInputStream(f.toPath());
this.properties.load(input);
} catch (IOException ex) {
LOGGER.error("Failed to load config file.", ex);
log.error("Failed to load config file.", ex);
ex.printStackTrace();
} finally {
if (input != null) {
@ -92,7 +89,7 @@ public class ConfigurationManager {
String envValue = System.getenv(entry.getValue());
if (envValue == null || envValue.length() == 0) {
LOGGER.info("Cannot find environment-value for variable `" + entry.getValue() + "`");
log.info("Cannot find environment-value for variable `" + entry.getValue() + "`");
} else {
this.properties.setProperty(entry.getKey(), envValue);
}
@ -104,7 +101,7 @@ public class ConfigurationManager {
}
this.isLoading = false;
LOGGER.info("Configuration Manager -> Loaded!");
log.info("Configuration Manager -> Loaded!");
if (Emulator.getPluginManager() != null) {
Emulator.getPluginManager().fireEvent(new EmulatorConfigUpdatedEvent());
@ -112,7 +109,7 @@ public class ConfigurationManager {
}
public void loadFromDatabase() {
LOGGER.info("Loading configuration from database...");
log.info("Loading configuration from database...");
long millis = System.currentTimeMillis();
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); Statement statement = connection.createStatement()) {
@ -124,10 +121,10 @@ public class ConfigurationManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
LOGGER.info("Configuration -> loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
log.info("Configuration -> loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
}
public void saveToDatabase() {
@ -138,7 +135,7 @@ public class ConfigurationManager {
statement.executeUpdate();
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -153,7 +150,7 @@ public class ConfigurationManager {
return defaultValue;
if (!this.properties.containsKey(key)) {
LOGGER.error("Config key not found {}", key);
log.error("Config key not found {}", key);
}
return this.properties.getProperty(key, defaultValue);
}
@ -169,7 +166,7 @@ public class ConfigurationManager {
try {
return (this.getValue(key, "0").equals("1")) || (this.getValue(key, "false").equals("true"));
} catch (Exception e) {
LOGGER.error("Failed to parse key {} with value '{}' to type boolean.", key, this.getValue(key));
log.error("Failed to parse key {} with value '{}' to type boolean.", key, this.getValue(key));
}
return defaultValue;
}
@ -185,15 +182,11 @@ public class ConfigurationManager {
try {
return Integer.parseInt(this.getValue(key, defaultValue.toString()));
} catch (Exception e) {
LOGGER.error("Failed to parse key {} with value '{}' to type integer.", key, this.getValue(key));
log.error("Failed to parse key {} with value '{}' to type integer.", key, this.getValue(key));
}
return defaultValue;
}
public double getDouble(String key) {
return this.getDouble(key, 0.0);
}
public double getDouble(String key, Double defaultValue) {
if (this.isLoading)
return defaultValue;
@ -201,7 +194,7 @@ public class ConfigurationManager {
try {
return Double.parseDouble(this.getValue(key, defaultValue.toString()));
} catch (Exception e) {
LOGGER.error("Failed to parse key {} with value '{}' to type double.", key, this.getValue(key));
log.error("Failed to parse key {} with value '{}' to type double.", key, this.getValue(key));
}
return defaultValue;
@ -220,7 +213,7 @@ public class ConfigurationManager {
statement.setString(2, value);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
this.update(key, value);

View File

@ -2,14 +2,13 @@ package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
public class CreditsScheduler extends Scheduler {
private static final Logger LOGGER = LoggerFactory.getLogger(CreditsScheduler.class);
public static boolean IGNORE_HOTEL_VIEW;
public static boolean IGNORE_IDLED;
@ -52,10 +51,10 @@ public class CreditsScheduler extends Scheduler {
if (habbo.getRoomUnit().isIdle() && IGNORE_IDLED)
continue;
habbo.giveCredits((int)(habbo.getHabboInfo().getRank().getCreditsTimerAmount() * (habbo.getHabboStats().hasActiveClub() ? HC_MODIFIER : 1.0)));
habbo.giveCredits((int) (habbo.getHabboInfo().getRank().getCreditsTimerAmount() * (habbo.getHabboStats().hasActiveClub() ? HC_MODIFIER : 1.0)));
}
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
}

View File

@ -1,5 +1,10 @@
package com.eu.habbo.core;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class CryptoConfig {
private final boolean enabled;
@ -7,27 +12,4 @@ public class CryptoConfig {
private final String modulus;
private final String privateExponent;
public CryptoConfig(boolean enabled, String exponent, String modulus, String privateExponent) {
this.enabled = enabled;
this.exponent = exponent;
this.modulus = modulus;
this.privateExponent = privateExponent;
}
public boolean isEnabled() {
return enabled;
}
public String getExponent() {
return exponent;
}
public String getModulus() {
return modulus;
}
public String getPrivateExponent() {
return privateExponent;
}
}

View File

@ -1,18 +1,15 @@
package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.ConcurrentLinkedQueue;
@Slf4j
public class DatabaseLogger {
private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseLogger.class);
private final ConcurrentLinkedQueue<DatabaseLoggable> loggables = new ConcurrentLinkedQueue<>();
public void store(DatabaseLoggable loggable) {
@ -39,7 +36,7 @@ public class DatabaseLogger {
}
} catch (SQLException e) {
LOGGER.error("Exception caught while saving loggables to database.", e);
log.error("Exception caught while saving loggables to database.", e);
}
}

View File

@ -1,8 +1,7 @@
package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.io.PrintWriter;
@ -10,9 +9,9 @@ import java.io.StringWriter;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Slf4j
public class ErrorLog implements DatabaseLoggable {
private static final Logger LOGGER = LoggerFactory.getLogger(ErrorLog.class);
private static final String QUERY = "INSERT INTO emulator_errors (timestamp, version, build_hash, type, stacktrace) VALUES (?, ?, ?, ?, ?)";
public final String version;
@ -38,7 +37,7 @@ public class ErrorLog implements DatabaseLoggable {
pw.close();
sw.close();
} catch (IOException e1) {
LOGGER.error("Exception caught", e1);
log.error("Exception caught", e1);
}
}

View File

@ -2,15 +2,12 @@ package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
public class GotwPointsScheduler extends Scheduler {
private static final Logger LOGGER = LoggerFactory.getLogger(GotwPointsScheduler.class);
public static boolean IGNORE_HOTEL_VIEW;
public static boolean IGNORE_IDLED;
public static String GOTW_POINTS_NAME;
@ -68,7 +65,7 @@ public class GotwPointsScheduler extends Scheduler {
}
}
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
}

View File

@ -1,97 +0,0 @@
package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.SQLException;
public class Logging {
private static final Logger LOGGER = LoggerFactory.getLogger("LegacyLogger");
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logStart(Object line) {
LOGGER.info("[LOADING] {}", line);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logShutdownLine(Object line) {
LOGGER.info("[SHUTDOWN] {}", line);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logUserLine(Object line) {
LOGGER.info("[USER] {}", line);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logDebugLine(Object line) {
LOGGER.debug("[DEBUG] {}", line);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logPacketLine(Object line) {
if (Emulator.getConfig().getBoolean("debug.show.packets")) {
LOGGER.debug("[PACKET] {}", line);
}
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logUndefinedPacketLine(Object line) {
if (Emulator.getConfig().getBoolean("debug.show.packets.undefined")) {
LOGGER.debug("[PACKET] [UNDEFINED] {}", line);
}
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logErrorLine(Object line) {
LOGGER.error("[ERROR] {}", line);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logSQLException(SQLException e) {
LOGGER.error("[ERROR] SQLException", e);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void logPacketError(Object e) {
LOGGER.error("[ERROR] PacketError {}", e);
}
/**
* @deprecated Do not use. Please use LoggerFactory.getLogger(YourClass.class) to log.
*/
@Deprecated
public void handleException(Exception e) {
LOGGER.error("[ERROR] Exception", e);
}
}

View File

@ -2,15 +2,12 @@ package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
public class PixelScheduler extends Scheduler {
private static final Logger LOGGER = LoggerFactory.getLogger(PixelScheduler.class);
public static boolean IGNORE_HOTEL_VIEW;
public static boolean IGNORE_IDLED;
public static double HC_MODIFIER;
@ -52,7 +49,7 @@ public class PixelScheduler extends Scheduler {
habbo.givePixels((int)(habbo.getHabboInfo().getRank().getPixelsTimerAmount() * (habbo.getHabboStats().hasActiveClub() ? HC_MODIFIER : 1.0)));
}
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
}

View File

@ -2,14 +2,13 @@ package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
public class PointsScheduler extends Scheduler {
private static final Logger LOGGER = LoggerFactory.getLogger(PointsScheduler.class);
public static boolean IGNORE_HOTEL_VIEW;
public static boolean IGNORE_IDLED;
@ -55,7 +54,7 @@ public class PointsScheduler extends Scheduler {
habbo.givePoints((int)(habbo.getHabboInfo().getRank().getDiamondsTimerAmount() * (habbo.getHabboStats().hasActiveClub() ? HC_MODIFIER : 1.0)));
}
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
}

View File

@ -4,19 +4,15 @@ import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.MessageComposer;
import com.eu.habbo.messages.outgoing.Outgoing;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class RoomUserPetComposer extends MessageComposer {
private final int petType;
private final int race;
private final String color;
private final Habbo habbo;
public RoomUserPetComposer(int petType, int race, String color, Habbo habbo) {
this.petType = petType;
this.race = race;
this.color = color;
this.habbo = habbo;
}
@Override
protected ServerMessage composeInternal() {

View File

@ -1,16 +1,13 @@
package com.eu.habbo.core;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.Properties;
@Slf4j
public class TextsManager {
private static final Logger LOGGER = LoggerFactory.getLogger(TextsManager.class);
private final Properties texts;
public TextsManager() {
@ -21,9 +18,9 @@ public class TextsManager {
try {
this.reload();
LOGGER.info("Texts Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
log.info("Texts Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
@ -37,7 +34,7 @@ public class TextsManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -47,7 +44,7 @@ public class TextsManager {
public String getValue(String key, String defaultValue) {
if (!this.texts.containsKey(key)) {
LOGGER.error("Text key not found: {}", key);
log.error("Text key not found: {}", key);
}
return this.texts.getProperty(key, defaultValue);
}
@ -60,7 +57,7 @@ public class TextsManager {
try {
return (this.getValue(key, "0").equals("1")) || (this.getValue(key, "false").equals("true"));
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
return defaultValue;
}
@ -73,7 +70,7 @@ public class TextsManager {
try {
return Integer.parseInt(this.getValue(key, defaultValue.toString()));
} catch (NumberFormatException e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
return defaultValue;
}
@ -91,7 +88,7 @@ public class TextsManager {
statement.setString(2, value);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
this.update(key, value);

View File

@ -1,11 +1,10 @@
package com.eu.habbo.core.consolecommands;
import gnu.trove.map.hash.THashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public abstract class ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleCommand.class);
private static final THashMap<String, ConsoleCommand> commands = new THashMap<>();
public final String key;
@ -45,14 +44,14 @@ public abstract class ConsoleCommand {
command.handle(message);
return true;
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
} else {
LOGGER.info("Unknown Console Command " + message[0]);
LOGGER.info("Commands Available (" + commands.size() + "): ");
log.info("Unknown Console Command " + message[0]);
log.info("Commands Available (" + commands.size() + "): ");
for (ConsoleCommand c : commands.values()) {
LOGGER.info(c.key + " - " + c.usage);
log.info(c.key + " - " + c.usage);
}
}
}

View File

@ -2,13 +2,12 @@ package com.eu.habbo.core.consolecommands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.catalog.CatalogManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.TimeUnit;
@Slf4j
public class ConsoleInfoCommand extends ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleInfoCommand.class);
public ConsoleInfoCommand() {
super("info", "Show current statistics.");
@ -22,21 +21,21 @@ public class ConsoleInfoCommand extends ConsoleCommand {
long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60);
long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60);
LOGGER.info("Emulator version: " + Emulator.version);
LOGGER.info("Emulator build: " + Emulator.build);
log.info("Emulator version: " + Emulator.version);
log.info("Emulator build: " + Emulator.build);
LOGGER.info("");
log.info("");
LOGGER.info("Hotel Statistics");
LOGGER.info("- Users: " + Emulator.getGameEnvironment().getHabboManager().getOnlineCount());
LOGGER.info("- Rooms: " + Emulator.getGameEnvironment().getRoomManager().getActiveRooms().size());
LOGGER.info("- Shop: " + Emulator.getGameEnvironment().getCatalogManager().catalogPages.size() + " pages and " + CatalogManager.catalogItemAmount + " items.");
LOGGER.info("- Furni: " + Emulator.getGameEnvironment().getItemManager().getItems().size() + " items.");
LOGGER.info("");
LOGGER.info("Server Statistics");
LOGGER.info("- Uptime: " + day + (day > 1 ? " days, " : " day, ") + hours + (hours > 1 ? " hours, " : " hour, ") + minute + (minute > 1 ? " minutes, " : " minute, ") + second + (second > 1 ? " seconds!" : " second!"));
LOGGER.info("- RAM Usage: " + (Emulator.getRuntime().totalMemory() - Emulator.getRuntime().freeMemory()) / (1024 * 1024) + "/" + (Emulator.getRuntime().freeMemory()) / (1024 * 1024) + "MB");
LOGGER.info("- CPU Cores: " + Emulator.getRuntime().availableProcessors());
LOGGER.info("- Total Memory: " + Emulator.getRuntime().maxMemory() / (1024 * 1024) + "MB");
log.info("Hotel Statistics");
log.info("- Users: " + Emulator.getGameEnvironment().getHabboManager().getOnlineCount());
log.info("- Rooms: " + Emulator.getGameEnvironment().getRoomManager().getActiveRooms().size());
log.info("- Shop: " + Emulator.getGameEnvironment().getCatalogManager().catalogPages.size() + " pages and " + CatalogManager.catalogItemAmount + " items.");
log.info("- Furni: " + Emulator.getGameEnvironment().getItemManager().getItems().size() + " items.");
log.info("");
log.info("Server Statistics");
log.info("- Uptime: " + day + (day > 1 ? " days, " : " day, ") + hours + (hours > 1 ? " hours, " : " hour, ") + minute + (minute > 1 ? " minutes, " : " minute, ") + second + (second > 1 ? " seconds!" : " second!"));
log.info("- RAM Usage: " + (Emulator.getRuntime().totalMemory() - Emulator.getRuntime().freeMemory()) / (1024 * 1024) + "/" + (Emulator.getRuntime().freeMemory()) / (1024 * 1024) + "MB");
log.info("- CPU Cores: " + Emulator.getRuntime().availableProcessors());
log.info("- Total Memory: " + Emulator.getRuntime().maxMemory() / (1024 * 1024) + "MB");
}
}

View File

@ -1,11 +1,10 @@
package com.eu.habbo.core.consolecommands;
import com.eu.habbo.networking.camera.CameraClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ConsoleReconnectCameraCommand extends ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleReconnectCameraCommand.class);
public ConsoleReconnectCameraCommand() {
super("camera", "Attempt to reconnect to the camera server.");
@ -13,7 +12,7 @@ public class ConsoleReconnectCameraCommand extends ConsoleCommand {
@Override
public void handle(String[] args) throws Exception {
LOGGER.info("Connecting to the camera...");
log.info("Connecting to the camera...");
CameraClient.attemptReconnect = true;
}
}

View File

@ -3,11 +3,10 @@ package com.eu.habbo.core.consolecommands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ConsoleTestCommand extends ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleTestCommand.class);
public ConsoleTestCommand() {
super("test", "This is just a test.");
@ -16,7 +15,7 @@ public class ConsoleTestCommand extends ConsoleCommand {
@Override
public void handle(String[] args) throws Exception {
if (Emulator.debugging) {
LOGGER.info("This is a test command for live debugging.");
log.info("This is a test command for live debugging.");
//AchievementManager.progressAchievement(4, Emulator.getGameEnvironment().getAchievementManager().getAchievement("AllTimeHotelPresence"), 30);

View File

@ -1,11 +1,10 @@
package com.eu.habbo.core.consolecommands;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ShowInteractionsCommand extends ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ShowInteractionsCommand.class);
public ShowInteractionsCommand() {
super("interactions", "Show a list of available furniture interactions.");
@ -14,7 +13,7 @@ public class ShowInteractionsCommand extends ConsoleCommand {
@Override
public void handle(String[] args) throws Exception {
for (String interaction : Emulator.getGameEnvironment().getItemManager().getInteractionList()) {
LOGGER.info(interaction);
log.info(interaction);
}
}
}

View File

@ -1,11 +1,10 @@
package com.eu.habbo.core.consolecommands;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ShowRCONCommands extends ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ShowRCONCommands.class);
public ShowRCONCommands() {
super("rconcommands", "Show a list of all RCON commands");
@ -14,7 +13,7 @@ public class ShowRCONCommands extends ConsoleCommand {
@Override
public void handle(String[] args) throws Exception {
for (String command : Emulator.getRconServer().getCommands()) {
LOGGER.info(command);
log.info(command);
}
}
}

View File

@ -1,11 +1,10 @@
package com.eu.habbo.core.consolecommands;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ThankyouArcturusCommand extends ConsoleCommand {
private static final Logger LOGGER = LoggerFactory.getLogger(ThankyouArcturusCommand.class);
public ThankyouArcturusCommand() {
super("thankyou", "A thankyou message.");
@ -13,31 +12,31 @@ public class ThankyouArcturusCommand extends ConsoleCommand {
@Override
public void handle(String[] args) throws Exception {
LOGGER.info("Arcturus Morningstar is an opensource community fork of Arcturus Emulator by TheGeneral");
LOGGER.info("Thankyou to the following people who have helped with it's development:");
LOGGER.info("TheGeneral - For Creating Arcturus.");
LOGGER.info("Capheus - Decompilation");
LOGGER.info("Beny - Lead Developer");
LOGGER.info("Alejandro - Lead Developer");
LOGGER.info("Harmonic - Developer");
LOGGER.info("ArpyAge - Developer");
LOGGER.info("Mike - Developer");
LOGGER.info("Skeletor - Developer");
LOGGER.info("zGrav - Developer");
LOGGER.info("Swirny - Developer");
LOGGER.info("Quadral - Developer");
LOGGER.info("Dome - Developer");
LOGGER.info("Necmi - Developer");
LOGGER.info("Oliver - Support");
LOGGER.info("Rasmus - Support");
LOGGER.info("Layne - Support");
LOGGER.info("Bill - Support");
LOGGER.info("Harmony - Support");
LOGGER.info("Ridge - Catalogue");
LOGGER.info("Tenshie - Catalogue");
LOGGER.info("Wulles - Catalogue");
LOGGER.info("Gizmo - Catalogue");
LOGGER.info("TheJava - Motivation");
LOGGER.info("The Entire Krews.org Community.");
log.info("Arcturus Morningstar is an opensource community fork of Arcturus Emulator by TheGeneral");
log.info("Thankyou to the following people who have helped with it's development:");
log.info("TheGeneral - For Creating Arcturus.");
log.info("Capheus - Decompilation");
log.info("Beny - Lead Developer");
log.info("Alejandro - Lead Developer");
log.info("Harmonic - Developer");
log.info("ArpyAge - Developer");
log.info("Mike - Developer");
log.info("Skeletor - Developer");
log.info("zGrav - Developer");
log.info("Swirny - Developer");
log.info("Quadral - Developer");
log.info("Dome - Developer");
log.info("Necmi - Developer");
log.info("Oliver - Support");
log.info("Rasmus - Support");
log.info("Layne - Support");
log.info("Bill - Support");
log.info("Harmony - Support");
log.info("Ridge - Catalogue");
log.info("Tenshie - Catalogue");
log.info("Wulles - Catalogue");
log.info("Gizmo - Catalogue");
log.info("TheJava - Motivation");
log.info("The Entire Krews.org Community.");
}
}

View File

@ -83,7 +83,7 @@ public class HabboDiffieHellman {
this.DHPrime = decryptBigInteger(signedPrime);
this.DHGenerator = decryptBigInteger(signedGenerator);
if (this.DHPrime == null || this.DHGenerator == null) {
if (this.DHPrime == null) {
throw new HabboCryptoException("DHPrime or DHGenerator was null.");
}

View File

@ -5,8 +5,7 @@ import com.eu.habbo.core.ConfigurationManager;
import com.zaxxer.hikari.HikariDataSource;
import gnu.trove.map.hash.THashMap;
import gnu.trove.set.hash.THashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -15,10 +14,8 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
public class Database {
private static final Logger LOGGER = LoggerFactory.getLogger(Database.class);
private HikariDataSource dataSource;
private DatabasePool databasePool;
@ -30,21 +27,21 @@ public class Database {
try {
this.databasePool = new DatabasePool();
if (!this.databasePool.getStoragePooling(config)) {
LOGGER.info("Failed to connect to the database. Please check config.ini and make sure the MySQL process is running. Shutting down...");
log.info("Failed to connect to the database. Please check config.ini and make sure the MySQL process is running. Shutting down...");
SQLException = true;
return;
}
this.dataSource = this.databasePool.getDatabase();
} catch (Exception e) {
SQLException = true;
LOGGER.error("Failed to connect to your database.", e);
log.error("Failed to connect to your database.", e);
} finally {
if (SQLException) {
Emulator.prepareShutdown();
}
}
LOGGER.info("Database -> Connected! ({} MS)", System.currentTimeMillis() - millis);
log.info("Database -> Connected! ({} MS)", System.currentTimeMillis() - millis);
}
public void dispose() {
@ -64,7 +61,7 @@ public class Database {
}
public static PreparedStatement preparedStatementWithParams(Connection connection, String query, THashMap<String, Object> queryParams) throws SQLException {
THashMap<Integer, Object> params = new THashMap<Integer, Object>();
THashMap<Integer, Object> params = new THashMap<>();
THashSet<String> quotedParams = new THashSet<>();
for(String key : queryParams.keySet()) {

View File

@ -3,11 +3,8 @@ package com.eu.habbo.database;
import com.eu.habbo.core.ConfigurationManager;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class DatabasePool {
private final Logger log = LoggerFactory.getLogger(DatabasePool.class);
private HikariDataSource database;
public boolean getStoragePooling(ConfigurationManager config) {

View File

@ -1,7 +1,10 @@
package com.eu.habbo.habbohotel;
import com.eu.habbo.Emulator;
import com.eu.habbo.core.*;
import com.eu.habbo.core.CreditsScheduler;
import com.eu.habbo.core.GotwPointsScheduler;
import com.eu.habbo.core.PixelScheduler;
import com.eu.habbo.core.PointsScheduler;
import com.eu.habbo.habbohotel.achievements.AchievementManager;
import com.eu.habbo.habbohotel.bots.BotManager;
import com.eu.habbo.habbohotel.campaign.CalendarManager;
@ -23,18 +26,17 @@ import com.eu.habbo.habbohotel.rooms.RoomManager;
import com.eu.habbo.habbohotel.users.HabboManager;
import com.eu.habbo.habbohotel.users.subscriptions.SubscriptionManager;
import com.eu.habbo.habbohotel.users.subscriptions.SubscriptionScheduler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Getter
public class GameEnvironment {
private static final Logger LOGGER = LoggerFactory.getLogger(GameEnvironment.class);
public CreditsScheduler creditsScheduler;
public PixelScheduler pixelScheduler;
public PointsScheduler pointsScheduler;
public GotwPointsScheduler gotwPointsScheduler;
public SubscriptionScheduler subscriptionScheduler;
private CreditsScheduler creditsScheduler;
private PixelScheduler pixelScheduler;
private PointsScheduler pointsScheduler;
private GotwPointsScheduler gotwPointsScheduler;
private SubscriptionScheduler subscriptionScheduler;
private HabboManager habboManager;
private NavigatorManager navigatorManager;
@ -58,7 +60,7 @@ public class GameEnvironment {
private CalendarManager calendarManager;
public void load() throws Exception {
LOGGER.info("GameEnvironment -> Loading...");
log.info("GameEnvironment -> Loading...");
this.permissionsManager = new PermissionsManager();
this.habboManager = new HabboManager();
@ -100,7 +102,7 @@ public class GameEnvironment {
this.subscriptionScheduler = new SubscriptionScheduler();
Emulator.getThreading().run(this.subscriptionScheduler);
LOGGER.info("GameEnvironment -> Loaded!");
log.info("GameEnvironment -> Loaded!");
}
public void dispose() {
@ -118,98 +120,7 @@ public class GameEnvironment {
this.hotelViewManager.dispose();
this.subscriptionManager.dispose();
this.calendarManager.dispose();
LOGGER.info("GameEnvironment -> Disposed!");
log.info("GameEnvironment -> Disposed!");
}
public HabboManager getHabboManager() {
return this.habboManager;
}
public NavigatorManager getNavigatorManager() {
return this.navigatorManager;
}
public GuildManager getGuildManager() {
return this.guildManager;
}
public ItemManager getItemManager() {
return this.itemManager;
}
public CatalogManager getCatalogManager() {
return this.catalogManager;
}
public HotelViewManager getHotelViewManager() {
return this.hotelViewManager;
}
public RoomManager getRoomManager() {
return this.roomManager;
}
public CommandHandler getCommandHandler() {
return this.commandHandler;
}
public PermissionsManager getPermissionsManager() {
return this.permissionsManager;
}
public BotManager getBotManager() {
return this.botManager;
}
public ModToolManager getModToolManager() {
return this.modToolManager;
}
public ModToolSanctions getModToolSanctions() {
return this.modToolSanctions;
}
public PetManager getPetManager() {
return this.petManager;
}
public AchievementManager getAchievementManager() {
return this.achievementManager;
}
public GuideManager getGuideManager() {
return this.guideManager;
}
public WordFilter getWordFilter() {
return this.wordFilter;
}
public CraftingManager getCraftingManager() {
return this.craftingManager;
}
public PollManager getPollManager() {
return this.pollManager;
}
public CreditsScheduler getCreditsScheduler() {
return this.creditsScheduler;
}
public PixelScheduler getPixelScheduler() {
return this.pixelScheduler;
}
public PointsScheduler getPointsScheduler() { return this.pointsScheduler;
}
public GotwPointsScheduler getGotwPointsScheduler() { return this.gotwPointsScheduler;
}
public SubscriptionManager getSubscriptionManager() {
return this.subscriptionManager;
}
public CalendarManager getCalendarManager() { return this.calendarManager; }
}

View File

@ -32,7 +32,7 @@ public class Achievement {
public void addLevel(AchievementLevel level) {
synchronized (this.levels) {
this.levels.put(level.level, level);
this.levels.put(level.getLevel(), level);
}
}
@ -41,9 +41,9 @@ public class Achievement {
AchievementLevel l = null;
if (progress > 0) {
for (AchievementLevel level : this.levels.values()) {
if (progress >= level.progress) {
if (progress >= level.getProgress()) {
if (l != null) {
if (l.level > level.level) {
if (l.getLevel() > level.getLevel()) {
continue;
}
}
@ -60,7 +60,7 @@ public class Achievement {
AchievementLevel l = null;
for (AchievementLevel level : this.levels.values()) {
if (level.level == (currentLevel + 1))
if (level.getLevel() == (currentLevel + 1))
return level;
}

View File

@ -1,23 +1,20 @@
package com.eu.habbo.habbohotel.achievements;
import lombok.Getter;
import java.sql.ResultSet;
import java.sql.SQLException;
@Getter
public class AchievementLevel {
public final int level;
private final int level;
private final int rewardAmount;
private final int rewardType;
private final int points;
public final int rewardAmount;
public final int rewardType;
public final int points;
public final int progress;
private final int progress;
public AchievementLevel(ResultSet set) throws SQLException {
this.level = set.getInt("level");

View File

@ -8,8 +8,8 @@ import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.achievements.AchievementComposer;
import com.eu.habbo.messages.outgoing.achievements.AchievementUnlockedComposer;
import com.eu.habbo.messages.outgoing.achievements.talenttrack.TalentLevelUpComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.rooms.users.UserChangeMessageComposer;
import com.eu.habbo.messages.outgoing.users.BadgeReceivedComposer;
import com.eu.habbo.messages.outgoing.users.UserBadgesComposer;
@ -18,16 +18,14 @@ import com.eu.habbo.plugin.events.users.achievements.UserAchievementLeveledEvent
import com.eu.habbo.plugin.events.users.achievements.UserAchievementProgressEvent;
import gnu.trove.map.hash.THashMap;
import gnu.trove.procedure.TObjectIntProcedure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.LinkedHashMap;
import java.util.Map;
@Slf4j
public class AchievementManager {
private static final Logger LOGGER = LoggerFactory.getLogger(AchievementManager.class);
public static boolean TALENTTRACK_ENABLED = false;
private final THashMap<String, Achievement> achievements;
@ -59,7 +57,7 @@ public class AchievementManager {
statement.setInt(4, amount);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
@ -97,7 +95,7 @@ public class AchievementManager {
AchievementLevel oldLevel = achievement.getLevelForProgress(currentProgress);
if (oldLevel != null && (oldLevel.level == achievement.levels.size() && currentProgress >= oldLevel.progress)) //Maximum achievement gotten.
if (oldLevel != null && (oldLevel.getLevel() == achievement.levels.size() && currentProgress >= oldLevel.getProgress())) //Maximum achievement gotten.
return;
habbo.getHabboStats().setProgress(achievement, currentProgress + amount);
@ -109,7 +107,7 @@ public class AchievementManager {
if (Emulator.getGameEnvironment().getAchievementManager().talentTrackLevels.containsKey(type)) {
for (Map.Entry<Integer, TalentTrackLevel> entry : Emulator.getGameEnvironment().getAchievementManager().talentTrackLevels.get(type).entrySet()) {
if (entry.getValue().achievements.containsKey(achievement)) {
Emulator.getGameEnvironment().getAchievementManager().handleTalentTrackAchievement(habbo, type, achievement);
Emulator.getGameEnvironment().getAchievementManager().handleTalentTrackAchievement(habbo, type);
break;
}
}
@ -118,7 +116,7 @@ public class AchievementManager {
}
if (newLevel == null ||
(oldLevel != null && (oldLevel.level == newLevel.level && newLevel.level < achievement.levels.size()))) {
(oldLevel != null && (oldLevel.getLevel() == newLevel.getLevel() && newLevel.getLevel() < achievement.levels.size()))) {
habbo.getClient().sendResponse(new AchievementComposer(habbo, achievement));
} else {
if (Emulator.getPluginManager().isRegistered(UserAchievementLeveledEvent.class, true)) {
@ -139,14 +137,14 @@ public class AchievementManager {
if (oldLevel != null) {
try {
badge = habbo.getInventory().getBadgesComponent().getBadge(("ACH_" + achievement.name + oldLevel.level).toLowerCase());
badge = habbo.getInventory().getBadgesComponent().getBadge(("ACH_" + achievement.name + oldLevel.getLevel()).toLowerCase());
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
return;
}
}
String newBadgCode = "ACH_" + achievement.name + newLevel.level;
String newBadgCode = "ACH_" + achievement.name + newLevel.getLevel();
if (badge != null) {
badge.setCode(newBadgCode);
@ -173,10 +171,10 @@ public class AchievementManager {
habbo.getClient().sendResponse(new UnseenItemsComposer(badge.getId(), UnseenItemsComposer.AddHabboItemCategory.BADGE));
habbo.getHabboStats().addAchievementScore(newLevel.points);
habbo.getHabboStats().addAchievementScore(newLevel.getPoints());
if (newLevel.rewardAmount > 0) {
habbo.givePoints(newLevel.rewardType, newLevel.rewardAmount);
if (newLevel.getRewardAmount() > 0) {
habbo.givePoints(newLevel.getRewardType(), newLevel.getRewardAmount());
}
if (habbo.getHabboInfo().getCurrentRoom() != null) {
@ -197,9 +195,9 @@ public class AchievementManager {
if (level == null)
return false;
AchievementLevel nextLevel = achievement.levels.get(level.level + 1);
AchievementLevel nextLevel = achievement.levels.get(level.getLevel() + 1);
return nextLevel == null && currentProgress >= level.progress;
return nextLevel == null && currentProgress >= level.getProgress();
}
public static void createUserEntry(Habbo habbo, Achievement achievement) {
@ -209,7 +207,7 @@ public class AchievementManager {
statement.setInt(3, 1);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -223,7 +221,7 @@ public class AchievementManager {
}
statement.executeBatch();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -237,7 +235,7 @@ public class AchievementManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return 0;
@ -260,9 +258,9 @@ public class AchievementManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
@ -282,13 +280,13 @@ public class AchievementManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
LOGGER.error("Achievement Manager -> Failed to load!");
log.error("Caught SQL exception", e);
log.error("Achievement Manager -> Failed to load!");
return;
}
}
LOGGER.info("Achievement Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
log.info("Achievement Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
}
public Achievement getAchievement(String name) {
@ -343,7 +341,7 @@ public class AchievementManager {
return level;
}
public void handleTalentTrackAchievement(Habbo habbo, TalentTrackType type, Achievement achievement) {
public void handleTalentTrackAchievement(Habbo habbo, TalentTrackType type) {
TalentTrackLevel currentLevel = this.calculateTalenTrackLevel(habbo, type);
if (currentLevel != null) {
@ -375,7 +373,8 @@ public class AchievementManager {
if (level.perks != null && level.perks.length > 0) {
for (String perk : level.perks) {
if (perk.equalsIgnoreCase("TRADE")) {
habbo.getHabboStats().perkTrade = true;
habbo.getHabboStats().setPerkTrade(true);
break;
}
}
}

View File

@ -5,15 +5,13 @@ import com.eu.habbo.habbohotel.items.Item;
import gnu.trove.map.TObjectIntMap;
import gnu.trove.map.hash.TObjectIntHashMap;
import gnu.trove.set.hash.THashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.ResultSet;
import java.sql.SQLException;
@Slf4j
public class TalentTrackLevel {
private static final Logger LOGGER = LoggerFactory.getLogger(TalentTrackLevel.class);
public TalentTrackType type;
public int level;
public TObjectIntMap<Achievement> achievements;
@ -34,23 +32,23 @@ public class TalentTrackLevel {
if (achievements[i].isEmpty() || achievementLevels[i].isEmpty())
continue;
Achievement achievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement(Integer.valueOf(achievements[i]));
Achievement achievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement(Integer.parseInt(achievements[i]));
if (achievement != null) {
this.achievements.put(achievement, Integer.valueOf(achievementLevels[i]));
this.achievements.put(achievement, Integer.parseInt(achievementLevels[i]));
} else {
LOGGER.error("Could not find achievement with ID " + achievements[i] + " for talenttrack level " + this.level + " of type " + this.type);
log.error("Could not find achievement with ID " + achievements[i] + " for talenttrack level " + this.level + " of type " + this.type);
}
}
}
for (String s : set.getString("reward_furni").split(",")) {
Item item = Emulator.getGameEnvironment().getItemManager().getItem(Integer.valueOf(s));
Item item = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(s));
if (item != null) {
this.items.add(item);
} else {
LOGGER.error("Incorrect reward furni (ID: " + s + ") for talent track level " + this.level);
log.error("Incorrect reward furni (ID: " + s + ") for talent track level " + this.level);
}
}

View File

@ -12,8 +12,7 @@ import com.eu.habbo.plugin.events.bots.BotShoutEvent;
import com.eu.habbo.plugin.events.bots.BotTalkEvent;
import com.eu.habbo.plugin.events.bots.BotWhisperEvent;
import com.eu.habbo.threading.runnables.BotFollowHabbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -22,9 +21,8 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
@Slf4j
public class Bot implements Runnable {
private static final Logger LOGGER = LoggerFactory.getLogger(Bot.class);
public static final String NO_CHAT_SET = "${bot.skill.chatter.configuration.text.placeholder}";
public static String[] PLACEMENT_MESSAGES = "Yo!;Hello I'm a real party animal!;Hello!".split(";");
@ -164,7 +162,7 @@ public class Bot implements Runnable {
statement.execute();
this.needsUpdate = false;
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}

View File

@ -7,26 +7,22 @@ import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboInfo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.generic.alerts.BotErrorComposer;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
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.BotAddedToInventoryComposer;
import com.eu.habbo.messages.outgoing.inventory.BotRemovedFromInventoryComposer;
import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer;
import com.eu.habbo.messages.outgoing.rooms.users.RoomUsersComposer;
import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer;
import com.eu.habbo.plugin.events.bots.BotPickUpEvent;
import com.eu.habbo.plugin.events.bots.BotPlacedEvent;
import gnu.trove.map.hash.THashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Method;
import java.sql.*;
import java.util.Map;
@Slf4j
public class BotManager {
private static final Logger LOGGER = LoggerFactory.getLogger(BotManager.class);
final private static THashMap<String, Class<? extends Bot>> botDefenitions = new THashMap<>();
public static int MINIMUM_CHAT_SPEED = 7;
@ -44,7 +40,7 @@ public class BotManager {
this.reload();
LOGGER.info("Bot Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
log.info("Bot Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
}
public static void addBotDefinition(String type, Class<? extends Bot> botClazz) throws Exception {
@ -59,10 +55,10 @@ public class BotManager {
m.setAccessible(true);
m.invoke(null);
} catch (NoSuchMethodException e) {
LOGGER.info("Bot Manager -> Failed to execute initialise method upon bot type '" + set.getKey() + "'. No Such Method!");
log.info("Bot Manager -> Failed to execute initialise method upon bot type '" + set.getKey() + "'. No Such Method!");
return false;
} catch (Exception e) {
LOGGER.info("Bot Manager -> Failed to execute initialise method upon bot type '" + set.getKey() + "'. Error: " + e.getMessage());
log.info("Bot Manager -> Failed to execute initialise method upon bot type '" + set.getKey() + "'. Error: " + e.getMessage());
return false;
}
}
@ -89,12 +85,12 @@ public class BotManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return bot;
@ -114,10 +110,10 @@ public class BotManager {
return;
}
if (room.hasHabbosAt(location.x, location.y) || (!location.isWalkable() && location.state != RoomTileState.SIT && location.state != RoomTileState.LAY))
if (room.hasHabbosAt(location.getX(), location.getY()) || (!location.isWalkable() && location.getState() != RoomTileState.SIT && location.getState() != RoomTileState.LAY))
return;
if (room.hasBotsAt(location.x, location.y)) {
if (room.hasBotsAt(location.getX(), location.getY())) {
habbo.getClient().sendResponse(new BotErrorComposer(BotErrorComposer.ROOM_ERROR_BOTS_SELECTED_TILE_NOT_FREE));
return;
}
@ -144,19 +140,19 @@ public class BotManager {
habbo.getClient().sendResponse(new BotRemovedFromInventoryComposer(bot));
bot.onPlace(habbo, room);
HabboItem topItem = room.getTopItemAt(location.x, location.y);
HabboItem topItem = room.getTopItemAt(location.getX(), location.getY());
if (topItem != null) {
try {
topItem.onWalkOn(bot.getRoomUnit(), room, null);
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
bot.cycle(false);
} else {
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.FURNITURE_PLACEMENT_ERROR.key, FurnitureMovementError.NO_RIGHTS.errorCode));
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.FURNITURE_PLACEMENT_ERROR.getKey(), FurnitureMovementError.NO_RIGHTS.getErrorCode()));
}
}
}
@ -208,25 +204,23 @@ public class BotManager {
if (botClazz != null)
return botClazz.getDeclaredConstructor(ResultSet.class).newInstance(set);
else
LOGGER.error("Unknown Bot Type: " + type);
log.error("Unknown Bot Type: " + type);
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
return null;
}
public boolean deleteBot(Bot bot) {
public void deleteBot(Bot bot) {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM bots WHERE id = ? LIMIT 1")) {
statement.setInt(1, bot.getId());
return statement.execute();
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return false;
}
public void dispose() {
@ -236,9 +230,9 @@ public class BotManager {
m.setAccessible(true);
m.invoke(null);
} catch (NoSuchMethodException e) {
LOGGER.info("Bot Manager -> Failed to execute dispose method upon bot type '" + set.getKey() + "'. No Such Method!");
log.info("Bot Manager -> Failed to execute dispose method upon bot type '" + set.getKey() + "'. No Such Method!");
} catch (Exception e) {
LOGGER.info("Bot Manager -> Failed to execute dispose method upon bot type '" + set.getKey() + "'. Error: " + e.getMessage());
log.info("Bot Manager -> Failed to execute dispose method upon bot type '" + set.getKey() + "'. Error: " + e.getMessage());
}
}
}

View File

@ -10,8 +10,7 @@ import com.eu.habbo.threading.runnables.RoomUnitGiveHanditem;
import com.eu.habbo.threading.runnables.RoomUnitWalkToRoomUnit;
import gnu.trove.map.hash.THashMap;
import gnu.trove.set.hash.THashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.ResultSet;
@ -22,8 +21,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
@Slf4j
public class ButlerBot extends Bot {
private static final Logger LOGGER = LoggerFactory.getLogger(ButlerBot.class);
public static THashMap<THashSet<String>, Integer> serveItems = new THashMap<>();
public ButlerBot(ResultSet set) throws SQLException {
@ -48,7 +47,7 @@ public class ButlerBot extends Bot {
serveItems.put(ks, set.getInt("item"));
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -94,13 +93,13 @@ public class ButlerBot extends Bot {
tasks.add(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), 0));
tasks.add(() -> {
if(this.getRoom() != null) {
if (this.getRoom() != null) {
String botMessage = Emulator.getTexts()
.getValue("bots.butler.given")
.replace("%key%", key)
.replace("%username%", serveEvent.habbo.getHabboInfo().getUsername());
if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{ botMessage })) {
if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{botMessage})) {
bot.talk(botMessage);
}
}
@ -124,7 +123,7 @@ public class ButlerBot extends Bot {
Emulator.getThreading().run(failedReached.get(0), 1000);
}
} else {
if(this.getRoom() != null) {
if (this.getRoom() != null) {
this.getRoom().giveHandItem(serveEvent.habbo, serveEvent.itemId);
String msg = Emulator.getTexts().getValue("bots.butler.given").replace("%key%", keyword).replace("%username%", serveEvent.habbo.getHabboInfo().getUsername());

View File

@ -39,9 +39,9 @@ public class VisitorBot extends Bot {
StringBuilder list = new StringBuilder();
for (ModToolRoomVisit visit : this.visits) {
list.append("\r");
list.append(visit.roomName).append(" ");
list.append(visit.getRoomName()).append(" ");
list.append(Emulator.getTexts().getValue("generic.time.at")).append(" ");
list.append(DATE_FORMAT.format(new Date((visit.timestamp * 1000L))));
list.append(DATE_FORMAT.format(new Date((visit.getTimestamp() * 1000L))));
}
visitMessage = visitMessage.replace("%list%", list.toString());

View File

@ -5,8 +5,7 @@ import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.outgoing.events.calendar.CampaignCalendarDoorOpenedMessageComposer;
import com.eu.habbo.plugin.events.users.calendar.UserClaimRewardEvent;
import gnu.trove.map.hash.THashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.time.temporal.ChronoUnit;
@ -14,8 +13,9 @@ import java.util.Date;
import java.util.*;
@Slf4j
public class CalendarManager {
private static final Logger LOGGER = LoggerFactory.getLogger(CalendarManager.class);
private static final Map<Integer, CalendarCampaign> calendarCampaigns = new THashMap<>();
public static double HC_MODIFIER;
@ -23,7 +23,7 @@ public class CalendarManager {
public CalendarManager() {
long millis = System.currentTimeMillis();
this.reload();
LOGGER.info("Calendar Manager -> Loaded! ({} MS)", (System.currentTimeMillis() - millis));
log.info("Calendar Manager -> Loaded! ({} MS)", (System.currentTimeMillis() - millis));
}
public void dispose() {
@ -39,7 +39,7 @@ public class CalendarManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
return false;
}
@ -53,7 +53,7 @@ public class CalendarManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
return false;
}
@ -84,7 +84,7 @@ public class CalendarManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
calendarCampaigns.put(campaign.getId(), campaign);
@ -97,7 +97,7 @@ public class CalendarManager {
statement.setInt(1, campaign.getId());
return statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return false;
@ -113,7 +113,7 @@ public class CalendarManager {
public void claimCalendarReward(Habbo habbo, String campaignName, int day, boolean force) {
CalendarCampaign campaign = calendarCampaigns.values().stream().filter(cc -> Objects.equals(cc.getName(), campaignName)).findFirst().orElse(null);
if (campaign == null || campaign.getRewards().isEmpty() || (habbo.getHabboStats().calendarRewardsClaimed.stream().anyMatch(claimed -> claimed.getCampaignId() == campaign.getId() && claimed.getDay() == day)))
if (campaign == null || campaign.getRewards().isEmpty() || (habbo.getHabboStats().getCalendarRewardsClaimed().stream().anyMatch(claimed -> claimed.getCampaignId() == campaign.getId() && claimed.getDay() == day)))
return;
List<CalendarRewardObject> rewards = new ArrayList<>(campaign.getRewards().values());
@ -125,7 +125,7 @@ public class CalendarManager {
if (Emulator.getPluginManager().fireEvent(new UserClaimRewardEvent(habbo, campaign, day, object, force)).isCancelled()) {
return;
}
habbo.getHabboStats().calendarRewardsClaimed.add(new CalendarRewardClaimed(habbo.getHabboInfo().getId(), campaign.getId(), day, object.getId(), new Timestamp(System.currentTimeMillis())));
habbo.getHabboStats().getCalendarRewardsClaimed().add(new CalendarRewardClaimed(habbo.getHabboInfo().getId(), campaign.getId(), day, object.getId(), new Timestamp(System.currentTimeMillis())));
habbo.getClient().sendResponse(new CampaignCalendarDoorOpenedMessageComposer(true, object, habbo));
object.give(habbo);
@ -137,7 +137,7 @@ public class CalendarManager {
statement.setInt(5, Emulator.getIntUnixTimestamp());
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}

View File

@ -1,50 +1,26 @@
package com.eu.habbo.habbohotel.campaign;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
@Getter
@AllArgsConstructor
public class CalendarRewardClaimed {
private final int user_id;
private final int campaign;
private final int userId;
private final int campaignId;
private final int day;
private final int reward_id;
private final int rewardId;
private final Timestamp timestamp;
public CalendarRewardClaimed(ResultSet set) throws SQLException {
this.user_id = set.getInt("user_id");
this.campaign = set.getInt("campaign_id");
this.userId = set.getInt("user_id");
this.campaignId = set.getInt("campaign_id");
this.day = set.getInt("day");
this.reward_id = set.getInt("reward_id");
this.rewardId = set.getInt("reward_id");
this.timestamp = new Timestamp(set.getInt("timestamp") * 1000L);
}
public CalendarRewardClaimed(int user_id, int campaign, int day, int reward_id, Timestamp timestamp) {
this.user_id = user_id;
this.campaign = campaign;
this.day = day;
this.reward_id = reward_id;
this.timestamp = timestamp;
}
public int getUserId() {
return this.user_id;
}
public int getCampaignId() {
return this.campaign;
}
public int getDay() {
return this.day;
}
public int getRewardId() {
return this.reward_id;
}
public Timestamp getTimestamp() {
return this.timestamp;
}
}

View File

@ -5,17 +5,17 @@ import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.habbohotel.users.subscriptions.SubscriptionHabboClub;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import java.sql.ResultSet;
import java.sql.SQLException;
@Slf4j
@Getter
public class CalendarRewardObject {
private static final Logger LOGGER = LoggerFactory.getLogger(CalendarRewardObject.class);
private final int id;
private final String productName;
private final String customImage;
@ -25,8 +25,8 @@ public class CalendarRewardObject {
private final int pointsType;
private final String badge;
private final int itemId;
private final String subscription_type;
private final int subscription_days;
private final String subscriptionType;
private final int subscriptionDays;
public CalendarRewardObject(ResultSet set) throws SQLException {
this.id = set.getInt("id");
@ -38,8 +38,8 @@ public class CalendarRewardObject {
this.pointsType = set.getInt("points_type");
this.badge = set.getString("badge");
this.itemId = set.getInt("item_id");
this.subscription_type = set.getString("subscription_type");
this.subscription_days = set.getInt("subscription_days");
this.subscriptionType = set.getString("subscription_type");
this.subscriptionDays = set.getInt("subscription_days");
}
public void give(Habbo habbo) {
@ -48,7 +48,7 @@ public class CalendarRewardObject {
}
if (this.pixels > 0) {
habbo.givePixels((int)(this.pixels * (habbo.getHabboStats().hasActiveClub() ? CalendarManager.HC_MODIFIER : 1.0)));
habbo.givePixels((int) (this.pixels * (habbo.getHabboStats().hasActiveClub() ? CalendarManager.HC_MODIFIER : 1.0)));
}
if (this.points > 0) {
@ -59,11 +59,11 @@ public class CalendarRewardObject {
habbo.addBadge(this.badge);
}
if(this.subscription_type != null && !this.subscription_type.isEmpty()) {
if ("HABBO_CLUB".equals(this.subscription_type)) {
habbo.getHabboStats().createSubscription(SubscriptionHabboClub.HABBO_CLUB, this.subscription_days * 86400);
if (this.subscriptionType != null && !this.subscriptionType.isEmpty()) {
if ("HABBO_CLUB".equals(this.subscriptionType)) {
habbo.getHabboStats().createSubscription(SubscriptionHabboClub.HABBO_CLUB, this.subscriptionDays * 86400);
} else {
habbo.getHabboStats().createSubscription(this.subscription_type, this.subscription_days * 86400);
habbo.getHabboStats().createSubscription(this.subscriptionType, this.subscriptionDays * 86400);
}
}
@ -84,44 +84,6 @@ public class CalendarRewardObject {
}
}
public int getId() {
return this.id;
}
public String getCustomImage() {
return this.customImage;
}
public int getCredits() {
return this.credits;
}
public int getPixels() {
return this.pixels;
}
public int getPoints() {
return this.points;
}
public int getPointsType() {
return this.pointsType;
}
public String getProductName() {
return productName;
}
public String getSubscriptionType() {
return subscription_type;
}
public int getSubscriptionDays() {
return subscription_days;
}
public String getBadge() {
return this.badge;
}
public Item getItem() {
return Emulator.getGameEnvironment().getItemManager().getItem(this.itemId);

View File

@ -3,7 +3,10 @@ package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import com.eu.habbo.messages.ISerialize;
import com.eu.habbo.messages.ServerMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
public class CatalogFeaturedPage implements ISerialize {
private final int slotId;
private final String caption;
@ -13,16 +16,6 @@ public class CatalogFeaturedPage implements ISerialize {
private final String pageName;
private final int pageId;
private final String productName;
public CatalogFeaturedPage(int slotId, String caption, String image, Type type, int expireTimestamp, String pageName, int pageId, String productName) {
this.slotId = slotId;
this.caption = caption;
this.image = image;
this.type = type;
this.expireTimestamp = expireTimestamp;
this.pageName = pageName;
this.pageId = pageId;
this.productName = productName;
}
@Override
public void serialize(ServerMessage message) {
@ -31,28 +24,20 @@ public class CatalogFeaturedPage implements ISerialize {
message.appendString(this.image);
message.appendInt(this.type.type);
switch (this.type) {
case PAGE_NAME:
message.appendString(this.pageName);
break;
case PAGE_ID:
message.appendInt(this.pageId);
break;
case PRODUCT_NAME:
message.appendString(this.productName);
break;
case PAGE_NAME -> message.appendString(this.pageName);
case PAGE_ID -> message.appendInt(this.pageId);
case PRODUCT_NAME -> message.appendString(this.productName);
}
message.appendInt(Emulator.getIntUnixTimestamp() - this.expireTimestamp);
}
@Getter
@AllArgsConstructor
public enum Type {
PAGE_NAME(0),
PAGE_ID(1),
PRODUCT_NAME(2);
public final int type;
Type(int type) {
this.type = type;
}
private final int type;
}
}

View File

@ -3,12 +3,12 @@ package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.items.FurnitureType;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.users.HabboBadge;
import com.eu.habbo.messages.ISerialize;
import com.eu.habbo.messages.ServerMessage;
import gnu.trove.set.hash.THashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -16,41 +16,54 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
@Slf4j
public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem> {
private static final Logger LOGGER = LoggerFactory.getLogger(CatalogItem.class);
@Getter
int id;
@Getter
int limitedStack;
@Getter
@Setter
private int pageId;
@Getter
@Setter
private String itemId;
@Getter
private String name;
@Getter
private int credits;
@Getter
private int points;
@Getter
private short pointsType;
@Getter
private int amount;
private boolean allowGift = false;
private int limitedSells;
@Getter
private String extradata;
@Getter
private boolean clubOnly;
private boolean haveOffer;
@Getter
private int offerId;
private boolean needsUpdate;
@Getter
private int orderNumber;
@Getter
private HashMap<Integer, Integer> bundle;
public CatalogItem(ResultSet set) throws SQLException {
this.load(set);
this.needsUpdate = false;
@ -105,49 +118,6 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
this.loadBundle();
}
public int getId() {
return this.id;
}
public int getPageId() {
return this.pageId;
}
public void setPageId(int pageId) {
this.pageId = pageId;
}
public String getItemId() {
return this.itemId;
}
public void setItemId(String itemId) {
this.itemId = itemId;
}
public String getName() {
return this.name;
}
public int getCredits() {
return this.credits;
}
public int getPoints() {
return this.points;
}
public int getPointsType() {
return this.pointsType;
}
public int getAmount() {
return this.amount;
}
public int getLimitedStack() {
return this.limitedStack;
}
public int getLimitedSells() {
CatalogLimitedConfiguration ltdConfig = Emulator.getGameEnvironment().getCatalogManager().getLimitedConfig(this);
@ -159,29 +129,6 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
return this.limitedStack;
}
public String getExtradata() {
return this.extradata;
}
public boolean isClubOnly() {
return this.clubOnly;
}
public boolean isHaveOffer() {
return this.haveOffer;
}
public int getOfferId() {
return this.offerId;
}
public boolean isLimited() {
return this.limitedStack > 0;
}
private int getOrderNumber() {
return this.orderNumber;
}
public synchronized void sellRare() {
this.limitedSells++;
@ -214,7 +161,7 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
identifier = Integer.parseInt(itemId);
} catch (Exception e) {
LOGGER.info("Invalid value (" + itemId + ") for items_base column for catalog_item id (" + this.id + "). Value must be integer or of the format of integer:amount;integer:amount");
log.info("Invalid value (" + itemId + ") for items_base column for catalog_item id (" + this.id + "). Value must be integer or of the format of integer:amount;integer:amount");
continue;
}
if (identifier > 0) {
@ -236,9 +183,6 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
return this.amount;
}
public HashMap<Integer, Integer> getBundle() {
return this.bundle;
}
public void loadBundle() {
int intItemId;
@ -261,17 +205,17 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
}
}
} catch (Exception e) {
LOGGER.debug("Failed to load " + this.itemId);
LOGGER.error("Caught exception", e);
log.debug("Failed to load " + this.itemId);
log.error("Caught exception", e);
}
} else {
try {
Item item = Emulator.getGameEnvironment().getItemManager().getItem(Integer.valueOf(this.itemId));
Item item = Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(this.itemId));
if (item != null) {
this.allowGift = item.allowGift();
}
} catch (Exception e) {
} catch (Exception ignored) {
}
}
}
@ -346,14 +290,13 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
statement.setInt(3, this.getId());
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
this.needsUpdate = false;
}
}
@SuppressWarnings("NullableProblems")
@Override
public int compareTo(CatalogItem catalogItem) {
if (CatalogManager.SORT_USING_ORDERNUM) {
@ -362,4 +305,14 @@ public class CatalogItem implements ISerialize, Runnable, Comparable<CatalogItem
return this.getId() - catalogItem.getId();
}
}
public boolean isHaveOffer() {
return this.haveOffer;
}
public boolean isLimited() {
return this.limitedStack > 0;
}
}

View File

@ -3,8 +3,9 @@ package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -13,11 +14,12 @@ import java.util.Collections;
import java.util.LinkedList;
import java.util.concurrent.LinkedBlockingQueue;
@Slf4j
public class CatalogLimitedConfiguration implements Runnable {
private static final Logger LOGGER = LoggerFactory.getLogger(CatalogLimitedConfiguration.class);
private final int itemId;
private LinkedBlockingQueue<Integer> limitedNumbers;
@Getter
@Setter
private int totalSet;
private final Object lock = new Object();
@ -61,7 +63,7 @@ public class CatalogLimitedConfiguration implements Runnable {
statement.setInt(5, item.getLimitedSells());
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
@ -80,7 +82,7 @@ public class CatalogLimitedConfiguration implements Runnable {
statement.executeBatch();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
this.totalSet += amount;
@ -100,13 +102,6 @@ public class CatalogLimitedConfiguration implements Runnable {
return this.limitedNumbers.size();
}
public int getTotalSet() {
return this.totalSet;
}
public void setTotalSet(int totalSet) {
this.totalSet = totalSet;
}
@Override
public void run() {
@ -116,7 +111,7 @@ public class CatalogLimitedConfiguration implements Runnable {
statement.setInt(3, this.itemId);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}

View File

@ -18,12 +18,12 @@ import com.eu.habbo.habbohotel.users.HabboBadge;
import com.eu.habbo.habbohotel.users.HabboGender;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.catalog.*;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
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.BotAddedToInventoryComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.inventory.PetAddedToInventoryComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.inventory.PetAddedToInventoryComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.modtool.IssueCloseNotificationMessageComposer;
import com.eu.habbo.messages.outgoing.users.BadgeReceivedComposer;
import com.eu.habbo.messages.outgoing.users.CreditBalanceComposer;
@ -37,19 +37,16 @@ import gnu.trove.map.TIntObjectMap;
import gnu.trove.map.hash.THashMap;
import gnu.trove.map.hash.TIntIntHashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import gnu.trove.procedure.TObjectProcedure;
import gnu.trove.set.hash.THashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
public class CatalogManager {
private static final Logger LOGGER = LoggerFactory.getLogger(CatalogManager.class);
public static final THashMap<String, Class<? extends CatalogPage>> pageDefinitions = new THashMap<>();
public static int catalogItemAmount;
public static int PURCHASE_COOLDOWN = 1;
@ -86,7 +83,7 @@ public class CatalogManager {
this.ecotronItem = Emulator.getGameEnvironment().getItemManager().getItem("ecotron_box");
LOGGER.info("Catalog Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
log.info("Catalog Manager -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
}
@ -258,7 +255,7 @@ public class CatalogManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
for (Map.Entry<Integer, LinkedList<Integer>> set : limiteds.entrySet()) {
@ -278,7 +275,7 @@ public class CatalogManager {
Class<? extends CatalogPage> pageClazz = pageDefinitions.get(set.getString("page_layout"));
if (pageClazz == null) {
LOGGER.info("Unknown Page Layout: " + set.getString("page_layout"));
log.info("Unknown Page Layout: " + set.getString("page_layout"));
continue;
}
@ -286,12 +283,12 @@ public class CatalogManager {
CatalogPage page = pageClazz.getConstructor(ResultSet.class).newInstance(set);
pages.put(page.getId(), page);
} catch (Exception e) {
LOGGER.error("Failed to load layout: {}", set.getString("page_layout"));
log.error("Failed to load layout: {}", set.getString("page_layout"));
}
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
pages.forEachValue((object) -> {
@ -303,7 +300,7 @@ public class CatalogManager {
}
} else {
if (object.parentId != -2) {
LOGGER.info("Parent Page not found for " + object.getPageName() + " (ID: " + object.id + ", parent_id: " + object.parentId + ")");
log.info("Parent Page not found for " + object.getPageName() + " (ID: " + object.id + ", parent_id: " + object.parentId + ")");
}
}
return true;
@ -311,7 +308,7 @@ public class CatalogManager {
this.catalogPages.putAll(pages);
LOGGER.info("Loaded " + this.catalogPages.size() + " Catalog Pages!");
log.info("Loaded " + this.catalogPages.size() + " Catalog Pages!");
}
@ -332,7 +329,7 @@ public class CatalogManager {
));
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -379,7 +376,7 @@ public class CatalogManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
for (CatalogPage page : this.catalogPages.valueCollection()) {
@ -404,7 +401,7 @@ public class CatalogManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -420,7 +417,7 @@ public class CatalogManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
@ -435,7 +432,7 @@ public class CatalogManager {
this.vouchers.add(new Voucher(set));
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
@ -455,11 +452,11 @@ public class CatalogManager {
this.prizes.get(set.getInt("rarity")).add(item);
} else {
LOGGER.error("Cannot load item with ID: {} as recycler reward!", set.getInt("item_id"));
log.error("Cannot load item with ID: {} as recycler reward!", set.getInt("item_id"));
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
@ -474,17 +471,12 @@ public class CatalogManager {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); Statement statement = connection.createStatement(); ResultSet set = statement.executeQuery("SELECT * FROM gift_wrappers ORDER BY sprite_id DESC")) {
while (set.next()) {
switch (set.getString("type")) {
case "wrapper":
this.giftWrappers.put(set.getInt("sprite_id"), set.getInt("item_id"));
break;
case "gift":
this.giftFurnis.put(set.getInt("sprite_id"), set.getInt("item_id"));
break;
case "wrapper" -> this.giftWrappers.put(set.getInt("sprite_id"), set.getInt("item_id"));
case "gift" -> this.giftFurnis.put(set.getInt("sprite_id"), set.getInt("item_id"));
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
@ -499,14 +491,14 @@ public class CatalogManager {
this.clothing.put(set.getInt("id"), new ClothItem(set));
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
public ClothItem getClothing(String name) {
for (ClothItem item : this.clothing.values()) {
if (item.name.equalsIgnoreCase(name)) {
if (item.getName().equalsIgnoreCase(name)) {
return item;
}
}
@ -517,7 +509,7 @@ public class CatalogManager {
public Voucher getVoucher(String code) {
synchronized (this.vouchers) {
for (Voucher voucher : this.vouchers) {
if (voucher.code.equals(code)) {
if (voucher.getCode().equals(code)) {
return voucher;
}
}
@ -548,18 +540,18 @@ public class CatalogManager {
voucher.addHistoryEntry(habbo.getHabboInfo().getId());
if (voucher.points > 0) {
client.getHabbo().getHabboInfo().addCurrencyAmount(voucher.pointsType, voucher.points);
client.sendResponse(new HabboActivityPointNotificationMessageComposer(client.getHabbo().getHabboInfo().getCurrencyAmount(voucher.pointsType), voucher.points, voucher.pointsType));
if (voucher.getPoints() > 0) {
client.getHabbo().getHabboInfo().addCurrencyAmount(voucher.getPointsType(), voucher.getPoints());
client.sendResponse(new HabboActivityPointNotificationMessageComposer(client.getHabbo().getHabboInfo().getCurrencyAmount(voucher.getPointsType()), voucher.getPoints(), voucher.getPointsType()));
}
if (voucher.credits > 0) {
client.getHabbo().getHabboInfo().addCredits(voucher.credits);
if (voucher.getCredits() > 0) {
client.getHabbo().getHabboInfo().addCredits(voucher.getCredits());
client.sendResponse(new CreditBalanceComposer(client.getHabbo()));
}
if (voucher.catalogItemId > 0) {
CatalogItem item = this.getCatalogItem(voucher.catalogItemId);
if (voucher.getCatalogItemId() > 0) {
CatalogItem item = this.getCatalogItem(voucher.getCatalogItemId());
if (item != null) {
this.purchaseItem(null, item, client.getHabbo(), 1, "", true);
}
@ -570,7 +562,7 @@ public class CatalogManager {
public boolean deleteVoucher(Voucher voucher) {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM vouchers WHERE code = ?")) {
statement.setString(1, voucher.code);
statement.setString(1, voucher.getCode());
synchronized (this.vouchers) {
this.vouchers.remove(voucher);
@ -578,7 +570,7 @@ public class CatalogManager {
return statement.executeUpdate() >= 1;
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return false;
@ -609,13 +601,10 @@ public class CatalogManager {
public CatalogItem getCatalogItem(int id) {
final CatalogItem[] item = {null};
synchronized (this.catalogPages) {
this.catalogPages.forEachValue(new TObjectProcedure<CatalogPage>() {
@Override
public boolean execute(CatalogPage object) {
item[0] = object.getCatalogItem(id);
this.catalogPages.forEachValue(object -> {
item[0] = object.getCatalogItem(id);
return item[0] == null;
}
return item[0] == null;
});
}
@ -626,24 +615,17 @@ public class CatalogManager {
public List<CatalogPage> getCatalogPages(int parentId, final Habbo habbo) {
final List<CatalogPage> pages = new ArrayList<>();
this.catalogPages.get(parentId).childPages.forEachValue(new TObjectProcedure<CatalogPage>() {
@Override
public boolean execute(CatalogPage object) {
this.catalogPages.get(parentId).childPages.forEachValue(object -> {
boolean isVisiblePage = object.visible;
boolean hasRightRank = object.getRank() <= habbo.getHabboInfo().getRank().getId();
boolean isVisiblePage = object.visible;
boolean hasRightRank = object.getRank() <= habbo.getHabboInfo().getRank().getId();
boolean clubRightsOkay = true;
boolean clubRightsOkay = !object.isClubOnly() || habbo.getHabboInfo().getHabboStats().hasActiveClub();
if(object.isClubOnly() && !habbo.getHabboInfo().getHabboStats().hasActiveClub()) {
clubRightsOkay = false;
}
if (isVisiblePage && hasRightRank && clubRightsOkay) {
pages.add(object);
}
return true;
if (isVisiblePage && hasRightRank && clubRightsOkay) {
pages.add(object);
}
return true;
});
Collections.sort(pages);
@ -702,7 +684,7 @@ public class CatalogManager {
if (this.prizes.containsKey(level) && !this.prizes.get(level).isEmpty()) {
return (Item) this.prizes.get(level).toArray()[Emulator.getRandom().nextInt(this.prizes.get(level).size())];
} else {
LOGGER.error("No rewards specified for rarity level {}", level);
log.error("No rewards specified for rarity level {}", level);
}
return null;
@ -734,10 +716,10 @@ public class CatalogManager {
try {
catalogPage = pageClazz.getConstructor(ResultSet.class).newInstance(page);
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
} else {
LOGGER.error("Unknown page layout: {}", page.getString("page_layout"));
log.error("Unknown page layout: {}", page.getString("page_layout"));
}
}
}
@ -745,7 +727,7 @@ public class CatalogManager {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
if (catalogPage != null) {
@ -804,19 +786,19 @@ public class CatalogManager {
}
}
LOGGER.info("Catalog Manager -> Disposed!");
log.info("Catalog Manager -> Disposed!");
}
public void purchaseItem(CatalogPage page, CatalogItem item, Habbo habbo, int amount, String extradata, boolean free) {
Item cBaseItem = null;
Item cBaseItem = null;
if (item == null || habbo.getHabboStats().isPurchasingFurniture) {
if (item == null || habbo.getHabboStats().isPurchasingFurniture()) {
habbo.getClient().sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR).compose());
return;
}
habbo.getHabboStats().isPurchasingFurniture = true;
habbo.getHabboStats().setPurchasingFurniture(true);
try {
if (item.isClubOnly() && !habbo.getClient().getHabbo().getHabboStats().hasActiveClub()) {
@ -873,7 +855,7 @@ public class CatalogManager {
if (amount > 1 && !CatalogItem.haveOffer(item)) {
String message = Emulator.getTexts().getValue("scripter.warning.catalog.amount").replace("%username%", habbo.getHabboInfo().getUsername()).replace("%itemname%", item.getName()).replace("%pagename%", page.getCaption());
ScripterManager.scripterDetected(habbo.getClient(), message);
LOGGER.info(message);
log.info(message);
habbo.getClient().sendResponse(new PurchaseNotAllowedMessageComposer(PurchaseNotAllowedMessageComposer.ILLEGAL));
return;
}
@ -958,7 +940,7 @@ public class CatalogManager {
try {
pet = Emulator.getGameEnvironment().getPetManager().createPet(baseItem, data[0], data[1], data[2], habbo.getClient());
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
habbo.getClient().sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR));
}
@ -996,7 +978,7 @@ public class CatalogManager {
if (extradata.length() > Emulator.getConfig().getInt("hotel.trophies.length.max", 300)) {
extradata = extradata.substring(0, Emulator.getConfig().getInt("hotel.trophies.length.max", 300));
}
extradata = habbo.getClient().getHabbo().getHabboInfo().getUsername() + (char) 9 + Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "-" + (Calendar.getInstance().get(Calendar.MONTH) + 1) + "-" + Calendar.getInstance().get(Calendar.YEAR) + (char) 9 + Emulator.getGameEnvironment().getWordFilter().filter(extradata.replace(((char) 9) + "", ""), habbo);
}
@ -1017,7 +999,7 @@ public class CatalogManager {
try {
guildId = Integer.parseInt(extradata);
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
habbo.getClient().sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR));
return;
}
@ -1034,7 +1016,7 @@ public class CatalogManager {
itemsList.add(habboItem);
if (baseItem.getName().equals("guild_forum")) {
guild.setForum(true);
guild.setHasForum(true);
guild.needsUpdate = true;
guild.run();
}
@ -1111,7 +1093,7 @@ public class CatalogManager {
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}album1584/" + badge.getCode() + ".gif");
keys.put("message", Emulator.getTexts().getValue("commands.generic.cmd_badge.received"));
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.key, keys));
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys));
unseenItems.get(UnseenItemsComposer.AddHabboItemCategory.BADGE).add(badge.getId());
}
habbo.getClient().getHabbo().getHabboStats().addPurchase(purchasedEvent.catalogItem);
@ -1123,11 +1105,11 @@ public class CatalogManager {
THashSet<String> itemIds = new THashSet<>();
for(HabboItem ix : purchasedEvent.itemsList) {
for (HabboItem ix : purchasedEvent.itemsList) {
itemIds.add(ix.getId() + "");
}
if(!free) {
if (!free) {
Emulator.getThreading().run(new CatalogPurchaseLogEntry(
Emulator.getIntUnixTimestamp(),
purchasedEvent.habbo.getHabboInfo().getId(),
@ -1136,17 +1118,17 @@ public class CatalogManager {
purchasedEvent.catalogItem != null ? purchasedEvent.catalogItem.getName() : "",
purchasedEvent.totalCredits,
purchasedEvent.totalPoints,
item != null ? item.getPointsType() : 0,
item.getPointsType(),
amount
));
}
} catch (Exception e) {
LOGGER.error("Exception caught", e);
log.error("Exception caught", e);
habbo.getClient().sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR));
}
} finally {
habbo.getHabboStats().isPurchasingFurniture = false;
habbo.getHabboStats().setPurchasingFurniture(false);
}
}

View File

@ -7,38 +7,63 @@ import gnu.trove.list.array.TIntArrayList;
import gnu.trove.map.TIntObjectMap;
import gnu.trove.map.hash.THashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
@Slf4j
public abstract class CatalogPage implements Comparable<CatalogPage>, ISerialize {
private static final Logger LOGGER = LoggerFactory.getLogger(CatalogPage.class);
@Getter
protected final TIntArrayList offerIds = new TIntArrayList();
@Getter
protected final THashMap<Integer, CatalogPage> childPages = new THashMap<>();
@Getter
private final TIntObjectMap<CatalogItem> catalogItems = TCollections.synchronizedMap(new TIntObjectHashMap<>());
@Getter
private final ArrayList<Integer> included = new ArrayList<>();
@Getter
protected int id;
@Getter
protected int parentId;
@Getter
@Setter
protected int rank;
@Getter
protected String caption;
@Getter
protected String pageName;
@Getter
protected int iconColor;
@Getter
protected int iconImage;
@Getter
protected int orderNum;
@Getter
protected boolean visible;
@Getter
protected boolean enabled;
@Getter
protected boolean clubOnly;
@Getter
protected String layout;
@Getter
protected String headerImage;
@Getter
protected String teaserImage;
@Getter
protected String specialImage;
@Getter
protected String textOne;
@Getter
protected String textTwo;
@Getter
protected String textDetails;
@Getter
protected String textTeaser;
public CatalogPage() {
@ -71,99 +96,15 @@ public abstract class CatalogPage implements Comparable<CatalogPage>, ISerialize
if (!set.getString("includes").isEmpty()) {
for (String id : set.getString("includes").split(";")) {
try {
this.included.add(Integer.valueOf(id));
this.included.add(Integer.parseInt(id));
} catch (Exception e) {
LOGGER.error("Caught exception", e);
LOGGER.error("Failed to parse includes column value of (" + id + ") for catalog page (" + this.id + ")");
log.error("Caught exception", e);
log.error("Failed to parse includes column value of (" + id + ") for catalog page (" + this.id + ")");
}
}
}
}
public int getId() {
return this.id;
}
public int getParentId() {
return this.parentId;
}
public int getRank() {
return this.rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getCaption() {
return this.caption;
}
public String getPageName() {
return this.pageName;
}
public int getIconColor() {
return this.iconColor;
}
public int getIconImage() {
return this.iconImage;
}
public int getOrderNum() {
return this.orderNum;
}
public boolean isVisible() {
return this.visible;
}
public boolean isEnabled() {
return this.enabled;
}
public boolean isClubOnly() {
return this.clubOnly;
}
public String getLayout() {
return this.layout;
}
public String getHeaderImage() {
return this.headerImage;
}
public String getTeaserImage() {
return this.teaserImage;
}
public String getSpecialImage() {
return this.specialImage;
}
public String getTextOne() {
return this.textOne;
}
public String getTextTwo() {
return this.textTwo;
}
public String getTextDetails() {
return this.textDetails;
}
public String getTextTeaser() {
return this.textTeaser;
}
public TIntArrayList getOfferIds() {
return this.offerIds;
}
public void addOfferId(int offerId) {
this.offerIds.add(offerId);
}
@ -172,22 +113,10 @@ public abstract class CatalogPage implements Comparable<CatalogPage>, ISerialize
this.catalogItems.put(item.getId(), item);
}
public TIntObjectMap<CatalogItem> getCatalogItems() {
return this.catalogItems;
}
public CatalogItem getCatalogItem(int id) {
return this.catalogItems.get(id);
}
public ArrayList<Integer> getIncluded() {
return this.included;
}
public THashMap<Integer, CatalogPage> getChildPages() {
return this.childPages;
}
public void addChildPage(CatalogPage page) {
this.childPages.put(page.getId(), page);
@ -196,7 +125,6 @@ public abstract class CatalogPage implements Comparable<CatalogPage>, ISerialize
}
}
@SuppressWarnings("NullableProblems")
@Override
public int compareTo(CatalogPage page) {
return this.getOrderNum() - page.getOrderNum();

View File

@ -2,15 +2,16 @@ package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import com.eu.habbo.core.DatabaseLoggable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Slf4j
@AllArgsConstructor
public class CatalogPurchaseLogEntry implements Runnable, DatabaseLoggable {
private static final Logger LOGGER = LoggerFactory.getLogger(CatalogPurchaseLogEntry.class);
private static final String QUERY = "INSERT INTO `logs_shop_purchases` (timestamp, user_id, catalog_item_id, item_ids, catalog_name, cost_credits, cost_points, points_type, amount) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
private final int timestamp;
@ -23,18 +24,6 @@ public class CatalogPurchaseLogEntry implements Runnable, DatabaseLoggable {
private final int pointsType;
private final int amount;
public CatalogPurchaseLogEntry(int timestamp, int userId, int catalogItemId, String itemIds, String catalogName, int costCredits, int costPoints, int pointsType, int amount) {
this.timestamp = timestamp;
this.userId = userId;
this.catalogItemId = catalogItemId;
this.itemIds = itemIds;
this.catalogName = catalogName;
this.costCredits = costCredits;
this.costPoints = costPoints;
this.pointsType = pointsType;
this.amount = amount;
}
@Override
public String getQuery() {
return QUERY;

View File

@ -1,26 +1,32 @@
package com.eu.habbo.habbohotel.catalog;
import lombok.Getter;
import lombok.Setter;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ClothItem {
public int id;
public String name;
public int[] setId;
@Setter
@Getter
private int id;
@Getter
@Setter
private String name;
@Getter
@Setter
private int[] setId;
public ClothItem(ResultSet set) throws SQLException {
this.id = set.getInt("id");
this.name = set.getString("name");
this.setId(set.getInt("id"));
this.setName(set.getString("name"));
String[] parts = set.getString("setid").split(",");
this.setId = new int[parts.length];
for (int i = 0; i < this.setId.length; i++) {
this.setId[i] = Integer.valueOf(parts[i]);
this.setSetId(new int[parts.length]);
for (int i = 0; i < this.getSetId().length; i++) {
this.getSetId()[i] = Integer.parseInt(parts[i]);
}
}
}

View File

@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import com.eu.habbo.messages.ISerialize;
import com.eu.habbo.messages.ServerMessage;
import lombok.Getter;
import java.sql.ResultSet;
import java.sql.SQLException;
@ -11,27 +12,21 @@ import java.util.TimeZone;
public class ClubOffer implements ISerialize {
@Getter
private final int id;
@Getter
private final String name;
@Getter
private final int days;
@Getter
private final int credits;
@Getter
private final int points;
@Getter
private final int pointsType;
@Getter
private final boolean vip;
@Getter
private final boolean deal;
public ClubOffer(ResultSet set) throws SQLException {
@ -45,38 +40,6 @@ public class ClubOffer implements ISerialize {
this.deal = set.getString("deal").equals("1");
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public int getDays() {
return this.days;
}
public int getCredits() {
return this.credits;
}
public int getPoints() {
return this.points;
}
public int getPointsType() {
return this.pointsType;
}
public boolean isVip() {
return this.vip;
}
public boolean isDeal() {
return this.deal;
}
@Override
public void serialize(ServerMessage message) {
serialize(message, Emulator.getIntUnixTimestamp());

View File

@ -4,6 +4,7 @@ package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.cache.HabboOfferPurchase;
import com.eu.habbo.messages.ServerMessage;
import lombok.Getter;
import java.sql.ResultSet;
import java.sql.SQLException;
@ -11,18 +12,31 @@ import java.sql.SQLException;
public class TargetOffer {
public static int ACTIVE_TARGET_OFFER_ID = 0;
@Getter
private final int id;
@Getter
private final int catalogItem;
@Getter
private final String identifier;
@Getter
private final int priceInCredits;
@Getter
private final int priceInActivityPoints;
@Getter
private final int activityPointsType;
@Getter
private final int purchaseLimit;
@Getter
private final int expirationTime;
@Getter
private final String title;
@Getter
private final String description;
@Getter
private final String imageUrl;
@Getter
private final String icon;
@Getter
private final String[] vars;
public TargetOffer(ResultSet set) throws SQLException {
@ -62,55 +76,4 @@ public class TargetOffer {
}
}
public int getId() {
return this.id;
}
public String getIdentifier() {
return this.identifier;
}
public int getPriceInCredits() {
return this.priceInCredits;
}
public int getPriceInActivityPoints() {
return this.priceInActivityPoints;
}
public int getActivityPointsType() {
return this.activityPointsType;
}
public int getPurchaseLimit() {
return this.purchaseLimit;
}
public int getExpirationTime() {
return this.expirationTime;
}
public String getTitle() {
return this.title;
}
public String getDescription() {
return this.description;
}
public String getImageUrl() {
return this.imageUrl;
}
public String getIcon() {
return this.icon;
}
public String[] getVars() {
return this.vars;
}
public int getCatalogItem() {
return this.catalogItem;
}
}

View File

@ -1,8 +1,8 @@
package com.eu.habbo.habbohotel.catalog;
import com.eu.habbo.Emulator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -11,17 +11,23 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class Voucher {
private static final Logger LOGGER = LoggerFactory.getLogger(Voucher.class);
public final int id;
public final String code;
public final int credits;
public final int points;
public final int pointsType;
public final int catalogItemId;
public final int amount;
public final int limit;
private final int id;
@Getter
private final String code;
@Getter
private final int credits;
@Getter
private final int points;
@Getter
private final int pointsType;
@Getter
private final int catalogItemId;
private final int amount;
private final int limit;
private final List<VoucherHistoryEntry> history = new ArrayList<>();
public Voucher(ResultSet set) throws SQLException {
@ -46,7 +52,7 @@ public class Voucher {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -69,7 +75,8 @@ public class Voucher {
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}

View File

@ -1,11 +1,18 @@
package com.eu.habbo.habbohotel.catalog;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.sql.ResultSet;
import java.sql.SQLException;
@AllArgsConstructor
public class VoucherHistoryEntry {
@Getter
private final int voucherId;
@Getter
private final int userId;
@Getter
private final int timestamp;
public VoucherHistoryEntry(ResultSet set) throws SQLException {
@ -14,21 +21,4 @@ public class VoucherHistoryEntry {
this.timestamp = set.getInt("timestamp");
}
public VoucherHistoryEntry(int voucherId, int userId, int timestamp) {
this.voucherId = voucherId;
this.userId = userId;
this.timestamp = timestamp;
}
public int getVoucherId() {
return voucherId;
}
public int getUserId() {
return userId;
}
public int getTimestamp() {
return timestamp;
}
}

View File

@ -8,23 +8,20 @@ import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomManager;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
import com.eu.habbo.messages.outgoing.navigator.CanCreateRoomComposer;
import gnu.trove.map.TIntObjectMap;
import gnu.trove.map.hash.THashMap;
import gnu.trove.procedure.TObjectProcedure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.Map;
@Slf4j
public class RoomBundleLayout extends SingleBundle {
private static final Logger LOGGER = LoggerFactory.getLogger(RoomBundleLayout.class);
public int roomId;
public Room room;
private final int roomId;
private Room room;
private int lastUpdate = 0;
private boolean loaded = false;
@ -48,7 +45,7 @@ public class RoomBundleLayout extends SingleBundle {
if (this.room != null)
this.room.preventUnloading = true;
} else {
LOGGER.error("No room id specified for room bundle " + this.getPageName() + "(" + this.getId() + ")");
log.error("No room id specified for room bundle " + this.getPageName() + "(" + this.getId() + ")");
}
}
@ -58,15 +55,12 @@ public class RoomBundleLayout extends SingleBundle {
final CatalogItem[] item = {null};
super.getCatalogItems().forEachValue(new TObjectProcedure<CatalogItem>() {
@Override
public boolean execute(CatalogItem object) {
if (object == null)
return true;
super.getCatalogItems().forEachValue(object -> {
if (object == null)
return true;
item[0] = object;
return false;
}
item[0] = object;
return false;
});
if (this.room.isPreLoaded()) {
@ -96,7 +90,7 @@ public class RoomBundleLayout extends SingleBundle {
}
if (!item[0].getExtradata().isEmpty()) {
items.put(Emulator.getGameEnvironment().getItemManager().getItem(Integer.valueOf(item[0].getExtradata())), 1);
items.put(Emulator.getGameEnvironment().getItemManager().getItem(Integer.parseInt(item[0].getExtradata())), 1);
}
StringBuilder data = new StringBuilder();
@ -190,7 +184,7 @@ public class RoomBundleLayout extends SingleBundle {
statement.setInt(3, this.room.getId());
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -224,7 +218,7 @@ public class RoomBundleLayout extends SingleBundle {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
Room r = Emulator.getGameEnvironment().getRoomManager().loadRoom(roomId);
@ -241,7 +235,7 @@ public class RoomBundleLayout extends SingleBundle {
keys.put("image", "${image.library.url}/notifications/room_bundle_" + this.getId() + ".png");
if (habbo != null) {
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.PURCHASING_ROOM.key, keys));
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.PURCHASING_ROOM.getKey(), keys));
}
}
}

View File

@ -8,16 +8,15 @@ import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.incoming.catalog.marketplace.GetMarketplaceOffersEvent;
import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceBuyOfferResultComposer;
import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceCancelOfferResultComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListRemoveComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import com.eu.habbo.messages.outgoing.users.CreditBalanceComposer;
import com.eu.habbo.plugin.events.marketplace.MarketPlaceItemCancelledEvent;
import com.eu.habbo.plugin.events.marketplace.MarketPlaceItemOfferedEvent;
import com.eu.habbo.plugin.events.marketplace.MarketPlaceItemSoldEvent;
import gnu.trove.set.hash.THashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
@ -27,8 +26,8 @@ import java.util.ArrayList;
import java.util.List;
@Slf4j
public class MarketPlace {
private static final Logger LOGGER = LoggerFactory.getLogger(MarketPlace.class);
//Configuration. Loaded from database & updated accordingly.
public static boolean MARKETPLACE_ENABLED = true;
@ -47,7 +46,7 @@ public class MarketPlace {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return offers;
@ -105,7 +104,7 @@ public class MarketPlace {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
habbo.getClient().sendResponse(new MarketplaceCancelOfferResultComposer(offer, false));
}
}
@ -169,7 +168,7 @@ public class MarketPlace {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return offers;
@ -199,7 +198,7 @@ public class MarketPlace {
message.appendInt(1);
message.appendInt(itemId);
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -214,7 +213,7 @@ public class MarketPlace {
number = set.getInt("number");
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return number;
@ -232,7 +231,7 @@ public class MarketPlace {
avg = set.getInt("avg");
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
return calculateCommision(avg);
@ -279,7 +278,7 @@ public class MarketPlace {
client.getHabbo().getInventory().getItemsComponent().addItem(item);
if (MARKETPLACE_CURRENCY == 0) {
client.getHabbo().getHabboInfo().addCredits(-event.price);
client.getHabbo().giveCredits(-event.price);
} else {
client.getHabbo().givePoints(MARKETPLACE_CURRENCY, -event.price);
}
@ -300,22 +299,23 @@ public class MarketPlace {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
public static void sendErrorMessage(GameClient client, int baseItemId, int offerId) {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT marketplace_items.*, COUNT( * ) AS count\n" +
"FROM marketplace_items\n" +
"INNER JOIN items ON marketplace_items.item_id = items.id\n" +
"INNER JOIN items_base ON items.item_id = items_base.id\n" +
"WHERE items_base.sprite_id = ( \n" +
"SELECT items_base.sprite_id\n" +
"FROM items_base\n" +
"WHERE items_base.id = ? LIMIT 1)\n" +
"ORDER BY price ASC\n" +
"LIMIT 1", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
"""
FROM marketplace_items
INNER JOIN items ON marketplace_items.item_id = items.id
INNER JOIN items_base ON items.item_id = items_base.id
WHERE items_base.sprite_id = (
SELECT items_base.sprite_id
FROM items_base
WHERE items_base.id = ? LIMIT 1)
ORDER BY price ASC
LIMIT 1""", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)) {
statement.setInt(1, baseItemId);
try (ResultSet countSet = statement.executeQuery()) {
countSet.last();
@ -327,7 +327,7 @@ public class MarketPlace {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -373,7 +373,7 @@ public class MarketPlace {
client.getHabbo().getInventory().removeMarketplaceOffer(offer);
credits += offer.getPrice();
removeUser(offer);
offer.needsUpdate(true);
offer.setNeedsUpdate(true);
Emulator.getThreading().run(offer);
}
}
@ -381,7 +381,7 @@ public class MarketPlace {
offers.clear();
if (MARKETPLACE_CURRENCY == 0) {
client.getHabbo().getHabboInfo().addCredits(credits);
client.getHabbo().giveCredits(credits);
} else {
client.getHabbo().givePoints(MARKETPLACE_CURRENCY, credits);
}
@ -394,7 +394,7 @@ public class MarketPlace {
statement.setInt(2, offer.getOfferId());
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}

View File

@ -5,25 +5,38 @@ import com.eu.habbo.habbohotel.items.FurnitureType;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
@Slf4j
public class MarketPlaceOffer implements Runnable {
private static final Logger LOGGER = LoggerFactory.getLogger(MarketPlaceOffer.class);
public int avarage;
public int average;
public int count;
@Getter
@Setter
private int offerId;
private Item baseItem;
private int itemId;
private final Item baseItem;
private final int itemId;
@Getter
private int price;
@Getter
private int limitedStack;
@Getter
private int limitedNumber;
@Getter
private int timestamp = Emulator.getIntUnixTimestamp();
@Getter
@Setter
private int soldTimestamp = 0;
@Getter
@Setter
private MarketPlaceState state = MarketPlaceState.OPEN;
@Setter
private boolean needsUpdate = false;
public MarketPlaceOffer(ResultSet set, boolean privateOffer) throws SQLException {
@ -36,12 +49,12 @@ public class MarketPlaceOffer implements Runnable {
this.itemId = set.getInt("item_id");
if (!set.getString("ltd_data").split(":")[1].equals("0")) {
this.limitedStack = Integer.valueOf(set.getString("ltd_data").split(":")[0]);
this.limitedNumber = Integer.valueOf(set.getString("ltd_data").split(":")[1]);
this.limitedStack = Integer.parseInt(set.getString("ltd_data").split(":")[0]);
this.limitedNumber = Integer.parseInt(set.getString("ltd_data").split(":")[1]);
}
if (!privateOffer) {
this.avarage = set.getInt("avg");
this.average = set.getInt("avg");
this.count = set.getInt("number");
this.price = set.getInt("minPrice");
}
@ -70,7 +83,7 @@ public class MarketPlaceOffer implements Runnable {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
@ -90,69 +103,10 @@ public class MarketPlaceOffer implements Runnable {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
public int getOfferId() {
return this.offerId;
}
public void setOfferId(int offerId) {
this.offerId = offerId;
}
public int getItemId() {
return this.baseItem.getSpriteId();
}
public int getPrice() {
return this.price;
}
public MarketPlaceState getState() {
return this.state;
}
public void setState(MarketPlaceState state) {
this.state = state;
}
public int getTimestamp() {
return this.timestamp;
}
public int getSoldTimestamp() {
return this.soldTimestamp;
}
public void setSoldTimestamp(int soldTimestamp) {
this.soldTimestamp = soldTimestamp;
}
public int getLimitedStack() {
return this.limitedStack;
}
public int getLimitedNumber() {
return this.limitedNumber;
}
public int getSoldItemId() {
return this.itemId;
}
public void needsUpdate(boolean value) {
this.needsUpdate = value;
}
public int getType() {
if (this.limitedStack > 0) {
return 3;
}
return this.baseItem.getType().equals(FurnitureType.WALL) ? 2 : 1;
}
@Override
public void run() {
@ -164,8 +118,25 @@ public class MarketPlaceOffer implements Runnable {
statement.setInt(3, this.offerId);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}
public int getType() {
if (this.limitedStack > 0) {
return 3;
}
return this.baseItem.getType().equals(FurnitureType.WALL) ? 2 : 1;
}
public int getItemId() {
return this.baseItem.getSpriteId();
}
public int getSoldItemId() {
return this.itemId;
}
}

View File

@ -1,36 +1,27 @@
package com.eu.habbo.habbohotel.catalog.marketplace;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public enum MarketPlaceState {
OPEN(1),
SOLD(2),
CLOSED(3);
private final int state;
MarketPlaceState(int state) {
this.state = state;
}
public static MarketPlaceState getType(int type) {
switch (type) {
case 1:
return OPEN;
case 2:
return SOLD;
case 3:
return CLOSED;
}
return switch (type) {
case 1 -> OPEN;
case 2 -> SOLD;
case 3 -> CLOSED;
default -> CLOSED;
};
return CLOSED;
}
public int getState() {
return this.state;
}
}

View File

@ -3,15 +3,14 @@ package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.YoutubeManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Slf4j
public class AddYoutubePlaylistCommand extends Command {
private static final Logger LOGGER = LoggerFactory.getLogger(AddYoutubePlaylistCommand.class);
public AddYoutubePlaylistCommand() {
super("cmd_add_youtube_playlist", Emulator.getTexts().getValue("commands.keys.cmd_add_youtube_playlist").split(";"));
@ -53,7 +52,7 @@ public class AddYoutubePlaylistCommand extends Command {
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_add_youtube_playlist"));

View File

@ -6,16 +6,15 @@ 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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@Slf4j
public class BadgeCommand extends Command {
private static final Logger LOGGER = LoggerFactory.getLogger(BadgeCommand.class);
public BadgeCommand() {
super("cmd_badge", Emulator.getTexts().getValue("commands.keys.cmd_badge").split(";"));
@ -64,7 +63,6 @@ public class BadgeCommand extends Command {
if (found) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_badge.already_owns").replace("%user%", params[1]).replace("%badge%", params[2]), RoomChatMessageBubbles.ALERT);
return true;
} else {
try (PreparedStatement statement = connection.prepareStatement("INSERT INTO users_badges (`id`, `user_id`, `slot_id`, `badge_code`) VALUES (null, ?, 0, ?)")) {
statement.setInt(1, habboInfo.getId());
@ -73,10 +71,10 @@ public class BadgeCommand extends Command {
}
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_badge.given").replace("%user%", params[1]).replace("%badge%", params[2]), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
}
}

View File

@ -28,7 +28,7 @@ public class BanCommand extends Command {
int banTime;
try {
banTime = Integer.valueOf(params[2]);
banTime = Integer.parseInt(params[2]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.invalid_time"), RoomChatMessageBubbles.ALERT);
return true;
@ -39,7 +39,7 @@ public class BanCommand extends Command {
return true;
}
if (params[1].toLowerCase().equals(gameClient.getHabbo().getHabboInfo().getUsername().toLowerCase())) {
if (params[1].equalsIgnoreCase(gameClient.getHabbo().getHabboInfo().getUsername())) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_ban.ban_self"), RoomChatMessageBubbles.ALERT);
return true;
}
@ -73,7 +73,7 @@ public class BanCommand extends Command {
}
ModToolBan ban = Emulator.getGameEnvironment().getModToolManager().ban(target.getId(), gameClient.getHabbo(), reason.toString(), banTime, ModToolBanType.ACCOUNT, -1).get(0);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_ban.ban_issued").replace("%user%", target.getUsername()).replace("%time%", ban.expireDate - Emulator.getIntUnixTimestamp() + "").replace("%reason%", ban.reason), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_ban.ban_issued").replace("%user%", target.getUsername()).replace("%time%", ban.getExpireDate() - Emulator.getIntUnixTimestamp() + "").replace("%reason%", ban.getReason()), RoomChatMessageBubbles.ALERT);
return true;
}

View File

@ -12,8 +12,8 @@ public class BlockAlertCommand extends Command {
@Override
public boolean handle(GameClient gameClient, String[] params) throws Exception {
if (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null) {
gameClient.getHabbo().getHabboStats().blockStaffAlerts = !gameClient.getHabbo().getHabboStats().blockStaffAlerts;
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_blockalert").replace("%state%", (gameClient.getHabbo().getHabboStats().blockStaffAlerts ? Emulator.getTexts().getValue("generic.on") : Emulator.getTexts().getValue("generic.off"))), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().getHabboStats().setBlockStaffAlerts(!gameClient.getHabbo().getHabboStats().isBlockStaffAlerts());
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_blockalert").replace("%state%", (gameClient.getHabbo().getHabboStats().isBlockStaffAlerts() ? Emulator.getTexts().getValue("generic.on") : Emulator.getTexts().getValue("generic.off"))), RoomChatMessageBubbles.ALERT);
return true;
}

View File

@ -32,7 +32,7 @@ public class CalendarCommand extends Command {
int daysBetween = (int) DAYS.between(new Timestamp(campaign.getStartTimestamp() * 1000L).toInstant(), new Date().toInstant());
if (daysBetween >= 0) {
gameClient.sendResponse(new CampaignCalendarDataMessageComposer(campaign.getName(), campaign.getImage(), campaign.getTotalDays(), daysBetween, gameClient.getHabbo().getHabboStats().calendarRewardsClaimed, campaign.getLockExpired()));
gameClient.sendResponse(new CampaignCalendarDataMessageComposer(campaign.getName(), campaign.getImage(), campaign.getTotalDays(), daysBetween, gameClient.getHabbo().getHabboStats().getCalendarRewardsClaimed(), campaign.getLockExpired()));
gameClient.sendResponse(new InClientLinkMessageComposer("openView/calendar"));
}
}

View File

@ -15,7 +15,7 @@ public class ChangeNameCommand extends Command {
// check if there are no params
if (params.length < 2) {
gameClient.getHabbo().getHabboStats().allowNameChange = !gameClient.getHabbo().getHabboStats().allowNameChange;
gameClient.getHabbo().getHabboStats().setAllowNameChange(!gameClient.getHabbo().getHabboStats().isAllowNameChange());
gameClient.sendResponse(new UserObjectComposer(gameClient.getHabbo()));
return true;
}
@ -31,7 +31,7 @@ public class ChangeNameCommand extends Command {
// this runs if params[1] is a valid habbo
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_changename.done").replace("%user%", params[1]));
habbo.alert(Emulator.getTexts().getValue("commands.succes.cmd_changename.received"));
habbo.getHabboStats().allowNameChange = !habbo.getHabboStats().allowNameChange;
habbo.getHabboStats().setAllowNameChange(!habbo.getHabboStats().isAllowNameChange());
habbo.getClient().sendResponse(new UserObjectComposer(habbo));
return true;
}

View File

@ -17,7 +17,7 @@ public class ChatTypeCommand extends Command {
if (params.length >= 2) {
int chatColor;
try {
chatColor = Integer.valueOf(params[1]);
chatColor = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_chatcolor.numbers"), RoomChatMessageBubbles.ALERT);
return true;
@ -34,21 +34,20 @@ public class ChatTypeCommand extends Command {
if (!gameClient.getHabbo().hasPermission(Permission.ACC_ANYCHATCOLOR)) {
for (String s : Emulator.getConfig().getValue("commands.cmd_chatcolor.banned_numbers").split(";")) {
if (Integer.valueOf(s) == chatColor) {
if (Integer.parseInt(s) == chatColor) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_chatcolor.banned"), RoomChatMessageBubbles.ALERT);
return true;
}
}
}
gameClient.getHabbo().getHabboStats().chatColor = RoomChatMessageBubbles.getBubble(chatColor);
gameClient.getHabbo().getHabboStats().setChatColor(RoomChatMessageBubbles.getBubble(chatColor));
gameClient.sendResponse(new AccountPreferencesComposer(gameClient.getHabbo()));
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_chatcolor.set").replace("%chat%", RoomChatMessageBubbles.values()[chatColor].name().replace("_", " ").toLowerCase()), RoomChatMessageBubbles.ALERT);
return true;
} else {
gameClient.getHabbo().getHabboStats().chatColor = RoomChatMessageBubbles.NORMAL;
gameClient.getHabbo().getHabboStats().setChatColor(RoomChatMessageBubbles.NORMAL);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_chatcolor.reset"), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
}
}

View File

@ -1,19 +1,14 @@
package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public abstract class Command {
public final String permission;
public final String[] keys;
public Command(String permission, String[] keys) {
this.permission = permission;
this.keys = keys;
}
public abstract boolean handle(GameClient gameClient, String[] params) throws Exception;
}

View File

@ -16,30 +16,25 @@ import com.eu.habbo.plugin.events.users.UserCommandEvent;
import com.eu.habbo.plugin.events.users.UserExecuteCommandEvent;
import gnu.trove.iterator.TIntObjectIterator;
import gnu.trove.map.hash.THashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.NoSuchElementException;
@Slf4j
public class CommandHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(CommandHandler.class);
private final static THashMap<String, Command> commands = new THashMap<>(5);
private static final Comparator<Command> ALPHABETICAL_ORDER = new Comparator<Command>() {
public int compare(Command c1, Command c2) {
int res = String.CASE_INSENSITIVE_ORDER.compare(c1.permission, c2.permission);
return (res != 0) ? res : c1.permission.compareTo(c2.permission);
}
private static final Comparator<Command> ALPHABETICAL_ORDER = (c1, c2) -> {
int res = String.CASE_INSENSITIVE_ORDER.compare(c1.permission, c2.permission);
return (res != 0) ? res : c1.permission.compareTo(c2.permission);
};
public CommandHandler() {
long millis = System.currentTimeMillis();
this.reloadCommands();
LOGGER.info("Command Handler -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
log.info("Command Handler -> Loaded! (" + (System.currentTimeMillis() - millis) + " MS)");
}
public static void addCommand(Command command) {
@ -54,9 +49,9 @@ public class CommandHandler {
try {
//command.getConstructor().setAccessible(true);
addCommand(command.newInstance());
LOGGER.debug("Added command: {}", command.getName());
log.debug("Added command: {}", command.getName());
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
@ -71,7 +66,7 @@ public class CommandHandler {
if (parts.length >= 1) {
for (Command command : commands.values()) {
for (String s : command.keys) {
if (s.toLowerCase().equals(parts[0].toLowerCase())) {
if (s.equalsIgnoreCase(parts[0])) {
boolean succes = false;
if (command.permission == null || gameClient.getHabbo().hasPermission(command.permission, gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && (gameClient.getHabbo().getHabboInfo().getCurrentRoom().hasRights(gameClient.getHabbo())) || gameClient.getHabbo().hasPermission(Permission.ACC_PLACEFURNI) || (gameClient.getHabbo().getHabboInfo().getCurrentRoom() != null && gameClient.getHabbo().getHabboInfo().getCurrentRoom().getGuildId() > 0 && gameClient.getHabbo().getHabboInfo().getCurrentRoom().getGuildRightLevel(gameClient.getHabbo()).isEqualOrGreaterThan(RoomRightLevels.GUILD_RIGHTS)))) {
try {
@ -90,7 +85,7 @@ public class CommandHandler {
succes = event.succes;
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
if (gameClient.getHabbo().getHabboInfo().getRank().isLogCommands()) {
@ -137,7 +132,7 @@ public class CommandHandler {
s = new StringBuilder(s.substring(0, s.length() - 1));
for (PetCommand command : pet.getPetData().getPetCommands()) {
if (command.key.equalsIgnoreCase(s.toString())) {
if (command.getKey().equalsIgnoreCase(s.toString())) {
if (pet instanceof RideablePet && ((RideablePet) pet).getRider() != null) {
if (((RideablePet) pet).getRider().getHabboInfo().getId() == gameClient.getHabbo().getHabboInfo().getId()) {
((RideablePet) pet).getRider().getHabboInfo().dismountPet();
@ -145,7 +140,7 @@ public class CommandHandler {
break;
}
if (command.level <= pet.getLevel())
if (command.getLevel() <= pet.getLevel())
pet.handleCommand(command, gameClient.getHabbo(), args);
else
pet.say(pet.getPetData().randomVocal(PetVocalsType.UNKNOWN_COMMAND));
@ -307,7 +302,7 @@ public class CommandHandler {
if (allowedCommands.contains(command))
continue;
if (permissions.contains(command.permission) && permissions.get(command.permission).setting != PermissionSetting.DISALLOWED) {
if (permissions.contains(command.permission) && permissions.get(command.permission).getSetting() != PermissionSetting.DISALLOWED) {
allowedCommands.add(command);
}
}
@ -320,6 +315,6 @@ public class CommandHandler {
public void dispose() {
commands.clear();
LOGGER.info("Command Handler -> Disposed!");
log.info("Command Handler -> Disposed!");
}
}

View File

@ -35,7 +35,6 @@ public class ControlCommand extends Command {
gameClient.getHabbo().getRoomUnit().getCacheable().put("control", target);
target.getRoomUnit().getCacheable().put("controller", gameClient.getHabbo());
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_control.controlling").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
} else {
Object habbo = gameClient.getHabbo().getRoomUnit().getCacheable().get("control");
@ -44,8 +43,8 @@ public class ControlCommand extends Command {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_control.stopped").replace("%user%", ((Habbo) habbo).getHabboInfo().getUsername()), RoomChatMessageBubbles.ALERT);
}
return true;
}
return true;
}
return true;

View File

@ -24,20 +24,20 @@ public class CoordsCommand extends Command {
Emulator.getTexts().getValue("generic.rotation.head") + ": " + gameClient.getHabbo().getRoomUnit().getHeadRotation() + "-" + gameClient.getHabbo().getRoomUnit().getHeadRotation().getValue() + "\r" +
Emulator.getTexts().getValue("generic.rotation.body") + ": " + gameClient.getHabbo().getRoomUnit().getBodyRotation() + "-" + gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue() + "\r" +
Emulator.getTexts().getValue("generic.sitting") + ": " + (gameClient.getHabbo().getRoomUnit().hasStatus(RoomUnitStatus.SIT) ? Emulator.getTexts().getValue("generic.yes") : Emulator.getTexts().getValue("generic.no")) + "\r" +
"Tile State: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).state.name() + "\r" +
"Tile State: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).getState().name() + "\r" +
"Tile Walkable: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).isWalkable() + "\r" +
"Tile relative height: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).relativeHeight() + "\r" +
"Tile stack height: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(gameClient.getHabbo().getRoomUnit().getX(), gameClient.getHabbo().getRoomUnit().getY()).getStackHeight());
} else {
RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(Short.valueOf(params[1]), Short.valueOf(params[2]));
RoomTile tile = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTile(Short.parseShort(params[1]), Short.parseShort(params[2]));
if (tile != null) {
gameClient.getHabbo().alert(Emulator.getTexts().getValue("commands.generic.cmd_coords.title") + "\r\n" +
"x: " + tile.x + "\r" +
"y: " + tile.y + "\r" +
"z: " + tile.z + "\r" +
"Tile State: " + tile.state.name() + "\r" +
"x: " + tile.getX() + "\r" +
"y: " + tile.getY() + "\r" +
"z: " + tile.getZ() + "\r" +
"Tile State: " + tile.getState().name() + "\r" +
"Tile Relative Height: " + tile.relativeHeight() + "\r" +
"Tile Stack Height: " + tile.getStackHeight() + "\r" +
"Tile Walkable: " + (tile.isWalkable() ? "Yes" : "No") + "\r");

View File

@ -17,7 +17,7 @@ public class DisconnectCommand extends Command {
return true;
}
if (params[1].toLowerCase().equals(gameClient.getHabbo().getHabboInfo().getUsername().toLowerCase())) {
if (params[1].equalsIgnoreCase(gameClient.getHabbo().getHabboInfo().getUsername())) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_disconnect.disconnect_self"), RoomChatMessageBubbles.ALERT);
return true;
}

View File

@ -6,8 +6,8 @@ import com.eu.habbo.habbohotel.permissions.Permission;
import com.eu.habbo.habbohotel.pets.Pet;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.outgoing.inventory.PetInventoryComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.inventory.PetInventoryComposer;
import gnu.trove.map.hash.TIntObjectHashMap;
public class EmptyPetsInventoryCommand extends Command {

View File

@ -5,12 +5,10 @@ import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.permissions.Permission;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.users.Habbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class EnableCommand extends Command {
private static final Logger LOGGER = LoggerFactory.getLogger(EnableCommand.class);
public EnableCommand() {
super("cmd_enable", Emulator.getTexts().getValue("commands.keys.cmd_enable").split(";"));
}
@ -43,7 +41,7 @@ public class EnableCommand extends Command {
}
}
} catch (Exception e) {
LOGGER.error("Caught exception", e);
log.error("Caught exception", e);
}
}
}

View File

@ -37,8 +37,9 @@ public class EventCommand extends Command {
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
Habbo habbo = set.getValue();
if (habbo.getHabboStats().blockStaffAlerts)
if (habbo.getHabboStats().isBlockStaffAlerts()) {
continue;
}
habbo.getClient().sendResponse(msg);
}

View File

@ -36,7 +36,7 @@ public class FacelessCommand extends Command {
}
}
} catch (Exception e) {
} catch (Exception ignored) {
}
}

View File

@ -4,15 +4,14 @@ import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.modtool.WordFilter;
import com.eu.habbo.habbohotel.modtool.WordFilterWord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Slf4j
public class FilterWordCommand extends Command {
private static final Logger LOGGER = LoggerFactory.getLogger(FilterWordCommand.class);
public FilterWordCommand() {
super("cmd_filterword", Emulator.getTexts().getValue("commands.keys.cmd_filterword").split(";"));
@ -39,7 +38,7 @@ public class FilterWordCommand extends Command {
statement.setString(2, replacement);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_filterword.error"));
return true;
}

View File

@ -23,13 +23,12 @@ public class FreezeCommand extends Command {
habbo.getRoomUnit().setCanWalk(false);
habbo.whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.frozen"), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_freeze.user_frozen").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
} else {
habbo.getRoomUnit().setCanWalk(true);
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);
return true;
}
return true;
}
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_freeze.not_found").replace("%user%", ""), RoomChatMessageBubbles.ALERT);

View File

@ -8,8 +8,8 @@ import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboInfo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.habbohotel.users.HabboManager;
import com.eu.habbo.messages.outgoing.generic.alerts.NotificationDialogMessageComposer;
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;
@ -25,7 +25,7 @@ public class GiftCommand extends Command {
int itemId;
try {
itemId = Integer.valueOf(params[2]);
itemId = Integer.parseInt(params[2]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_gift.not_a_number"), RoomChatMessageBubbles.ALERT);
return true;
@ -80,7 +80,7 @@ public class GiftCommand extends Command {
keys.put("display", "BUBBLE");
keys.put("image", "${image.library.url}notifications/gift.gif");
keys.put("message", Emulator.getTexts().getValue("generic.gift.received.anonymous"));
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.key, keys));
habbo.getClient().sendResponse(new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys));
}
return true;
}

View File

@ -28,7 +28,7 @@ public class GiveRankCommand extends Command {
if (params.length == 3) {
if (StringUtils.isNumeric(params[2])) {
int rankId = Integer.valueOf(params[2]);
int rankId = Integer.parseInt(params[2]);
if (Emulator.getGameEnvironment().getPermissionsManager().rankExists(rankId))
rank = Emulator.getGameEnvironment().getPermissionsManager().getRank(rankId);
} else {
@ -52,11 +52,10 @@ public class GiveRankCommand extends Command {
Emulator.getGameEnvironment().getHabboManager().setRank(habbo.getId(), rank.getId());
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_give_rank.updated").replace("%id%", rank.getName()).replace("%username%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_give_rank.user_offline").replace("%id%", rank.getName()).replace("%username%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
}
}

View File

@ -27,7 +27,7 @@ public class HotelAlertCommand extends Command {
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
Habbo habbo = set.getValue();
if (habbo.getHabboStats().blockStaffAlerts)
if (habbo.getHabboStats().isBlockStaffAlerts())
continue;
habbo.getClient().sendResponse(msg);

View File

@ -6,9 +6,9 @@ import com.eu.habbo.habbohotel.rooms.RoomLayout;
import com.eu.habbo.habbohotel.rooms.RoomUnit;
import com.eu.habbo.habbohotel.wired.WiredHandler;
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
import com.eu.habbo.messages.outgoing.rooms.users.RoomUsersComposer;
import com.eu.habbo.messages.outgoing.rooms.users.UserRemoveMessageComposer;
import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer;
import com.eu.habbo.messages.outgoing.rooms.users.RoomUsersComposer;
import com.eu.habbo.threading.runnables.RoomUnitTeleport;
public class InvisibleCommand extends Command {
@ -23,7 +23,7 @@ public class InvisibleCommand extends Command {
if (roomUnit.isInvisible()) {
RoomLayout roomLayout = roomUnit.getRoom().getLayout();
new RoomUnitTeleport(roomUnit, roomUnit.getRoom(), roomLayout.getDoorTile().x, roomLayout.getDoorTile().y, roomLayout.getDoorTile().z, 0).run();
new RoomUnitTeleport(roomUnit, roomUnit.getRoom(), roomLayout.getDoorTile().getX(), roomLayout.getDoorTile().getY(), roomLayout.getDoorTile().getZ(), 0).run();
roomUnit.setInvisible(false);
roomUnit.setInRoom(true);

View File

@ -7,8 +7,8 @@ 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.NotificationDialogMessageComposer;
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;
@ -31,7 +31,7 @@ public class MassBadgeCommand extends Command {
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.key, keys).compose();
ServerMessage message = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {
Habbo habbo = set.getValue();
@ -40,18 +40,17 @@ public class MassBadgeCommand extends Command {
if (habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
HabboBadge b = BadgesComponent.createBadge(badge, habbo);
if (b != null) {
habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
habbo.getClient().sendResponse(message);
}
habbo.getClient().sendResponse(new BadgeReceivedComposer(b));
habbo.getClient().sendResponse(message);
}
}
}
return true;
}
return true;
}
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massbadge.no_badge"), RoomChatMessageBubbles.ALERT);
return true;
}
}

View File

@ -19,7 +19,7 @@ public class MassCreditsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(params[1]);
amount = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -7,8 +7,8 @@ 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.NotificationDialogMessageComposer;
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;
@ -25,7 +25,7 @@ public class MassGiftCommand extends Command {
int itemId;
try {
itemId = Integer.valueOf(params[1]);
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;
@ -57,7 +57,7 @@ public class MassGiftCommand extends Command {
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.key, keys).compose();
ServerMessage giftNotificiationMessage = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
Emulator.getThreading().run(() -> {
for (Map.Entry<Integer, Habbo> set : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().entrySet()) {

View File

@ -18,7 +18,7 @@ public class MassPixelsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(params[1]);
amount = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -19,7 +19,7 @@ public class MassPointsCommand extends Command {
if (params.length == 3) {
amountString = params[1];
try {
type = Integer.valueOf(params[2]);
type = Integer.parseInt(params[2]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
return true;
@ -48,7 +48,7 @@ public class MassPointsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(amountString);
amount = Integer.parseInt(amountString);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -11,8 +11,8 @@ public class MuteBotsCommand extends Command {
@Override
public boolean handle(GameClient gameClient, String[] params) throws Exception {
gameClient.getHabbo().getHabboStats().ignoreBots = !gameClient.getHabbo().getHabboStats().ignoreBots;
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute_bots." + (gameClient.getHabbo().getHabboStats().ignoreBots ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().getHabboStats().setIgnoreBots(!gameClient.getHabbo().getHabboStats().isIgnoreBots());
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute_bots." + (gameClient.getHabbo().getHabboStats().isIgnoreBots() ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
return true;
}
}

View File

@ -33,7 +33,7 @@ public class MuteCommand extends Command {
if (params.length == 3) {
try {
duration = Integer.valueOf(params[2]);
duration = Integer.parseInt(params[2]);
if (duration <= 0)
throw new Exception("");

View File

@ -11,8 +11,8 @@ public class MutePetsCommand extends Command {
@Override
public boolean handle(GameClient gameClient, String[] params) throws Exception {
gameClient.getHabbo().getHabboStats().ignorePets = !gameClient.getHabbo().getHabboStats().ignorePets;
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute_pets." + (gameClient.getHabbo().getHabboStats().ignorePets ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().getHabboStats().setIgnorePets(!gameClient.getHabbo().getHabboStats().isIgnorePets());
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_mute_pets." + (gameClient.getHabbo().getHabboStats().isIgnorePets() ? "ignored" : "unignored")), RoomChatMessageBubbles.ALERT);
return true;
}
}

View File

@ -2,10 +2,8 @@ package com.eu.habbo.habbohotel.commands;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.pets.Pet;
import com.eu.habbo.habbohotel.pets.PetManager;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import gnu.trove.procedure.TIntObjectProcedure;
public class PetInfoCommand extends Command {
public PetInfoCommand() {
@ -20,30 +18,27 @@ public class PetInfoCommand extends Command {
String name = params[1];
gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentPets().forEachEntry(new TIntObjectProcedure<Pet>() {
@Override
public boolean execute(int a, Pet pet) {
if (pet.getName().equalsIgnoreCase(name)) {
gameClient.getHabbo().alert("" +
Emulator.getTexts().getValue("commands.generic.cmd_pet_info.title") + ": " + pet.getName() + "\r\n" +
Emulator.getTexts().getValue("generic.pet.id") + ": " + pet.getId() + "\r" +
Emulator.getTexts().getValue("generic.pet.name") + ": " + pet.getName() + "\r" +
Emulator.getTexts().getValue("generic.pet.age") + ": " + pet.daysAlive() + " " + Emulator.getTexts().getValue("generic.pet.days.alive") + "\r" +
Emulator.getTexts().getValue("generic.pet.level") + ": " + pet.getLevel() + "\r" +
"\r" +
Emulator.getTexts().getValue("commands.generic.cmd_pet_info.stats") + "\r\n" +
Emulator.getTexts().getValue("generic.pet.scratches") + ": " + pet.getRespect() + "\r" +
Emulator.getTexts().getValue("generic.pet.energy") + ": " + pet.getEnergy() + "/" + PetManager.maxEnergy(pet.getLevel()) + "\r" +
Emulator.getTexts().getValue("generic.pet.happyness") + ": " + pet.getHappyness() + "\r" +
Emulator.getTexts().getValue("generic.pet.level.thirst") + ": " + pet.levelThirst + "\r" +
Emulator.getTexts().getValue("generic.pet.level.hunger") + ": " + pet.levelHunger + "\r" +
Emulator.getTexts().getValue("generic.pet.current_action") + ": " + (pet.getTask() == null ? Emulator.getTexts().getValue("generic.nothing") : pet.getTask().name()) + "\r" +
Emulator.getTexts().getValue("generic.can.walk") + ": " + (pet.getRoomUnit().canWalk() ? Emulator.getTexts().getValue("generic.yes") : Emulator.getTexts().getValue("generic.no")) + ""
);
}
return true;
gameClient.getHabbo().getHabboInfo().getCurrentRoom().getCurrentPets().forEachEntry((a, pet) -> {
if (pet.getName().equalsIgnoreCase(name)) {
gameClient.getHabbo().alert("" +
Emulator.getTexts().getValue("commands.generic.cmd_pet_info.title") + ": " + pet.getName() + "\r\n" +
Emulator.getTexts().getValue("generic.pet.id") + ": " + pet.getId() + "\r" +
Emulator.getTexts().getValue("generic.pet.name") + ": " + pet.getName() + "\r" +
Emulator.getTexts().getValue("generic.pet.age") + ": " + pet.daysAlive() + " " + Emulator.getTexts().getValue("generic.pet.days.alive") + "\r" +
Emulator.getTexts().getValue("generic.pet.level") + ": " + pet.getLevel() + "\r" +
"\r" +
Emulator.getTexts().getValue("commands.generic.cmd_pet_info.stats") + "\r\n" +
Emulator.getTexts().getValue("generic.pet.scratches") + ": " + pet.getRespect() + "\r" +
Emulator.getTexts().getValue("generic.pet.energy") + ": " + pet.getEnergy() + "/" + PetManager.maxEnergy(pet.getLevel()) + "\r" +
Emulator.getTexts().getValue("generic.pet.happyness") + ": " + pet.getHappiness() + "\r" +
Emulator.getTexts().getValue("generic.pet.level.thirst") + ": " + pet.levelThirst + "\r" +
Emulator.getTexts().getValue("generic.pet.level.hunger") + ": " + pet.levelHunger + "\r" +
Emulator.getTexts().getValue("generic.pet.current_action") + ": " + (pet.getTask() == null ? Emulator.getTexts().getValue("generic.nothing") : pet.getTask().name()) + "\r" +
Emulator.getTexts().getValue("generic.can.walk") + ": " + (pet.getRoomUnit().canWalk() ? Emulator.getTexts().getValue("generic.yes") : Emulator.getTexts().getValue("generic.no")) + ""
);
}
return true;
});
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_pet_info.pet_not_found"), RoomChatMessageBubbles.ALERT);

View File

@ -20,11 +20,11 @@ public class PixelCommand extends Command {
if (Integer.parseInt(params[2]) != 0) {
habbo.givePixels(Integer.parseInt(params[2]));
if (habbo.getHabboInfo().getCurrentRoom() != null)
habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", Integer.valueOf(params[2]) + ""), RoomChatMessageBubbles.ALERT);
habbo.whisper(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", Integer.parseInt(params[2]) + ""), RoomChatMessageBubbles.ALERT);
else
habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", Integer.valueOf(params[2]) + ""));
habbo.alert(Emulator.getTexts().getValue("commands.generic.cmd_duckets.received").replace("%amount%", Integer.parseInt(params[2]) + ""));
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_duckets.send").replace("%amount%", Integer.valueOf(params[2]) + "").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_duckets.send").replace("%amount%", Integer.parseInt(params[2]) + "").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_duckets.invalid_amount"), RoomChatMessageBubbles.ALERT);

View File

@ -21,7 +21,7 @@ public class PointsCommand extends Command {
if (params.length == 4) {
try {
type = Integer.valueOf(params[3]);
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;
@ -31,7 +31,7 @@ public class PointsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(params[2]);
amount = Integer.parseInt(params[2]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_points.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -47,8 +47,8 @@ public class PromoteTargetOfferCommand extends Command {
} else {
int offerId = 0;
try {
offerId = Integer.valueOf(offerKey);
} catch (Exception e) {
offerId = Integer.parseInt(offerKey);
} catch (Exception ignored) {
}
if (offerId > 0) {

View File

@ -31,23 +31,23 @@ public class PushCommand extends Command {
}
RoomTile tFront = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(gameClient.getHabbo().getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
if (tFront != null && tFront.isWalkable() && tFront.x == habbo.getRoomUnit().getX() && tFront.y == habbo.getRoomUnit().getY()) {
RoomTile tFrontTarget = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(habbo.getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
if (tFront != null && tFront.isWalkable()) {
if (tFront.getX() == habbo.getRoomUnit().getX() && tFront.getY() == habbo.getRoomUnit().getY()) {
RoomTile tFrontTarget = gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(habbo.getRoomUnit().getCurrentLocation(), gameClient.getHabbo().getRoomUnit().getBodyRotation().getValue());
if (tFrontTarget != null && tFrontTarget.isWalkable()) {
if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile() == tFrontTarget) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.invalid").replace("%username%", params[1]));
return true;
if (tFrontTarget != null && tFrontTarget.isWalkable()) {
if (gameClient.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getDoorTile() == tFrontTarget) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.invalid").replace("%username%", params[1]));
return true;
}
habbo.getRoomUnit().setGoalLocation(tFrontTarget);
gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("commands.succes.cmd_push.push").replace("%user%", params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
}
habbo.getRoomUnit().setGoalLocation(tFrontTarget);
gameClient.getHabbo().getHabboInfo().getCurrentRoom().sendComposer(new ChatMessageComposer(new RoomChatMessage(Emulator.getTexts().getValue("commands.succes.cmd_push.push").replace("%user%", params[1]).replace("%gender_name%", (gameClient.getHabbo().getHabboInfo().getGender().equals(HabboGender.M) ? Emulator.getTexts().getValue("gender.him") : Emulator.getTexts().getValue("gender.her"))), gameClient.getHabbo(), gameClient.getHabbo(), RoomChatMessageBubbles.NORMAL)).compose());
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.cant_reach").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
}
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_push.cant_reach").replace("%user%", params[1]), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
}
}

View File

@ -9,7 +9,6 @@ import com.eu.habbo.threading.runnables.QueryDeleteHabboItems;
import gnu.trove.map.TIntIntMap;
import gnu.trove.map.hash.TIntIntHashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
import gnu.trove.procedure.TIntIntProcedure;
import java.util.ArrayList;
@ -35,21 +34,21 @@ public class RedeemCommand extends Command {
items.add(item);
if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_")) && !item.getBaseItem().getName().contains("_diamond_")) {
try {
credits += Integer.valueOf(item.getBaseItem().getName().split("_")[1]);
} catch (Exception e) {
credits += Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
} catch (Exception ignored) {
}
} else if (item.getBaseItem().getName().startsWith("PF_")) {
try {
pixels += Integer.valueOf(item.getBaseItem().getName().split("_")[1]);
} catch (Exception e) {
pixels += Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
} catch (Exception ignored) {
}
} else if (item.getBaseItem().getName().startsWith("DF_")) {
int pointsType;
int pointsAmount;
pointsType = Integer.valueOf(item.getBaseItem().getName().split("_")[1]);
pointsAmount = Integer.valueOf(item.getBaseItem().getName().split("_")[2]);
pointsType = Integer.parseInt(item.getBaseItem().getName().split("_")[1]);
pointsAmount = Integer.parseInt(item.getBaseItem().getName().split("_")[2]);
points.adjustOrPutValue(pointsType, pointsAmount, pointsAmount);
}
@ -58,7 +57,7 @@ public class RedeemCommand extends Command {
int pointsAmount;
pointsType = 5;
pointsAmount = Integer.valueOf(item.getBaseItem().getName().split("_")[2]);
pointsAmount = Integer.parseInt(item.getBaseItem().getName().split("_")[2]);
points.adjustOrPutValue(pointsType, pointsAmount, pointsAmount);
}
@ -89,13 +88,10 @@ public class RedeemCommand extends Command {
}
if (!points.isEmpty()) {
points.forEachEntry(new TIntIntProcedure() {
@Override
public boolean execute(int a, int b) {
gameClient.getHabbo().givePoints(a, b);
message[0] += " ," + Emulator.getTexts().getValue("seasonal.name." + a) + ": " + b;
return true;
}
points.forEachEntry((a, b) -> {
gameClient.getHabbo().givePoints(a, b);
message[0] += " ," + Emulator.getTexts().getValue("seasonal.name." + a) + ": " + b;
return true;
});
}

View File

@ -7,8 +7,8 @@ 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.NotificationDialogMessageComposer;
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;
@ -32,7 +32,7 @@ public class RoomBadgeCommand extends Command {
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.key, keys).compose();
ServerMessage message = new NotificationDialogMessageComposer(BubbleAlertKeys.RECEIVED_BADGE.getKey(), keys).compose();
for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getHabbos()) {
if (habbo.isOnline()) {

View File

@ -7,13 +7,12 @@ import com.eu.habbo.habbohotel.catalog.CatalogPageLayouts;
import com.eu.habbo.habbohotel.catalog.layouts.RoomBundleLayout;
import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
@Slf4j
public class RoomBundleCommand extends Command {
private static final Logger LOGGER = LoggerFactory.getLogger(RoomBundleCommand.class);
public RoomBundleCommand() {
super("cmd_bundle", Emulator.getTexts().getValue("commands.keys.cmd_bundle").split(";"));
@ -36,10 +35,10 @@ public class RoomBundleCommand extends Command {
return true;
}
parentId = Integer.valueOf(params[1]);
credits = Integer.valueOf(params[2]);
points = Integer.valueOf(params[3]);
pointsType = Integer.valueOf(params[4]);
parentId = Integer.parseInt(params[1]);
credits = Integer.parseInt(params[2]);
points = Integer.parseInt(params[3]);
pointsType = Integer.parseInt(params[4]);
CatalogPage page = Emulator.getGameEnvironment().getCatalogManager().createCatalogPage("Room Bundle: " + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getName(), "room_bundle_" + gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), gameClient.getHabbo().getHabboInfo().getCurrentRoom().getId(), 0, CatalogPageLayouts.room_bundle, gameClient.getHabbo().getHabboInfo().getRank().getId(), parentId);
@ -66,7 +65,7 @@ public class RoomBundleCommand extends Command {
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
log.error("Caught SQL exception", e);
}
((RoomBundleLayout) page).loadItems(gameClient.getHabbo().getHabboInfo().getCurrentRoom());

View File

@ -16,7 +16,7 @@ public class RoomCreditsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(params[1]);
amount = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masscredits.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -18,7 +18,7 @@ public class RoomDanceCommand extends Command {
int danceId;
try {
danceId = Integer.valueOf(params[1]);
danceId = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_danceall.invalid_dance"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -19,7 +19,7 @@ public class RoomEffectCommand extends Command {
}
try {
int effectId = Integer.valueOf(params[1]);
int effectId = Integer.parseInt(params[1]);
if (effectId >= 0) {
Room room = gameClient.getHabbo().getHabboInfo().getCurrentRoom();
@ -27,11 +27,10 @@ public class RoomEffectCommand extends Command {
room.giveEffect(habbo, effectId, -1);
}
return true;
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomeffect.positive"), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomeffect.numbers_only"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -20,7 +20,7 @@ public class RoomGiftCommand extends Command {
int itemId;
try {
itemId = Integer.valueOf(params[1]);
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;

View File

@ -17,7 +17,7 @@ public class RoomItemCommand extends Command {
if (params.length >= 2) {
try {
itemId = Integer.valueOf(params[1]);
itemId = Integer.parseInt(params[1]);
if (itemId < 0) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roomitem.positive"), RoomChatMessageBubbles.ALERT);
@ -36,10 +36,9 @@ public class RoomItemCommand extends Command {
if (itemId > 0) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_roomitem.given").replace("%item%", itemId + ""), RoomChatMessageBubbles.ALERT);
return true;
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.succes.cmd_roomitem.removed"), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
}
}

View File

@ -16,7 +16,7 @@ public class RoomPixelsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(params[1]);
amount = Integer.parseInt(params[1]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_massduckets.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -18,7 +18,7 @@ public class RoomPointsCommand extends Command {
try {
amountString = params[1];
type = Integer.valueOf(params[2]);
type = Integer.parseInt(params[2]);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_type").replace("%types%", Emulator.getConfig().getValue("seasonal.types").replace(";", ", ")), RoomChatMessageBubbles.ALERT);
return true;
@ -46,7 +46,7 @@ public class RoomPointsCommand extends Command {
int amount;
try {
amount = Integer.valueOf(amountString);
amount = Integer.parseInt(amountString);
} catch (Exception e) {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_masspoints.invalid_amount"), RoomChatMessageBubbles.ALERT);
return true;

View File

@ -14,7 +14,7 @@ public class SetMaxCommand extends Command {
if (params.length >= 2) {
int max;
try {
max = Integer.valueOf(params[1]);
max = Integer.parseInt(params[1]);
} catch (Exception e) {
return false;
}
@ -22,11 +22,10 @@ public class SetMaxCommand extends Command {
if (max > 0 && max < 9999) {
gameClient.getHabbo().getHabboInfo().getCurrentRoom().setUsersMax(max);
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.success.cmd_setmax").replace("%value%", max + ""), RoomChatMessageBubbles.ALERT);
return true;
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.invalid_number"), RoomChatMessageBubbles.ALERT);
return true;
}
return true;
} else {
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_setmax.forgot_number"), RoomChatMessageBubbles.ALERT);
return true;

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