diff --git a/src/main/java/emu/grasscutter/GameConstants.java b/src/main/java/emu/grasscutter/GameConstants.java index 1e900ec05..8bf50c831 100644 --- a/src/main/java/emu/grasscutter/GameConstants.java +++ b/src/main/java/emu/grasscutter/GameConstants.java @@ -1,30 +1,24 @@ package emu.grasscutter; -import java.util.Arrays; - import emu.grasscutter.utils.Position; import emu.grasscutter.utils.Utils; -public final class GameConstants { - public static String VERSION = "3.5.0"; +import java.util.Arrays; +public final class GameConstants { public static final int DEFAULT_TEAMS = 4; public static final int MAX_TEAMS = 10; public static final int MAIN_CHARACTER_MALE = 10000005; public static final int MAIN_CHARACTER_FEMALE = 10000007; public static final Position START_POSITION = new Position(2747, 194, -1719); - public static final int MAX_FRIENDS = 60; public static final int MAX_FRIEND_REQUESTS = 50; - public static final int SERVER_CONSOLE_UID = 99; // The UID of the server console's "player". - public static final int BATTLE_PASS_MAX_LEVEL = 50; public static final int BATTLE_PASS_POINT_PER_LEVEL = 1000; public static final int BATTLE_PASS_POINT_PER_WEEK = 10000; public static final int BATTLE_PASS_LEVEL_PRICE = 150; public static final int BATTLE_PASS_CURRENT_INDEX = 2; - // Default entity ability hashes. public static final String[] DEFAULT_ABILITY_STRINGS = { "Avatar_DefaultAbility_VisionReplaceDieInvincible", "Avatar_DefaultAbility_AvartarInShaderChange", "Avatar_SprintBS_Invincible", @@ -32,4 +26,5 @@ public final class GameConstants { }; public static final int[] DEFAULT_ABILITY_HASHES = Arrays.stream(DEFAULT_ABILITY_STRINGS).mapToInt(Utils::abilityHash).toArray(); public static final int DEFAULT_ABILITY_NAME = Utils.abilityHash("Default"); + public static String VERSION = "3.5.0"; } diff --git a/src/main/java/emu/grasscutter/Grasscutter.java b/src/main/java/emu/grasscutter/Grasscutter.java index 49b6a9476..ffbcae435 100644 --- a/src/main/java/emu/grasscutter/Grasscutter.java +++ b/src/main/java/emu/grasscutter/Grasscutter.java @@ -2,7 +2,6 @@ package emu.grasscutter; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; - import emu.grasscutter.auth.AuthenticationSystem; import emu.grasscutter.auth.DefaultAuthentication; import emu.grasscutter.command.CommandMap; @@ -24,11 +23,7 @@ import emu.grasscutter.server.http.handlers.GachaHandler; import emu.grasscutter.server.http.handlers.GenericHandler; import emu.grasscutter.server.http.handlers.LogHandler; import emu.grasscutter.tools.Tools; -import emu.grasscutter.utils.Crypto; -import emu.grasscutter.utils.JsonUtils; -import emu.grasscutter.utils.Language; -import emu.grasscutter.utils.StartupArguments; -import emu.grasscutter.utils.Utils; +import emu.grasscutter.utils.*; import lombok.Getter; import lombok.Setter; import org.jline.reader.EndOfFileException; @@ -41,34 +36,47 @@ import org.reflections.Reflections; import org.slf4j.LoggerFactory; import javax.annotation.Nullable; -import java.io.*; +import java.io.File; +import java.io.FileWriter; +import java.io.IOError; +import java.io.IOException; import java.util.Calendar; import static emu.grasscutter.config.Configuration.SERVER; import static emu.grasscutter.utils.Language.translate; public final class Grasscutter { - @Getter private static final Logger logger = (Logger) LoggerFactory.getLogger(Grasscutter.class); - private static LineReader consoleLineReader = null; - - @Getter @Setter private static Language language; - public static final File configFile = new File("./config.json"); - @Setter private static ServerRunMode runModeOverride = null; // Config override for run mode - - @Getter private static int currentDayOfWeek; - @Getter @Setter private static String preferredLanguage; - - @Getter private static HttpServer httpServer; - @Getter private static GameServer gameServer; - @Getter private static PluginManager pluginManager; - @Getter private static CommandMap commandMap; - - @Getter @Setter private static AuthenticationSystem authenticationSystem; - @Getter @Setter private static PermissionHandler permissionHandler; - public static final Reflections reflector = new Reflections("emu.grasscutter"); - @Getter public static ConfigContainer config; + @Getter + private static final Logger logger = (Logger) LoggerFactory.getLogger(Grasscutter.class); + @Getter + public static ConfigContainer config; + private static LineReader consoleLineReader = null; + @Getter + @Setter + private static Language language; + @Setter + private static ServerRunMode runModeOverride = null; // Config override for run mode + @Getter + private static int currentDayOfWeek; + @Getter + @Setter + private static String preferredLanguage; + @Getter + private static HttpServer httpServer; + @Getter + private static GameServer gameServer; + @Getter + private static PluginManager pluginManager; + @Getter + private static CommandMap commandMap; + @Getter + @Setter + private static AuthenticationSystem authenticationSystem; + @Getter + @Setter + private static PermissionHandler permissionHandler; static { // Declare logback configuration. @@ -265,7 +273,7 @@ public final class Grasscutter { public static void updateDayOfWeek() { Calendar calendar = Calendar.getInstance(); Grasscutter.currentDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); - Grasscutter.getLogger().debug("Set day of week to "+currentDayOfWeek); + Grasscutter.getLogger().debug("Set day of week to " + currentDayOfWeek); } public static void startConsole() { diff --git a/src/main/java/emu/grasscutter/auth/AuthenticationSystem.java b/src/main/java/emu/grasscutter/auth/AuthenticationSystem.java index 828c4eca0..79b25db29 100644 --- a/src/main/java/emu/grasscutter/auth/AuthenticationSystem.java +++ b/src/main/java/emu/grasscutter/auth/AuthenticationSystem.java @@ -15,8 +15,63 @@ import javax.annotation.Nullable; */ public interface AuthenticationSystem { + /** + * Generates an authentication request from a {@link LoginAccountRequestJson} object. + * + * @param ctx The Javalin context. + * @param jsonData The JSON data. + * @return An authentication request. + */ + static AuthenticationRequest fromPasswordRequest(Context ctx, LoginAccountRequestJson jsonData) { + return AuthenticationRequest.builder() + .context(ctx) + .passwordRequest(jsonData) + .build(); + } + + /** + * Generates an authentication request from a {@link LoginTokenRequestJson} object. + * + * @param ctx The Javalin context. + * @param jsonData The JSON data. + * @return An authentication request. + */ + static AuthenticationRequest fromTokenRequest(Context ctx, LoginTokenRequestJson jsonData) { + return AuthenticationRequest.builder() + .context(ctx) + .tokenRequest(jsonData) + .build(); + } + + /** + * Generates an authentication request from a {@link ComboTokenReqJson} object. + * + * @param ctx The Javalin context. + * @param jsonData The JSON data. + * @return An authentication request. + */ + static AuthenticationRequest fromComboTokenRequest(Context ctx, ComboTokenReqJson jsonData, + ComboTokenReqJson.LoginTokenData tokenData) { + return AuthenticationRequest.builder() + .context(ctx) + .sessionKeyRequest(jsonData) + .sessionKeyData(tokenData) + .build(); + } + + /** + * Generates an authentication request from a {@link Context} object. + * + * @param ctx The Javalin context. + * @return An authentication request. + */ + static AuthenticationRequest fromExternalRequest(Context ctx) { + return AuthenticationRequest.builder().context(ctx).build(); + } + /** * Called when a user requests to make an account. + * * @param username The provided username. * @param password The provided password. (SHA-256'ed) */ @@ -24,12 +79,14 @@ public interface AuthenticationSystem { /** * Called when a user requests to reset their password. + * * @param username The username of the account to reset. */ void resetPassword(String username); /** * Called by plugins to internally verify a user's identity. + * * @param details A unique identifier to identify the user. (For example: a JWT token) * @return The user's account if the verification was successful, null if the user was unable to be verified. */ @@ -37,30 +94,35 @@ public interface AuthenticationSystem { /** * This is the authenticator used for password authentication. + * * @return An authenticator. */ Authenticator getPasswordAuthenticator(); /** * This is the authenticator used for token authentication. + * * @return An authenticator. */ Authenticator getTokenAuthenticator(); /** * This is the authenticator used for session authentication. + * * @return An authenticator. */ Authenticator getSessionKeyAuthenticator(); /** * This is the authenticator used for handling external authentication requests. + * * @return An authenticator. */ ExternalAuthenticator getExternalAuthenticator(); /** * This is the authenticator used for handling OAuth authentication requests. + * * @return An authenticator. */ OAuthAuthenticator getOAuthAuthenticator(); @@ -68,63 +130,19 @@ public interface AuthenticationSystem { /** * A data container that holds relevant data for authenticating a client. */ - @Builder @AllArgsConstructor @Getter + @Builder + @AllArgsConstructor + @Getter class AuthenticationRequest { private final Context context; - @Nullable private final LoginAccountRequestJson passwordRequest; - @Nullable private final LoginTokenRequestJson tokenRequest; - @Nullable private final ComboTokenReqJson sessionKeyRequest; - @Nullable private final ComboTokenReqJson.LoginTokenData sessionKeyData; - } - - /** - * Generates an authentication request from a {@link LoginAccountRequestJson} object. - * @param ctx The Javalin context. - * @param jsonData The JSON data. - * @return An authentication request. - */ - static AuthenticationRequest fromPasswordRequest(Context ctx, LoginAccountRequestJson jsonData) { - return AuthenticationRequest.builder() - .context(ctx) - .passwordRequest(jsonData) - .build(); - } - - /** - * Generates an authentication request from a {@link LoginTokenRequestJson} object. - * @param ctx The Javalin context. - * @param jsonData The JSON data. - * @return An authentication request. - */ - static AuthenticationRequest fromTokenRequest(Context ctx, LoginTokenRequestJson jsonData) { - return AuthenticationRequest.builder() - .context(ctx) - .tokenRequest(jsonData) - .build(); - } - - /** - * Generates an authentication request from a {@link ComboTokenReqJson} object. - * @param ctx The Javalin context. - * @param jsonData The JSON data. - * @return An authentication request. - */ - static AuthenticationRequest fromComboTokenRequest(Context ctx, ComboTokenReqJson jsonData, - ComboTokenReqJson.LoginTokenData tokenData) { - return AuthenticationRequest.builder() - .context(ctx) - .sessionKeyRequest(jsonData) - .sessionKeyData(tokenData) - .build(); - } - - /** - * Generates an authentication request from a {@link Context} object. - * @param ctx The Javalin context. - * @return An authentication request. - */ - static AuthenticationRequest fromExternalRequest(Context ctx) { - return AuthenticationRequest.builder().context(ctx).build(); + @Nullable + private final LoginAccountRequestJson passwordRequest; + @Nullable + private final LoginTokenRequestJson tokenRequest; + @Nullable + private final ComboTokenReqJson sessionKeyRequest; + @Nullable + private final ComboTokenReqJson.LoginTokenData sessionKeyData; } } diff --git a/src/main/java/emu/grasscutter/auth/Authenticator.java b/src/main/java/emu/grasscutter/auth/Authenticator.java index a5d756d8c..57f5bbce7 100644 --- a/src/main/java/emu/grasscutter/auth/Authenticator.java +++ b/src/main/java/emu/grasscutter/auth/Authenticator.java @@ -1,17 +1,20 @@ package emu.grasscutter.auth; -import emu.grasscutter.server.http.objects.*; +import emu.grasscutter.server.http.objects.ComboTokenResJson; +import emu.grasscutter.server.http.objects.LoginResultJson; /** * Handles username/password authentication from the client. + * * @param The response object type. Should be {@link LoginResultJson} or {@link ComboTokenResJson} */ public interface Authenticator { - + /** * Attempt to authenticate the client with the provided credentials. + * * @param request The authentication request wrapped in a {@link AuthenticationSystem.AuthenticationRequest} object. * @return The result of the login in an object. */ T authenticate(AuthenticationSystem.AuthenticationRequest request); -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/auth/DefaultAuthentication.java b/src/main/java/emu/grasscutter/auth/DefaultAuthentication.java index 9fa1ec4aa..f0148bbb0 100644 --- a/src/main/java/emu/grasscutter/auth/DefaultAuthentication.java +++ b/src/main/java/emu/grasscutter/auth/DefaultAuthentication.java @@ -14,11 +14,11 @@ import static emu.grasscutter.utils.Language.translate; * Allows all users to access any account. */ public final class DefaultAuthentication implements AuthenticationSystem { - private Authenticator passwordAuthenticator; - private Authenticator tokenAuthenticator = new TokenAuthenticator(); - private Authenticator sessionKeyAuthenticator = new SessionKeyAuthenticator(); - private ExternalAuthenticator externalAuthenticator = new ExternalAuthentication(); - private OAuthAuthenticator oAuthAuthenticator = new OAuthAuthentication(); + private final Authenticator passwordAuthenticator; + private final Authenticator tokenAuthenticator = new TokenAuthenticator(); + private final Authenticator sessionKeyAuthenticator = new SessionKeyAuthenticator(); + private final ExternalAuthenticator externalAuthenticator = new ExternalAuthentication(); + private final OAuthAuthenticator oAuthAuthenticator = new OAuthAuthentication(); public DefaultAuthentication() { if (ACCOUNT.EXPERIMENTAL_RealPassword) { diff --git a/src/main/java/emu/grasscutter/auth/DefaultAuthenticators.java b/src/main/java/emu/grasscutter/auth/DefaultAuthenticators.java index 85b9e8e29..441a42324 100644 --- a/src/main/java/emu/grasscutter/auth/DefaultAuthenticators.java +++ b/src/main/java/emu/grasscutter/auth/DefaultAuthenticators.java @@ -5,7 +5,8 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.auth.AuthenticationSystem.AuthenticationRequest; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.Account; -import emu.grasscutter.server.http.objects.*; +import emu.grasscutter.server.http.objects.ComboTokenResJson; +import emu.grasscutter.server.http.objects.LoginResultJson; import emu.grasscutter.utils.FileUtils; import emu.grasscutter.utils.Utils; @@ -15,7 +16,7 @@ import java.security.KeyFactory; import java.security.interfaces.RSAPrivateKey; import java.security.spec.PKCS8EncodedKeySpec; -import static emu.grasscutter.config.Configuration.*; +import static emu.grasscutter.config.Configuration.ACCOUNT; import static emu.grasscutter.utils.Language.translate; /** diff --git a/src/main/java/emu/grasscutter/auth/ExternalAuthenticator.java b/src/main/java/emu/grasscutter/auth/ExternalAuthenticator.java index 16c3f5b9e..555163520 100644 --- a/src/main/java/emu/grasscutter/auth/ExternalAuthenticator.java +++ b/src/main/java/emu/grasscutter/auth/ExternalAuthenticator.java @@ -9,25 +9,28 @@ public interface ExternalAuthenticator { /** * Called when an external login request is made. + * * @param request The authentication request. */ void handleLogin(AuthenticationRequest request); /** * Called when an external account creation request is made. - * @param request The authentication request. * - * For developers: Use AuthenticationRequest#getRequest() to get the request body. - * Use AuthenticationRequest#getResponse() to get the response body. + * @param request The authentication request. + *

+ * For developers: Use AuthenticationRequest#getRequest() to get the request body. + * Use AuthenticationRequest#getResponse() to get the response body. */ void handleAccountCreation(AuthenticationRequest request); /** * Called when an external password reset request is made. - * @param request The authentication request. * - * For developers: Use AuthenticationRequest#getRequest() to get the request body. - * Use AuthenticationRequest#getResponse() to get the response body. + * @param request The authentication request. + *

+ * For developers: Use AuthenticationRequest#getRequest() to get the request body. + * Use AuthenticationRequest#getResponse() to get the response body. */ void handlePasswordReset(AuthenticationRequest request); } diff --git a/src/main/java/emu/grasscutter/auth/OAuthAuthenticator.java b/src/main/java/emu/grasscutter/auth/OAuthAuthenticator.java index 2d7a73454..429df5a6a 100644 --- a/src/main/java/emu/grasscutter/auth/OAuthAuthenticator.java +++ b/src/main/java/emu/grasscutter/auth/OAuthAuthenticator.java @@ -9,18 +9,21 @@ public interface OAuthAuthenticator { /** * Called when an OAuth login request is made. + * * @param request The authentication request. */ void handleLogin(AuthenticationRequest request); /** * Called when a client requests to redirect to login page. + * * @param request The authentication request. */ void handleRedirection(AuthenticationRequest request, ClientType clientType); /** * Called when an OAuth login requests callback. + * * @param request The authentication request. */ void handleTokenProcess(AuthenticationRequest request); diff --git a/src/main/java/emu/grasscutter/command/Command.java b/src/main/java/emu/grasscutter/command/Command.java index 095e64cdb..2055b6256 100644 --- a/src/main/java/emu/grasscutter/command/Command.java +++ b/src/main/java/emu/grasscutter/command/Command.java @@ -15,13 +15,14 @@ public @interface Command { String permissionTargeted() default ""; - public enum TargetRequirement { + TargetRequirement targetRequirement() default TargetRequirement.ONLINE; + + boolean threading() default false; + + enum TargetRequirement { NONE, // targetPlayer is not required OFFLINE, // targetPlayer must be offline PLAYER, // targetPlayer can be online or offline ONLINE // targetPlayer must be online } - TargetRequirement targetRequirement() default TargetRequirement.ONLINE; - - boolean threading() default false; } diff --git a/src/main/java/emu/grasscutter/command/CommandHandler.java b/src/main/java/emu/grasscutter/command/CommandHandler.java index b7a0d94dd..d7ad1d8ef 100644 --- a/src/main/java/emu/grasscutter/command/CommandHandler.java +++ b/src/main/java/emu/grasscutter/command/CommandHandler.java @@ -3,13 +3,12 @@ package emu.grasscutter.command; import emu.grasscutter.Grasscutter; import emu.grasscutter.game.player.Player; import emu.grasscutter.server.event.game.ReceiveCommandFeedbackEvent; -import emu.grasscutter.utils.Language; - -import static emu.grasscutter.utils.Language.translate; import java.util.List; import java.util.StringJoiner; +import static emu.grasscutter.utils.Language.translate; + public interface CommandHandler { /** @@ -52,7 +51,8 @@ public interface CommandHandler { String target = switch (annotation.targetRequirement()) { case NONE -> ""; case OFFLINE -> "@ "; // TODO: make translation keys for offline and online players - case ONLINE -> (player == null) ? "@ " : "[@] "; // TODO: make translation keys for offline and online players + case ONLINE -> + (player == null) ? "@ " : "[@] "; // TODO: make translation keys for offline and online players case PLAYER -> (player == null) ? "@ " : "[@] "; }; String[] usages = annotation.usage(); @@ -81,8 +81,9 @@ public interface CommandHandler { /** * Called when a player/console invokes a command. + * * @param sender The player/console that invoked the command. - * @param args The arguments to the command. + * @param args The arguments to the command. */ default void execute(Player sender, Player targetPlayer, List args) { } diff --git a/src/main/java/emu/grasscutter/command/CommandMap.java b/src/main/java/emu/grasscutter/command/CommandMap.java index 5590e4f33..7f30f02b6 100644 --- a/src/main/java/emu/grasscutter/command/CommandMap.java +++ b/src/main/java/emu/grasscutter/command/CommandMap.java @@ -5,23 +5,20 @@ import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.Player; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import org.reflections.Reflections; -import java.net.IDN; import java.util.*; -import static emu.grasscutter.config.Configuration.ACCOUNT; import static emu.grasscutter.config.Configuration.SERVER; @SuppressWarnings({"UnusedReturnValue", "unused"}) public final class CommandMap { + private static final int INVALID_UID = Integer.MIN_VALUE; + private static final String consoleId = "console"; private final Map commands = new TreeMap<>(); private final Map aliases = new TreeMap<>(); private final Map annotations = new TreeMap<>(); private final Object2IntMap targetPlayerIds = new Object2IntOpenHashMap<>(); - private static final int INVALID_UID = Integer.MIN_VALUE; - private static final String consoleId = "console"; public CommandMap() { this(false); @@ -35,6 +32,20 @@ public final class CommandMap { return Grasscutter.getCommandMap(); } + private static int getUidFromString(String input) { + try { + return Integer.parseInt(input); + } catch (NumberFormatException ignored) { + var account = DatabaseHelper.getAccountByName(input); + if (account == null) return INVALID_UID; + var player = DatabaseHelper.getPlayerByAccount(account); + if (player == null) return INVALID_UID; + // We will be immediately fetching the player again after this, + // but offline vs online Player safety is more important than saving a lookup + return player.getUid(); + } + } + /** * Register a command handler. * @@ -52,11 +63,9 @@ public final class CommandMap { this.commands.put(label, command); // Register aliases. - if (annotation.aliases().length > 0) { - for (String alias : annotation.aliases()) { - this.aliases.put(alias, command); - this.annotations.put(alias, annotation); - } + for (String alias : annotation.aliases()) { + this.aliases.put(alias, command); + this.annotations.put(alias, annotation); } return this; } @@ -78,11 +87,9 @@ public final class CommandMap { this.commands.remove(label); // Unregister aliases. - if (annotation.aliases().length > 0) { - for (String alias : annotation.aliases()) { - this.aliases.remove(alias); - this.annotations.remove(alias); - } + for (String alias : annotation.aliases()) { + this.aliases.remove(alias); + this.annotations.remove(alias); } return this; @@ -124,20 +131,6 @@ public final class CommandMap { return handler; } - private static int getUidFromString(String input) { - try { - return Integer.parseInt(input); - } catch (NumberFormatException ignored) { - var account = DatabaseHelper.getAccountByName(input); - if (account == null) return INVALID_UID; - var player = DatabaseHelper.getPlayerByAccount(account); - if (player == null) return INVALID_UID; - // We will be immediately fetching the player again after this, - // but offline vs online Player safety is more important than saving a lookup - return player.getUid(); - } - } - private Player getTargetPlayer(String playerId, Player player, Player targetPlayer, List args) { // Top priority: If any @UID argument is present, override targetPlayer with it. for (int i = 0; i < args.size(); i++) { diff --git a/src/main/java/emu/grasscutter/command/DefaultPermissionHandler.java b/src/main/java/emu/grasscutter/command/DefaultPermissionHandler.java index 10a325139..bc669d81c 100644 --- a/src/main/java/emu/grasscutter/command/DefaultPermissionHandler.java +++ b/src/main/java/emu/grasscutter/command/DefaultPermissionHandler.java @@ -11,7 +11,7 @@ public class DefaultPermissionHandler implements PermissionHandler { @Override public boolean checkPermission(Player player, Player targetPlayer, String permissionNode, String permissionNodeTargeted) { - if(player == null) { + if (player == null) { return true; } diff --git a/src/main/java/emu/grasscutter/command/PermissionHandler.java b/src/main/java/emu/grasscutter/command/PermissionHandler.java index 9d9eb26f4..c21ff0ca6 100644 --- a/src/main/java/emu/grasscutter/command/PermissionHandler.java +++ b/src/main/java/emu/grasscutter/command/PermissionHandler.java @@ -3,6 +3,7 @@ package emu.grasscutter.command; import emu.grasscutter.game.player.Player; public interface PermissionHandler { - public boolean EnablePermissionCommand(); - public boolean checkPermission(Player player, Player targetPlayer, String permissionNode, String permissionNodeTargeted); + boolean EnablePermissionCommand(); + + boolean checkPermission(Player player, Player targetPlayer, String permissionNode, String permissionNodeTargeted); } diff --git a/src/main/java/emu/grasscutter/command/commands/AccountCommand.java b/src/main/java/emu/grasscutter/command/commands/AccountCommand.java index 667fe22fc..1f02b5fa9 100644 --- a/src/main/java/emu/grasscutter/command/commands/AccountCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/AccountCommand.java @@ -45,7 +45,7 @@ public final class AccountCommand implements CommandHandler { int uid = 0; String password = ""; - if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword == true) { + if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword) { if (args.size() < 3) { CommandHandler.sendMessage(sender, "EXPERIMENTAL_RealPassword requires a password argument"); CommandHandler.sendMessage(sender, "Usage: account create [uid]"); @@ -58,7 +58,7 @@ public final class AccountCommand implements CommandHandler { uid = Integer.parseInt(args.get(3)); } catch (NumberFormatException ignored) { CommandHandler.sendMessage(sender, translate(sender, "commands.account.invalid")); - if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword == true) { + if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword) { CommandHandler.sendMessage(sender, "EXPERIMENTAL_RealPassword requires argument 2 to be a password, not a uid"); CommandHandler.sendMessage(sender, "Usage: account create [uid]"); } @@ -81,7 +81,7 @@ public final class AccountCommand implements CommandHandler { CommandHandler.sendMessage(sender, translate(sender, "commands.account.exists")); return; } else { - if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword == true) { + if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword) { account.setPassword(BCrypt.withDefaults().hashToString(12, password.toCharArray())); } account.addPermission("*"); @@ -103,7 +103,7 @@ public final class AccountCommand implements CommandHandler { CommandHandler.sendMessage(sender, translate(sender, "commands.account.delete")); return; case "resetpass": - if (Configuration.ACCOUNT.EXPERIMENTAL_RealPassword != true) { + if (!Configuration.ACCOUNT.EXPERIMENTAL_RealPassword) { CommandHandler.sendMessage(sender, "resetpass requires EXPERIMENTAL_RealPassword to be true."); return; } @@ -127,7 +127,6 @@ public final class AccountCommand implements CommandHandler { toUpdate.setPassword(BCrypt.withDefaults().hashToString(12, args.get(2).toCharArray())); toUpdate.save(); CommandHandler.sendMessage(sender, "Password Updated."); - return; } } diff --git a/src/main/java/emu/grasscutter/command/commands/AchievementCommand.java b/src/main/java/emu/grasscutter/command/commands/AchievementCommand.java index 7b2510c12..87c730394 100644 --- a/src/main/java/emu/grasscutter/command/commands/AchievementCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/AchievementCommand.java @@ -21,71 +21,6 @@ import java.util.concurrent.atomic.AtomicInteger; targetRequirement = Command.TargetRequirement.PLAYER, threading = true) public class AchievementCommand implements CommandHandler { - @Override - public void execute(Player sender, Player targetPlayer, List args) { - if (args.size() < 1) { - this.sendUsageMessage(sender); - return; - } - - var command = args.remove(0).toLowerCase(); - var achievements = Achievements.getByPlayer(targetPlayer); - switch (command) { - case "grant" -> this.grant(sender, targetPlayer, achievements, args); - case "revoke" -> this.revoke(sender, targetPlayer, achievements, args); - case "progress" -> this.progress(sender, targetPlayer, achievements, args); - case "grantall" -> grantAll(sender, targetPlayer, achievements); - case "revokeall" -> revokeAll(sender, targetPlayer, achievements); - default -> this.sendUsageMessage(sender); - } - } - - private void grant(Player sender, Player targetPlayer, Achievements achievements, List args) { - if (args.size() < 1) { - this.sendUsageMessage(sender); - } - - parseInt(args.remove(0)).ifPresentOrElse(integer -> { - var ret = achievements.grant(integer); - switch (ret.getRet()) { - case SUCCESS -> sendSuccessMessage(sender, "grant", targetPlayer.getNickname()); - case ACHIEVEMENT_NOT_FOUND -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey()); - case ALREADY_ACHIEVED -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey(), targetPlayer.getNickname()); - } - }, () -> this.sendUsageMessage(sender)); - } - - private void revoke(Player sender, Player targetPlayer, Achievements achievements, List args) { - if (args.size() < 1) { - this.sendUsageMessage(sender); - } - - parseInt(args.remove(0)).ifPresentOrElse(integer -> { - var ret = achievements.revoke(integer); - switch (ret.getRet()) { - case SUCCESS -> sendSuccessMessage(sender, "revoke", targetPlayer.getNickname()); - case ACHIEVEMENT_NOT_FOUND -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey()); - case NOT_YET_ACHIEVED -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey(), targetPlayer.getNickname()); - } - }, () -> this.sendUsageMessage(sender)); - } - - private void progress(Player sender, Player targetPlayer, Achievements achievements, List args) { - if (args.size() < 2) { - this.sendUsageMessage(sender); - } - - parseInt(args.remove(0)).ifPresentOrElse(integer -> { - parseInt(args.remove(0)).ifPresentOrElse(progress -> { - var ret = achievements.progress(integer, progress); - switch (ret.getRet()) { - case SUCCESS -> sendSuccessMessage(sender, "progress", targetPlayer.getNickname(), integer, progress); - case ACHIEVEMENT_NOT_FOUND -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey()); - } - }, () -> this.sendUsageMessage(sender)); - }, () -> this.sendUsageMessage(sender)); - } - private static void sendSuccessMessage(Player sender, String cmd, Object... args) { CommandHandler.sendTranslatedMessage(sender, AchievementControlReturns.Return.SUCCESS.getKey() + cmd, args); } @@ -127,4 +62,72 @@ public class AchievementCommand implements CommandHandler { sendSuccessMessage(sender, "revokeall", counter.intValue(), targetPlayer.getNickname()); } + + @Override + public void execute(Player sender, Player targetPlayer, List args) { + if (args.size() < 1) { + this.sendUsageMessage(sender); + return; + } + + var command = args.remove(0).toLowerCase(); + var achievements = Achievements.getByPlayer(targetPlayer); + switch (command) { + case "grant" -> this.grant(sender, targetPlayer, achievements, args); + case "revoke" -> this.revoke(sender, targetPlayer, achievements, args); + case "progress" -> this.progress(sender, targetPlayer, achievements, args); + case "grantall" -> grantAll(sender, targetPlayer, achievements); + case "revokeall" -> revokeAll(sender, targetPlayer, achievements); + default -> this.sendUsageMessage(sender); + } + } + + private void grant(Player sender, Player targetPlayer, Achievements achievements, List args) { + if (args.size() < 1) { + this.sendUsageMessage(sender); + } + + parseInt(args.remove(0)).ifPresentOrElse(integer -> { + var ret = achievements.grant(integer); + switch (ret.getRet()) { + case SUCCESS -> sendSuccessMessage(sender, "grant", targetPlayer.getNickname()); + case ACHIEVEMENT_NOT_FOUND -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey()); + case ALREADY_ACHIEVED -> + CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey(), targetPlayer.getNickname()); + } + }, () -> this.sendUsageMessage(sender)); + } + + private void revoke(Player sender, Player targetPlayer, Achievements achievements, List args) { + if (args.size() < 1) { + this.sendUsageMessage(sender); + } + + parseInt(args.remove(0)).ifPresentOrElse(integer -> { + var ret = achievements.revoke(integer); + switch (ret.getRet()) { + case SUCCESS -> sendSuccessMessage(sender, "revoke", targetPlayer.getNickname()); + case ACHIEVEMENT_NOT_FOUND -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey()); + case NOT_YET_ACHIEVED -> + CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey(), targetPlayer.getNickname()); + } + }, () -> this.sendUsageMessage(sender)); + } + + private void progress(Player sender, Player targetPlayer, Achievements achievements, List args) { + if (args.size() < 2) { + this.sendUsageMessage(sender); + } + + parseInt(args.remove(0)).ifPresentOrElse(integer -> { + parseInt(args.remove(0)).ifPresentOrElse(progress -> { + var ret = achievements.progress(integer, progress); + switch (ret.getRet()) { + case SUCCESS -> + sendSuccessMessage(sender, "progress", targetPlayer.getNickname(), integer, progress); + case ACHIEVEMENT_NOT_FOUND -> CommandHandler.sendTranslatedMessage(sender, ret.getRet().getKey()); + } + }, () -> this.sendUsageMessage(sender)); + }, () -> this.sendUsageMessage(sender)); + } } diff --git a/src/main/java/emu/grasscutter/command/commands/BanCommand.java b/src/main/java/emu/grasscutter/command/commands/BanCommand.java index 4eeeb1705..61ce4b309 100644 --- a/src/main/java/emu/grasscutter/command/commands/BanCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/BanCommand.java @@ -1,13 +1,13 @@ package emu.grasscutter.command.commands; -import java.util.List; - import emu.grasscutter.command.Command; import emu.grasscutter.command.CommandHandler; import emu.grasscutter.game.Account; import emu.grasscutter.game.player.Player; import emu.grasscutter.server.game.GameSession; +import java.util.List; + @Command( label = "ban", usage = {"[

* Use `import static emu.grasscutter.Configuration.*;` * to import all configuration constants. */ @@ -26,26 +26,22 @@ public final class Configuration extends ConfigContainer { public static final Locale LANGUAGE = config.language.language; public static final Locale FALLBACK_LANGUAGE = config.language.fallback; public static final String DOCUMENT_LANGUAGE = config.language.document; - private static final String DATA_FOLDER = config.folderStructure.data; - private static final String PLUGINS_FOLDER = config.folderStructure.plugins; - private static final String SCRIPTS_FOLDER = config.folderStructure.scripts; - private static final String PACKETS_FOLDER = config.folderStructure.packets; - public static final Server SERVER = config.server; public static final Database DATABASE = config.databaseInfo; public static final Account ACCOUNT = config.account; - public static final HTTP HTTP_INFO = config.server.http; public static final Game GAME_INFO = config.server.game; public static final Dispatch DISPATCH_INFO = config.server.dispatch; public static final DebugMode DEBUG_MODE_INFO = config.server.debugMode; - public static final Encryption HTTP_ENCRYPTION = config.server.http.encryption; public static final Policies HTTP_POLICIES = config.server.http.policies; public static final Files HTTP_STATIC_FILES = config.server.http.files; - public static final GameOptions GAME_OPTIONS = config.server.game.gameOptions; public static final GameOptions.InventoryLimits INVENTORY_LIMITS = config.server.game.gameOptions.inventoryLimits; + private static final String DATA_FOLDER = config.folderStructure.data; + private static final String PLUGINS_FOLDER = config.folderStructure.plugins; + private static final String SCRIPTS_FOLDER = config.folderStructure.scripts; + private static final String PACKETS_FOLDER = config.folderStructure.packets; /* * Utilities @@ -91,7 +87,8 @@ public final class Configuration extends ConfigContainer { /** * Fallback method. - * @param left Attempt to use. + * + * @param left Attempt to use. * @param right Use if left is undefined. * @return Left or right. */ @@ -101,7 +98,8 @@ public final class Configuration extends ConfigContainer { /** * {@link Configuration#lr(Object, Object)} for {@link String}s. - * @param left Attempt to use. + * + * @param left Attempt to use. * @param right Use if left is empty. * @return Left or right. */ @@ -111,7 +109,8 @@ public final class Configuration extends ConfigContainer { /** * {@link Configuration#lr(Object, Object)} for {@link Integer}s. - * @param left Attempt to use. + * + * @param left Attempt to use. * @param right Use if left is 0. * @return Left or right. */ diff --git a/src/main/java/emu/grasscutter/data/DataLoader.java b/src/main/java/emu/grasscutter/data/DataLoader.java index ac734a473..023cbc246 100644 --- a/src/main/java/emu/grasscutter/data/DataLoader.java +++ b/src/main/java/emu/grasscutter/data/DataLoader.java @@ -84,7 +84,7 @@ public class DataLoader { } } - public static Map loadMap(String resourcePath, Class keyType, Class valueType) throws IOException { + public static Map loadMap(String resourcePath, Class keyType, Class valueType) throws IOException { try (InputStreamReader reader = loadReader(resourcePath)) { return JsonUtils.loadToMap(reader, keyType, valueType); } @@ -92,7 +92,7 @@ public class DataLoader { public static List loadTableToList(String resourcePath, Class classType) throws IOException { val path = FileUtils.getDataPathTsjJsonTsv(resourcePath); - Grasscutter.getLogger().debug("Loading data table from: "+path); + Grasscutter.getLogger().debug("Loading data table from: " + path); return switch (FileUtils.getFileExtension(path)) { case "json" -> JsonUtils.loadToList(path, classType); case "tsj" -> TsvUtils.loadTsjToListSetField(path, classType); diff --git a/src/main/java/emu/grasscutter/data/GameData.java b/src/main/java/emu/grasscutter/data/GameData.java index ac304916e..6418b0917 100644 --- a/src/main/java/emu/grasscutter/data/GameData.java +++ b/src/main/java/emu/grasscutter/data/GameData.java @@ -1,116 +1,182 @@ package emu.grasscutter.data; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.binout.*; +import emu.grasscutter.data.excels.*; import emu.grasscutter.game.quest.QuestEncryptionKey; import emu.grasscutter.utils.Utils; -import emu.grasscutter.data.excels.*; -import it.unimi.dsi.fastutil.ints.Int2IntMap; -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.ints.IntArrayList; -import it.unimi.dsi.fastutil.ints.IntList; -import it.unimi.dsi.fastutil.ints.IntSet; +import it.unimi.dsi.fastutil.ints.*; import lombok.Getter; import lombok.experimental.Tolerate; +import java.lang.reflect.Field; +import java.util.*; + public class GameData { - // BinOutputs - @Getter private static final Int2ObjectMap homeworldDefaultSaveData = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap abilityHashes = new Int2ObjectOpenHashMap<>(); - @Deprecated(forRemoval = true) - @Getter private static final Map abilityModifiers = new HashMap<>(); - @Getter private static final Map gadgetConfigData = new HashMap<>(); - @Getter private static final Map openConfigEntries = new HashMap<>(); - @Deprecated(forRemoval = true) @Getter private static final Map scenePointEntries = new HashMap<>(); protected static final Map abilityDataMap = new HashMap<>(); protected static final Int2ObjectMap scenePointEntryMap = new Int2ObjectOpenHashMap<>(); + // BinOutputs + @Getter + private static final Int2ObjectMap homeworldDefaultSaveData = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap abilityHashes = new Int2ObjectOpenHashMap<>(); + @Deprecated(forRemoval = true) + @Getter + private static final Map abilityModifiers = new HashMap<>(); + @Getter + private static final Map gadgetConfigData = new HashMap<>(); + @Getter + private static final Map openConfigEntries = new HashMap<>(); + @Deprecated(forRemoval = true) + @Getter + private static final Map scenePointEntries = new HashMap<>(); private static final Int2ObjectMap mainQuestData = new Int2ObjectOpenHashMap<>(); private static final Int2ObjectMap questsKeys = new Int2ObjectOpenHashMap<>(); private static final Int2ObjectMap npcBornData = new Int2ObjectOpenHashMap<>(); private static final Map abilityEmbryos = new HashMap<>(); // ExcelConfigs - @Getter private static final ArrayList codexReliquaryArrayList = new ArrayList<>(); + @Getter + private static final ArrayList codexReliquaryArrayList = new ArrayList<>(); private static final Int2ObjectMap achievementDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap achievementGoalDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap activityDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap activityShopDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap activityWatcherDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarCostumeDataItemIdMap = new Int2ObjectLinkedOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarCostumeDataMap = new Int2ObjectLinkedOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarCurveDataMap = new Int2ObjectLinkedOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarFetterLevelDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarFlycloakDataMap = new Int2ObjectLinkedOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarLevelDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarSkillDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarSkillDepotDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap avatarTalentDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap battlePassMissionDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap battlePassRewardDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap blossomRefreshExcelConfigDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap buffDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap chapterDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap cityDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap codexAnimalDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap codexMaterialDataIdMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap codexQuestDataIdMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap codexReliquaryDataIdMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap codexWeaponDataIdMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap combineDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap cookBonusDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap cookRecipeDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap compoundDataMap=new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap dailyDungeonDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap dungeonDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap dungeonEntryDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap envAnimalGatherConfigDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap equipAffixDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap fetterCharacterCardDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap forgeDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap furnitureMakeConfigDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap gadgetDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap gatherDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap homeWorldBgmDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap homeWorldLevelDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap investigationMonsterDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap itemDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap monsterCurveDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap monsterDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap monsterDescribeDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap musicGameBasicDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap npcDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap openStateDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap personalLineDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap playerLevelDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap proudSkillDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap questDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap reliquaryAffixDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap reliquaryMainPropDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap reliquarySetDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap rewardDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap rewardPreviewDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap sceneDataMap = new Int2ObjectLinkedOpenHashMap<>(); - @Getter private static final Int2ObjectMap towerFloorDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap towerLevelDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap towerScheduleDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap triggerExcelConfigDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap weaponCurveDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap weaponLevelDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap weaponPromoteDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap weatherDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap worldAreaDataMap = new Int2ObjectOpenHashMap<>(); - @Getter private static final Int2ObjectMap worldLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap achievementGoalDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap activityDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap activityShopDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap activityWatcherDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarCostumeDataItemIdMap = new Int2ObjectLinkedOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarCostumeDataMap = new Int2ObjectLinkedOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarCurveDataMap = new Int2ObjectLinkedOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarFetterLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarFlycloakDataMap = new Int2ObjectLinkedOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarSkillDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarSkillDepotDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap avatarTalentDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap battlePassMissionDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap battlePassRewardDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap blossomRefreshExcelConfigDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap buffDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap chapterDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap cityDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap codexAnimalDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap codexMaterialDataIdMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap codexQuestDataIdMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap codexReliquaryDataIdMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap codexWeaponDataIdMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap combineDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap cookBonusDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap cookRecipeDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap compoundDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap dailyDungeonDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap dungeonDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap dungeonEntryDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap envAnimalGatherConfigDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap equipAffixDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap fetterCharacterCardDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap forgeDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap furnitureMakeConfigDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap gadgetDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap gatherDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap homeWorldBgmDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap homeWorldLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap investigationMonsterDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap itemDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap monsterCurveDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap monsterDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap monsterDescribeDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap musicGameBasicDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap npcDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap openStateDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap personalLineDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap playerLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap proudSkillDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap questDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap reliquaryAffixDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap reliquaryMainPropDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap reliquarySetDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap rewardDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap rewardPreviewDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap sceneDataMap = new Int2ObjectLinkedOpenHashMap<>(); + @Getter + private static final Int2ObjectMap towerFloorDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap towerLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap towerScheduleDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap triggerExcelConfigDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap weaponCurveDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap weaponLevelDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap weaponPromoteDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap weatherDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap worldAreaDataMap = new Int2ObjectOpenHashMap<>(); + @Getter + private static final Int2ObjectMap worldLevelDataMap = new Int2ObjectOpenHashMap<>(); private static final Int2ObjectMap avatarPromoteDataMap = new Int2ObjectOpenHashMap<>(); private static final Int2ObjectMap fetterDataMap = new Int2ObjectOpenHashMap<>(); private static final Int2ObjectMap reliquaryLevelDataMap = new Int2ObjectOpenHashMap<>(); @@ -122,32 +188,70 @@ public class GameData { private static final Int2ObjectMap codexWeaponDataMap = new Int2ObjectOpenHashMap<>(); // Cache - @Getter private static final IntList scenePointIdList = new IntArrayList(); - @Getter private static final List openStateList = new ArrayList<>(); - @Getter private static final Map> scenePointsPerScene = new HashMap<>(); - @Getter private static final Map scriptSceneDataMap = new HashMap<>(); - private static Map> fetters = new HashMap<>(); - private static Map> shopGoods = new HashMap<>(); + @Getter + private static final IntList scenePointIdList = new IntArrayList(); + @Getter + private static final List openStateList = new ArrayList<>(); + @Getter + private static final Map> scenePointsPerScene = new HashMap<>(); + @Getter + private static final Map scriptSceneDataMap = new HashMap<>(); protected static Int2ObjectMap proudSkillGroupLevels = new Int2ObjectOpenHashMap<>(); protected static Int2IntMap proudSkillGroupMaxLevels = new Int2IntOpenHashMap(); protected static Int2ObjectMap avatarSkillLevels = new Int2ObjectOpenHashMap<>(); + private static final Map> fetters = new HashMap<>(); + private static final Map> shopGoods = new HashMap<>(); // Getters with wrong names, remove later - @Deprecated(forRemoval = true) public static Int2ObjectMap getcodexReliquaryIdMap() {return codexReliquaryDataIdMap;} - @Deprecated(forRemoval = true) public static Int2ObjectMap getDungeonEntryDatatMap() {return dungeonEntryDataMap;} - @Deprecated(forRemoval = true) @Tolerate public static ArrayList getcodexReliquaryArrayList() {return codexReliquaryArrayList;} + @Deprecated(forRemoval = true) + public static Int2ObjectMap getcodexReliquaryIdMap() { + return codexReliquaryDataIdMap; + } + + @Deprecated(forRemoval = true) + public static Int2ObjectMap getDungeonEntryDatatMap() { + return dungeonEntryDataMap; + } + + @Deprecated(forRemoval = true) + @Tolerate + public static ArrayList getcodexReliquaryArrayList() { + return codexReliquaryArrayList; + } // Getters with different names that stay for now - public static Int2ObjectMap getMainQuestDataMap() {return mainQuestData;} - public static Int2ObjectMap getMainQuestEncryptionMap() {return questsKeys;} - public static Int2ObjectMap getSceneNpcBornData() {return npcBornData;} - public static Map getAbilityEmbryoInfo() {return abilityEmbryos;} + public static Int2ObjectMap getMainQuestDataMap() { + return mainQuestData; + } + + public static Int2ObjectMap getMainQuestEncryptionMap() { + return questsKeys; + } + + public static Int2ObjectMap getSceneNpcBornData() { + return npcBornData; + } + + public static Map getAbilityEmbryoInfo() { + return abilityEmbryos; + } // Getters that get values rather than containers. If Lombok ever gets syntactic sugar for this, we should adopt that. - public static AbilityData getAbilityData(String abilityName) {return abilityDataMap.get(abilityName);} - public static IntSet getAvatarSkillLevels(int avatarSkillId) {return avatarSkillLevels.get(avatarSkillId);} - public static IntSet getProudSkillGroupLevels(int proudSkillGroupId) {return proudSkillGroupLevels.get(proudSkillGroupId);} - public static int getProudSkillGroupMaxLevel(int proudSkillGroupId) {return proudSkillGroupMaxLevels.getOrDefault(proudSkillGroupId, 0);} + public static AbilityData getAbilityData(String abilityName) { + return abilityDataMap.get(abilityName); + } + + public static IntSet getAvatarSkillLevels(int avatarSkillId) { + return avatarSkillLevels.get(avatarSkillId); + } + + public static IntSet getProudSkillGroupLevels(int proudSkillGroupId) { + return proudSkillGroupLevels.get(proudSkillGroupId); + } + + public static int getProudSkillGroupMaxLevel(int proudSkillGroupId) { + return proudSkillGroupMaxLevels.getOrDefault(proudSkillGroupId, 0); + } // Multi-keyed getters public static AvatarPromoteData getAvatarPromoteData(int promoteId, int promoteLevel) { @@ -198,7 +302,6 @@ public class GameData { } - public static int getWeaponExpRequired(int rankLevel, int level) { WeaponLevelData levelData = weaponLevelDataMap.get(level); if (levelData == null) { diff --git a/src/main/java/emu/grasscutter/data/GameDepot.java b/src/main/java/emu/grasscutter/data/GameDepot.java index f9d9bfcd1..b9788b79a 100644 --- a/src/main/java/emu/grasscutter/data/GameDepot.java +++ b/src/main/java/emu/grasscutter/data/GameDepot.java @@ -1,11 +1,5 @@ package emu.grasscutter.data; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.ResourceLoader.AvatarConfig; import emu.grasscutter.data.excels.ReliquaryAffixData; @@ -18,16 +12,26 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; import lombok.Setter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class GameDepot { - public static final int[] BLOCK_SIZE = new int[]{50,500};//Scales + public static final int[] BLOCK_SIZE = new int[]{50, 500};//Scales - private static Int2ObjectMap> relicRandomMainPropDepot = new Int2ObjectOpenHashMap<>(); - private static Int2ObjectMap> relicMainPropDepot = new Int2ObjectOpenHashMap<>(); - private static Int2ObjectMap> relicAffixDepot = new Int2ObjectOpenHashMap<>(); + private static final Int2ObjectMap> relicRandomMainPropDepot = new Int2ObjectOpenHashMap<>(); + private static final Int2ObjectMap> relicMainPropDepot = new Int2ObjectOpenHashMap<>(); + private static final Int2ObjectMap> relicAffixDepot = new Int2ObjectOpenHashMap<>(); - @Getter @Setter private static Map playerAbilities = new HashMap<>(); - @Getter private static HashMap> spawnLists = new HashMap<>(); - @Getter @Setter private static BlossomConfig blossomConfig; + @Getter + @Setter + private static Map playerAbilities = new HashMap<>(); + @Getter + private static final HashMap> spawnLists = new HashMap<>(); + @Getter + @Setter + private static BlossomConfig blossomConfig; public static void load() { for (ReliquaryMainPropData data : GameData.getReliquaryMainPropDataMap().values()) { diff --git a/src/main/java/emu/grasscutter/data/GameResource.java b/src/main/java/emu/grasscutter/data/GameResource.java index f3d47a516..fb2520893 100644 --- a/src/main/java/emu/grasscutter/data/GameResource.java +++ b/src/main/java/emu/grasscutter/data/GameResource.java @@ -1,12 +1,12 @@ package emu.grasscutter.data; public abstract class GameResource { - - public int getId() { - return 0; - } - - public void onLoad() { - - } + + public int getId() { + return 0; + } + + public void onLoad() { + + } } diff --git a/src/main/java/emu/grasscutter/data/ResourceLoader.java b/src/main/java/emu/grasscutter/data/ResourceLoader.java index 6c392cfdc..223066159 100644 --- a/src/main/java/emu/grasscutter/data/ResourceLoader.java +++ b/src/main/java/emu/grasscutter/data/ResourceLoader.java @@ -19,10 +19,10 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntArraySet; import lombok.val; - import org.reflections.Reflections; -import java.io.*; +import java.io.IOException; +import java.io.InputStreamReader; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; @@ -38,6 +38,7 @@ import static emu.grasscutter.utils.Language.translate; public class ResourceLoader { private static final Set loadedResources = new CopyOnWriteArraySet<>(); + private static boolean loadedAll = false; // Get a list of all resource classes, sorted by loadPriority public static List> getResourceDefClasses() { @@ -62,7 +63,7 @@ public class ResourceLoader { val reflections = new Reflections(ResourceLoader.class.getPackage().getName()); val classes = reflections.getSubTypesOf(GameResource.class); val priorities = ResourceType.LoadPriority.getInOrder(); - Grasscutter.getLogger().debug("Priorities are "+priorities); + Grasscutter.getLogger().debug("Priorities are " + priorities); val map = new LinkedHashMap>>(priorities.size()); priorities.forEach(p -> map.put(p, new HashSet<>())); @@ -76,7 +77,6 @@ public class ResourceLoader { return List.copyOf(map.values()); } - private static boolean loadedAll = false; public static void loadAll() { if (loadedAll) return; Grasscutter.getLogger().info(translate("messages.status.resources.loading")); @@ -134,7 +134,7 @@ public class ResourceLoader { errors.forEach(pair -> Grasscutter.getLogger().error("Error loading resource file: " + pair.left(), pair.right())); long endTime = System.nanoTime(); long ns = (endTime - startTime); //divide by 1000000 to get milliseconds. - Grasscutter.getLogger().debug("Loading resources took "+ns+"ns == "+ns/1000000+"ms"); + Grasscutter.getLogger().debug("Loading resources took " + ns + "ns == " + ns / 1000000 + "ms"); } @SuppressWarnings("rawtypes") @@ -173,9 +173,6 @@ public class ResourceLoader { }); } - public class ScenePointConfig { // Sadly this doesn't work as a local class in loadScenePoints() - public Map points; - } private static void loadScenePoints() { val pattern = Pattern.compile("scene([0-9]+)_point\\.json"); try { @@ -210,7 +207,6 @@ public class ResourceLoader { }); } catch (IOException e) { Grasscutter.getLogger().error("Scene point files cannot be found, you cannot use teleport waypoints!"); - return; } } @@ -234,7 +230,8 @@ public class ResourceLoader { // Read from cached file if exists try { embryoList = JsonUtils.loadToList(getDataPath("AbilityEmbryos.json"), AbilityEmbryoEntry.class); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } if (embryoList == null) { // Load from BinOutput @@ -285,30 +282,26 @@ public class ResourceLoader { } } - // private static HashSet modifierActionTypes = new HashSet<>(); - public static class AbilityConfigData { - public AbilityData Default; - } private static void loadAbilityModifiers() { // Load from BinOutput try (Stream paths = Files.walk(getResourcePath("BinOutput/Ability/Temp/"))) { paths.filter(Files::isRegularFile).filter(path -> path.toString().endsWith(".json")).forEach(ResourceLoader::loadAbilityModifiers); } catch (IOException e) { Grasscutter.getLogger().error("Error loading ability modifiers: ", e); - return; } // System.out.println("Loaded modifiers, found types:"); // modifierActionTypes.stream().sorted().forEach(s -> System.out.printf("%s, ", s)); // System.out.println("[End]"); } + private static void loadAbilityModifiers(Path path) { try { JsonUtils.loadToList(path, AbilityConfigData.class).forEach(data -> loadAbilityData(data.Default)); } catch (IOException e) { Grasscutter.getLogger().error("Error loading ability modifiers from path " + path.toString() + ": ", e); - return; } } + private static void loadAbilityData(AbilityData data) { GameData.abilityDataMap.put(data.abilityName, data); @@ -344,7 +337,8 @@ public class ResourceLoader { try (InputStreamReader reader = DataLoader.loadReader(name)) { // Add spawns to group if it already exists in our spawn group map spawnEntryMap.addAll(JsonUtils.loadToList(reader, SpawnGroupEntry.class)); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } if (spawnEntryMap.isEmpty()) { @@ -375,7 +369,8 @@ public class ResourceLoader { try { list = JsonUtils.loadToList(getDataPath("OpenConfig.json"), OpenConfigEntry.class); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } if (list == null) { Map map = new TreeMap<>(); @@ -389,7 +384,6 @@ public class ResourceLoader { .forEach((name, data) -> map.put(name, new OpenConfigEntry(name, data))); } catch (Exception e) { e.printStackTrace(); - return; } }); } catch (IOException e) { @@ -431,10 +425,12 @@ public class ResourceLoader { String path = "QuestEncryptionKeys.json"; try { JsonUtils.loadToList(getResourcePath(path), QuestEncryptionKey.class).forEach(key -> questEncryptionMap.put(key.getMainQuestId(), key)); - } catch (IOException | NullPointerException ignored) {} + } catch (IOException | NullPointerException ignored) { + } try { DataLoader.loadList(path, QuestEncryptionKey.class).forEach(key -> questEncryptionMap.put(key.getMainQuestId(), key)); - } catch (IOException | NullPointerException ignored) {} + } catch (IOException | NullPointerException ignored) { + } Grasscutter.getLogger().debug("Loaded {} quest keys.", questEncryptionMap.size()); } catch (Exception e) { Grasscutter.getLogger().error("Unable to load quest keys.", e); @@ -450,13 +446,11 @@ public class ResourceLoader { GameData.getScriptSceneDataMap().put(path.getFileName().toString(), JsonUtils.loadToClass(path, ScriptSceneData.class)); } catch (IOException e) { e.printStackTrace(); - return; } }); Grasscutter.getLogger().debug("Loaded " + GameData.getScriptSceneDataMap().size() + " ScriptSceneDatas."); } catch (IOException e) { Grasscutter.getLogger().debug("ScriptSceneData folder missing or empty."); - return; } } @@ -471,7 +465,8 @@ public class ResourceLoader { val sceneId = Integer.parseInt(matcher.group(1)); val data = JsonUtils.loadToClass(path, HomeworldDefaultSaveData.class); GameData.getHomeworldDefaultSaveData().put(sceneId, data); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } }); Grasscutter.getLogger().debug("Loaded " + GameData.getHomeworldDefaultSaveData().size() + " HomeworldDefaultSaveDatas."); } catch (IOException e) { @@ -490,7 +485,8 @@ public class ResourceLoader { data.setIndex(SceneIndexManager.buildIndex(3, data.getBornPosList(), item -> item.getPos().toPoint())); GameData.getSceneNpcBornData().put(data.getSceneId(), data); - } catch (IOException ignored) {} + } catch (IOException ignored) { + } }); Grasscutter.getLogger().debug("Loaded " + GameData.getSceneNpcBornData().size() + " SceneNpcBornDatas."); } catch (IOException e) { @@ -505,7 +501,6 @@ public class ResourceLoader { GameData.getGadgetConfigData().putAll(JsonUtils.loadToMap(path, String.class, ConfigGadget.class)); } catch (Exception e) { Grasscutter.getLogger().error("failed to load ConfigGadget entries for " + path.toString(), e); - return; } }); @@ -524,15 +519,21 @@ public class ResourceLoader { } } - // BinOutput configs + // private static HashSet modifierActionTypes = new HashSet<>(); + public static class AbilityConfigData { + public AbilityData Default; + } public static class AvatarConfig { - @SerializedName(value="abilities", alternate={"targetAbilities"}) + @SerializedName(value = "abilities", alternate = {"targetAbilities"}) public ArrayList abilities; } + // BinOutput configs + public static class AvatarConfigAbility { public String abilityName; + public String toString() { return abilityName; } @@ -546,13 +547,17 @@ public class ResourceLoader { public String $type; public String abilityName; - @SerializedName(value="talentIndex", alternate={"OJOFFKLNAHN"}) + @SerializedName(value = "talentIndex", alternate = {"OJOFFKLNAHN"}) public int talentIndex; - @SerializedName(value="skillID", alternate={"overtime"}) + @SerializedName(value = "skillID", alternate = {"overtime"}) public int skillID; - @SerializedName(value="pointDelta", alternate={"IGEBKIHPOIF"}) + @SerializedName(value = "pointDelta", alternate = {"IGEBKIHPOIF"}) public int pointDelta; } + + public class ScenePointConfig { // Sadly this doesn't work as a local class in loadScenePoints() + public Map points; + } } diff --git a/src/main/java/emu/grasscutter/data/ResourceType.java b/src/main/java/emu/grasscutter/data/ResourceType.java index 39ac0e826..563b0f091 100644 --- a/src/main/java/emu/grasscutter/data/ResourceType.java +++ b/src/main/java/emu/grasscutter/data/ResourceType.java @@ -5,34 +5,38 @@ import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.stream.Stream; -@Retention(RetentionPolicy.RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface ResourceType { - /** Names of the file that this Resource loads from */ - String[] name(); - - /** Load priority - dictates which order to load this resource, with "highest" being loaded first */ - LoadPriority loadPriority() default LoadPriority.NORMAL; - - public enum LoadPriority { - HIGHEST (4), - HIGH (3), - NORMAL (2), - LOW (1), - LOWEST (0); + /** + * Names of the file that this Resource loads from + */ + String[] name(); - private final int value; - - LoadPriority(int value) { - this.value = value; - } - - public int value() { - return value; - } + /** + * Load priority - dictates which order to load this resource, with "highest" being loaded first + */ + LoadPriority loadPriority() default LoadPriority.NORMAL; + + enum LoadPriority { + HIGHEST(4), + HIGH(3), + NORMAL(2), + LOW(1), + LOWEST(0); + + private final int value; + + LoadPriority(int value) { + this.value = value; + } public static List getInOrder() { return Stream.of(LoadPriority.values()).sorted((x, y) -> y.value() - x.value()).toList(); } - } + + public int value() { + return value; + } + } } diff --git a/src/main/java/emu/grasscutter/data/binout/AbilityEmbryoEntry.java b/src/main/java/emu/grasscutter/data/binout/AbilityEmbryoEntry.java index e0a047a58..87bc4ba1e 100644 --- a/src/main/java/emu/grasscutter/data/binout/AbilityEmbryoEntry.java +++ b/src/main/java/emu/grasscutter/data/binout/AbilityEmbryoEntry.java @@ -1,23 +1,23 @@ package emu.grasscutter.data.binout; public class AbilityEmbryoEntry { - private String name; - private String[] abilities; - - public AbilityEmbryoEntry() { + private String name; + private String[] abilities; - } - - public AbilityEmbryoEntry(String avatarName, String[] array) { - this.name = avatarName; - this.abilities = array; - } + public AbilityEmbryoEntry() { - public String getName() { - return name; - } - - public String[] getAbilities() { - return abilities; - } + } + + public AbilityEmbryoEntry(String avatarName, String[] array) { + this.name = avatarName; + this.abilities = array; + } + + public String getName() { + return name; + } + + public String[] getAbilities() { + return abilities; + } } diff --git a/src/main/java/emu/grasscutter/data/binout/AbilityModifier.java b/src/main/java/emu/grasscutter/data/binout/AbilityModifier.java index 68e9939b4..f05c7f3f9 100644 --- a/src/main/java/emu/grasscutter/data/binout/AbilityModifier.java +++ b/src/main/java/emu/grasscutter/data/binout/AbilityModifier.java @@ -1,22 +1,35 @@ package emu.grasscutter.data.binout; -import java.io.Serializable; - import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.common.DynamicFloat; +import java.io.Serializable; + public class AbilityModifier implements Serializable { private static final long serialVersionUID = -2001232313615923575L; - @SerializedName(value="onAdded", alternate={"KCICDEJLIJD"}) + @SerializedName(value = "onAdded", alternate = {"KCICDEJLIJD"}) public AbilityModifierAction[] onAdded; - @SerializedName(value="onThinkInterval", alternate={"PBDDACFFPOE"}) + @SerializedName(value = "onThinkInterval", alternate = {"PBDDACFFPOE"}) public AbilityModifierAction[] onThinkInterval; public AbilityModifierAction[] onRemoved; public DynamicFloat duration = DynamicFloat.ZERO; public static class AbilityModifierAction { + @SerializedName("$type") + public Type type; + public String target; + @SerializedName(value = "amount", alternate = "PDLLIFICICJ") + public DynamicFloat amount = DynamicFloat.ZERO; + public DynamicFloat amountByCasterAttackRatio = DynamicFloat.ZERO; + public DynamicFloat amountByCasterCurrentHPRatio = DynamicFloat.ZERO; + public DynamicFloat amountByCasterMaxHPRatio = DynamicFloat.ZERO; + public DynamicFloat amountByGetDamage = DynamicFloat.ZERO; + public DynamicFloat amountByTargetCurrentHPRatio = DynamicFloat.ZERO; + public DynamicFloat amountByTargetMaxHPRatio = DynamicFloat.ZERO; + @SerializedName(value = "ignoreAbilityProperty", alternate = "HHFGADCJJDI") + public boolean ignoreAbilityProperty; + public String modifierName; public enum Type { ActCameraRadialBlur, ActCameraShake, AddAvatarSkillInfo, AddChargeBarValue, AddClimateMeter, AddElementDurability, AddGlobalValue, AddGlobalValueToTarget, @@ -71,22 +84,8 @@ public class AbilityModifier implements Serializable { TriggerSetPassThrough, TriggerSetRenderersEnable, TriggerSetShadowRamp, TriggerSetVisible, TriggerTaunt, TriggerThrowEquipPart, TriggerUGCGadgetMove, TryFindBlinkPoint, TryFindBlinkPointByBorn, TryTriggerPlatformStartMove, TurnDirection, TurnDirectionToPos, - UpdateReactionDamage, UseSkillEliteSet, WidgetSkillStart; + UpdateReactionDamage, UseSkillEliteSet, WidgetSkillStart } - @SerializedName("$type") - public Type type; - public String target; - @SerializedName(value = "amount", alternate = "PDLLIFICICJ") - public DynamicFloat amount = DynamicFloat.ZERO; - public DynamicFloat amountByCasterAttackRatio = DynamicFloat.ZERO; - public DynamicFloat amountByCasterCurrentHPRatio = DynamicFloat.ZERO; - public DynamicFloat amountByCasterMaxHPRatio = DynamicFloat.ZERO; - public DynamicFloat amountByGetDamage = DynamicFloat.ZERO; - public DynamicFloat amountByTargetCurrentHPRatio = DynamicFloat.ZERO; - public DynamicFloat amountByTargetMaxHPRatio = DynamicFloat.ZERO; - @SerializedName(value = "ignoreAbilityProperty", alternate = "HHFGADCJJDI") - public boolean ignoreAbilityProperty; - public String modifierName; } //The following should be implemented into DynamicFloat if older resource formats need to be supported diff --git a/src/main/java/emu/grasscutter/data/binout/AbilityModifierEntry.java b/src/main/java/emu/grasscutter/data/binout/AbilityModifierEntry.java index 348c0f2c4..02d419b69 100644 --- a/src/main/java/emu/grasscutter/data/binout/AbilityModifierEntry.java +++ b/src/main/java/emu/grasscutter/data/binout/AbilityModifierEntry.java @@ -1,37 +1,37 @@ package emu.grasscutter.data.binout; +import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction; + import java.util.ArrayList; import java.util.List; -import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction; - public class AbilityModifierEntry { - private String name; // Custom value - public List onModifierAdded; - public List onThinkInterval; - public List onRemoved; - - public AbilityModifierEntry(String name) { - this.name = name; - this.onModifierAdded = new ArrayList<>(); - this.onThinkInterval = new ArrayList<>(); - this.onRemoved = new ArrayList<>(); - } - - public String getName() { - return name; - } + public List onModifierAdded; + public List onThinkInterval; + public List onRemoved; + private final String name; // Custom value - public List getOnAdded() { - return onModifierAdded; - } + public AbilityModifierEntry(String name) { + this.name = name; + this.onModifierAdded = new ArrayList<>(); + this.onThinkInterval = new ArrayList<>(); + this.onRemoved = new ArrayList<>(); + } - public List getOnThinkInterval() { - return onThinkInterval; - } + public String getName() { + return name; + } + + public List getOnAdded() { + return onModifierAdded; + } + + public List getOnThinkInterval() { + return onThinkInterval; + } + + public List getOnRemoved() { + return onRemoved; + } - public List getOnRemoved() { - return onRemoved; - } - } diff --git a/src/main/java/emu/grasscutter/data/binout/ConfigGadgetCombatProperty.java b/src/main/java/emu/grasscutter/data/binout/ConfigGadgetCombatProperty.java index f00d74d78..737d4f0fa 100644 --- a/src/main/java/emu/grasscutter/data/binout/ConfigGadgetCombatProperty.java +++ b/src/main/java/emu/grasscutter/data/binout/ConfigGadgetCombatProperty.java @@ -1,6 +1,5 @@ package emu.grasscutter.data.binout; -import com.google.gson.annotations.SerializedName; import lombok.AccessLevel; import lombok.Data; import lombok.experimental.FieldDefaults; diff --git a/src/main/java/emu/grasscutter/data/binout/HomeworldDefaultSaveData.java b/src/main/java/emu/grasscutter/data/binout/HomeworldDefaultSaveData.java index 833d50294..d97eb2660 100644 --- a/src/main/java/emu/grasscutter/data/binout/HomeworldDefaultSaveData.java +++ b/src/main/java/emu/grasscutter/data/binout/HomeworldDefaultSaveData.java @@ -27,9 +27,10 @@ public class HomeworldDefaultSaveData { List doorLists; @SerializedName("EPGELGEFJFK") List stairLists; + @Data @FieldDefaults(level = AccessLevel.PRIVATE) - public static class HomeBlock{ + public static class HomeBlock { @SerializedName(value = "FGIJCELCGFI", alternate = "PGDPDIDJEEL") int blockId; @@ -43,7 +44,7 @@ public class HomeworldDefaultSaveData { @Data @FieldDefaults(level = AccessLevel.PRIVATE) - public static class HomeFurniture{ + public static class HomeFurniture { @SerializedName(value = "ENHNGKJBJAB", alternate = "KMAAJJHPNBA") int id; diff --git a/src/main/java/emu/grasscutter/data/binout/MainQuestData.java b/src/main/java/emu/grasscutter/data/binout/MainQuestData.java index d597b53fd..3033390ec 100644 --- a/src/main/java/emu/grasscutter/data/binout/MainQuestData.java +++ b/src/main/java/emu/grasscutter/data/binout/MainQuestData.java @@ -3,6 +3,7 @@ package emu.grasscutter.data.binout; import dev.morphia.annotations.Entity; import emu.grasscutter.game.quest.enums.QuestType; import lombok.Data; + import java.util.List; import java.util.Objects; @@ -47,6 +48,7 @@ public class MainQuestData { public SubQuestData[] getSubQuests() { return subQuests; } + public List getTalks() { return talks; } @@ -62,12 +64,15 @@ public class MainQuestData { } - @Data @Entity + @Data + @Entity public static class TalkData { private int id; private String heroTalk; - public TalkData() {} + public TalkData() { + } + public TalkData(int id, String heroTalk) { this.id = id; this.heroTalk = heroTalk; diff --git a/src/main/java/emu/grasscutter/data/binout/OpenConfigEntry.java b/src/main/java/emu/grasscutter/data/binout/OpenConfigEntry.java index 01d9c9833..03971aa25 100644 --- a/src/main/java/emu/grasscutter/data/binout/OpenConfigEntry.java +++ b/src/main/java/emu/grasscutter/data/binout/OpenConfigEntry.java @@ -1,72 +1,72 @@ package emu.grasscutter.data.binout; +import emu.grasscutter.data.ResourceLoader.OpenConfigData; + import java.util.ArrayList; import java.util.List; -import emu.grasscutter.data.ResourceLoader.OpenConfigData; - public class OpenConfigEntry { - private String name; - private String[] addAbilities; - private int extraTalentIndex; - private SkillPointModifier[] skillPointModifiers; + private final String name; + private String[] addAbilities; + private int extraTalentIndex; + private SkillPointModifier[] skillPointModifiers; - public OpenConfigEntry(String name, OpenConfigData[] data) { - this.name = name; - - List abilityList = new ArrayList<>(); - List modList = new ArrayList<>(); - - for (OpenConfigData entry : data) { - if (entry.$type.contains("AddAbility")) { - abilityList.add(entry.abilityName); - } else if (entry.talentIndex > 0) { - this.extraTalentIndex = entry.talentIndex; - } else if (entry.$type.contains("ModifySkillPoint")) { - modList.add(new SkillPointModifier(entry.skillID, entry.pointDelta)); - } - } - - if (abilityList.size() > 0) { - this.addAbilities = abilityList.toArray(new String[0]); - } - - if (modList.size() > 0) { - this.skillPointModifiers = modList.toArray(new SkillPointModifier[0]); - } - } + public OpenConfigEntry(String name, OpenConfigData[] data) { + this.name = name; - public String getName() { - return name; - } + List abilityList = new ArrayList<>(); + List modList = new ArrayList<>(); - public String[] getAddAbilities() { - return addAbilities; - } + for (OpenConfigData entry : data) { + if (entry.$type.contains("AddAbility")) { + abilityList.add(entry.abilityName); + } else if (entry.talentIndex > 0) { + this.extraTalentIndex = entry.talentIndex; + } else if (entry.$type.contains("ModifySkillPoint")) { + modList.add(new SkillPointModifier(entry.skillID, entry.pointDelta)); + } + } - public int getExtraTalentIndex() { - return extraTalentIndex; - } - - public SkillPointModifier[] getSkillPointModifiers() { - return skillPointModifiers; - } + if (abilityList.size() > 0) { + this.addAbilities = abilityList.toArray(new String[0]); + } - public static class SkillPointModifier { - private int skillId; - private int delta; - - public SkillPointModifier(int skillId, int delta) { - this.skillId = skillId; - this.delta = delta; - } + if (modList.size() > 0) { + this.skillPointModifiers = modList.toArray(new SkillPointModifier[0]); + } + } - public int getSkillId() { - return skillId; - } + public String getName() { + return name; + } - public int getDelta() { - return delta; - } - } + public String[] getAddAbilities() { + return addAbilities; + } + + public int getExtraTalentIndex() { + return extraTalentIndex; + } + + public SkillPointModifier[] getSkillPointModifiers() { + return skillPointModifiers; + } + + public static class SkillPointModifier { + private final int skillId; + private final int delta; + + public SkillPointModifier(int skillId, int delta) { + this.skillId = skillId; + this.delta = delta; + } + + public int getSkillId() { + return skillId; + } + + public int getDelta() { + return delta; + } + } } diff --git a/src/main/java/emu/grasscutter/data/binout/SceneNpcBornEntry.java b/src/main/java/emu/grasscutter/data/binout/SceneNpcBornEntry.java index fe7d670cf..f77ce657b 100644 --- a/src/main/java/emu/grasscutter/data/binout/SceneNpcBornEntry.java +++ b/src/main/java/emu/grasscutter/data/binout/SceneNpcBornEntry.java @@ -1,5 +1,6 @@ package emu.grasscutter.data.binout; +import com.google.gson.annotations.SerializedName; import emu.grasscutter.utils.Position; import lombok.AccessLevel; import lombok.Data; @@ -7,26 +8,24 @@ import lombok.experimental.FieldDefaults; import java.util.List; -import com.google.gson.annotations.SerializedName; - @Data @FieldDefaults(level = AccessLevel.PRIVATE) public class SceneNpcBornEntry { - @SerializedName(value="id", alternate={"_id", "ID"}) + @SerializedName(value = "id", alternate = {"_id", "ID"}) int id; - - @SerializedName(value="configId", alternate={"_configId"}) + + @SerializedName(value = "configId", alternate = {"_configId"}) int configId; - - @SerializedName(value="pos", alternate={"_pos"}) + + @SerializedName(value = "pos", alternate = {"_pos"}) Position pos; - - @SerializedName(value="rot", alternate={"_rot"}) + + @SerializedName(value = "rot", alternate = {"_rot"}) Position rot; - - @SerializedName(value="groupId", alternate={"_groupId"}) + + @SerializedName(value = "groupId", alternate = {"_groupId"}) int groupId; - - @SerializedName(value="suiteIdList", alternate={"_suiteIdList"}) + + @SerializedName(value = "suiteIdList", alternate = {"_suiteIdList"}) List suiteIdList; } diff --git a/src/main/java/emu/grasscutter/data/binout/ScenePointEntry.java b/src/main/java/emu/grasscutter/data/binout/ScenePointEntry.java index 15f51cd71..2b42494b5 100644 --- a/src/main/java/emu/grasscutter/data/binout/ScenePointEntry.java +++ b/src/main/java/emu/grasscutter/data/binout/ScenePointEntry.java @@ -4,8 +4,10 @@ import emu.grasscutter.data.common.PointData; import lombok.Getter; public class ScenePointEntry { - @Getter final private int sceneId; - @Getter final private PointData pointData; + @Getter + final private int sceneId; + @Getter + final private PointData pointData; @Deprecated(forRemoval = true) public ScenePointEntry(String name, PointData pointData) { diff --git a/src/main/java/emu/grasscutter/data/binout/ScriptSceneData.java b/src/main/java/emu/grasscutter/data/binout/ScriptSceneData.java index 5634f61f0..379671fd7 100644 --- a/src/main/java/emu/grasscutter/data/binout/ScriptSceneData.java +++ b/src/main/java/emu/grasscutter/data/binout/ScriptSceneData.java @@ -1,8 +1,6 @@ package emu.grasscutter.data.binout; import com.google.gson.annotations.SerializedName; -import emu.grasscutter.scripts.data.SceneGroup; -import emu.grasscutter.utils.Position; import lombok.Data; import java.util.List; @@ -10,7 +8,7 @@ import java.util.Map; @Data public class ScriptSceneData { - Map scriptObjectList; + Map scriptObjectList; @Data public static class ScriptObject { diff --git a/src/main/java/emu/grasscutter/data/common/CurveInfo.java b/src/main/java/emu/grasscutter/data/common/CurveInfo.java index bd53b9a42..d9f814723 100644 --- a/src/main/java/emu/grasscutter/data/common/CurveInfo.java +++ b/src/main/java/emu/grasscutter/data/common/CurveInfo.java @@ -1,17 +1,19 @@ package emu.grasscutter.data.common; public class CurveInfo { - private String type; + private String type; private String arith; private float value; - - public String getType() { - return type; - } - public String getArith() { - return arith; - } - public float getValue() { - return value; - } + + public String getType() { + return type; + } + + public String getArith() { + return arith; + } + + public float getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/data/common/DynamicFloat.java b/src/main/java/emu/grasscutter/data/common/DynamicFloat.java index 4fc3fdca6..f5a09a566 100644 --- a/src/main/java/emu/grasscutter/data/common/DynamicFloat.java +++ b/src/main/java/emu/grasscutter/data/common/DynamicFloat.java @@ -1,63 +1,22 @@ package emu.grasscutter.data.common; -import java.util.List; -import java.util.Optional; - import it.unimi.dsi.fastutil.floats.FloatArrayList; import it.unimi.dsi.fastutil.objects.Object2FloatArrayMap; import it.unimi.dsi.fastutil.objects.Object2FloatMap; import lombok.val; -import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.NotNull; -import org.luaj.vm2.ast.Str; + +import java.util.List; +import java.util.Optional; public class DynamicFloat { public static DynamicFloat ZERO = new DynamicFloat(0f); - - public static class StackOp { - enum Op { CONSTANT, KEY, ADD, SUB, MUL, DIV, NEXBOOLEAN }; - public Op op; - public float fValue; - public String sValue; - public boolean bValue; - - public StackOp(String s) { - switch (s.toUpperCase()) { - case "ADD" -> this.op = Op.ADD; - case "SUB" -> this.op = Op.SUB; - case "MUL" -> this.op = Op.MUL; - case "DIV" -> this.op = Op.DIV; - default -> { - this.op = Op.KEY; - this.sValue = s; - } - } - } - public StackOp(boolean b) { - this.op = Op.NEXBOOLEAN; - this.bValue = Boolean.parseBoolean(String.valueOf(b)); - } - - public StackOp(float f) { - this.op = Op.CONSTANT; - this.fValue = f; - } - } - private List ops; private boolean dynamic = false; private float constant = 0f; - public DynamicFloat(float constant) { this.constant = constant; } - public String toString(boolean nextBoolean) { - String key = String.valueOf(nextBoolean); - this.ops = List.of(new StackOp(key)); - return ops.toString(); - } - public DynamicFloat(String key) { this.dynamic = true; this.ops = List.of(new StackOp(key)); @@ -73,6 +32,12 @@ public class DynamicFloat { this.ops = ops; } + public String toString(boolean nextBoolean) { + String key = String.valueOf(nextBoolean); + this.ops = List.of(new StackOp(key)); + return ops.toString(); + } + public float get() { return this.get(new Object2FloatArrayMap()); } @@ -87,13 +52,46 @@ public class DynamicFloat { case CONSTANT -> fl.push(op.fValue); case KEY -> fl.push(props.getOrDefault(op.sValue, 0f)); case ADD -> fl.push(fl.popFloat() + fl.popFloat()); - case SUB -> fl.push(-fl.popFloat() + fl.popFloat()); // [f0, f1, f2] -> [f0, f1-f2] (opposite of RPN order) + case SUB -> + fl.push(-fl.popFloat() + fl.popFloat()); // [f0, f1, f2] -> [f0, f1-f2] (opposite of RPN order) case MUL -> fl.push(fl.popFloat() * fl.popFloat()); - case DIV -> fl.push((1f/fl.popFloat()) * fl.popFloat()); // [f0, f1, f2] -> [f0, f1/f2] - case NEXBOOLEAN -> fl.push(props.getOrDefault(Optional.of(op.bValue), 0f)); + case DIV -> fl.push((1f / fl.popFloat()) * fl.popFloat()); // [f0, f1, f2] -> [f0, f1/f2] + case NEXBOOLEAN -> fl.push(props.getOrDefault(Optional.of(op.bValue), 0f)); } } return fl.popFloat(); // well-formed data will always have only one value left at this point } + + public static class StackOp { + public Op op; + + public float fValue; + public String sValue; + public boolean bValue; + public StackOp(String s) { + switch (s.toUpperCase()) { + case "ADD" -> this.op = Op.ADD; + case "SUB" -> this.op = Op.SUB; + case "MUL" -> this.op = Op.MUL; + case "DIV" -> this.op = Op.DIV; + default -> { + this.op = Op.KEY; + this.sValue = s; + } + } + } + + public StackOp(boolean b) { + this.op = Op.NEXBOOLEAN; + this.bValue = Boolean.parseBoolean(String.valueOf(b)); + } + + public StackOp(float f) { + this.op = Op.CONSTANT; + this.fValue = f; + } + + enum Op {CONSTANT, KEY, ADD, SUB, MUL, DIV, NEXBOOLEAN} + } } diff --git a/src/main/java/emu/grasscutter/data/common/FightPropData.java b/src/main/java/emu/grasscutter/data/common/FightPropData.java index aed67227b..cdc634a39 100644 --- a/src/main/java/emu/grasscutter/data/common/FightPropData.java +++ b/src/main/java/emu/grasscutter/data/common/FightPropData.java @@ -3,23 +3,23 @@ package emu.grasscutter.data.common; import emu.grasscutter.game.props.FightProperty; public class FightPropData { - private String propType; - private FightProperty prop; + private String propType; + private FightProperty prop; private float value; - - public String getPropType() { - return propType; - } - - public float getValue() { - return value; - } - public FightProperty getProp() { - return prop; - } + public String getPropType() { + return propType; + } - public void onLoad() { - this.prop = FightProperty.getPropByName(propType); - } -} \ No newline at end of file + public float getValue() { + return value; + } + + public FightProperty getProp() { + return prop; + } + + public void onLoad() { + this.prop = FightProperty.getPropByName(propType); + } +} diff --git a/src/main/java/emu/grasscutter/data/common/ItemParamData.java b/src/main/java/emu/grasscutter/data/common/ItemParamData.java index 77c168138..fe88ff3d7 100644 --- a/src/main/java/emu/grasscutter/data/common/ItemParamData.java +++ b/src/main/java/emu/grasscutter/data/common/ItemParamData.java @@ -4,13 +4,14 @@ import com.google.gson.annotations.SerializedName; // Used in excels public class ItemParamData { - @SerializedName(value="id", alternate={"itemId"}) + @SerializedName(value = "id", alternate = {"itemId"}) private int id; - @SerializedName(value="count", alternate={"itemCount"}) + @SerializedName(value = "count", alternate = {"itemCount"}) private int count; - public ItemParamData() {} + public ItemParamData() { + } public ItemParamData(int id, int count) { this.id = id; diff --git a/src/main/java/emu/grasscutter/data/common/ItemParamStringData.java b/src/main/java/emu/grasscutter/data/common/ItemParamStringData.java index 573065925..e21841540 100644 --- a/src/main/java/emu/grasscutter/data/common/ItemParamStringData.java +++ b/src/main/java/emu/grasscutter/data/common/ItemParamStringData.java @@ -1,26 +1,27 @@ package emu.grasscutter.data.common; public class ItemParamStringData { - private int id; + private int id; private String count; - public ItemParamStringData() {} + public ItemParamStringData() { + } - public int getId() { - return id; - } + public int getId() { + return id; + } - public String getCount() { - return count; - } - - public ItemParamData toItemParamData() { - if (count.contains(";")) { - String[] split = count.split(";"); - count = count.split(";")[split.length - 1]; - } else if (count.contains(".")) { - return new ItemParamData(id, (int) Math.ceil(Double.parseDouble(count))); - } - return new ItemParamData(id, Integer.parseInt(count)); - } + public String getCount() { + return count; + } + + public ItemParamData toItemParamData() { + if (count.contains(";")) { + String[] split = count.split(";"); + count = count.split(";")[split.length - 1]; + } else if (count.contains(".")) { + return new ItemParamData(id, (int) Math.ceil(Double.parseDouble(count))); + } + return new ItemParamData(id, Integer.parseInt(count)); + } } diff --git a/src/main/java/emu/grasscutter/data/common/PointData.java b/src/main/java/emu/grasscutter/data/common/PointData.java index b2e9a2000..749349f01 100644 --- a/src/main/java/emu/grasscutter/data/common/PointData.java +++ b/src/main/java/emu/grasscutter/data/common/PointData.java @@ -1,7 +1,6 @@ package emu.grasscutter.data.common; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.DailyDungeonData; @@ -12,18 +11,25 @@ import lombok.Getter; import lombok.Setter; public class PointData { - @Getter @Setter private int id; + @Getter + @Setter + private int id; private String $type; - @Getter private Position tranPos; + @Getter + private Position tranPos; - @SerializedName(value="dungeonIds", alternate={"JHHFPGJNMIN"}) - @Getter private int[] dungeonIds; + @SerializedName(value = "dungeonIds", alternate = {"JHHFPGJNMIN"}) + @Getter + private int[] dungeonIds; - @SerializedName(value="dungeonRandomList", alternate={"OIBKFJNBLHO"}) - @Getter private int[] dungeonRandomList; + @SerializedName(value = "dungeonRandomList", alternate = {"OIBKFJNBLHO"}) + @Getter + private int[] dungeonRandomList; - @SerializedName(value="tranSceneId", alternate={"JHBICGBAPIH"}) - @Getter @Setter private int tranSceneId; + @SerializedName(value = "tranSceneId", alternate = {"JHBICGBAPIH"}) + @Getter + @Setter + private int tranSceneId; public String getType() { return $type; diff --git a/src/main/java/emu/grasscutter/data/common/PropGrowCurve.java b/src/main/java/emu/grasscutter/data/common/PropGrowCurve.java index ac8cac5f0..33cb85ae9 100644 --- a/src/main/java/emu/grasscutter/data/common/PropGrowCurve.java +++ b/src/main/java/emu/grasscutter/data/common/PropGrowCurve.java @@ -4,12 +4,12 @@ public class PropGrowCurve { private String type; private String growCurve; - public String getType(){ + public String getType() { return this.type; } - - public String getGrowCurve(){ + + public String getGrowCurve() { return this.growCurve; } - + } diff --git a/src/main/java/emu/grasscutter/data/excels/AchievementData.java b/src/main/java/emu/grasscutter/data/excels/AchievementData.java index da3ef3526..6e50ac5b0 100644 --- a/src/main/java/emu/grasscutter/data/excels/AchievementData.java +++ b/src/main/java/emu/grasscutter/data/excels/AchievementData.java @@ -18,7 +18,7 @@ public class AchievementData extends GameResource { private static final AtomicBoolean isDivided = new AtomicBoolean(); private int goalId; private int preStageAchievementId; - private Set groupAchievementIdList = new HashSet<>(); + private final Set groupAchievementIdList = new HashSet<>(); private boolean isParent; private long titleTextMapHash; private long descTextMapHash; @@ -29,26 +29,6 @@ public class AchievementData extends GameResource { private int progress; private boolean isDisuse; - public boolean hasPreStageAchievement() { - return this.preStageAchievementId != 0; - } - - public boolean hasGroupAchievements() { - return !this.groupAchievementIdList.isEmpty(); - } - - public boolean isUsed() { - return !this.isDisuse; - } - - public Set getGroupAchievementIdList() { - return this.groupAchievementIdList.stream().collect(Collectors.toUnmodifiableSet()); - } - - public Set getExcludedGroupAchievementIdList() { - return this.groupAchievementIdList.stream().filter(integer -> integer != this.getId()).collect(Collectors.toUnmodifiableSet()); - } - public static void divideIntoGroups() { if (isDivided.get()) { return; @@ -93,4 +73,24 @@ public class AchievementData extends GameResource { map.values().stream().filter(a -> !a.hasGroupAchievements() && a.isUsed()).forEach(a -> a.isParent = true); } + + public boolean hasPreStageAchievement() { + return this.preStageAchievementId != 0; + } + + public boolean hasGroupAchievements() { + return !this.groupAchievementIdList.isEmpty(); + } + + public boolean isUsed() { + return !this.isDisuse; + } + + public Set getGroupAchievementIdList() { + return this.groupAchievementIdList.stream().collect(Collectors.toUnmodifiableSet()); + } + + public Set getExcludedGroupAchievementIdList() { + return this.groupAchievementIdList.stream().filter(integer -> integer != this.getId()).collect(Collectors.toUnmodifiableSet()); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/ActivityData.java b/src/main/java/emu/grasscutter/data/excels/ActivityData.java index 74b569673..d0188dd5f 100644 --- a/src/main/java/emu/grasscutter/data/excels/ActivityData.java +++ b/src/main/java/emu/grasscutter/data/excels/ActivityData.java @@ -24,6 +24,7 @@ public class ActivityData extends GameResource { public int getId() { return this.activityId; } + @Override public void onLoad() { this.watcherDataList = watcherId.stream().map(item -> GameData.getActivityWatcherDataMap().get(item.intValue())) diff --git a/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java b/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java index 23a129423..7883743a8 100644 --- a/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java +++ b/src/main/java/emu/grasscutter/data/excels/ActivityWatcherData.java @@ -27,7 +27,7 @@ public class ActivityWatcherData extends GameResource { @Getter @FieldDefaults(level = AccessLevel.PRIVATE) - public static class WatcherTrigger{ + public static class WatcherTrigger { String triggerType; List paramList; diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarCurveData.java b/src/main/java/emu/grasscutter/data/excels/AvatarCurveData.java index 9fb219da4..4e7815b13 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarCurveData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarCurveData.java @@ -1,36 +1,36 @@ package emu.grasscutter.data.excels; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.CurveInfo; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + @ResourceType(name = "AvatarCurveExcelConfigData.json") public class AvatarCurveData extends GameResource { - private int level; - private CurveInfo[] curveInfos; - + private int level; + private CurveInfo[] curveInfos; + private Map curveInfoMap; - - @Override - public int getId() { - return this.level; - } - - public int getLevel() { - return level; - } - - public Map getCurveInfos() { - return curveInfoMap; - } - - @Override - public void onLoad() { - this.curveInfoMap = new HashMap<>(); - Stream.of(this.curveInfos).forEach(info -> this.curveInfoMap.put(info.getType(), info.getValue())); - } + + @Override + public int getId() { + return this.level; + } + + public int getLevel() { + return level; + } + + public Map getCurveInfos() { + return curveInfoMap; + } + + @Override + public void onLoad() { + this.curveInfoMap = new HashMap<>(); + Stream.of(this.curveInfos).forEach(info -> this.curveInfoMap.put(info.getType(), info.getValue())); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarData.java b/src/main/java/emu/grasscutter/data/excels/AvatarData.java index 799fb3a71..3fb1383b7 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarData.java @@ -1,7 +1,5 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; @@ -16,26 +14,43 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import lombok.Getter; +import java.util.List; + @ResourceType(name = "AvatarExcelConfigData.json", loadPriority = LoadPriority.LOW) public class AvatarData extends GameResource { private String iconName; - @Getter private String bodyType; - @Getter private String qualityType; - @Getter private int chargeEfficiency; - @Getter private int initialWeapon; - @Getter private WeaponType weaponType; - @Getter private String imageName; - @Getter private int avatarPromoteId; - @Getter private String cutsceneShow; - @Getter private int skillDepotId; - @Getter private int staminaRecoverSpeed; - @Getter private List candSkillDepotIds; - @Getter private String avatarIdentityType; - @Getter private List avatarPromoteRewardLevelList; - @Getter private List avatarPromoteRewardIdList; + @Getter + private String bodyType; + @Getter + private String qualityType; + @Getter + private int chargeEfficiency; + @Getter + private int initialWeapon; + @Getter + private WeaponType weaponType; + @Getter + private String imageName; + @Getter + private int avatarPromoteId; + @Getter + private String cutsceneShow; + @Getter + private int skillDepotId; + @Getter + private int staminaRecoverSpeed; + @Getter + private List candSkillDepotIds; + @Getter + private String avatarIdentityType; + @Getter + private List avatarPromoteRewardLevelList; + @Getter + private List avatarPromoteRewardIdList; - @Getter private long nameTextMapHash; + @Getter + private long nameTextMapHash; private float hpBase; private float attackBase; @@ -48,18 +63,24 @@ public class AvatarData extends GameResource { private int id; // Transient - @Getter private String name; + @Getter + private String name; private Int2ObjectMap growthCurveMap; private float[] hpGrowthCurve; private float[] attackGrowthCurve; private float[] defenseGrowthCurve; - @Getter private AvatarSkillDepotData skillDepot; - @Getter private IntList abilities; + @Getter + private AvatarSkillDepotData skillDepot; + @Getter + private IntList abilities; - @Getter private List fetters; - @Getter private int nameCardRewardId; - @Getter private int nameCardId; + @Getter + private List fetters; + @Getter + private int nameCardRewardId; + @Getter + private int nameCardId; public float getBaseHp(int level) { try { @@ -166,4 +187,3 @@ public class AvatarData extends GameResource { } } } - diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarFetterLevelData.java b/src/main/java/emu/grasscutter/data/excels/AvatarFetterLevelData.java index efc44147a..776a213da 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarFetterLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarFetterLevelData.java @@ -5,19 +5,19 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "AvatarFettersLevelExcelConfigData.json") public class AvatarFetterLevelData extends GameResource { - private int fetterLevel; - private int needExp; - - @Override - public int getId() { - return this.fetterLevel; - } - - public int getLevel() { - return fetterLevel; - } - - public int getExp() { - return needExp; - } + private int fetterLevel; + private int needExp; + + @Override + public int getId() { + return this.fetterLevel; + } + + public int getLevel() { + return fetterLevel; + } + + public int getExp() { + return needExp; + } } diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarFlycloakData.java b/src/main/java/emu/grasscutter/data/excels/AvatarFlycloakData.java index ab8106eab..1702a7bb1 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarFlycloakData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarFlycloakData.java @@ -5,20 +5,20 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "AvatarFlycloakExcelConfigData.json") public class AvatarFlycloakData extends GameResource { - private int flycloakId; + private int flycloakId; private long nameTextMapHash; - @Override - public int getId() { - return this.flycloakId; - } + @Override + public int getId() { + return this.flycloakId; + } - public long getNameTextMapHash() { - return nameTextMapHash; - } + public long getNameTextMapHash() { + return nameTextMapHash; + } - @Override - public void onLoad() { + @Override + public void onLoad() { - } + } } diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarLevelData.java b/src/main/java/emu/grasscutter/data/excels/AvatarLevelData.java index 3b37c3886..eae0573ec 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarLevelData.java @@ -5,19 +5,19 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "AvatarLevelExcelConfigData.json") public class AvatarLevelData extends GameResource { - private int level; - private int exp; - - @Override - public int getId() { - return this.level; - } - - public int getLevel() { - return level; - } - - public int getExp() { - return exp; - } + private int level; + private int exp; + + @Override + public int getId() { + return this.level; + } + + public int getLevel() { + return level; + } + + public int getExp() { + return exp; + } } diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarPromoteData.java b/src/main/java/emu/grasscutter/data/excels/AvatarPromoteData.java index 226105aac..69c471628 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarPromoteData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarPromoteData.java @@ -1,74 +1,75 @@ package emu.grasscutter.data.excels; -import java.util.ArrayList; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.FightPropData; import emu.grasscutter.data.common.ItemParamData; +import java.util.ArrayList; + @ResourceType(name = "AvatarPromoteExcelConfigData.json") public class AvatarPromoteData extends GameResource { - - private int avatarPromoteId; - private int promoteLevel; - private int scoinCost; - private ItemParamData[] costItems; - private int unlockMaxLevel; - private FightPropData[] addProps; - private int requiredPlayerLevel; - - @Override - public int getId() { - return (avatarPromoteId << 8) + promoteLevel; - } - public int getAvatarPromoteId() { - return avatarPromoteId; - } + private int avatarPromoteId; + private int promoteLevel; + private int scoinCost; + private ItemParamData[] costItems; + private int unlockMaxLevel; + private FightPropData[] addProps; + private int requiredPlayerLevel; - public int getPromoteLevel() { - return promoteLevel; - } + @Override + public int getId() { + return (avatarPromoteId << 8) + promoteLevel; + } - public ItemParamData[] getCostItems() { - return costItems; - } + public int getAvatarPromoteId() { + return avatarPromoteId; + } - public int getCoinCost() { - return scoinCost; - } + public int getPromoteLevel() { + return promoteLevel; + } - public FightPropData[] getAddProps() { - return addProps; - } + public ItemParamData[] getCostItems() { + return costItems; + } - public int getUnlockMaxLevel() { - return unlockMaxLevel; - } + public int getCoinCost() { + return scoinCost; + } - public int getRequiredPlayerLevel() { - return requiredPlayerLevel; - } + public FightPropData[] getAddProps() { + return addProps; + } - @Override - public void onLoad() { - // Trim item params - ArrayList trim = new ArrayList<>(getAddProps().length); - for (ItemParamData itemParam : getCostItems()) { - if (itemParam.getId() == 0) { - continue; - } - trim.add(itemParam); - } - this.costItems = trim.toArray(new ItemParamData[trim.size()]); - // Trim fight prop data (just in case) - ArrayList parsed = new ArrayList<>(getAddProps().length); - for (FightPropData prop : getAddProps()) { - if (prop.getPropType() != null && prop.getValue() != 0f) { - prop.onLoad(); - parsed.add(prop); - } - } - this.addProps = parsed.toArray(new FightPropData[parsed.size()]); - } + public int getUnlockMaxLevel() { + return unlockMaxLevel; + } + + public int getRequiredPlayerLevel() { + return requiredPlayerLevel; + } + + @Override + public void onLoad() { + // Trim item params + ArrayList trim = new ArrayList<>(getAddProps().length); + for (ItemParamData itemParam : getCostItems()) { + if (itemParam.getId() == 0) { + continue; + } + trim.add(itemParam); + } + this.costItems = trim.toArray(new ItemParamData[trim.size()]); + // Trim fight prop data (just in case) + ArrayList parsed = new ArrayList<>(getAddProps().length); + for (FightPropData prop : getAddProps()) { + if (prop.getPropType() != null && prop.getValue() != 0f) { + prop.onLoad(); + parsed.add(prop); + } + } + this.addProps = parsed.toArray(new FightPropData[parsed.size()]); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java b/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java index 7187e8a13..dea6a312d 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java @@ -1,9 +1,5 @@ package emu.grasscutter.data.excels; -import java.util.List; -import java.util.Optional; -import java.util.stream.IntStream; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameDepot; import emu.grasscutter.data.GameResource; @@ -17,6 +13,10 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import lombok.Getter; +import java.util.List; +import java.util.Optional; +import java.util.stream.IntStream; + @ResourceType(name = "AvatarSkillDepotExcelConfigData.json", loadPriority = LoadPriority.HIGH) @Getter public class AvatarSkillDepotData extends GameResource { @@ -73,14 +73,14 @@ public class AvatarSkillDepotData extends GameResource { .ifPresent(itemId -> this.talentCostItemId = itemId); } + public IntStream getSkillsAndEnergySkill() { + return IntStream.concat(this.skills.stream().mapToInt(i -> i), IntStream.of(this.energySkill)) + .filter(skillId -> skillId > 0); + } + @Getter public static class InherentProudSkillOpens { private int proudSkillGroupId; private int needAvatarPromoteLevel; } - - public IntStream getSkillsAndEnergySkill() { - return IntStream.concat(this.skills.stream().mapToInt(i -> i), IntStream.of(this.energySkill)) - .filter(skillId -> skillId > 0); - } } diff --git a/src/main/java/emu/grasscutter/data/excels/AvatarTalentData.java b/src/main/java/emu/grasscutter/data/excels/AvatarTalentData.java index f02d2e50a..9deb8ee23 100644 --- a/src/main/java/emu/grasscutter/data/excels/AvatarTalentData.java +++ b/src/main/java/emu/grasscutter/data/excels/AvatarTalentData.java @@ -1,15 +1,16 @@ package emu.grasscutter.data.excels; -import java.util.ArrayList; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.ResourceType.LoadPriority; import emu.grasscutter.data.common.FightPropData; +import java.util.ArrayList; + @ResourceType(name = "AvatarTalentExcelConfigData.json", loadPriority = LoadPriority.HIGHEST) public class AvatarTalentData extends GameResource { - private int talentId; - private int prevTalent; + private int talentId; + private int prevTalent; private long nameTextMapHash; private String icon; private int mainCostItemId; @@ -19,51 +20,51 @@ public class AvatarTalentData extends GameResource { private float[] paramList; @Override - public int getId(){ + public int getId() { return this.talentId; } - + public int PrevTalent() { - return prevTalent; - } - - public long getNameTextMapHash() { - return nameTextMapHash; - } + return prevTalent; + } - public String getIcon() { - return icon; - } + public long getNameTextMapHash() { + return nameTextMapHash; + } - public int getMainCostItemId() { - return mainCostItemId; - } + public String getIcon() { + return icon; + } - public int getMainCostItemCount() { - return mainCostItemCount; - } + public int getMainCostItemId() { + return mainCostItemId; + } - public String getOpenConfig() { - return openConfig; - } + public int getMainCostItemCount() { + return mainCostItemCount; + } - public FightPropData[] getAddProps() { - return addProps; - } + public String getOpenConfig() { + return openConfig; + } - public float[] getParamList() { - return paramList; - } + public FightPropData[] getAddProps() { + return addProps; + } - @Override - public void onLoad() { - ArrayList parsed = new ArrayList(getAddProps().length); - for (FightPropData prop : getAddProps()) { - if (prop.getPropType() != null || prop.getValue() == 0f) { - prop.onLoad(); - parsed.add(prop); - } - } - this.addProps = parsed.toArray(new FightPropData[parsed.size()]); - } + public float[] getParamList() { + return paramList; + } + + @Override + public void onLoad() { + ArrayList parsed = new ArrayList(getAddProps().length); + for (FightPropData prop : getAddProps()) { + if (prop.getPropType() != null || prop.getValue() == 0f) { + prop.onLoad(); + parsed.add(prop); + } + } + this.addProps = parsed.toArray(new FightPropData[parsed.size()]); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java b/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java index 61f22446e..c1bb1a295 100644 --- a/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java +++ b/src/main/java/emu/grasscutter/data/excels/BattlePassMissionData.java @@ -1,9 +1,5 @@ package emu.grasscutter.data.excels; -import java.util.Arrays; -import java.util.Set; -import java.util.stream.Collectors; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.game.props.BattlePassMissionRefreshType; @@ -11,6 +7,10 @@ import emu.grasscutter.game.props.WatcherTriggerType; import emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.MissionStatus; import lombok.Getter; +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + @ResourceType(name = {"BattlePassMissionExcelConfigData.json"}) @Getter public class BattlePassMissionData extends GameResource { @@ -48,12 +48,6 @@ public class BattlePassMissionData extends GameResource { } } - @Getter - public static class TriggerConfig { - private WatcherTriggerType triggerType; - private String[] paramList; - } - public emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission toProto() { var protoBuilder = emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.newBuilder(); @@ -66,4 +60,10 @@ public class BattlePassMissionData extends GameResource { return protoBuilder.build(); } + + @Getter + public static class TriggerConfig { + private WatcherTriggerType triggerType; + private String[] paramList; + } } diff --git a/src/main/java/emu/grasscutter/data/excels/BattlePassRewardData.java b/src/main/java/emu/grasscutter/data/excels/BattlePassRewardData.java index e9d5608b3..f16617513 100644 --- a/src/main/java/emu/grasscutter/data/excels/BattlePassRewardData.java +++ b/src/main/java/emu/grasscutter/data/excels/BattlePassRewardData.java @@ -3,7 +3,6 @@ package emu.grasscutter.data.excels; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import lombok.Getter; -import lombok.Setter; import java.util.List; diff --git a/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java b/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java index 78aed4603..e8496db24 100644 --- a/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java +++ b/src/main/java/emu/grasscutter/data/excels/BlossomRefreshExcelConfigData.java @@ -1,11 +1,11 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import lombok.Getter; +import java.util.List; + @ResourceType(name = "BlossomRefreshExcelConfigData.json") @Getter public class BlossomRefreshExcelConfigData extends GameResource { diff --git a/src/main/java/emu/grasscutter/data/excels/ChapterData.java b/src/main/java/emu/grasscutter/data/excels/ChapterData.java index 0d5e27dfc..da926d0c8 100644 --- a/src/main/java/emu/grasscutter/data/excels/ChapterData.java +++ b/src/main/java/emu/grasscutter/data/excels/ChapterData.java @@ -15,16 +15,15 @@ import java.util.Map; @Setter // TODO: remove on next API break @FieldDefaults(level = AccessLevel.PRIVATE) public class ChapterData extends GameResource { + // Why public? TODO: privatise next API break + public static final Map beginQuestChapterMap = new HashMap<>(); + public static final Map endQuestChapterMap = new HashMap<>(); @Getter(onMethod_ = @Override) int id; int beginQuestId; int endQuestId; int needPlayerLevel; - // Why public? TODO: privatise next API break - public static final Map beginQuestChapterMap = new HashMap<>(); - public static final Map endQuestChapterMap = new HashMap<>(); - @Override public void onLoad() { beginQuestChapterMap.put(beginQuestId, this); diff --git a/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java b/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java index 400026f20..734a129da 100644 --- a/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java +++ b/src/main/java/emu/grasscutter/data/excels/CodexAnimalData.java @@ -1,7 +1,6 @@ package emu.grasscutter.data.excels; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import lombok.Getter; @@ -14,7 +13,7 @@ public class CodexAnimalData extends GameResource { private String type; private int describeId; private int sortOrder; - @SerializedName(value="countType", alternate={"OCCLHPBCDGL"}) + @SerializedName(value = "countType", alternate = {"OCCLHPBCDGL"}) private CountType countType; public enum CountType { diff --git a/src/main/java/emu/grasscutter/data/excels/CodexQuestData.java b/src/main/java/emu/grasscutter/data/excels/CodexQuestData.java index 09ccf0b6b..be9b25342 100644 --- a/src/main/java/emu/grasscutter/data/excels/CodexQuestData.java +++ b/src/main/java/emu/grasscutter/data/excels/CodexQuestData.java @@ -34,7 +34,7 @@ public class CodexQuestData extends GameResource { @Override public void onLoad() { - if(!this.getIsDisuse()) { + if (!this.getIsDisuse()) { GameData.getCodexQuestDataIdMap().put(this.getParentQuestId(), this); } } diff --git a/src/main/java/emu/grasscutter/data/excels/CodexReliquaryData.java b/src/main/java/emu/grasscutter/data/excels/CodexReliquaryData.java index 1455e61ec..c0f5340f8 100644 --- a/src/main/java/emu/grasscutter/data/excels/CodexReliquaryData.java +++ b/src/main/java/emu/grasscutter/data/excels/CodexReliquaryData.java @@ -9,15 +9,24 @@ import lombok.Getter; @ResourceType(name = {"ReliquaryCodexExcelConfigData.json"}) public class CodexReliquaryData extends GameResource { - @Getter private int Id; - @Getter private int suitId; - @Getter private int level; - @Getter private int cupId; - @Getter private int leatherId; - @Getter private int capId; - @Getter private int flowerId; - @Getter private int sandId; - @Getter private int sortOrder; + @Getter + private int Id; + @Getter + private int suitId; + @Getter + private int level; + @Getter + private int cupId; + @Getter + private int leatherId; + @Getter + private int capId; + @Getter + private int flowerId; + @Getter + private int sandId; + @Getter + private int sortOrder; private transient IntCollection ids; public boolean containsId(int id) { @@ -35,11 +44,11 @@ public class CodexReliquaryData extends GameResource { @Override public void onLoad() { // Normalize all itemIds to the 0-substat form - cupId = (cupId/10) * 10; - leatherId = (leatherId/10) * 10; - capId = (capId/10) * 10; - flowerId = (flowerId/10) * 10; - sandId = (sandId/10) * 10; + cupId = (cupId / 10) * 10; + leatherId = (leatherId / 10) * 10; + capId = (capId / 10) * 10; + flowerId = (flowerId / 10) * 10; + sandId = (sandId / 10) * 10; GameData.getCodexReliquaryArrayList().add(this); GameData.getCodexReliquaryDataIdMap().put(getSuitId(), this); diff --git a/src/main/java/emu/grasscutter/data/excels/CombineData.java b/src/main/java/emu/grasscutter/data/excels/CombineData.java index 38ac7f641..e14b902a7 100644 --- a/src/main/java/emu/grasscutter/data/excels/CombineData.java +++ b/src/main/java/emu/grasscutter/data/excels/CombineData.java @@ -54,7 +54,7 @@ public class CombineData extends GameResource { public int getSubCombineType() { return subCombineType; } - + public int getResultItemId() { return resultItemId; } @@ -80,4 +80,3 @@ public class CombineData extends GameResource { } } - diff --git a/src/main/java/emu/grasscutter/data/excels/CompoundData.java b/src/main/java/emu/grasscutter/data/excels/CompoundData.java index 491761168..c17aa1195 100644 --- a/src/main/java/emu/grasscutter/data/excels/CompoundData.java +++ b/src/main/java/emu/grasscutter/data/excels/CompoundData.java @@ -7,7 +7,7 @@ import lombok.Getter; import java.util.List; -@ResourceType(name = {"CompoundExcelConfigData.json"},loadPriority = ResourceType.LoadPriority.LOW) +@ResourceType(name = {"CompoundExcelConfigData.json"}, loadPriority = ResourceType.LoadPriority.LOW) @Getter public class CompoundData extends GameResource { @Getter(onMethod_ = @Override) diff --git a/src/main/java/emu/grasscutter/data/excels/CookBonusData.java b/src/main/java/emu/grasscutter/data/excels/CookBonusData.java index 9e9ef4e7c..c360760a1 100644 --- a/src/main/java/emu/grasscutter/data/excels/CookBonusData.java +++ b/src/main/java/emu/grasscutter/data/excels/CookBonusData.java @@ -1,11 +1,8 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.ResourceType.LoadPriority; -import emu.grasscutter.data.common.ItemParamData; @ResourceType(name = {"CookBonusExcelConfigData.json"}, loadPriority = LoadPriority.LOW) public class CookBonusData extends GameResource { @@ -15,9 +12,9 @@ public class CookBonusData extends GameResource { private int[] complexParamVec; @Override - public int getId() { - return this.avatarId; - } + public int getId() { + return this.avatarId; + } public int getAvatarId() { return avatarId; diff --git a/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java b/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java index 109135273..656d8ebca 100644 --- a/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java +++ b/src/main/java/emu/grasscutter/data/excels/CookRecipeData.java @@ -1,13 +1,13 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.ResourceType.LoadPriority; import emu.grasscutter.data.common.ItemParamData; import lombok.Getter; +import java.util.List; + @ResourceType(name = {"CookRecipeExcelConfigData.json"}, loadPriority = LoadPriority.LOW) @Getter public class CookRecipeData extends GameResource { diff --git a/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java b/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java index 15a96f6a3..62648f192 100644 --- a/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java +++ b/src/main/java/emu/grasscutter/data/excels/DailyDungeonData.java @@ -1,16 +1,17 @@ package emu.grasscutter.data.excels; -import java.util.Calendar; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; +import java.util.Calendar; + @ResourceType(name = "DailyDungeonConfigData.json") public class DailyDungeonData extends GameResource { + private static final int[] empty = new int[0]; + private final Int2ObjectMap map; @Getter(onMethod_ = @Override) private int id; private int[] monday; @@ -21,9 +22,6 @@ public class DailyDungeonData extends GameResource { private int[] saturday; private int[] sunday; - private static final int[] empty = new int[0]; - private final Int2ObjectMap map; - public DailyDungeonData() { this.map = new Int2ObjectOpenHashMap<>(); } diff --git a/src/main/java/emu/grasscutter/data/excels/DungeonData.java b/src/main/java/emu/grasscutter/data/excels/DungeonData.java index d1d9788a5..73d6eb100 100644 --- a/src/main/java/emu/grasscutter/data/excels/DungeonData.java +++ b/src/main/java/emu/grasscutter/data/excels/DungeonData.java @@ -9,17 +9,23 @@ import lombok.Getter; public class DungeonData extends GameResource { @Getter(onMethod_ = @Override) private int id; - @Getter private int sceneId; - @Getter private int showLevel; + @Getter + private int sceneId; + @Getter + private int showLevel; private int passRewardPreviewID; private String involveType; // TODO enum private RewardPreviewData previewData; - @Getter private int statueCostID; - @Getter private int statueCostCount; + @Getter + private int statueCostID; + @Getter + private int statueCostCount; - public RewardPreviewData getRewardPreview() {return previewData;} + public RewardPreviewData getRewardPreview() { + return previewData; + } @Override public void onLoad() { diff --git a/src/main/java/emu/grasscutter/data/excels/EnvAnimalGatherConfigData.java b/src/main/java/emu/grasscutter/data/excels/EnvAnimalGatherConfigData.java index d2e5313d3..2aeb65ae1 100644 --- a/src/main/java/emu/grasscutter/data/excels/EnvAnimalGatherConfigData.java +++ b/src/main/java/emu/grasscutter/data/excels/EnvAnimalGatherConfigData.java @@ -1,11 +1,11 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.ItemParamData; +import java.util.List; + @ResourceType(name = "EnvAnimalGatherExcelConfigData.json", loadPriority = ResourceType.LoadPriority.LOW) public class EnvAnimalGatherConfigData extends GameResource { private int animalId; diff --git a/src/main/java/emu/grasscutter/data/excels/EquipAffixData.java b/src/main/java/emu/grasscutter/data/excels/EquipAffixData.java index 5bb147b8a..bf0c3d537 100644 --- a/src/main/java/emu/grasscutter/data/excels/EquipAffixData.java +++ b/src/main/java/emu/grasscutter/data/excels/EquipAffixData.java @@ -1,10 +1,11 @@ package emu.grasscutter.data.excels; -import java.util.ArrayList; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.FightPropData; +import java.util.ArrayList; + @ResourceType(name = "EquipAffixExcelConfigData.json") public class EquipAffixData extends GameResource { diff --git a/src/main/java/emu/grasscutter/data/excels/FetterCharacterCardData.java b/src/main/java/emu/grasscutter/data/excels/FetterCharacterCardData.java index 771bd9cb2..d4ef81fd9 100644 --- a/src/main/java/emu/grasscutter/data/excels/FetterCharacterCardData.java +++ b/src/main/java/emu/grasscutter/data/excels/FetterCharacterCardData.java @@ -10,9 +10,9 @@ public class FetterCharacterCardData extends GameResource { private int rewardId; @Override - public int getId() { - return avatarId; - } + public int getId() { + return avatarId; + } public int getRewardId() { return rewardId; diff --git a/src/main/java/emu/grasscutter/data/excels/FetterData.java b/src/main/java/emu/grasscutter/data/excels/FetterData.java index 101f31915..a32a90c4c 100644 --- a/src/main/java/emu/grasscutter/data/excels/FetterData.java +++ b/src/main/java/emu/grasscutter/data/excels/FetterData.java @@ -1,12 +1,12 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.ResourceType.LoadPriority; import emu.grasscutter.data.common.OpenCondData; +import java.util.List; + @ResourceType(name = {"FetterInfoExcelConfigData.json", "FettersExcelConfigData.json", "FetterStoryExcelConfigData.json", "PhotographExpressionExcelConfigData.json", "PhotographPosenameExcelConfigData.json"}, loadPriority = LoadPriority.HIGHEST) public class FetterData extends GameResource { private int avatarId; @@ -14,9 +14,9 @@ public class FetterData extends GameResource { private List openCond; @Override - public int getId() { - return fetterId; - } + public int getId() { + return fetterId; + } public int getAvatarId() { return avatarId; diff --git a/src/main/java/emu/grasscutter/data/excels/ForgeData.java b/src/main/java/emu/grasscutter/data/excels/ForgeData.java index 8a91d20ed..fe7c1e1e6 100644 --- a/src/main/java/emu/grasscutter/data/excels/ForgeData.java +++ b/src/main/java/emu/grasscutter/data/excels/ForgeData.java @@ -1,13 +1,13 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.ResourceType.LoadPriority; import emu.grasscutter.data.common.ItemParamData; import lombok.Getter; +import java.util.List; + @ResourceType(name = {"ForgeExcelConfigData.json"}, loadPriority = LoadPriority.HIGHEST) @Getter public class ForgeData extends GameResource { diff --git a/src/main/java/emu/grasscutter/data/excels/FurnitureMakeConfigData.java b/src/main/java/emu/grasscutter/data/excels/FurnitureMakeConfigData.java index 96deb6b23..91ff6a221 100644 --- a/src/main/java/emu/grasscutter/data/excels/FurnitureMakeConfigData.java +++ b/src/main/java/emu/grasscutter/data/excels/FurnitureMakeConfigData.java @@ -31,7 +31,7 @@ public class FurnitureMakeConfigData extends GameResource { @Override public void onLoad() { this.materialItems = materialItems.stream() - .filter(x -> x.getId() > 0) - .toList(); + .filter(x -> x.getId() > 0) + .toList(); } } diff --git a/src/main/java/emu/grasscutter/data/excels/GatherData.java b/src/main/java/emu/grasscutter/data/excels/GatherData.java index 3aea7561b..d7fb33818 100644 --- a/src/main/java/emu/grasscutter/data/excels/GatherData.java +++ b/src/main/java/emu/grasscutter/data/excels/GatherData.java @@ -5,45 +5,45 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "GatherExcelConfigData.json") public class GatherData extends GameResource { - private int pointType; - private int id; - private int gadgetId; - private int itemId; - private int cd; // Probably hours - private boolean isForbidGuest; - private boolean initDisableInteract; - - @Override - public int getId() { - return this.pointType; - } + private int pointType; + private int id; + private int gadgetId; + private int itemId; + private int cd; // Probably hours + private boolean isForbidGuest; + private boolean initDisableInteract; - public int getGatherId() { - return id; - } + @Override + public int getId() { + return this.pointType; + } - public int getGadgetId() { - return gadgetId; - } + public int getGatherId() { + return id; + } - public int getItemId() { - return itemId; - } + public int getGadgetId() { + return gadgetId; + } - public int getCd() { - return cd; - } + public int getItemId() { + return itemId; + } - public boolean isForbidGuest() { - return isForbidGuest; - } + public int getCd() { + return cd; + } - public boolean initDisableInteract() { - return initDisableInteract; - } + public boolean isForbidGuest() { + return isForbidGuest; + } - @Override - public void onLoad() { + public boolean initDisableInteract() { + return initDisableInteract; + } - } + @Override + public void onLoad() { + + } } diff --git a/src/main/java/emu/grasscutter/data/excels/ItemData.java b/src/main/java/emu/grasscutter/data/excels/ItemData.java index 654bf1891..88fa85e3f 100644 --- a/src/main/java/emu/grasscutter/data/excels/ItemData.java +++ b/src/main/java/emu/grasscutter/data/excels/ItemData.java @@ -1,33 +1,35 @@ package emu.grasscutter.data.excels; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; - import com.google.gson.annotations.SerializedName; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.ItemUseData; -import emu.grasscutter.game.inventory.*; +import emu.grasscutter.game.inventory.EquipType; +import emu.grasscutter.game.inventory.ItemType; +import emu.grasscutter.game.inventory.MaterialType; import emu.grasscutter.game.props.FightProperty; +import emu.grasscutter.game.props.ItemUseAction.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; import emu.grasscutter.game.props.ItemUseTarget; -import emu.grasscutter.game.props.ItemUseAction.ItemUseAction; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; import lombok.Getter; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + @ResourceType(name = {"MaterialExcelConfigData.json", - "WeaponExcelConfigData.json", - "ReliquaryExcelConfigData.json", - "HomeWorldFurnitureExcelConfigData.json" + "WeaponExcelConfigData.json", + "ReliquaryExcelConfigData.json", + "HomeWorldFurnitureExcelConfigData.json" }) @Getter public class ItemData extends GameResource { // Main @Getter(onMethod_ = @Override) private int id; - private int stackLimit = 1; + private final int stackLimit = 1; private int maxUseCount; private int rankLevel; private String effectName; @@ -39,7 +41,7 @@ public class ItemData extends GameResource { private int[] destroyReturnMaterialCount; // Enums - private ItemType itemType = ItemType.ITEM_NONE; + private final ItemType itemType = ItemType.ITEM_NONE; private MaterialType materialType = MaterialType.MATERIAL_NONE; private EquipType equipType = EquipType.EQUIP_NONE; private String effectType; @@ -50,10 +52,10 @@ public class ItemData extends GameResource { private int[] satiationParams; // Usable item - private ItemUseTarget useTarget = ItemUseTarget.ITEM_USE_TARGET_NONE; + private final ItemUseTarget useTarget = ItemUseTarget.ITEM_USE_TARGET_NONE; private List itemUse; private List itemUseActions; - private boolean useOnGain = false; + private final boolean useOnGain = false; // Relic private int mainPropDepotId; @@ -82,7 +84,7 @@ public class ItemData extends GameResource { private List furnType; private List furnitureGadgetID; - @SerializedName(value="roomSceneId", alternate={"BMEPAMCNABE", "DANFGGLKLNO", "JFDLJGDFIGL", "OHIANNAEEAK", "MFGACDIOHGF"}) + @SerializedName(value = "roomSceneId", alternate = {"BMEPAMCNABE", "DANFGGLKLNO", "JFDLJGDFIGL", "OHIANNAEEAK", "MFGACDIOHGF"}) private int roomSceneId; // Custom @@ -128,10 +130,10 @@ public class ItemData extends GameResource { if (this.itemUse != null && !this.itemUse.isEmpty()) { this.itemUseActions = this.itemUse.stream() - .filter(x -> x.getUseOp() != ItemUseOp.ITEM_USE_NONE) - .map(ItemUseAction::fromItemUseData) - .filter(Objects::nonNull) - .toList(); + .filter(x -> x.getUseOp() != ItemUseOp.ITEM_USE_NONE) + .map(ItemUseAction::fromItemUseData) + .filter(Objects::nonNull) + .toList(); } } diff --git a/src/main/java/emu/grasscutter/data/excels/MonsterCurveData.java b/src/main/java/emu/grasscutter/data/excels/MonsterCurveData.java index 29e7da2fb..54db27097 100644 --- a/src/main/java/emu/grasscutter/data/excels/MonsterCurveData.java +++ b/src/main/java/emu/grasscutter/data/excels/MonsterCurveData.java @@ -1,32 +1,32 @@ package emu.grasscutter.data.excels; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.CurveInfo; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + @ResourceType(name = "MonsterCurveExcelConfigData.json") public class MonsterCurveData extends GameResource { - private int level; + private int level; private CurveInfo[] curveInfos; - - private Map curveInfoMap; - - @Override - public int getId() { - return level; - } - - public float getMultByProp(String fightProp) { - return curveInfoMap.getOrDefault(fightProp, 1f); - } - @Override - public void onLoad() { - this.curveInfoMap = new HashMap<>(); - Stream.of(this.curveInfos).forEach(info -> this.curveInfoMap.put(info.getType(), info.getValue())); - } + private Map curveInfoMap; + + @Override + public int getId() { + return level; + } + + public float getMultByProp(String fightProp) { + return curveInfoMap.getOrDefault(fightProp, 1f); + } + + @Override + public void onLoad() { + this.curveInfoMap = new HashMap<>(); + Stream.of(this.curveInfos).forEach(info -> this.curveInfoMap.put(info.getType(), info.getValue())); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/MonsterData.java b/src/main/java/emu/grasscutter/data/excels/MonsterData.java index b77a1b963..4e2e13796 100644 --- a/src/main/java/emu/grasscutter/data/excels/MonsterData.java +++ b/src/main/java/emu/grasscutter/data/excels/MonsterData.java @@ -1,10 +1,6 @@ package emu.grasscutter.data.excels; -import java.util.List; -import java.util.Set; - import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; @@ -14,6 +10,9 @@ import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.game.props.MonsterType; import lombok.Getter; +import java.util.List; +import java.util.Set; + @ResourceType(name = "MonsterExcelConfigData.json", loadPriority = LoadPriority.LOW) @Getter public class MonsterData extends GameResource { diff --git a/src/main/java/emu/grasscutter/data/excels/OpenStateData.java b/src/main/java/emu/grasscutter/data/excels/OpenStateData.java index 00eae044e..7cc422edc 100644 --- a/src/main/java/emu/grasscutter/data/excels/OpenStateData.java +++ b/src/main/java/emu/grasscutter/data/excels/OpenStateData.java @@ -12,24 +12,14 @@ import java.util.List; public class OpenStateData extends GameResource { @Getter(onMethod_ = @Override) private int id; - @Getter private boolean defaultState; - @Getter private boolean allowClientOpen; - @Getter private int systemOpenUiId; - @Getter private List cond; - - public static class OpenStateCond { - @Getter private OpenStateCondType condType; - @Getter private int param; - @Getter private int param2; - } - - public static enum OpenStateCondType { - OPEN_STATE_COND_PLAYER_LEVEL, - OPEN_STATE_COND_QUEST, - OPEN_STATE_OFFERING_LEVEL, - OPEN_STATE_CITY_REPUTATION_LEVEL, - OPEN_STATE_COND_PARENT_QUEST; - } + @Getter + private boolean defaultState; + @Getter + private boolean allowClientOpen; + @Getter + private int systemOpenUiId; + @Getter + private List cond; @Override public void onLoad() { @@ -43,6 +33,23 @@ public class OpenStateData extends GameResource { this.cond = new ArrayList<>(); } } + + public enum OpenStateCondType { + OPEN_STATE_COND_PLAYER_LEVEL, + OPEN_STATE_COND_QUEST, + OPEN_STATE_OFFERING_LEVEL, + OPEN_STATE_CITY_REPUTATION_LEVEL, + OPEN_STATE_COND_PARENT_QUEST + } + + public static class OpenStateCond { + @Getter + private OpenStateCondType condType; + @Getter + private int param; + @Getter + private int param2; + } } /* Open state names for documentation: diff --git a/src/main/java/emu/grasscutter/data/excels/PlayerLevelData.java b/src/main/java/emu/grasscutter/data/excels/PlayerLevelData.java index 6a0d52e06..e5648189f 100644 --- a/src/main/java/emu/grasscutter/data/excels/PlayerLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/PlayerLevelData.java @@ -10,7 +10,7 @@ public class PlayerLevelData extends GameResource { private int level; private int exp; private int rewardId; - private int expeditionLimitAdd = 0; + private final int expeditionLimitAdd = 0; private int unlockWorldLevel; private long unlockDescTextMapHash; diff --git a/src/main/java/emu/grasscutter/data/excels/ProudSkillData.java b/src/main/java/emu/grasscutter/data/excels/ProudSkillData.java index 045c7eb2b..c2c08d38a 100644 --- a/src/main/java/emu/grasscutter/data/excels/ProudSkillData.java +++ b/src/main/java/emu/grasscutter/data/excels/ProudSkillData.java @@ -1,8 +1,5 @@ package emu.grasscutter.data.excels; -import java.util.ArrayList; -import java.util.List; - import dev.morphia.annotations.Transient; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; @@ -10,23 +7,40 @@ import emu.grasscutter.data.common.FightPropData; import emu.grasscutter.data.common.ItemParamData; import lombok.Getter; +import java.util.ArrayList; +import java.util.List; + @ResourceType(name = "ProudSkillExcelConfigData.json") public class ProudSkillData extends GameResource { private int proudSkillId; - @Getter private int proudSkillGroupId; - @Getter private int level; - @Getter private int coinCost; - @Getter private int breakLevel; - @Getter private int proudSkillType; - @Getter private String openConfig; - @Getter private List costItems; - @Getter private List filterConds; - @Getter private List lifeEffectParams; - @Getter private FightPropData[] addProps; - @Getter private float[] paramList; - @Getter private long[] paramDescList; - @Getter private long nameTextMapHash; - @Transient private Iterable totalCostItems; + @Getter + private int proudSkillGroupId; + @Getter + private int level; + @Getter + private int coinCost; + @Getter + private int breakLevel; + @Getter + private int proudSkillType; + @Getter + private String openConfig; + @Getter + private List costItems; + @Getter + private List filterConds; + @Getter + private List lifeEffectParams; + @Getter + private FightPropData[] addProps; + @Getter + private float[] paramList; + @Getter + private long[] paramDescList; + @Getter + private long nameTextMapHash; + @Transient + private Iterable totalCostItems; @Override public int getId() { diff --git a/src/main/java/emu/grasscutter/data/excels/QuestData.java b/src/main/java/emu/grasscutter/data/excels/QuestData.java index c9634b455..20a10b503 100644 --- a/src/main/java/emu/grasscutter/data/excels/QuestData.java +++ b/src/main/java/emu/grasscutter/data/excels/QuestData.java @@ -1,8 +1,5 @@ package emu.grasscutter.data.excels; -import java.util.Arrays; -import java.util.List; - import com.google.gson.annotations.SerializedName; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; @@ -14,6 +11,8 @@ import lombok.Getter; import lombok.ToString; import lombok.experimental.FieldDefaults; +import java.util.List; + @ResourceType(name = "QuestExcelConfigData.json") @Getter @ToString @@ -42,8 +41,11 @@ public class QuestData extends GameResource { public int getId() { return subId; } + //Added getSubId() for clarity - public int getSubId() {return subId;} + public int getSubId() { + return subId; + } public int getMainId() { return mainId; @@ -99,17 +101,6 @@ public class QuestData extends GameResource { this.failExec = failExec.stream().filter(p -> p.type != null).toList(); } - @Data - @FieldDefaults(level = AccessLevel.PRIVATE) - public class QuestExecParam { - @SerializedName("_type") - QuestTrigger type; - @SerializedName("_param") - String[] param; - @SerializedName("_count") - String count; - } - @Data public static class QuestCondition { @SerializedName("_type") @@ -129,4 +120,15 @@ public class QuestData extends GameResource { private List param; private int guideScene; } + + @Data + @FieldDefaults(level = AccessLevel.PRIVATE) + public class QuestExecParam { + @SerializedName("_type") + QuestTrigger type; + @SerializedName("_param") + String[] param; + @SerializedName("_count") + String count; + } } diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java index cfce45015..7d3ce800a 100644 --- a/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java +++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryAffixData.java @@ -1,7 +1,6 @@ package emu.grasscutter.data.excels; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.game.props.FightProperty; diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java index 118f35752..f5b6c90a8 100644 --- a/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java @@ -1,7 +1,5 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.game.props.FightProperty; @@ -9,15 +7,20 @@ import it.unimi.dsi.fastutil.ints.Int2FloatMap; import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; import lombok.Getter; +import java.util.List; + @ResourceType(name = "ReliquaryLevelExcelConfigData.json") public class ReliquaryLevelData extends GameResource { @Getter(onMethod_ = @Override) private int id; private Int2FloatMap propMap; - @Getter private int rank; - @Getter private int level; - @Getter private int exp; + @Getter + private int rank; + @Getter + private int level; + @Getter + private int exp; private List addProps; public float getPropValue(FightProperty prop) { diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java index 20b4be63e..cf8a1952a 100644 --- a/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java +++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryMainPropData.java @@ -1,7 +1,6 @@ package emu.grasscutter.data.excels; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.game.props.FightProperty; diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquarySetData.java b/src/main/java/emu/grasscutter/data/excels/ReliquarySetData.java index f96d122f8..55967d239 100644 --- a/src/main/java/emu/grasscutter/data/excels/ReliquarySetData.java +++ b/src/main/java/emu/grasscutter/data/excels/ReliquarySetData.java @@ -1,7 +1,6 @@ package emu.grasscutter.data.excels; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; @@ -10,7 +9,7 @@ public class ReliquarySetData extends GameResource { private int setId; private int[] setNeedNum; - @SerializedName(value="equipAffixId", alternate={"EquipAffixId"}) + @SerializedName(value = "equipAffixId", alternate = {"EquipAffixId"}) private int equipAffixId; @Override diff --git a/src/main/java/emu/grasscutter/data/excels/RewardData.java b/src/main/java/emu/grasscutter/data/excels/RewardData.java index 7df00b641..1b5f0083f 100644 --- a/src/main/java/emu/grasscutter/data/excels/RewardData.java +++ b/src/main/java/emu/grasscutter/data/excels/RewardData.java @@ -1,20 +1,20 @@ package emu.grasscutter.data.excels; -import java.util.List; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.ItemParamData; +import java.util.List; + @ResourceType(name = "RewardExcelConfigData.json") public class RewardData extends GameResource { public int rewardId; public List rewardItemList; @Override - public int getId() { - return rewardId; - } + public int getId() { + return rewardId; + } public List getRewardItemList() { return rewardItemList; @@ -22,6 +22,6 @@ public class RewardData extends GameResource { @Override public void onLoad() { - rewardItemList = rewardItemList.stream().filter(i -> i.getId() > 0).toList(); + rewardItemList = rewardItemList.stream().filter(i -> i.getId() > 0).toList(); } } diff --git a/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java b/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java index 50d2e0c0a..c0dc5d39f 100644 --- a/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java +++ b/src/main/java/emu/grasscutter/data/excels/RewardPreviewData.java @@ -1,14 +1,13 @@ package emu.grasscutter.data.excels; -import java.util.Arrays; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; - -import lombok.Getter; import emu.grasscutter.data.ResourceType.LoadPriority; import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.data.common.ItemParamStringData; +import lombok.Getter; + +import java.util.Arrays; @ResourceType(name = "RewardPreviewExcelConfigData.json", loadPriority = LoadPriority.HIGH) public class RewardPreviewData extends GameResource { @@ -25,9 +24,9 @@ public class RewardPreviewData extends GameResource { public void onLoad() { if (this.previewItems != null && this.previewItems.length > 0) { this.previewItemsArray = Arrays.stream(this.previewItems) - .filter(d -> d.getId() > 0 && d.getCount() != null && !d.getCount().isEmpty()) - .map(ItemParamStringData::toItemParamData) - .toArray(size -> new ItemParamData[size]); + .filter(d -> d.getId() > 0 && d.getCount() != null && !d.getCount().isEmpty()) + .map(ItemParamStringData::toItemParamData) + .toArray(size -> new ItemParamData[size]); } else { this.previewItemsArray = new ItemParamData[0]; } diff --git a/src/main/java/emu/grasscutter/data/excels/SceneData.java b/src/main/java/emu/grasscutter/data/excels/SceneData.java index d288e7de4..f198248d4 100644 --- a/src/main/java/emu/grasscutter/data/excels/SceneData.java +++ b/src/main/java/emu/grasscutter/data/excels/SceneData.java @@ -1,10 +1,8 @@ package emu.grasscutter.data.excels; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; - import emu.grasscutter.game.props.SceneType; import lombok.Getter; diff --git a/src/main/java/emu/grasscutter/data/excels/ShopGoodsData.java b/src/main/java/emu/grasscutter/data/excels/ShopGoodsData.java index 0bb171411..d2d035ef0 100644 --- a/src/main/java/emu/grasscutter/data/excels/ShopGoodsData.java +++ b/src/main/java/emu/grasscutter/data/excels/ShopGoodsData.java @@ -25,7 +25,7 @@ public class ShopGoodsData extends GameResource { private int maxPlayerLevel; private int buyLimit; - @SerializedName(value="subTabId", alternate={"secondarySheetId"}) + @SerializedName(value = "subTabId", alternate = {"secondarySheetId"}) private int subTabId; private String refreshType; @@ -35,16 +35,16 @@ public class ShopGoodsData extends GameResource { @Override public void onLoad() { - if (this.refreshType == null) - this.refreshTypeEnum = ShopInfo.ShopRefreshType.NONE; - else { - this.refreshTypeEnum = switch (this.refreshType) { - case "SHOP_REFRESH_DAILY" -> ShopInfo.ShopRefreshType.SHOP_REFRESH_DAILY; - case "SHOP_REFRESH_WEEKLY" -> ShopInfo.ShopRefreshType.SHOP_REFRESH_WEEKLY; - case "SHOP_REFRESH_MONTHLY" -> ShopInfo.ShopRefreshType.SHOP_REFRESH_MONTHLY; - default -> ShopInfo.ShopRefreshType.NONE; - }; - } + if (this.refreshType == null) + this.refreshTypeEnum = ShopInfo.ShopRefreshType.NONE; + else { + this.refreshTypeEnum = switch (this.refreshType) { + case "SHOP_REFRESH_DAILY" -> ShopInfo.ShopRefreshType.SHOP_REFRESH_DAILY; + case "SHOP_REFRESH_WEEKLY" -> ShopInfo.ShopRefreshType.SHOP_REFRESH_WEEKLY; + case "SHOP_REFRESH_MONTHLY" -> ShopInfo.ShopRefreshType.SHOP_REFRESH_MONTHLY; + default -> ShopInfo.ShopRefreshType.NONE; + }; + } } @Override diff --git a/src/main/java/emu/grasscutter/data/excels/TowerLevelData.java b/src/main/java/emu/grasscutter/data/excels/TowerLevelData.java index 5bfcc61fb..0f408eb58 100644 --- a/src/main/java/emu/grasscutter/data/excels/TowerLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/TowerLevelData.java @@ -5,7 +5,7 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "TowerLevelExcelConfigData.json") public class TowerLevelData extends GameResource { - + private int levelId; private int levelIndex; private int levelGroupId; diff --git a/src/main/java/emu/grasscutter/data/excels/TowerScheduleData.java b/src/main/java/emu/grasscutter/data/excels/TowerScheduleData.java index fc8a0cfc2..40300ac80 100644 --- a/src/main/java/emu/grasscutter/data/excels/TowerScheduleData.java +++ b/src/main/java/emu/grasscutter/data/excels/TowerScheduleData.java @@ -11,7 +11,7 @@ public class TowerScheduleData extends GameResource { private List entranceFloorId; private List schedules; private int monthlyLevelConfigId; - + @Override public int getId() { return scheduleId; @@ -21,8 +21,8 @@ public class TowerScheduleData extends GameResource { public void onLoad() { super.onLoad(); this.schedules = this.schedules.stream() - .filter(item -> item.getFloorList().size() > 0) - .toList(); + .filter(item -> item.getFloorList().size() > 0) + .toList(); } public int getScheduleId() { @@ -36,12 +36,12 @@ public class TowerScheduleData extends GameResource { public List getSchedules() { return schedules; } - + public int getMonthlyLevelConfigId() { return monthlyLevelConfigId; } - public static class ScheduleDetail{ + public static class ScheduleDetail { private List floorList; public List getFloorList() { diff --git a/src/main/java/emu/grasscutter/data/excels/TriggerExcelConfigData.java b/src/main/java/emu/grasscutter/data/excels/TriggerExcelConfigData.java index e284ab273..d0a21ef20 100644 --- a/src/main/java/emu/grasscutter/data/excels/TriggerExcelConfigData.java +++ b/src/main/java/emu/grasscutter/data/excels/TriggerExcelConfigData.java @@ -4,9 +4,11 @@ import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import lombok.Getter; -@ResourceType(name = "TriggerExcelConfigData.json") @Getter +@ResourceType(name = "TriggerExcelConfigData.json") +@Getter public class TriggerExcelConfigData extends GameResource { - @Getter private int id; + @Getter + private int id; private int sceneId; private int groupId; private String triggerName; diff --git a/src/main/java/emu/grasscutter/data/excels/WeaponCurveData.java b/src/main/java/emu/grasscutter/data/excels/WeaponCurveData.java index 05e64c8ed..2dd64c7f2 100644 --- a/src/main/java/emu/grasscutter/data/excels/WeaponCurveData.java +++ b/src/main/java/emu/grasscutter/data/excels/WeaponCurveData.java @@ -1,32 +1,32 @@ package emu.grasscutter.data.excels; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.CurveInfo; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + @ResourceType(name = "WeaponCurveExcelConfigData.json") public class WeaponCurveData extends GameResource { - private int level; + private int level; private CurveInfo[] curveInfos; - - private Map curveInfosMap; - - @Override - public int getId() { - return level; - } - - public float getMultByProp(String fightProp) { - return curveInfosMap.getOrDefault(fightProp, 1f); - } - @Override - public void onLoad() { - this.curveInfosMap = new HashMap<>(); - Stream.of(this.curveInfos).forEach(info -> this.curveInfosMap.put(info.getType(), info.getValue())); - } + private Map curveInfosMap; + + @Override + public int getId() { + return level; + } + + public float getMultByProp(String fightProp) { + return curveInfosMap.getOrDefault(fightProp, 1f); + } + + @Override + public void onLoad() { + this.curveInfosMap = new HashMap<>(); + Stream.of(this.curveInfos).forEach(info -> this.curveInfosMap.put(info.getType(), info.getValue())); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/WeaponLevelData.java b/src/main/java/emu/grasscutter/data/excels/WeaponLevelData.java index 3f69e2145..a0ac874a7 100644 --- a/src/main/java/emu/grasscutter/data/excels/WeaponLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/WeaponLevelData.java @@ -5,19 +5,19 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "WeaponLevelExcelConfigData.json") public class WeaponLevelData extends GameResource { - private int level; - private int[] requiredExps; - - @Override - public int getId() { - return this.level; - } - - public int getLevel() { - return level; - } - - public int[] getRequiredExps() { - return requiredExps; - } + private int level; + private int[] requiredExps; + + @Override + public int getId() { + return this.level; + } + + public int getLevel() { + return level; + } + + public int[] getRequiredExps() { + return requiredExps; + } } diff --git a/src/main/java/emu/grasscutter/data/excels/WeaponPromoteData.java b/src/main/java/emu/grasscutter/data/excels/WeaponPromoteData.java index ee0306115..3738875cd 100644 --- a/src/main/java/emu/grasscutter/data/excels/WeaponPromoteData.java +++ b/src/main/java/emu/grasscutter/data/excels/WeaponPromoteData.java @@ -1,74 +1,75 @@ package emu.grasscutter.data.excels; -import java.util.ArrayList; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.data.common.FightPropData; import emu.grasscutter.data.common.ItemParamData; +import java.util.ArrayList; + @ResourceType(name = "WeaponPromoteExcelConfigData.json") public class WeaponPromoteData extends GameResource { - - private int weaponPromoteId; + + private int weaponPromoteId; private int promoteLevel; private ItemParamData[] costItems; private int coinCost; private FightPropData[] addProps; private int unlockMaxLevel; private int requiredPlayerLevel; - - @Override - public int getId() { - return (weaponPromoteId << 8) + promoteLevel; - } - public int getWeaponPromoteId() { - return weaponPromoteId; - } + @Override + public int getId() { + return (weaponPromoteId << 8) + promoteLevel; + } - public int getPromoteLevel() { - return promoteLevel; - } + public int getWeaponPromoteId() { + return weaponPromoteId; + } - public ItemParamData[] getCostItems() { - return costItems; - } + public int getPromoteLevel() { + return promoteLevel; + } - public int getCoinCost() { - return coinCost; - } + public ItemParamData[] getCostItems() { + return costItems; + } - public FightPropData[] getAddProps() { - return addProps; - } + public int getCoinCost() { + return coinCost; + } - public int getUnlockMaxLevel() { - return unlockMaxLevel; - } + public FightPropData[] getAddProps() { + return addProps; + } - public int getRequiredPlayerLevel() { - return requiredPlayerLevel; - } + public int getUnlockMaxLevel() { + return unlockMaxLevel; + } - @Override - public void onLoad() { - // Trim item params - ArrayList trim = new ArrayList<>(getAddProps().length); - for (ItemParamData itemParam : getCostItems()) { - if (itemParam.getId() == 0) { - continue; - } - trim.add(itemParam); - } - this.costItems = trim.toArray(new ItemParamData[trim.size()]); - // Trim fight prop data - ArrayList parsed = new ArrayList<>(getAddProps().length); - for (FightPropData prop : getAddProps()) { - if (prop.getPropType() != null && prop.getValue() != 0f) { - prop.onLoad(); - parsed.add(prop); - } - } - this.addProps = parsed.toArray(new FightPropData[parsed.size()]); - } + public int getRequiredPlayerLevel() { + return requiredPlayerLevel; + } + + @Override + public void onLoad() { + // Trim item params + ArrayList trim = new ArrayList<>(getAddProps().length); + for (ItemParamData itemParam : getCostItems()) { + if (itemParam.getId() == 0) { + continue; + } + trim.add(itemParam); + } + this.costItems = trim.toArray(new ItemParamData[trim.size()]); + // Trim fight prop data + ArrayList parsed = new ArrayList<>(getAddProps().length); + for (FightPropData prop : getAddProps()) { + if (prop.getPropType() != null && prop.getValue() != 0f) { + prop.onLoad(); + parsed.add(prop); + } + } + this.addProps = parsed.toArray(new FightPropData[parsed.size()]); + } } diff --git a/src/main/java/emu/grasscutter/data/excels/WeatherData.java b/src/main/java/emu/grasscutter/data/excels/WeatherData.java index 91538851b..7664f78ae 100644 --- a/src/main/java/emu/grasscutter/data/excels/WeatherData.java +++ b/src/main/java/emu/grasscutter/data/excels/WeatherData.java @@ -7,18 +7,29 @@ import lombok.Getter; @ResourceType(name = "WeatherExcelConfigData.json") public class WeatherData extends GameResource { - @Getter private int areaID; - @Getter private int weatherAreaId; - @Getter private String maxHeightStr; - @Getter private int gadgetID; - @Getter private boolean isDefaultValid; - @Getter private String templateName; - @Getter private int priority; - @Getter private String profileName; - @Getter private ClimateType defaultClimate; - @Getter private boolean isUseDefault; - @Getter private int sceneID; - + @Getter + private int areaID; + @Getter + private int weatherAreaId; + @Getter + private String maxHeightStr; + @Getter + private int gadgetID; + @Getter + private boolean isDefaultValid; + @Getter + private String templateName; + @Getter + private int priority; + @Getter + private String profileName; + @Getter + private ClimateType defaultClimate; + @Getter + private boolean isUseDefault; + @Getter + private int sceneID; + @Override public int getId() { return this.areaID; diff --git a/src/main/java/emu/grasscutter/data/excels/WorldAreaData.java b/src/main/java/emu/grasscutter/data/excels/WorldAreaData.java index edd80e805..d7df67086 100644 --- a/src/main/java/emu/grasscutter/data/excels/WorldAreaData.java +++ b/src/main/java/emu/grasscutter/data/excels/WorldAreaData.java @@ -6,27 +6,27 @@ import emu.grasscutter.game.props.ElementType; @ResourceType(name = "WorldAreaConfigData.json") public class WorldAreaData extends GameResource { - private int ID; - private int AreaID1; - private int AreaID2; - private int SceneID; - private ElementType elementType; - - @Override - public int getId() { - return (this.AreaID2 << 16) + this.AreaID1; - } - - public int getSceneID() { - return this.SceneID; - } - - public ElementType getElementType() { - return this.elementType; - } + private int ID; + private int AreaID1; + private int AreaID2; + private int SceneID; + private ElementType elementType; - @Override - public void onLoad() { - - } + @Override + public int getId() { + return (this.AreaID2 << 16) + this.AreaID1; + } + + public int getSceneID() { + return this.SceneID; + } + + public ElementType getElementType() { + return this.elementType; + } + + @Override + public void onLoad() { + + } } diff --git a/src/main/java/emu/grasscutter/data/excels/WorldLevelData.java b/src/main/java/emu/grasscutter/data/excels/WorldLevelData.java index e31713b67..791ba37cb 100644 --- a/src/main/java/emu/grasscutter/data/excels/WorldLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/WorldLevelData.java @@ -5,20 +5,20 @@ import emu.grasscutter.data.ResourceType; @ResourceType(name = "WorldLevelExcelConfigData.json") public class WorldLevelData extends GameResource { - private int level; - private int monsterLevel; - - @Override - public int getId() { - return this.level; - } + private int level; + private int monsterLevel; - public int getMonsterLevel() { - return monsterLevel; - } + @Override + public int getId() { + return this.level; + } - @Override - public void onLoad() { - - } + public int getMonsterLevel() { + return monsterLevel; + } + + @Override + public void onLoad() { + + } } diff --git a/src/main/java/emu/grasscutter/database/DatabaseCounter.java b/src/main/java/emu/grasscutter/database/DatabaseCounter.java index a70fe518a..fa18ee165 100644 --- a/src/main/java/emu/grasscutter/database/DatabaseCounter.java +++ b/src/main/java/emu/grasscutter/database/DatabaseCounter.java @@ -5,19 +5,20 @@ import dev.morphia.annotations.Id; @Entity(value = "counters", useDiscriminator = false) public class DatabaseCounter { - @Id - private String id; - private int count; - - public DatabaseCounter() {} - - public DatabaseCounter(String id) { - this.id = id; - this.count = 10000; - } - - public int getNextId() { - int id = ++count; - return id; - } + @Id + private String id; + private int count; + + public DatabaseCounter() { + } + + public DatabaseCounter(String id) { + this.id = id; + this.count = 10000; + } + + public int getNextId() { + int id = ++count; + return id; + } } diff --git a/src/main/java/emu/grasscutter/database/DatabaseHelper.java b/src/main/java/emu/grasscutter/database/DatabaseHelper.java index 3bc532c1a..5debdd744 100644 --- a/src/main/java/emu/grasscutter/database/DatabaseHelper.java +++ b/src/main/java/emu/grasscutter/database/DatabaseHelper.java @@ -1,10 +1,6 @@ package emu.grasscutter.database; -import java.util.List; -import java.util.stream.Stream; - import com.mongodb.client.result.DeleteResult; - import dev.morphia.query.FindOptions; import dev.morphia.query.Sort; import dev.morphia.query.experimental.filters.Filters; @@ -24,6 +20,9 @@ import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.quest.GameMainQuest; +import java.util.List; +import java.util.stream.Stream; + import static com.mongodb.client.model.Filters.eq; public final class DatabaseHelper { @@ -258,8 +257,8 @@ public final class DatabaseHelper { public static Friendship getReverseFriendship(Friendship friendship) { return DatabaseManager.getGameDatastore().find(Friendship.class).filter(Filters.and( - Filters.eq("ownerId", friendship.getFriendId()), - Filters.eq("friendId", friendship.getOwnerId()) + Filters.eq("ownerId", friendship.getFriendId()), + Filters.eq("friendId", friendship.getOwnerId()) )).first(); } @@ -272,9 +271,9 @@ public final class DatabaseHelper { Filters.eq("ownerId", ownerId), Filters.eq("gachaType", gachaType) ).iterator(new FindOptions() - .sort(Sort.descending("transactionDate")) - .skip(pageSize * page) - .limit(pageSize) + .sort(Sort.descending("transactionDate")) + .skip(pageSize * page) + .limit(pageSize) ).toList(); } @@ -287,7 +286,7 @@ public final class DatabaseHelper { Filters.eq("ownerId", ownerId), Filters.eq("gachaType", gachaType) ).count(); - return count / 10 + (count % 10 > 0 ? 1 : 0 ); + return count / 10 + (count % 10 > 0 ? 1 : 0); } public static void saveGachaRecord(GachaRecord gachaRecord) { @@ -344,7 +343,7 @@ public final class DatabaseHelper { public static PlayerActivityData getPlayerActivityData(int uid, int activityId) { return DatabaseManager.getGameDatastore().find(PlayerActivityData.class) - .filter(Filters.and(Filters.eq("uid", uid),Filters.eq("activityId", activityId))) + .filter(Filters.and(Filters.eq("uid", uid), Filters.eq("activityId", activityId))) .first(); } diff --git a/src/main/java/emu/grasscutter/database/DatabaseManager.java b/src/main/java/emu/grasscutter/database/DatabaseManager.java index a674b5fa4..9ccbe00fc 100644 --- a/src/main/java/emu/grasscutter/database/DatabaseManager.java +++ b/src/main/java/emu/grasscutter/database/DatabaseManager.java @@ -1,26 +1,24 @@ package emu.grasscutter.database; -import static emu.grasscutter.config.Configuration.*; - import com.mongodb.MongoCommandException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoIterable; - import dev.morphia.Datastore; import dev.morphia.Morphia; import dev.morphia.annotations.Entity; import dev.morphia.mapping.Mapper; import dev.morphia.mapping.MapperOptions; import dev.morphia.query.experimental.filters.Filters; - import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter.ServerRunMode; import emu.grasscutter.game.Account; - import org.reflections.Reflections; +import static emu.grasscutter.config.Configuration.DATABASE; +import static emu.grasscutter.config.Configuration.SERVER; + public final class DatabaseManager { private static Datastore gameDatastore; private static Datastore dispatchDatastore; @@ -49,20 +47,20 @@ public final class DatabaseManager { // Set mapper options. MapperOptions mapperOptions = MapperOptions.builder() - .storeEmpties(true).storeNulls(false).build(); + .storeEmpties(true).storeNulls(false).build(); // Create data store. gameDatastore = Morphia.createDatastore(gameMongoClient, DATABASE.game.collection, mapperOptions); // Map classes. Class[] entities = new Reflections(Grasscutter.class.getPackageName()) - .getTypesAnnotatedWith(Entity.class) - .stream() - .filter(cls -> { - Entity e = cls.getAnnotation(Entity.class); - return e != null && !e.value().equals(Mapper.IGNORED_FIELDNAME); - }) - .toArray(Class[]::new); + .getTypesAnnotatedWith(Entity.class) + .stream() + .filter(cls -> { + Entity e = cls.getAnnotation(Entity.class); + return e != null && !e.value().equals(Mapper.IGNORED_FIELDNAME); + }) + .toArray(Class[]::new); gameDatastore.getMapper().map(entities); @@ -73,7 +71,7 @@ public final class DatabaseManager { MongoClient dispatchMongoClient = MongoClients.create(DATABASE.server.connectionUri); dispatchDatastore = Morphia.createDatastore(dispatchMongoClient, DATABASE.server.collection, mapperOptions); - dispatchDatastore.getMapper().map(new Class[] {DatabaseCounter.class, Account.class}); + dispatchDatastore.getMapper().map(new Class[]{DatabaseCounter.class, Account.class}); // Ensure indexes for dispatch datastore ensureIndexes(dispatchDatastore); @@ -82,6 +80,7 @@ public final class DatabaseManager { /** * Ensures the database indexes exist and rebuilds them if there is an error with them + * * @param datastore The datastore to ensure indexes on */ private static void ensureIndexes(Datastore datastore) { diff --git a/src/main/java/emu/grasscutter/game/Account.java b/src/main/java/emu/grasscutter/game/Account.java index 21633b4b7..25987452e 100644 --- a/src/main/java/emu/grasscutter/game/Account.java +++ b/src/main/java/emu/grasscutter/game/Account.java @@ -4,17 +4,18 @@ import dev.morphia.annotations.*; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.utils.Crypto; import emu.grasscutter.utils.Utils; - -import static emu.grasscutter.config.Configuration.*; +import org.bson.Document; import java.util.*; import java.util.stream.Stream; -import org.bson.Document; +import static emu.grasscutter.config.Configuration.ACCOUNT; +import static emu.grasscutter.config.Configuration.LANGUAGE; @Entity(value = "accounts", useDiscriminator = false) public class Account { - @Id private String id; + @Id + private String id; @Indexed(options = @IndexOptions(unique = true)) @Collation(locale = "simple", caseLevel = true) @@ -26,7 +27,7 @@ public class Account { private String token; private String sessionKey; // Session token for dispatch server - private List permissions; + private final List permissions; private Locale locale; private String banReason; @@ -40,6 +41,30 @@ public class Account { this.locale = LANGUAGE; } + public static boolean permissionMatchesWildcard(String wildcard, String[] permissionParts) { + String[] wildcardParts = wildcard.split("\\."); + if (permissionParts.length < wildcardParts.length) { // A longer wildcard can never match a shorter permission + return false; + } + for (int i = 0; i < wildcardParts.length; i++) { + switch (wildcardParts[i]) { + case "**": // Recursing match + return true; + case "*": // Match only one layer + if (i >= (permissionParts.length - 1)) { + return true; + } + break; + default: // This layer isn't a wildcard, it needs to match exactly + if (!wildcardParts[i].equals(permissionParts[i])) { + return false; + } + } + } + // At this point the wildcard will have matched every layer, but if it is shorter then the permission then this is not a match at this point (no **). + return (wildcardParts.length == permissionParts.length); + } + public String getId() { return id; } @@ -159,31 +184,8 @@ public class Account { public boolean addPermission(String permission) { if (this.permissions.contains(permission)) return false; - this.permissions.add(permission); return true; - } - - public static boolean permissionMatchesWildcard(String wildcard, String[] permissionParts) { - String[] wildcardParts = wildcard.split("\\."); - if (permissionParts.length < wildcardParts.length) { // A longer wildcard can never match a shorter permission - return false; - } - for (int i=0; i= (permissionParts.length-1)) { - return true; - } - break; - default: // This layer isn't a wildcard, it needs to match exactly - if (!wildcardParts[i].equals(permissionParts[i])) { - return false; - } - } - } - // At this point the wildcard will have matched every layer, but if it is shorter then the permission then this is not a match at this point (no **). - return (wildcardParts.length == permissionParts.length); + this.permissions.add(permission); + return true; } public boolean hasPermission(String permission) { @@ -192,8 +194,8 @@ public class Account { // Add default permissions if it doesn't exist List permissions = Stream.of(this.permissions, Arrays.asList(ACCOUNT.defaultPermissions)) - .flatMap(Collection::stream) - .distinct().toList(); + .flatMap(Collection::stream) + .distinct().toList(); if (permissions.contains(permission)) return true; diff --git a/src/main/java/emu/grasscutter/game/CoopRequest.java b/src/main/java/emu/grasscutter/game/CoopRequest.java index 80a004ca7..f1caf0f8b 100644 --- a/src/main/java/emu/grasscutter/game/CoopRequest.java +++ b/src/main/java/emu/grasscutter/game/CoopRequest.java @@ -3,29 +3,29 @@ package emu.grasscutter.game; import emu.grasscutter.game.player.Player; public class CoopRequest { - private final Player requester; - private final long requestTime; - private final long expireTime; - - public CoopRequest(Player requester) { - this.requester = requester; - this.requestTime = System.currentTimeMillis(); - this.expireTime = this.requestTime + 10000; - } + private final Player requester; + private final long requestTime; + private final long expireTime; - public Player getRequester() { - return requester; - } + public CoopRequest(Player requester) { + this.requester = requester; + this.requestTime = System.currentTimeMillis(); + this.expireTime = this.requestTime + 10000; + } - public long getRequestTime() { - return requestTime; - } + public Player getRequester() { + return requester; + } - public long getExpireTime() { - return expireTime; - } - - public boolean isExpired() { - return System.currentTimeMillis() > getExpireTime(); - } + public long getRequestTime() { + return requestTime; + } + + public long getExpireTime() { + return expireTime; + } + + public boolean isExpired() { + return System.currentTimeMillis() > getExpireTime(); + } } diff --git a/src/main/java/emu/grasscutter/game/ability/AbilityManager.java b/src/main/java/emu/grasscutter/game/ability/AbilityManager.java index 9a95b874a..2232bd8d8 100644 --- a/src/main/java/emu/grasscutter/game/ability/AbilityManager.java +++ b/src/main/java/emu/grasscutter/game/ability/AbilityManager.java @@ -1,10 +1,9 @@ package emu.grasscutter.game.ability; import com.google.protobuf.InvalidProtocolBufferException; - import emu.grasscutter.data.GameData; -import emu.grasscutter.data.binout.AbilityModifierEntry; import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction; +import emu.grasscutter.data.binout.AbilityModifierEntry; import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.entity.gadget.GadgetGatherObject; @@ -22,7 +21,8 @@ import lombok.Getter; public final class AbilityManager extends BasePlayerManager { HealAbilityManager healAbilityManager; - @Getter private boolean abilityInvulnerable = false; + @Getter + private boolean abilityInvulnerable = false; public AbilityManager(Player player) { super(player); @@ -32,21 +32,23 @@ public final class AbilityManager extends BasePlayerManager { public void onAbilityInvoke(AbilityInvokeEntry invoke) throws Exception { this.healAbilityManager.healHandler(invoke); - //Grasscutter.getLogger().info(invoke.getArgumentType() + " (" + invoke.getArgumentTypeValue() + "): " + Utils.bytesToHex(invoke.toByteArray())); + //Grasscutter.getLogger().info(invoke.getArgumentType() + " (" + invoke.getArgumentTypeValue() + "): " + Utils.bytesToHex(invoke.toByteArray())); switch (invoke.getArgumentType()) { case ABILITY_INVOKE_ARGUMENT_META_OVERRIDE_PARAM -> this.handleOverrideParam(invoke); case ABILITY_INVOKE_ARGUMENT_META_REINIT_OVERRIDEMAP -> this.handleReinitOverrideMap(invoke); case ABILITY_INVOKE_ARGUMENT_META_MODIFIER_CHANGE -> this.handleModifierChange(invoke); case ABILITY_INVOKE_ARGUMENT_MIXIN_COST_STAMINA -> this.handleMixinCostStamina(invoke); case ABILITY_INVOKE_ARGUMENT_ACTION_GENERATE_ELEM_BALL -> this.handleGenerateElemBall(invoke); - default -> {} + default -> { + } } } /** * Invoked when a player starts a skill. - * @param player The player who started the skill. - * @param skillId The skill ID. + * + * @param player The player who started the skill. + * @param skillId The skill ID. * @param casterId The caster ID. */ public void onSkillStart(Player player, int skillId, int casterId) { @@ -76,6 +78,7 @@ public final class AbilityManager extends BasePlayerManager { /** * Invoked when a player ends a skill. + * * @param player The player who started the skill. */ public void onSkillEnd(Player player) { @@ -195,7 +198,8 @@ public final class AbilityManager extends BasePlayerManager { private void invokeAction(AbilityModifierAction action, GameEntity target, GameEntity sourceEntity) { switch (action.type) { - case HealHP -> {} + case HealHP -> { + } case LoseHP -> { if (action.amountByTargetCurrentHPRatio == null) { return; @@ -211,8 +215,8 @@ public final class AbilityManager extends BasePlayerManager { target.damage(damageAmount); } } - default -> {} + default -> { + } } } } - diff --git a/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java b/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java index 5aa274ce3..de6b50b90 100644 --- a/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java +++ b/src/main/java/emu/grasscutter/game/ability/HealAbilityManager.java @@ -1,38 +1,135 @@ package emu.grasscutter.game.ability; -import java.util.*; -import java.util.Optional; -import java.util.Map.Entry; - -import com.google.protobuf.InvalidProtocolBufferException; - -import emu.grasscutter.Grasscutter; - -import emu.grasscutter.data.GameData; -import emu.grasscutter.data.binout.AbilityModifierEntry; -import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction; -import emu.grasscutter.data.excels.AvatarSkillDepotData; -import emu.grasscutter.data.excels.ItemData; -import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.entity.EntityAvatar; -import emu.grasscutter.game.entity.EntityClientGadget; -import emu.grasscutter.game.entity.EntityItem; import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.props.ElementType; -import emu.grasscutter.net.proto.AbilityActionGenerateElemBallOuterClass.AbilityActionGenerateElemBall; -import emu.grasscutter.net.proto.AbilityInvokeEntryHeadOuterClass.AbilityInvokeEntryHead; +import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; import emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange; -import emu.grasscutter.net.proto.AbilityMetaReInitOverrideMapOuterClass.AbilityMetaReInitOverrideMap; -import emu.grasscutter.net.proto.AbilityMixinCostStaminaOuterClass.AbilityMixinCostStamina; -import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalarValueEntry; -import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction; -import emu.grasscutter.utils.Position; -import emu.grasscutter.utils.Utils; -import emu.grasscutter.game.props.FightProperty; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; public class HealAbilityManager { + ArrayList healDataAvatarList; + private final Player player; + + public HealAbilityManager(Player player) { + this.player = player; + healDataAvatarList = new ArrayList(); + healDataAvatarList.add(new HealDataAvatar(10000054, "Kokomi", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Base_Percentage", "ElementalArt_Heal_Base_Amount", false).addHealData("Q", "Avatar_Kokomi_ElementalBurst_Heal", 0.0172f, 212f, false)); + healDataAvatarList.add(new HealDataAvatar(10000003, "Qin", 1).addHealData("Q", "Heal", "BurstHealConst", true)); + healDataAvatarList.add(new HealDataAvatar(10000034, "Noel", 2).addHealData("E", "OnAttack_HealthRate", 0.452f, 282f, true)); + healDataAvatarList.add(new HealDataAvatar(10000032, "Bennett", 0).addHealData("Q", "HealMaxHpRatio", "HealConst", false)); + healDataAvatarList.add(new HealDataAvatar(10000039, "Diona", 0).addHealData("Q", "HealHPRatio", "HealHP_Const", false)); + healDataAvatarList.add(new HealDataAvatar(10000053, "Sayu", 1).addHealData("Q", "Constellation_6_Damage", "Heal_BaseAmount", true).addHealData("Q", "Heal_AttackRatio", "Constellation_6_Heal", true)); + healDataAvatarList.add(new HealDataAvatar(10000014, "Barbara", 0).addHealData("E", "HealHPOnAdded", "HealHPOnAdded_Const", true).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("Q", "Avatar_Barbara_IdolHeal", 0.374f, 4660f, true)); + healDataAvatarList.add(new HealDataAvatar(10000065, "Shinobu", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Percentage", 0.064f, 795f, false)); + healDataAvatarList.add(new HealDataAvatar(10000035, "Qiqi", 1).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("E", "ElementalArt_HealHp_Ratio", "ElementalArt_HealHp_Const", true).addHealData("Q", "Avatar_Qiqi_ElementalBurst_ApplyModifier", 0.0191f, 1588f, false)); + healDataAvatarList.add(new HealDataAvatar(10000046, "Hutao", 0).addHealData("Q", "Avatar_Hutao_VermilionBite_BakeMesh", 0.1166f, 0f, false)); + } + + public Player getPlayer() { + return this.player; + } + + public void healHandler(AbilityInvokeEntry invoke) throws Exception { + AbilityMetaModifierChange data = AbilityMetaModifierChange.parseFrom(invoke.getAbilityData()); + + if (data == null) { + return; + } + + GameEntity sourceEntity = player.getScene().getEntityById(data.getApplyEntityId()); + + String modifierString = ""; + if (data.getParentAbilityName() != null) + modifierString = data.getParentAbilityName().getStr(); + + if (sourceEntity != null) + checkAndHeal(sourceEntity, modifierString); + } + + public void checkAndHeal(GameEntity sourceEntity, String modifierString) { + int fightPropertyType = 0; + float healAmount = 0; + float ratio = 0, base = 0; + float maxHP, curHP, curAttack, curDefense; + Map map = sourceEntity.getMetaOverrideMap(); + + for (int i = 0; i < healDataAvatarList.size(); i++) { + HealDataAvatar healDataAvatar = healDataAvatarList.get(i); + if (modifierString.contains(healDataAvatar.avatarName)) { + fightPropertyType = healDataAvatar.fightPropertyType; + ArrayList healDataList = healDataAvatar.healDataList; + + for (int j = 0; j < healDataList.size(); j++) { + HealData healData = healDataList.get(j); + if (map.containsKey(healData.sRatio) || modifierString.equals(healData.sRatio)) { + if (healData.isString) { + ratio = map.get(healData.sRatio); + base = map.get(healData.sBase); + } else { + ratio = healData.fRatio; + base = healData.fBase; + } + } + + List activeTeam = player.getTeamManager().getActiveTeam(); + List needHealAvatars = new ArrayList(); + int currentIndex = player.getTeamManager().getCurrentCharacterIndex(); + EntityAvatar currentAvatar = activeTeam.get(currentIndex); + if (healData.healAll) { + needHealAvatars = activeTeam; + } else { + needHealAvatars.add(currentAvatar); + } + + EntityAvatar healActionAvatar = null; + for (int k = 0; k < activeTeam.size(); k++) { + EntityAvatar avatar = activeTeam.get(k); + int avatarId = avatar.getAvatar().getAvatarId(); + if (avatarId == healDataAvatar.avatarId) { + healActionAvatar = avatar; + break; + } + } + + if (healActionAvatar != null) { + maxHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP); + curHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP); + curAttack = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK); + curDefense = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE); + + //Special case for Hu Tao: + if (healDataAvatar.avatarName.equals("Hutao") && curHP <= maxHP * 0.5 && ratio != 0) { + ratio = 0.1555f; + } + + switch (fightPropertyType) { + case 0: + healAmount = ratio * maxHP + base; + break; + case 1: + healAmount = ratio * curAttack + base; + break; + case 2: + healAmount = ratio * curDefense + base; + break; + } + } + + for (int k = 0; k < needHealAvatars.size(); k++) { + EntityAvatar avatar = needHealAvatars.get(k); + avatar.heal(healAmount); + } + } + break; + } + } + } + private class HealData { public boolean isString = true; public String abilityType = ""; //"E" or "Q" @@ -41,7 +138,7 @@ public class HealAbilityManager { public float fRatio = 0; public float fBase = 0; public boolean healAll = false; - + public HealData(String _abilityType, String _sRatio, String _sBase, boolean _healAll) { abilityType = _abilityType; isString = true; @@ -63,7 +160,7 @@ public class HealAbilityManager { private class HealDataAvatar { public int avatarId = 0; public String avatarName = ""; - public int fightPropertyType= 0; //0: maxHP, 1: curAttack, 2: curDefense + public int fightPropertyType = 0; //0: maxHP, 1: curAttack, 2: curDefense public ArrayList healDataList; public HealDataAvatar(int _avatarId, String _avatarName, int _fightPropertyType) { @@ -85,124 +182,4 @@ public class HealAbilityManager { return this; } } - - ArrayList healDataAvatarList; - private Player player; - - public HealAbilityManager (Player player) { - this.player = player; - healDataAvatarList = new ArrayList(); - healDataAvatarList.add(new HealDataAvatar(10000054, "Kokomi", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Base_Percentage", "ElementalArt_Heal_Base_Amount", false).addHealData("Q", "Avatar_Kokomi_ElementalBurst_Heal", 0.0172f, 212f, false)); - healDataAvatarList.add(new HealDataAvatar(10000003, "Qin", 1).addHealData("Q", "Heal", "BurstHealConst", true)); - healDataAvatarList.add(new HealDataAvatar(10000034, "Noel", 2).addHealData("E", "OnAttack_HealthRate", 0.452f, 282f, true)); - healDataAvatarList.add(new HealDataAvatar(10000032, "Bennett", 0).addHealData("Q", "HealMaxHpRatio", "HealConst", false)); - healDataAvatarList.add(new HealDataAvatar(10000039, "Diona", 0).addHealData("Q", "HealHPRatio", "HealHP_Const", false)); - healDataAvatarList.add(new HealDataAvatar(10000053, "Sayu", 1).addHealData("Q", "Constellation_6_Damage", "Heal_BaseAmount", true).addHealData("Q", "Heal_AttackRatio", "Constellation_6_Heal", true)); - healDataAvatarList.add(new HealDataAvatar(10000014, "Barbara", 0).addHealData("E", "HealHPOnAdded", "HealHPOnAdded_Const", true).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("Q", "Avatar_Barbara_IdolHeal", 0.374f, 4660f, true)); - healDataAvatarList.add(new HealDataAvatar(10000065, "Shinobu", 0).addHealData("E", "ElementalArt_Heal_MaxHP_Percentage", 0.064f, 795f, false)); - healDataAvatarList.add(new HealDataAvatar(10000035, "Qiqi", 1).addHealData("E", "HealHP_OnHittingOthers", "HealHP_Const_OnHittingOthers", true).addHealData("E", "ElementalArt_HealHp_Ratio", "ElementalArt_HealHp_Const", true).addHealData("Q", "Avatar_Qiqi_ElementalBurst_ApplyModifier", 0.0191f, 1588f, false)); - healDataAvatarList.add(new HealDataAvatar(10000046, "Hutao", 0).addHealData("Q", "Avatar_Hutao_VermilionBite_BakeMesh", 0.1166f, 0f, false)); - } - - public Player getPlayer() { - return this.player; - } - - public void healHandler(AbilityInvokeEntry invoke) throws Exception { - AbilityMetaModifierChange data = AbilityMetaModifierChange.parseFrom(invoke.getAbilityData()); - - if (data == null) { - return; - } - - GameEntity sourceEntity = player.getScene().getEntityById(data.getApplyEntityId()); - - String modifierString = ""; - if(data.getParentAbilityName() != null) - modifierString = data.getParentAbilityName().getStr(); - - if(sourceEntity != null) - checkAndHeal(sourceEntity, modifierString); - } - - public void checkAndHeal(GameEntity sourceEntity, String modifierString) { - int fightPropertyType = 0; - float healAmount = 0; - float ratio = 0, base = 0; - float maxHP, curHP, curAttack, curDefense; - Map map = sourceEntity.getMetaOverrideMap(); - - for(int i = 0 ; i < healDataAvatarList.size() ; i ++) { - HealDataAvatar healDataAvatar = healDataAvatarList.get(i); - if(modifierString.contains(healDataAvatar.avatarName)) { - fightPropertyType = healDataAvatar.fightPropertyType; - ArrayList healDataList = healDataAvatar.healDataList; - - for(int j = 0 ; j < healDataList.size(); j++) { - HealData healData = healDataList.get(j); - if(map.containsKey(healData.sRatio) || modifierString.equals(healData.sRatio)) { - if(healData.isString) { - ratio = map.get(healData.sRatio); - base = map.get(healData.sBase); - } - else { - ratio = healData.fRatio; - base = healData.fBase; - } - } - - List activeTeam = player.getTeamManager().getActiveTeam(); - List needHealAvatars = new ArrayList(); - int currentIndex = player.getTeamManager().getCurrentCharacterIndex(); - EntityAvatar currentAvatar = activeTeam.get(currentIndex); - if(healData.healAll) { - needHealAvatars = activeTeam; - } - else { - needHealAvatars.add(currentAvatar); - } - - EntityAvatar healActionAvatar = null; - for(int k = 0 ; k < activeTeam.size() ; k ++) { - EntityAvatar avatar = activeTeam.get(k); - int avatarId = avatar.getAvatar().getAvatarId(); - if(avatarId == healDataAvatar.avatarId) { - healActionAvatar = avatar; - break; - } - } - - if(healActionAvatar != null) { - maxHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP); - curHP = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP); - curAttack = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK); - curDefense = healActionAvatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE); - - //Special case for Hu Tao: - if(healDataAvatar.avatarName.equals("Hutao") && curHP <= maxHP * 0.5 && ratio != 0) { - ratio = 0.1555f; - } - - switch(fightPropertyType) { - case 0: - healAmount = ratio * maxHP + base; - break; - case 1: - healAmount = ratio * curAttack + base; - break; - case 2: - healAmount = ratio * curDefense + base; - break; - } - } - - for(int k = 0 ; k < needHealAvatars.size() ; k ++) { - EntityAvatar avatar = needHealAvatars.get(k); - avatar.heal(healAmount); - } - } - break; - } - } - } } diff --git a/src/main/java/emu/grasscutter/game/achievement/Achievement.java b/src/main/java/emu/grasscutter/game/achievement/Achievement.java index fe3479064..a0c872d1f 100644 --- a/src/main/java/emu/grasscutter/game/achievement/Achievement.java +++ b/src/main/java/emu/grasscutter/game/achievement/Achievement.java @@ -11,8 +11,8 @@ import lombok.Setter; public class Achievement { @Setter private StatusOuterClass.Status status; - private int id; - private int totalProgress; + private final int id; + private final int totalProgress; @Setter private int curProgress; @Setter diff --git a/src/main/java/emu/grasscutter/game/achievement/Achievements.java b/src/main/java/emu/grasscutter/game/achievement/Achievements.java index 317410193..49bf93a80 100644 --- a/src/main/java/emu/grasscutter/game/achievement/Achievements.java +++ b/src/main/java/emu/grasscutter/game/achievement/Achievements.java @@ -22,7 +22,10 @@ import lombok.Getter; import org.bson.types.ObjectId; import javax.annotation.Nullable; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.IntSupplier; diff --git a/src/main/java/emu/grasscutter/game/activity/ActivityHandler.java b/src/main/java/emu/grasscutter/game/activity/ActivityHandler.java index 5a8709cd6..a5993d065 100644 --- a/src/main/java/emu/grasscutter/game/activity/ActivityHandler.java +++ b/src/main/java/emu/grasscutter/game/activity/ActivityHandler.java @@ -27,18 +27,19 @@ public abstract class ActivityHandler { Map> watchersMap = new HashMap<>(); abstract public void onProtoBuild(PlayerActivityData playerActivityData, ActivityInfoOuterClass.ActivityInfo.Builder activityInfo); + abstract public void onInitPlayerActivityData(PlayerActivityData playerActivityData); - public void initWatchers(Map> activityWatcherTypeMap){ + public void initWatchers(Map> activityWatcherTypeMap) { activityData = GameData.getActivityDataMap().get(activityConfigItem.getActivityId()); // add watcher to map by id activityData.getWatcherDataList().forEach(watcherData -> { var watcherType = activityWatcherTypeMap.get(watcherData.getTriggerConfig().getWatcherTriggerType()); ActivityWatcher watcher; - if(watcherType != null){ + if (watcherType != null) { watcher = (ActivityWatcher) watcherType.newInstance(); - }else{ + } else { watcher = new DefaultWatcher(); } @@ -50,14 +51,14 @@ public abstract class ActivityHandler { }); } - private Map initWatchersDataForPlayer(){ + private Map initWatchersDataForPlayer() { return watchersMap.values().stream() .flatMap(Collection::stream) .map(PlayerActivityData.WatcherInfo::init) .collect(Collectors.toMap(PlayerActivityData.WatcherInfo::getWatcherId, y -> y)); } - public PlayerActivityData initPlayerActivityData(Player player){ + public PlayerActivityData initPlayerActivityData(Player player) { PlayerActivityData playerActivityData = PlayerActivityData.of() .activityId(activityConfigItem.getActivityId()) .uid(player.getUid()) @@ -68,7 +69,7 @@ public abstract class ActivityHandler { return playerActivityData; } - public ActivityInfoOuterClass.ActivityInfo toProto(PlayerActivityData playerActivityData){ + public ActivityInfoOuterClass.ActivityInfo toProto(PlayerActivityData playerActivityData) { var proto = ActivityInfoOuterClass.ActivityInfo.newBuilder(); proto.setActivityId(activityConfigItem.getActivityId()) .setActivityType(activityConfigItem.getActivityType()) @@ -78,7 +79,7 @@ public abstract class ActivityHandler { .setEndTime(DateHelper.getUnixTime(activityConfigItem.getEndTime())) .addAllMeetCondList(activityConfigItem.getMeetCondList()); - if (playerActivityData != null){ + if (playerActivityData != null) { proto.addAllWatcherInfoList(playerActivityData.getAllWatcherInfoList()); } diff --git a/src/main/java/emu/grasscutter/game/activity/ActivityManager.java b/src/main/java/emu/grasscutter/game/activity/ActivityManager.java index 0e680be22..8592dc60a 100644 --- a/src/main/java/emu/grasscutter/game/activity/ActivityManager.java +++ b/src/main/java/emu/grasscutter/game/activity/ActivityManager.java @@ -19,8 +19,8 @@ import java.util.concurrent.ConcurrentHashMap; @Getter public class ActivityManager extends BasePlayerManager { private static final Map activityConfigItemMap; - @Getter private static final Map scheduleActivityConfigMap; - private final Map playerActivityDataMap; + @Getter + private static final Map scheduleActivityConfigMap; static { activityConfigItemMap = new HashMap<>(); @@ -28,6 +28,27 @@ public class ActivityManager extends BasePlayerManager { loadActivityConfigData(); } + private final Map playerActivityDataMap; + + public ActivityManager(Player player) { + super(player); + + playerActivityDataMap = new ConcurrentHashMap<>(); + // load data for player + activityConfigItemMap.values().forEach(item -> { + var data = PlayerActivityData.getByPlayer(player, item.getActivityId()); + if (data == null) { + data = item.getActivityHandler().initPlayerActivityData(player); + data.save(); + } + data.setPlayer(player); + data.setActivityHandler(item.getActivityHandler()); + playerActivityDataMap.put(item.getActivityId(), data); + }); + + player.sendPacket(new PacketActivityScheduleInfoNotify(activityConfigItemMap.values())); + } + private static void loadActivityConfigData() { // scan activity type handler & watcher type var activityHandlerTypeMap = new HashMap>(); @@ -55,7 +76,7 @@ public class ActivityManager extends BasePlayerManager { if (activityHandlerType != null) { activityHandler = (ActivityHandler) activityHandlerType.newInstance(); - }else { + } else { activityHandler = new DefaultActivityHandler(); } activityHandler.setActivityConfigItem(item); @@ -73,25 +94,6 @@ public class ActivityManager extends BasePlayerManager { } - public ActivityManager(Player player) { - super(player); - - playerActivityDataMap = new ConcurrentHashMap<>(); - // load data for player - activityConfigItemMap.values().forEach(item -> { - var data = PlayerActivityData.getByPlayer(player, item.getActivityId()); - if (data == null) { - data = item.getActivityHandler().initPlayerActivityData(player); - data.save(); - } - data.setPlayer(player); - data.setActivityHandler(item.getActivityHandler()); - playerActivityDataMap.put(item.getActivityId(), data); - }); - - player.sendPacket(new PacketActivityScheduleInfoNotify(activityConfigItemMap.values())); - } - /** * trigger activity watcher */ @@ -124,8 +126,9 @@ public class ActivityManager extends BasePlayerManager { .findFirst(); } + @SuppressWarnings("unchecked") public Optional getActivityHandlerAs(ActivityType type, Class clazz) { - return getActivityHandler(type).map(x -> (T)x); + return getActivityHandler(type).map(x -> (T) x); } public Optional getActivityIdByActivityType(ActivityType type) { @@ -133,13 +136,15 @@ public class ActivityManager extends BasePlayerManager { .map(ActivityHandler::getActivityConfigItem) .map(ActivityConfigItem::getActivityId); } + public Optional getPlayerActivityDataByActivityType(ActivityType type) { return getActivityIdByActivityType(type) .map(playerActivityDataMap::get); } + public Optional getInfoProtoByActivityType(ActivityType type) { - return getActivityIdByActivityType(type) - .map(this::getInfoProtoByActivityId); + return getActivityIdByActivityType(type) + .map(this::getInfoProtoByActivityId); } } diff --git a/src/main/java/emu/grasscutter/game/activity/ActivityWatcher.java b/src/main/java/emu/grasscutter/game/activity/ActivityWatcher.java index eeb864207..105792724 100644 --- a/src/main/java/emu/grasscutter/game/activity/ActivityWatcher.java +++ b/src/main/java/emu/grasscutter/game/activity/ActivityWatcher.java @@ -16,8 +16,8 @@ public abstract class ActivityWatcher { protected abstract boolean isMeet(String... param); - public void trigger(PlayerActivityData playerActivityData, String... param){ - if(isMeet(param)){ + public void trigger(PlayerActivityData playerActivityData, String... param) { + if (isMeet(param)) { playerActivityData.addWatcherProgress(watcherId); playerActivityData.save(); } diff --git a/src/main/java/emu/grasscutter/game/activity/DefaultActivityHandler.java b/src/main/java/emu/grasscutter/game/activity/DefaultActivityHandler.java index 693878328..98956c6b4 100644 --- a/src/main/java/emu/grasscutter/game/activity/DefaultActivityHandler.java +++ b/src/main/java/emu/grasscutter/game/activity/DefaultActivityHandler.java @@ -4,7 +4,7 @@ import emu.grasscutter.game.props.ActivityType; import emu.grasscutter.net.proto.ActivityInfoOuterClass; @GameActivity(ActivityType.NONE) -public class DefaultActivityHandler extends ActivityHandler{ +public class DefaultActivityHandler extends ActivityHandler { @Override public void onProtoBuild(PlayerActivityData playerActivityData, ActivityInfoOuterClass.ActivityInfo.Builder activityInfo) { diff --git a/src/main/java/emu/grasscutter/game/activity/DefaultWatcher.java b/src/main/java/emu/grasscutter/game/activity/DefaultWatcher.java index bd4c93fe6..0a2e6142b 100644 --- a/src/main/java/emu/grasscutter/game/activity/DefaultWatcher.java +++ b/src/main/java/emu/grasscutter/game/activity/DefaultWatcher.java @@ -3,7 +3,7 @@ package emu.grasscutter.game.activity; import emu.grasscutter.game.props.WatcherTriggerType; @ActivityWatcherType(WatcherTriggerType.TRIGGER_NONE) -public class DefaultWatcher extends ActivityWatcher{ +public class DefaultWatcher extends ActivityWatcher { @Override protected boolean isMeet(String... param) { return false; diff --git a/src/main/java/emu/grasscutter/game/activity/PlayerActivityData.java b/src/main/java/emu/grasscutter/game/activity/PlayerActivityData.java index d63a88aaa..7770a04d0 100644 --- a/src/main/java/emu/grasscutter/game/activity/PlayerActivityData.java +++ b/src/main/java/emu/grasscutter/game/activity/PlayerActivityData.java @@ -37,16 +37,19 @@ public class PlayerActivityData { * the detail data of each type of activity (Json format) */ String detail; - @Transient Player player; - @Transient ActivityHandler activityHandler; - public void save() { - DatabaseHelper.savePlayerActivityData(this); - } + @Transient + Player player; + @Transient + ActivityHandler activityHandler; public static PlayerActivityData getByPlayer(Player player, int activityId) { return DatabaseHelper.getPlayerActivityData(player.getUid(), activityId); } + public void save() { + DatabaseHelper.savePlayerActivityData(this); + } + public synchronized void addWatcherProgress(int watcherId) { var watcherInfo = watcherInfoMap.get(watcherId); if (watcherInfo == null) { @@ -100,16 +103,12 @@ public class PlayerActivityData { @Data @FieldDefaults(level = AccessLevel.PRIVATE) @Builder(builderMethodName = "of") - public static class WatcherInfo{ + public static class WatcherInfo { int watcherId; int totalProgress; int curProgress; boolean isTakenReward; - public ActivityWatcherData getMetadata() { - return GameData.getActivityWatcherDataMap().get(watcherId); - } - public static WatcherInfo init(ActivityWatcher watcher) { return WatcherInfo.of() .watcherId(watcher.getWatcherId()) @@ -118,6 +117,10 @@ public class PlayerActivityData { .build(); } + public ActivityWatcherData getMetadata() { + return GameData.getActivityWatcherDataMap().get(watcherId); + } + public ActivityWatcherInfoOuterClass.ActivityWatcherInfo toProto() { return ActivityWatcherInfoOuterClass.ActivityWatcherInfo.newBuilder() .setWatcherId(watcherId) diff --git a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameActivityHandler.java b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameActivityHandler.java index 1e5ba476c..bbb670d08 100644 --- a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameActivityHandler.java +++ b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameActivityHandler.java @@ -5,7 +5,6 @@ import emu.grasscutter.game.activity.GameActivity; import emu.grasscutter.game.activity.PlayerActivityData; import emu.grasscutter.game.props.ActivityType; import emu.grasscutter.net.proto.ActivityInfoOuterClass; -import emu.grasscutter.net.proto.UgcMusicBriefInfoOuterClass; import emu.grasscutter.net.proto.MusicGameActivityDetailInfoOuterClass; import emu.grasscutter.utils.JsonUtils; @@ -62,6 +61,7 @@ public class MusicGameActivityHandler extends ActivityHandler { return newRecord.getMaxScore() > saveRecord.getMaxScore(); } + public void setMusicGameCustomBeatmapRecord(PlayerActivityData playerActivityData, MusicGamePlayerData.CustomBeatmapRecord newRecord) { var musicGamePlayerData = getMusicGamePlayerData(playerActivityData); musicGamePlayerData.getOthersCustomBeatmapRecord().put(newRecord.getMusicShareId(), newRecord); diff --git a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameBeatmap.java b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameBeatmap.java index b91f10c89..6f2f88335 100644 --- a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameBeatmap.java +++ b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameBeatmap.java @@ -3,10 +3,10 @@ package emu.grasscutter.game.activity.musicgame; import dev.morphia.annotations.Entity; import dev.morphia.annotations.Id; import emu.grasscutter.database.DatabaseHelper; -import emu.grasscutter.net.proto.UgcMusicRecordOuterClass; -import emu.grasscutter.net.proto.UgcMusicNoteOuterClass; -import emu.grasscutter.net.proto.UgcMusicTrackOuterClass; import emu.grasscutter.net.proto.UgcMusicBriefInfoOuterClass; +import emu.grasscutter.net.proto.UgcMusicNoteOuterClass; +import emu.grasscutter.net.proto.UgcMusicRecordOuterClass; +import emu.grasscutter.net.proto.UgcMusicTrackOuterClass; import lombok.AccessLevel; import lombok.Builder; import lombok.Data; @@ -32,17 +32,10 @@ public class MusicGameBeatmap { List> beatmap; - public static MusicGameBeatmap getByShareId(long musicShareId){ + public static MusicGameBeatmap getByShareId(long musicShareId) { return DatabaseHelper.getMusicGameBeatmap(musicShareId); } - public void save(){ - if(musicShareId == 0){ - musicShareId = new Random().nextLong(100000000000000L,999999999999999L); - } - DatabaseHelper.saveMusicGameBeatmap(this); - } - public static List> parse(List beatmapItemListList) { return beatmapItemListList.stream() .map(item -> item.getMusicNoteListList().stream() @@ -51,7 +44,14 @@ public class MusicGameBeatmap { .toList(); } - public UgcMusicRecordOuterClass.UgcMusicRecord toProto(){ + public void save() { + if (musicShareId == 0) { + musicShareId = new Random().nextLong(100000000000000L, 999999999999999L); + } + DatabaseHelper.saveMusicGameBeatmap(this); + } + + public UgcMusicRecordOuterClass.UgcMusicRecord toProto() { return UgcMusicRecordOuterClass.UgcMusicRecord.newBuilder() .setMusicId(musicId) .addAllMusicTrackList(beatmap.stream() @@ -60,7 +60,7 @@ public class MusicGameBeatmap { .build(); } - public UgcMusicBriefInfoOuterClass.UgcMusicBriefInfo.Builder toBriefProto(){ + public UgcMusicBriefInfoOuterClass.UgcMusicBriefInfo.Builder toBriefProto() { var player = DatabaseHelper.getPlayerByUid(authorUid); return UgcMusicBriefInfoOuterClass.UgcMusicBriefInfo.newBuilder() @@ -73,7 +73,7 @@ public class MusicGameBeatmap { .setVersion(1); } - private UgcMusicTrackOuterClass.UgcMusicTrack musicBeatmapListToProto(List beatmapNoteList){ + private UgcMusicTrackOuterClass.UgcMusicTrack musicBeatmapListToProto(List beatmapNoteList) { return UgcMusicTrackOuterClass.UgcMusicTrack.newBuilder() .addAllMusicNoteList(beatmapNoteList.stream() .map(BeatmapNote::toProto) @@ -85,18 +85,18 @@ public class MusicGameBeatmap { @FieldDefaults(level = AccessLevel.PRIVATE) @Builder(builderMethodName = "of") @Entity - public static class BeatmapNote{ + public static class BeatmapNote { int startTime; int endTime; - public static BeatmapNote parse(UgcMusicNoteOuterClass.UgcMusicNote note){ + public static BeatmapNote parse(UgcMusicNoteOuterClass.UgcMusicNote note) { return BeatmapNote.of() .startTime(note.getStartTime()) .endTime(note.getEndTime()) .build(); } - public UgcMusicNoteOuterClass.UgcMusicNote toProto(){ + public UgcMusicNoteOuterClass.UgcMusicNote toProto() { return UgcMusicNoteOuterClass.UgcMusicNote.newBuilder() .setStartTime(startTime) .setEndTime(endTime) diff --git a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGamePlayerData.java b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGamePlayerData.java index 97c2368ad..1d454b88e 100644 --- a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGamePlayerData.java +++ b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGamePlayerData.java @@ -2,8 +2,8 @@ package emu.grasscutter.game.activity.musicgame; import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.MusicGameBasicData; -import emu.grasscutter.net.proto.UgcMusicBriefInfoOuterClass; import emu.grasscutter.net.proto.MusicGameRecordOuterClass; +import emu.grasscutter.net.proto.UgcMusicBriefInfoOuterClass; import lombok.AccessLevel; import lombok.Builder; import lombok.Data; @@ -85,5 +85,3 @@ public class MusicGamePlayerData { } } - - diff --git a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameScoreTrigger.java b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameScoreTrigger.java index 34cfbe257..fcf4a4edf 100644 --- a/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameScoreTrigger.java +++ b/src/main/java/emu/grasscutter/game/activity/musicgame/MusicGameScoreTrigger.java @@ -8,11 +8,11 @@ import emu.grasscutter.game.props.WatcherTriggerType; public class MusicGameScoreTrigger extends ActivityWatcher { @Override protected boolean isMeet(String... param) { - if(param.length != 2){ + if (param.length != 2) { return false; } var paramList = getActivityWatcherData().getTriggerConfig().getParamList(); - if(!paramList.get(0).equals(param[0])){ + if (!paramList.get(0).equals(param[0])) { return false; } diff --git a/src/main/java/emu/grasscutter/game/avatar/Avatar.java b/src/main/java/emu/grasscutter/game/avatar/Avatar.java index 0d878e8ac..3db674b6c 100644 --- a/src/main/java/emu/grasscutter/game/avatar/Avatar.java +++ b/src/main/java/emu/grasscutter/game/avatar/Avatar.java @@ -1,41 +1,12 @@ package emu.grasscutter.game.avatar; -import static emu.grasscutter.config.Configuration.GAME_OPTIONS; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Stream; -import java.util.Set; - -import org.bson.types.ObjectId; - -import dev.morphia.annotations.Entity; -import dev.morphia.annotations.Id; -import dev.morphia.annotations.Indexed; -import dev.morphia.annotations.PostLoad; -import dev.morphia.annotations.PrePersist; -import dev.morphia.annotations.Transient; +import dev.morphia.annotations.*; import emu.grasscutter.GameConstants; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.OpenConfigEntry; import emu.grasscutter.data.binout.OpenConfigEntry.SkillPointModifier; import emu.grasscutter.data.common.FightPropData; -import emu.grasscutter.data.excels.AvatarData; -import emu.grasscutter.data.excels.AvatarPromoteData; -import emu.grasscutter.data.excels.AvatarSkillData; -import emu.grasscutter.data.excels.AvatarSkillDepotData; -import emu.grasscutter.data.excels.AvatarTalentData; -import emu.grasscutter.data.excels.EquipAffixData; -import emu.grasscutter.data.excels.ProudSkillData; -import emu.grasscutter.data.excels.ReliquaryAffixData; -import emu.grasscutter.data.excels.ReliquaryLevelData; -import emu.grasscutter.data.excels.ReliquaryMainPropData; -import emu.grasscutter.data.excels.ReliquarySetData; -import emu.grasscutter.data.excels.WeaponCurveData; -import emu.grasscutter.data.excels.WeaponPromoteData; +import emu.grasscutter.data.excels.*; import emu.grasscutter.data.excels.AvatarSkillDepotData.InherentProudSkillOpens; import emu.grasscutter.data.excels.ItemData.WeaponProperty; import emu.grasscutter.database.DatabaseHelper; @@ -44,11 +15,7 @@ import emu.grasscutter.game.inventory.EquipType; import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.inventory.ItemType; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.props.ElementType; -import emu.grasscutter.game.props.EntityIdType; -import emu.grasscutter.game.props.FetterState; -import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.game.props.PlayerProperty; +import emu.grasscutter.game.props.*; import emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo; import emu.grasscutter.net.proto.AvatarInfoOuterClass.AvatarInfo; import emu.grasscutter.net.proto.AvatarSkillInfoOuterClass.AvatarSkillInfo; @@ -58,60 +25,105 @@ import emu.grasscutter.net.proto.ShowAvatarInfoOuterClass.ShowAvatarInfo; import emu.grasscutter.net.proto.ShowEquipOuterClass.ShowEquip; import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.ProtoHelper; -import it.unimi.dsi.fastutil.ints.Int2FloatMap; -import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; -import it.unimi.dsi.fastutil.ints.Int2IntArrayMap; -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; +import it.unimi.dsi.fastutil.ints.*; import lombok.Getter; import lombok.Setter; import lombok.val; +import org.bson.types.ObjectId; + +import java.util.*; +import java.util.stream.Stream; + +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; @Entity(value = "avatars", useDiscriminator = false) public class Avatar { - @Id private ObjectId id; - @Indexed @Getter private int ownerId; // Id of player that this avatar belongs to - - @Transient private Player owner; - @Transient @Getter private AvatarData data; - @Transient @Getter private AvatarSkillDepotData skillDepot; - @Transient @Getter private long guid; // Player unique id - @Getter private int avatarId; // Id of avatar - - @Getter @Setter private int level = 1; - @Getter @Setter private int exp; - @Getter @Setter private int promoteLevel; - @Getter @Setter private int satiation; // Fullness - @Getter @Setter private int satiationPenalty; // When eating too much - @Getter @Setter private float currentHp; + @Transient + @Getter + private final Int2ObjectMap equips; + @Transient + @Getter + private final Int2FloatOpenHashMap fightProperties; + @Transient + @Getter + private final Int2FloatOpenHashMap fightPropOverrides; + @Id + private ObjectId id; + @Indexed + @Getter + private int ownerId; // Id of player that this avatar belongs to + @Transient + private Player owner; + @Transient + @Getter + private AvatarData data; + @Transient + @Getter + private AvatarSkillDepotData skillDepot; + @Transient + @Getter + private long guid; // Player unique id + @Getter + private int avatarId; // Id of avatar + @Getter + @Setter + private int level = 1; + @Getter + @Setter + private int exp; + @Getter + @Setter + private int promoteLevel; + @Getter + @Setter + private int satiation; // Fullness + @Getter + @Setter + private int satiationPenalty; // When eating too much + @Getter + @Setter + private float currentHp; private float currentEnergy; - - @Transient @Getter private final Int2ObjectMap equips; - @Transient @Getter private final Int2FloatOpenHashMap fightProperties; - @Transient @Getter private final Int2FloatOpenHashMap fightPropOverrides; - @Transient @Getter private Set extraAbilityEmbryos; + @Transient + @Getter + private Set extraAbilityEmbryos; private List fetters; - private Map skillLevelMap = new Int2IntArrayMap(7); // Talent levels - @Transient @Getter private Map skillExtraChargeMap = new Int2IntArrayMap(2); // Charges - @Transient private Map proudSkillBonusMap = new Int2IntArrayMap(2); // Talent bonus levels (from const) - @Getter private int skillDepotId; + private final Map skillLevelMap = new Int2IntArrayMap(7); // Talent levels + @Transient + @Getter + private final Map skillExtraChargeMap = new Int2IntArrayMap(2); // Charges + @Transient + private final Map proudSkillBonusMap = new Int2IntArrayMap(2); // Talent bonus levels (from const) + @Getter + private int skillDepotId; private Set talentIdList; // Constellation id list - @Getter private Set proudSkillList; // Character passives + @Getter + private Set proudSkillList; // Character passives - @Getter @Setter private int flyCloak; - @Getter @Setter private int costume; - @Getter private int bornTime; + @Getter + @Setter + private int flyCloak; + @Getter + @Setter + private int costume; + @Getter + private int bornTime; - @Getter @Setter private int fetterLevel = 1; - @Getter @Setter private int fetterExp; + @Getter + @Setter + private int fetterLevel = 1; + @Getter + @Setter + private int fetterExp; - @Getter @Setter private int nameCardRewardId; - @Getter @Setter private int nameCardId; + @Getter + @Setter + private int nameCardRewardId; + @Getter + @Setter + private int nameCardId; @Deprecated // Do not use. Morhpia only! public Avatar() { @@ -149,10 +161,8 @@ public class Avatar { this.setSkillDepotData(switch (this.avatarId) { case GameConstants.MAIN_CHARACTER_MALE -> GameData.getAvatarSkillDepotDataMap().get(504); // Hack to start with anemo skills - case GameConstants.MAIN_CHARACTER_FEMALE -> - GameData.getAvatarSkillDepotDataMap().get(704); - default -> - data.getSkillDepot(); + case GameConstants.MAIN_CHARACTER_FEMALE -> GameData.getAvatarSkillDepotDataMap().get(704); + default -> data.getSkillDepot(); }); // Set stats @@ -164,6 +174,23 @@ public class Avatar { this.onLoad(); } + static public int getMinPromoteLevel(int level) { + if (level > 80) { + return 6; + } else if (level > 70) { + return 5; + } else if (level > 60) { + return 4; + } else if (level > 50) { + return 3; + } else if (level > 40) { + return 2; + } else if (level > 20) { + return 1; + } + return 0; + } + public Player getPlayer() { return this.owner; } @@ -187,23 +214,6 @@ public class Avatar { this.guid = player.getNextGameGuid(); } - static public int getMinPromoteLevel(int level) { - if (level > 80) { - return 6; - } else if (level > 70) { - return 5; - } else if (level > 60) { - return 4; - } else if (level > 50) { - return 3; - } else if (level > 40) { - return 2; - } else if (level > 20) { - return 1; - } - return 0; - } - public boolean addSatiation(int value) { if (this.satiation >= 10000) return false; this.satiation += value; @@ -213,7 +223,7 @@ public class Avatar { public float reduceSatiation(int value) { if (this.satiation == 0) return 0; this.satiation -= value; - if(this.satiation < 0) { + if (this.satiation < 0) { this.satiation = 0; } return this.satiation; @@ -222,7 +232,7 @@ public class Avatar { public float reduceSatiationPenalty(int value) { if (this.satiationPenalty == 0) return 0; this.satiationPenalty -= value; - if(this.satiationPenalty < 0) { + if (this.satiationPenalty < 0) { this.satiationPenalty = 0; } return this.satiationPenalty; @@ -263,14 +273,14 @@ public class Avatar { this.recalcStats(); } - public void setFetterList(List fetterList) { - this.fetters = fetterList; - } - public List getFetterList() { return fetters; } + public void setFetterList(List fetterList) { + this.fetters = fetterList; + } + public void setCurrentEnergy() { if (GAME_OPTIONS.energyUsage) { this.setCurrentEnergy(this.currentEnergy); @@ -591,7 +601,7 @@ public class Avatar { .map(AvatarTalentData::getOpenConfig) .filter(Objects::nonNull) .forEach(this::addToExtraAbilityEmbryos); - // Add any skill strings from this constellation + // Add any skill strings from this constellation // Set % stats FightProperty.forEachCompoundProperty(c -> this.setFightProperty(c.getResult(), @@ -724,7 +734,7 @@ public class Avatar { } private int addProudSkillLevelBonus(int proudSkillGroupId, int bonus) { - return this.proudSkillBonusMap.compute(proudSkillGroupId, (k,v) -> (v==null) ? bonus : v + bonus); + return this.proudSkillBonusMap.compute(proudSkillGroupId, (k, v) -> (v == null) ? bonus : v + bonus); } public boolean upgradeSkill(int skillId) { @@ -771,14 +781,17 @@ public class Avatar { public boolean unlockConstellation() { return this.unlockConstellation(false); } + public boolean unlockConstellation(boolean skipPayment) { int currentTalentLevel = this.getCoreProudSkillLevel(); int talentId = this.skillDepot.getTalents().get(currentTalentLevel); return this.unlockConstellation(talentId, skipPayment); } + public boolean unlockConstellation(int talentId) { return unlockConstellation(talentId, false); } + public boolean unlockConstellation(int talentId, boolean skipPayment) { // Get talent AvatarTalentData talentData = GameData.getAvatarTalentDataMap().get(talentId); @@ -852,7 +865,7 @@ public class Avatar { public AvatarInfo toProto() { int fetterLevel = this.getFetterLevel(); AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() - .setExpLevel(fetterLevel); + .setExpLevel(fetterLevel); if (fetterLevel != 10) { avatarFetter.setExpNumber(this.getFetterExp()); @@ -873,21 +886,21 @@ public class Avatar { } AvatarInfo.Builder avatarInfo = AvatarInfo.newBuilder() - .setAvatarId(this.getAvatarId()) - .setGuid(this.getGuid()) - .setLifeState(1) - .addAllTalentIdList(this.getTalentIdList()) - .putAllFightPropMap(this.getFightProperties()) - .setSkillDepotId(this.getSkillDepotId()) - .setCoreProudSkillLevel(this.getCoreProudSkillLevel()) - .putAllSkillLevelMap(this.getSkillLevelMap()) - .addAllInherentProudSkillList(this.getProudSkillList()) - .putAllProudSkillExtraLevelMap(this.getProudSkillBonusMap()) - .setAvatarType(1) - .setBornTime(this.getBornTime()) - .setFetterInfo(avatarFetter) - .setWearingFlycloakId(this.getFlyCloak()) - .setCostumeId(this.getCostume()); + .setAvatarId(this.getAvatarId()) + .setGuid(this.getGuid()) + .setLifeState(1) + .addAllTalentIdList(this.getTalentIdList()) + .putAllFightPropMap(this.getFightProperties()) + .setSkillDepotId(this.getSkillDepotId()) + .setCoreProudSkillLevel(this.getCoreProudSkillLevel()) + .putAllSkillLevelMap(this.getSkillLevelMap()) + .addAllInherentProudSkillList(this.getProudSkillList()) + .putAllProudSkillExtraLevelMap(this.getProudSkillBonusMap()) + .setAvatarType(1) + .setBornTime(this.getBornTime()) + .setFetterInfo(avatarFetter) + .setWearingFlycloakId(this.getFlyCloak()) + .setCostumeId(this.getCostume()); this.getSkillExtraChargeMap().forEach((skillId, count) -> avatarInfo.putSkillMap(skillId, AvatarSkillInfo.newBuilder().setMaxChargeCount(count).build())); @@ -906,19 +919,19 @@ public class Avatar { // used only in character showcase public ShowAvatarInfo toShowAvatarInfoProto() { AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() - .setExpLevel(this.getFetterLevel()); + .setExpLevel(this.getFetterLevel()); ShowAvatarInfo.Builder showAvatarInfo = ShowAvatarInfoOuterClass.ShowAvatarInfo.newBuilder() - .setAvatarId(avatarId) - .addAllTalentIdList(this.getTalentIdList()) - .putAllFightPropMap(this.getFightProperties()) - .setSkillDepotId(this.getSkillDepotId()) - .setCoreProudSkillLevel(this.getCoreProudSkillLevel()) - .addAllInherentProudSkillList(this.getProudSkillList()) - .putAllSkillLevelMap(this.getSkillLevelMap()) - .putAllProudSkillExtraLevelMap(this.getProudSkillBonusMap()) - .setFetterInfo(avatarFetter) - .setCostumeId(this.getCostume()); + .setAvatarId(avatarId) + .addAllTalentIdList(this.getTalentIdList()) + .putAllFightPropMap(this.getFightProperties()) + .setSkillDepotId(this.getSkillDepotId()) + .setCoreProudSkillLevel(this.getCoreProudSkillLevel()) + .addAllInherentProudSkillList(this.getProudSkillList()) + .putAllSkillLevelMap(this.getSkillLevelMap()) + .putAllProudSkillExtraLevelMap(this.getProudSkillBonusMap()) + .setFetterInfo(avatarFetter) + .setCostumeId(this.getCostume()); showAvatarInfo.putPropMap(PlayerProperty.PROP_LEVEL.getId(), ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, this.getLevel())); showAvatarInfo.putPropMap(PlayerProperty.PROP_EXP.getId(), ProtoHelper.newPropValue(PlayerProperty.PROP_EXP, this.getExp())); @@ -931,12 +944,12 @@ public class Avatar { for (GameItem item : this.getEquips().values()) { if (item.getItemType() == ItemType.ITEM_RELIQUARY) { showAvatarInfo.addEquipList(ShowEquip.newBuilder() - .setItemId(item.getItemId()) - .setReliquary(item.toReliquaryProto())); + .setItemId(item.getItemId()) + .setReliquary(item.toReliquaryProto())); } else if (item.getItemType() == ItemType.ITEM_WEAPON) { showAvatarInfo.addEquipList(ShowEquip.newBuilder() - .setItemId(item.getItemId()) - .setWeapon(item.toWeaponProto())); + .setItemId(item.getItemId()) + .setWeapon(item.toWeaponProto())); } } diff --git a/src/main/java/emu/grasscutter/game/avatar/AvatarStorage.java b/src/main/java/emu/grasscutter/game/avatar/AvatarStorage.java index d7f6272f0..fcb69faf3 100644 --- a/src/main/java/emu/grasscutter/game/avatar/AvatarStorage.java +++ b/src/main/java/emu/grasscutter/game/avatar/AvatarStorage.java @@ -1,8 +1,5 @@ package emu.grasscutter.game.avatar; -import java.util.Iterator; -import java.util.List; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.AvatarData; import emu.grasscutter.data.excels.AvatarSkillDepotData; @@ -18,6 +15,9 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; +import java.util.Iterator; +import java.util.List; + public class AvatarStorage extends BasePlayerManager implements Iterable { private final Int2ObjectMap avatars; private final Long2ObjectMap avatarsGuid; diff --git a/src/main/java/emu/grasscutter/game/battlepass/BattlePassManager.java b/src/main/java/emu/grasscutter/game/battlepass/BattlePassManager.java index cead4c422..9ac60c578 100644 --- a/src/main/java/emu/grasscutter/game/battlepass/BattlePassManager.java +++ b/src/main/java/emu/grasscutter/game/battlepass/BattlePassManager.java @@ -1,17 +1,5 @@ package emu.grasscutter.game.battlepass; -import java.time.DayOfWeek; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.TemporalAdjusters; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.bson.types.ObjectId; - import dev.morphia.annotations.Entity; import dev.morphia.annotations.Id; import dev.morphia.annotations.Indexed; @@ -32,32 +20,50 @@ import emu.grasscutter.game.props.BattlePassMissionStatus; import emu.grasscutter.game.props.ItemUseOp; import emu.grasscutter.game.props.WatcherTriggerType; import emu.grasscutter.net.proto.BattlePassCycleOuterClass.BattlePassCycle; -import emu.grasscutter.net.proto.BattlePassUnlockStatusOuterClass.BattlePassUnlockStatus; import emu.grasscutter.net.proto.BattlePassRewardTakeOptionOuterClass.BattlePassRewardTakeOption; import emu.grasscutter.net.proto.BattlePassScheduleOuterClass.BattlePassSchedule; +import emu.grasscutter.net.proto.BattlePassUnlockStatusOuterClass.BattlePassUnlockStatus; import emu.grasscutter.server.packet.send.PacketBattlePassCurScheduleUpdateNotify; import emu.grasscutter.server.packet.send.PacketBattlePassMissionUpdateNotify; import emu.grasscutter.server.packet.send.PacketTakeBattlePassRewardRsp; - import lombok.Getter; +import org.bson.types.ObjectId; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Entity(value = "battlepass", useDiscriminator = false) public class BattlePassManager extends BasePlayerDataManager { - @Id @Getter private ObjectId id; + @Id + @Getter + private ObjectId id; - @Indexed private int ownerUid; - @Getter private int point; - @Getter private int cyclePoints; // Weekly maximum cap - @Getter private int level; + @Indexed + private int ownerUid; + @Getter + private int point; + @Getter + private int cyclePoints; // Weekly maximum cap + @Getter + private int level; - @Getter private boolean viewed; + @Getter + private boolean viewed; private boolean paid; private Map missions; private Map takenRewards; @Deprecated // Morphia only - public BattlePassManager() {} + public BattlePassManager() { + } public BattlePassManager(Player player) { super(player); @@ -219,8 +225,7 @@ public class BattlePassManager extends BasePlayerDataManager { GameItem rewardItem = new GameItem(GameData.getItemDataMap().get(r.getItemId()), r.getItemCount()); rewardItems.add(rewardItem); } - } - else { + } else { Grasscutter.getLogger().error("Invalid chest type for BP reward."); } } @@ -246,8 +251,7 @@ public class BattlePassManager extends BasePlayerDataManager { rewardList.add(option); } else if (this.isPaid() && rewardData.getPaidRewardIdList().contains(option.getTag().getRewardId())) { rewardList.add(option); - } - else { + } else { Grasscutter.getLogger().info("Not in rewards list: {}", option.getTag().getRewardId()); } } @@ -360,20 +364,20 @@ public class BattlePassManager extends BasePlayerDataManager { var nextSundayTime = LocalDateTime.of(nextSundayDate.getYear(), nextSundayDate.getMonthValue(), nextSundayDate.getDayOfMonth(), 23, 59, 59); BattlePassSchedule.Builder schedule = BattlePassSchedule.newBuilder() - .setScheduleId(2700) - .setLevel(this.getLevel()) - .setPoint(this.getPoint()) + .setScheduleId(2700) + .setLevel(this.getLevel()) + .setPoint(this.getPoint()) + .setBeginTime(0) + .setEndTime(2059483200) + .setIsViewed(this.isViewed()) + .setUnlockStatus(this.isPaid() ? BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_PAID : BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_FREE) + .setPaidPlatformFlags(2) // Not bought on Playstation. + .setCurCyclePoints(this.getCyclePoints()) + .setCurCycle(BattlePassCycle.newBuilder() .setBeginTime(0) - .setEndTime(2059483200) - .setIsViewed(this.isViewed()) - .setUnlockStatus(this.isPaid() ? BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_PAID : BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_FREE) - .setPaidPlatformFlags(2) // Not bought on Playstation. - .setCurCyclePoints(this.getCyclePoints()) - .setCurCycle(BattlePassCycle.newBuilder() - .setBeginTime(0) - .setEndTime((int)nextSundayTime.atZone(ZoneId.systemDefault()).toEpochSecond()) - .setCycleIdx(3) - ); + .setEndTime((int) nextSundayTime.atZone(ZoneId.systemDefault()).toEpochSecond()) + .setCycleIdx(3) + ); for (BattlePassReward reward : getTakenRewards().values()) { schedule.addRewardTakenList(reward.toProto()); diff --git a/src/main/java/emu/grasscutter/game/battlepass/BattlePassMission.java b/src/main/java/emu/grasscutter/game/battlepass/BattlePassMission.java index cb47d7d47..98948acdc 100644 --- a/src/main/java/emu/grasscutter/game/battlepass/BattlePassMission.java +++ b/src/main/java/emu/grasscutter/game/battlepass/BattlePassMission.java @@ -8,67 +8,68 @@ import emu.grasscutter.game.props.BattlePassMissionStatus; @Entity public class BattlePassMission { - private int id; - private int progress; - private BattlePassMissionStatus status; - - @Transient - private BattlePassMissionData data; - - @Deprecated // Morphia only - public BattlePassMission() {} - - public BattlePassMission(int id) { - this.id = id; - } + private int id; + private int progress; + private BattlePassMissionStatus status; - public int getId() { - return id; - } + @Transient + private BattlePassMissionData data; - public BattlePassMissionData getData() { - if (this.data == null) { - this.data = GameData.getBattlePassMissionDataMap().get(getId()); - } - return this.data; - } + @Deprecated // Morphia only + public BattlePassMission() { + } - public int getProgress() { - return progress; - } + public BattlePassMission(int id) { + this.id = id; + } - public void setProgress(int value) { - this.progress = value; - } + public int getId() { + return id; + } - public void addProgress(int addProgress, int maxProgress) { - this.progress = Math.min(addProgress + this.progress, maxProgress); - } + public BattlePassMissionData getData() { + if (this.data == null) { + this.data = GameData.getBattlePassMissionDataMap().get(getId()); + } + return this.data; + } - public BattlePassMissionStatus getStatus() { - if (status == null) status = BattlePassMissionStatus.MISSION_STATUS_UNFINISHED; - return status; - } + public int getProgress() { + return progress; + } - public void setStatus(BattlePassMissionStatus status) { - this.status = status; - } + public void setProgress(int value) { + this.progress = value; + } - public boolean isFinshed() { - return getStatus().getValue() >= 2; - } + public void addProgress(int addProgress, int maxProgress) { + this.progress = Math.min(addProgress + this.progress, maxProgress); + } - public emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission toProto() { - var protoBuilder = emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.newBuilder(); - - protoBuilder - .setMissionId(getId()) - .setCurProgress(getProgress()) - .setTotalProgress(getData().getProgress()) - .setRewardBattlePassPoint(getData().getAddPoint()) - .setMissionStatus(getStatus().getMissionStatus()) - .setMissionType(getData().getRefreshType() == null ? 0 : getData().getRefreshType().getValue()); - - return protoBuilder.build(); - } + public BattlePassMissionStatus getStatus() { + if (status == null) status = BattlePassMissionStatus.MISSION_STATUS_UNFINISHED; + return status; + } + + public void setStatus(BattlePassMissionStatus status) { + this.status = status; + } + + public boolean isFinshed() { + return getStatus().getValue() >= 2; + } + + public emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission toProto() { + var protoBuilder = emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.newBuilder(); + + protoBuilder + .setMissionId(getId()) + .setCurProgress(getProgress()) + .setTotalProgress(getData().getProgress()) + .setRewardBattlePassPoint(getData().getAddPoint()) + .setMissionStatus(getStatus().getMissionStatus()) + .setMissionType(getData().getRefreshType() == null ? 0 : getData().getRefreshType().getValue()); + + return protoBuilder.build(); + } } diff --git a/src/main/java/emu/grasscutter/game/battlepass/BattlePassReward.java b/src/main/java/emu/grasscutter/game/battlepass/BattlePassReward.java index 5d05ab84b..903af8f7c 100644 --- a/src/main/java/emu/grasscutter/game/battlepass/BattlePassReward.java +++ b/src/main/java/emu/grasscutter/game/battlepass/BattlePassReward.java @@ -2,51 +2,49 @@ package emu.grasscutter.game.battlepass; import dev.morphia.annotations.Entity; import dev.morphia.annotations.Transient; -import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.BattlePassMissionData; -import emu.grasscutter.data.excels.BattlePassRewardData; -import emu.grasscutter.game.props.BattlePassMissionStatus; import emu.grasscutter.net.proto.BattlePassRewardTagOuterClass.BattlePassRewardTag; import emu.grasscutter.net.proto.BattlePassUnlockStatusOuterClass.BattlePassUnlockStatus; @Entity public class BattlePassReward { - private int level; - private int rewardId; - private boolean paid; + private int level; + private int rewardId; + private boolean paid; - @Transient - private BattlePassMissionData data; - - @Deprecated // Morphia only - public BattlePassReward() {} - - public BattlePassReward(int level, int rewardId, boolean paid) { - this.level = level; - this.rewardId = rewardId; - this.paid = paid; - } + @Transient + private BattlePassMissionData data; - public int getLevel() { - return level; - } + @Deprecated // Morphia only + public BattlePassReward() { + } - public int getRewardId() { - return rewardId; - } + public BattlePassReward(int level, int rewardId, boolean paid) { + this.level = level; + this.rewardId = rewardId; + this.paid = paid; + } - public boolean isPaid() { - return paid; - } + public int getLevel() { + return level; + } - public BattlePassRewardTag toProto() { - var protoBuilder = BattlePassRewardTag.newBuilder(); - - protoBuilder - .setLevel(this.getLevel()) - .setRewardId(this.getRewardId()) - .setUnlockStatus(this.isPaid() ? BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_PAID : BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_FREE); - - return protoBuilder.build(); - } + public int getRewardId() { + return rewardId; + } + + public boolean isPaid() { + return paid; + } + + public BattlePassRewardTag toProto() { + var protoBuilder = BattlePassRewardTag.newBuilder(); + + protoBuilder + .setLevel(this.getLevel()) + .setRewardId(this.getRewardId()) + .setUnlockStatus(this.isPaid() ? BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_PAID : BattlePassUnlockStatus.BATTLE_PASS_UNLOCK_STATUS_FREE); + + return protoBuilder.build(); + } } diff --git a/src/main/java/emu/grasscutter/game/battlepass/BattlePassSystem.java b/src/main/java/emu/grasscutter/game/battlepass/BattlePassSystem.java index c89fc09fa..c91029d45 100644 --- a/src/main/java/emu/grasscutter/game/battlepass/BattlePassSystem.java +++ b/src/main/java/emu/grasscutter/game/battlepass/BattlePassSystem.java @@ -1,20 +1,19 @@ package emu.grasscutter.game.battlepass; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.BattlePassMissionData; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.props.BattlePassMissionRefreshType; import emu.grasscutter.game.props.BattlePassMissionStatus; import emu.grasscutter.game.props.WatcherTriggerType; import emu.grasscutter.server.game.BaseGameSystem; import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.packet.send.PacketBattlePassMissionUpdateNotify; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class BattlePassSystem extends BaseGameSystem { private final Map> cachedTriggers; diff --git a/src/main/java/emu/grasscutter/game/chat/ChatSystem.java b/src/main/java/emu/grasscutter/game/chat/ChatSystem.java index d14471ae8..70ff53a87 100644 --- a/src/main/java/emu/grasscutter/game/chat/ChatSystem.java +++ b/src/main/java/emu/grasscutter/game/chat/ChatSystem.java @@ -11,14 +11,13 @@ import emu.grasscutter.server.packet.send.PacketPullPrivateChatRsp; import emu.grasscutter.server.packet.send.PacketPullRecentChatRsp; import emu.grasscutter.utils.Utils; -import java.util.regex.Pattern; - -import static emu.grasscutter.config.Configuration.*; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; + +import static emu.grasscutter.config.Configuration.GAME_INFO; public class ChatSystem implements ChatSystemHandler { static final String PREFIXES = "[/!]"; @@ -52,8 +51,8 @@ public class ChatSystem implements ChatSystemHandler { ********************/ private void putInHistory(int uid, int partnerId, ChatInfo info) { this.history.computeIfAbsent(uid, x -> new HashMap<>()) - .computeIfAbsent(partnerId, x -> new ArrayList<>()) - .add(info); + .computeIfAbsent(partnerId, x -> new ArrayList<>()) + .add(info); } public void clearHistoryOnLogout(Player player) { @@ -62,7 +61,7 @@ public class ChatSystem implements ChatSystemHandler { public void handlePullPrivateChatReq(Player player, int partnerId) { var chatHistory = this.history.computeIfAbsent(player.getUid(), x -> new HashMap<>()) - .computeIfAbsent(partnerId, x -> new ArrayList<>()); + .computeIfAbsent(partnerId, x -> new ArrayList<>()); player.sendPacket(new PacketPullPrivateChatRsp(chatHistory)); } @@ -102,6 +101,7 @@ public class ChatSystem implements ChatSystemHandler { // Send. target.sendPacket(packet); } + public void sendPrivateMessageFromServer(int targetUid, int emote) { // Get target. Player target = getServer().getPlayerByUid(targetUid); @@ -181,6 +181,7 @@ public class ChatSystem implements ChatSystemHandler { // Create and send chat packet player.getWorld().broadcastPacket(new PacketPlayerChatNotify(player, channel, message)); } + public void sendTeamMessage(Player player, int channel, int icon) { // Create and send chat packet player.getWorld().broadcastPacket(new PacketPlayerChatNotify(player, channel, icon)); diff --git a/src/main/java/emu/grasscutter/game/chat/ChatSystemHandler.java b/src/main/java/emu/grasscutter/game/chat/ChatSystemHandler.java index 9a3d66f25..89f5f973b 100644 --- a/src/main/java/emu/grasscutter/game/chat/ChatSystemHandler.java +++ b/src/main/java/emu/grasscutter/game/chat/ChatSystemHandler.java @@ -5,13 +5,22 @@ import emu.grasscutter.server.game.GameServer; public interface ChatSystemHandler { GameServer getServer(); + void sendPrivateMessage(Player player, int targetUid, String message); + void sendPrivateMessage(Player player, int targetUid, int emote); + void sendTeamMessage(Player player, int channel, String message); + void sendTeamMessage(Player player, int channel, int icon); + void sendPrivateMessageFromServer(int targetUid, String message); + void sendPrivateMessageFromServer(int targetUid, int emote); + void handlePullPrivateChatReq(Player player, int targetUid); + void clearHistoryOnLogout(Player player); + void handlePullRecentChatReq(Player player); } diff --git a/src/main/java/emu/grasscutter/game/combine/CombineManger.java b/src/main/java/emu/grasscutter/game/combine/CombineManger.java index e5213112b..9f9c55cbe 100644 --- a/src/main/java/emu/grasscutter/game/combine/CombineManger.java +++ b/src/main/java/emu/grasscutter/game/combine/CombineManger.java @@ -36,8 +36,7 @@ public class CombineManger extends BaseGameSystem { reliquaryDecomposeData.put(entry.getConfigId(), entry.getItems()); }); Grasscutter.getLogger().debug("Loaded {} reliquary decompose entries.", reliquaryDecomposeData.size()); - } - catch (Exception ex) { + } catch (Exception ex) { Grasscutter.getLogger().error("Unable to load reliquary decompose data.", ex); } } @@ -77,12 +76,12 @@ public class CombineManger extends BaseGameSystem { // make the result player.getInventory().addItem(combineData.getResultItemId(), - combineData.getResultItemCount() * count); + combineData.getResultItemCount() * count); CombineResult result = new CombineResult(); result.setMaterial(List.of()); result.setResult(List.of(new ItemParamData(combineData.getResultItemId(), - combineData.getResultItemCount() * count))); + combineData.getResultItemCount() * count))); // TODO lucky characters result.setExtra(List.of()); result.setBack(List.of()); diff --git a/src/main/java/emu/grasscutter/game/combine/CombineResult.java b/src/main/java/emu/grasscutter/game/combine/CombineResult.java index 067d55568..75a78e0cf 100644 --- a/src/main/java/emu/grasscutter/game/combine/CombineResult.java +++ b/src/main/java/emu/grasscutter/game/combine/CombineResult.java @@ -1,9 +1,8 @@ package emu.grasscutter.game.combine; -import java.util.List; - import emu.grasscutter.data.common.ItemParamData; -import emu.grasscutter.data.excels.CombineData; + +import java.util.List; public class CombineResult { private List material; diff --git a/src/main/java/emu/grasscutter/game/combine/ReliquaryDecomposeEntry.java b/src/main/java/emu/grasscutter/game/combine/ReliquaryDecomposeEntry.java index 30aa1145e..856278535 100644 --- a/src/main/java/emu/grasscutter/game/combine/ReliquaryDecomposeEntry.java +++ b/src/main/java/emu/grasscutter/game/combine/ReliquaryDecomposeEntry.java @@ -9,6 +9,7 @@ public class ReliquaryDecomposeEntry { public int getConfigId() { return configId; } + public void setConfigId(int configId) { this.configId = configId; } @@ -16,7 +17,8 @@ public class ReliquaryDecomposeEntry { public List getItems() { return items; } + public void setItems(List items) { this.items = items; - } + } } diff --git a/src/main/java/emu/grasscutter/game/drop/DropInfo.java b/src/main/java/emu/grasscutter/game/drop/DropInfo.java index d9ccfc4c5..8ba401eaf 100644 --- a/src/main/java/emu/grasscutter/game/drop/DropInfo.java +++ b/src/main/java/emu/grasscutter/game/drop/DropInfo.java @@ -3,6 +3,9 @@ package emu.grasscutter.game.drop; import java.util.List; public class DropInfo { + private int monsterId; + private List dropDataList; + public int getMonsterId() { return monsterId; } @@ -10,7 +13,4 @@ public class DropInfo { public List getDropDataList() { return dropDataList; } - - private int monsterId; - private List dropDataList; } diff --git a/src/main/java/emu/grasscutter/game/drop/DropSystem.java b/src/main/java/emu/grasscutter/game/drop/DropSystem.java index 053dcbed2..874507d2c 100644 --- a/src/main/java/emu/grasscutter/game/drop/DropSystem.java +++ b/src/main/java/emu/grasscutter/game/drop/DropSystem.java @@ -49,6 +49,7 @@ public class DropSystem extends BaseGameSystem { Grasscutter.getLogger().error("Unable to load drop data.", e); } } + private void addDropEntity(DropData dd, Scene dropScene, ItemData itemData, Position pos, int num, Player target) { if (!dd.isGive() && (itemData.getItemType() != ItemType.ITEM_VIRTUAL || itemData.getGadgetId() != 0)) { EntityItem entity = new EntityItem(dropScene, target, itemData, pos, num, dd.isShare()); diff --git a/src/main/java/emu/grasscutter/game/dungeons/DungeonDrop.java b/src/main/java/emu/grasscutter/game/dungeons/DungeonDrop.java index 75e4a18b9..f329eab9c 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/DungeonDrop.java +++ b/src/main/java/emu/grasscutter/game/dungeons/DungeonDrop.java @@ -3,20 +3,22 @@ package emu.grasscutter.game.dungeons; import java.util.List; public class DungeonDrop { - private int dungeonId; - private List drops; + private int dungeonId; + private List drops; - public int getDungeonId() { - return dungeonId; - } - public void setDungeonId(int dungeonId) { - this.dungeonId = dungeonId; - } - - public List getDrops() { - return drops; - } - public void setDrops(List drops) { - this.drops = drops; - } + public int getDungeonId() { + return dungeonId; + } + + public void setDungeonId(int dungeonId) { + this.dungeonId = dungeonId; + } + + public List getDrops() { + return drops; + } + + public void setDrops(List drops) { + this.drops = drops; + } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/DungeonDropEntry.java b/src/main/java/emu/grasscutter/game/dungeons/DungeonDropEntry.java index d54d76581..80e7b80af 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/DungeonDropEntry.java +++ b/src/main/java/emu/grasscutter/game/dungeons/DungeonDropEntry.java @@ -3,44 +3,49 @@ package emu.grasscutter.game.dungeons; import java.util.List; public class DungeonDropEntry { - private List counts; - private List items; - private List probabilities; - private List itemProbabilities; - private boolean mpDouble; + private List counts; + private List items; + private List probabilities; + private List itemProbabilities; + private boolean mpDouble; - public List getCounts() { - return counts; - } - public void setCounts(List counts) { - this.counts = counts; - } - - public List getItems() { - return items; - } - public void setItems(List items) { - this.items = items; - } + public List getCounts() { + return counts; + } - public List getProbabilities() { - return probabilities; - } - public void setProbabilities(List probabilities) { - this.probabilities = probabilities; - } + public void setCounts(List counts) { + this.counts = counts; + } - public List getItemProbabilities() { - return itemProbabilities; - } - public void setItemProbabilities(List itemProbabilities) { - this.itemProbabilities = itemProbabilities; - } + public List getItems() { + return items; + } - public boolean isMpDouble() { - return mpDouble; - } - public void setMpDouble(boolean mpDouble) { - this.mpDouble = mpDouble; - } + public void setItems(List items) { + this.items = items; + } + + public List getProbabilities() { + return probabilities; + } + + public void setProbabilities(List probabilities) { + this.probabilities = probabilities; + } + + public List getItemProbabilities() { + return itemProbabilities; + } + + public void setItemProbabilities(List itemProbabilities) { + this.itemProbabilities = itemProbabilities; + } + + public boolean isMpDouble() { + return mpDouble; + } + + public void setMpDouble(boolean mpDouble) { + this.mpDouble = mpDouble; + } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/DungeonSystem.java b/src/main/java/emu/grasscutter/game/dungeons/DungeonSystem.java index 4a74a65ba..502af561e 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/DungeonSystem.java +++ b/src/main/java/emu/grasscutter/game/dungeons/DungeonSystem.java @@ -44,7 +44,7 @@ public class DungeonSystem extends BaseGameSystem { if (data == null) { return false; } - Grasscutter.getLogger().info("{}({}) is trying to enter dungeon {}" ,player.getNickname(),player.getUid(),dungeonId); + Grasscutter.getLogger().info("{}({}) is trying to enter dungeon {}", player.getNickname(), player.getUid(), dungeonId); int sceneId = data.getSceneId(); player.getScene().setPrevScene(sceneId); @@ -68,7 +68,7 @@ public class DungeonSystem extends BaseGameSystem { if (data == null) { return false; } - Grasscutter.getLogger().info("{}({}) is trying to enter tower dungeon {}" ,player.getNickname(),player.getUid(),dungeonId); + Grasscutter.getLogger().info("{}({}) is trying to enter tower dungeon {}", player.getNickname(), player.getUid(), dungeonId); if (player.getWorld().transferPlayerToScene(player, data.getSceneId(), data)) { dungeonSettleListeners.forEach(player.getScene()::addDungeonSettleObserver); @@ -79,7 +79,7 @@ public class DungeonSystem extends BaseGameSystem { public void exitDungeon(Player player) { Scene scene = player.getScene(); - if (scene==null || scene.getSceneType() != SceneType.SCENE_DUNGEON) { + if (scene == null || scene.getSceneType() != SceneType.SCENE_DUNGEON) { return; } diff --git a/src/main/java/emu/grasscutter/game/dungeons/TowerDungeonSettleListener.java b/src/main/java/emu/grasscutter/game/dungeons/TowerDungeonSettleListener.java index 3f212ce4a..c45c079d5 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/TowerDungeonSettleListener.java +++ b/src/main/java/emu/grasscutter/game/dungeons/TowerDungeonSettleListener.java @@ -9,8 +9,8 @@ public class TowerDungeonSettleListener implements DungeonSettleListener { @Override public void onDungeonSettle(Scene scene) { - if(scene.getScriptManager().getVariables().containsKey("stage") - && scene.getScriptManager().getVariables().get("stage") == 1){ + if (scene.getScriptManager().getVariables().containsKey("stage") + && scene.getScriptManager().getVariables().get("stage") == 1) { return; } scene.setAutoCloseTime(Utils.getCurrentSeconds() + 1000); @@ -18,17 +18,17 @@ public class TowerDungeonSettleListener implements DungeonSettleListener { towerManager.notifyCurLevelRecordChangeWhenDone(3); scene.broadcastPacket(new PacketTowerFloorRecordChangeNotify( - towerManager.getCurrentFloorId(), - 3, - towerManager.canEnterScheduleFloor() + towerManager.getCurrentFloorId(), + 3, + towerManager.canEnterScheduleFloor() )); scene.broadcastPacket(new PacketDungeonSettleNotify( - scene.getChallenge(), - towerManager.hasNextFloor(), - towerManager.hasNextLevel(), - towerManager.hasNextLevel() ? 0 : towerManager.getNextFloorId() - )); + scene.getChallenge(), + towerManager.hasNextFloor(), + towerManager.hasNextLevel(), + towerManager.hasNextLevel() ? 0 : towerManager.getNextFloorId() + )); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/DungeonChallenge.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/DungeonChallenge.java index 3238dc9bd..5702a7a1d 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/DungeonChallenge.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/DungeonChallenge.java @@ -31,27 +31,13 @@ import java.util.stream.IntStream; public class DungeonChallenge extends WorldChallenge { + private final static Int2ObjectMap> dungeonDropData = new Int2ObjectOpenHashMap<>(); /** * has more challenge */ private boolean stage; private IntSet rewardedPlayers; - private final static Int2ObjectMap> dungeonDropData = new Int2ObjectOpenHashMap<>(); - - public static void initialize() { - // Read the data we need for dungeon rewards drops. - try { - DataLoader.loadList("DungeonDrop.json", DungeonDrop.class).forEach(entry -> { - dungeonDropData.put(entry.getDungeonId(), entry.getDrops()); - }); - Grasscutter.getLogger().debug("Loaded {} dungeon drop data entries.", dungeonDropData.size()); - } - catch (Exception ex) { - Grasscutter.getLogger().error("Unable to load dungeon drop data.", ex); - } - } - public DungeonChallenge(Scene scene, SceneGroup group, int challengeId, int challengeIndex, List paramList, @@ -61,6 +47,18 @@ public class DungeonChallenge extends WorldChallenge { this.setRewardedPlayers(new IntOpenHashSet()); } + public static void initialize() { + // Read the data we need for dungeon rewards drops. + try { + DataLoader.loadList("DungeonDrop.json", DungeonDrop.class).forEach(entry -> { + dungeonDropData.put(entry.getDungeonId(), entry.getDrops()); + }); + Grasscutter.getLogger().debug("Loaded {} dungeon drop data entries.", dungeonDropData.size()); + } catch (Exception ex) { + Grasscutter.getLogger().error("Unable to load dungeon drop data.", ex); + } + } + public boolean isStage() { return stage; } @@ -91,7 +89,7 @@ public class DungeonChallenge extends WorldChallenge { var scene = this.getScene(); scene.getDungeonSettleListeners().forEach(o -> o.onDungeonSettle(getScene())); scene.getScriptManager().callEvent(EventType.EVENT_DUNGEON_SETTLE, - new ScriptArgs(this.isSuccess() ? 1 : 0)); + new ScriptArgs(this.isSuccess() ? 1 : 0)); // Battle pass trigger scene.getPlayers().forEach(p -> p.getBattlePassManager().triggerMission(WatcherTriggerType.TRIGGER_FINISH_DUNGEON)); } @@ -129,8 +127,7 @@ public class DungeonChallenge extends WorldChallenge { // for the currently existing set of dungeons. if (entry.getItems().size() == 1) { rewards.add(new GameItem(entry.getItems().get(0), amount)); - } - else { + } else { for (int i = 0; i < amount; i++) { // int itemIndex = ThreadLocalRandom.current().nextInt(0, entry.getItems().size()); // int itemId = entry.getItems().get(itemIndex); @@ -180,8 +177,7 @@ public class DungeonChallenge extends WorldChallenge { // Roll rewards. rewards.addAll(this.rollRewards(true)); - } - else { + } else { // Spend the resin and only proceed if the transaction succeeds. if (!player.getResinManager().useResin(resinCost)) return; diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/WorldChallenge.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/WorldChallenge.java index 106bd13e8..127b0e9bc 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/WorldChallenge.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/WorldChallenge.java @@ -26,17 +26,17 @@ public class WorldChallenge { private final List paramList; private final int timeLimit; private final List challengeTriggers; + private final int goal; + private final AtomicInteger score; private boolean progress; private boolean success; private long startedAt; private int finishedTime; - private final int goal; - private final AtomicInteger score; public WorldChallenge(Scene scene, SceneGroup group, int challengeId, int challengeIndex, List paramList, int timeLimit, int goal, - List challengeTriggers){ + List challengeTriggers) { this.scene = scene; this.group = group; this.challengeId = challengeId; @@ -47,20 +47,23 @@ public class WorldChallenge { this.goal = goal; this.score = new AtomicInteger(0); } - public boolean inProgress(){ + + public boolean inProgress() { return this.progress; } - public void onCheckTimeOut(){ - if(!inProgress()){ + + public void onCheckTimeOut() { + if (!inProgress()) { return; } - if(timeLimit <= 0){ + if (timeLimit <= 0) { return; } challengeTriggers.forEach(t -> t.onCheckTimeout(this)); } - public void start(){ - if(inProgress()){ + + public void start() { + if (inProgress()) { Grasscutter.getLogger().info("Could not start a in progress challenge."); return; } @@ -70,20 +73,20 @@ public class WorldChallenge { challengeTriggers.forEach(t -> t.onBegin(this)); } - public void done(){ - if(!inProgress()){ + public void done() { + if (!inProgress()) { return; } finish(true); this.getScene().getScriptManager().callEvent(EventType.EVENT_CHALLENGE_SUCCESS, - // TODO record the time in PARAM2 and used in action - new ScriptArgs().setParam2(finishedTime)); + // TODO record the time in PARAM2 and used in action + new ScriptArgs().setParam2(finishedTime)); challengeTriggers.forEach(t -> t.onFinish(this)); } - public void fail(){ - if(!inProgress()){ + public void fail() { + if (!inProgress()) { return; } finish(false); @@ -91,40 +94,42 @@ public class WorldChallenge { challengeTriggers.forEach(t -> t.onFinish(this)); } - private void finish(boolean success){ + private void finish(boolean success) { this.progress = false; this.success = success; - this.finishedTime = (int)((System.currentTimeMillis() - this.startedAt) / 1000L); + this.finishedTime = (int) ((System.currentTimeMillis() - this.startedAt) / 1000L); getScene().broadcastPacket(new PacketDungeonChallengeFinishNotify(this)); } - public int increaseScore(){ + public int increaseScore() { return score.incrementAndGet(); } - public void onMonsterDeath(EntityMonster monster){ - if(!inProgress()){ + + public void onMonsterDeath(EntityMonster monster) { + if (!inProgress()) { return; } - if(monster.getGroupId() != getGroup().id){ + if (monster.getGroupId() != getGroup().id) { return; } this.challengeTriggers.forEach(t -> t.onMonsterDeath(this, monster)); } - public void onGadgetDeath(EntityGadget gadget){ - if(!inProgress()){ + + public void onGadgetDeath(EntityGadget gadget) { + if (!inProgress()) { return; } - if(gadget.getGroupId() != getGroup().id){ + if (gadget.getGroupId() != getGroup().id) { return; } this.challengeTriggers.forEach(t -> t.onGadgetDeath(this, gadget)); } - public void onGadgetDamage(EntityGadget gadget){ - if(!inProgress()){ + public void onGadgetDamage(EntityGadget gadget) { + if (!inProgress()) { return; } - if(gadget.getGroupId() != getGroup().id){ + if (gadget.getGroupId() != getGroup().id) { return; } this.challengeTriggers.forEach(t -> t.onGadgetDamage(this, gadget)); diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactory.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactory.java index fd1662de6..a99b6d472 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactory.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactory.java @@ -18,9 +18,9 @@ public class ChallengeFactory { challengeFactoryHandlers.add(new KillMonsterChallengeFactoryHandler()); } - public static WorldChallenge getChallenge(int param1, int param2, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group){ - for(var handler : challengeFactoryHandlers){ - if(!handler.isThisType(param1, param2, param3, param4, param5, param6, scene, group)){ + public static WorldChallenge getChallenge(int param1, int param2, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { + for (var handler : challengeFactoryHandlers) { + if (!handler.isThisType(param1, param2, param3, param4, param5, param6, scene, group)) { continue; } return handler.build(param1, param2, param3, param4, param5, param6, scene, group); diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactoryHandler.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactoryHandler.java index a91d55a28..0c30e95f9 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactoryHandler.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/ChallengeFactoryHandler.java @@ -6,5 +6,6 @@ import emu.grasscutter.scripts.data.SceneGroup; public interface ChallengeFactoryHandler { boolean isThisType(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group); + WorldChallenge build(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group); } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonChallengeFactoryHandler.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonChallengeFactoryHandler.java index 8357c9642..e5cee82fa 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonChallengeFactoryHandler.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonChallengeFactoryHandler.java @@ -1,33 +1,33 @@ package emu.grasscutter.game.dungeons.challenge.factory; import emu.grasscutter.game.dungeons.challenge.DungeonChallenge; +import emu.grasscutter.game.dungeons.challenge.WorldChallenge; import emu.grasscutter.game.dungeons.challenge.trigger.InTimeTrigger; import emu.grasscutter.game.dungeons.challenge.trigger.KillMonsterTrigger; import emu.grasscutter.game.props.SceneType; import emu.grasscutter.game.world.Scene; -import emu.grasscutter.game.dungeons.challenge.WorldChallenge; import emu.grasscutter.scripts.data.SceneGroup; import java.util.List; -public class DungeonChallengeFactoryHandler implements ChallengeFactoryHandler{ +public class DungeonChallengeFactoryHandler implements ChallengeFactoryHandler { @Override public boolean isThisType(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { // ActiveChallenge with 1,1000,300,233101003,15,0 return scene.getSceneType() == SceneType.SCENE_DUNGEON - && param4 == group.id; + && param4 == group.id; } @Override public WorldChallenge build(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { var realGroup = scene.getScriptManager().getGroupById(param4); return new DungeonChallenge( - scene, realGroup, - challengeId, // Id - challengeIndex, // Index - List.of(param5, param3), - param3, // Limit - param5, // Goal - List.of(new InTimeTrigger(), new KillMonsterTrigger())); + scene, realGroup, + challengeId, // Id + challengeIndex, // Index + List.of(param5, param3), + param3, // Limit + param5, // Goal + List.of(new InTimeTrigger(), new KillMonsterTrigger())); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonGuardChallengeFactoryHandler.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonGuardChallengeFactoryHandler.java index f29bc7382..96fa48cac 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonGuardChallengeFactoryHandler.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/DungeonGuardChallengeFactoryHandler.java @@ -3,32 +3,30 @@ package emu.grasscutter.game.dungeons.challenge.factory; import emu.grasscutter.game.dungeons.challenge.DungeonChallenge; import emu.grasscutter.game.dungeons.challenge.WorldChallenge; import emu.grasscutter.game.dungeons.challenge.trigger.GuardTrigger; -import emu.grasscutter.game.dungeons.challenge.trigger.InTimeTrigger; -import emu.grasscutter.game.dungeons.challenge.trigger.KillMonsterTrigger; import emu.grasscutter.game.props.SceneType; import emu.grasscutter.game.world.Scene; import emu.grasscutter.scripts.data.SceneGroup; import java.util.List; -public class DungeonGuardChallengeFactoryHandler implements ChallengeFactoryHandler{ +public class DungeonGuardChallengeFactoryHandler implements ChallengeFactoryHandler { @Override public boolean isThisType(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { // ActiveChallenge with 1,188,234101003,12,3030,0 return scene.getSceneType() == SceneType.SCENE_DUNGEON - && param3 == group.id; + && param3 == group.id; } @Override public WorldChallenge build(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { var realGroup = scene.getScriptManager().getGroupById(param3); return new DungeonChallenge( - scene, realGroup, - challengeId, // Id - challengeIndex, // Index - List.of(param4, 0), - 0, // Limit - param4, // Goal - List.of(new GuardTrigger())); + scene, realGroup, + challengeId, // Id + challengeIndex, // Index + List.of(param4, 0), + 0, // Limit + param4, // Goal + List.of(new GuardTrigger())); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillGadgetChallengeFactoryHandler.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillGadgetChallengeFactoryHandler.java index 4e075f2d3..71ccecc33 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillGadgetChallengeFactoryHandler.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillGadgetChallengeFactoryHandler.java @@ -1,7 +1,6 @@ package emu.grasscutter.game.dungeons.challenge.factory; import emu.grasscutter.game.dungeons.challenge.WorldChallenge; -import emu.grasscutter.game.dungeons.challenge.factory.ChallengeFactoryHandler; import emu.grasscutter.game.dungeons.challenge.trigger.InTimeTrigger; import emu.grasscutter.game.dungeons.challenge.trigger.KillGadgetTrigger; import emu.grasscutter.game.world.Scene; @@ -22,13 +21,13 @@ public class KillGadgetChallengeFactoryHandler implements ChallengeFactoryHandle @Override public WorldChallenge build(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { return new WorldChallenge( - scene, group, - challengeId, // Id - challengeIndex, // Index - List.of(param3, param6, 0), - param3, // Limit - param6, // Goal - List.of(new InTimeTrigger(), new KillGadgetTrigger()) - ); + scene, group, + challengeId, // Id + challengeIndex, // Index + List.of(param3, param6, 0), + param3, // Limit + param6, // Goal + List.of(new InTimeTrigger(), new KillGadgetTrigger()) + ); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillMonsterChallengeFactoryHandler.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillMonsterChallengeFactoryHandler.java index b2285ee3e..72bd4b75b 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillMonsterChallengeFactoryHandler.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/factory/KillMonsterChallengeFactoryHandler.java @@ -8,7 +8,7 @@ import emu.grasscutter.scripts.data.SceneGroup; import java.util.List; -public class KillMonsterChallengeFactoryHandler implements ChallengeFactoryHandler{ +public class KillMonsterChallengeFactoryHandler implements ChallengeFactoryHandler { @Override public boolean isThisType(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { // ActiveChallenge with 180,180,45,133108061,1,0 @@ -19,13 +19,13 @@ public class KillMonsterChallengeFactoryHandler implements ChallengeFactoryHandl public WorldChallenge build(int challengeIndex, int challengeId, int param3, int param4, int param5, int param6, Scene scene, SceneGroup group) { var realGroup = scene.getScriptManager().getGroupById(param4); return new WorldChallenge( - scene, realGroup, - challengeId, // Id - challengeIndex, // Index - List.of(param5, param3), - param3, // Limit - param5, // Goal - List.of(new KillMonsterTrigger(), new InTimeTrigger()) - ); + scene, realGroup, + challengeId, // Id + challengeIndex, // Index + List.of(param5, param3), + param3, // Limit + param5, // Goal + List.of(new KillMonsterTrigger(), new InTimeTrigger()) + ); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/ChallengeTrigger.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/ChallengeTrigger.java index b0b174f8d..ebb0f48ee 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/ChallengeTrigger.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/ChallengeTrigger.java @@ -5,10 +5,21 @@ import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.EntityMonster; public abstract class ChallengeTrigger { - public void onBegin(WorldChallenge challenge){} - public void onFinish(WorldChallenge challenge){} - public void onMonsterDeath(WorldChallenge challenge, EntityMonster monster){} - public void onGadgetDeath(WorldChallenge challenge, EntityGadget gadget){} - public void onCheckTimeout(WorldChallenge challenge){} - public void onGadgetDamage(WorldChallenge challenge, EntityGadget gadget){} + public void onBegin(WorldChallenge challenge) { + } + + public void onFinish(WorldChallenge challenge) { + } + + public void onMonsterDeath(WorldChallenge challenge, EntityMonster monster) { + } + + public void onGadgetDeath(WorldChallenge challenge, EntityGadget gadget) { + } + + public void onCheckTimeout(WorldChallenge challenge) { + } + + public void onGadgetDamage(WorldChallenge challenge, EntityGadget gadget) { + } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/GuardTrigger.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/GuardTrigger.java index 4b9bc9e43..c1588a974 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/GuardTrigger.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/GuardTrigger.java @@ -2,11 +2,10 @@ package emu.grasscutter.game.dungeons.challenge.trigger; import emu.grasscutter.game.dungeons.challenge.WorldChallenge; import emu.grasscutter.game.entity.EntityGadget; -import emu.grasscutter.game.entity.EntityMonster; import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.server.packet.send.PacketChallengeDataNotify; -public class GuardTrigger extends KillMonsterTrigger{ +public class GuardTrigger extends KillMonsterTrigger { @Override public void onBegin(WorldChallenge challenge) { super.onBegin(challenge); @@ -20,7 +19,7 @@ public class GuardTrigger extends KillMonsterTrigger{ int percent = (int) (curHp / maxHp); challenge.getScene().broadcastPacket(new PacketChallengeDataNotify(challenge, 2, percent)); - if(percent <= 0){ + if (percent <= 0) { challenge.fail(); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/InTimeTrigger.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/InTimeTrigger.java index abb51c512..5aeb01ee3 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/InTimeTrigger.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/InTimeTrigger.java @@ -2,11 +2,11 @@ package emu.grasscutter.game.dungeons.challenge.trigger; import emu.grasscutter.game.dungeons.challenge.WorldChallenge; -public class InTimeTrigger extends ChallengeTrigger{ +public class InTimeTrigger extends ChallengeTrigger { @Override public void onCheckTimeout(WorldChallenge challenge) { var current = System.currentTimeMillis(); - if(current - challenge.getStartedAt() > challenge.getTimeLimit() * 1000L){ + if (current - challenge.getStartedAt() > challenge.getTimeLimit() * 1000L) { challenge.fail(); } } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillGadgetTrigger.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillGadgetTrigger.java index 87a1997d4..9f8b87ce8 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillGadgetTrigger.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillGadgetTrigger.java @@ -4,7 +4,7 @@ import emu.grasscutter.game.dungeons.challenge.WorldChallenge; import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.server.packet.send.PacketChallengeDataNotify; -public class KillGadgetTrigger extends ChallengeTrigger{ +public class KillGadgetTrigger extends ChallengeTrigger { @Override public void onBegin(WorldChallenge challenge) { challenge.getScene().broadcastPacket(new PacketChallengeDataNotify(challenge, 2, challenge.getScore().get())); @@ -15,7 +15,7 @@ public class KillGadgetTrigger extends ChallengeTrigger{ var newScore = challenge.increaseScore(); challenge.getScene().broadcastPacket(new PacketChallengeDataNotify(challenge, 2, newScore)); - if(newScore >= challenge.getGoal()){ + if (newScore >= challenge.getGoal()) { challenge.done(); } diff --git a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillMonsterTrigger.java b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillMonsterTrigger.java index dcde43049..e3cce9d2c 100644 --- a/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillMonsterTrigger.java +++ b/src/main/java/emu/grasscutter/game/dungeons/challenge/trigger/KillMonsterTrigger.java @@ -4,7 +4,7 @@ import emu.grasscutter.game.dungeons.challenge.WorldChallenge; import emu.grasscutter.game.entity.EntityMonster; import emu.grasscutter.server.packet.send.PacketChallengeDataNotify; -public class KillMonsterTrigger extends ChallengeTrigger{ +public class KillMonsterTrigger extends ChallengeTrigger { @Override public void onBegin(WorldChallenge challenge) { challenge.getScene().broadcastPacket(new PacketChallengeDataNotify(challenge, 1, challenge.getScore().get())); @@ -15,7 +15,7 @@ public class KillMonsterTrigger extends ChallengeTrigger{ var newScore = challenge.increaseScore(); challenge.getScene().broadcastPacket(new PacketChallengeDataNotify(challenge, 1, newScore)); - if(newScore >= challenge.getGoal()){ + if (newScore >= challenge.getGoal()) { challenge.done(); } diff --git a/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java b/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java index 80bc67c73..4dade5362 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java @@ -41,10 +41,13 @@ import lombok.Getter; import lombok.val; public class EntityAvatar extends GameEntity { - @Getter private final Avatar avatar; + @Getter + private final Avatar avatar; - @Getter private PlayerDieType killedType; - @Getter private int killedBy; + @Getter + private PlayerDieType killedType; + @Getter + private int killedBy; public EntityAvatar(Avatar avatar) { this(null, avatar); @@ -54,8 +57,7 @@ public class EntityAvatar extends GameEntity { super(scene); this.avatar = avatar; this.avatar.setCurrentEnergy(); - if (getScene() != null) - { + if (getScene() != null) { this.id = getScene().getWorld().getNextEntityId(EntityIdType.AVATAR); GameItem weapon = getAvatar().getWeapon(); @@ -65,20 +67,29 @@ public class EntityAvatar extends GameEntity { } } - public Player getPlayer() {return this.avatar.getPlayer();} + public Player getPlayer() { + return this.avatar.getPlayer(); + } @Override - public Position getPosition() {return getPlayer().getPosition();} + public Position getPosition() { + return getPlayer().getPosition(); + } @Override - public Position getRotation() {return getPlayer().getRotation();} + public Position getRotation() { + return getPlayer().getRotation(); + } @Override public boolean isAlive() { return this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) > 0f; } - @Override public Int2FloatMap getFightProperties() {return getAvatar().getFightProperties();} + @Override + public Int2FloatMap getFightProperties() { + return getAvatar().getFightProperties(); + } public int getWeaponEntityId() { if (getAvatar().getWeapon() != null) { @@ -141,6 +152,7 @@ public class EntityAvatar extends GameEntity { public void addEnergy(float amount, PropChangeReason reason) { this.addEnergy(amount, reason, false); } + public void addEnergy(float amount, PropChangeReason reason, boolean isFlat) { // Get current and maximum energy for this avatar. val elementType = this.getAvatar().getSkillDepot().getElementType(); @@ -171,20 +183,20 @@ public class EntityAvatar extends GameEntity { val avatar = this.getAvatar(); val player = this.getPlayer(); SceneAvatarInfo.Builder avatarInfo = SceneAvatarInfo.newBuilder() - .setUid(player.getUid()) - .setAvatarId(avatar.getAvatarId()) - .setGuid(avatar.getGuid()) - .setPeerId(player.getPeerId()) - .addAllTalentIdList(avatar.getTalentIdList()) - .setCoreProudSkillLevel(avatar.getCoreProudSkillLevel()) - .putAllSkillLevelMap(avatar.getSkillLevelMap()) - .setSkillDepotId(avatar.getSkillDepotId()) - .addAllInherentProudSkillList(avatar.getProudSkillList()) - .putAllProudSkillExtraLevelMap(avatar.getProudSkillBonusMap()) - .addAllTeamResonanceList(player.getTeamManager().getTeamResonances()) - .setWearingFlycloakId(avatar.getFlyCloak()) - .setCostumeId(avatar.getCostume()) - .setBornTime(avatar.getBornTime()); + .setUid(player.getUid()) + .setAvatarId(avatar.getAvatarId()) + .setGuid(avatar.getGuid()) + .setPeerId(player.getPeerId()) + .addAllTalentIdList(avatar.getTalentIdList()) + .setCoreProudSkillLevel(avatar.getCoreProudSkillLevel()) + .putAllSkillLevelMap(avatar.getSkillLevelMap()) + .setSkillDepotId(avatar.getSkillDepotId()) + .addAllInherentProudSkillList(avatar.getProudSkillList()) + .putAllProudSkillExtraLevelMap(avatar.getProudSkillBonusMap()) + .addAllTeamResonanceList(player.getTeamManager().getTeamResonances()) + .setWearingFlycloakId(avatar.getFlyCloak()) + .setCostumeId(avatar.getCostume()) + .setBornTime(avatar.getBornTime()); for (GameItem item : avatar.getEquips().values()) { if (item.getItemData().getEquipType() == EquipType.EQUIP_WEAPON) { @@ -201,21 +213,21 @@ public class EntityAvatar extends GameEntity { @Override public SceneEntityInfo toProto() { EntityAuthorityInfo authority = EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) - .setBornPos(Vector.newBuilder()) - .build(); + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) + .setBornPos(Vector.newBuilder()) + .build(); SceneEntityInfo.Builder entityInfo = SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_AVATAR) - .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) - .setEntityClientData(EntityClientData.newBuilder()) - .setEntityAuthorityInfo(authority) - .setLastMoveSceneTimeMs(this.getLastMoveSceneTimeMs()) - .setLastMoveReliableSeq(this.getLastMoveReliableSeq()) - .setLifeState(this.getLifeState().getValue()); + .setEntityId(getId()) + .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_AVATAR) + .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) + .setEntityClientData(EntityClientData.newBuilder()) + .setEntityAuthorityInfo(authority) + .setLastMoveSceneTimeMs(this.getLastMoveSceneTimeMs()) + .setLastMoveReliableSeq(this.getLastMoveReliableSeq()) + .setLifeState(this.getLifeState().getValue()); if (this.getScene() != null) { entityInfo.setMotionInfo(this.getMotionInfo()); @@ -224,9 +236,9 @@ public class EntityAvatar extends GameEntity { this.addAllFightPropsToEntityInfo(entityInfo); PropPair pair = PropPair.newBuilder() - .setType(PlayerProperty.PROP_LEVEL.getId()) - .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, getAvatar().getLevel())) - .build(); + .setType(PlayerProperty.PROP_LEVEL.getId()) + .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, getAvatar().getLevel())) + .build(); entityInfo.addPropList(pair); entityInfo.setAvatar(this.getSceneAvatarInfo()); @@ -243,29 +255,29 @@ public class EntityAvatar extends GameEntity { if (data.getAbilities() != null) { for (int id : data.getAbilities()) { AbilityEmbryo emb = AbilityEmbryo.newBuilder() - .setAbilityId(++embryoId) - .setAbilityNameHash(id) - .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) - .build(); + .setAbilityId(++embryoId) + .setAbilityNameHash(id) + .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) + .build(); abilityControlBlock.addAbilityEmbryoList(emb); } } // Add default abilities for (int id : GameConstants.DEFAULT_ABILITY_HASHES) { AbilityEmbryo emb = AbilityEmbryo.newBuilder() - .setAbilityId(++embryoId) - .setAbilityNameHash(id) - .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) - .build(); + .setAbilityId(++embryoId) + .setAbilityNameHash(id) + .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) + .build(); abilityControlBlock.addAbilityEmbryoList(emb); } // Add team resonances for (int id : this.getPlayer().getTeamManager().getTeamResonancesConfig()) { AbilityEmbryo emb = AbilityEmbryo.newBuilder() - .setAbilityId(++embryoId) - .setAbilityNameHash(id) - .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) - .build(); + .setAbilityId(++embryoId) + .setAbilityNameHash(id) + .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) + .build(); abilityControlBlock.addAbilityEmbryoList(emb); } // Add skill depot abilities @@ -273,10 +285,10 @@ public class EntityAvatar extends GameEntity { if (skillDepot != null && skillDepot.getAbilities() != null) { for (int id : skillDepot.getAbilities()) { AbilityEmbryo emb = AbilityEmbryo.newBuilder() - .setAbilityId(++embryoId) - .setAbilityNameHash(id) - .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) - .build(); + .setAbilityId(++embryoId) + .setAbilityNameHash(id) + .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) + .build(); abilityControlBlock.addAbilityEmbryoList(emb); } } @@ -284,10 +296,10 @@ public class EntityAvatar extends GameEntity { if (this.getAvatar().getExtraAbilityEmbryos().size() > 0) { for (String skill : this.getAvatar().getExtraAbilityEmbryos()) { AbilityEmbryo emb = AbilityEmbryo.newBuilder() - .setAbilityId(++embryoId) - .setAbilityNameHash(Utils.abilityHash(skill)) - .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) - .build(); + .setAbilityId(++embryoId) + .setAbilityNameHash(Utils.abilityHash(skill)) + .setAbilityOverrideNameHash(GameConstants.DEFAULT_ABILITY_NAME) + .build(); abilityControlBlock.addAbilityEmbryoList(emb); } } @@ -299,15 +311,18 @@ public class EntityAvatar extends GameEntity { /** * Move this entity to a new position. * Additionally invoke player move event. + * * @param newPosition The new position. - * @param rotation The new rotation. + * @param rotation The new rotation. */ - @Override public void move(Position newPosition, Position rotation) { + @Override + public void move(Position newPosition, Position rotation) { // Invoke player move event. PlayerMoveEvent event = new PlayerMoveEvent( this.getPlayer(), PlayerMoveEvent.MoveType.PLAYER, this.getPosition(), newPosition - ); event.call(); + ); + event.call(); // Set position and rotation. super.move(event.getDestination(), rotation); diff --git a/src/main/java/emu/grasscutter/game/entity/EntityClientGadget.java b/src/main/java/emu/grasscutter/game/entity/EntityClientGadget.java index cd23e8e80..fcb933531 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityClientGadget.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityClientGadget.java @@ -23,18 +23,25 @@ import it.unimi.dsi.fastutil.ints.Int2FloatMap; import lombok.Getter; public class EntityClientGadget extends EntityBaseGadget { - @Getter private final Player owner; + @Getter + private final Player owner; @Getter(onMethod_ = @Override) - private int gadgetId; + private final int gadgetId; - @Getter private int campId; - @Getter private int campType; - @Getter private int ownerEntityId; - @Getter private int targetEntityId; - @Getter private boolean asyncLoad; + @Getter + private final int campId; + @Getter + private final int campType; + @Getter + private final int ownerEntityId; + @Getter + private final int targetEntityId; + @Getter + private final boolean asyncLoad; - @Getter private int originalOwnerEntityId; + @Getter + private final int originalOwnerEntityId; public EntityClientGadget(Scene scene, Player player, EvtCreateGadgetNotify notify) { super(scene, new Position(notify.getInitPos()), new Position(notify.getInitEulerAngles())); @@ -50,8 +57,7 @@ public class EntityClientGadget extends EntityBaseGadget { GameEntity owner = scene.getEntityById(this.ownerEntityId); if (owner instanceof EntityClientGadget ownerGadget) { this.originalOwnerEntityId = ownerGadget.getOriginalOwnerEntityId(); - } - else { + } else { this.originalOwnerEntityId = this.ownerEntityId; } } @@ -61,47 +67,50 @@ public class EntityClientGadget extends EntityBaseGadget { super.onDeath(killerId); // Invoke super class's onDeath() method. } - @Override public Int2FloatMap getFightProperties() {return null;} + @Override + public Int2FloatMap getFightProperties() { + return null; + } @Override public SceneEntityInfo toProto() { EntityAuthorityInfo authority = EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) - .setBornPos(Vector.newBuilder()) - .build(); + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) + .setBornPos(Vector.newBuilder()) + .build(); SceneEntityInfo.Builder entityInfo = SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) - .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) - .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) - .setEntityClientData(EntityClientData.newBuilder()) - .setEntityAuthorityInfo(authority) - .setLifeState(1); + .setEntityId(getId()) + .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) + .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) + .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) + .setEntityClientData(EntityClientData.newBuilder()) + .setEntityAuthorityInfo(authority) + .setLifeState(1); PropPair pair = PropPair.newBuilder() - .setType(PlayerProperty.PROP_LEVEL.getId()) - .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 1)) - .build(); + .setType(PlayerProperty.PROP_LEVEL.getId()) + .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 1)) + .build(); entityInfo.addPropList(pair); ClientGadgetInfoOuterClass.ClientGadgetInfo clientGadget = ClientGadgetInfoOuterClass.ClientGadgetInfo.newBuilder() - .setCampId(this.getCampId()) - .setCampType(this.getCampType()) - .setOwnerEntityId(this.getOwnerEntityId()) - .setTargetEntityId(this.getTargetEntityId()) - .setAsyncLoad(this.isAsyncLoad()) - .build(); + .setCampId(this.getCampId()) + .setCampType(this.getCampType()) + .setOwnerEntityId(this.getOwnerEntityId()) + .setTargetEntityId(this.getTargetEntityId()) + .setAsyncLoad(this.isAsyncLoad()) + .build(); SceneGadgetInfo.Builder gadgetInfo = SceneGadgetInfo.newBuilder() - .setGadgetId(this.getGadgetId()) - .setOwnerEntityId(this.getOwnerEntityId()) - .setIsEnableInteract(true) - .setClientGadget(clientGadget) - .setPropOwnerEntityId(this.getOwnerEntityId()) - .setAuthorityPeerId(this.getOwner().getPeerId()); + .setGadgetId(this.getGadgetId()) + .setOwnerEntityId(this.getOwnerEntityId()) + .setIsEnableInteract(true) + .setClientGadget(clientGadget) + .setPropOwnerEntityId(this.getOwnerEntityId()) + .setAuthorityPeerId(this.getOwner().getPeerId()); entityInfo.setGadget(gadgetInfo); diff --git a/src/main/java/emu/grasscutter/game/entity/EntityGadget.java b/src/main/java/emu/grasscutter/game/entity/EntityGadget.java index 8c421fae9..9ab2c85d6 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityGadget.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityGadget.java @@ -33,24 +33,32 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -import java.util.Optional; - import javax.annotation.Nullable; +import java.util.Optional; @ToString(callSuper = true) public class EntityGadget extends EntityBaseGadget { - @Getter private final GadgetData gadgetData; - @Getter(onMethod_ = @Override) @Setter - private int gadgetId; - - @Getter @Setter private int state; - @Getter @Setter private int pointType; - @Getter private GadgetContent content; + @Getter + private final GadgetData gadgetData; @Getter(onMethod_ = @Override, lazy = true) private final Int2FloatMap fightProperties = new Int2FloatOpenHashMap(); - @Getter @Setter private SceneGadget metaGadget; - @Nullable @Getter - private ConfigGadget configGadget; + @Getter(onMethod_ = @Override) + @Setter + private int gadgetId; + @Getter + @Setter + private int state; + @Getter + @Setter + private int pointType; + @Getter + private GadgetContent content; + @Getter + @Setter + private SceneGadget metaGadget; + @Nullable + @Getter + private final ConfigGadget configGadget; public EntityGadget(Scene scene, int gadgetId, Position pos) { this(scene, gadgetId, pos, null, null); @@ -133,25 +141,25 @@ public class EntityGadget extends EntityBaseGadget { @Override public SceneEntityInfo toProto() { EntityAuthorityInfo authority = EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) - .setBornPos(Vector.newBuilder()) - .build(); + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) + .setBornPos(Vector.newBuilder()) + .build(); SceneEntityInfo.Builder entityInfo = SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) - .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) - .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) - .setEntityClientData(EntityClientData.newBuilder()) - .setEntityAuthorityInfo(authority) - .setLifeState(1); + .setEntityId(getId()) + .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) + .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) + .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) + .setEntityClientData(EntityClientData.newBuilder()) + .setEntityAuthorityInfo(authority) + .setLifeState(1); PropPair pair = PropPair.newBuilder() - .setType(PlayerProperty.PROP_LEVEL.getId()) - .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 1)) - .build(); + .setType(PlayerProperty.PROP_LEVEL.getId()) + .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 1)) + .build(); entityInfo.addPropList(pair); // We do not use the getter to null check because the getter will create a fight prop map if it is null @@ -160,12 +168,12 @@ public class EntityGadget extends EntityBaseGadget { } SceneGadgetInfo.Builder gadgetInfo = SceneGadgetInfo.newBuilder() - .setGadgetId(this.getGadgetId()) - .setGroupId(this.getGroupId()) - .setConfigId(this.getConfigId()) - .setGadgetState(this.getState()) - .setIsEnableInteract(true) - .setAuthorityPeerId(this.getScene().getWorld().getHostPeerId()); + .setGadgetId(this.getGadgetId()) + .setGroupId(this.getGroupId()) + .setConfigId(this.getConfigId()) + .setGadgetState(this.getState()) + .setIsEnableInteract(true) + .setAuthorityPeerId(this.getScene().getWorld().getHostPeerId()); if (this.metaGadget != null) { gadgetInfo.setDraftId(this.metaGadget.draft_id); diff --git a/src/main/java/emu/grasscutter/game/entity/EntityItem.java b/src/main/java/emu/grasscutter/game/entity/EntityItem.java index cd3d81d60..4c403adcd 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityItem.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityItem.java @@ -29,9 +29,12 @@ import it.unimi.dsi.fastutil.ints.Int2FloatMap; import lombok.Getter; public class EntityItem extends EntityBaseGadget { - @Getter private final GameItem item; - @Getter private final long guid; - @Getter private final boolean share; + @Getter + private final GameItem item; + @Getter + private final long guid; + @Getter + private final boolean share; public EntityItem(Scene scene, Player player, ItemData itemData, Position pos, int count) { this(scene, player, itemData, pos, count, true); @@ -61,7 +64,10 @@ public class EntityItem extends EntityBaseGadget { return this.getItemData().getGadgetId(); } - @Override public Int2FloatMap getFightProperties() {return null;} + @Override + public Int2FloatMap getFightProperties() { + return null; + } @Override public void onInteract(Player player, GadgetInteractReq interactReq) { @@ -90,33 +96,33 @@ public class EntityItem extends EntityBaseGadget { @Override public SceneEntityInfo toProto() { EntityAuthorityInfo authority = EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) - .setBornPos(Vector.newBuilder()) - .build(); + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(Vector.newBuilder())) + .setBornPos(Vector.newBuilder()) + .build(); SceneEntityInfo.Builder entityInfo = SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) - .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) - .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) - .setEntityClientData(EntityClientData.newBuilder()) - .setEntityAuthorityInfo(authority) - .setLifeState(1); + .setEntityId(getId()) + .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) + .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) + .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) + .setEntityClientData(EntityClientData.newBuilder()) + .setEntityAuthorityInfo(authority) + .setLifeState(1); PropPair pair = PropPair.newBuilder() - .setType(PlayerProperty.PROP_LEVEL.getId()) - .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 1)) - .build(); + .setType(PlayerProperty.PROP_LEVEL.getId()) + .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 1)) + .build(); entityInfo.addPropList(pair); SceneGadgetInfo.Builder gadgetInfo = SceneGadgetInfo.newBuilder() - .setGadgetId(this.getItemData().getGadgetId()) - .setTrifleItem(this.getItem().toProto()) - .setBornType(GadgetBornType.GADGET_BORN_TYPE_IN_AIR) - .setAuthorityPeerId(this.getWorld().getHostPeerId()) - .setIsEnableInteract(true); + .setGadgetId(this.getItemData().getGadgetId()) + .setTrifleItem(this.getItem().toProto()) + .setBornType(GadgetBornType.GADGET_BORN_TYPE_IN_AIR) + .setAuthorityPeerId(this.getWorld().getHostPeerId()) + .setIsEnableInteract(true); entityInfo.setGadget(gadgetInfo); diff --git a/src/main/java/emu/grasscutter/game/entity/EntityMonster.java b/src/main/java/emu/grasscutter/game/entity/EntityMonster.java index 99a5e0902..d87823432 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityMonster.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityMonster.java @@ -1,18 +1,12 @@ package emu.grasscutter.game.entity; -import java.util.Optional; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.common.PropGrowCurve; import emu.grasscutter.data.excels.EnvAnimalGatherConfigData; import emu.grasscutter.data.excels.MonsterCurveData; import emu.grasscutter.data.excels.MonsterData; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.props.ActionReason; -import emu.grasscutter.game.props.EntityIdType; -import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.game.props.PlayerProperty; -import emu.grasscutter.game.props.WatcherTriggerType; +import emu.grasscutter.game.props.*; import emu.grasscutter.game.world.Scene; import emu.grasscutter.net.proto.AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo; import emu.grasscutter.net.proto.AnimatorParameterValueInfoPairOuterClass.AnimatorParameterValueInfoPair; @@ -35,8 +29,11 @@ import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; import lombok.Getter; import lombok.Setter; +import java.util.Optional; + public class EntityMonster extends GameEntity { - @Getter private final MonsterData monsterData; + @Getter + private final MonsterData monsterData; @Getter(onMethod_ = @Override) private final Int2FloatOpenHashMap fightProperties; @@ -44,11 +41,17 @@ public class EntityMonster extends GameEntity { private final Position position; @Getter(onMethod_ = @Override) private final Position rotation; - @Getter private final Position bornPos; - @Getter private final int level; + @Getter + private final Position bornPos; + @Getter + private final int level; private int weaponEntityId; - @Getter @Setter private int poseId; - @Getter @Setter private int aiId = -1; + @Getter + @Setter + private int poseId; + @Getter + @Setter + private int aiId = -1; public EntityMonster(Scene scene, MonsterData monsterData, Position pos, int level) { super(scene); @@ -173,20 +176,20 @@ public class EntityMonster extends GameEntity { @Override public SceneEntityInfo toProto() { var authority = EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(this.getBornPos().toProto())) - .setBornPos(this.getBornPos().toProto()) - .build(); + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(this.getBornPos().toProto())) + .setBornPos(this.getBornPos().toProto()) + .build(); var entityInfo = SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_MONSTER) - .setMotionInfo(this.getMotionInfo()) - .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) - .setEntityClientData(EntityClientData.newBuilder()) - .setEntityAuthorityInfo(authority) - .setLifeState(this.getLifeState().getValue()); + .setEntityId(getId()) + .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_MONSTER) + .setMotionInfo(this.getMotionInfo()) + .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) + .setEntityClientData(EntityClientData.newBuilder()) + .setEntityAuthorityInfo(authority) + .setLifeState(this.getLifeState().getValue()); this.addAllFightPropsToEntityInfo(entityInfo); @@ -196,15 +199,15 @@ public class EntityMonster extends GameEntity { .build()); var monsterInfo = SceneMonsterInfo.newBuilder() - .setMonsterId(getMonsterId()) - .setGroupId(this.getGroupId()) - .setConfigId(this.getConfigId()) - .addAllAffixList(getMonsterData().getAffix()) - .setAuthorityPeerId(getWorld().getHostPeerId()) - .setPoseId(this.getPoseId()) - .setBlockId(3001) - .setBornType(MonsterBornType.MONSTER_BORN_TYPE_DEFAULT) - .setSpecialNameId(40); + .setMonsterId(getMonsterId()) + .setGroupId(this.getGroupId()) + .setConfigId(this.getConfigId()) + .addAllAffixList(getMonsterData().getAffix()) + .setAuthorityPeerId(getWorld().getHostPeerId()) + .setPoseId(this.getPoseId()) + .setBlockId(3001) + .setBornType(MonsterBornType.MONSTER_BORN_TYPE_DEFAULT) + .setSpecialNameId(40); if (getMonsterData().getDescribeData() != null) { monsterInfo.setTitleId(getMonsterData().getDescribeData().getTitleID()); @@ -212,14 +215,14 @@ public class EntityMonster extends GameEntity { if (this.getMonsterWeaponId() > 0) { SceneWeaponInfo weaponInfo = SceneWeaponInfo.newBuilder() - .setEntityId(this.weaponEntityId) - .setGadgetId(this.getMonsterWeaponId()) - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .build(); + .setEntityId(this.weaponEntityId) + .setGadgetId(this.getMonsterWeaponId()) + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .build(); monsterInfo.addWeaponList(weaponInfo); } - if (this.aiId!=-1) { + if (this.aiId != -1) { monsterInfo.setAiConfigId(aiId); } diff --git a/src/main/java/emu/grasscutter/game/entity/EntityNPC.java b/src/main/java/emu/grasscutter/game/entity/EntityNPC.java index d9442cd8f..315d5c6c6 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityNPC.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityNPC.java @@ -8,13 +8,14 @@ import emu.grasscutter.utils.Position; import it.unimi.dsi.fastutil.ints.Int2FloatMap; import lombok.Getter; -public class EntityNPC extends GameEntity{ +public class EntityNPC extends GameEntity { @Getter(onMethod_ = @Override) private final Position position; @Getter(onMethod_ = @Override) private final Position rotation; private final SceneNPC metaNpc; - @Getter private final int suiteId; + @Getter + private final int suiteId; public EntityNPC(Scene scene, SceneNPC metaNPC, int blockId, int suiteId) { super(scene); @@ -29,37 +30,40 @@ public class EntityNPC extends GameEntity{ } - @Override public Int2FloatMap getFightProperties() {return null;} + @Override + public Int2FloatMap getFightProperties() { + return null; + } @Override public SceneEntityInfoOuterClass.SceneEntityInfo toProto() { - EntityAuthorityInfoOuterClass.EntityAuthorityInfo authority = EntityAuthorityInfoOuterClass.EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfoOuterClass.EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfoOuterClass.SceneEntityAiInfo.newBuilder() - .setIsAiOpen(true) - .setBornPos(getPosition().toProto())) - .setBornPos(getPosition().toProto()) - .build(); + EntityAuthorityInfoOuterClass.EntityAuthorityInfo authority = EntityAuthorityInfoOuterClass.EntityAuthorityInfo.newBuilder() + .setAbilityInfo(AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfoOuterClass.EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfoOuterClass.SceneEntityAiInfo.newBuilder() + .setIsAiOpen(true) + .setBornPos(getPosition().toProto())) + .setBornPos(getPosition().toProto()) + .build(); SceneEntityInfoOuterClass.SceneEntityInfo.Builder entityInfo = SceneEntityInfoOuterClass.SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityTypeOuterClass.ProtEntityType.PROT_ENTITY_TYPE_NPC) - .setMotionInfo(MotionInfoOuterClass.MotionInfo.newBuilder() - .setPos(getPosition().toProto()) - .setRot(getRotation().toProto()) - .setSpeed(VectorOuterClass.Vector.newBuilder())) - .addAnimatorParaList(AnimatorParameterValueInfoPairOuterClass.AnimatorParameterValueInfoPair.newBuilder()) - .setEntityClientData(EntityClientDataOuterClass.EntityClientData.newBuilder()) - .setEntityAuthorityInfo(authority) - .setLifeState(1); + .setEntityId(getId()) + .setEntityType(ProtEntityTypeOuterClass.ProtEntityType.PROT_ENTITY_TYPE_NPC) + .setMotionInfo(MotionInfoOuterClass.MotionInfo.newBuilder() + .setPos(getPosition().toProto()) + .setRot(getRotation().toProto()) + .setSpeed(VectorOuterClass.Vector.newBuilder())) + .addAnimatorParaList(AnimatorParameterValueInfoPairOuterClass.AnimatorParameterValueInfoPair.newBuilder()) + .setEntityClientData(EntityClientDataOuterClass.EntityClientData.newBuilder()) + .setEntityAuthorityInfo(authority) + .setLifeState(1); entityInfo.setNpc(SceneNpcInfoOuterClass.SceneNpcInfo.newBuilder() - .setNpcId(metaNpc.npc_id) - .setBlockId(getBlockId()) - .build()); + .setNpcId(metaNpc.npc_id) + .setBlockId(getBlockId()) + .build()); return entityInfo.build(); } diff --git a/src/main/java/emu/grasscutter/game/entity/EntityRegion.java b/src/main/java/emu/grasscutter/game/entity/EntityRegion.java index fef33ac86..ef4e55bdd 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityRegion.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityRegion.java @@ -12,12 +12,12 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @Getter -public class EntityRegion extends GameEntity{ +public class EntityRegion extends GameEntity { private final Position position; - private boolean hasNewEntities; - private boolean entityLeave; private final Set entities; // Ids of entities inside this region private final SceneRegion metaRegion; + private boolean hasNewEntities; + private boolean entityLeave; public EntityRegion(Scene scene, SceneRegion region) { super(scene); @@ -55,13 +55,29 @@ public class EntityRegion extends GameEntity{ this.getEntities().remove(entity.getId()); this.entityLeave = true; } - public boolean entityLeave() {return this.entityLeave;} - public void resetEntityLeave() {this.entityLeave = false;} - @Override public Int2FloatMap getFightProperties() {return null;} - @Override public Position getPosition() {return position;} + public boolean entityLeave() { + return this.entityLeave; + } - @Override public Position getRotation() {return null;} + public void resetEntityLeave() { + this.entityLeave = false; + } + + @Override + public Int2FloatMap getFightProperties() { + return null; + } + + @Override + public Position getPosition() { + return position; + } + + @Override + public Position getRotation() { + return null; + } @Override public SceneEntityInfoOuterClass.SceneEntityInfo toProto() { diff --git a/src/main/java/emu/grasscutter/game/entity/EntitySolarIsotomaClientGadget.java b/src/main/java/emu/grasscutter/game/entity/EntitySolarIsotomaClientGadget.java index def54fa76..bc039a6a3 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntitySolarIsotomaClientGadget.java +++ b/src/main/java/emu/grasscutter/game/entity/EntitySolarIsotomaClientGadget.java @@ -10,7 +10,8 @@ import lombok.Getter; public class EntitySolarIsotomaClientGadget extends EntityClientGadget { public static final int GADGET_ID = 41038001; public static final int ELEVATOR_GADGET_ID = 41038002; - @Getter private EntityPlatform platformGadget; + @Getter + private EntityPlatform platformGadget; public EntitySolarIsotomaClientGadget(Scene scene, Player player, EvtCreateGadgetNotifyOuterClass.EvtCreateGadgetNotify notify) { super(scene, player, notify); diff --git a/src/main/java/emu/grasscutter/game/entity/EntityVehicle.java b/src/main/java/emu/grasscutter/game/entity/EntityVehicle.java index ad2ce9c5d..07bd4a79b 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityVehicle.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityVehicle.java @@ -34,16 +34,24 @@ import java.util.List; public class EntityVehicle extends EntityBaseGadget { - @Getter private final Player owner; + @Getter + private final Player owner; @Getter(onMethod_ = @Override) private final Int2FloatMap fightProperties; - @Getter private final int pointId; - @Getter private final int gadgetId; + @Getter + private final int pointId; + @Getter + private final int gadgetId; - @Getter @Setter private float curStamina; - @Getter private List vehicleMembers; - @Nullable @Getter private ConfigGadget configGadget; + @Getter + @Setter + private float curStamina; + @Getter + private final List vehicleMembers; + @Nullable + @Getter + private ConfigGadget configGadget; public EntityVehicle(Scene scene, Player player, int gadgetId, int pointId, Position pos, Position rot) { super(scene, pos, rot); @@ -73,36 +81,36 @@ public class EntityVehicle extends EntityBaseGadget { public SceneEntityInfo toProto() { VehicleInfo vehicle = VehicleInfo.newBuilder() - .setOwnerUid(this.owner.getUid()) - .setCurStamina(getCurStamina()) - .build(); + .setOwnerUid(this.owner.getUid()) + .setCurStamina(getCurStamina()) + .build(); EntityAuthorityInfo authority = EntityAuthorityInfo.newBuilder() - .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) - .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(getPosition().toProto())) - .setBornPos(getPosition().toProto()) - .build(); + .setAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setRendererChangedInfo(EntityRendererChangedInfo.newBuilder()) + .setAiInfo(SceneEntityAiInfo.newBuilder().setIsAiOpen(true).setBornPos(getPosition().toProto())) + .setBornPos(getPosition().toProto()) + .build(); SceneGadgetInfo.Builder gadgetInfo = SceneGadgetInfo.newBuilder() - .setGadgetId(this.getGadgetId()) - .setAuthorityPeerId(this.getOwner().getPeerId()) - .setIsEnableInteract(true) - .setVehicleInfo(vehicle); + .setGadgetId(this.getGadgetId()) + .setAuthorityPeerId(this.getOwner().getPeerId()) + .setIsEnableInteract(true) + .setVehicleInfo(vehicle); SceneEntityInfo.Builder entityInfo = SceneEntityInfo.newBuilder() - .setEntityId(getId()) - .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) - .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) - .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) - .setGadget(gadgetInfo) - .setEntityAuthorityInfo(authority) - .setLifeState(1); + .setEntityId(getId()) + .setEntityType(ProtEntityType.PROT_ENTITY_TYPE_GADGET) + .setMotionInfo(MotionInfo.newBuilder().setPos(getPosition().toProto()).setRot(getRotation().toProto()).setSpeed(Vector.newBuilder())) + .addAnimatorParaList(AnimatorParameterValueInfoPair.newBuilder()) + .setGadget(gadgetInfo) + .setEntityAuthorityInfo(authority) + .setLifeState(1); PropPair pair = PropPair.newBuilder() - .setType(PlayerProperty.PROP_LEVEL.getId()) - .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 47)) - .build(); + .setType(PlayerProperty.PROP_LEVEL.getId()) + .setPropValue(ProtoHelper.newPropValue(PlayerProperty.PROP_LEVEL, 47)) + .build(); this.addAllFightPropsToEntityInfo(entityInfo); entityInfo.addPropList(pair); diff --git a/src/main/java/emu/grasscutter/game/entity/GameEntity.java b/src/main/java/emu/grasscutter/game/entity/GameEntity.java index aed62ef35..11aecd754 100644 --- a/src/main/java/emu/grasscutter/game/entity/GameEntity.java +++ b/src/main/java/emu/grasscutter/game/entity/GameEntity.java @@ -25,19 +25,37 @@ import lombok.Getter; import lombok.Setter; public abstract class GameEntity { - @Getter protected int id; - @Getter private final Scene scene; - @Getter @Setter private SpawnDataEntry spawnEntry; + @Getter + private final Scene scene; + @Getter + protected int id; + @Getter + @Setter + private SpawnDataEntry spawnEntry; - @Getter @Setter private int blockId; - @Getter @Setter private int configId; - @Getter @Setter private int groupId; + @Getter + @Setter + private int blockId; + @Getter + @Setter + private int configId; + @Getter + @Setter + private int groupId; - @Getter @Setter private MotionState motionState; - @Getter @Setter private int lastMoveSceneTimeMs; - @Getter @Setter private int lastMoveReliableSeq; + @Getter + @Setter + private MotionState motionState; + @Getter + @Setter + private int lastMoveSceneTimeMs; + @Getter + @Setter + private int lastMoveReliableSeq; - @Getter @Setter private boolean lockHP; + @Getter + @Setter + private boolean lockHP; // Abilities private Object2FloatMap metaOverrideMap; @@ -113,11 +131,11 @@ public abstract class GameEntity { protected MotionInfo getMotionInfo() { MotionInfo proto = MotionInfo.newBuilder() - .setPos(this.getPosition().toProto()) - .setRot(this.getRotation().toProto()) - .setSpeed(Vector.newBuilder()) - .setState(this.getMotionState()) - .build(); + .setPos(this.getPosition().toProto()) + .setRot(this.getRotation().toProto()) + .setSpeed(Vector.newBuilder()) + .setState(this.getMotionState()) + .build(); return proto; } @@ -183,6 +201,7 @@ public abstract class GameEntity { /** * Move this entity to a new position. + * * @param position The new position. * @param rotation The new rotation. */ @@ -194,7 +213,8 @@ public abstract class GameEntity { /** * Called when a player interacts with this entity - * @param player Player that is interacting with this entity + * + * @param player Player that is interacting with this entity * @param interactReq Interact request protobuf data */ public void onInteract(Player player, GadgetInteractReq interactReq) { @@ -214,6 +234,7 @@ public abstract class GameEntity { /** * Called when this entity dies + * * @param killerId Entity id of the entity that killed this entity */ public void onDeath(int killerId) { diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetChest.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetChest.java index 6cbc4b644..ca016f0d9 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetChest.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetChest.java @@ -4,7 +4,6 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.gadget.chest.BossChestInteractHandler; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.props.LifeState; import emu.grasscutter.net.proto.BossChestInfoOuterClass.BossChestInfo; import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; import emu.grasscutter.net.proto.InterOpTypeOuterClass.InterOpType; @@ -14,7 +13,6 @@ import emu.grasscutter.net.proto.ResinCostTypeOuterClass; import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo; import emu.grasscutter.scripts.constants.ScriptGadgetState; import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp; -import emu.grasscutter.server.packet.send.PacketLifeStateChangeNotify; public class GadgetChest extends GadgetContent { @@ -33,12 +31,12 @@ public class GadgetChest extends GadgetContent { if (req.getOpType() == InterOpType.INTER_OP_TYPE_START && handler.isTwoStep()) { player.sendPacket(new PacketGadgetInteractRsp(getGadget(), InteractType.INTERACT_TYPE_OPEN_CHEST, InterOpType.INTER_OP_TYPE_START)); return false; - }else { + } else { boolean success; if (handler instanceof BossChestInteractHandler bossChestInteractHandler) { success = bossChestInteractHandler.onInteract(this, player, - req.getResinCostType()== ResinCostTypeOuterClass.ResinCostType.RESIN_COST_TYPE_CONDENSE); - }else { + req.getResinCostType() == ResinCostTypeOuterClass.ResinCostType.RESIN_COST_TYPE_CONDENSE); + } else { success = handler.onInteract(this, player); } if (!success) { @@ -62,11 +60,11 @@ public class GadgetChest extends GadgetContent { var players = getGadget().getScene().getPlayers().stream().map(Player::getUid).toList(); gadgetInfo.setBossChest(BossChestInfo.newBuilder() - .setMonsterConfigId(bossChest.monster_config_id) - .setResin(bossChest.resin) - .addAllQualifyUidList(players) - .addAllRemainUidList(players) - .build()); + .setMonsterConfigId(bossChest.monster_config_id) + .setResin(bossChest.resin) + .addAllQualifyUidList(players) + .addAllRemainUidList(players) + .build()); } } diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetContent.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetContent.java index 54805cb52..091957832 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetContent.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetContent.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo; public abstract class GadgetContent { - private final EntityGadget gadget; + private final EntityGadget gadget; - public GadgetContent(EntityGadget gadget) { - this.gadget = gadget; - } + public GadgetContent(EntityGadget gadget) { + this.gadget = gadget; + } - public EntityGadget getGadget() { - return gadget; - } - - public abstract boolean onInteract(Player player, GadgetInteractReq req); - - public abstract void onBuildProto(SceneGadgetInfo.Builder gadgetInfo); + public EntityGadget getGadget() { + return gadget; + } + + public abstract boolean onInteract(Player player, GadgetInteractReq req); + + public abstract void onBuildProto(SceneGadgetInfo.Builder gadgetInfo); } diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherObject.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherObject.java index 17e724c23..82dc14efc 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherObject.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherObject.java @@ -8,9 +8,9 @@ import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.world.Scene; +import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; import emu.grasscutter.net.proto.GatherGadgetInfoOuterClass.GatherGadgetInfo; import emu.grasscutter.net.proto.InteractTypeOuterClass.InteractType; -import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo; import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp; import emu.grasscutter.utils.Utils; @@ -52,25 +52,25 @@ public class GadgetGatherObject extends GadgetContent { public void onBuildProto(SceneGadgetInfo.Builder gadgetInfo) { GatherGadgetInfo gatherGadgetInfo = GatherGadgetInfo.newBuilder() - .setItemId(this.getItemId()) - .setIsForbidGuest(this.isForbidGuest()) - .build(); + .setItemId(this.getItemId()) + .setIsForbidGuest(this.isForbidGuest()) + .build(); gadgetInfo.setGatherGadget(gatherGadgetInfo); } public void dropItems(Player player) { Scene scene = getGadget().getScene(); - int times = Utils.randomRange(1,2); + int times = Utils.randomRange(1, 2); - for (int i = 0 ; i < times ; i++) { + for (int i = 0; i < times; i++) { EntityItem item = new EntityItem( - scene, - player, - GameData.getItemDataMap().get(itemId), - getGadget().getPosition().nearby2d(1f).addY(2f), - 1, - true); + scene, + player, + GameData.getItemDataMap().get(itemId), + getGadget().getPosition().nearby2d(1f).addY(2f), + 1, + true); scene.addEntity(item); } diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherPoint.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherPoint.java index c024b0d02..dd4c14b98 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherPoint.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetGatherPoint.java @@ -8,13 +8,13 @@ import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.world.Scene; -import emu.grasscutter.net.proto.GatherGadgetInfoOuterClass.GatherGadgetInfo; import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; +import emu.grasscutter.net.proto.GatherGadgetInfoOuterClass.GatherGadgetInfo; import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo; import emu.grasscutter.utils.Utils; public class GadgetGatherPoint extends GadgetContent { - private int itemId; + private final int itemId; private boolean isForbidGuest; public GadgetGatherPoint(EntityGadget gadget) { @@ -47,28 +47,28 @@ public class GadgetGatherPoint extends GadgetContent { public void onBuildProto(SceneGadgetInfo.Builder gadgetInfo) { GatherGadgetInfo gatherGadgetInfo = GatherGadgetInfo.newBuilder() - .setItemId(this.getItemId()) - .setIsForbidGuest(this.isForbidGuest()) - .build(); + .setItemId(this.getItemId()) + .setIsForbidGuest(this.isForbidGuest()) + .build(); gadgetInfo.setGatherGadget(gatherGadgetInfo); } public void dropItems(Player player) { Scene scene = getGadget().getScene(); - int times = Utils.randomRange(1,2); + int times = Utils.randomRange(1, 2); - for (int i = 0 ; i < times ; i++) { + for (int i = 0; i < times; i++) { EntityItem item = new EntityItem( - scene, - player, - GameData.getItemDataMap().get(itemId), - getGadget().getPosition().clone() - .addY(2f) - .addX(Utils.randomFloatRange(-1f, 1f)) - .addZ(Utils.randomFloatRange(-1f, 1f)), - 1, - true); + scene, + player, + GameData.getItemDataMap().get(itemId), + getGadget().getPosition().clone() + .addY(2f) + .addX(Utils.randomFloatRange(-1f, 1f)) + .addZ(Utils.randomFloatRange(-1f, 1f)), + 1, + true); scene.addEntity(item); } diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetObject.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetObject.java index d10c7925b..0f190a34c 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetObject.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetObject.java @@ -5,7 +5,7 @@ import emu.grasscutter.game.player.Player; import emu.grasscutter.net.proto.GadgetInteractReqOuterClass; import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass; -public class GadgetObject extends GadgetContent{ +public class GadgetObject extends GadgetContent { public GadgetObject(EntityGadget gadget) { super(gadget); } diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetRewardStatue.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetRewardStatue.java index cda784976..e1f15b2ee 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetRewardStatue.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetRewardStatue.java @@ -9,22 +9,22 @@ import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo; import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp; public class GadgetRewardStatue extends GadgetContent { - - public GadgetRewardStatue(EntityGadget gadget) { - super(gadget); - } - public boolean onInteract(Player player, GadgetInteractReq req) { - if (player.getScene().getChallenge() != null && player.getScene().getChallenge() instanceof DungeonChallenge dungeonChallenge) { - dungeonChallenge.getStatueDrops(player, req); - } - - player.sendPacket(new PacketGadgetInteractRsp(getGadget(), InteractType.INTERACT_TYPE_OPEN_STATUE)); - - return false; - } + public GadgetRewardStatue(EntityGadget gadget) { + super(gadget); + } - public void onBuildProto(SceneGadgetInfo.Builder gadgetInfo) { - - } + public boolean onInteract(Player player, GadgetInteractReq req) { + if (player.getScene().getChallenge() != null && player.getScene().getChallenge() instanceof DungeonChallenge dungeonChallenge) { + dungeonChallenge.getStatueDrops(player, req); + } + + player.sendPacket(new PacketGadgetInteractRsp(getGadget(), InteractType.INTERACT_TYPE_OPEN_STATUE)); + + return false; + } + + public void onBuildProto(SceneGadgetInfo.Builder gadgetInfo) { + + } } diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java index 36164676b..c83813ff5 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java @@ -1,7 +1,5 @@ package emu.grasscutter.game.entity.gadget; -import java.util.Arrays; - import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.gadget.worktop.WorktopWorktopOptionHandler; import emu.grasscutter.game.player.Player; @@ -12,6 +10,8 @@ import emu.grasscutter.net.proto.WorktopInfoOuterClass.WorktopInfo; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; +import java.util.Arrays; + public class GadgetWorktop extends GadgetContent { private IntSet worktopOptions; private WorktopWorktopOptionHandler handler; @@ -48,8 +48,8 @@ public class GadgetWorktop extends GadgetContent { } WorktopInfo worktop = WorktopInfo.newBuilder() - .addAllOptionList(this.getWorktopOptions()) - .build(); + .addAllOptionList(this.getWorktopOptions()) + .build(); gadgetInfo.setWorktop(worktop); } @@ -57,6 +57,7 @@ public class GadgetWorktop extends GadgetContent { public void setOnSelectWorktopOptionEvent(WorktopWorktopOptionHandler handler) { this.handler = handler; } + public boolean onSelectWorktopOption(SelectWorktopOptionReq req) { if (this.handler != null) { this.handler.onSelectWorktopOption(this, req.getOptionId()); diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/chest/BossChestInteractHandler.java b/src/main/java/emu/grasscutter/game/entity/gadget/chest/BossChestInteractHandler.java index ce47013d2..31cf7815c 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/chest/BossChestInteractHandler.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/chest/BossChestInteractHandler.java @@ -11,7 +11,7 @@ import emu.grasscutter.server.packet.send.PacketGadgetAutoPickDropInfoNotify; import java.util.ArrayList; import java.util.List; -public class BossChestInteractHandler implements ChestInteractHandler{ +public class BossChestInteractHandler implements ChestInteractHandler { @Override public boolean isTwoStep() { return true; @@ -19,12 +19,12 @@ public class BossChestInteractHandler implements ChestInteractHandler{ @Override public boolean onInteract(GadgetChest chest, Player player) { - return this.onInteract(chest,player,false); + return this.onInteract(chest, player, false); } - public boolean onInteract(GadgetChest chest, Player player,boolean useCondensedResin) { - var blossomRewards = player.getScene().getBlossomManager().onReward(player,chest.getGadget(),useCondensedResin); - if (blossomRewards!=null) { + public boolean onInteract(GadgetChest chest, Player player, boolean useCondensedResin) { + var blossomRewards = player.getScene().getBlossomManager().onReward(player, chest.getGadget(), useCondensedResin); + if (blossomRewards != null) { player.getInventory().addItems(blossomRewards, ActionReason.OpenWorldBossChest); player.sendPacket(new PacketGadgetAutoPickDropInfoNotify(blossomRewards)); return true; diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/chest/NormalChestInteractHandler.java b/src/main/java/emu/grasscutter/game/entity/gadget/chest/NormalChestInteractHandler.java index 32c50691a..dff206b09 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/chest/NormalChestInteractHandler.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/chest/NormalChestInteractHandler.java @@ -9,7 +9,7 @@ import java.util.Random; public class NormalChestInteractHandler implements ChestInteractHandler { private final ChestReward chestReward; - public NormalChestInteractHandler(ChestReward rewardData){ + public NormalChestInteractHandler(ChestReward rewardData) { this.chestReward = rewardData; } @@ -24,14 +24,14 @@ public class NormalChestInteractHandler implements ChestInteractHandler { player.getInventory().addItem(201, chestReward.getResin()); var mora = chestReward.getMora() * (1 + (player.getWorldLevel() - 1) * 0.5); - player.getInventory().addItem(202, (int)mora); + player.getInventory().addItem(202, (int) mora); - for(int i=0;i expeditionRewardData; + @Getter + private int hourTime; + @Getter + private List expeditionRewardData; public List getRewards() { List rewards = new ArrayList<>(); diff --git a/src/main/java/emu/grasscutter/game/expedition/ExpeditionRewardInfo.java b/src/main/java/emu/grasscutter/game/expedition/ExpeditionRewardInfo.java index 3bf4fc3d1..1087a4ecb 100644 --- a/src/main/java/emu/grasscutter/game/expedition/ExpeditionRewardInfo.java +++ b/src/main/java/emu/grasscutter/game/expedition/ExpeditionRewardInfo.java @@ -1,10 +1,12 @@ package emu.grasscutter.game.expedition; -import java.util.List; - import lombok.Getter; +import java.util.List; + public class ExpeditionRewardInfo { - @Getter private int expId; - @Getter private List expeditionRewardDataList; + @Getter + private int expId; + @Getter + private List expeditionRewardDataList; } diff --git a/src/main/java/emu/grasscutter/game/friends/FriendsList.java b/src/main/java/emu/grasscutter/game/friends/FriendsList.java index 1b09b6cd2..6c04f6889 100644 --- a/src/main/java/emu/grasscutter/game/friends/FriendsList.java +++ b/src/main/java/emu/grasscutter/game/friends/FriendsList.java @@ -1,19 +1,15 @@ package emu.grasscutter.game.friends; -import java.util.List; - import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.proto.DealAddFriendResultTypeOuterClass.DealAddFriendResultType; -import emu.grasscutter.server.packet.send.PacketAskAddFriendNotify; -import emu.grasscutter.server.packet.send.PacketAskAddFriendRsp; -import emu.grasscutter.server.packet.send.PacketDealAddFriendRsp; -import emu.grasscutter.server.packet.send.PacketDeleteFriendNotify; -import emu.grasscutter.server.packet.send.PacketDeleteFriendRsp; +import emu.grasscutter.server.packet.send.*; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import java.util.List; + public class FriendsList extends BasePlayerManager { private final Int2ObjectMap friends; private final Int2ObjectMap pendingFriends; @@ -191,8 +187,9 @@ public class FriendsList extends BasePlayerManager { this.getPlayer().sendPacket(new PacketAskAddFriendRsp(targetUid)); } - /** Gets total amount of potential friends - * */ + /** + * Gets total amount of potential friends + */ public int getFullFriendCount() { return this.getPendingFriends().size() + this.getFriends().size(); } diff --git a/src/main/java/emu/grasscutter/game/friends/Friendship.java b/src/main/java/emu/grasscutter/game/friends/Friendship.java index ad6b1faf7..713c7ddf5 100644 --- a/src/main/java/emu/grasscutter/game/friends/Friendship.java +++ b/src/main/java/emu/grasscutter/game/friends/Friendship.java @@ -1,109 +1,116 @@ package emu.grasscutter.game.friends; -import emu.grasscutter.net.proto.PlatformTypeOuterClass; -import org.bson.types.ObjectId; - -import dev.morphia.annotations.*; +import dev.morphia.annotations.Entity; +import dev.morphia.annotations.Id; +import dev.morphia.annotations.Indexed; +import dev.morphia.annotations.Transient; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.proto.FriendBriefOuterClass.FriendBrief; import emu.grasscutter.net.proto.FriendOnlineStateOuterClass.FriendOnlineState; +import emu.grasscutter.net.proto.PlatformTypeOuterClass; import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; +import org.bson.types.ObjectId; @Entity(value = "friendships", useDiscriminator = false) public class Friendship { - @Id private ObjectId id; + @Id + private ObjectId id; - @Transient private Player owner; + @Transient + private Player owner; - @Indexed private int ownerId; - @Indexed private int friendId; - private boolean isFriend; - private int askerId; + @Indexed + private int ownerId; + @Indexed + private int friendId; + private boolean isFriend; + private int askerId; - private PlayerProfile profile; + private PlayerProfile profile; - @Deprecated // Morphia use only - public Friendship() { } + @Deprecated // Morphia use only + public Friendship() { + } - public Friendship(Player owner, Player friend, Player asker) { - this.setOwner(owner); - this.ownerId = owner.getUid(); - this.friendId = friend.getUid(); - this.profile = friend.getProfile(); - this.askerId = asker.getUid(); - } + public Friendship(Player owner, Player friend, Player asker) { + this.setOwner(owner); + this.ownerId = owner.getUid(); + this.friendId = friend.getUid(); + this.profile = friend.getProfile(); + this.askerId = asker.getUid(); + } - public Player getOwner() { - return owner; - } + public Player getOwner() { + return owner; + } - public void setOwner(Player owner) { - this.owner = owner; - } + public void setOwner(Player owner) { + this.owner = owner; + } - public boolean isFriend() { - return isFriend; - } + public boolean isFriend() { + return isFriend; + } - public void setIsFriend(boolean b) { - this.isFriend = b; - } + public void setIsFriend(boolean b) { + this.isFriend = b; + } - public int getOwnerId() { - return ownerId; - } + public int getOwnerId() { + return ownerId; + } - public int getFriendId() { - return friendId; - } + public int getFriendId() { + return friendId; + } - public int getAskerId() { - return askerId; - } + public int getAskerId() { + return askerId; + } - public void setAskerId(int askerId) { - this.askerId = askerId; - } + public void setAskerId(int askerId) { + this.askerId = askerId; + } - public PlayerProfile getFriendProfile() { - return profile; - } + public PlayerProfile getFriendProfile() { + return profile; + } - public void setFriendProfile(Player character) { - if (character == null || this.friendId != character.getUid()) return; - this.profile = character.getProfile(); - } + public void setFriendProfile(Player character) { + if (character == null || this.friendId != character.getUid()) return; + this.profile = character.getProfile(); + } - public boolean isOnline() { - return getFriendProfile().getPlayer() != null; - } + public boolean isOnline() { + return getFriendProfile().getPlayer() != null; + } - public void save() { - DatabaseHelper.saveFriendship(this); - } + public void save() { + DatabaseHelper.saveFriendship(this); + } - public void delete() { - DatabaseHelper.deleteFriendship(this); - } + public void delete() { + DatabaseHelper.deleteFriendship(this); + } - public FriendBrief toProto() { - FriendBrief proto = FriendBrief.newBuilder() - .setUid(getFriendProfile().getUid()) - .setNickname(getFriendProfile().getName()) - .setLevel(getFriendProfile().getPlayerLevel()) - .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(getFriendProfile().getAvatarId())) - .setWorldLevel(getFriendProfile().getWorldLevel()) - .setSignature(getFriendProfile().getSignature()) - .setOnlineState(getFriendProfile().isOnline() ? FriendOnlineState.FRIEND_ONLINE_STATE_ONLINE : FriendOnlineState.FRIEND_ONLINE_STATE_DISCONNECT) - .setIsMpModeAvailable(true) - .setLastActiveTime(getFriendProfile().getLastActiveTime()) - .setNameCardId(getFriendProfile().getNameCard()) - .setParam(getFriendProfile().getDaysSinceLogin()) - .setIsGameSource(true) - .setPlatformType(PlatformTypeOuterClass.PlatformType.PLATFORM_TYPE_PC) - .build(); + public FriendBrief toProto() { + FriendBrief proto = FriendBrief.newBuilder() + .setUid(getFriendProfile().getUid()) + .setNickname(getFriendProfile().getName()) + .setLevel(getFriendProfile().getPlayerLevel()) + .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(getFriendProfile().getAvatarId())) + .setWorldLevel(getFriendProfile().getWorldLevel()) + .setSignature(getFriendProfile().getSignature()) + .setOnlineState(getFriendProfile().isOnline() ? FriendOnlineState.FRIEND_ONLINE_STATE_ONLINE : FriendOnlineState.FRIEND_ONLINE_STATE_DISCONNECT) + .setIsMpModeAvailable(true) + .setLastActiveTime(getFriendProfile().getLastActiveTime()) + .setNameCardId(getFriendProfile().getNameCard()) + .setParam(getFriendProfile().getDaysSinceLogin()) + .setIsGameSource(true) + .setPlatformType(PlatformTypeOuterClass.PlatformType.PLATFORM_TYPE_PC) + .build(); - return proto; - } + return proto; + } } diff --git a/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java b/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java index 8b39ec0f4..120a8f9e7 100644 --- a/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java +++ b/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java @@ -1,101 +1,106 @@ package emu.grasscutter.game.friends; -import dev.morphia.annotations.*; +import dev.morphia.annotations.AlsoLoad; +import dev.morphia.annotations.Entity; +import dev.morphia.annotations.Transient; import emu.grasscutter.game.player.Player; import emu.grasscutter.utils.Utils; @Entity public class PlayerProfile { - @Transient private Player player; - - @AlsoLoad("id") private int uid; - private int nameCard; - private int avatarId; - private String name; - private String signature; - private int achievements; - - private int playerLevel; - private int worldLevel; - private int lastActiveTime; + @Transient + private Player player; - @Deprecated // Morphia only - public PlayerProfile() { } - - public PlayerProfile(Player player) { - this.uid = player.getUid(); - this.syncWithCharacter(player); - } - - public int getUid() { - return uid; - } + @AlsoLoad("id") + private int uid; + private int nameCard; + private int avatarId; + private String name; + private String signature; + private int achievements; - public Player getPlayer() { - return player; - } - - public synchronized void setPlayer(Player player) { - this.player = player; - } - - public String getName() { - return name; - } + private int playerLevel; + private int worldLevel; + private int lastActiveTime; - public int getNameCard() { - return nameCard; - } + @Deprecated // Morphia only + public PlayerProfile() { + } - public int getAvatarId() { - return avatarId; - } + public PlayerProfile(Player player) { + this.uid = player.getUid(); + this.syncWithCharacter(player); + } - public String getSignature() { - return signature; - } + public int getUid() { + return uid; + } - public int getAchievements() { - return achievements; - } + public Player getPlayer() { + return player; + } - public int getPlayerLevel() { - return playerLevel; - } + public synchronized void setPlayer(Player player) { + this.player = player; + } - public int getWorldLevel() { - return worldLevel; - } + public String getName() { + return name; + } - public int getLastActiveTime() { - return lastActiveTime; - } - - public void updateLastActiveTime() { - this.lastActiveTime = Utils.getCurrentSeconds(); - } - - public int getDaysSinceLogin() { - return (int) Math.floor((Utils.getCurrentSeconds() - getLastActiveTime()) / 86400.0); - } + public int getNameCard() { + return nameCard; + } - public boolean isOnline() { - return this.getPlayer() != null; - } + public int getAvatarId() { + return avatarId; + } - public void syncWithCharacter(Player player) { - if (player == null) { - return; - } - - this.uid = player.getUid(); - this.name = player.getNickname(); - this.avatarId = player.getHeadImage(); - this.signature = player.getSignature(); - this.nameCard = player.getNameCardId(); - this.playerLevel = player.getLevel(); - this.worldLevel = player.getWorldLevel(); - //this.achievements = 0; - this.updateLastActiveTime(); - } + public String getSignature() { + return signature; + } + + public int getAchievements() { + return achievements; + } + + public int getPlayerLevel() { + return playerLevel; + } + + public int getWorldLevel() { + return worldLevel; + } + + public int getLastActiveTime() { + return lastActiveTime; + } + + public void updateLastActiveTime() { + this.lastActiveTime = Utils.getCurrentSeconds(); + } + + public int getDaysSinceLogin() { + return (int) Math.floor((Utils.getCurrentSeconds() - getLastActiveTime()) / 86400.0); + } + + public boolean isOnline() { + return this.getPlayer() != null; + } + + public void syncWithCharacter(Player player) { + if (player == null) { + return; + } + + this.uid = player.getUid(); + this.name = player.getNickname(); + this.avatarId = player.getHeadImage(); + this.signature = player.getSignature(); + this.nameCard = player.getNameCardId(); + this.playerLevel = player.getLevel(); + this.worldLevel = player.getWorldLevel(); + //this.achievements = 0; + this.updateLastActiveTime(); + } } diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java b/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java index ef0b7afa1..512543428 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java @@ -1,7 +1,5 @@ package emu.grasscutter.game.gacha; -import static emu.grasscutter.config.Configuration.*; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.game.player.Player; @@ -10,70 +8,103 @@ import emu.grasscutter.net.proto.GachaUpInfoOuterClass.GachaUpInfo; import emu.grasscutter.utils.Utils; import lombok.Getter; +import static emu.grasscutter.config.Configuration.*; + public class GachaBanner { - @Getter private int gachaType = -1; - @Getter int scheduleId = -1; - @Getter int sortId = -1; - @Getter private String prefabPath; - @Getter private String previewPrefabPath; - @Getter private String titlePath; - private int costItemId = 0; - private int costItemAmount = 1; - private int costItemId10 = 0; - private int costItemAmount10 = 10; - @Getter private int beginTime = 0; - @Getter private int endTime = 1924992000; - @Getter private int gachaTimesLimit = Integer.MAX_VALUE; - @Getter private int[] rateUpItems4 = {}; - @Getter private int[] rateUpItems5 = {}; - // This now handles default values for the fields below - @Getter private BannerType bannerType = BannerType.STANDARD; // Constants used by the BannerType enum - static final int[][] DEFAULT_WEIGHTS_4 = {{1,510}, {8,510}, {10,10000}}; + static final int[][] DEFAULT_WEIGHTS_4 = {{1, 510}, {8, 510}, {10, 10000}}; static final int[][] DEFAULT_WEIGHTS_4_WEAPON = {{1, 600}, {7, 600}, {8, 6600}, {10, 12600}}; - static final int[][] DEFAULT_WEIGHTS_5 = {{1,75}, {73,150}, {90,10000}}; - static final int[][] DEFAULT_WEIGHTS_5_CHARACTER = {{1,80}, {73,80}, {90,10000}}; - static final int[][] DEFAULT_WEIGHTS_5_WEAPON = {{1,100}, {62,100}, {73,7800}, {80,10000}}; + static final int[][] DEFAULT_WEIGHTS_5 = {{1, 75}, {73, 150}, {90, 10000}}; + static final int[][] DEFAULT_WEIGHTS_5_CHARACTER = {{1, 80}, {73, 80}, {90, 10000}}; + static final int[][] DEFAULT_WEIGHTS_5_WEAPON = {{1, 100}, {62, 100}, {73, 7800}, {80, 10000}}; static final int[] DEFAULT_FALLBACK_ITEMS_4_POOL_1 = {1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1059, 1064, 1065, 1067, 1068, 1072}; // Default avatars static final int[] DEFAULT_FALLBACK_ITEMS_4_POOL_2 = {11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405}; // Default weapons static final int[] DEFAULT_FALLBACK_ITEMS_5_POOL_1 = {1003, 1016, 1042, 1035, 1041, 1069}; // Default avatars static final int[] DEFAULT_FALLBACK_ITEMS_5_POOL_2 = {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502}; // Default weapons static final int[] EMPTY_POOL = {}; // Used to remove a type of fallback + @Getter + int scheduleId = -1; + @Getter + int sortId = -1; + @Getter + private int gachaType = -1; + @Getter + private String prefabPath; + @Getter + private String previewPrefabPath; + @Getter + private String titlePath; + private int costItemId = 0; + private final int costItemAmount = 1; + private int costItemId10 = 0; + private final int costItemAmount10 = 10; + @Getter + private final int beginTime = 0; + @Getter + private final int endTime = 1924992000; + @Getter + private final int gachaTimesLimit = Integer.MAX_VALUE; + @Getter + private final int[] rateUpItems4 = {}; + @Getter + private final int[] rateUpItems5 = {}; + // This now handles default values for the fields below + @Getter + private final BannerType bannerType = BannerType.STANDARD; // These don't change between banner types (apart from Standard having three extra 4star avatars) - @Getter private int[] fallbackItems3 = {11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304}; - @Getter private int[] fallbackItems4Pool1 = DEFAULT_FALLBACK_ITEMS_4_POOL_1; - @Getter private int[] fallbackItems4Pool2 = DEFAULT_FALLBACK_ITEMS_4_POOL_2; + @Getter + private final int[] fallbackItems3 = {11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304}; + @Getter + private final int[] fallbackItems4Pool1 = DEFAULT_FALLBACK_ITEMS_4_POOL_1; + @Getter + private final int[] fallbackItems4Pool2 = DEFAULT_FALLBACK_ITEMS_4_POOL_2; // Different banner types have different defaults, see above for default values and the enum for which are used where. - @Getter private int[] fallbackItems5Pool1; - @Getter private int[] fallbackItems5Pool2; + @Getter + private int[] fallbackItems5Pool1; + @Getter + private int[] fallbackItems5Pool2; private int[][] weights4; private int[][] weights5; private int eventChance4 = -1; // Chance to win a featured event item private int eventChance5 = -1; // Chance to win a featured event item // - @Getter private boolean removeC6FromPool = false; - @Getter private boolean autoStripRateUpFromFallback = true; // Ensures that featured items won't "double dip" into the losing pool - private int[][] poolBalanceWeights4 = {{1,255}, {17,255}, {21,10455}}; // Used to ensure that players won't go too many rolls without getting something from pool 1 (avatar) or pool 2 (weapon) - private int[][] poolBalanceWeights5 = {{1,30}, {147,150}, {181,10230}}; - @Getter private int wishMaxProgress = 2; + @Getter + private final boolean removeC6FromPool = false; + @Getter + private final boolean autoStripRateUpFromFallback = true; // Ensures that featured items won't "double dip" into the losing pool + private final int[][] poolBalanceWeights4 = {{1, 255}, {17, 255}, {21, 10455}}; // Used to ensure that players won't go too many rolls without getting something from pool 1 (avatar) or pool 2 (weapon) + private final int[][] poolBalanceWeights5 = {{1, 30}, {147, 150}, {181, 10230}}; + @Getter + private final int wishMaxProgress = 2; // Deprecated fields that were tolerated in early May 2022 but have apparently still being circulating in new custom configs // For now, throw up big scary errors on load telling people that they will be banned outright in a future version - @Deprecated private int[] rateUpItems1 = {}; - @Deprecated private int[] rateUpItems2 = {}; - @Deprecated private int eventChance = -1; - @Deprecated private int costItem = 0; - @Deprecated private int softPity = -1; - @Deprecated private int hardPity = -1; - @Deprecated private int minItemType = -1; - @Deprecated private int maxItemType = -1; - @Getter private boolean deprecated = false; - @Getter private boolean disabled = false; + @Deprecated + private final int[] rateUpItems1 = {}; + @Deprecated + private final int[] rateUpItems2 = {}; + @Deprecated + private final int eventChance = -1; + @Deprecated + private final int costItem = 0; + @Deprecated + private final int softPity = -1; + @Deprecated + private final int hardPity = -1; + @Deprecated + private final int minItemType = -1; + @Deprecated + private final int maxItemType = -1; + @Getter + private boolean deprecated = false; + @Getter + private final boolean disabled = false; private void warnDeprecated(String name, String replacement) { - Grasscutter.getLogger().error("Deprecated field found in Banners config: "+name+" was replaced back in early May 2022, use "+replacement+" instead. You MUST remove this field from your config."); + Grasscutter.getLogger().error("Deprecated field found in Banners config: " + name + " was replaced back in early May 2022, use " + replacement + " instead. You MUST remove this field from your config."); this.deprecated = true; } + public void onLoad() { // Handle deprecated configs if (eventChance != -1) @@ -160,13 +191,13 @@ public class GachaBanner { String sessionKey = player.getAccount().getSessionKey(); String record = "http" + (HTTP_ENCRYPTION.useInRouting ? "s" : "") + "://" - + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" - + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort) - + "/gacha?s=" + sessionKey + "&gachaType=" + gachaType; + + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" + + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort) + + "/gacha?s=" + sessionKey + "&gachaType=" + gachaType; String details = "http" + (HTTP_ENCRYPTION.useInRouting ? "s" : "") + "://" - + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" - + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort) - + "/gacha/details?s=" + sessionKey + "&scheduleId=" + scheduleId; + + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" + + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort) + + "/gacha/details?s=" + sessionKey + "&scheduleId=" + scheduleId; // Grasscutter.getLogger().info("record = " + record); PlayerGachaBannerInfo gachaInfo = player.getGachaInfo().getBannerInfo(this); @@ -175,23 +206,23 @@ public class GachaBanner { default -> Math.max(gachaTimesLimit - gachaInfo.getTotalPulls(), 0); }; GachaInfo.Builder info = GachaInfo.newBuilder() - .setGachaType(this.getGachaType()) - .setScheduleId(this.getScheduleId()) - .setBeginTime(this.getBeginTime()) - .setEndTime(this.getEndTime()) - .setCostItemId(this.costItemId) - .setCostItemNum(this.costItemAmount) - .setTenCostItemId(this.costItemId10) - .setTenCostItemNum(this.costItemAmount10) - .setGachaPrefabPath(this.getPrefabPath()) - .setGachaPreviewPrefabPath(this.getPreviewPrefabPath()) - .setGachaProbUrl(details) - .setGachaProbUrlOversea(details) - .setGachaRecordUrl(record) - .setGachaRecordUrlOversea(record) - .setLeftGachaTimes(leftGachaTimes) - .setGachaTimesLimit(gachaTimesLimit) - .setGachaSortId(this.getSortId()); + .setGachaType(this.getGachaType()) + .setScheduleId(this.getScheduleId()) + .setBeginTime(this.getBeginTime()) + .setEndTime(this.getEndTime()) + .setCostItemId(this.costItemId) + .setCostItemNum(this.costItemAmount) + .setTenCostItemId(this.costItemId10) + .setTenCostItemNum(this.costItemAmount10) + .setGachaPrefabPath(this.getPrefabPath()) + .setGachaPreviewPrefabPath(this.getPreviewPrefabPath()) + .setGachaProbUrl(details) + .setGachaProbUrlOversea(details) + .setGachaRecordUrl(record) + .setGachaRecordUrlOversea(record) + .setLeftGachaTimes(leftGachaTimes) + .setGachaTimesLimit(gachaTimesLimit) + .setGachaSortId(this.getSortId()); if (hasEpitomized()) { info.setWishItemId(gachaInfo.getWishItemId()) diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaRecord.java b/src/main/java/emu/grasscutter/game/gacha/GachaRecord.java index ffaf983b6..ceda9cde2 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaRecord.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaRecord.java @@ -1,30 +1,35 @@ package emu.grasscutter.game.gacha; +import dev.morphia.annotations.Entity; +import dev.morphia.annotations.Id; +import dev.morphia.annotations.Indexed; +import org.bson.types.ObjectId; + import java.util.Date; -import org.bson.types.ObjectId; - -import dev.morphia.annotations.*; - @Entity(value = "gachas", useDiscriminator = false) public class GachaRecord { - @Id private ObjectId id; - - @Indexed private int ownerId; + @Id + private ObjectId id; - private Date transactionDate; + @Indexed + private int ownerId; + + private Date transactionDate; private int itemID; - @Indexed private int gachaType; + @Indexed + private int gachaType; - public GachaRecord() {} + public GachaRecord() { + } - public GachaRecord(int itemId ,int ownerId, int gachaType){ + public GachaRecord(int itemId, int ownerId, int gachaType) { this.transactionDate = new Date(); this.itemID = itemId; this.ownerId = ownerId; this.gachaType = gachaType; } - + public int getOwnerId() { return ownerId; } @@ -44,7 +49,7 @@ public class GachaRecord { public Date getTransactionDate() { return transactionDate; } - + public void setTransactionDate(Date transactionDate) { this.transactionDate = transactionDate; } @@ -57,7 +62,7 @@ public class GachaRecord { this.itemID = itemID; } - public ObjectId getId(){ + public ObjectId getId() { return id; } @@ -68,8 +73,9 @@ public class GachaRecord { public String toString() { return toJsonString(); } + public String toJsonString() { return "{\"time\": " + this.transactionDate.getTime() + ",\"item\":" + this.itemID + "}"; } - + } diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaSystem.java b/src/main/java/emu/grasscutter/game/gacha/GachaSystem.java index ec6e6dd11..b11a36607 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaSystem.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaSystem.java @@ -1,13 +1,5 @@ package emu.grasscutter.game.gacha; -import static emu.grasscutter.config.Configuration.*; - -import java.io.File; -import java.nio.file.*; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ThreadLocalRandom; - import com.sun.nio.file.SensitivityWatchEventModifier; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.DataLoader; @@ -39,12 +31,18 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import org.greenrobot.eventbus.Subscribe; -public class GachaSystem extends BaseGameSystem { - private final Int2ObjectMap gachaBanners; - private WatchService watchService; +import java.nio.file.*; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ThreadLocalRandom; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + +public class GachaSystem extends BaseGameSystem { private static final int starglitterId = 221; private static final int stardustId = 222; + private final Int2ObjectMap gachaBanners; + private WatchService watchService; public GachaSystem(GameServer server) { super(server); @@ -96,40 +94,6 @@ public class GachaSystem extends BaseGameSystem { } } - private class BannerPools { - public int[] rateUpItems4; - public int[] rateUpItems5; - public int[] fallbackItems4Pool1; - public int[] fallbackItems4Pool2; - public int[] fallbackItems5Pool1; - public int[] fallbackItems5Pool2; - - public BannerPools(GachaBanner banner) { - rateUpItems4 = banner.getRateUpItems4(); - rateUpItems5 = banner.getRateUpItems5(); - fallbackItems4Pool1 = banner.getFallbackItems4Pool1(); - fallbackItems4Pool2 = banner.getFallbackItems4Pool2(); - fallbackItems5Pool1 = banner.getFallbackItems5Pool1(); - fallbackItems5Pool2 = banner.getFallbackItems5Pool2(); - - if (banner.isAutoStripRateUpFromFallback()) { - fallbackItems4Pool1 = Utils.setSubtract(fallbackItems4Pool1, rateUpItems4); - fallbackItems4Pool2 = Utils.setSubtract(fallbackItems4Pool2, rateUpItems4); - fallbackItems5Pool1 = Utils.setSubtract(fallbackItems5Pool1, rateUpItems5); - fallbackItems5Pool2 = Utils.setSubtract(fallbackItems5Pool2, rateUpItems5); - } - } - - public void removeFromAllPools(int[] itemIds) { - rateUpItems4 = Utils.setSubtract(rateUpItems4, itemIds); - rateUpItems5 = Utils.setSubtract(rateUpItems5, itemIds); - fallbackItems4Pool1 = Utils.setSubtract(fallbackItems4Pool1, itemIds); - fallbackItems4Pool2 = Utils.setSubtract(fallbackItems4Pool2, itemIds); - fallbackItems5Pool1 = Utils.setSubtract(fallbackItems5Pool1, itemIds); - fallbackItems5Pool2 = Utils.setSubtract(fallbackItems5Pool2, itemIds); - } - } - private synchronized int[] removeC6FromPool(int[] itemPool, Player player) { IntList temp = new IntArrayList(); for (int itemId : itemPool) { @@ -151,9 +115,9 @@ public class GachaSystem extends BaseGameSystem { } total += weight; } - int roll = ThreadLocalRandom.current().nextInt((total < cutoff)? total : cutoff); + int roll = ThreadLocalRandom.current().nextInt((total < cutoff) ? total : cutoff); int subTotal = 0; - for (int i=0; i= pityPool2)? 1 : 0) { // Larger weight must come first for the hard cutoff to function correctly - case 1 -> 1 + drawRoulette(new int[] {pityPool1, pityPool2}, 10000); - default -> 2 - drawRoulette(new int[] {pityPool2, pityPool1}, 10000); + int chosenPool = switch ((pityPool1 >= pityPool2) ? 1 : 0) { // Larger weight must come first for the hard cutoff to function correctly + case 1 -> 1 + drawRoulette(new int[]{pityPool1, pityPool2}, 10000); + default -> 2 - drawRoulette(new int[]{pityPool2, pityPool1}, 10000); }; return switch (chosenPool) { case 1: @@ -321,12 +285,12 @@ public class GachaSystem extends BaseGameSystem { break; default: if (constellation >= 6) { // C6, give consolation starglitter - addStarglitter = (itemData.getRankLevel()==5)? 25 : 5; + addStarglitter = (itemData.getRankLevel() == 5) ? 25 : 5; } else { // C0-C5, give constellation item if (banner.isRemoveC6FromPool() && constellation == 5) { // New C6, remove it from the pools so we don't get C7 in a 10pull - pools.removeFromAllPools(new int[] {itemId}); + pools.removeFromAllPools(new int[]{itemId}); } - addStarglitter = (itemData.getRankLevel()==5)? 10 : 2; + addStarglitter = (itemData.getRankLevel() == 5) ? 10 : 2; int constItemId = itemId + 100; // This may not hold true for future characters. Examples of strictly correct constellation item lookup are elsewhere for now. boolean haveConstItem = inventory.getInventoryTab(ItemType.ITEM_MATERIAL).getItemById(constItemId) == null; gachaItem.addTransferItems(GachaTransferItem.newBuilder().setItem(ItemParam.newBuilder().setItemId(constItemId).setCount(1)).setIsTransferItemNew(haveConstItem)); @@ -404,7 +368,6 @@ public class GachaSystem extends BaseGameSystem { boolean valid = watchKey.reset(); if (!valid) { Grasscutter.getLogger().error("Unable to reset Gacha Manager Watch Key. Auto-reload of banners.json will no longer work."); - return; } } catch (Exception e) { e.printStackTrace(); @@ -418,8 +381,7 @@ public class GachaSystem extends BaseGameSystem { long currentTime = System.currentTimeMillis() / 1000L; for (GachaBanner banner : getGachaBanners().values()) { - if ((banner.getEndTime() >= currentTime && banner.getBeginTime() <= currentTime) || (banner.getBannerType() == BannerType.STANDARD)) - { + if ((banner.getEndTime() >= currentTime && banner.getBeginTime() <= currentTime) || (banner.getBannerType() == BannerType.STANDARD)) { proto.addGachaInfoList(banner.toProto(player)); } } @@ -430,4 +392,38 @@ public class GachaSystem extends BaseGameSystem { public GetGachaInfoRsp toProto(Player player) { return createProto(player); } + + private class BannerPools { + public int[] rateUpItems4; + public int[] rateUpItems5; + public int[] fallbackItems4Pool1; + public int[] fallbackItems4Pool2; + public int[] fallbackItems5Pool1; + public int[] fallbackItems5Pool2; + + public BannerPools(GachaBanner banner) { + rateUpItems4 = banner.getRateUpItems4(); + rateUpItems5 = banner.getRateUpItems5(); + fallbackItems4Pool1 = banner.getFallbackItems4Pool1(); + fallbackItems4Pool2 = banner.getFallbackItems4Pool2(); + fallbackItems5Pool1 = banner.getFallbackItems5Pool1(); + fallbackItems5Pool2 = banner.getFallbackItems5Pool2(); + + if (banner.isAutoStripRateUpFromFallback()) { + fallbackItems4Pool1 = Utils.setSubtract(fallbackItems4Pool1, rateUpItems4); + fallbackItems4Pool2 = Utils.setSubtract(fallbackItems4Pool2, rateUpItems4); + fallbackItems5Pool1 = Utils.setSubtract(fallbackItems5Pool1, rateUpItems5); + fallbackItems5Pool2 = Utils.setSubtract(fallbackItems5Pool2, rateUpItems5); + } + } + + public void removeFromAllPools(int[] itemIds) { + rateUpItems4 = Utils.setSubtract(rateUpItems4, itemIds); + rateUpItems5 = Utils.setSubtract(rateUpItems5, itemIds); + fallbackItems4Pool1 = Utils.setSubtract(fallbackItems4Pool1, itemIds); + fallbackItems4Pool2 = Utils.setSubtract(fallbackItems4Pool2, itemIds); + fallbackItems5Pool1 = Utils.setSubtract(fallbackItems5Pool1, itemIds); + fallbackItems5Pool2 = Utils.setSubtract(fallbackItems5Pool2, itemIds); + } + } } diff --git a/src/main/java/emu/grasscutter/game/gacha/PlayerGachaBannerInfo.java b/src/main/java/emu/grasscutter/game/gacha/PlayerGachaBannerInfo.java index baac57744..1c0477546 100644 --- a/src/main/java/emu/grasscutter/game/gacha/PlayerGachaBannerInfo.java +++ b/src/main/java/emu/grasscutter/game/gacha/PlayerGachaBannerInfo.java @@ -6,111 +6,127 @@ import lombok.Setter; @Entity public class PlayerGachaBannerInfo { - @Getter @Setter private int totalPulls = 0; - @Getter @Setter private int pity5 = 0; - @Getter @Setter private int pity4 = 0; - private int failedFeaturedItemPulls = 0; - private int failedFeatured4ItemPulls = 0; - private int pity5Pool1 = 0; - private int pity5Pool2 = 0; - private int pity4Pool1 = 0; - private int pity4Pool2 = 0; + @Getter + @Setter + private int totalPulls = 0; + @Getter + @Setter + private int pity5 = 0; + @Getter + @Setter + private int pity4 = 0; + private int failedFeaturedItemPulls = 0; + private int failedFeatured4ItemPulls = 0; + private int pity5Pool1 = 0; + private int pity5Pool2 = 0; + private int pity4Pool1 = 0; + private int pity4Pool2 = 0; - @Getter @Setter private int failedChosenItemPulls = 0; - @Getter @Setter private int wishItemId = 0; + @Getter + @Setter + private int failedChosenItemPulls = 0; + @Getter + @Setter + private int wishItemId = 0; - public void addTotalPulls(int amount) { - this.totalPulls += amount; - } + public void addTotalPulls(int amount) { + this.totalPulls += amount; + } - public void addPity5(int amount) { - this.pity5 += amount; - } + public void addPity5(int amount) { + this.pity5 += amount; + } - public void addPity4(int amount) { - this.pity4 += amount; - } + public void addPity4(int amount) { + this.pity4 += amount; + } - public void addFailedChosenItemPulls(int amount) { - failedChosenItemPulls += amount; - } - - public int getFailedFeaturedItemPulls(int rarity) { - return switch (rarity) { - case 4 -> failedFeatured4ItemPulls; - default -> failedFeaturedItemPulls; // 5 - }; - } - - public void setFailedFeaturedItemPulls(int rarity, int amount) { - switch (rarity) { - case 4 -> failedFeatured4ItemPulls = amount; - default -> failedFeaturedItemPulls = amount; // 5 - }; - } - - public void addFailedFeaturedItemPulls(int rarity, int amount) { - switch (rarity) { - case 4 -> failedFeatured4ItemPulls += amount; - default -> failedFeaturedItemPulls += amount; // 5 - }; - } - - public int getPityPool(int rarity, int pool) { - return switch (rarity) { - case 4 -> switch (pool) { - case 1 -> pity4Pool1; - default -> pity4Pool2; - }; - default -> switch (pool) { - case 1 -> pity5Pool1; - default -> pity5Pool2; - }; - }; - } - - public void setPityPool(int rarity, int pool, int amount) { - switch (rarity) { - case 4: - switch (pool) { - case 1 -> pity4Pool1 = amount; - default -> pity4Pool2 = amount; - }; - break; - case 5: - default: - switch (pool) { - case 1 -> pity5Pool1 = amount; - default -> pity5Pool2 = amount; - }; - break; - }; - } - - public void addPityPool(int rarity, int pool, int amount) { - switch (rarity) { - case 4: - switch (pool) { - case 1 -> pity4Pool1 += amount; - default -> pity4Pool2 += amount; - }; - break; - case 5: - default: - switch (pool) { - case 1 -> pity5Pool1 += amount; - default -> pity5Pool2 += amount; - }; - break; - }; - } + public void addFailedChosenItemPulls(int amount) { + failedChosenItemPulls += amount; + } - public void incPityAll() { - pity4++; - pity5++; - pity4Pool1++; - pity4Pool2++; - pity5Pool1++; - pity5Pool2++; - } + public int getFailedFeaturedItemPulls(int rarity) { + return switch (rarity) { + case 4 -> failedFeatured4ItemPulls; + default -> failedFeaturedItemPulls; // 5 + }; + } + + public void setFailedFeaturedItemPulls(int rarity, int amount) { + if (rarity == 4) { + failedFeatured4ItemPulls = amount; + } else { + failedFeaturedItemPulls = amount; // 5 + } + } + + public void addFailedFeaturedItemPulls(int rarity, int amount) { + if (rarity == 4) { + failedFeatured4ItemPulls += amount; + } else { + failedFeaturedItemPulls += amount; // 5 + } + } + + public int getPityPool(int rarity, int pool) { + return switch (rarity) { + case 4 -> switch (pool) { + case 1 -> pity4Pool1; + default -> pity4Pool2; + }; + default -> switch (pool) { + case 1 -> pity5Pool1; + default -> pity5Pool2; + }; + }; + } + + public void setPityPool(int rarity, int pool, int amount) { + switch (rarity) { + case 4: + if (pool == 1) { + pity4Pool1 = amount; + } else { + pity4Pool2 = amount; + } + break; + case 5: + default: + if (pool == 1) { + pity5Pool1 = amount; + } else { + pity5Pool2 = amount; + } + break; + } + } + + public void addPityPool(int rarity, int pool, int amount) { + switch (rarity) { + case 4: + if (pool == 1) { + pity4Pool1 += amount; + } else { + pity4Pool2 += amount; + } + break; + case 5: + default: + if (pool == 1) { + pity5Pool1 += amount; + } else { + pity5Pool2 += amount; + } + break; + } + } + + public void incPityAll() { + pity4++; + pity5++; + pity4Pool1++; + pity4Pool2++; + pity5Pool1++; + pity5Pool2++; + } } diff --git a/src/main/java/emu/grasscutter/game/home/FurnitureMakeSlotItem.java b/src/main/java/emu/grasscutter/game/home/FurnitureMakeSlotItem.java index d0b8dcbc0..4fbf2c208 100644 --- a/src/main/java/emu/grasscutter/game/home/FurnitureMakeSlotItem.java +++ b/src/main/java/emu/grasscutter/game/home/FurnitureMakeSlotItem.java @@ -3,7 +3,6 @@ package emu.grasscutter.game.home; import dev.morphia.annotations.Entity; import dev.morphia.annotations.Id; import emu.grasscutter.net.proto.FurnitureMakeDataOuterClass; -import emu.grasscutter.net.proto.FurnitureMakeSlotOuterClass; import lombok.AccessLevel; import lombok.Builder; import lombok.Data; @@ -23,11 +22,11 @@ public class FurnitureMakeSlotItem { public FurnitureMakeDataOuterClass.FurnitureMakeData toProto() { return FurnitureMakeDataOuterClass.FurnitureMakeData.newBuilder() - .setIndex(index) - .setAvatarId(avatarId) - .setMakeId(makeId) - .setBeginTime(beginTime) - .setDurTime(durTime) - .build(); + .setIndex(index) + .setAvatarId(avatarId) + .setMakeId(makeId) + .setBeginTime(beginTime) + .setDurTime(durTime) + .build(); } } diff --git a/src/main/java/emu/grasscutter/game/home/GameHome.java b/src/main/java/emu/grasscutter/game/home/GameHome.java index 6b3452a05..8f6787fb4 100644 --- a/src/main/java/emu/grasscutter/game/home/GameHome.java +++ b/src/main/java/emu/grasscutter/game/home/GameHome.java @@ -1,10 +1,6 @@ package emu.grasscutter.game.home; -import dev.morphia.annotations.Entity; -import dev.morphia.annotations.Id; -import dev.morphia.annotations.IndexOptions; -import dev.morphia.annotations.Indexed; -import dev.morphia.annotations.Transient; +import dev.morphia.annotations.*; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.HomeWorldLevelData; @@ -19,12 +15,7 @@ import lombok.experimental.FieldDefaults; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -38,7 +29,8 @@ public class GameHome { @Indexed(options = @IndexOptions(unique = true)) long ownerUid; - @Transient Player player; + @Transient + Player player; int level; int exp; @@ -51,10 +43,6 @@ public class GameHome { Set unlockedHomeBgmList; int enterHomeOption; - public void save() { - DatabaseHelper.saveHome(this); - } - public static GameHome getByUid(Integer uid) { var home = DatabaseHelper.getHomeByUid(uid); if (home == null) { @@ -65,11 +53,15 @@ public class GameHome { public static GameHome create(Integer uid) { return GameHome.of() - .ownerUid(uid) - .level(1) - .sceneMap(new ConcurrentHashMap<>()) - .unlockedHomeBgmList(new HashSet<>()) - .build(); + .ownerUid(uid) + .level(1) + .sceneMap(new ConcurrentHashMap<>()) + .unlockedHomeBgmList(new HashSet<>()) + .build(); + } + + public void save() { + DatabaseHelper.saveHome(this); } public HomeSceneItem getHomeSceneItem(int sceneId) { diff --git a/src/main/java/emu/grasscutter/game/home/HomeAnimalItem.java b/src/main/java/emu/grasscutter/game/home/HomeAnimalItem.java index ea67a69fd..51440c10b 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeAnimalItem.java +++ b/src/main/java/emu/grasscutter/game/home/HomeAnimalItem.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.home; import dev.morphia.annotations.Entity; import emu.grasscutter.net.proto.HomeAnimalDataOuterClass; -import emu.grasscutter.net.proto.HomeFurnitureDataOuterClass; import emu.grasscutter.utils.Position; import lombok.AccessLevel; import lombok.Builder; @@ -18,20 +17,20 @@ public class HomeAnimalItem { Position spawnPos; Position spawnRot; - public HomeAnimalDataOuterClass.HomeAnimalData toProto(){ - return HomeAnimalDataOuterClass.HomeAnimalData.newBuilder() - .setFurnitureId(furnitureId) - .setSpawnPos(spawnPos.toProto()) - .setSpawnRot(spawnRot.toProto()) - .build(); - } - public static HomeAnimalItem parseFrom(HomeAnimalDataOuterClass.HomeAnimalData homeAnimalData) { return HomeAnimalItem.of() - .furnitureId(homeAnimalData.getFurnitureId()) - .spawnPos(new Position(homeAnimalData.getSpawnPos())) - .spawnRot(new Position(homeAnimalData.getSpawnRot())) - .build(); + .furnitureId(homeAnimalData.getFurnitureId()) + .spawnPos(new Position(homeAnimalData.getSpawnPos())) + .spawnRot(new Position(homeAnimalData.getSpawnRot())) + .build(); + } + + public HomeAnimalDataOuterClass.HomeAnimalData toProto() { + return HomeAnimalDataOuterClass.HomeAnimalData.newBuilder() + .setFurnitureId(furnitureId) + .setSpawnPos(spawnPos.toProto()) + .setSpawnRot(spawnRot.toProto()) + .build(); } } diff --git a/src/main/java/emu/grasscutter/game/home/HomeBlockItem.java b/src/main/java/emu/grasscutter/game/home/HomeBlockItem.java index 305f419c0..32c3b058f 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeBlockItem.java +++ b/src/main/java/emu/grasscutter/game/home/HomeBlockItem.java @@ -4,7 +4,6 @@ import dev.morphia.annotations.Entity; import dev.morphia.annotations.Id; import emu.grasscutter.data.binout.HomeworldDefaultSaveData; import emu.grasscutter.net.proto.HomeBlockArrangementInfoOuterClass.HomeBlockArrangementInfo; -import emu.grasscutter.utils.Position; import lombok.AccessLevel; import lombok.Builder; import lombok.Data; @@ -25,37 +24,57 @@ public class HomeBlockItem { List deployAnimalList; List deployNPCList; + public static HomeBlockItem parseFrom(HomeworldDefaultSaveData.HomeBlock homeBlock) { + // create from default setting + return HomeBlockItem.of() + .blockId(homeBlock.getBlockId()) + .unlocked(homeBlock.getFurnitures() != null) + .deployFurnitureList( + homeBlock.getFurnitures() == null ? List.of() : + homeBlock.getFurnitures().stream() + .map(HomeFurnitureItem::parseFrom) + .toList()) + .persistentFurnitureList( + homeBlock.getPersistentFurnitures() == null ? List.of() : + homeBlock.getPersistentFurnitures().stream() + .map(HomeFurnitureItem::parseFrom) + .toList()) + .deployAnimalList(List.of()) + .deployNPCList(List.of()) + .build(); + } + public void update(HomeBlockArrangementInfo homeBlockArrangementInfo) { this.blockId = homeBlockArrangementInfo.getBlockId(); this.deployFurnitureList = homeBlockArrangementInfo.getDeployFurniureListList().stream() - .map(HomeFurnitureItem::parseFrom) - .toList(); + .map(HomeFurnitureItem::parseFrom) + .toList(); this.persistentFurnitureList = homeBlockArrangementInfo.getPersistentFurnitureListList().stream() - .map(HomeFurnitureItem::parseFrom) - .toList(); + .map(HomeFurnitureItem::parseFrom) + .toList(); this.deployAnimalList = homeBlockArrangementInfo.getDeployAnimalListList().stream() - .map(HomeAnimalItem::parseFrom) - .toList(); + .map(HomeAnimalItem::parseFrom) + .toList(); this.deployNPCList = homeBlockArrangementInfo.getDeployNpcListList().stream() - .map(HomeNPCItem::parseFrom) - .toList(); + .map(HomeNPCItem::parseFrom) + .toList(); } public int calComfort() { return this.deployFurnitureList.stream() - .mapToInt(HomeFurnitureItem::getComfort) - .sum(); + .mapToInt(HomeFurnitureItem::getComfort) + .sum(); } public HomeBlockArrangementInfo toProto() { var proto = HomeBlockArrangementInfo.newBuilder() - .setBlockId(blockId) - .setIsUnlocked(unlocked) - .setComfortValue(calComfort()); + .setBlockId(blockId) + .setIsUnlocked(unlocked) + .setComfortValue(calComfort()); this.deployFurnitureList.forEach(f -> proto.addDeployFurniureList(f.toProto())); this.persistentFurnitureList.forEach(f -> proto.addPersistentFurnitureList(f.toProto())); @@ -64,24 +83,4 @@ public class HomeBlockItem { return proto.build(); } - - public static HomeBlockItem parseFrom(HomeworldDefaultSaveData.HomeBlock homeBlock) { - // create from default setting - return HomeBlockItem.of() - .blockId(homeBlock.getBlockId()) - .unlocked(homeBlock.getFurnitures() != null) - .deployFurnitureList( - homeBlock.getFurnitures() == null ? List.of() : - homeBlock.getFurnitures().stream() - .map(HomeFurnitureItem::parseFrom) - .toList()) - .persistentFurnitureList( - homeBlock.getPersistentFurnitures() == null ? List.of() : - homeBlock.getPersistentFurnitures().stream() - .map(HomeFurnitureItem::parseFrom) - .toList()) - .deployAnimalList(List.of()) - .deployNPCList(List.of()) - .build(); - } } diff --git a/src/main/java/emu/grasscutter/game/home/HomeFurnitureItem.java b/src/main/java/emu/grasscutter/game/home/HomeFurnitureItem.java index 7c5f197ef..8ba5768f0 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeFurnitureItem.java +++ b/src/main/java/emu/grasscutter/game/home/HomeFurnitureItem.java @@ -6,7 +6,6 @@ import emu.grasscutter.data.binout.HomeworldDefaultSaveData; import emu.grasscutter.data.excels.ItemData; import emu.grasscutter.net.proto.HomeFurnitureDataOuterClass; import emu.grasscutter.net.proto.HomeMarkPointFurnitureDataOuterClass; -import emu.grasscutter.net.proto.VectorOuterClass; import emu.grasscutter.utils.Position; import lombok.AccessLevel; import lombok.Builder; @@ -24,45 +23,46 @@ public class HomeFurnitureItem { Position spawnPos; Position spawnRot; int version; - public HomeFurnitureDataOuterClass.HomeFurnitureData toProto(){ - return HomeFurnitureDataOuterClass.HomeFurnitureData.newBuilder() - .setFurnitureId(furnitureId) - .setGuid(guid) - .setParentFurnitureIndex(parentFurnitureIndex) - .setSpawnPos(spawnPos.toProto()) - .setSpawnRot(spawnRot.toProto()) - .setVersion(version) - .build(); - } - - public HomeMarkPointFurnitureDataOuterClass.HomeMarkPointFurnitureData toMarkPointProto(int type){ - return HomeMarkPointFurnitureDataOuterClass.HomeMarkPointFurnitureData.newBuilder() - .setFurnitureId(furnitureId) - .setGuid(guid) - .setFurnitureType(type) - .setPos(spawnPos.toProto()) - // TODO NPC and farm - .build(); - } public static HomeFurnitureItem parseFrom(HomeFurnitureDataOuterClass.HomeFurnitureData homeFurnitureData) { return HomeFurnitureItem.of() - .furnitureId(homeFurnitureData.getFurnitureId()) - .guid(homeFurnitureData.getGuid()) - .parentFurnitureIndex(homeFurnitureData.getParentFurnitureIndex()) - .spawnPos(new Position(homeFurnitureData.getSpawnPos())) - .spawnRot(new Position(homeFurnitureData.getSpawnRot())) - .version(homeFurnitureData.getVersion()) - .build(); + .furnitureId(homeFurnitureData.getFurnitureId()) + .guid(homeFurnitureData.getGuid()) + .parentFurnitureIndex(homeFurnitureData.getParentFurnitureIndex()) + .spawnPos(new Position(homeFurnitureData.getSpawnPos())) + .spawnRot(new Position(homeFurnitureData.getSpawnRot())) + .version(homeFurnitureData.getVersion()) + .build(); } public static HomeFurnitureItem parseFrom(HomeworldDefaultSaveData.HomeFurniture homeFurniture) { return HomeFurnitureItem.of() - .furnitureId(homeFurniture.getId()) - .parentFurnitureIndex(1) - .spawnPos(homeFurniture.getPos() == null ? new Position() : homeFurniture.getPos()) - .spawnRot(homeFurniture.getRot() == null ? new Position() : homeFurniture.getRot()) - .build(); + .furnitureId(homeFurniture.getId()) + .parentFurnitureIndex(1) + .spawnPos(homeFurniture.getPos() == null ? new Position() : homeFurniture.getPos()) + .spawnRot(homeFurniture.getRot() == null ? new Position() : homeFurniture.getRot()) + .build(); + } + + public HomeFurnitureDataOuterClass.HomeFurnitureData toProto() { + return HomeFurnitureDataOuterClass.HomeFurnitureData.newBuilder() + .setFurnitureId(furnitureId) + .setGuid(guid) + .setParentFurnitureIndex(parentFurnitureIndex) + .setSpawnPos(spawnPos.toProto()) + .setSpawnRot(spawnRot.toProto()) + .setVersion(version) + .build(); + } + + public HomeMarkPointFurnitureDataOuterClass.HomeMarkPointFurnitureData toMarkPointProto(int type) { + return HomeMarkPointFurnitureDataOuterClass.HomeMarkPointFurnitureData.newBuilder() + .setFurnitureId(furnitureId) + .setGuid(guid) + .setFurnitureType(type) + .setPos(spawnPos.toProto()) + // TODO NPC and farm + .build(); } public ItemData getAsItem() { @@ -72,7 +72,7 @@ public class HomeFurnitureItem { public int getComfort() { var item = getAsItem(); - if (item == null){ + if (item == null) { return 0; } return item.getComfort(); diff --git a/src/main/java/emu/grasscutter/game/home/HomeNPCItem.java b/src/main/java/emu/grasscutter/game/home/HomeNPCItem.java index e86b73e1d..8a538cba8 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeNPCItem.java +++ b/src/main/java/emu/grasscutter/game/home/HomeNPCItem.java @@ -1,7 +1,6 @@ package emu.grasscutter.game.home; import dev.morphia.annotations.Entity; -import emu.grasscutter.net.proto.HomeAnimalDataOuterClass; import emu.grasscutter.net.proto.HomeNpcDataOuterClass; import emu.grasscutter.utils.Position; import lombok.AccessLevel; @@ -19,21 +18,21 @@ public class HomeNPCItem { Position spawnRot; int costumeId; - public HomeNpcDataOuterClass.HomeNpcData toProto(){ - return HomeNpcDataOuterClass.HomeNpcData.newBuilder() - .setAvatarId(avatarId) - .setSpawnPos(spawnPos.toProto()) - .setSpawnRot(spawnRot.toProto()) - .setCostumeId(costumeId) - .build(); - } - public static HomeNPCItem parseFrom(HomeNpcDataOuterClass.HomeNpcData homeNpcData) { return HomeNPCItem.of() - .avatarId(homeNpcData.getAvatarId()) - .spawnPos(new Position(homeNpcData.getSpawnPos())) - .spawnRot(new Position(homeNpcData.getSpawnRot())) - .costumeId(homeNpcData.getCostumeId()) - .build(); + .avatarId(homeNpcData.getAvatarId()) + .spawnPos(new Position(homeNpcData.getSpawnPos())) + .spawnRot(new Position(homeNpcData.getSpawnRot())) + .costumeId(homeNpcData.getCostumeId()) + .build(); + } + + public HomeNpcDataOuterClass.HomeNpcData toProto() { + return HomeNpcDataOuterClass.HomeNpcData.newBuilder() + .setAvatarId(avatarId) + .setSpawnPos(spawnPos.toProto()) + .setSpawnRot(spawnRot.toProto()) + .setCostumeId(costumeId) + .build(); } } diff --git a/src/main/java/emu/grasscutter/game/home/HomeSceneItem.java b/src/main/java/emu/grasscutter/game/home/HomeSceneItem.java index c9c7185a1..5be66efd9 100644 --- a/src/main/java/emu/grasscutter/game/home/HomeSceneItem.java +++ b/src/main/java/emu/grasscutter/game/home/HomeSceneItem.java @@ -28,18 +28,19 @@ public class HomeSceneItem { int homeBgmId; HomeFurnitureItem mainHouse; int tmpVersion; + public static HomeSceneItem parseFrom(HomeworldDefaultSaveData defaultItem, int sceneId) { return HomeSceneItem.of() - .sceneId(sceneId) - .blockItems(defaultItem.getHomeBlockLists().stream() - .map(HomeBlockItem::parseFrom) - .collect(Collectors.toMap(HomeBlockItem::getBlockId, y -> y))) - .bornPos(defaultItem.getBornPos()) - .bornRot(defaultItem.getBornRot() == null ? new Position() : defaultItem.getBornRot()) - .djinnPos(defaultItem.getDjinPos() == null ? new Position() : defaultItem.getDjinPos()) - .mainHouse(defaultItem.getMainhouse() == null ? null : - HomeFurnitureItem.parseFrom(defaultItem.getMainhouse())) - .build(); + .sceneId(sceneId) + .blockItems(defaultItem.getHomeBlockLists().stream() + .map(HomeBlockItem::parseFrom) + .collect(Collectors.toMap(HomeBlockItem::getBlockId, y -> y))) + .bornPos(defaultItem.getBornPos()) + .bornRot(defaultItem.getBornRot() == null ? new Position() : defaultItem.getBornRot()) + .djinnPos(defaultItem.getDjinPos() == null ? new Position() : defaultItem.getDjinPos()) + .mainHouse(defaultItem.getMainhouse() == null ? null : + HomeFurnitureItem.parseFrom(defaultItem.getMainhouse())) + .build(); } public void update(HomeSceneArrangementInfo arrangementInfo) { @@ -70,8 +71,8 @@ public class HomeSceneItem { public int calComfort() { return this.blockItems.values().stream() - .mapToInt(HomeBlockItem::calComfort) - .sum(); + .mapToInt(HomeBlockItem::calComfort) + .sum(); } public HomeSceneArrangementInfo toProto() { @@ -79,13 +80,13 @@ public class HomeSceneItem { blockItems.values().forEach(b -> proto.addBlockArrangementInfoList(b.toProto())); proto.setComfortValue(calComfort()) - .setBornPos(bornPos.toProto()) - .setBornRot(bornRot.toProto()) - .setDjinnPos(djinnPos.toProto()) - .setIsSetBornPos(true) - .setSceneId(sceneId) - .setBgmId(homeBgmId) - .setTmpVersion(tmpVersion); + .setBornPos(bornPos.toProto()) + .setBornRot(bornRot.toProto()) + .setDjinnPos(djinnPos.toProto()) + .setIsSetBornPos(true) + .setSceneId(sceneId) + .setBgmId(homeBgmId) + .setTmpVersion(tmpVersion); if (mainHouse != null) { proto.setMainHouse(mainHouse.toProto()); diff --git a/src/main/java/emu/grasscutter/game/inventory/EquipInventoryTab.java b/src/main/java/emu/grasscutter/game/inventory/EquipInventoryTab.java index e1d6c062f..5082f978e 100644 --- a/src/main/java/emu/grasscutter/game/inventory/EquipInventoryTab.java +++ b/src/main/java/emu/grasscutter/game/inventory/EquipInventoryTab.java @@ -4,36 +4,36 @@ import java.util.HashSet; import java.util.Set; public class EquipInventoryTab implements InventoryTab { - private final Set items; - private final int maxCapacity; - - public EquipInventoryTab(int maxCapacity) { - this.items = new HashSet(); - this.maxCapacity = maxCapacity; - } + private final Set items; + private final int maxCapacity; - @Override - public GameItem getItemById(int id) { - return null; - } + public EquipInventoryTab(int maxCapacity) { + this.items = new HashSet(); + this.maxCapacity = maxCapacity; + } - @Override - public void onAddItem(GameItem item) { - this.items.add(item); - } + @Override + public GameItem getItemById(int id) { + return null; + } - @Override - public void onRemoveItem(GameItem item) { - this.items.remove(item); - } + @Override + public void onAddItem(GameItem item) { + this.items.add(item); + } - @Override - public int getSize() { - return this.items.size(); - } + @Override + public void onRemoveItem(GameItem item) { + this.items.remove(item); + } - @Override - public int getMaxCapacity() { - return this.maxCapacity; - } + @Override + public int getSize() { + return this.items.size(); + } + + @Override + public int getMaxCapacity() { + return this.maxCapacity; + } } diff --git a/src/main/java/emu/grasscutter/game/inventory/EquipType.java b/src/main/java/emu/grasscutter/game/inventory/EquipType.java index a2de82d5d..a80a65a94 100644 --- a/src/main/java/emu/grasscutter/game/inventory/EquipType.java +++ b/src/main/java/emu/grasscutter/game/inventory/EquipType.java @@ -1,45 +1,46 @@ package emu.grasscutter.game.inventory; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum EquipType { - EQUIP_NONE (0), - EQUIP_BRACER (1), - EQUIP_NECKLACE (2), - EQUIP_SHOES (3), - EQUIP_RING (4), - EQUIP_DRESS (5), - EQUIP_WEAPON (6); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private EquipType(int value) { - this.value = value; - } + EQUIP_NONE(0), + EQUIP_BRACER(1), + EQUIP_NECKLACE(2), + EQUIP_SHOES(3), + EQUIP_RING(4), + EQUIP_DRESS(5), + EQUIP_WEAPON(6); - public int getValue() { - return value; - } - - public static EquipType getTypeByValue(int value) { - return map.getOrDefault(value, EQUIP_NONE); - } - - public static EquipType getTypeByName(String name) { - return stringMap.getOrDefault(name, EQUIP_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + EquipType(int value) { + this.value = value; + } + + public static EquipType getTypeByValue(int value) { + return map.getOrDefault(value, EQUIP_NONE); + } + + public static EquipType getTypeByName(String name) { + return stringMap.getOrDefault(name, EQUIP_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/inventory/GameItem.java b/src/main/java/emu/grasscutter/game/inventory/GameItem.java index cf979b073..495ce6c38 100644 --- a/src/main/java/emu/grasscutter/game/inventory/GameItem.java +++ b/src/main/java/emu/grasscutter/game/inventory/GameItem.java @@ -1,18 +1,6 @@ package emu.grasscutter.game.inventory; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.bson.types.ObjectId; - -import dev.morphia.annotations.Entity; -import dev.morphia.annotations.Id; -import dev.morphia.annotations.Indexed; -import dev.morphia.annotations.PostLoad; -import dev.morphia.annotations.Transient; - +import dev.morphia.annotations.*; import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameDepot; import emu.grasscutter.data.common.ItemParamData; @@ -36,34 +24,72 @@ import emu.grasscutter.net.proto.WeaponOuterClass.Weapon; import emu.grasscutter.utils.WeightedList; import lombok.Getter; import lombok.Setter; +import org.bson.types.ObjectId; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; @Entity(value = "items", useDiscriminator = false) public class GameItem { - @Id private ObjectId id; - @Indexed private int ownerId; - @Getter @Setter private int itemId; - @Getter @Setter private int count; + @Id + private ObjectId id; + @Indexed + private int ownerId; + @Getter + @Setter + private int itemId; + @Getter + @Setter + private int count; - @Transient @Getter private long guid; // Player unique id - @Transient @Getter @Setter private ItemData itemData; + @Transient + @Getter + private long guid; // Player unique id + @Transient + @Getter + @Setter + private ItemData itemData; // Equips - @Getter @Setter private int level; - @Getter @Setter private int exp; - @Getter @Setter private int totalExp; - @Getter @Setter private int promoteLevel; - @Getter @Setter private boolean locked; + @Getter + @Setter + private int level; + @Getter + @Setter + private int exp; + @Getter + @Setter + private int totalExp; + @Getter + @Setter + private int promoteLevel; + @Getter + @Setter + private boolean locked; // Weapon - @Getter private List affixes; - @Getter @Setter private int refinement = 0; + @Getter + private List affixes; + @Getter + @Setter + private int refinement = 0; // Relic - @Getter @Setter private int mainPropId; - @Getter private List appendPropIdList; + @Getter + @Setter + private int mainPropId; + @Getter + private List appendPropIdList; - @Getter @Setter private int equipCharacter; - @Transient @Getter @Setter private int weaponEntityId; + @Getter + @Setter + private int equipCharacter; + @Transient + @Getter + @Setter + private int weaponEntityId; public GameItem() { // Morphia only @@ -91,7 +117,7 @@ public class GameItem { switch (data.getItemType()) { case ITEM_VIRTUAL: - this.count = count; + this.count = count; break; case ITEM_WEAPON: this.count = 1; @@ -122,23 +148,6 @@ public class GameItem { } } - public int getOwnerId() { - return ownerId; - } - - public void setOwner(Player player) { - this.ownerId = player.getUid(); - this.guid = player.getNextGameGuid(); - } - - public ObjectId getObjectId() { - return id; - } - - public ItemType getItemType() { - return this.itemData.getItemType(); - } - public static int getMinPromoteLevel(int level) { if (level > 80) { return 6; @@ -156,6 +165,23 @@ public class GameItem { return 0; } + public int getOwnerId() { + return ownerId; + } + + public void setOwner(Player player) { + this.ownerId = player.getUid(); + this.guid = player.getNextGameGuid(); + } + + public ObjectId getObjectId() { + return id; + } + + public ItemType getItemType() { + return this.itemData.getItemType(); + } + public int getEquipSlot() { return this.getItemData().getEquipType().getValue(); } @@ -270,28 +296,28 @@ public class GameItem { public SceneWeaponInfo createSceneWeaponInfo() { SceneWeaponInfo.Builder weaponInfo = SceneWeaponInfo.newBuilder() - .setEntityId(this.getWeaponEntityId()) - .setItemId(this.getItemId()) - .setGuid(this.getGuid()) - .setLevel(this.getLevel()) - .setGadgetId(this.getItemData().getGadgetId()) - .setAbilityInfo(AbilitySyncStateInfo.newBuilder().setIsInited(getAffixes().size() > 0)); + .setEntityId(this.getWeaponEntityId()) + .setItemId(this.getItemId()) + .setGuid(this.getGuid()) + .setLevel(this.getLevel()) + .setGadgetId(this.getItemData().getGadgetId()) + .setAbilityInfo(AbilitySyncStateInfo.newBuilder().setIsInited(getAffixes().size() > 0)); - if (this.getAffixes() != null && this.getAffixes().size() > 0) { - for (int affix : this.getAffixes()) { - weaponInfo.putAffixMap(affix, this.getRefinement()); - } - } + if (this.getAffixes() != null && this.getAffixes().size() > 0) { + for (int affix : this.getAffixes()) { + weaponInfo.putAffixMap(affix, this.getRefinement()); + } + } return weaponInfo.build(); } public SceneReliquaryInfo createSceneReliquaryInfo() { SceneReliquaryInfo relicInfo = SceneReliquaryInfo.newBuilder() - .setItemId(this.getItemId()) - .setGuid(this.getGuid()) - .setLevel(this.getLevel()) - .build(); + .setItemId(this.getItemId()) + .setGuid(this.getGuid()) + .setLevel(this.getLevel()) + .build(); return relicInfo; } @@ -324,8 +350,8 @@ public class GameItem { public Item toProto() { Item.Builder proto = Item.newBuilder() - .setGuid(this.getGuid()) - .setItemId(this.getItemId()); + .setGuid(this.getGuid()) + .setItemId(this.getItemId()); switch (getItemType()) { case ITEM_WEAPON: diff --git a/src/main/java/emu/grasscutter/game/inventory/Inventory.java b/src/main/java/emu/grasscutter/game/inventory/Inventory.java index 22f94881a..ed275838a 100644 --- a/src/main/java/emu/grasscutter/game/inventory/Inventory.java +++ b/src/main/java/emu/grasscutter/game/inventory/Inventory.java @@ -214,7 +214,7 @@ public class Inventory extends BasePlayerManager implements Iterable { case MATERIAL_FLYCLOAK: case MATERIAL_COSTUME: case MATERIAL_NAMECARD: - Grasscutter.getLogger().warn("Attempted to add a "+item.getItemData().getMaterialType().name()+" to inventory, but item definition lacks isUseOnGain. This indicates a Resources error."); + Grasscutter.getLogger().warn("Attempted to add a " + item.getItemData().getMaterialType().name() + " to inventory, but item definition lacks isUseOnGain. This indicates a Resources error."); return null; default: if (tab == null) { @@ -236,7 +236,7 @@ public class Inventory extends BasePlayerManager implements Iterable { existingItem.save(); return existingItem; } - } + } } } diff --git a/src/main/java/emu/grasscutter/game/inventory/InventoryTab.java b/src/main/java/emu/grasscutter/game/inventory/InventoryTab.java index 465c3cffa..e50f884bf 100644 --- a/src/main/java/emu/grasscutter/game/inventory/InventoryTab.java +++ b/src/main/java/emu/grasscutter/game/inventory/InventoryTab.java @@ -1,13 +1,13 @@ package emu.grasscutter.game.inventory; public interface InventoryTab { - public GameItem getItemById(int id); - - public void onAddItem(GameItem item); - - public void onRemoveItem(GameItem item); - - public int getSize(); - - public int getMaxCapacity(); + GameItem getItemById(int id); + + void onAddItem(GameItem item); + + void onRemoveItem(GameItem item); + + int getSize(); + + int getMaxCapacity(); } diff --git a/src/main/java/emu/grasscutter/game/inventory/ItemDef.java b/src/main/java/emu/grasscutter/game/inventory/ItemDef.java index eabda5028..0dde8fd05 100644 --- a/src/main/java/emu/grasscutter/game/inventory/ItemDef.java +++ b/src/main/java/emu/grasscutter/game/inventory/ItemDef.java @@ -1,27 +1,27 @@ package emu.grasscutter.game.inventory; public class ItemDef { - private int itemId; - private int count; - - public ItemDef(int itemId, int count) { - this.itemId = itemId; - this.count = count; - } - - public int getItemId() { - return itemId; - } - - public void setItemId(int itemId) { - this.itemId = itemId; - } + private int itemId; + private int count; - public int getCount() { - return count; - } + public ItemDef(int itemId, int count) { + this.itemId = itemId; + this.count = count; + } - public void setCount(int count) { - this.count = count; - } + public int getItemId() { + return itemId; + } + + public void setItemId(int itemId) { + this.itemId = itemId; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } } diff --git a/src/main/java/emu/grasscutter/game/inventory/ItemQuality.java b/src/main/java/emu/grasscutter/game/inventory/ItemQuality.java index 298fc86cf..a3486e291 100644 --- a/src/main/java/emu/grasscutter/game/inventory/ItemQuality.java +++ b/src/main/java/emu/grasscutter/game/inventory/ItemQuality.java @@ -1,45 +1,46 @@ package emu.grasscutter.game.inventory; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum ItemQuality { - QUALITY_NONE(0), - QUALITY_WHITE(1), - QUALITY_GREEN(2), - QUALITY_BLUE(3), - QUALITY_PURPLE(4), - QUALITY_ORANGE(5), - QUALITY_ORANGE_SP(105); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private ItemQuality(int value) { - this.value = value; - } + QUALITY_NONE(0), + QUALITY_WHITE(1), + QUALITY_GREEN(2), + QUALITY_BLUE(3), + QUALITY_PURPLE(4), + QUALITY_ORANGE(5), + QUALITY_ORANGE_SP(105); - public int getValue() { - return value; - } - - public static ItemQuality getTypeByValue(int value) { - return map.getOrDefault(value, QUALITY_NONE); - } - - public static ItemQuality getTypeByName(String name) { - return stringMap.getOrDefault(name, QUALITY_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + ItemQuality(int value) { + this.value = value; + } + + public static ItemQuality getTypeByValue(int value) { + return map.getOrDefault(value, QUALITY_NONE); + } + + public static ItemQuality getTypeByName(String name) { + return stringMap.getOrDefault(name, QUALITY_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/inventory/ItemType.java b/src/main/java/emu/grasscutter/game/inventory/ItemType.java index 5ea6d1b78..7f6d64e8f 100644 --- a/src/main/java/emu/grasscutter/game/inventory/ItemType.java +++ b/src/main/java/emu/grasscutter/game/inventory/ItemType.java @@ -1,45 +1,46 @@ package emu.grasscutter.game.inventory; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum ItemType { - ITEM_NONE (0), - ITEM_VIRTUAL (1), - ITEM_MATERIAL (2), - ITEM_RELIQUARY (3), - ITEM_WEAPON (4), - ITEM_DISPLAY (5), - ITEM_FURNITURE (6); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private ItemType(int value) { - this.value = value; - } + ITEM_NONE(0), + ITEM_VIRTUAL(1), + ITEM_MATERIAL(2), + ITEM_RELIQUARY(3), + ITEM_WEAPON(4), + ITEM_DISPLAY(5), + ITEM_FURNITURE(6); - public int getValue() { - return value; - } - - public static ItemType getTypeByValue(int value) { - return map.getOrDefault(value, ITEM_NONE); - } - - public static ItemType getTypeByName(String name) { - return stringMap.getOrDefault(name, ITEM_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + ItemType(int value) { + this.value = value; + } + + public static ItemType getTypeByValue(int value) { + return map.getOrDefault(value, ITEM_NONE); + } + + public static ItemType getTypeByName(String name) { + return stringMap.getOrDefault(name, ITEM_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/inventory/MaterialInventoryTab.java b/src/main/java/emu/grasscutter/game/inventory/MaterialInventoryTab.java index 7cea186db..9ebf0d7f1 100644 --- a/src/main/java/emu/grasscutter/game/inventory/MaterialInventoryTab.java +++ b/src/main/java/emu/grasscutter/game/inventory/MaterialInventoryTab.java @@ -4,36 +4,36 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; public class MaterialInventoryTab implements InventoryTab { - private final Int2ObjectMap items; - private final int maxCapacity; - - public MaterialInventoryTab(int maxCapacity) { - this.items = new Int2ObjectOpenHashMap<>(); - this.maxCapacity = maxCapacity; - } - - @Override - public GameItem getItemById(int id) { - return this.items.get(id); - } + private final Int2ObjectMap items; + private final int maxCapacity; - @Override - public void onAddItem(GameItem item) { - this.items.put(item.getItemId(), item); - } + public MaterialInventoryTab(int maxCapacity) { + this.items = new Int2ObjectOpenHashMap<>(); + this.maxCapacity = maxCapacity; + } - @Override - public void onRemoveItem(GameItem item) { - this.items.remove(item.getItemId()); - } + @Override + public GameItem getItemById(int id) { + return this.items.get(id); + } - @Override - public int getSize() { - return this.items.size(); - } + @Override + public void onAddItem(GameItem item) { + this.items.put(item.getItemId(), item); + } - @Override - public int getMaxCapacity() { - return this.maxCapacity; - } + @Override + public void onRemoveItem(GameItem item) { + this.items.remove(item.getItemId()); + } + + @Override + public int getSize() { + return this.items.size(); + } + + @Override + public int getMaxCapacity() { + return this.maxCapacity; + } } diff --git a/src/main/java/emu/grasscutter/game/inventory/MaterialType.java b/src/main/java/emu/grasscutter/game/inventory/MaterialType.java index 463ed5356..486435d29 100644 --- a/src/main/java/emu/grasscutter/game/inventory/MaterialType.java +++ b/src/main/java/emu/grasscutter/game/inventory/MaterialType.java @@ -1,56 +1,55 @@ package emu.grasscutter.game.inventory; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum MaterialType { - MATERIAL_NONE (0), - MATERIAL_FOOD (1), - MATERIAL_QUEST (2), - MATERIAL_EXCHANGE (4), - MATERIAL_CONSUME (5), - MATERIAL_EXP_FRUIT (6), - MATERIAL_AVATAR (7), - MATERIAL_ADSORBATE (8), - MATERIAL_CRICKET (9), - MATERIAL_ELEM_CRYSTAL (10), - MATERIAL_WEAPON_EXP_STONE (11), - MATERIAL_CHEST (12), - MATERIAL_RELIQUARY_MATERIAL (13), - MATERIAL_AVATAR_MATERIAL (14), - MATERIAL_NOTICE_ADD_HP (15), - MATERIAL_SEA_LAMP (16), - MATERIAL_SELECTABLE_CHEST (17), - MATERIAL_FLYCLOAK (18), - MATERIAL_NAMECARD (19), - MATERIAL_TALENT (20), - MATERIAL_WIDGET (21), - MATERIAL_CHEST_BATCH_USE (22), - MATERIAL_FAKE_ABSORBATE (23), - MATERIAL_CONSUME_BATCH_USE (24), - MATERIAL_WOOD (25), - MATERIAL_FURNITURE_FORMULA (27), - MATERIAL_CHANNELLER_SLAB_BUFF (28), - MATERIAL_FURNITURE_SUITE_FORMULA (29), - MATERIAL_COSTUME (30), - MATERIAL_HOME_SEED (31), - MATERIAL_FISH_BAIT (32), - MATERIAL_FISH_ROD (33), - MATERIAL_SUMO_BUFF (34), - MATERIAL_FIREWORKS (35), - MATERIAL_BGM (36), - MATERIAL_SPICE_FOOD (37), - MATERIAL_ACTIVITY_ROBOT (38), - MATERIAL_ACTIVITY_GEAR (39), - MATERIAL_ACTIVITY_JIGSAW (40), - MATERIAL_ARANARA (41), - MATERIAL_DESHRET_MANUAL (46); + MATERIAL_NONE(0), + MATERIAL_FOOD(1), + MATERIAL_QUEST(2), + MATERIAL_EXCHANGE(4), + MATERIAL_CONSUME(5), + MATERIAL_EXP_FRUIT(6), + MATERIAL_AVATAR(7), + MATERIAL_ADSORBATE(8), + MATERIAL_CRICKET(9), + MATERIAL_ELEM_CRYSTAL(10), + MATERIAL_WEAPON_EXP_STONE(11), + MATERIAL_CHEST(12), + MATERIAL_RELIQUARY_MATERIAL(13), + MATERIAL_AVATAR_MATERIAL(14), + MATERIAL_NOTICE_ADD_HP(15), + MATERIAL_SEA_LAMP(16), + MATERIAL_SELECTABLE_CHEST(17), + MATERIAL_FLYCLOAK(18), + MATERIAL_NAMECARD(19), + MATERIAL_TALENT(20), + MATERIAL_WIDGET(21), + MATERIAL_CHEST_BATCH_USE(22), + MATERIAL_FAKE_ABSORBATE(23), + MATERIAL_CONSUME_BATCH_USE(24), + MATERIAL_WOOD(25), + MATERIAL_FURNITURE_FORMULA(27), + MATERIAL_CHANNELLER_SLAB_BUFF(28), + MATERIAL_FURNITURE_SUITE_FORMULA(29), + MATERIAL_COSTUME(30), + MATERIAL_HOME_SEED(31), + MATERIAL_FISH_BAIT(32), + MATERIAL_FISH_ROD(33), + MATERIAL_SUMO_BUFF(34), + MATERIAL_FIREWORKS(35), + MATERIAL_BGM(36), + MATERIAL_SPICE_FOOD(37), + MATERIAL_ACTIVITY_ROBOT(38), + MATERIAL_ACTIVITY_GEAR(39), + MATERIAL_ACTIVITY_JIGSAW(40), + MATERIAL_ARANARA(41), + MATERIAL_DESHRET_MANUAL(46); - private final int value; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); private static final Map stringMap = new HashMap<>(); @@ -61,12 +60,10 @@ public enum MaterialType { }); } - private MaterialType(int value) { - this.value = value; - } + private final int value; - public int getValue() { - return value; + MaterialType(int value) { + this.value = value; } public static MaterialType getTypeByValue(int value) { @@ -76,4 +73,8 @@ public enum MaterialType { public static MaterialType getTypeByName(String name) { return stringMap.getOrDefault(name, MATERIAL_NONE); } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/mail/Mail.java b/src/main/java/emu/grasscutter/game/mail/Mail.java index 286db6ef6..98b44ecd1 100644 --- a/src/main/java/emu/grasscutter/game/mail/Mail.java +++ b/src/main/java/emu/grasscutter/game/mail/Mail.java @@ -6,17 +6,14 @@ import dev.morphia.annotations.Indexed; import dev.morphia.annotations.Transient; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.Player; +import org.bson.types.ObjectId; import java.time.Instant; import java.util.ArrayList; import java.util.List; -import org.bson.types.ObjectId; - @Entity(value = "mail", useDiscriminator = false) public class Mail { - @Id private ObjectId id; - @Indexed private int ownerUid; public MailContent mailContent; public List itemList; public long sendTime; @@ -25,7 +22,12 @@ public class Mail { public boolean isRead; public boolean isAttachmentGot; public int stateValue; - @Transient private boolean shouldDelete; + @Id + private ObjectId id; + @Indexed + private int ownerUid; + @Transient + private boolean shouldDelete; public Mail() { this(new MailContent(), new ArrayList(), (int) Instant.now().getEpochSecond() + 604800); // TODO: add expire time to send mail command @@ -51,18 +53,26 @@ public class Mail { } public ObjectId getId() { - return id; - } + return id; + } - public int getOwnerUid() { - return ownerUid; - } + public int getOwnerUid() { + return ownerUid; + } - public void setOwnerUid(int ownerUid) { - this.ownerUid = ownerUid; - } + public void setOwnerUid(int ownerUid) { + this.ownerUid = ownerUid; + } - @Entity + public void save() { + if (this.expireTime * 1000 < System.currentTimeMillis()) { + DatabaseHelper.deleteMail(this); + } else { + DatabaseHelper.saveMail(this); + } + } + + @Entity public static class MailContent { public String title; public String content; @@ -105,7 +115,9 @@ public class Mail { this(itemId, 1); } - public MailItem(int itemId, int itemCount) { this(itemId, itemCount, 1); } + public MailItem(int itemId, int itemCount) { + this(itemId, itemCount, 1); + } public MailItem(int itemId, int itemCount, int itemLevel) { this.itemId = itemId; @@ -113,12 +125,4 @@ public class Mail { this.itemLevel = itemLevel; } } - - public void save() { - if (this.expireTime * 1000 < System.currentTimeMillis()) { - DatabaseHelper.deleteMail(this); - } else { - DatabaseHelper.saveMail(this); - } - } } diff --git a/src/main/java/emu/grasscutter/game/mail/MailHandler.java b/src/main/java/emu/grasscutter/game/mail/MailHandler.java index 7d0880c27..4b1390d14 100644 --- a/src/main/java/emu/grasscutter/game/mail/MailHandler.java +++ b/src/main/java/emu/grasscutter/game/mail/MailHandler.java @@ -1,9 +1,5 @@ package emu.grasscutter.game.mail; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import emu.grasscutter.Grasscutter; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.BasePlayerManager; @@ -12,6 +8,10 @@ import emu.grasscutter.server.event.player.PlayerReceiveMailEvent; import emu.grasscutter.server.packet.send.PacketDelMailRsp; import emu.grasscutter.server.packet.send.PacketMailChangeNotify; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + public class MailHandler extends BasePlayerManager { private final List mail; @@ -29,15 +29,17 @@ public class MailHandler extends BasePlayerManager { public void sendMail(Mail message) { // Call mail receive event. - PlayerReceiveMailEvent event = new PlayerReceiveMailEvent(this.getPlayer(), message); event.call(); - if (event.isCanceled()) return; message = event.getMessage(); + PlayerReceiveMailEvent event = new PlayerReceiveMailEvent(this.getPlayer(), message); + event.call(); + if (event.isCanceled()) return; + message = event.getMessage(); message.setOwnerUid(this.getPlayer().getUid()); message.save(); this.mail.add(message); - Grasscutter.getLogger().debug("Mail sent to user [" + this.getPlayer().getUid() + ":" + this.getPlayer().getNickname() + "]!"); + Grasscutter.getLogger().debug("Mail sent to user [" + this.getPlayer().getUid() + ":" + this.getPlayer().getNickname() + "]!"); if (this.getPlayer().isOnline()) { this.getPlayer().sendPacket(new PacketMailChangeNotify(this.getPlayer(), message)); @@ -75,7 +77,9 @@ public class MailHandler extends BasePlayerManager { player.getSession().send(new PacketMailChangeNotify(player, null, deleted)); } - public Mail getMailById(int index) { return this.mail.get(index); } + public Mail getMailById(int index) { + return this.mail.get(index); + } public int getMailIndex(Mail message) { return this.mail.indexOf(message); diff --git a/src/main/java/emu/grasscutter/game/managers/FurnitureManager.java b/src/main/java/emu/grasscutter/game/managers/FurnitureManager.java index a6f69cf8f..3e3801432 100644 --- a/src/main/java/emu/grasscutter/game/managers/FurnitureManager.java +++ b/src/main/java/emu/grasscutter/game/managers/FurnitureManager.java @@ -68,18 +68,18 @@ public class FurnitureManager extends BasePlayerManager { } var furnitureSlot = FurnitureMakeSlotItem.of() - .avatarId(avatarId) - .makeId(makeId) - .beginTime(Utils.getCurrentSeconds()) - .durTime(makeData.getMakeTime()) - .build(); + .avatarId(avatarId) + .makeId(makeId) + .beginTime(Utils.getCurrentSeconds()) + .durTime(makeData.getMakeTime()) + .build(); // add furniture make task player.getHome().getFurnitureMakeSlotItemList().add(furnitureSlot); player.getSession().send(new PacketFurnitureMakeStartRsp(Retcode.RET_SUCC_VALUE, - player.getHome().getFurnitureMakeSlotItemList().stream() - .map(FurnitureMakeSlotItem::toProto) - .toList() + player.getHome().getFurnitureMakeSlotItemList().stream() + .map(FurnitureMakeSlotItem::toProto) + .toList() )); player.getHome().save(); @@ -102,8 +102,8 @@ public class FurnitureManager extends BasePlayerManager { } var slotItem = player.getHome().getFurnitureMakeSlotItemList().stream() - .filter(x -> x.getIndex() == index && x.getMakeId() == makeId) - .findFirst(); + .filter(x -> x.getIndex() == index && x.getMakeId() == makeId) + .findFirst(); if (slotItem.isEmpty()) { player.getSession().send(new PacketTakeFurnitureMakeRsp(Retcode.RET_FURNITURE_MAKE_NO_MAKE_DATA_VALUE, makeId, null, null)); @@ -111,7 +111,7 @@ public class FurnitureManager extends BasePlayerManager { } // pay the speedup item - if (isFastFinish && !player.getInventory().payItem(107013,1)) { + if (isFastFinish && !player.getInventory().payItem(107013, 1)) { player.getSession().send(new PacketTakeFurnitureMakeRsp(Retcode.RET_FURNITURE_MAKE_UNFINISH_VALUE, makeId, null, null)); return; } @@ -129,14 +129,14 @@ public class FurnitureManager extends BasePlayerManager { player.getInventory().addItem(121, makeData.getExp(), ActionReason.FurnitureMakeTake); player.getSession().send(new PacketTakeFurnitureMakeRsp(Retcode.RET_SUCC_VALUE, makeId, - List.of(ItemParamOuterClass.ItemParam.newBuilder() - .setItemId(makeData.getFurnitureItemID()) - .setCount(makeData.getCount()) - .build()), - player.getHome().getFurnitureMakeSlotItemList().stream() - .map(FurnitureMakeSlotItem::toProto) - .toList() - )); + List.of(ItemParamOuterClass.ItemParam.newBuilder() + .setItemId(makeData.getFurnitureItemID()) + .setCount(makeData.getCount()) + .build()), + player.getHome().getFurnitureMakeSlotItemList().stream() + .map(FurnitureMakeSlotItem::toProto) + .toList() + )); player.getHome().save(); } } diff --git a/src/main/java/emu/grasscutter/game/managers/ResinManager.java b/src/main/java/emu/grasscutter/game/managers/ResinManager.java index d6056571e..a86427dfa 100644 --- a/src/main/java/emu/grasscutter/game/managers/ResinManager.java +++ b/src/main/java/emu/grasscutter/game/managers/ResinManager.java @@ -1,15 +1,14 @@ package emu.grasscutter.game.managers; -import static emu.grasscutter.config.Configuration.GAME_OPTIONS; - import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.game.props.WatcherTriggerType; -import emu.grasscutter.server.packet.send.PacketPlayerPropNotify; import emu.grasscutter.server.packet.send.PacketResinChangeNotify; import emu.grasscutter.utils.Utils; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + public class ResinManager extends BasePlayerManager { public ResinManager(Player player) { @@ -104,7 +103,7 @@ public class ResinManager extends BasePlayerManager { // Calculate how much resin we need to refill and update player. // Note that this can be more than one in case the player // logged off with uncapped resin and is now logging in again. - int recharge = 1 + (int)((currentTime - this.player.getNextResinRefresh()) / GAME_OPTIONS.resinOptions.rechargeTime); + int recharge = 1 + ((currentTime - this.player.getNextResinRefresh()) / GAME_OPTIONS.resinOptions.rechargeTime); int newResin = Math.min(GAME_OPTIONS.resinOptions.cap, currentResin + recharge); int resinChange = newResin - currentResin; @@ -114,8 +113,7 @@ public class ResinManager extends BasePlayerManager { // Set to zero to disable recharge (because on/over cap.) if (newResin >= GAME_OPTIONS.resinOptions.cap) { this.player.setNextResinRefresh(0); - } - else { + } else { int nextRecharge = this.player.getNextResinRefresh() + resinChange * GAME_OPTIONS.resinOptions.rechargeTime; this.player.setNextResinRefresh(nextRecharge); } diff --git a/src/main/java/emu/grasscutter/game/managers/SatiationManager.java b/src/main/java/emu/grasscutter/game/managers/SatiationManager.java index 22c011a5f..843244116 100644 --- a/src/main/java/emu/grasscutter/game/managers/SatiationManager.java +++ b/src/main/java/emu/grasscutter/game/managers/SatiationManager.java @@ -1,16 +1,16 @@ package emu.grasscutter.game.managers; -import java.util.HashMap; -import java.util.Map; - import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.PlayerProperty; +import emu.grasscutter.server.packet.send.PacketAvatarPropNotify; import emu.grasscutter.server.packet.send.PacketAvatarSatiationDataNotify; import emu.grasscutter.server.packet.send.PacketPlayerGameTimeNotify; import emu.grasscutter.server.packet.send.PacketPlayerTimeNotify; -import emu.grasscutter.server.packet.send.PacketAvatarPropNotify; + +import java.util.HashMap; +import java.util.Map; public class SatiationManager extends BasePlayerManager { @@ -38,7 +38,7 @@ public class SatiationManager extends BasePlayerManager { // Penalty long penaltyTime = playerTime; long penaltyValue = avatar.getSatiationPenalty(); - if(totalSatiation + avatar.getSatiation() > 10000 && penaltyValue == 0) { + if (totalSatiation + avatar.getSatiation() > 10000 && penaltyValue == 0) { // Penalty is always 30sec penaltyTime += 30; penaltyValue = 3000; diff --git a/src/main/java/emu/grasscutter/game/managers/SotSManager.java b/src/main/java/emu/grasscutter/game/managers/SotSManager.java index 4ecb30ff2..f6f71b6dd 100644 --- a/src/main/java/emu/grasscutter/game/managers/SotSManager.java +++ b/src/main/java/emu/grasscutter/game/managers/SotSManager.java @@ -21,11 +21,10 @@ public class SotSManager extends BasePlayerManager { // NOTE: Spring volume balance *1 = fight prop HP *100 - private final Logger logger = Grasscutter.getLogger(); - private Timer autoRecoverTimer; - private final boolean enablePriorityHealing = false; - public final static int GlobalMaximumSpringVolume = PlayerProperty.PROP_MAX_SPRING_VOLUME.getMax(); + private final Logger logger = Grasscutter.getLogger(); + private final boolean enablePriorityHealing = false; + private Timer autoRecoverTimer; public SotSManager(Player player) { super(player); @@ -107,33 +106,6 @@ public class SotSManager extends BasePlayerManager { }); } - private class AutoRecoverTimerTick extends TimerTask { - // autoRecover checks player setting to see if auto recover is enabled, and refill HP to the predefined level. - public void run() { - refillSpringVolume(); - - logger.trace("isAutoRecoveryEnabled: " + getIsAutoRecoveryEnabled() + "\tautoRecoverPercentage: " + getAutoRecoveryPercentage()); - - if (getIsAutoRecoveryEnabled()) { - List activeTeam = player.getTeamManager().getActiveTeam(); - // When the statue does not have enough remaining volume: - // Enhanced experience: Enable priority healing - // The current active character will get healed first, then sequential. - // Vanilla experience: Disable priority healing - // Sequential healing based on character index. - int priorityIndex = enablePriorityHealing ? player.getTeamManager().getCurrentCharacterIndex() : -1; - if (priorityIndex >= 0) { - checkAndHealAvatar(activeTeam.get(priorityIndex)); - } - for (int i = 0; i < activeTeam.size(); i++) { - if (i != priorityIndex) { - checkAndHealAvatar(activeTeam.get(i)); - } - } - } - } - } - public void checkAndHealAvatar(EntityAvatar entity) { int maxHP = (int) (entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * 100); int currentHP = (int) (entity.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) * 100); @@ -157,8 +129,8 @@ public class SotSManager extends BasePlayerManager { logger.trace("Healing avatar " + entity.getAvatar().getAvatarData().getName() + " +" + needHP); player.getTeamManager().healAvatar(entity.getAvatar(), 0, needHP); player.getSession().send(new PacketEntityFightPropChangeReasonNotify(entity, FightProperty.FIGHT_PROP_CUR_HP, - ((float) needHP / 100), List.of(3), PropChangeReason.PROP_CHANGE_REASON_STATUE_RECOVER, - ChangeHpReason.CHANGE_HP_REASON_ADD_STATUE)); + ((float) needHP / 100), List.of(3), PropChangeReason.PROP_CHANGE_REASON_STATUE_RECOVER, + ChangeHpReason.CHANGE_HP_REASON_ADD_STATUE)); player.getSession().send(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP)); } @@ -188,4 +160,31 @@ public class SotSManager extends BasePlayerManager { setCurrentVolume(currentVolume); } } + + private class AutoRecoverTimerTick extends TimerTask { + // autoRecover checks player setting to see if auto recover is enabled, and refill HP to the predefined level. + public void run() { + refillSpringVolume(); + + logger.trace("isAutoRecoveryEnabled: " + getIsAutoRecoveryEnabled() + "\tautoRecoverPercentage: " + getAutoRecoveryPercentage()); + + if (getIsAutoRecoveryEnabled()) { + List activeTeam = player.getTeamManager().getActiveTeam(); + // When the statue does not have enough remaining volume: + // Enhanced experience: Enable priority healing + // The current active character will get healed first, then sequential. + // Vanilla experience: Disable priority healing + // Sequential healing based on character index. + int priorityIndex = enablePriorityHealing ? player.getTeamManager().getCurrentCharacterIndex() : -1; + if (priorityIndex >= 0) { + checkAndHealAvatar(activeTeam.get(priorityIndex)); + } + for (int i = 0; i < activeTeam.size(); i++) { + if (i != priorityIndex) { + checkAndHealAvatar(activeTeam.get(i)); + } + } + } + } + } } diff --git a/src/main/java/emu/grasscutter/game/managers/blossom/BlossomActivity.java b/src/main/java/emu/grasscutter/game/managers/blossom/BlossomActivity.java index a01829c02..01ffc79ab 100644 --- a/src/main/java/emu/grasscutter/game/managers/blossom/BlossomActivity.java +++ b/src/main/java/emu/grasscutter/game/managers/blossom/BlossomActivity.java @@ -23,23 +23,24 @@ import java.util.Queue; public class BlossomActivity { + private static final int BLOOMING_GADGET_ID = 70210109; private final SceneGroup tempSceneGroup; private final WorldChallenge challenge; private final EntityGadget gadget; - private EntityGadget chest; - private int step; private final int goal; - private int generatedCount; private final int worldLevel; - private boolean pass=false; private final List activeMonsters = new ArrayList<>(); private final Queue candidateMonsters = new ArrayDeque<>(); - private static final int BLOOMING_GADGET_ID = 70210109; + private EntityGadget chest; + private int step; + private int generatedCount; + private boolean pass = false; + public BlossomActivity(EntityGadget entityGadget, List monsters, int timeout, int worldLevel) { this.tempSceneGroup = new SceneGroup(); this.tempSceneGroup.id = entityGadget.getId(); - this.gadget=entityGadget; - this.step=0; + this.gadget = entityGadget; + this.step = 0; this.goal = monsters.size(); this.candidateMonsters.addAll(monsters); this.worldLevel = worldLevel; @@ -54,9 +55,11 @@ public class BlossomActivity { challengeTriggers.add(new KillMonsterTrigger()); //this.challengeTriggers.add(new InTimeTrigger()); } + public WorldChallenge getChallenge() { return this.challenge; } + public void setMonsters(List monsters) { this.activeMonsters.clear(); this.activeMonsters.addAll(monsters); @@ -64,26 +67,30 @@ public class BlossomActivity { monster.setGroupId(this.tempSceneGroup.id); } } + public int getAliveMonstersCount() { - int count=0; - for (EntityMonster monster: activeMonsters) { + int count = 0; + for (EntityMonster monster : activeMonsters) { if (monster.isAlive()) { count++; } } return count; } + public boolean getPass() { return pass; } + public void start() { challenge.start(); } + public void onTick() { Scene scene = gadget.getScene(); Position pos = gadget.getPosition(); if (getAliveMonstersCount() <= 2) { - if (generatedCount newMonsters = new ArrayList<>(); - int willSpawn = Utils.randomRange(3,5); - if (generatedCount+willSpawn>goal) { + int willSpawn = Utils.randomRange(3, 5); + if (generatedCount + willSpawn > goal) { willSpawn = goal - generatedCount; } - generatedCount+=willSpawn; + generatedCount += willSpawn; for (int i = 0; i < willSpawn; i++) { MonsterData monsterData = GameData.getMonsterDataMap().get(candidateMonsters.poll()); int level = scene.getEntityLevel(1, worldLevelOverride); @@ -106,7 +113,7 @@ public class BlossomActivity { newMonsters.add(entity); } setMonsters(newMonsters); - }else { + } else { if (getAliveMonstersCount() == 0) { this.pass = true; this.challenge.done(); @@ -114,11 +121,13 @@ public class BlossomActivity { } } } + public EntityGadget getGadget() { return gadget; } + public EntityGadget getChest() { - if (chest==null) { + if (chest == null) { EntityGadget rewardGadget = new EntityGadget(gadget.getScene(), BLOOMING_GADGET_ID, gadget.getPosition()); SceneGadget metaGadget = new SceneGadget(); metaGadget.boss_chest = new SceneBossChest(); diff --git a/src/main/java/emu/grasscutter/game/managers/blossom/BlossomConfig.java b/src/main/java/emu/grasscutter/game/managers/blossom/BlossomConfig.java index 22046ef42..7bc512e02 100644 --- a/src/main/java/emu/grasscutter/game/managers/blossom/BlossomConfig.java +++ b/src/main/java/emu/grasscutter/game/managers/blossom/BlossomConfig.java @@ -1,12 +1,14 @@ package emu.grasscutter.game.managers.blossom; +import lombok.Getter; + import java.util.List; import java.util.Map; -import lombok.Getter; - public class BlossomConfig { - @Getter private int monsterFightingVolume; + @Getter + private int monsterFightingVolume; // @Getter private Int2ObjectMap monsterIdsPerDifficulty; // Need to wrangle Gson for this - @Getter private Map> monsterIdsPerDifficulty; + @Getter + private Map> monsterIdsPerDifficulty; } diff --git a/src/main/java/emu/grasscutter/game/managers/blossom/BlossomManager.java b/src/main/java/emu/grasscutter/game/managers/blossom/BlossomManager.java index f7a1e619e..7a75c7c1b 100644 --- a/src/main/java/emu/grasscutter/game/managers/blossom/BlossomManager.java +++ b/src/main/java/emu/grasscutter/game/managers/blossom/BlossomManager.java @@ -1,8 +1,5 @@ package emu.grasscutter.game.managers.blossom; -import java.util.ArrayList; -import java.util.List; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameDepot; @@ -23,18 +20,58 @@ import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; -public class BlossomManager { - public BlossomManager(Scene scene) { - this.scene = scene; - } +import java.util.ArrayList; +import java.util.List; +public class BlossomManager { private final Scene scene; private final List blossomActivities = new ArrayList<>(); private final List activeChests = new ArrayList<>(); private final List createdEntity = new ArrayList<>(); - private final List blossomConsumed = new ArrayList<>(); + public BlossomManager(Scene scene) { + this.scene = scene; + } + + private static Integer getPreviewReward(BlossomType type, int worldLevel) { + // TODO: blossoms should be based on their city + if (type == null) { + Grasscutter.getLogger().error("Illegal blossom type {}", type); + return null; + } + + int blossomChestId = type.getBlossomChestId(); + var dataMap = GameData.getBlossomRefreshExcelConfigDataMap(); + for (var data : dataMap.values()) { + if (blossomChestId == data.getBlossomChestId()) { + var dropVecList = data.getDropVec(); + if (worldLevel > dropVecList.length) { + Grasscutter.getLogger().error("Illegal world level {}", worldLevel); + return null; + } + return dropVecList[worldLevel].getPreviewReward(); + } + } + Grasscutter.getLogger().error("Cannot find blossom type {}", type); + return null; + } + + private static RewardPreviewData getRewardList(BlossomType type, int worldLevel) { + Integer previewReward = getPreviewReward(type, worldLevel); + if (previewReward == null) return null; + return GameData.getRewardPreviewDataMap().get((int) previewReward); + } + + public static IntList getRandomMonstersID(int difficulty, int count) { + IntList result = new IntArrayList(); + List monsters = GameDepot.getBlossomConfig().getMonsterIdsPerDifficulty().get(difficulty); + for (int i = 0; i < count; i++) { + result.add((int) monsters.get(Utils.randomRange(0, monsters.size() - 1))); + } + return result; + } + public void onTick() { synchronized (blossomActivities) { var it = blossomActivities.iterator(); @@ -69,7 +106,7 @@ public class BlossomManager { return; } var id = gadget.getGadgetId(); - if (BlossomType.valueOf(id)==null) { + if (BlossomType.valueOf(id) == null) { return; } gadget.buildContent(); @@ -87,27 +124,27 @@ public class BlossomManager { } } - int volume=0; + int volume = 0; IntList monsters = new IntArrayList(); while (true) { var remain = GameDepot.getBlossomConfig().getMonsterFightingVolume() - volume; - if (remain<=0) { + if (remain <= 0) { break; } - var rand = Utils.randomRange(1,100); - if (rand>85 && remain>=50) {//15% ,generate strong monster - monsters.addAll(getRandomMonstersID(2,1)); - volume+=50; - }else if (rand>50 && remain>=20) {//35% ,generate normal monster - monsters.addAll(getRandomMonstersID(1,1)); - volume+=20; - }else {//50% ,generate weak monster - monsters.addAll(getRandomMonstersID(0,1)); - volume+=10; + var rand = Utils.randomRange(1, 100); + if (rand > 85 && remain >= 50) {//15% ,generate strong monster + monsters.addAll(getRandomMonstersID(2, 1)); + volume += 50; + } else if (rand > 50 && remain >= 20) {//35% ,generate normal monster + monsters.addAll(getRandomMonstersID(1, 1)); + volume += 20; + } else {//50% ,generate weak monster + monsters.addAll(getRandomMonstersID(0, 1)); + volume += 10; } } - Grasscutter.getLogger().info("Blossom Monsters:"+monsters); + Grasscutter.getLogger().info("Blossom Monsters:" + monsters); activity = new BlossomActivity(entityGadget, monsters, -1, worldLevel); blossomActivities.add(activity); @@ -158,35 +195,6 @@ public class BlossomManager { return scene.getWorld().getWorldLevel(); } - private static Integer getPreviewReward(BlossomType type, int worldLevel) { - // TODO: blossoms should be based on their city - if (type == null) { - Grasscutter.getLogger().error("Illegal blossom type {}",type); - return null; - } - - int blossomChestId = type.getBlossomChestId(); - var dataMap = GameData.getBlossomRefreshExcelConfigDataMap(); - for (var data : dataMap.values()) { - if (blossomChestId == data.getBlossomChestId()) { - var dropVecList = data.getDropVec(); - if (worldLevel > dropVecList.length) { - Grasscutter.getLogger().error("Illegal world level {}", worldLevel); - return null; - } - return dropVecList[worldLevel].getPreviewReward(); - } - } - Grasscutter.getLogger().error("Cannot find blossom type {}",type); - return null; - } - - private static RewardPreviewData getRewardList(BlossomType type, int worldLevel) { - Integer previewReward = getPreviewReward(type, worldLevel); - if (previewReward == null) return null; - return GameData.getRewardPreviewDataMap().get((int) previewReward); - } - public List onReward(Player player, EntityGadget chest, boolean useCondensedResin) { var resinManager = player.getResinManager(); synchronized (activeChests) { @@ -202,7 +210,7 @@ public class BlossomManager { var type = BlossomType.valueOf(gadget.getGadgetId()); RewardPreviewData blossomRewards = getRewardList(type, worldLevel); if (blossomRewards == null) { - Grasscutter.getLogger().error("Blossom could not support world level : "+worldLevel); + Grasscutter.getLogger().error("Blossom could not support world level : " + worldLevel); return null; } var rewards = blossomRewards.getPreviewItems(); @@ -211,7 +219,7 @@ public class BlossomManager { if (useCondensedResin) { rewardCount += blossomReward.getCount(); // Double! } - items.add(new GameItem(blossomReward.getItemId(),rewardCount)); + items.add(new GameItem(blossomReward.getItemId(), rewardCount)); } it.remove(); recycleGadgetEntity(List.of(gadget)); @@ -224,13 +232,4 @@ public class BlossomManager { } return null; } - - public static IntList getRandomMonstersID(int difficulty,int count) { - IntList result = new IntArrayList(); - List monsters = GameDepot.getBlossomConfig().getMonsterIdsPerDifficulty().get(difficulty); - for (int i=0; i map = new Int2ObjectOpenHashMap<>( + Stream.of(values()).collect(Collectors.toMap(x -> x.getGadgetId(), x -> x)) + ); + @Getter + private final int gadgetId; + @Getter + private final int circleCampId; + @Getter + private final int blossomChestId; BlossomType(int gadgetId, int circleCampId, int blossomChestId) { this.gadgetId = gadgetId; @@ -22,10 +28,6 @@ public enum BlossomType { this.blossomChestId = blossomChestId; } - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>( - Stream.of(values()).collect(Collectors.toMap(x -> x.getGadgetId(), x -> x)) - ); - public static BlossomType valueOf(int i) { return map.get(i); } diff --git a/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java b/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java index 245a530c6..093e891e7 100644 --- a/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java +++ b/src/main/java/emu/grasscutter/game/managers/cooking/CookingCompoundManager.java @@ -115,7 +115,7 @@ public class CookingCompoundManager extends BasePlayerManager { GameItem item = allRewards.get(i.getId()); item.setCount(item.getCount() + i.getCount() * quantity); } else { - allRewards.put(i.getId(), new GameItem(i.getId(), i.getCount()*quantity)); + allRewards.put(i.getId(), new GameItem(i.getId(), i.getCount() * quantity)); } } success = true; @@ -130,6 +130,6 @@ public class CookingCompoundManager extends BasePlayerManager { } public void onPlayerLogin() { - player.sendPacket(new PacketCompoundDataNotify(unlocked,getCompoundQueueData())); + player.sendPacket(new PacketCompoundDataNotify(unlocked, getCompoundQueueData())); } } diff --git a/src/main/java/emu/grasscutter/game/managers/cooking/CookingManager.java b/src/main/java/emu/grasscutter/game/managers/cooking/CookingManager.java index f103cc338..a3bf15105 100644 --- a/src/main/java/emu/grasscutter/game/managers/cooking/CookingManager.java +++ b/src/main/java/emu/grasscutter/game/managers/cooking/CookingManager.java @@ -1,10 +1,5 @@ package emu.grasscutter.game.managers.cooking; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.data.excels.ItemData; @@ -22,6 +17,11 @@ import emu.grasscutter.server.packet.send.PacketPlayerCookArgsRsp; import emu.grasscutter.server.packet.send.PacketPlayerCookRsp; import io.netty.util.internal.ThreadLocalRandom; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + public class CookingManager extends BasePlayerManager { private static final int MANUAL_PERFECT_COOK_QUALITY = 3; private static Set defaultUnlockedRecipies; @@ -94,8 +94,8 @@ public class CookingManager extends BasePlayerManager { // Get result item information. int qualityIndex = quality == 0 - ? 2 - : quality - 1; + ? 2 + : quality - 1; ItemParamData resultParam = recipeData.getQualityOutputVec().get(qualityIndex); ItemData resultItemData = GameData.getItemDataMap().get(resultParam.getItemId()); @@ -146,7 +146,7 @@ public class CookingManager extends BasePlayerManager { this.player.sendPacket(new PacketPlayerCookArgsRsp()); } - /******************** + /******************** * Notify unlocked recipies. ********************/ private void addDefaultUnlocked() { diff --git a/src/main/java/emu/grasscutter/game/managers/deforestation/DeforestationManager.java b/src/main/java/emu/grasscutter/game/managers/deforestation/DeforestationManager.java index 93eca6597..d3a4b89d9 100644 --- a/src/main/java/emu/grasscutter/game/managers/deforestation/DeforestationManager.java +++ b/src/main/java/emu/grasscutter/game/managers/deforestation/DeforestationManager.java @@ -1,9 +1,5 @@ package emu.grasscutter.game.managers.deforestation; -import java.util.ArrayList; -import java.util.HashMap; - -import dev.morphia.annotations.Transient; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.game.entity.EntityItem; @@ -14,44 +10,49 @@ import emu.grasscutter.net.proto.HitTreeNotifyOuterClass; import emu.grasscutter.net.proto.VectorOuterClass; import emu.grasscutter.utils.Position; +import java.util.ArrayList; +import java.util.HashMap; + public class DeforestationManager extends BasePlayerManager { - final static int RECORD_EXPIRED_SECONDS = 60*5; // 5 min + final static int RECORD_EXPIRED_SECONDS = 60 * 5; // 5 min final static int RECORD_MAX_TIMES = 3; // max number of wood final static int RECORD_MAX_TIMES_OTHER_HIT_TREE = 10; // if hit 10 times other trees, reset wood - - private final ArrayList currentRecord; private final static HashMap ColliderTypeToWoodItemID = new HashMap<>(); static { /* define wood types which reflected to item id*/ - ColliderTypeToWoodItemID.put(1,101301); - ColliderTypeToWoodItemID.put(2,101302); - ColliderTypeToWoodItemID.put(3,101303); - ColliderTypeToWoodItemID.put(4,101304); - ColliderTypeToWoodItemID.put(5,101305); - ColliderTypeToWoodItemID.put(6,101306); - ColliderTypeToWoodItemID.put(7,101307); - ColliderTypeToWoodItemID.put(8,101308); - ColliderTypeToWoodItemID.put(9,101309); - ColliderTypeToWoodItemID.put(10,101310); - ColliderTypeToWoodItemID.put(11,101311); - ColliderTypeToWoodItemID.put(12,101312); - ColliderTypeToWoodItemID.put(13,101313); - ColliderTypeToWoodItemID.put(14,101314); - ColliderTypeToWoodItemID.put(15,101315); - ColliderTypeToWoodItemID.put(16,101316); - ColliderTypeToWoodItemID.put(17,101317); + ColliderTypeToWoodItemID.put(1, 101301); + ColliderTypeToWoodItemID.put(2, 101302); + ColliderTypeToWoodItemID.put(3, 101303); + ColliderTypeToWoodItemID.put(4, 101304); + ColliderTypeToWoodItemID.put(5, 101305); + ColliderTypeToWoodItemID.put(6, 101306); + ColliderTypeToWoodItemID.put(7, 101307); + ColliderTypeToWoodItemID.put(8, 101308); + ColliderTypeToWoodItemID.put(9, 101309); + ColliderTypeToWoodItemID.put(10, 101310); + ColliderTypeToWoodItemID.put(11, 101311); + ColliderTypeToWoodItemID.put(12, 101312); + ColliderTypeToWoodItemID.put(13, 101313); + ColliderTypeToWoodItemID.put(14, 101314); + ColliderTypeToWoodItemID.put(15, 101315); + ColliderTypeToWoodItemID.put(16, 101316); + ColliderTypeToWoodItemID.put(17, 101317); } + private final ArrayList currentRecord; + public DeforestationManager(Player player) { super(player); this.currentRecord = new ArrayList<>(); } + public void resetWood() { synchronized (currentRecord) { currentRecord.clear(); } } + public void onDeforestationInvoke(HitTreeNotifyOuterClass.HitTreeNotify hit) { synchronized (currentRecord) { //Grasscutter.getLogger().info("onDeforestationInvoke! Wood records {}", currentRecord); @@ -64,20 +65,20 @@ public class DeforestationManager extends BasePlayerManager { HitTreeRecord record = searchRecord(positionHash); if (record == null) { record = new HitTreeRecord(positionHash); - }else { + } else { currentRecord.remove(record);// move it to last position } currentRecord.add(record); - if (currentRecord.size()>RECORD_MAX_TIMES_OTHER_HIT_TREE) { + if (currentRecord.size() > RECORD_MAX_TIMES_OTHER_HIT_TREE) { currentRecord.remove(0); } if (record.record()) { EntityItem entity = new EntityItem(scene, - null, - GameData.getItemDataMap().get(itemId), - new Position(hitPosition.getX(), hitPosition.getY(), hitPosition.getZ()), - 1, - false); + null, + GameData.getItemDataMap().get(itemId), + new Position(hitPosition.getX(), hitPosition.getY(), hitPosition.getZ()), + 1, + false); scene.addEntity(entity); } //record.record()=false : too many wood they have deforested, no more wood dropped! @@ -87,6 +88,7 @@ public class DeforestationManager extends BasePlayerManager { } // unknown wood type } + private HitTreeRecord searchRecord(int id) { for (HitTreeRecord record : currentRecord) { if (record.getUnique() == id) { diff --git a/src/main/java/emu/grasscutter/game/managers/deforestation/HitTreeRecord.java b/src/main/java/emu/grasscutter/game/managers/deforestation/HitTreeRecord.java index e2341f10a..e59f755fe 100644 --- a/src/main/java/emu/grasscutter/game/managers/deforestation/HitTreeRecord.java +++ b/src/main/java/emu/grasscutter/game/managers/deforestation/HitTreeRecord.java @@ -1,12 +1,12 @@ package emu.grasscutter.game.managers.deforestation; - public class HitTreeRecord { private final int unique; private short count; // hit this tree times private long time; // last available hitting time - HitTreeRecord(int unique){ + + HitTreeRecord(int unique) { this.count = 0; this.time = 0; this.unique = unique; @@ -15,7 +15,7 @@ public class HitTreeRecord { /** * reset hit time */ - private void resetTime(){ + private void resetTime() { this.time = System.currentTimeMillis(); } @@ -23,7 +23,7 @@ public class HitTreeRecord { /** * commit hit behavior */ - public boolean record(){ + public boolean record() { if (this.count < DeforestationManager.RECORD_MAX_TIMES) { this.count++; resetTime(); @@ -31,27 +31,28 @@ public class HitTreeRecord { } // check expired boolean isWaiting = System.currentTimeMillis() - this.time < DeforestationManager.RECORD_EXPIRED_SECONDS * 1000L; - if(isWaiting){ + if (isWaiting) { return false; - }else{ + } else { this.count = 1; resetTime(); return true; } } + /** * get unique id */ - public int getUnique(){ + public int getUnique() { return unique; } @Override public String toString() { return "HitTreeRecord{" + - "unique=" + unique + - ", count=" + count + - ", time=" + time + - '}'; + "unique=" + unique + + ", count=" + count + + ", time=" + time + + '}'; } } diff --git a/src/main/java/emu/grasscutter/game/managers/energy/EnergyManager.java b/src/main/java/emu/grasscutter/game/managers/energy/EnergyManager.java index e9eacd3d8..79a0e8c55 100644 --- a/src/main/java/emu/grasscutter/game/managers/energy/EnergyManager.java +++ b/src/main/java/emu/grasscutter/game/managers/energy/EnergyManager.java @@ -1,5 +1,6 @@ package emu.grasscutter.game.managers.energy; +import com.google.protobuf.InvalidProtocolBufferException; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.DataLoader; import emu.grasscutter.data.GameData; @@ -7,23 +8,13 @@ import emu.grasscutter.data.excels.AvatarSkillDepotData; import emu.grasscutter.data.excels.ItemData; import emu.grasscutter.data.excels.MonsterData.HpDrops; import emu.grasscutter.game.avatar.Avatar; -import emu.grasscutter.game.entity.EntityAvatar; -import emu.grasscutter.game.entity.EntityClientGadget; -import emu.grasscutter.game.entity.EntityItem; -import emu.grasscutter.game.entity.EntityMonster; -import emu.grasscutter.game.entity.GameEntity; -import emu.grasscutter.game.inventory.GameItem; -import emu.grasscutter.game.inventory.MaterialType; +import emu.grasscutter.game.entity.*; import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.ElementType; import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.game.props.ItemUseOp; -import emu.grasscutter.game.props.ItemUseTarget; import emu.grasscutter.game.props.MonsterType; import emu.grasscutter.game.props.WeaponType; -import emu.grasscutter.game.props.ItemUseAction.ItemUseAction; -import emu.grasscutter.game.props.ItemUseAction.ItemUseAddEnergy; import emu.grasscutter.net.proto.AbilityActionGenerateElemBallOuterClass.AbilityActionGenerateElemBall; import emu.grasscutter.net.proto.AbilityIdentifierOuterClass.AbilityIdentifier; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; @@ -44,19 +35,16 @@ import java.util.concurrent.ThreadLocalRandom; import static emu.grasscutter.config.Configuration.GAME_OPTIONS; -import com.google.protobuf.InvalidProtocolBufferException; - public class EnergyManager extends BasePlayerManager { - private final Object2IntMap avatarNormalProbabilities; - - private boolean energyUsage; // Should energy usage be enabled for this player? private final static Int2ObjectMap> energyDropData = new Int2ObjectOpenHashMap<>(); private final static Int2ObjectMap> skillParticleGenerationData = new Int2ObjectOpenHashMap<>(); + private final Object2IntMap avatarNormalProbabilities; + private boolean energyUsage; // Should energy usage be enabled for this player? public EnergyManager(Player player) { super(player); this.avatarNormalProbabilities = new Object2IntOpenHashMap<>(); - this.energyUsage=GAME_OPTIONS.energyUsage; + this.energyUsage = GAME_OPTIONS.energyUsage; } public static void initialize() { @@ -67,8 +55,7 @@ public class EnergyManager extends BasePlayerManager { }); Grasscutter.getLogger().debug("Energy drop data successfully loaded."); - } - catch (Exception ex) { + } catch (Exception ex) { Grasscutter.getLogger().error("Unable to load energy drop data.", ex); } @@ -79,8 +66,7 @@ public class EnergyManager extends BasePlayerManager { }); Grasscutter.getLogger().debug("Skill particle generation data successfully loaded."); - } - catch (Exception ex) { + } catch (Exception ex) { Grasscutter.getLogger().error("Unable to load skill particle generation data data.", ex); } } @@ -183,6 +169,7 @@ public class EnergyManager extends BasePlayerManager { /** * Energy generation for NAs/CAs. + * * @param avatar The avatar. */ private void generateEnergyForNormalAndCharged(EntityAvatar avatar) { @@ -277,8 +264,8 @@ public class EnergyManager extends BasePlayerManager { public void handleEvtDoSkillSuccNotify(GameSession session, int skillId, int casterId) { // Determine the entity that has cast the skill. Cancel if we can't find that avatar. Optional caster = this.player.getTeamManager().getActiveTeam().stream() - .filter(character -> character.getId() == casterId) - .findFirst(); + .filter(character -> character.getId() == casterId) + .findFirst(); if (caster.isEmpty()) { return; @@ -367,15 +354,15 @@ public class EnergyManager extends BasePlayerManager { // particle being generated). If the scene entity is an `EntityClientGadget`, we need to find the // ID of the original owner of that gadget. int avatarEntityId = - (!(entity instanceof EntityClientGadget)) - ? invokeEntityId - : ((EntityClientGadget)entity).getOriginalOwnerEntityId(); + (!(entity instanceof EntityClientGadget)) + ? invokeEntityId + : ((EntityClientGadget) entity).getOriginalOwnerEntityId(); // Finally, find the avatar entity in the player's team. return this.player.getTeamManager().getActiveTeam() - .stream() - .filter(character -> character.getId() == avatarEntityId) - .findFirst(); + .stream() + .filter(character -> character.getId() == avatarEntityId) + .findFirst(); } public boolean getEnergyUsage() { @@ -386,7 +373,7 @@ public class EnergyManager extends BasePlayerManager { this.energyUsage = energyUsage; if (!energyUsage) { // Refill team energy if usage is disabled for (EntityAvatar entityAvatar : this.player.getTeamManager().getActiveTeam()) { - entityAvatar.addEnergy(1000, PropChangeReason.PROP_CHANGE_REASON_GM,true); + entityAvatar.addEnergy(1000, PropChangeReason.PROP_CHANGE_REASON_GM, true); } } } diff --git a/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationEntry.java b/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationEntry.java index 2a65fbddd..b7047a930 100644 --- a/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationEntry.java +++ b/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationEntry.java @@ -3,14 +3,14 @@ package emu.grasscutter.game.managers.energy; import java.util.List; public class SkillParticleGenerationEntry { - private int avatarId; - private List amountList; + private int avatarId; + private List amountList; - public int getAvatarId() { - return this.avatarId; - } + public int getAvatarId() { + return this.avatarId; + } - public List getAmountList() { - return this.amountList; - } + public List getAmountList() { + return this.amountList; + } } diff --git a/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationInfo.java b/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationInfo.java index 6513c98f8..c9ce4067a 100644 --- a/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationInfo.java +++ b/src/main/java/emu/grasscutter/game/managers/energy/SkillParticleGenerationInfo.java @@ -1,14 +1,14 @@ package emu.grasscutter.game.managers.energy; public class SkillParticleGenerationInfo { - private int value; - private int chance; + private int value; + private int chance; - public int getValue() { - return this.value; - } + public int getValue() { + return this.value; + } - public int getChance() { - return this.chance; - } + public int getChance() { + return this.chance; + } } diff --git a/src/main/java/emu/grasscutter/game/managers/forging/ActiveForgeData.java b/src/main/java/emu/grasscutter/game/managers/forging/ActiveForgeData.java index ff5048c7f..cab430578 100644 --- a/src/main/java/emu/grasscutter/game/managers/forging/ActiveForgeData.java +++ b/src/main/java/emu/grasscutter/game/managers/forging/ActiveForgeData.java @@ -28,8 +28,8 @@ public class ActiveForgeData { public int getNextFinishTimestamp(int currentTime) { return (currentTime >= this.getTotalFinishTimestamp()) - ? this.getTotalFinishTimestamp() - : (this.getFinishedCount(currentTime) * this.forgeTime + this.forgeTime + this.startTime); + ? this.getTotalFinishTimestamp() + : (this.getFinishedCount(currentTime) * this.forgeTime + this.forgeTime + this.startTime); } public int getTotalFinishTimestamp() { @@ -39,6 +39,7 @@ public class ActiveForgeData { public int getForgeId() { return this.forgeId; } + public void setForgeId(int value) { this.forgeId = value; } @@ -46,6 +47,7 @@ public class ActiveForgeData { public int getAvatarId() { return this.avatarId; } + public void setAvatarId(int value) { this.avatarId = value; } @@ -53,6 +55,7 @@ public class ActiveForgeData { public int getCount() { return count; } + public void setCount(int value) { this.count = value; } @@ -60,6 +63,7 @@ public class ActiveForgeData { public int getStartTime() { return this.startTime; } + public void setStartTime(int value) { this.startTime = value; } @@ -67,6 +71,7 @@ public class ActiveForgeData { public int getForgeTime() { return this.forgeTime; } + public void setForgeTime(int value) { this.forgeTime = value; } @@ -74,6 +79,7 @@ public class ActiveForgeData { public boolean isChanged() { return this.changed; } + public void setChanged(boolean value) { this.changed = value; } diff --git a/src/main/java/emu/grasscutter/game/managers/forging/ForgingManager.java b/src/main/java/emu/grasscutter/game/managers/forging/ForgingManager.java index eda0d8121..020822f2e 100644 --- a/src/main/java/emu/grasscutter/game/managers/forging/ForgingManager.java +++ b/src/main/java/emu/grasscutter/game/managers/forging/ForgingManager.java @@ -1,10 +1,5 @@ package emu.grasscutter.game.managers.forging; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.data.excels.ForgeData; @@ -19,14 +14,14 @@ import emu.grasscutter.net.proto.ForgeQueueManipulateReqOuterClass.ForgeQueueMan import emu.grasscutter.net.proto.ForgeQueueManipulateTypeOuterClass.ForgeQueueManipulateType; import emu.grasscutter.net.proto.ForgeStartReqOuterClass.ForgeStartReq; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; -import emu.grasscutter.server.packet.send.PacketForgeDataNotify; -import emu.grasscutter.server.packet.send.PacketForgeFormulaDataNotify; -import emu.grasscutter.server.packet.send.PacketForgeGetQueueDataRsp; -import emu.grasscutter.server.packet.send.PacketForgeQueueDataNotify; -import emu.grasscutter.server.packet.send.PacketForgeQueueManipulateRsp; -import emu.grasscutter.server.packet.send.PacketForgeStartRsp; +import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.Utils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class ForgingManager extends BasePlayerManager { public ForgingManager(Player player) { @@ -34,8 +29,8 @@ public class ForgingManager extends BasePlayerManager { } /********** - Blueprint unlocking. - **********/ + Blueprint unlocking. + **********/ public boolean unlockForgingBlueprint(int id) { // Tell the client that this blueprint is now unlocked and add the unlocked item to the player. if (!this.player.getUnlockedForgingBlueprints().add(id)) { @@ -46,15 +41,15 @@ public class ForgingManager extends BasePlayerManager { } /********** - Communicate forging information to the client. - **********/ + Communicate forging information to the client. + **********/ private synchronized int determineNumberOfQueues() { int adventureRank = player.getLevel(); return (adventureRank >= 15) ? 4 - : (adventureRank >= 10) ? 3 - : (adventureRank >= 5) ? 2 - : 1; + : (adventureRank >= 10) ? 3 + : (adventureRank >= 5) ? 2 + : 1; } private synchronized Map determineCurrentForgeQueueData() { @@ -101,12 +96,13 @@ public class ForgingManager extends BasePlayerManager { } /********** - Initiate forging process. - **********/ + Initiate forging process. + **********/ private synchronized void sendForgeQueueDataNotify() { var queueData = this.determineCurrentForgeQueueData(); this.player.sendPacket(new PacketForgeQueueDataNotify(queueData, List.of())); } + private synchronized void sendForgeQueueDataNotify(boolean hasRemoved) { var queueData = this.determineCurrentForgeQueueData(); @@ -169,8 +165,8 @@ public class ForgingManager extends BasePlayerManager { } /********** - Forge queue manipulation (obtaining results and cancelling forges). - **********/ + Forge queue manipulation (obtaining results and cancelling forges). + **********/ private synchronized void obtainItems(int queueId) { // Determine how many items are finished. int currentTime = Utils.getCurrentSeconds(); @@ -280,8 +276,8 @@ public class ForgingManager extends BasePlayerManager { } /********** - Periodic forging updates. - **********/ + Periodic forging updates. + **********/ public synchronized void sendPlayerForgingUpdate() { int currentTime = Utils.getCurrentSeconds(); @@ -293,7 +289,7 @@ public class ForgingManager extends BasePlayerManager { } boolean hasChanges = this.player.getActiveForges().stream() - .anyMatch(forge -> forge.updateChanged(currentTime)); + .anyMatch(forge -> forge.updateChanged(currentTime)); if (!hasChanges) { return; diff --git a/src/main/java/emu/grasscutter/game/managers/mapmark/MapMark.java b/src/main/java/emu/grasscutter/game/managers/mapmark/MapMark.java index a3a65ab9e..9753108a4 100644 --- a/src/main/java/emu/grasscutter/game/managers/mapmark/MapMark.java +++ b/src/main/java/emu/grasscutter/game/managers/mapmark/MapMark.java @@ -11,9 +11,9 @@ public class MapMark { private int sceneId; private String name; private Position position; - private MapMarkPointType mapMarkPointType; + private final MapMarkPointType mapMarkPointType; private int monsterId; - private MapMarkFromType mapMarkFromType; + private final MapMarkFromType mapMarkFromType; private int questId; @Deprecated // Morhpia diff --git a/src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java b/src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java index 0016feb63..fa1048547 100644 --- a/src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java +++ b/src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java @@ -54,7 +54,7 @@ public class MapMarksManager extends BasePlayerManager { } public String getMapMarkKey(Position position) { - return "x" + (int)position.getX()+ "z" + (int)position.getZ(); + return "x" + (int) position.getX() + "z" + (int) position.getZ(); } public void removeMapMark(Position position) { diff --git a/src/main/java/emu/grasscutter/game/managers/stamina/BeforeUpdateStaminaListener.java b/src/main/java/emu/grasscutter/game/managers/stamina/BeforeUpdateStaminaListener.java index 0d47dcee2..7b069cabf 100644 --- a/src/main/java/emu/grasscutter/game/managers/stamina/BeforeUpdateStaminaListener.java +++ b/src/main/java/emu/grasscutter/game/managers/stamina/BeforeUpdateStaminaListener.java @@ -4,17 +4,20 @@ public interface BeforeUpdateStaminaListener { /** * onBeforeUpdateStamina() will be called before StaminaManager attempt to update the player's current stamina. * This gives listeners a chance to intercept this update. - * @param reason Why updating stamina. + * + * @param reason Why updating stamina. * @param newStamina New ABSOLUTE stamina value. * @return true if you want to cancel this update, otherwise false. */ int onBeforeUpdateStamina(String reason, int newStamina, boolean isCharacterStamina); + /** * onBeforeUpdateStamina() will be called before StaminaManager attempt to update the player's current stamina. * This gives listeners a chance to intercept this update. - * @param reason Why updating stamina. + * + * @param reason Why updating stamina. * @param consumption ConsumptionType and RELATIVE stamina change amount. * @return true if you want to cancel this update, otherwise false. */ Consumption onBeforeUpdateStamina(String reason, Consumption consumption, boolean isCharacterStamina); -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/game/managers/stamina/README.md b/src/main/java/emu/grasscutter/game/managers/stamina/README.md index 87f88b151..8957f2ae9 100644 --- a/src/main/java/emu/grasscutter/game/managers/stamina/README.md +++ b/src/main/java/emu/grasscutter/game/managers/stamina/README.md @@ -1,28 +1,36 @@ # Stamina Manager --- + ## UpdateStamina + ```java // will use consumption.consumptionType as reason public int updateStaminaRelative(GameSession session, Consumption consumption); ``` + ```java public int updateStaminaAbsolute(GameSession session, String reason, int newStamina) ``` --- + ## Pause and Resume + ```java public void startSustainedStaminaHandler() ``` + ```java public void stopSustainedStaminaHandler() ``` - --- + ## Stamina change listeners and intercepting + ### BeforeUpdateStaminaListener + ```java import emu.grasscutter.game.managers.StaminaManager.BeforeUpdateStaminaListener; @@ -44,15 +52,14 @@ private class MyClass implements BeforeUpdateStaminaListener { @Override public boolean onBeforeUpdateStamina(String reason, Consumption consumption) { // Try to intercept if this update is CLIMB_JUMP - if (consumption.consumptionType == ConsumptionType.CLIMB_JUMP) { - return true; - } + return consumption.consumptionType == ConsumptionType.CLIMB_JUMP; // If it is not CLIMB_JUMP, do not intercept. - return false; } } ``` + ### AfterUpdateStaminaListener + ```java import emu.grasscutter.game.managers.StaminaManager.AfterUpdateStaminaListener; @@ -70,4 +77,4 @@ private class MyClass implements AfterUpdateStaminaListener { // ... } } -``` \ No newline at end of file +``` diff --git a/src/main/java/emu/grasscutter/game/managers/stamina/StaminaManager.java b/src/main/java/emu/grasscutter/game/managers/stamina/StaminaManager.java index 96ff6954a..8f0f5dbb6 100644 --- a/src/main/java/emu/grasscutter/game/managers/stamina/StaminaManager.java +++ b/src/main/java/emu/grasscutter/game/managers/stamina/StaminaManager.java @@ -18,115 +18,101 @@ import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType; import emu.grasscutter.net.proto.VectorOuterClass.Vector; import emu.grasscutter.net.proto.VehicleInteractTypeOuterClass.VehicleInteractType; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.*; +import emu.grasscutter.server.packet.send.PacketAvatarLifeStateChangeNotify; +import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify; +import emu.grasscutter.server.packet.send.PacketLifeStateChangeNotify; +import emu.grasscutter.server.packet.send.PacketVehicleStaminaNotify; import emu.grasscutter.utils.Position; import org.jetbrains.annotations.NotNull; -import static emu.grasscutter.config.Configuration.GAME_OPTIONS; - import java.util.*; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + public class StaminaManager extends BasePlayerManager { + public final static int GlobalCharacterMaximumStamina = PlayerProperty.PROP_MAX_STAMINA.getMax(); + public final static int GlobalVehicleMaxStamina = PlayerProperty.PROP_MAX_STAMINA.getMax(); // TODO: Skiff state detection? private static final Map> MotionStatesCategorized = new HashMap<>() {{ put("CLIMB", Set.of( - MotionState.MOTION_STATE_CLIMB, // sustained, when not moving no cost no recover - MotionState.MOTION_STATE_STANDBY_TO_CLIMB // NOT OBSERVED, see MOTION_JUMP_UP_WALL_FOR_STANDBY + MotionState.MOTION_STATE_CLIMB, // sustained, when not moving no cost no recover + MotionState.MOTION_STATE_STANDBY_TO_CLIMB // NOT OBSERVED, see MOTION_JUMP_UP_WALL_FOR_STANDBY )); put("DASH", Set.of( - MotionState.MOTION_STATE_DANGER_DASH, // sustained - MotionState.MOTION_STATE_DASH // sustained + MotionState.MOTION_STATE_DANGER_DASH, // sustained + MotionState.MOTION_STATE_DASH // sustained )); put("FLY", Set.of( - MotionState.MOTION_STATE_FLY, // sustained - MotionState.MOTION_STATE_FLY_FAST, // sustained - MotionState.MOTION_STATE_FLY_SLOW, // sustained - MotionState.MOTION_STATE_POWERED_FLY // sustained, recover + MotionState.MOTION_STATE_FLY, // sustained + MotionState.MOTION_STATE_FLY_FAST, // sustained + MotionState.MOTION_STATE_FLY_SLOW, // sustained + MotionState.MOTION_STATE_POWERED_FLY // sustained, recover )); put("RUN", Set.of( - MotionState.MOTION_STATE_DANGER_RUN, // sustained, recover - MotionState.MOTION_STATE_RUN // sustained, recover + MotionState.MOTION_STATE_DANGER_RUN, // sustained, recover + MotionState.MOTION_STATE_RUN // sustained, recover )); put("SKIFF", Set.of( - MotionState.MOTION_STATE_SKIFF_BOARDING, // NOT OBSERVED even when boarding - MotionState.MOTION_STATE_SKIFF_DASH, // sustained, observed with waverider entity ID. - MotionState.MOTION_STATE_SKIFF_NORMAL, // sustained, OBSERVED when both normal and dashing - MotionState.MOTION_STATE_SKIFF_POWERED_DASH // sustained, recover + MotionState.MOTION_STATE_SKIFF_BOARDING, // NOT OBSERVED even when boarding + MotionState.MOTION_STATE_SKIFF_DASH, // sustained, observed with waverider entity ID. + MotionState.MOTION_STATE_SKIFF_NORMAL, // sustained, OBSERVED when both normal and dashing + MotionState.MOTION_STATE_SKIFF_POWERED_DASH // sustained, recover )); put("STANDBY", Set.of( - MotionState.MOTION_STATE_DANGER_STANDBY_MOVE, // sustained, recover - MotionState.MOTION_STATE_DANGER_STANDBY, // sustained, recover - MotionState.MOTION_STATE_LADDER_TO_STANDBY, // NOT OBSERVED - MotionState.MOTION_STATE_STANDBY_MOVE, // sustained, recover - MotionState.MOTION_STATE_STANDBY // sustained, recover + MotionState.MOTION_STATE_DANGER_STANDBY_MOVE, // sustained, recover + MotionState.MOTION_STATE_DANGER_STANDBY, // sustained, recover + MotionState.MOTION_STATE_LADDER_TO_STANDBY, // NOT OBSERVED + MotionState.MOTION_STATE_STANDBY_MOVE, // sustained, recover + MotionState.MOTION_STATE_STANDBY // sustained, recover )); put("SWIM", Set.of( - MotionState.MOTION_STATE_SWIM_IDLE, // sustained - MotionState.MOTION_STATE_SWIM_DASH, // immediate and sustained - MotionState.MOTION_STATE_SWIM_JUMP, // NOT OBSERVED - MotionState.MOTION_STATE_SWIM_MOVE // sustained + MotionState.MOTION_STATE_SWIM_IDLE, // sustained + MotionState.MOTION_STATE_SWIM_DASH, // immediate and sustained + MotionState.MOTION_STATE_SWIM_JUMP, // NOT OBSERVED + MotionState.MOTION_STATE_SWIM_MOVE // sustained )); put("WALK", Set.of( - MotionState.MOTION_STATE_DANGER_WALK, // sustained, recover - MotionState.MOTION_STATE_WALK // sustained, recover + MotionState.MOTION_STATE_DANGER_WALK, // sustained, recover + MotionState.MOTION_STATE_WALK // sustained, recover )); put("OTHER", Set.of( - MotionState.MOTION_STATE_CLIMB_JUMP, // cost only once if repeated without switching state - MotionState.MOTION_STATE_DASH_BEFORE_SHAKE, // immediate one time sprint charge. - MotionState.MOTION_STATE_FIGHT, // immediate, if sustained then subsequent will be MOTION_NOTIFY - MotionState.MOTION_STATE_JUMP_UP_WALL_FOR_STANDBY, // immediate, observed when RUN/WALK->CLIMB - MotionState.MOTION_STATE_NOTIFY, // can be either cost or recover - check previous state and check skill casting - MotionState.MOTION_STATE_SIT_IDLE, // sustained, recover - MotionState.MOTION_STATE_JUMP // recover + MotionState.MOTION_STATE_CLIMB_JUMP, // cost only once if repeated without switching state + MotionState.MOTION_STATE_DASH_BEFORE_SHAKE, // immediate one time sprint charge. + MotionState.MOTION_STATE_FIGHT, // immediate, if sustained then subsequent will be MOTION_NOTIFY + MotionState.MOTION_STATE_JUMP_UP_WALL_FOR_STANDBY, // immediate, observed when RUN/WALK->CLIMB + MotionState.MOTION_STATE_NOTIFY, // can be either cost or recover - check previous state and check skill casting + MotionState.MOTION_STATE_SIT_IDLE, // sustained, recover + MotionState.MOTION_STATE_JUMP // recover )); put("NOCOST_NORECOVER", Set.of( - MotionState.MOTION_STATE_LADDER_SLIP, // NOT OBSERVED - MotionState.MOTION_STATE_SLIP, // sustained, no cost no recover - MotionState.MOTION_STATE_FLY_IDLE // NOT OBSERVED + MotionState.MOTION_STATE_LADDER_SLIP, // NOT OBSERVED + MotionState.MOTION_STATE_SLIP, // sustained, no cost no recover + MotionState.MOTION_STATE_FLY_IDLE // NOT OBSERVED )); put("IGNORE", Set.of( - // these states have no impact on stamina - MotionState.MOTION_STATE_CROUCH_IDLE, - MotionState.MOTION_STATE_CROUCH_MOVE, - MotionState.MOTION_STATE_CROUCH_ROLL, - MotionState.MOTION_STATE_DESTROY_VEHICLE, - MotionState.MOTION_STATE_FALL_ON_GROUND, - MotionState.MOTION_STATE_FOLLOW_ROUTE, - MotionState.MOTION_STATE_FORCE_SET_POS, - MotionState.MOTION_STATE_GO_UPSTAIRS, - MotionState.MOTION_STATE_JUMP_OFF_WALL, - MotionState.MOTION_STATE_LADDER_IDLE, - MotionState.MOTION_STATE_LADDER_MOVE, - MotionState.MOTION_STATE_LAND_SPEED, - MotionState.MOTION_STATE_MOVE_FAIL_ACK, - MotionState.MOTION_STATE_NONE, - MotionState.MOTION_STATE_NUM, - MotionState.MOTION_STATE_QUEST_FORCE_DRAG, - MotionState.MOTION_STATE_RESET, - MotionState.MOTION_STATE_STANDBY_TO_LADDER, - MotionState.MOTION_STATE_WATERFALL + // these states have no impact on stamina + MotionState.MOTION_STATE_CROUCH_IDLE, + MotionState.MOTION_STATE_CROUCH_MOVE, + MotionState.MOTION_STATE_CROUCH_ROLL, + MotionState.MOTION_STATE_DESTROY_VEHICLE, + MotionState.MOTION_STATE_FALL_ON_GROUND, + MotionState.MOTION_STATE_FOLLOW_ROUTE, + MotionState.MOTION_STATE_FORCE_SET_POS, + MotionState.MOTION_STATE_GO_UPSTAIRS, + MotionState.MOTION_STATE_JUMP_OFF_WALL, + MotionState.MOTION_STATE_LADDER_IDLE, + MotionState.MOTION_STATE_LADDER_MOVE, + MotionState.MOTION_STATE_LAND_SPEED, + MotionState.MOTION_STATE_MOVE_FAIL_ACK, + MotionState.MOTION_STATE_NONE, + MotionState.MOTION_STATE_NUM, + MotionState.MOTION_STATE_QUEST_FORCE_DRAG, + MotionState.MOTION_STATE_RESET, + MotionState.MOTION_STATE_STANDBY_TO_LADDER, + MotionState.MOTION_STATE_WATERFALL )); }}; - - private final Logger logger = Grasscutter.getLogger(); - public final static int GlobalCharacterMaximumStamina = PlayerProperty.PROP_MAX_STAMINA.getMax(); - public final static int GlobalVehicleMaxStamina = PlayerProperty.PROP_MAX_STAMINA.getMax(); - private Position currentCoordinates = new Position(0, 0, 0); - private Position previousCoordinates = new Position(0, 0, 0); - private MotionState currentState = MotionState.MOTION_STATE_STANDBY; - private MotionState previousState = MotionState.MOTION_STATE_STANDBY; - private Timer sustainedStaminaHandlerTimer; - private GameSession cachedSession = null; - private GameEntity cachedEntity = null; - private int staminaRecoverDelay = 0; - private final HashMap beforeUpdateStaminaListeners = new HashMap<>(); - private final HashMap afterUpdateStaminaListeners = new HashMap<>(); - private int lastSkillId = 0; - private int lastSkillCasterId = 0; - private boolean lastSkillFirstTick = true; - private int vehicleId = -1; - private int vehicleStamina = GlobalVehicleMaxStamina; private static final Set TalentMovements = Set.of(10013, 10413); private static final HashMap ClimbFoodReductionMap = new HashMap<>() {{ // TODO: get real food id @@ -155,15 +141,31 @@ public class StaminaManager extends BasePlayerManager { put(242301, 0.8f); put(542301, 0.8f); }}; - - public static void initialize() { - // TODO: Initialize foods etc. - } + private final Logger logger = Grasscutter.getLogger(); + private final HashMap beforeUpdateStaminaListeners = new HashMap<>(); + private final HashMap afterUpdateStaminaListeners = new HashMap<>(); + private Position currentCoordinates = new Position(0, 0, 0); + private Position previousCoordinates = new Position(0, 0, 0); + private MotionState currentState = MotionState.MOTION_STATE_STANDBY; + private MotionState previousState = MotionState.MOTION_STATE_STANDBY; + private Timer sustainedStaminaHandlerTimer; + private GameSession cachedSession = null; + private GameEntity cachedEntity = null; + private int staminaRecoverDelay = 0; + private int lastSkillId = 0; + private int lastSkillCasterId = 0; + private boolean lastSkillFirstTick = true; + private int vehicleId = -1; + private int vehicleStamina = GlobalVehicleMaxStamina; public StaminaManager(Player player) { super(player); } + public static void initialize() { + // TODO: Initialize foods etc. + } + // Accessors public void setSkillCast(int skillId, int skillCasterId) { @@ -236,7 +238,7 @@ public class StaminaManager extends BasePlayerManager { float diffY = currentCoordinates.getY() - previousCoordinates.getY(); float diffZ = currentCoordinates.getZ() - previousCoordinates.getZ(); logger.trace("isPlayerMoving: " + previousCoordinates + ", " + currentCoordinates + - ", " + diffX + ", " + diffY + ", " + diffZ); + ", " + diffX + ", " + diffY + ", " + diffZ); return Math.abs(diffX) > 0.3 || Math.abs(diffY) > 0.2 || Math.abs(diffZ) > 0.3; } @@ -250,15 +252,15 @@ public class StaminaManager extends BasePlayerManager { Consumption overriddenConsumption = listener.getValue().onBeforeUpdateStamina(consumption.type.toString(), consumption, isCharacterStamina); if ((overriddenConsumption.type != consumption.type) && (overriddenConsumption.amount != consumption.amount)) { logger.debug("Stamina update relative(" + - consumption.type.toString() + ", " + consumption.amount + ") overridden to relative(" + - consumption.type.toString() + ", " + consumption.amount + ") by: " + listener.getKey()); + consumption.type.toString() + ", " + consumption.amount + ") overridden to relative(" + + consumption.type.toString() + ", " + consumption.amount + ") by: " + listener.getKey()); return currentStamina; } } int maxStamina = isCharacterStamina ? getMaxCharacterStamina() : getMaxVehicleStamina(); logger.trace((isCharacterStamina ? "C " : "V ") + currentStamina + "/" + maxStamina + "\t" + currentState + "\t" + - (isPlayerMoving() ? "moving" : " ") + "\t(" + consumption.type + "," + - consumption.amount + ")"); + (isPlayerMoving() ? "moving" : " ") + "\t(" + consumption.type + "," + + consumption.amount + ")"); int newStamina = currentStamina + consumption.amount; if (newStamina < 0) { newStamina = 0; @@ -275,8 +277,8 @@ public class StaminaManager extends BasePlayerManager { int overriddenNewStamina = listener.getValue().onBeforeUpdateStamina(reason, newStamina, isCharacterStamina); if (overriddenNewStamina != newStamina) { logger.debug("Stamina update absolute(" + - reason + ", " + newStamina + ") overridden to absolute(" + - reason + ", " + newStamina + ") by: " + listener.getKey()); + reason + ", " + newStamina + ") overridden to absolute(" + + reason + ", " + newStamina + ") by: " + listener.getKey()); return currentStamina; } } @@ -313,7 +315,7 @@ public class StaminaManager extends BasePlayerManager { // TODO: Probably move this to Avatar class? since other components may also need to kill avatar. public void killAvatar(GameSession session, GameEntity entity, PlayerDieType dieType) { session.send(new PacketAvatarLifeStateChangeNotify(player.getTeamManager().getCurrentAvatarEntity().getAvatar(), - LifeState.LIFE_DEAD, dieType)); + LifeState.LIFE_DEAD, dieType)); session.send(new PacketLifeStateChangeNotify(entity, LifeState.LIFE_DEAD, dieType)); entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, 0); entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP)); @@ -352,7 +354,6 @@ public class StaminaManager extends BasePlayerManager { Avatar currentAvatar = player.getTeamManager().getCurrentAvatarEntity().getAvatar(); if (currentAvatar.getAvatarData().getWeaponType() == WeaponType.WEAPON_CLAYMORE) { // Exclude claymore as their stamina cost starts when MixinStaminaCost gets in - return; } // TODO: Differentiate normal attacks from charged attacks and exclude // TODO: Temporary: Exclude non-claymore attacks for now @@ -422,14 +423,15 @@ public class StaminaManager extends BasePlayerManager { switch (motionState) { case MOTION_STATE_CLIMB -> - updateStaminaRelative(session, new Consumption(ConsumptionType.CLIMB_START), true); + updateStaminaRelative(session, new Consumption(ConsumptionType.CLIMB_START), true); case MOTION_STATE_DASH_BEFORE_SHAKE -> - updateStaminaRelative(session, new Consumption(ConsumptionType.SPRINT), true); + updateStaminaRelative(session, new Consumption(ConsumptionType.SPRINT), true); case MOTION_STATE_CLIMB_JUMP -> - updateStaminaRelative(session, new Consumption(ConsumptionType.CLIMB_JUMP), true); + updateStaminaRelative(session, new Consumption(ConsumptionType.CLIMB_JUMP), true); case MOTION_STATE_SWIM_DASH -> - updateStaminaRelative(session, new Consumption(ConsumptionType.SWIM_DASH_START), true); - default -> {} + updateStaminaRelative(session, new Consumption(ConsumptionType.SWIM_DASH_START), true); + default -> { + } } } @@ -438,89 +440,18 @@ public class StaminaManager extends BasePlayerManager { updateStaminaRelative(session, consumption, true); } - private class SustainedStaminaHandler extends TimerTask { - public void run() { - boolean moving = isPlayerMoving(); - int currentCharacterStamina = getCurrentCharacterStamina(); - int maxCharacterStamina = getMaxCharacterStamina(); - int currentVehicleStamina = getCurrentVehicleStamina(); - int maxVehicleStamina = getMaxVehicleStamina(); - if (moving || (currentCharacterStamina < maxCharacterStamina) || (currentVehicleStamina < maxVehicleStamina)) { - logger.trace("Player moving: " + moving + ", stamina full: " + - (currentCharacterStamina >= maxCharacterStamina) + ", recalculate stamina"); - boolean isCharacterStamina = true; - Consumption consumption; - if (MotionStatesCategorized.get("CLIMB").contains(currentState)) { - consumption = getClimbConsumption(); - } else if (MotionStatesCategorized.get("DASH").contains(currentState)) { - consumption = getDashConsumption(); - } else if (MotionStatesCategorized.get("FLY").contains(currentState)) { - consumption = getFlyConsumption(); - } else if (MotionStatesCategorized.get("RUN").contains(currentState)) { - consumption = new Consumption(ConsumptionType.RUN); - } else if (MotionStatesCategorized.get("SKIFF").contains(currentState)) { - consumption = getSkiffConsumption(); - isCharacterStamina = false; - } else if (MotionStatesCategorized.get("STANDBY").contains(currentState)) { - consumption = new Consumption(ConsumptionType.STANDBY); - } else if (MotionStatesCategorized.get("SWIM").contains(currentState)) { - consumption = getSwimConsumptions(); - } else if (MotionStatesCategorized.get("WALK").contains(currentState)) { - consumption = new Consumption(ConsumptionType.WALK); - } else if (MotionStatesCategorized.get("NOCOST_NORECOVER").contains(currentState)) { - consumption = new Consumption(); - } else if (MotionStatesCategorized.get("OTHER").contains(currentState)) { - consumption = getOtherConsumptions(); - } else { // ignore - return; - } - - if (consumption.amount < 0 && isCharacterStamina) { - // Do not apply reduction factor when recovering stamina - if (player.getTeamManager().getTeamResonances().contains(10301)) { - consumption.amount *= 0.85f; - } - } - // Delay 1 seconds before starts recovering stamina - if (consumption.amount != 0 && cachedSession != null) { - if (consumption.amount < 0) { - staminaRecoverDelay = 0; - } - if (consumption.amount > 0 - && consumption.type != ConsumptionType.POWERED_FLY - && consumption.type != ConsumptionType.POWERED_SKIFF) { - // For POWERED_* recover immediately - things like Amber's gliding exam and skiff challenges may require this. - if (staminaRecoverDelay < 5) { - // For others recover after 1 seconds (5 ticks) - as official server does. - staminaRecoverDelay++; - consumption.amount = 0; - logger.trace("Delaying recovery: " + staminaRecoverDelay); - } - } - updateStaminaRelative(cachedSession, consumption, isCharacterStamina); - } - } - previousState = currentState; - previousCoordinates = currentCoordinates.clone(); - } - } - private void handleDrowning() { // TODO: fix drowning waverider entity int stamina = getCurrentCharacterStamina(); if (stamina < 10) { logger.trace(getCurrentCharacterStamina() + "/" + - getMaxCharacterStamina() + "\t" + currentState); + getMaxCharacterStamina() + "\t" + currentState); if (currentState != MotionState.MOTION_STATE_SWIM_IDLE) { killAvatar(cachedSession, cachedEntity, PlayerDieType.PLAYER_DIE_TYPE_DRAWN); } } } - // Consumption Calculators - - // Stamina Consumption Reduction: https://genshin-impact.fandom.com/wiki/Stamina - private Consumption getFightConsumption(int skillCasting) { // Talent moving if (TalentMovements.contains(skillCasting)) { @@ -540,6 +471,10 @@ public class StaminaManager extends BasePlayerManager { }; } + // Consumption Calculators + + // Stamina Consumption Reduction: https://genshin-impact.fandom.com/wiki/Stamina + private Consumption getClimbConsumption() { Consumption consumption = new Consumption(); if (currentState == MotionState.MOTION_STATE_CLIMB && isPlayerMoving()) { @@ -617,8 +552,6 @@ public class StaminaManager extends BasePlayerManager { return new Consumption(); } - // Reduction getter - private float getTalentCostReductionFactor(HashMap talentReductionMap) { // All known talents reductions are not stackable float reduction = 1; @@ -635,6 +568,8 @@ public class StaminaManager extends BasePlayerManager { return reduction; } + // Reduction getter + private float getFoodCostReductionFactor(HashMap foodReductionMap) { // All known food reductions are not stackable // TODO: Check consumed food (buff?) and return proper factor @@ -698,11 +633,76 @@ public class StaminaManager extends BasePlayerManager { private Consumption getSwordCost(int skillId) { Consumption consumption = new Consumption(ConsumptionType.FIGHT, -2000); // Character specific handling - switch (skillId) { - case 10421: - consumption.amount = -2500; - break; + if (skillId == 10421) { + consumption.amount = -2500; } return consumption; } + + private class SustainedStaminaHandler extends TimerTask { + public void run() { + boolean moving = isPlayerMoving(); + int currentCharacterStamina = getCurrentCharacterStamina(); + int maxCharacterStamina = getMaxCharacterStamina(); + int currentVehicleStamina = getCurrentVehicleStamina(); + int maxVehicleStamina = getMaxVehicleStamina(); + if (moving || (currentCharacterStamina < maxCharacterStamina) || (currentVehicleStamina < maxVehicleStamina)) { + logger.trace("Player moving: " + moving + ", stamina full: " + + (currentCharacterStamina >= maxCharacterStamina) + ", recalculate stamina"); + boolean isCharacterStamina = true; + Consumption consumption; + if (MotionStatesCategorized.get("CLIMB").contains(currentState)) { + consumption = getClimbConsumption(); + } else if (MotionStatesCategorized.get("DASH").contains(currentState)) { + consumption = getDashConsumption(); + } else if (MotionStatesCategorized.get("FLY").contains(currentState)) { + consumption = getFlyConsumption(); + } else if (MotionStatesCategorized.get("RUN").contains(currentState)) { + consumption = new Consumption(ConsumptionType.RUN); + } else if (MotionStatesCategorized.get("SKIFF").contains(currentState)) { + consumption = getSkiffConsumption(); + isCharacterStamina = false; + } else if (MotionStatesCategorized.get("STANDBY").contains(currentState)) { + consumption = new Consumption(ConsumptionType.STANDBY); + } else if (MotionStatesCategorized.get("SWIM").contains(currentState)) { + consumption = getSwimConsumptions(); + } else if (MotionStatesCategorized.get("WALK").contains(currentState)) { + consumption = new Consumption(ConsumptionType.WALK); + } else if (MotionStatesCategorized.get("NOCOST_NORECOVER").contains(currentState)) { + consumption = new Consumption(); + } else if (MotionStatesCategorized.get("OTHER").contains(currentState)) { + consumption = getOtherConsumptions(); + } else { // ignore + return; + } + + if (consumption.amount < 0 && isCharacterStamina) { + // Do not apply reduction factor when recovering stamina + if (player.getTeamManager().getTeamResonances().contains(10301)) { + consumption.amount *= 0.85f; + } + } + // Delay 1 seconds before starts recovering stamina + if (consumption.amount != 0 && cachedSession != null) { + if (consumption.amount < 0) { + staminaRecoverDelay = 0; + } + if (consumption.amount > 0 + && consumption.type != ConsumptionType.POWERED_FLY + && consumption.type != ConsumptionType.POWERED_SKIFF) { + // For POWERED_* recover immediately - things like Amber's gliding exam and skiff challenges may require this. + if (staminaRecoverDelay < 5) { + // For others recover after 1 seconds (5 ticks) - as official server does. + staminaRecoverDelay++; + consumption.amount = 0; + logger.trace("Delaying recovery: " + staminaRecoverDelay); + } + } + updateStaminaRelative(cachedSession, consumption, isCharacterStamina); + } + } + previousState = currentState; + previousCoordinates = currentCoordinates.clone(); + } + } } diff --git a/src/main/java/emu/grasscutter/game/player/BasePlayerDataManager.java b/src/main/java/emu/grasscutter/game/player/BasePlayerDataManager.java index a8f70bfb4..e3de1dfab 100644 --- a/src/main/java/emu/grasscutter/game/player/BasePlayerDataManager.java +++ b/src/main/java/emu/grasscutter/game/player/BasePlayerDataManager.java @@ -5,7 +5,8 @@ import lombok.NonNull; public abstract class BasePlayerDataManager { protected transient Player player; - public BasePlayerDataManager() {} + public BasePlayerDataManager() { + } public BasePlayerDataManager(@NonNull Player player) { this.player = player; diff --git a/src/main/java/emu/grasscutter/game/player/InvokeHandler.java b/src/main/java/emu/grasscutter/game/player/InvokeHandler.java index a266c7411..aeaefc211 100644 --- a/src/main/java/emu/grasscutter/game/player/InvokeHandler.java +++ b/src/main/java/emu/grasscutter/game/player/InvokeHandler.java @@ -1,60 +1,61 @@ package emu.grasscutter.game.player; -import java.util.ArrayList; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType; -public class InvokeHandler { - private final List entryListForwardAll; - private final List entryListForwardAllExceptCur; - private final List entryListForwardHost; - private final Class packetClass; - - public InvokeHandler(Class packetClass) { - this.entryListForwardAll = new ArrayList<>(); - this.entryListForwardAllExceptCur = new ArrayList<>(); - this.entryListForwardHost = new ArrayList<>(); - this.packetClass = packetClass; - } +import java.util.ArrayList; +import java.util.List; - public synchronized void addEntry(ForwardType forward, T entry) { - switch (forward) { - case FORWARD_TYPE_TO_ALL -> entryListForwardAll.add(entry); - case FORWARD_TYPE_TO_ALL_EXCEPT_CUR, FORWARD_TYPE_TO_ALL_EXIST_EXCEPT_CUR -> entryListForwardAllExceptCur.add(entry); - case FORWARD_TYPE_TO_HOST -> entryListForwardHost.add(entry); - default -> { - } - } - } - - public synchronized void update(Player player) { - if (player.getWorld() == null || player.getScene() == null) { - this.entryListForwardAll.clear(); - this.entryListForwardAllExceptCur.clear(); - this.entryListForwardHost.clear(); - return; - } - - try { - if (entryListForwardAll.size() > 0) { - BasePacket packet = packetClass.getDeclaredConstructor(List.class).newInstance(this.entryListForwardAll); - player.getScene().broadcastPacket(packet); - this.entryListForwardAll.clear(); - } - if (entryListForwardAllExceptCur.size() > 0) { - BasePacket packet = packetClass.getDeclaredConstructor(List.class).newInstance(this.entryListForwardAllExceptCur); - player.getScene().broadcastPacketToOthers(player, packet); - this.entryListForwardAllExceptCur.clear(); - } - if (entryListForwardHost.size() > 0) { - BasePacket packet = packetClass.getDeclaredConstructor(List.class).newInstance(this.entryListForwardHost); - player.getWorld().getHost().sendPacket(packet); - this.entryListForwardHost.clear(); - } - } catch (Exception e) { - e.printStackTrace(); - } - } +public class InvokeHandler { + private final List entryListForwardAll; + private final List entryListForwardAllExceptCur; + private final List entryListForwardHost; + private final Class packetClass; + + public InvokeHandler(Class packetClass) { + this.entryListForwardAll = new ArrayList<>(); + this.entryListForwardAllExceptCur = new ArrayList<>(); + this.entryListForwardHost = new ArrayList<>(); + this.packetClass = packetClass; + } + + public synchronized void addEntry(ForwardType forward, T entry) { + switch (forward) { + case FORWARD_TYPE_TO_ALL -> entryListForwardAll.add(entry); + case FORWARD_TYPE_TO_ALL_EXCEPT_CUR, FORWARD_TYPE_TO_ALL_EXIST_EXCEPT_CUR -> + entryListForwardAllExceptCur.add(entry); + case FORWARD_TYPE_TO_HOST -> entryListForwardHost.add(entry); + default -> { + } + } + } + + public synchronized void update(Player player) { + if (player.getWorld() == null || player.getScene() == null) { + this.entryListForwardAll.clear(); + this.entryListForwardAllExceptCur.clear(); + this.entryListForwardHost.clear(); + return; + } + + try { + if (entryListForwardAll.size() > 0) { + BasePacket packet = packetClass.getDeclaredConstructor(List.class).newInstance(this.entryListForwardAll); + player.getScene().broadcastPacket(packet); + this.entryListForwardAll.clear(); + } + if (entryListForwardAllExceptCur.size() > 0) { + BasePacket packet = packetClass.getDeclaredConstructor(List.class).newInstance(this.entryListForwardAllExceptCur); + player.getScene().broadcastPacketToOthers(player, packet); + this.entryListForwardAllExceptCur.clear(); + } + if (entryListForwardHost.size() > 0) { + BasePacket packet = packetClass.getDeclaredConstructor(List.class).newInstance(this.entryListForwardHost); + player.getWorld().getHost().sendPacket(packet); + this.entryListForwardHost.clear(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/emu/grasscutter/game/player/Player.java b/src/main/java/emu/grasscutter/game/player/Player.java index 1e504dd2d..ea89153e5 100644 --- a/src/main/java/emu/grasscutter/game/player/Player.java +++ b/src/main/java/emu/grasscutter/game/player/Player.java @@ -15,29 +15,30 @@ import emu.grasscutter.game.activity.ActivityManager; import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.avatar.AvatarStorage; import emu.grasscutter.game.battlepass.BattlePassManager; -import emu.grasscutter.game.entity.*; -import emu.grasscutter.game.home.GameHome; +import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.expedition.ExpeditionInfo; import emu.grasscutter.game.friends.FriendsList; import emu.grasscutter.game.friends.PlayerProfile; import emu.grasscutter.game.gacha.PlayerGachaInfo; +import emu.grasscutter.game.home.GameHome; import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.inventory.Inventory; import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.mail.MailHandler; -import emu.grasscutter.game.managers.cooking.ActiveCookCompoundData; -import emu.grasscutter.game.managers.cooking.CookingCompoundManager; -import emu.grasscutter.game.managers.cooking.CookingManager; import emu.grasscutter.game.managers.FurnitureManager; import emu.grasscutter.game.managers.ResinManager; import emu.grasscutter.game.managers.SatiationManager; +import emu.grasscutter.game.managers.SotSManager; +import emu.grasscutter.game.managers.cooking.ActiveCookCompoundData; +import emu.grasscutter.game.managers.cooking.CookingCompoundManager; +import emu.grasscutter.game.managers.cooking.CookingManager; import emu.grasscutter.game.managers.deforestation.DeforestationManager; import emu.grasscutter.game.managers.energy.EnergyManager; import emu.grasscutter.game.managers.forging.ActiveForgeData; import emu.grasscutter.game.managers.forging.ForgingManager; -import emu.grasscutter.game.managers.mapmark.*; +import emu.grasscutter.game.managers.mapmark.MapMark; +import emu.grasscutter.game.managers.mapmark.MapMarksManager; import emu.grasscutter.game.managers.stamina.StaminaManager; -import emu.grasscutter.game.managers.SotSManager; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ClimateType; import emu.grasscutter.game.props.PlayerProperty; @@ -50,17 +51,20 @@ import emu.grasscutter.game.tower.TowerManager; import emu.grasscutter.game.world.Scene; import emu.grasscutter.game.world.World; import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.proto.*; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult; import emu.grasscutter.net.proto.CombatInvokeEntryOuterClass.CombatInvokeEntry; import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; import emu.grasscutter.net.proto.MpSettingTypeOuterClass.MpSettingType; import emu.grasscutter.net.proto.OnlinePlayerInfoOuterClass.OnlinePlayerInfo; +import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass; import emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo; +import emu.grasscutter.net.proto.PlayerWorldLocationInfoOuterClass; import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason; +import emu.grasscutter.net.proto.ShowAvatarInfoOuterClass; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; +import emu.grasscutter.net.proto.SocialShowAvatarInfoOuterClass; import emu.grasscutter.scripts.data.SceneRegion; import emu.grasscutter.server.event.player.PlayerJoinEvent; import emu.grasscutter.server.event.player.PlayerQuitEvent; @@ -69,16 +73,14 @@ import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.game.GameSession.SessionState; import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.DateHelper; -import emu.grasscutter.utils.Position; import emu.grasscutter.utils.MessageHandler; +import emu.grasscutter.utils.Position; import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; import lombok.Setter; -import static emu.grasscutter.config.Configuration.*; - import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; @@ -87,120 +89,239 @@ import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.LinkedBlockingQueue; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + @Entity(value = "players", useDiscriminator = false) public class Player { - @Id private int id; - @Indexed(options = @IndexOptions(unique = true)) private String accountId; - @Setter private transient Account account; - @Getter @Setter private transient GameSession session; - - @Getter private String nickname; - @Getter private String signature; - @Getter private int headImage; - @Getter private int nameCardId = 210001; - @Getter private Position position; - @Getter @Setter private Position prevPos; - @Getter private Position rotation; - @Getter private PlayerBirthday birthday; - @Getter private PlayerCodex codex; - @Getter @Setter private boolean showAvatars; - @Getter @Setter private List showAvatarList; - @Getter @Setter private List showNameCardList; - @Getter private Map properties; - @Getter @Setter private int currentRealmId; - @Getter @Setter private int widgetId; - @Getter @Setter private int sceneId; - @Getter @Setter private int regionId; - @Getter private int mainCharacterId; - @Setter private boolean godmode; // Getter is inGodmode - private boolean stamina; // Getter is getUnlimitedStamina, Setter is setUnlimitedStamina - - @Getter private Set nameCardList; - @Getter private Set flyCloakList; - @Getter private Set costumeList; - @Getter @Setter private Set rewardedLevels; - @Getter @Setter private Set homeRewardedLevels; - @Getter @Setter private Set realmList; - @Getter @Setter private Set seenRealmList; - @Getter private Set unlockedForgingBlueprints; - @Getter private Set unlockedCombines; - @Getter private Set unlockedFurniture; - @Getter private Set unlockedFurnitureSuite; - @Getter private Map expeditionInfo; - @Getter private Map unlockedRecipies; - @Getter private List activeForges; - @Getter private Map activeCookCompounds; - @Getter private Map questGlobalVariables; - @Getter private Map openStates; - @Getter @Setter private Map> unlockedSceneAreas; - @Getter @Setter private Map> unlockedScenePoints; - @Getter @Setter private List chatEmojiIdList; - - @Transient private long nextGuid = 0; - @Transient @Getter @Setter private int peerId; - @Transient private World world; // Synchronized getter and setter - @Transient private Scene scene; // Synchronized getter and setter - @Transient @Getter private int weatherId = 0; - @Transient @Getter private ClimateType climate = ClimateType.CLIMATE_SUNNY; - - // Player managers go here - @Getter private transient AvatarStorage avatars; - @Getter private transient Inventory inventory; - @Getter private transient FriendsList friendsList; - @Getter private transient MailHandler mailHandler; - @Getter @Setter private transient MessageHandler messageHandler; - @Getter private transient AbilityManager abilityManager; - @Getter @Setter private transient QuestManager questManager; - @Getter private transient TowerManager towerManager; - @Getter private transient SotSManager sotsManager; - @Getter private transient MapMarksManager mapMarksManager; - @Getter private transient StaminaManager staminaManager; - @Getter private transient EnergyManager energyManager; - @Getter private transient ResinManager resinManager; - @Getter private transient ForgingManager forgingManager; - @Getter private transient DeforestationManager deforestationManager; - @Getter private transient FurnitureManager furnitureManager; - @Getter private transient BattlePassManager battlePassManager; - @Getter private transient CookingManager cookingManager; - @Getter private transient CookingCompoundManager cookingCompoundManager; - @Getter private transient ActivityManager activityManager; - @Getter private transient PlayerBuffManager buffManager; - @Getter private transient PlayerProgressManager progressManager; - @Getter private transient SatiationManager satiationManager; - - // Manager data (Save-able to the database) - @Getter private transient Achievements achievements; - private PlayerProfile playerProfile; // Getter has null-check - @Getter private TeamManager teamManager; - private TowerData towerData; // Getter has null-check - @Getter private PlayerGachaInfo gachaInfo; - private PlayerCollectionRecords collectionRecordStore; // Getter has null-check - @Getter private ArrayList shopLimit; - - @Getter private transient GameHome home; - - @Setter private boolean moonCard; // Getter is inMoonCard - @Getter @Setter private Date moonCardStartTime; - @Getter @Setter private int moonCardDuration; - @Getter @Setter private Set moonCardGetTimes; - - @Transient @Getter private boolean paused; - @Transient @Getter @Setter private int enterSceneToken; - @Transient @Getter @Setter private SceneLoadState sceneLoadState = SceneLoadState.NONE; - @Transient private boolean hasSentLoginPackets; - @Transient private long nextSendPlayerLocTime = 0; - private transient final Int2ObjectMap coopRequests; // Synchronized getter - @Getter private transient final Queue attackResults; - @Getter private transient final InvokeHandler combatInvokeHandler; - @Getter private transient final InvokeHandler abilityInvokeHandler; - @Getter private transient final InvokeHandler clientAbilityInitFinishHandler; - - @Getter @Setter private long springLastUsed; + @Getter + private transient final Queue attackResults; + @Getter + private transient final InvokeHandler combatInvokeHandler; + @Getter + private transient final InvokeHandler abilityInvokeHandler; + @Getter + private transient final InvokeHandler clientAbilityInitFinishHandler; + @Id + private int id; + @Indexed(options = @IndexOptions(unique = true)) + private String accountId; + @Setter + private transient Account account; + @Getter + @Setter + private transient GameSession session; + @Getter + private String nickname; + @Getter + private String signature; + @Getter + private int headImage; + @Getter + private int nameCardId = 210001; + @Getter + private final Position position; + @Getter + @Setter + private Position prevPos; + @Getter + private final Position rotation; + @Getter + private PlayerBirthday birthday; + @Getter + private PlayerCodex codex; + @Getter + @Setter + private boolean showAvatars; + @Getter + @Setter + private List showAvatarList; + @Getter + @Setter + private List showNameCardList; + @Getter + private final Map properties; + @Getter + @Setter + private int currentRealmId; + @Getter + @Setter + private int widgetId; + @Getter + @Setter + private int sceneId; + @Getter + @Setter + private int regionId; + @Getter + private int mainCharacterId; + @Setter + private boolean godmode; // Getter is inGodmode + private boolean stamina; // Getter is getUnlimitedStamina, Setter is setUnlimitedStamina + @Getter + private final Set nameCardList; + @Getter + private final Set flyCloakList; + @Getter + private final Set costumeList; + @Getter + @Setter + private Set rewardedLevels; + @Getter + @Setter + private Set homeRewardedLevels; + @Getter + @Setter + private Set realmList; + @Getter + @Setter + private Set seenRealmList; + @Getter + private final Set unlockedForgingBlueprints; + @Getter + private final Set unlockedCombines; + @Getter + private final Set unlockedFurniture; + @Getter + private final Set unlockedFurnitureSuite; + @Getter + private final Map expeditionInfo; + @Getter + private final Map unlockedRecipies; + @Getter + private final List activeForges; + @Getter + private final Map activeCookCompounds; + @Getter + private final Map questGlobalVariables; + @Getter + private final Map openStates; + @Getter + @Setter + private Map> unlockedSceneAreas; + @Getter + @Setter + private Map> unlockedScenePoints; + @Getter + @Setter + private List chatEmojiIdList; + @Transient + private long nextGuid = 0; + @Transient + @Getter + @Setter + private int peerId; + @Transient + private World world; // Synchronized getter and setter + @Transient + private Scene scene; // Synchronized getter and setter + @Transient + @Getter + private int weatherId = 0; + @Transient + @Getter + private ClimateType climate = ClimateType.CLIMATE_SUNNY; + // Player managers go here + @Getter + private final transient AvatarStorage avatars; + @Getter + private final transient Inventory inventory; + @Getter + private final transient FriendsList friendsList; + @Getter + private final transient MailHandler mailHandler; + @Getter + @Setter + private transient MessageHandler messageHandler; + @Getter + private final transient AbilityManager abilityManager; + @Getter + @Setter + private transient QuestManager questManager; + @Getter + private final transient TowerManager towerManager; + @Getter + private transient SotSManager sotsManager; + @Getter + private transient MapMarksManager mapMarksManager; + @Getter + private transient StaminaManager staminaManager; + @Getter + private transient EnergyManager energyManager; + @Getter + private transient ResinManager resinManager; + @Getter + private transient ForgingManager forgingManager; + @Getter + private transient DeforestationManager deforestationManager; + @Getter + private transient FurnitureManager furnitureManager; + @Getter + private transient BattlePassManager battlePassManager; + @Getter + private transient CookingManager cookingManager; + @Getter + private transient CookingCompoundManager cookingCompoundManager; + @Getter + private transient ActivityManager activityManager; + @Getter + private final transient PlayerBuffManager buffManager; + @Getter + private transient PlayerProgressManager progressManager; + @Getter + private transient SatiationManager satiationManager; + // Manager data (Save-able to the database) + @Getter + private transient Achievements achievements; + private PlayerProfile playerProfile; // Getter has null-check + @Getter + private TeamManager teamManager; + private TowerData towerData; // Getter has null-check + @Getter + private final PlayerGachaInfo gachaInfo; + private PlayerCollectionRecords collectionRecordStore; // Getter has null-check + @Getter + private final ArrayList shopLimit; + @Getter + private transient GameHome home; + @Setter + private boolean moonCard; // Getter is inMoonCard + @Getter + @Setter + private Date moonCardStartTime; + @Getter + @Setter + private int moonCardDuration; + @Getter + @Setter + private Set moonCardGetTimes; + @Transient + @Getter + private boolean paused; + @Transient + @Getter + @Setter + private int enterSceneToken; + @Transient + @Getter + @Setter + private SceneLoadState sceneLoadState = SceneLoadState.NONE; + @Transient + private boolean hasSentLoginPackets; + @Transient + private long nextSendPlayerLocTime = 0; + @Getter + @Setter + private long springLastUsed; private HashMap mapMarks; // Getter makes an empty hashmap - maybe do this elsewhere? - @Getter @Setter private int nextResinRefresh; - @Getter @Setter private int lastDailyReset; - @Getter private transient MpSettingType mpSetting = MpSettingType.MP_SETTING_TYPE_ENTER_AFTER_APPLY; // TODO + @Getter + @Setter + private int nextResinRefresh; + @Getter + @Setter + private int lastDailyReset; + @Getter + private final transient MpSettingType mpSetting = MpSettingType.MP_SETTING_TYPE_ENTER_AFTER_APPLY; // TODO @Deprecated @SuppressWarnings({"rawtypes", "unchecked"}) // Morphia only! @@ -237,7 +358,7 @@ public class Player { this.unlockedCombines = new HashSet<>(); this.unlockedFurniture = new HashSet<>(); this.unlockedFurnitureSuite = new HashSet<>(); - this.activeCookCompounds=new HashMap<>(); + this.activeCookCompounds = new HashMap<>(); this.activeForges = new ArrayList<>(); this.unlockedRecipies = new HashMap<>(); this.questGlobalVariables = new HashMap<>(); @@ -271,7 +392,7 @@ public class Player { this.progressManager = new PlayerProgressManager(this); this.furnitureManager = new FurnitureManager(this); this.cookingManager = new CookingManager(this); - this.cookingCompoundManager=new CookingCompoundManager(this); + this.cookingCompoundManager = new CookingCompoundManager(this); this.satiationManager = new SatiationManager(this); } @@ -307,7 +428,7 @@ public class Player { this.progressManager = new PlayerProgressManager(this); this.furnitureManager = new FurnitureManager(this); this.cookingManager = new CookingManager(this); - this.cookingCompoundManager=new CookingCompoundManager(this); + this.cookingCompoundManager = new CookingCompoundManager(this); this.satiationManager = new SatiationManager(this); } @@ -518,6 +639,7 @@ public class Player { public boolean setHomeCoin(int coin) { return this.setProperty(PlayerProperty.PROP_PLAYER_HOME_COIN, coin); } + private int getExpRequired(int level) { PlayerLevelData levelData = GameData.getPlayerLevelDataMap().get(level); return levelData != null ? levelData.getExp() : 0; @@ -559,14 +681,14 @@ public class Player { int newWorldLevel = (currentLevel >= 55) ? 8 : - (currentLevel >= 50) ? 7 : - (currentLevel >= 45) ? 6 : - (currentLevel >= 40) ? 5 : - (currentLevel >= 35) ? 4 : - (currentLevel >= 30) ? 3 : - (currentLevel >= 25) ? 2 : - (currentLevel >= 20) ? 1 : - 0; + (currentLevel >= 50) ? 7 : + (currentLevel >= 45) ? 6 : + (currentLevel >= 40) ? 5 : + (currentLevel >= 35) ? 4 : + (currentLevel >= 30) ? 3 : + (currentLevel >= 25) ? 2 : + (currentLevel >= 20) ? 1 : + 0; if (newWorldLevel != currentWorldLevel) { this.setWorldLevel(newWorldLevel); @@ -591,11 +713,11 @@ public class Player { public void onEnterRegion(SceneRegion region) { getQuestManager().forEachActiveQuest(quest -> { - if (quest.getTriggers().containsKey("ENTER_REGION_"+ region.config_id)) { + if (quest.getTriggers().containsKey("ENTER_REGION_" + region.config_id)) { // If trigger hasn't been fired yet - if (!Boolean.TRUE.equals(quest.getTriggers().put("ENTER_REGION_"+ region.config_id, true))) { + if (!Boolean.TRUE.equals(quest.getTriggers().put("ENTER_REGION_" + region.config_id, true))) { //getSession().send(new PacketServerCondMeetQuestListUpdateNotify()); - getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_TRIGGER_FIRE, quest.getTriggerData().get("ENTER_REGION_"+ region.config_id).getId(),0); + getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_TRIGGER_FIRE, quest.getTriggerData().get("ENTER_REGION_" + region.config_id).getId(), 0); } } }); @@ -604,11 +726,11 @@ public class Player { public void onLeaveRegion(SceneRegion region) { getQuestManager().forEachActiveQuest(quest -> { - if (quest.getTriggers().containsKey("LEAVE_REGION_"+ region.config_id)) { + if (quest.getTriggers().containsKey("LEAVE_REGION_" + region.config_id)) { // If trigger hasn't been fired yet - if (!Boolean.TRUE.equals(quest.getTriggers().put("LEAVE_REGION_"+ region.config_id, true))) { + if (!Boolean.TRUE.equals(quest.getTriggers().put("LEAVE_REGION_" + region.config_id, true))) { getSession().send(new PacketServerCondMeetQuestListUpdateNotify()); - getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_TRIGGER_FIRE, quest.getTriggerData().get("LEAVE_REGION_"+ region.config_id).getId(),0); + getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_TRIGGER_FIRE, quest.getTriggerData().get("LEAVE_REGION_" + region.config_id).getId(), 0); } } }); @@ -700,9 +822,7 @@ public class Player { } else { moonCardDuration += 30; } - if (!moonCardGetTimes.contains(moonCardStartTime)) { - moonCardGetTimes.add(moonCardStartTime); - } + moonCardGetTimes.add(moonCardStartTime); return true; } @@ -860,7 +980,9 @@ public class Player { // ---------------------MAIL------------------------ - public List getAllMail() { return this.getMailHandler().getMail(); } + public List getAllMail() { + return this.getMailHandler().getMail(); + } public void sendMail(Mail message) { this.getMailHandler().sendMail(message); @@ -870,7 +992,9 @@ public class Player { return this.getMailHandler().deleteMail(mailId); } - public Mail getMail(int index) { return this.getMailHandler().getMailById(index); } + public Mail getMail(int index) { + return this.getMailHandler().getMailById(index); + } public int getMailId(Mail message) { return this.getMailHandler().getMailIndex(message); @@ -904,13 +1028,13 @@ public class Player { public OnlinePlayerInfo getOnlinePlayerInfo() { OnlinePlayerInfo.Builder onlineInfo = OnlinePlayerInfo.newBuilder() - .setUid(this.getUid()) - .setNickname(this.getNickname()) - .setPlayerLevel(this.getLevel()) - .setMpSettingType(this.getMpSetting()) - .setNameCardId(this.getNameCardId()) - .setSignature(this.getSignature()) - .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(this.getHeadImage())); + .setUid(this.getUid()) + .setNickname(this.getNickname()) + .setPlayerLevel(this.getLevel()) + .setMpSettingType(this.getMpSetting()) + .setNameCardId(this.getNameCardId()) + .setSignature(this.getSignature()) + .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(this.getHeadImage())); if (this.getWorld() != null) { onlineInfo.setCurPlayerNumInWorld(getWorld().getPlayerCount()); @@ -936,12 +1060,12 @@ public class Player { if (this.getShowAvatarList() != null) { for (int avatarId : this.getShowAvatarList()) { socialShowAvatarInfoList.add( - socialShowAvatarInfoList.size(), - SocialShowAvatarInfoOuterClass.SocialShowAvatarInfo.newBuilder() - .setAvatarId(avatarId) - .setLevel(getAvatars().getAvatarById(avatarId).getLevel()) - .setCostumeId(getAvatars().getAvatarById(avatarId).getCostume()) - .build() + socialShowAvatarInfoList.size(), + SocialShowAvatarInfoOuterClass.SocialShowAvatarInfo.newBuilder() + .setAvatarId(avatarId) + .setLevel(getAvatars().getAvatarById(avatarId).getLevel()) + .setCostumeId(getAvatars().getAvatarById(avatarId).getCostume()) + .build() ); } } @@ -952,31 +1076,31 @@ public class Player { if (showAvatarList != null) { for (int avatarId : showAvatarList) { socialShowAvatarInfoList.add( - socialShowAvatarInfoList.size(), - SocialShowAvatarInfoOuterClass.SocialShowAvatarInfo.newBuilder() - .setAvatarId(avatarId) - .setLevel(avatars.getAvatarById(avatarId).getLevel()) - .setCostumeId(avatars.getAvatarById(avatarId).getCostume()) - .build() + socialShowAvatarInfoList.size(), + SocialShowAvatarInfoOuterClass.SocialShowAvatarInfo.newBuilder() + .setAvatarId(avatarId) + .setLevel(avatars.getAvatarById(avatarId).getLevel()) + .setCostumeId(avatars.getAvatarById(avatarId).getCostume()) + .build() ); } } } SocialDetail.Builder social = SocialDetail.newBuilder() - .setUid(this.getUid()) - .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(this.getHeadImage())) - .setNickname(this.getNickname()) - .setSignature(this.getSignature()) - .setLevel(this.getLevel()) - .setBirthday(this.getBirthday().getFilledProtoWhenNotEmpty()) - .setWorldLevel(this.getWorldLevel()) - .setNameCardId(this.getNameCardId()) - .setIsShowAvatar(this.isShowAvatars()) - .addAllShowAvatarInfoList(socialShowAvatarInfoList) - .addAllShowNameCardIdList(this.getShowNameCardInfoList()) - .setFinishAchievementNum(this.getFinishedAchievementNum()) - .setFriendEnterHomeOptionValue(this.getHome() == null ? 0 : this.getHome().getEnterHomeOption()); + .setUid(this.getUid()) + .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(this.getHeadImage())) + .setNickname(this.getNickname()) + .setSignature(this.getSignature()) + .setLevel(this.getLevel()) + .setBirthday(this.getBirthday().getFilledProtoWhenNotEmpty()) + .setWorldLevel(this.getWorldLevel()) + .setNameCardId(this.getNameCardId()) + .setIsShowAvatar(this.isShowAvatars()) + .addAllShowAvatarInfoList(socialShowAvatarInfoList) + .addAllShowNameCardIdList(this.getShowNameCardInfoList()) + .setFinishAchievementNum(this.getFinishedAchievementNum()) + .setFriendEnterHomeOptionValue(this.getHome() == null ? 0 : this.getHome().getEnterHomeOption()); return social; } @@ -1020,17 +1144,17 @@ public class Player { public PlayerWorldLocationInfoOuterClass.PlayerWorldLocationInfo getWorldPlayerLocationInfo() { return PlayerWorldLocationInfoOuterClass.PlayerWorldLocationInfo.newBuilder() - .setSceneId(this.getSceneId()) - .setPlayerLoc(this.getPlayerLocationInfo()) - .build(); + .setSceneId(this.getSceneId()) + .setPlayerLoc(this.getPlayerLocationInfo()) + .build(); } public PlayerLocationInfo getPlayerLocationInfo() { return PlayerLocationInfo.newBuilder() - .setUid(this.getUid()) - .setPos(this.getPosition().toProto()) - .setRot(this.getRotation().toProto()) - .build(); + .setUid(this.getUid()) + .setPos(this.getPosition().toProto()) + .setRot(this.getRotation().toProto()) + .build(); } public void loadBattlePassManager() { @@ -1040,7 +1164,7 @@ public class Player { } public PlayerCollectionRecords getCollectionRecordStore() { - if (this.collectionRecordStore==null) { + if (this.collectionRecordStore == null) { this.collectionRecordStore = new PlayerCollectionRecords(); } return collectionRecordStore; @@ -1266,7 +1390,8 @@ public class Player { session.setState(SessionState.ACTIVE); // Call join event. - PlayerJoinEvent event = new PlayerJoinEvent(this); event.call(); + PlayerJoinEvent event = new PlayerJoinEvent(this); + event.call(); if (event.isCanceled()) { // If event is not cancelled, continue. session.close(); return; @@ -1305,11 +1430,12 @@ public class Player { this.getFriendsList().save(); // Call quit event. - PlayerQuitEvent event = new PlayerQuitEvent(this); event.call(); - }catch (Throwable e) { + PlayerQuitEvent event = new PlayerQuitEvent(this); + event.call(); + } catch (Throwable e) { e.printStackTrace(); Grasscutter.getLogger().warn("Player (UID {}) save failure", getUid()); - }finally { + } finally { removeFromServer(); } } @@ -1324,23 +1450,15 @@ public class Player { public int getLegendaryKey() { return this.getProperty(PlayerProperty.PROP_PLAYER_LEGENDARY_KEY); } + public synchronized void addLegendaryKey(int count) { this.setProperty(PlayerProperty.PROP_PLAYER_LEGENDARY_KEY, getLegendaryKey() + count); } + public synchronized void useLegendaryKey(int count) { this.setProperty(PlayerProperty.PROP_PLAYER_LEGENDARY_KEY, getLegendaryKey() - count); } - public enum SceneLoadState { - NONE(0), LOADING(1), INIT(2), LOADED(3); - - @Getter private final int value; - - SceneLoadState(int value) { - this.value = value; - } - } - public int getPropertyMin(PlayerProperty prop) { if (prop.isDynamicRange()) { return 0; @@ -1383,4 +1501,15 @@ public class Player { } } + public enum SceneLoadState { + NONE(0), LOADING(1), INIT(2), LOADED(3); + + @Getter + private final int value; + + SceneLoadState(int value) { + this.value = value; + } + } + } diff --git a/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java b/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java index 13a8e7c58..b9756f4d9 100644 --- a/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java +++ b/src/main/java/emu/grasscutter/game/player/PlayerBirthday.java @@ -8,63 +8,62 @@ public class PlayerBirthday { private int day; private int month; - public PlayerBirthday(){ + public PlayerBirthday() { this.day = 0; this.month = 0; } - public PlayerBirthday(int day, int month){ + public PlayerBirthday(int day, int month) { this.day = day; this.month = month; } - public PlayerBirthday set(PlayerBirthday birth){ + public PlayerBirthday set(PlayerBirthday birth) { this.day = birth.day; this.month = birth.month; return this; } - public PlayerBirthday set(int d, int m){ + public PlayerBirthday set(int d, int m) { this.day = d; this.month = m; return this; } - public PlayerBirthday setDay(int value){ + public int getDay() { + return this.day; + } + + public PlayerBirthday setDay(int value) { this.day = value; return this; } - public PlayerBirthday setMonth(int value){ + public int getMonth() { + return this.month; + } + + public PlayerBirthday setMonth(int value) { this.month = value; return this; } - public int getDay(){ - return this.day; - } - - public int getMonth(){ - return this.month; - } - - public Birthday toProto(){ + public Birthday toProto() { return Birthday.newBuilder() - .setDay(this.getDay()) - .setMonth(this.getMonth()) - .build(); + .setDay(this.getDay()) + .setMonth(this.getMonth()) + .build(); } - public Birthday.Builder getFilledProtoWhenNotEmpty(){ - if(this.getDay() > 0) - { + public Birthday.Builder getFilledProtoWhenNotEmpty() { + if (this.getDay() > 0) { return Birthday.newBuilder() - .setDay(this.getDay()) - .setMonth(this.getMonth()); + .setDay(this.getDay()) + .setMonth(this.getMonth()); } return Birthday.newBuilder(); } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/game/player/PlayerBuffManager.java b/src/main/java/emu/grasscutter/game/player/PlayerBuffManager.java index b3c978449..f5af4edcc 100644 --- a/src/main/java/emu/grasscutter/game/player/PlayerBuffManager.java +++ b/src/main/java/emu/grasscutter/game/player/PlayerBuffManager.java @@ -1,10 +1,5 @@ package emu.grasscutter.game.player; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction; @@ -14,17 +9,19 @@ import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.net.proto.ServerBuffChangeNotifyOuterClass.ServerBuffChangeNotify.ServerBuffChangeType; import emu.grasscutter.net.proto.ServerBuffOuterClass.ServerBuff; import emu.grasscutter.server.packet.send.PacketServerBuffChangeNotify; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - import lombok.Getter; -public class PlayerBuffManager extends BasePlayerManager { - private int nextBuffUid; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +public class PlayerBuffManager extends BasePlayerManager { private final List pendingBuffs; private final Int2ObjectMap buffs; // Server buffs + private int nextBuffUid; public PlayerBuffManager(Player player) { super(player); @@ -34,6 +31,7 @@ public class PlayerBuffManager extends BasePlayerManager { /** * Gets a new uid for a server buff + * * @return New integer buff uid */ private int getNextBuffUid() { @@ -42,6 +40,7 @@ public class PlayerBuffManager extends BasePlayerManager { /** * Returns true if the player has a buff with this group id + * * @param groupId Buff group id * @return True if a buff with this group id exists */ @@ -64,6 +63,7 @@ public class PlayerBuffManager extends BasePlayerManager { /** * Adds a server buff to the player. + * * @param buffId Server buff id * @return True if a buff was added */ @@ -73,7 +73,8 @@ public class PlayerBuffManager extends BasePlayerManager { /** * Adds a server buff to the player. - * @param buffId Server buff id + * + * @param buffId Server buff id * @param duration Duration of the buff in seconds. Set to 0 for an infinite buff. * @return True if a buff was added */ @@ -83,9 +84,10 @@ public class PlayerBuffManager extends BasePlayerManager { /** * Adds a server buff to the player. - * @param buffId Server buff id + * + * @param buffId Server buff id * @param duration Duration of the buff in seconds. Set to 0 for an infinite buff. - * @param target Target avatar + * @param target Target avatar * @return True if a buff was added */ public synchronized boolean addBuff(int buffId, float duration, Avatar target) { @@ -102,7 +104,7 @@ public class PlayerBuffManager extends BasePlayerManager { .map(onAdded -> { var s = false; - for (var a: onAdded) { + for (var a : onAdded) { Grasscutter.getLogger().debug("onAdded exists"); if (Objects.requireNonNull(a.type) == AbilityModifierAction.Type.HealHP) { Grasscutter.getLogger().debug("Attempting heal"); @@ -144,6 +146,7 @@ public class PlayerBuffManager extends BasePlayerManager { /** * Removes a buff by its group id + * * @param buffGroupId Server buff group id * @return True if a buff was remove */ diff --git a/src/main/java/emu/grasscutter/game/player/PlayerCodex.java b/src/main/java/emu/grasscutter/game/player/PlayerCodex.java index 28d3d3546..242850498 100644 --- a/src/main/java/emu/grasscutter/game/player/PlayerCodex.java +++ b/src/main/java/emu/grasscutter/game/player/PlayerCodex.java @@ -15,17 +15,26 @@ import java.util.*; @Entity public class PlayerCodex { - @Transient private Player player; + @Transient + private Player player; //itemId is not codexId! - @Getter private Set unlockedWeapon; - @Getter private Map unlockedAnimal; - @Getter private Set unlockedMaterial; - @Getter private Set unlockedBook; - @Getter private Set unlockedTip; - @Getter private Set unlockedView; - @Getter private Set unlockedReliquary; - @Getter private Set unlockedReliquarySuitCodex; + @Getter + private final Set unlockedWeapon; + @Getter + private final Map unlockedAnimal; + @Getter + private final Set unlockedMaterial; + @Getter + private final Set unlockedBook; + @Getter + private final Set unlockedTip; + @Getter + private final Set unlockedView; + @Getter + private Set unlockedReliquary; + @Getter + private final Set unlockedReliquarySuitCodex; public PlayerCodex() { this.unlockedWeapon = new HashSet<>(); @@ -73,15 +82,17 @@ public class PlayerCodex { } }); } - default -> {} + default -> { + } } } case ITEM_RELIQUARY -> { - val reliquaryId = (itemId/10) * 10; // Normalize to 0-substat form + val reliquaryId = (itemId / 10) * 10; // Normalize to 0-substat form if (this.getUnlockedReliquary().add(reliquaryId)) checkUnlockedSuits(reliquaryId); } - default -> {} + default -> { + } } } @@ -118,7 +129,7 @@ public class PlayerCodex { private void fixReliquaries() { // Migrate older database entries which were using non-canonical forms of itemIds val newReliquaries = new HashSet(); - this.unlockedReliquary.forEach(i -> newReliquaries.add((i/10)*10)); + this.unlockedReliquary.forEach(i -> newReliquaries.add((i / 10) * 10)); this.unlockedReliquary = newReliquaries; GameData.getCodexReliquaryArrayList().stream() diff --git a/src/main/java/emu/grasscutter/game/player/PlayerCollectionRecords.java b/src/main/java/emu/grasscutter/game/player/PlayerCollectionRecords.java index ce7bf68ec..a9e22e0ab 100644 --- a/src/main/java/emu/grasscutter/game/player/PlayerCollectionRecords.java +++ b/src/main/java/emu/grasscutter/game/player/PlayerCollectionRecords.java @@ -1,10 +1,10 @@ package emu.grasscutter.game.player; +import dev.morphia.annotations.Entity; + import java.util.HashMap; import java.util.Map; -import dev.morphia.annotations.Entity; - @Entity(useDiscriminator = false) public class PlayerCollectionRecords { private Map records; @@ -49,7 +49,8 @@ public class PlayerCollectionRecords { private long expiredTime; @Deprecated // Morphia - public CollectionRecord() {} + public CollectionRecord() { + } public CollectionRecord(int configId, long expiredTime) { this.configId = configId; diff --git a/src/main/java/emu/grasscutter/game/player/PlayerProgressManager.java b/src/main/java/emu/grasscutter/game/player/PlayerProgressManager.java index 998f7044e..4a853af8a 100644 --- a/src/main/java/emu/grasscutter/game/player/PlayerProgressManager.java +++ b/src/main/java/emu/grasscutter/game/player/PlayerProgressManager.java @@ -1,36 +1,50 @@ package emu.grasscutter.game.player; -import dev.morphia.annotations.Entity; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.ScenePointEntry; import emu.grasscutter.data.excels.OpenStateData; import emu.grasscutter.data.excels.OpenStateData.OpenStateCondType; -import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.props.ActionReason; -import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.game.quest.enums.QuestState; import emu.grasscutter.game.quest.enums.QuestTrigger; -import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; -import emu.grasscutter.server.packet.send.PacketOpenStateChangeNotify; -import emu.grasscutter.server.packet.send.PacketOpenStateUpdateNotify; -import emu.grasscutter.server.packet.send.PacketSceneAreaUnlockNotify; -import emu.grasscutter.server.packet.send.PacketScenePointUnlockNotify; -import emu.grasscutter.server.packet.send.PacketSetOpenStateRsp; -import emu.grasscutter.server.packet.send.PacketUnlockTransPointRsp; +import emu.grasscutter.server.packet.send.*; -import java.util.*; +import java.util.Set; import java.util.stream.Collectors; // @Entity public class PlayerProgressManager extends BasePlayerDataManager { + /****************************************************************************************************************** + ****************************************************************************************************************** + * OPEN STATES + ****************************************************************************************************************** + *****************************************************************************************************************/ + + // Set of open states that are never unlocked, whether they fulfill the conditions or not. + public static final Set BLACKLIST_OPEN_STATES = Set.of( + 48 // blacklist OPEN_STATE_LIMIT_REGION_GLOBAL to make Meledy happy. =D Remove this as soon as quest unlocks are fully implemented. + ); + // Set of open states that are set per default for all accounts. Can be overwritten by an entry in `map`. + public static final Set DEFAULT_OPEN_STATES = GameData.getOpenStateList().stream() + .filter(s -> + s.isDefaultState() // Actual default-opened states. + // All states whose unlock we don't handle correctly yet. + || (s.getCond().stream().filter(c -> c.getCondType() == OpenStateCondType.OPEN_STATE_COND_PLAYER_LEVEL).count() == 0) + // Always unlock OPEN_STATE_PAIMON, otherwise the player will not have a working chat. + || s.getId() == 1 + ) + .filter(s -> !BLACKLIST_OPEN_STATES.contains(s.getId())) // Filter out states in the blacklist. + .map(s -> s.getId()) + .collect(Collectors.toSet()); + public PlayerProgressManager(Player player) { super(player); } /********** - Handler for player login. - **********/ + Handler for player login. + **********/ public void onPlayerLogin() { // Try unlocking open states on player login. This handles accounts where unlock conditions were // already met before certain open state unlocks were implemented. @@ -49,33 +63,9 @@ public class PlayerProgressManager extends BasePlayerDataManager { } - /****************************************************************************************************************** - ****************************************************************************************************************** - * OPEN STATES - ****************************************************************************************************************** - *****************************************************************************************************************/ - - // Set of open states that are never unlocked, whether they fulfill the conditions or not. - public static final Set BLACKLIST_OPEN_STATES = Set.of( - 48 // blacklist OPEN_STATE_LIMIT_REGION_GLOBAL to make Meledy happy. =D Remove this as soon as quest unlocks are fully implemented. - ); - - // Set of open states that are set per default for all accounts. Can be overwritten by an entry in `map`. - public static final Set DEFAULT_OPEN_STATES = GameData.getOpenStateList().stream() - .filter(s -> - s.isDefaultState() // Actual default-opened states. - // All states whose unlock we don't handle correctly yet. - || (s.getCond().stream().filter(c -> c.getCondType() == OpenStateCondType.OPEN_STATE_COND_PLAYER_LEVEL).count() == 0) - // Always unlock OPEN_STATE_PAIMON, otherwise the player will not have a working chat. - || s.getId() == 1 - ) - .filter(s -> !BLACKLIST_OPEN_STATES.contains(s.getId())) // Filter out states in the blacklist. - .map(s -> s.getId()) - .collect(Collectors.toSet()); - /********** - Direct getters and setters for open states. - **********/ + Direct getters and setters for open states. + **********/ public int getOpenState(int openState) { return this.player.getOpenStates().getOrDefault(openState, 0); } @@ -91,13 +81,14 @@ public class PlayerProgressManager extends BasePlayerDataManager { } } } + private void setOpenState(int openState, int value) { this.setOpenState(openState, value, true); } /********** - Condition checking for setting open states. - **********/ + Condition checking for setting open states. + **********/ private boolean areConditionsMet(OpenStateData openState) { // Check all conditions and test if at least one of them is violated. for (var condition : openState.getCond()) { @@ -106,17 +97,13 @@ public class PlayerProgressManager extends BasePlayerDataManager { if (this.player.getLevel() < condition.getParam()) { return false; } - } - else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_COND_QUEST) { + } else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_COND_QUEST) { // ToDo: Implement. - } - else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_COND_PARENT_QUEST) { + } else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_COND_PARENT_QUEST) { // ToDo: Implement. - } - else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_OFFERING_LEVEL) { + } else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_OFFERING_LEVEL) { // ToDo: Implement. - } - else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_CITY_REPUTATION_LEVEL) { + } else if (condition.getCondType() == OpenStateCondType.OPEN_STATE_CITY_REPUTATION_LEVEL) { // ToDo: Implement. } } @@ -126,8 +113,8 @@ public class PlayerProgressManager extends BasePlayerDataManager { } /********** - Setting open states from the client (via `SetOpenStateReq`). - **********/ + Setting open states from the client (via `SetOpenStateReq`). + **********/ public void setOpenStateFromClient(int openState, int value) { // Get the data for this open state. OpenStateData data = GameData.getOpenStateDataMap().get(openState); @@ -149,8 +136,8 @@ public class PlayerProgressManager extends BasePlayerDataManager { } /********** - Triggered unlocking of open states (unlock states whose conditions have been met.) - **********/ + Triggered unlocking of open states (unlock states whose conditions have been met.) + **********/ public void tryUnlockOpenStates(boolean sendNotify) { // Get list of open states that are not yet unlocked. var lockedStates = GameData.getOpenStateList().stream().filter(s -> this.player.getOpenStates().getOrDefault(s, 0) == 0).toList(); @@ -166,6 +153,7 @@ public class PlayerProgressManager extends BasePlayerDataManager { } } } + public void tryUnlockOpenStates() { this.tryUnlockOpenStates(true); } diff --git a/src/main/java/emu/grasscutter/game/player/TeamInfo.java b/src/main/java/emu/grasscutter/game/player/TeamInfo.java index 6831058de..3b39f560a 100644 --- a/src/main/java/emu/grasscutter/game/player/TeamInfo.java +++ b/src/main/java/emu/grasscutter/game/player/TeamInfo.java @@ -1,18 +1,18 @@ package emu.grasscutter.game.player; -import static emu.grasscutter.config.Configuration.*; - -import java.util.ArrayList; -import java.util.List; - import dev.morphia.annotations.Entity; import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.net.proto.AvatarTeamOuterClass.AvatarTeam; +import java.util.ArrayList; +import java.util.List; + +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + @Entity public class TeamInfo { private String name; - private List avatars; + private final List avatars; public TeamInfo() { this.name = ""; diff --git a/src/main/java/emu/grasscutter/game/player/TeamManager.java b/src/main/java/emu/grasscutter/game/player/TeamManager.java index 6d65217a5..fe559571e 100644 --- a/src/main/java/emu/grasscutter/game/player/TeamManager.java +++ b/src/main/java/emu/grasscutter/game/player/TeamManager.java @@ -1,8 +1,5 @@ package emu.grasscutter.game.player; -import static emu.grasscutter.config.Configuration.*; - -import java.util.*; import dev.morphia.annotations.Entity; import dev.morphia.annotations.Transient; import emu.grasscutter.GameConstants; @@ -22,22 +19,7 @@ import emu.grasscutter.net.proto.MotionStateOuterClass.MotionState; import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.server.event.player.PlayerTeamDeathEvent; -import emu.grasscutter.server.packet.send.PacketAddBackupAvatarTeamRsp; -import emu.grasscutter.server.packet.send.PacketAvatarDieAnimationEndRsp; -import emu.grasscutter.server.packet.send.PacketAvatarFightPropUpdateNotify; -import emu.grasscutter.server.packet.send.PacketAvatarLifeStateChangeNotify; -import emu.grasscutter.server.packet.send.PacketAvatarSatiationDataNotify; -import emu.grasscutter.server.packet.send.PacketAvatarTeamAllDataNotify; -import emu.grasscutter.server.packet.send.PacketAvatarTeamUpdateNotify; -import emu.grasscutter.server.packet.send.PacketChangeAvatarRsp; -import emu.grasscutter.server.packet.send.PacketChangeMpTeamAvatarRsp; -import emu.grasscutter.server.packet.send.PacketChangeTeamNameRsp; -import emu.grasscutter.server.packet.send.PacketChooseCurAvatarTeamRsp; -import emu.grasscutter.server.packet.send.PacketDelBackupAvatarTeamRsp; -import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify; -import emu.grasscutter.server.packet.send.PacketSceneTeamUpdateNotify; -import emu.grasscutter.server.packet.send.PacketSetUpAvatarTeamRsp; -import emu.grasscutter.server.packet.send.PacketWorldPlayerDieNotify; +import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.Position; import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; @@ -48,22 +30,42 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import lombok.Setter; +import java.util.*; + +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + @Entity public class TeamManager extends BasePlayerDataManager { + @Transient + private final List avatars; + @Transient + @Getter + private final Set gadgets; + @Transient + @Getter + private final IntSet teamResonances; + @Transient + @Getter + private final IntSet teamResonancesConfig; // This needs to be a LinkedHashMap to guarantee insertion order. - @Getter private LinkedHashMap teams; + @Getter + private LinkedHashMap teams; private int currentTeamIndex; - @Getter @Setter private int currentCharacterIndex; - - @Transient @Getter @Setter private TeamInfo mpTeam; - @Transient @Getter @Setter private int entityId; - @Transient private final List avatars; - @Transient @Getter private final Set gadgets; - @Transient @Getter private final IntSet teamResonances; - @Transient @Getter private final IntSet teamResonancesConfig; - - @Transient private int useTemporarilyTeamIndex = -1; - @Transient private List temporaryTeam; // Temporary Team for tower + @Getter + @Setter + private int currentCharacterIndex; + @Transient + @Getter + @Setter + private TeamInfo mpTeam; + @Transient + @Getter + @Setter + private int entityId; + @Transient + private int useTemporarilyTeamIndex = -1; + @Transient + private List temporaryTeam; // Temporary Team for tower public TeamManager() { this.mpTeam = new TeamInfo(); @@ -454,6 +456,7 @@ public class TeamManager extends BasePlayerDataManager { this.temporaryTeam = null; this.updateTeamEntities(null); } + public synchronized void setCurrentTeam(int teamId) { // if (this.getPlayer().isInMultiplayer()) { @@ -630,7 +633,7 @@ public class TeamManager extends BasePlayerDataManager { try { this.getPlayer().sendPacket(new PacketPlayerEnterSceneNotify(this.getPlayer(), EnterType.ENTER_TYPE_SELF, EnterReason.Revival, player.getSceneId(), getRespawnPosition())); player.getPosition().set(getRespawnPosition()); - }catch (Exception e) { + } catch (Exception e) { this.getPlayer().sendPacket(new PacketPlayerEnterSceneNotify(this.getPlayer(), EnterType.ENTER_TYPE_SELF, EnterReason.Revival, 3, GameConstants.START_POSITION)); player.getPosition().set(GameConstants.START_POSITION); // If something goes wrong, the resurrection is here } @@ -638,6 +641,7 @@ public class TeamManager extends BasePlayerDataManager { // Packets this.getPlayer().sendPacket(new BasePacket(PacketOpcodes.WorldPlayerReviveRsp)); } + public Position getRespawnPosition() { var deathPos = this.getPlayer().getPosition(); int sceneId = this.getPlayer().getSceneId(); @@ -650,6 +654,7 @@ public class TeamManager extends BasePlayerDataManager { return respawnPoint.get().getPointData().getTranPos(); } + public void saveAvatars() { // Save all avatars from active team for (EntityAvatar entity : this.getActiveTeam()) { @@ -671,7 +676,7 @@ public class TeamManager extends BasePlayerDataManager { // The id of the new custom team is the lowest id in [5,MAX_TEAMS] that is not yet taken. int id = -1; for (int i = 5; i <= GameConstants.MAX_TEAMS; i++) { - if (!this.teams.keySet().contains(i)) { + if (!this.teams.containsKey(i)) { id = i; break; } diff --git a/src/main/java/emu/grasscutter/game/props/ActionReason.java b/src/main/java/emu/grasscutter/game/props/ActionReason.java index 7f38de18f..dc5ce0ea6 100644 --- a/src/main/java/emu/grasscutter/game/props/ActionReason.java +++ b/src/main/java/emu/grasscutter/game/props/ActionReason.java @@ -1,211 +1,212 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum ActionReason { - None(0), - QuestItem(1), - QuestReward(2), - Trifle(3), - Shop(4), - PlayerUpgradeReward(5), - AddAvatar(6), - GadgetEnvAnimal(7), - MonsterEnvAnimal(8), - Compound(9), - Cook(10), - Gather(11), - MailAttachment(12), - CityLevelupReturn(15), - CityLevelupReward(17), - AreaExploreReward(18), - UnlockPointReward(19), - DungeonFirstPass(20), - DungeonPass(21), - ChangeElemType(23), - FetterOpen(25), - DailyTaskScore(26), - DailyTaskHost(27), - RandTaskHost(28), - Expedition(29), - Gacha(30), - Combine(31), - RandTaskGuest(32), - DailyTaskGuest(33), - ForgeOutput(34), - ForgeReturn(35), - InitAvatar(36), - MonsterDie(37), - Gm(38), - OpenChest(39), - GadgetDie(40), - MonsterChangeHp(41), - SubfieldDrop(42), - PushTipsReward(43), - ActivityMonsterDrop(44), - ActivityGather(45), - ActivitySubfieldDrop(46), - TowerScheduleReward(47), - TowerFloorStarReward(48), - TowerFirstPassReward(49), - TowerDailyReward(50), - HitClientTrivialEntity(51), - OpenWorldBossChest(52), - MaterialDeleteReturn(53), - SignInReward(54), - OpenBlossomChest(55), - Recharge(56), - BonusActivityReward(57), - TowerCommemorativeReward(58), - TowerSkipFloorReward(59), - RechargeBonus(60), - RechargeCard(61), - RechargeCardDaily(62), - RechargeCardReplace(63), - RechargeCardReplaceFree(64), - RechargePlayReplace(65), - MpPlayTakeReward(66), - ActivityWatcher(67), - SalesmanDeliverItem(68), - SalesmanReward(69), - Rebate(70), - McoinExchangeHcoin(71), - DailyTaskExchangeLegendaryKey(72), - UnlockPersonLine(73), - FetterLevelReward(74), - BuyResin(75), - RechargePackage(76), - DeliveryDailyReward(77), - CityReputationLevel(78), - CityReputationQuest(79), - CityReputationRequest(80), - CityReputationExplore(81), - OffergingLevel(82), - RoutineHost(83), - RoutineGuest(84), - TreasureMapSpotToken(89), - TreasureMapBonusLevelReward(90), - TreasureMapMpReward(91), - Convert(92), - OverflowTransform(93), - ActivityAvatarSelectionReward(96), - ActivityWatcherBatch(97), - HitTreeDrop(98), - GetHomeLevelupReward(99), - HomeDefaultFurniture(100), - ActivityCond(101), - BattlePassNotify(102), - PlayerUseItem(1001), - DropItem(1002), - WeaponUpgrade(1011), - WeaponPromote(1012), - WeaponAwaken(1013), - RelicUpgrade(1014), - Ability(1015), - DungeonStatueDrop(1016), - OfflineMsg(1017), - AvatarUpgrade(1018), - AvatarPromote(1019), - QuestAction(1021), - CityLevelup(1022), - UpgradeSkill(1024), - UnlockTalent(1025), - UpgradeProudSkill(1026), - PlayerLevelLimitUp(1027), - DungeonDaily(1028), - ItemGiving(1030), - ForgeCost(1031), - InvestigationReward(1032), - InvestigationTargetReward(1033), - GadgetInteract(1034), - SeaLampCiMaterial(1036), - SeaLampContributionReward(1037), - SeaLampPhaseReward(1038), - SeaLampFlyLamp(1039), - AutoRecover(1040), - ActivityExpireItem(1041), - SubCoinNegative(1042), - BargainDeduct(1043), - BattlePassPaidReward(1044), - BattlePassLevelReward(1045), - TrialAvatarActivityFirstPassReward(1046), - BuyBattlePassLevel(1047), - GrantBirthdayBenefit(1048), - AchievementReward(1049), - AchievementGoalReward(1050), - FirstShareToSocialNetwork(1051), - DestroyMaterial(1052), - CodexLevelupReward(1053), - HuntingOfferReward(1054), - UseWidgetAnchorPoint(1055), - UseWidgetBonfire(1056), - UngradeWeaponReturnMaterial(1057), - UseWidgetOneoffGatherPointDetector(1058), - UseWidgetClientCollector(1059), - UseWidgetClientDetector(1060), - TakeGeneralReward(1061), - AsterTakeSpecialReward(1062), - RemoveCodexBook(1063), - OfferingItem(1064), - UseWidgetGadgetBuilder(1065), - EffigyFirstPassReward(1066), - EffigyReward(1067), - ReunionFirstGiftReward(1068), - ReunionSignInReward(1069), - ReunionWatcherReward(1070), - SalesmanMpReward(1071), - ActionReasionAvatarPromoteReward(1072), - BlessingRedeemReward(1073), - ActionMiracleRingReward(1074), - ExpeditionReward(1075), - TreasureMapRemoveDetector(1076), - MechanicusDungeonTicket(1077), - MechanicusLevelupGear(1078), - MechanicusBattleSettle(1079), - RegionSearchReward(1080), - UnlockCoopChapter(1081), - TakeCoopReward(1082), - FleurFairDungeonReward(1083), - ActivityScore(1084), - ChannellerSlabOneoffDungeonReward(1085), - FurnitureMakeStart(1086), - FurnitureMakeTake(1087), - FurnitureMakeCancel(1088), - FurnitureMakeFastFinish(1089), - ChannellerSlabLoopDungeonFirstPassReward(1090), - ChannellerSlabLoopDungeonScoreReward(1091), - HomeLimitedShopBuy(1092), - HomeCoinCollect(1093); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private ActionReason(int value) { - this.value = value; - } + None(0), + QuestItem(1), + QuestReward(2), + Trifle(3), + Shop(4), + PlayerUpgradeReward(5), + AddAvatar(6), + GadgetEnvAnimal(7), + MonsterEnvAnimal(8), + Compound(9), + Cook(10), + Gather(11), + MailAttachment(12), + CityLevelupReturn(15), + CityLevelupReward(17), + AreaExploreReward(18), + UnlockPointReward(19), + DungeonFirstPass(20), + DungeonPass(21), + ChangeElemType(23), + FetterOpen(25), + DailyTaskScore(26), + DailyTaskHost(27), + RandTaskHost(28), + Expedition(29), + Gacha(30), + Combine(31), + RandTaskGuest(32), + DailyTaskGuest(33), + ForgeOutput(34), + ForgeReturn(35), + InitAvatar(36), + MonsterDie(37), + Gm(38), + OpenChest(39), + GadgetDie(40), + MonsterChangeHp(41), + SubfieldDrop(42), + PushTipsReward(43), + ActivityMonsterDrop(44), + ActivityGather(45), + ActivitySubfieldDrop(46), + TowerScheduleReward(47), + TowerFloorStarReward(48), + TowerFirstPassReward(49), + TowerDailyReward(50), + HitClientTrivialEntity(51), + OpenWorldBossChest(52), + MaterialDeleteReturn(53), + SignInReward(54), + OpenBlossomChest(55), + Recharge(56), + BonusActivityReward(57), + TowerCommemorativeReward(58), + TowerSkipFloorReward(59), + RechargeBonus(60), + RechargeCard(61), + RechargeCardDaily(62), + RechargeCardReplace(63), + RechargeCardReplaceFree(64), + RechargePlayReplace(65), + MpPlayTakeReward(66), + ActivityWatcher(67), + SalesmanDeliverItem(68), + SalesmanReward(69), + Rebate(70), + McoinExchangeHcoin(71), + DailyTaskExchangeLegendaryKey(72), + UnlockPersonLine(73), + FetterLevelReward(74), + BuyResin(75), + RechargePackage(76), + DeliveryDailyReward(77), + CityReputationLevel(78), + CityReputationQuest(79), + CityReputationRequest(80), + CityReputationExplore(81), + OffergingLevel(82), + RoutineHost(83), + RoutineGuest(84), + TreasureMapSpotToken(89), + TreasureMapBonusLevelReward(90), + TreasureMapMpReward(91), + Convert(92), + OverflowTransform(93), + ActivityAvatarSelectionReward(96), + ActivityWatcherBatch(97), + HitTreeDrop(98), + GetHomeLevelupReward(99), + HomeDefaultFurniture(100), + ActivityCond(101), + BattlePassNotify(102), + PlayerUseItem(1001), + DropItem(1002), + WeaponUpgrade(1011), + WeaponPromote(1012), + WeaponAwaken(1013), + RelicUpgrade(1014), + Ability(1015), + DungeonStatueDrop(1016), + OfflineMsg(1017), + AvatarUpgrade(1018), + AvatarPromote(1019), + QuestAction(1021), + CityLevelup(1022), + UpgradeSkill(1024), + UnlockTalent(1025), + UpgradeProudSkill(1026), + PlayerLevelLimitUp(1027), + DungeonDaily(1028), + ItemGiving(1030), + ForgeCost(1031), + InvestigationReward(1032), + InvestigationTargetReward(1033), + GadgetInteract(1034), + SeaLampCiMaterial(1036), + SeaLampContributionReward(1037), + SeaLampPhaseReward(1038), + SeaLampFlyLamp(1039), + AutoRecover(1040), + ActivityExpireItem(1041), + SubCoinNegative(1042), + BargainDeduct(1043), + BattlePassPaidReward(1044), + BattlePassLevelReward(1045), + TrialAvatarActivityFirstPassReward(1046), + BuyBattlePassLevel(1047), + GrantBirthdayBenefit(1048), + AchievementReward(1049), + AchievementGoalReward(1050), + FirstShareToSocialNetwork(1051), + DestroyMaterial(1052), + CodexLevelupReward(1053), + HuntingOfferReward(1054), + UseWidgetAnchorPoint(1055), + UseWidgetBonfire(1056), + UngradeWeaponReturnMaterial(1057), + UseWidgetOneoffGatherPointDetector(1058), + UseWidgetClientCollector(1059), + UseWidgetClientDetector(1060), + TakeGeneralReward(1061), + AsterTakeSpecialReward(1062), + RemoveCodexBook(1063), + OfferingItem(1064), + UseWidgetGadgetBuilder(1065), + EffigyFirstPassReward(1066), + EffigyReward(1067), + ReunionFirstGiftReward(1068), + ReunionSignInReward(1069), + ReunionWatcherReward(1070), + SalesmanMpReward(1071), + ActionReasionAvatarPromoteReward(1072), + BlessingRedeemReward(1073), + ActionMiracleRingReward(1074), + ExpeditionReward(1075), + TreasureMapRemoveDetector(1076), + MechanicusDungeonTicket(1077), + MechanicusLevelupGear(1078), + MechanicusBattleSettle(1079), + RegionSearchReward(1080), + UnlockCoopChapter(1081), + TakeCoopReward(1082), + FleurFairDungeonReward(1083), + ActivityScore(1084), + ChannellerSlabOneoffDungeonReward(1085), + FurnitureMakeStart(1086), + FurnitureMakeTake(1087), + FurnitureMakeCancel(1088), + FurnitureMakeFastFinish(1089), + ChannellerSlabLoopDungeonFirstPassReward(1090), + ChannellerSlabLoopDungeonScoreReward(1091), + HomeLimitedShopBuy(1092), + HomeCoinCollect(1093); - public int getValue() { - return value; - } - - public static ActionReason getTypeByValue(int value) { - return map.getOrDefault(value, None); - } - - public static ActionReason getTypeByName(String name) { - return stringMap.getOrDefault(name, None); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + ActionReason(int value) { + this.value = value; + } + + public static ActionReason getTypeByValue(int value) { + return map.getOrDefault(value, None); + } + + public static ActionReason getTypeByName(String name) { + return stringMap.getOrDefault(name, None); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/ActivityType.java b/src/main/java/emu/grasscutter/game/props/ActivityType.java index b91538cbb..17b608e8c 100644 --- a/src/main/java/emu/grasscutter/game/props/ActivityType.java +++ b/src/main/java/emu/grasscutter/game/props/ActivityType.java @@ -17,7 +17,6 @@ public enum ActivityType { ; - private final int value; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); private static final Map stringMap = new HashMap<>(); @@ -28,6 +27,8 @@ public enum ActivityType { }); } + private final int value; + public static ActivityType getTypeByValue(int value) { return map.getOrDefault(value, NONE); } diff --git a/src/main/java/emu/grasscutter/game/props/BattlePassMissionRefreshType.java b/src/main/java/emu/grasscutter/game/props/BattlePassMissionRefreshType.java index b07f20ea2..d95a858a1 100644 --- a/src/main/java/emu/grasscutter/game/props/BattlePassMissionRefreshType.java +++ b/src/main/java/emu/grasscutter/game/props/BattlePassMissionRefreshType.java @@ -1,18 +1,18 @@ package emu.grasscutter.game.props; public enum BattlePassMissionRefreshType { - BATTLE_PASS_MISSION_REFRESH_DAILY (0), - BATTLE_PASS_MISSION_REFRESH_CYCLE_CROSS_SCHEDULE (1), // Weekly - BATTLE_PASS_MISSION_REFRESH_SCHEDULE (2), // Per BP - BATTLE_PASS_MISSION_REFRESH_CYCLE (1); // Event? - - private final int value; - - BattlePassMissionRefreshType(int value) { - this.value = value; - } + BATTLE_PASS_MISSION_REFRESH_DAILY(0), + BATTLE_PASS_MISSION_REFRESH_CYCLE_CROSS_SCHEDULE(1), // Weekly + BATTLE_PASS_MISSION_REFRESH_SCHEDULE(2), // Per BP + BATTLE_PASS_MISSION_REFRESH_CYCLE(1); // Event? - public int getValue() { - return value; - } + private final int value; + + BattlePassMissionRefreshType(int value) { + this.value = value; + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/BattlePassMissionStatus.java b/src/main/java/emu/grasscutter/game/props/BattlePassMissionStatus.java index 7f2dabc90..385f0775f 100644 --- a/src/main/java/emu/grasscutter/game/props/BattlePassMissionStatus.java +++ b/src/main/java/emu/grasscutter/game/props/BattlePassMissionStatus.java @@ -3,24 +3,24 @@ package emu.grasscutter.game.props; import emu.grasscutter.net.proto.BattlePassMissionOuterClass.BattlePassMission.MissionStatus; public enum BattlePassMissionStatus { - MISSION_STATUS_INVALID (0, MissionStatus.MISSION_STATUS_INVALID), - MISSION_STATUS_UNFINISHED (1, MissionStatus.MISSION_STATUS_UNFINISHED), - MISSION_STATUS_FINISHED (2, MissionStatus.MISSION_STATUS_FINISHED), - MISSION_STATUS_POINT_TAKEN (3, MissionStatus.MISSION_STATUS_POINT_TAKEN); - - private final int value; - private final MissionStatus missionStatus; - - BattlePassMissionStatus(int value, MissionStatus missionStatus) { - this.value = value; - this.missionStatus = missionStatus; // In case proto enum values change later - } + MISSION_STATUS_INVALID(0, MissionStatus.MISSION_STATUS_INVALID), + MISSION_STATUS_UNFINISHED(1, MissionStatus.MISSION_STATUS_UNFINISHED), + MISSION_STATUS_FINISHED(2, MissionStatus.MISSION_STATUS_FINISHED), + MISSION_STATUS_POINT_TAKEN(3, MissionStatus.MISSION_STATUS_POINT_TAKEN); - public int getValue() { - return value; - } + private final int value; + private final MissionStatus missionStatus; - public MissionStatus getMissionStatus() { - return missionStatus; - } + BattlePassMissionStatus(int value, MissionStatus missionStatus) { + this.value = value; + this.missionStatus = missionStatus; // In case proto enum values change later + } + + public int getValue() { + return value; + } + + public MissionStatus getMissionStatus() { + return missionStatus; + } } diff --git a/src/main/java/emu/grasscutter/game/props/ClimateType.java b/src/main/java/emu/grasscutter/game/props/ClimateType.java index 3ec52ed1c..dce021208 100644 --- a/src/main/java/emu/grasscutter/game/props/ClimateType.java +++ b/src/main/java/emu/grasscutter/game/props/ClimateType.java @@ -1,54 +1,55 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum ClimateType { - CLIMATE_NONE(0), - CLIMATE_SUNNY(1), - CLIMATE_CLOUDY(2), - CLIMATE_RAIN(3), - CLIMATE_THUNDERSTORM(4), - CLIMATE_SNOW(5), - CLIMATE_MIST(6); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private ClimateType(int value) { - this.value = value; - } + CLIMATE_NONE(0), + CLIMATE_SUNNY(1), + CLIMATE_CLOUDY(2), + CLIMATE_RAIN(3), + CLIMATE_THUNDERSTORM(4), + CLIMATE_SNOW(5), + CLIMATE_MIST(6); - public int getValue() { - return this.value; - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); - public String getShortName() { - return this.name().substring(8).toLowerCase(); - } - - public static ClimateType getTypeByValue(int value) { - return map.getOrDefault(value, CLIMATE_NONE); - } - - public static ClimateType getTypeByName(String name) { - return stringMap.getOrDefault(name, CLIMATE_NONE); - } - - public static ClimateType getTypeByShortName(String shortName) { - String name = "CLIMATE_" + shortName.toUpperCase(); - return stringMap.getOrDefault(name, CLIMATE_NONE); - } + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + ClimateType(int value) { + this.value = value; + } + + public static ClimateType getTypeByValue(int value) { + return map.getOrDefault(value, CLIMATE_NONE); + } + + public static ClimateType getTypeByName(String name) { + return stringMap.getOrDefault(name, CLIMATE_NONE); + } + + public static ClimateType getTypeByShortName(String shortName) { + String name = "CLIMATE_" + shortName.toUpperCase(); + return stringMap.getOrDefault(name, CLIMATE_NONE); + } + + public int getValue() { + return this.value; + } + + public String getShortName() { + return this.name().substring(8).toLowerCase(); + } } diff --git a/src/main/java/emu/grasscutter/game/props/ElementType.java b/src/main/java/emu/grasscutter/game/props/ElementType.java index db8887d71..917b71800 100644 --- a/src/main/java/emu/grasscutter/game/props/ElementType.java +++ b/src/main/java/emu/grasscutter/game/props/ElementType.java @@ -1,33 +1,27 @@ package emu.grasscutter.game.props; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; -public enum ElementType { - None (0, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY), - Fire (1, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY, 10101, "TeamResonance_Fire_Lv2", 2), - Water (2, FightProperty.FIGHT_PROP_CUR_WATER_ENERGY, FightProperty.FIGHT_PROP_MAX_WATER_ENERGY, 10201, "TeamResonance_Water_Lv2", 3), - Grass (3, FightProperty.FIGHT_PROP_CUR_GRASS_ENERGY, FightProperty.FIGHT_PROP_MAX_GRASS_ENERGY, 10501, "TeamResonance_Grass_Lv2", 8), - Electric (4, FightProperty.FIGHT_PROP_CUR_ELEC_ENERGY, FightProperty.FIGHT_PROP_MAX_ELEC_ENERGY, 10401, "TeamResonance_Electric_Lv2", 7), - Ice (5, FightProperty.FIGHT_PROP_CUR_ICE_ENERGY, FightProperty.FIGHT_PROP_MAX_ICE_ENERGY, 10601, "TeamResonance_Ice_Lv2", 5), - Frozen (6, FightProperty.FIGHT_PROP_CUR_ICE_ENERGY, FightProperty.FIGHT_PROP_MAX_ICE_ENERGY), - Wind (7, FightProperty.FIGHT_PROP_CUR_WIND_ENERGY, FightProperty.FIGHT_PROP_MAX_WIND_ENERGY, 10301, "TeamResonance_Wind_Lv2", 4), - Rock (8, FightProperty.FIGHT_PROP_CUR_ROCK_ENERGY, FightProperty.FIGHT_PROP_MAX_ROCK_ENERGY, 10701, "TeamResonance_Rock_Lv2", 6), - AntiFire (9, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY), - Default (255, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY, 10801, "TeamResonance_AllDifferent"); +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +public enum ElementType { + None(0, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY), + Fire(1, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY, 10101, "TeamResonance_Fire_Lv2", 2), + Water(2, FightProperty.FIGHT_PROP_CUR_WATER_ENERGY, FightProperty.FIGHT_PROP_MAX_WATER_ENERGY, 10201, "TeamResonance_Water_Lv2", 3), + Grass(3, FightProperty.FIGHT_PROP_CUR_GRASS_ENERGY, FightProperty.FIGHT_PROP_MAX_GRASS_ENERGY, 10501, "TeamResonance_Grass_Lv2", 8), + Electric(4, FightProperty.FIGHT_PROP_CUR_ELEC_ENERGY, FightProperty.FIGHT_PROP_MAX_ELEC_ENERGY, 10401, "TeamResonance_Electric_Lv2", 7), + Ice(5, FightProperty.FIGHT_PROP_CUR_ICE_ENERGY, FightProperty.FIGHT_PROP_MAX_ICE_ENERGY, 10601, "TeamResonance_Ice_Lv2", 5), + Frozen(6, FightProperty.FIGHT_PROP_CUR_ICE_ENERGY, FightProperty.FIGHT_PROP_MAX_ICE_ENERGY), + Wind(7, FightProperty.FIGHT_PROP_CUR_WIND_ENERGY, FightProperty.FIGHT_PROP_MAX_WIND_ENERGY, 10301, "TeamResonance_Wind_Lv2", 4), + Rock(8, FightProperty.FIGHT_PROP_CUR_ROCK_ENERGY, FightProperty.FIGHT_PROP_MAX_ROCK_ENERGY, 10701, "TeamResonance_Rock_Lv2", 6), + AntiFire(9, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY), + Default(255, FightProperty.FIGHT_PROP_CUR_FIRE_ENERGY, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY, 10801, "TeamResonance_AllDifferent"); - @Getter private final int value; - @Getter private final int teamResonanceId; - @Getter private final FightProperty curEnergyProp; - @Getter private final FightProperty maxEnergyProp; - @Getter private final int depotValue; - @Getter private final int configHash; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); private static final Map stringMap = new HashMap<>(); @@ -38,15 +32,28 @@ public enum ElementType { }); } - private ElementType(int value, FightProperty curEnergyProp, FightProperty maxEnergyProp) { + @Getter + private final int value; + @Getter + private final int teamResonanceId; + @Getter + private final FightProperty curEnergyProp; + @Getter + private final FightProperty maxEnergyProp; + @Getter + private final int depotValue; + @Getter + private final int configHash; + + ElementType(int value, FightProperty curEnergyProp, FightProperty maxEnergyProp) { this(value, curEnergyProp, maxEnergyProp, 0, null, 1); } - private ElementType(int value, FightProperty curEnergyProp, FightProperty maxEnergyProp, int teamResonanceId, String configName) { + ElementType(int value, FightProperty curEnergyProp, FightProperty maxEnergyProp, int teamResonanceId, String configName) { this(value, curEnergyProp, maxEnergyProp, teamResonanceId, configName, 1); } - private ElementType(int value, FightProperty curEnergyProp, FightProperty maxEnergyProp, int teamResonanceId, String configName, int depotValue) { + ElementType(int value, FightProperty curEnergyProp, FightProperty maxEnergyProp, int teamResonanceId, String configName, int depotValue) { this.value = value; this.curEnergyProp = curEnergyProp; this.maxEnergyProp = maxEnergyProp; diff --git a/src/main/java/emu/grasscutter/game/props/EnterReason.java b/src/main/java/emu/grasscutter/game/props/EnterReason.java index 39e0e4404..5765f2d5f 100644 --- a/src/main/java/emu/grasscutter/game/props/EnterReason.java +++ b/src/main/java/emu/grasscutter/game/props/EnterReason.java @@ -1,70 +1,71 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum EnterReason { - None(0), - Login(1), - DungeonReplay(11), - DungeonReviveOnWaypoint(12), - DungeonEnter(13), - DungeonQuit(14), - Gm(21), - QuestRollback(31), - Revival(32), - PersonalScene(41), - TransPoint(42), - ClientTransmit(43), - ForceDragBack(44), - TeamKick(51), - TeamJoin(52), - TeamBack(53), - Muip(54), - DungeonInviteAccept(55), - Lua(56), - ActivityLoadTerrain(57), - HostFromSingleToMp(58), - MpPlay(59), - AnchorPoint(60), - LuaSkipUi(61), - ReloadTerrain(62), - DraftTransfer(63), - EnterHome(64), - ExitHome(65), - ChangeHomeModule(66), - Gallery(67), - HomeSceneJump(68), - HideAndSeek(69); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private EnterReason(int value) { - this.value = value; - } + None(0), + Login(1), + DungeonReplay(11), + DungeonReviveOnWaypoint(12), + DungeonEnter(13), + DungeonQuit(14), + Gm(21), + QuestRollback(31), + Revival(32), + PersonalScene(41), + TransPoint(42), + ClientTransmit(43), + ForceDragBack(44), + TeamKick(51), + TeamJoin(52), + TeamBack(53), + Muip(54), + DungeonInviteAccept(55), + Lua(56), + ActivityLoadTerrain(57), + HostFromSingleToMp(58), + MpPlay(59), + AnchorPoint(60), + LuaSkipUi(61), + ReloadTerrain(62), + DraftTransfer(63), + EnterHome(64), + ExitHome(65), + ChangeHomeModule(66), + Gallery(67), + HomeSceneJump(68), + HideAndSeek(69); - public int getValue() { - return value; - } - - public static EnterReason getTypeByValue(int value) { - return map.getOrDefault(value, None); - } - - public static EnterReason getTypeByName(String name) { - return stringMap.getOrDefault(name, None); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + EnterReason(int value) { + this.value = value; + } + + public static EnterReason getTypeByValue(int value) { + return map.getOrDefault(value, None); + } + + public static EnterReason getTypeByName(String name) { + return stringMap.getOrDefault(name, None); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/EntityIdType.java b/src/main/java/emu/grasscutter/game/props/EntityIdType.java index 9ec6aee86..7d546dbb9 100644 --- a/src/main/java/emu/grasscutter/game/props/EntityIdType.java +++ b/src/main/java/emu/grasscutter/game/props/EntityIdType.java @@ -1,22 +1,22 @@ package emu.grasscutter.game.props; public enum EntityIdType { - AVATAR (0x01), - MONSTER (0x02), - NPC (0x03), - GADGET (0x04), - REGION (0x05), - WEAPON (0x06), - TEAM (0x09), - MPLEVEL (0x0b); + AVATAR(0x01), + MONSTER(0x02), + NPC(0x03), + GADGET(0x04), + REGION(0x05), + WEAPON(0x06), + TEAM(0x09), + MPLEVEL(0x0b); - private final int id; + private final int id; - private EntityIdType(int id) { - this.id = id; - } + EntityIdType(int id) { + this.id = id; + } - public int getId() { - return id; - } + public int getId() { + return id; + } } diff --git a/src/main/java/emu/grasscutter/game/props/EntityType.java b/src/main/java/emu/grasscutter/game/props/EntityType.java index 6370d78ab..938fdef74 100644 --- a/src/main/java/emu/grasscutter/game/props/EntityType.java +++ b/src/main/java/emu/grasscutter/game/props/EntityType.java @@ -1,83 +1,82 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum EntityType { - None (0), - Avatar (1), - Monster (2), - Bullet (3), - AttackPhyisicalUnit (4), - AOE (5), - Camera (6), - EnviroArea (7), - Equip (8), - MonsterEquip (9), - Grass (10), - Level (11), - NPC (12), - TransPointFirst (13), - TransPointFirstGadget (14), - TransPointSecond (15), - TransPointSecondGadget (16), - DropItem (17), - Field (18), - Gadget (19), - Water (20), - GatherPoint (21), - GatherObject (22), - AirflowField (23), - SpeedupField (24), - Gear (25), - Chest (26), - EnergyBall (27), - ElemCrystal (28), - Timeline (29), - Worktop (30), - Team (31), - Platform (32), - AmberWind (33), - EnvAnimal (34), - SealGadget (35), - Tree (36), - Bush (37), - QuestGadget (38), - Lightning (39), - RewardPoint (40), - RewardStatue (41), - MPLevel (42), - WindSeed (43), - MpPlayRewardPoint (44), - ViewPoint (45), - RemoteAvatar (46), - GeneralRewardPoint (47), - PlayTeam (48), - OfferingGadget (49), - EyePoint (50), - MiracleRing (51), - Foundation (52), - WidgetGadget (53), - Vehicle (54), - SubEquip (55), - FishRod (56), - CustomTile (57), - FishPool (58), - CustomGadget (59), - BlackMud (60), - RoguelikeOperatorGadget (61), - NightCrowGadget (62), - Projector (63), - Screen (64), - EchoShell (65), - UIInteractGadget (66), - PlaceHolder (99); + None(0), + Avatar(1), + Monster(2), + Bullet(3), + AttackPhyisicalUnit(4), + AOE(5), + Camera(6), + EnviroArea(7), + Equip(8), + MonsterEquip(9), + Grass(10), + Level(11), + NPC(12), + TransPointFirst(13), + TransPointFirstGadget(14), + TransPointSecond(15), + TransPointSecondGadget(16), + DropItem(17), + Field(18), + Gadget(19), + Water(20), + GatherPoint(21), + GatherObject(22), + AirflowField(23), + SpeedupField(24), + Gear(25), + Chest(26), + EnergyBall(27), + ElemCrystal(28), + Timeline(29), + Worktop(30), + Team(31), + Platform(32), + AmberWind(33), + EnvAnimal(34), + SealGadget(35), + Tree(36), + Bush(37), + QuestGadget(38), + Lightning(39), + RewardPoint(40), + RewardStatue(41), + MPLevel(42), + WindSeed(43), + MpPlayRewardPoint(44), + ViewPoint(45), + RemoteAvatar(46), + GeneralRewardPoint(47), + PlayTeam(48), + OfferingGadget(49), + EyePoint(50), + MiracleRing(51), + Foundation(52), + WidgetGadget(53), + Vehicle(54), + SubEquip(55), + FishRod(56), + CustomTile(57), + FishPool(58), + CustomGadget(59), + BlackMud(60), + RoguelikeOperatorGadget(61), + NightCrowGadget(62), + Projector(63), + Screen(64), + EchoShell(65), + UIInteractGadget(66), + PlaceHolder(99); - private final int value; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); private static final Map stringMap = new HashMap<>(); @@ -88,12 +87,10 @@ public enum EntityType { }); } - private EntityType(int value) { - this.value = value; - } + private final int value; - public int getValue() { - return value; + EntityType(int value) { + this.value = value; } public static EntityType getTypeByValue(int value) { @@ -103,4 +100,8 @@ public enum EntityType { public static EntityType getTypeByName(String name) { return stringMap.getOrDefault(name, None); } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/FetterState.java b/src/main/java/emu/grasscutter/game/props/FetterState.java index 346060e19..4630268e7 100644 --- a/src/main/java/emu/grasscutter/game/props/FetterState.java +++ b/src/main/java/emu/grasscutter/game/props/FetterState.java @@ -1,42 +1,43 @@ -package emu.grasscutter.game.props; - -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - -public enum FetterState { - NONE(0), - NOT_OPEN(1), - OPEN(1), - FINISH(3); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private FetterState(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - public static FetterState getTypeByValue(int value) { - return map.getOrDefault(value, NONE); - } - - public static FetterState getTypeByName(String name) { - return stringMap.getOrDefault(name, NONE); - } -} +package emu.grasscutter.game.props; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +public enum FetterState { + NONE(0), + NOT_OPEN(1), + OPEN(1), + FINISH(3); + + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + FetterState(int value) { + this.value = value; + } + + public static FetterState getTypeByValue(int value) { + return map.getOrDefault(value, NONE); + } + + public static FetterState getTypeByName(String name) { + return stringMap.getOrDefault(name, NONE); + } + + public int getValue() { + return value; + } +} diff --git a/src/main/java/emu/grasscutter/game/props/FightProperty.java b/src/main/java/emu/grasscutter/game/props/FightProperty.java index 32c45f1bb..69b51941d 100644 --- a/src/main/java/emu/grasscutter/game/props/FightProperty.java +++ b/src/main/java/emu/grasscutter/game/props/FightProperty.java @@ -1,20 +1,15 @@ package emu.grasscutter.game.props; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Consumer; - -import static java.util.Map.entry; - -import java.util.Arrays; -import java.util.stream.Stream; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; +import java.util.*; +import java.util.function.Consumer; +import java.util.stream.Stream; + +import static java.util.Map.entry; + public enum FightProperty { FIGHT_PROP_NONE(0), FIGHT_PROP_BASE_HP(1), @@ -113,43 +108,9 @@ public enum FightProperty { FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO(3023), FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT(3024); - private final int id; + public static final int[] fightProps = new int[]{1, 4, 7, 20, 21, 22, 23, 26, 27, 28, 29, 30, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 55, 56, 2000, 2001, 2002, 2003, 1010}; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); private static final Map stringMap = new HashMap<>(); - - public static final int[] fightProps = new int[] {1, 4, 7, 20, 21, 22, 23, 26, 27, 28, 29, 30, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 55, 56, 2000, 2001, 2002, 2003, 1010}; - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getId(), e); - stringMap.put(e.name(), e); - }); - } - - private FightProperty(int id) { - this.id = id; - } - - public int getId() { - return id; - } - - public static FightProperty getPropById(int value) { - return map.getOrDefault(value, FIGHT_PROP_NONE); - } - - public static FightProperty getPropByName(String name) { - return stringMap.getOrDefault(name, FIGHT_PROP_NONE); - } - - public static FightProperty getPropByShortName(String name) { - return shortNameMap.getOrDefault(name, FIGHT_PROP_NONE); - } - - public static Set getShortNames() { - return shortNameMap.keySet(); - } - // This was originally for relic properties so some names might not be applicable for e.g. setstats private static final Map shortNameMap = Map.ofEntries( // Normal relic stats @@ -192,34 +153,46 @@ public enum FightProperty { entry("respyro", FIGHT_PROP_FIRE_SUB_HURT), entry("resphys", FIGHT_PROP_PHYSICAL_SUB_HURT) ); - private static final List flatProps = Arrays.asList( FIGHT_PROP_BASE_HP, FIGHT_PROP_HP, FIGHT_PROP_BASE_ATTACK, FIGHT_PROP_ATTACK, FIGHT_PROP_BASE_DEFENSE, FIGHT_PROP_DEFENSE, FIGHT_PROP_HEALED_ADD, FIGHT_PROP_CUR_FIRE_ENERGY, FIGHT_PROP_CUR_ELEC_ENERGY, FIGHT_PROP_CUR_WATER_ENERGY, FIGHT_PROP_CUR_GRASS_ENERGY, FIGHT_PROP_CUR_WIND_ENERGY, FIGHT_PROP_CUR_ICE_ENERGY, FIGHT_PROP_CUR_ROCK_ENERGY, FIGHT_PROP_CUR_HP, FIGHT_PROP_MAX_HP, FIGHT_PROP_CUR_ATTACK, FIGHT_PROP_CUR_DEFENSE); - - @Getter - public static class CompoundProperty { - private FightProperty result; - private FightProperty base; - private FightProperty percent; - private FightProperty flat; - - public CompoundProperty(FightProperty result, FightProperty base, FightProperty percent, FightProperty flat) { - this.result = result; - this.base = base; - this.percent = percent; - this.flat = flat; - } - } - - private static Map compoundProperties = Map.ofEntries( + private static final Map compoundProperties = Map.ofEntries( entry(FIGHT_PROP_MAX_HP, new CompoundProperty(FIGHT_PROP_MAX_HP, FIGHT_PROP_BASE_HP, FIGHT_PROP_HP_PERCENT, FIGHT_PROP_HP)), entry(FIGHT_PROP_CUR_ATTACK, new CompoundProperty(FIGHT_PROP_CUR_ATTACK, FIGHT_PROP_BASE_ATTACK, FIGHT_PROP_ATTACK_PERCENT, FIGHT_PROP_ATTACK)), entry(FIGHT_PROP_CUR_DEFENSE, new CompoundProperty(FIGHT_PROP_CUR_DEFENSE, FIGHT_PROP_BASE_DEFENSE, FIGHT_PROP_DEFENSE_PERCENT, FIGHT_PROP_DEFENSE)) ); + static { + Stream.of(values()).forEach(e -> { + map.put(e.getId(), e); + stringMap.put(e.name(), e); + }); + } + + private final int id; + + FightProperty(int id) { + this.id = id; + } + + public static FightProperty getPropById(int value) { + return map.getOrDefault(value, FIGHT_PROP_NONE); + } + + public static FightProperty getPropByName(String name) { + return stringMap.getOrDefault(name, FIGHT_PROP_NONE); + } + + public static FightProperty getPropByShortName(String name) { + return shortNameMap.getOrDefault(name, FIGHT_PROP_NONE); + } + + public static Set getShortNames() { + return shortNameMap.keySet(); + } + public static CompoundProperty getCompoundProperty(FightProperty result) { return compoundProperties.get(result); } @@ -231,4 +204,23 @@ public enum FightProperty { public static boolean isPercentage(FightProperty prop) { return !flatProps.contains(prop); } + + public int getId() { + return id; + } + + @Getter + public static class CompoundProperty { + private final FightProperty result; + private final FightProperty base; + private final FightProperty percent; + private final FightProperty flat; + + public CompoundProperty(FightProperty result, FightProperty base, FightProperty percent, FightProperty flat) { + this.result = result; + this.base = base; + this.percent = percent; + this.flat = flat; + } + } } diff --git a/src/main/java/emu/grasscutter/game/props/GrowCurve.java b/src/main/java/emu/grasscutter/game/props/GrowCurve.java index e3a369f31..e4f6ae362 100644 --- a/src/main/java/emu/grasscutter/game/props/GrowCurve.java +++ b/src/main/java/emu/grasscutter/game/props/GrowCurve.java @@ -1,100 +1,100 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum GrowCurve { - GROW_CURVE_NONE(0), - GROW_CURVE_HP(1), - GROW_CURVE_ATTACK(2), - GROW_CURVE_STAMINA(3), - GROW_CURVE_STRIKE(4), - GROW_CURVE_ANTI_STRIKE(5), - GROW_CURVE_ANTI_STRIKE1(6), - GROW_CURVE_ANTI_STRIKE2(7), - GROW_CURVE_ANTI_STRIKE3(8), - GROW_CURVE_STRIKE_HURT(9), - GROW_CURVE_ELEMENT(10), - GROW_CURVE_KILL_EXP(11), - GROW_CURVE_DEFENSE(12), - GROW_CURVE_ATTACK_BOMB(13), - GROW_CURVE_HP_LITTLEMONSTER(14), - GROW_CURVE_ELEMENT_MASTERY(15), - GROW_CURVE_PROGRESSION(16), - GROW_CURVE_DEFENDING(17), - GROW_CURVE_MHP(18), - GROW_CURVE_MATK(19), - GROW_CURVE_TOWERATK(20), - GROW_CURVE_HP_S5(21), - GROW_CURVE_HP_S4(22), - GROW_CURVE_HP_2(23), - GROW_CURVE_ATTACK_S5(31), - GROW_CURVE_ATTACK_S4(32), - GROW_CURVE_ATTACK_S3(33), - GROW_CURVE_STRIKE_S5(34), - GROW_CURVE_DEFENSE_S5(41), - GROW_CURVE_DEFENSE_S4(42), - GROW_CURVE_ATTACK_101(1101), - GROW_CURVE_ATTACK_102(1102), - GROW_CURVE_ATTACK_103(1103), - GROW_CURVE_ATTACK_104(1104), - GROW_CURVE_ATTACK_105(1105), - GROW_CURVE_ATTACK_201(1201), - GROW_CURVE_ATTACK_202(1202), - GROW_CURVE_ATTACK_203(1203), - GROW_CURVE_ATTACK_204(1204), - GROW_CURVE_ATTACK_205(1205), - GROW_CURVE_ATTACK_301(1301), - GROW_CURVE_ATTACK_302(1302), - GROW_CURVE_ATTACK_303(1303), - GROW_CURVE_ATTACK_304(1304), - GROW_CURVE_ATTACK_305(1305), - GROW_CURVE_CRITICAL_101(2101), - GROW_CURVE_CRITICAL_102(2102), - GROW_CURVE_CRITICAL_103(2103), - GROW_CURVE_CRITICAL_104(2104), - GROW_CURVE_CRITICAL_105(2105), - GROW_CURVE_CRITICAL_201(2201), - GROW_CURVE_CRITICAL_202(2202), - GROW_CURVE_CRITICAL_203(2203), - GROW_CURVE_CRITICAL_204(2204), - GROW_CURVE_CRITICAL_205(2205), - GROW_CURVE_CRITICAL_301(2301), - GROW_CURVE_CRITICAL_302(2302), - GROW_CURVE_CRITICAL_303(2303), - GROW_CURVE_CRITICAL_304(2304), - GROW_CURVE_CRITICAL_305(2305); - - private final int id; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - public static final int[] fightProps = new int[] {1, 4, 7, 20, 21, 22, 23, 26, 27, 28, 29, 30, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 55, 56, 2000, 2001, 2002, 2003, 1010}; - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getId(), e); - stringMap.put(e.name(), e); - }); - } - - private GrowCurve(int id) { - this.id = id; - } + GROW_CURVE_NONE(0), + GROW_CURVE_HP(1), + GROW_CURVE_ATTACK(2), + GROW_CURVE_STAMINA(3), + GROW_CURVE_STRIKE(4), + GROW_CURVE_ANTI_STRIKE(5), + GROW_CURVE_ANTI_STRIKE1(6), + GROW_CURVE_ANTI_STRIKE2(7), + GROW_CURVE_ANTI_STRIKE3(8), + GROW_CURVE_STRIKE_HURT(9), + GROW_CURVE_ELEMENT(10), + GROW_CURVE_KILL_EXP(11), + GROW_CURVE_DEFENSE(12), + GROW_CURVE_ATTACK_BOMB(13), + GROW_CURVE_HP_LITTLEMONSTER(14), + GROW_CURVE_ELEMENT_MASTERY(15), + GROW_CURVE_PROGRESSION(16), + GROW_CURVE_DEFENDING(17), + GROW_CURVE_MHP(18), + GROW_CURVE_MATK(19), + GROW_CURVE_TOWERATK(20), + GROW_CURVE_HP_S5(21), + GROW_CURVE_HP_S4(22), + GROW_CURVE_HP_2(23), + GROW_CURVE_ATTACK_S5(31), + GROW_CURVE_ATTACK_S4(32), + GROW_CURVE_ATTACK_S3(33), + GROW_CURVE_STRIKE_S5(34), + GROW_CURVE_DEFENSE_S5(41), + GROW_CURVE_DEFENSE_S4(42), + GROW_CURVE_ATTACK_101(1101), + GROW_CURVE_ATTACK_102(1102), + GROW_CURVE_ATTACK_103(1103), + GROW_CURVE_ATTACK_104(1104), + GROW_CURVE_ATTACK_105(1105), + GROW_CURVE_ATTACK_201(1201), + GROW_CURVE_ATTACK_202(1202), + GROW_CURVE_ATTACK_203(1203), + GROW_CURVE_ATTACK_204(1204), + GROW_CURVE_ATTACK_205(1205), + GROW_CURVE_ATTACK_301(1301), + GROW_CURVE_ATTACK_302(1302), + GROW_CURVE_ATTACK_303(1303), + GROW_CURVE_ATTACK_304(1304), + GROW_CURVE_ATTACK_305(1305), + GROW_CURVE_CRITICAL_101(2101), + GROW_CURVE_CRITICAL_102(2102), + GROW_CURVE_CRITICAL_103(2103), + GROW_CURVE_CRITICAL_104(2104), + GROW_CURVE_CRITICAL_105(2105), + GROW_CURVE_CRITICAL_201(2201), + GROW_CURVE_CRITICAL_202(2202), + GROW_CURVE_CRITICAL_203(2203), + GROW_CURVE_CRITICAL_204(2204), + GROW_CURVE_CRITICAL_205(2205), + GROW_CURVE_CRITICAL_301(2301), + GROW_CURVE_CRITICAL_302(2302), + GROW_CURVE_CRITICAL_303(2303), + GROW_CURVE_CRITICAL_304(2304), + GROW_CURVE_CRITICAL_305(2305); - public int getId() { - return id; - } - - public static GrowCurve getPropById(int value) { - return map.getOrDefault(value, GROW_CURVE_NONE); - } - - public static GrowCurve getPropByName(String name) { - return stringMap.getOrDefault(name, GROW_CURVE_NONE); - } + public static final int[] fightProps = new int[]{1, 4, 7, 20, 21, 22, 23, 26, 27, 28, 29, 30, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 55, 56, 2000, 2001, 2002, 2003, 1010}; + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getId(), e); + stringMap.put(e.name(), e); + }); + } + + private final int id; + + GrowCurve(int id) { + this.id = id; + } + + public static GrowCurve getPropById(int value) { + return map.getOrDefault(value, GROW_CURVE_NONE); + } + + public static GrowCurve getPropByName(String name) { + return stringMap.getOrDefault(name, GROW_CURVE_NONE); + } + + public int getId() { + return id; + } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAcceptQuest.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAcceptQuest.java index cf0fb3be0..292e2f775 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAcceptQuest.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAcceptQuest.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAcceptQuest extends ItemUseInt { + public ItemUseAcceptQuest(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_ACCEPT_QUEST; } - public ItemUseAcceptQuest(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return (params.player.getQuestManager().addQuest(this.i) != null); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAction.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAction.java index 6af7ac8ea..e20eb112a 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAction.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAction.java @@ -4,10 +4,6 @@ import emu.grasscutter.data.common.ItemUseData; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAction { - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_NONE; - } - public static ItemUseAction fromItemUseData(ItemUseData data) { var useParam = data.getUseParam(); return switch (data.getUseOp()) { @@ -31,7 +27,8 @@ public class ItemUseAction { case ITEM_USE_COMBINE_ITEM -> new ItemUseCombineItem(useParam); case ITEM_USE_OPEN_RANDOM_CHEST -> new ItemUseOpenRandomChest(useParam); // Food effects - case ITEM_USE_RELIVE_AVATAR -> new ItemUseReliveAvatar(useParam); // First action for revival food. Should we worry about race conditions in parallel streams? + case ITEM_USE_RELIVE_AVATAR -> + new ItemUseReliveAvatar(useParam); // First action for revival food. Should we worry about race conditions in parallel streams? case ITEM_USE_ADD_CUR_HP -> new ItemUseAddCurHp(useParam); case ITEM_USE_ADD_CUR_STAMINA -> new ItemUseAddCurStamina(useParam); case ITEM_USE_ADD_SERVER_BUFF -> new ItemUseAddServerBuff(useParam); @@ -48,7 +45,8 @@ public class ItemUseAction { // Account things case ITEM_USE_ACCEPT_QUEST -> new ItemUseAcceptQuest(useParam); case ITEM_USE_GAIN_CARD_PRODUCT -> new ItemUseGainCardProduct(useParam); - case ITEM_USE_UNLOCK_PAID_BATTLE_PASS_NORMAL -> new ItemUseUnlockPaidBattlePassNormal(useParam); // TODO: add paid BP + case ITEM_USE_UNLOCK_PAID_BATTLE_PASS_NORMAL -> + new ItemUseUnlockPaidBattlePassNormal(useParam); // TODO: add paid BP // Unused in current resources case ITEM_USE_DEL_SERVER_BUFF -> null; @@ -65,6 +63,10 @@ public class ItemUseAction { }; } + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_NONE; + } + public boolean useItem(UseItemParams params) { // An item must return true on at least one of its actions to count as successfully used. // If all of the actions return false, the item will not be consumed from inventory. diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddAllEnergy.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddAllEnergy.java index 73d84eed7..4021e4bcb 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddAllEnergy.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddAllEnergy.java @@ -6,15 +6,16 @@ import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddAllEnergy extends ItemUseAddEnergy { private float energy = 0f; - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_ALL_ENERGY; - } - public ItemUseAddAllEnergy(String[] useParam) { try { this.energy = Float.parseFloat(useParam[0]); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_ALL_ENERGY; } public float getAddEnergy(ElementType avatarElement) { diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurHp.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurHp.java index 821108283..ac9f84ee8 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurHp.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurHp.java @@ -3,18 +3,18 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddCurHp extends ItemUseInt { - private String icon; - - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_CUR_HP; - } + private final String icon; public ItemUseAddCurHp(String[] useParam) { super(useParam); this.icon = useParam[1]; } + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_CUR_HP; + } + @Override public boolean useItem(UseItemParams params) { return (params.targetAvatar.getAsEntity().heal(params.count * this.i) > 0.01); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurStamina.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurStamina.java index 44b3d5c38..a591c9feb 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurStamina.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddCurStamina.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddCurStamina extends ItemUseInt { + public ItemUseAddCurStamina(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_ADD_CUR_STAMINA; } - public ItemUseAddCurStamina(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return params.player.getStaminaManager().addCurrentStamina(this.i); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddElemEnergy.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddElemEnergy.java index be1e90245..642b27682 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddElemEnergy.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddElemEnergy.java @@ -8,21 +8,24 @@ public class ItemUseAddElemEnergy extends ItemUseAddEnergy { private float elemEnergy = 0f; private float otherEnergy = 0f; - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_ELEM_ENERGY; - } - public ItemUseAddElemEnergy(String[] useParam) { try { this.element = ElementType.getTypeByValue(Integer.parseInt(useParam[0])); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } try { this.elemEnergy = Float.parseFloat(useParam[1]); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } try { this.otherEnergy = Float.parseFloat(useParam[2]); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_ELEM_ENERGY; } public float getAddEnergy(ElementType avatarElement) { diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddExp.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddExp.java index e32eb786b..03565bdc7 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddExp.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddExp.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddExp extends ItemUseInt { + public ItemUseAddExp(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_ADD_EXP; } - public ItemUseAddExp(String[] useParam) { - super(useParam); - } - public int getExp() { return this.i; } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java index 9f5c7ad39..aa04db0c4 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddItem.java @@ -5,16 +5,17 @@ import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddItem extends ItemUseInt { private int count = 0; - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_ITEM; - } - public ItemUseAddItem(String[] useParam) { super(useParam); try { this.count = Integer.parseInt(useParam[1]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_ITEM; } @Override diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddReliquaryExp.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddReliquaryExp.java index feed2e166..c8b627b14 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddReliquaryExp.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddReliquaryExp.java @@ -3,12 +3,12 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddReliquaryExp extends ItemUseAddExp { + public ItemUseAddReliquaryExp(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_ADD_RELIQUARY_EXP; } - - public ItemUseAddReliquaryExp(String[] useParam) { - super(useParam); - } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddSelectItem.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddSelectItem.java index a9bf45839..6c22f6bed 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddSelectItem.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddSelectItem.java @@ -3,11 +3,6 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddSelectItem extends ItemUseSelectItems { - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_SELECT_ITEM; - } - public ItemUseAddSelectItem(String[] useParam) { String[] options = useParam[0].split(","); this.optionItemIds = new int[options.length]; @@ -17,6 +12,11 @@ public class ItemUseAddSelectItem extends ItemUseSelectItems { } catch (NumberFormatException ignored) { this.optionItemIds[i] = INVALID; } - }; + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_SELECT_ITEM; } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddServerBuff.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddServerBuff.java index 6c279aecd..1f11d13e4 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddServerBuff.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddServerBuff.java @@ -5,16 +5,17 @@ import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddServerBuff extends ItemUseInt { private int duration = 0; - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_SERVER_BUFF; - } - public ItemUseAddServerBuff(String[] useParam) { super(useParam); try { this.duration = Integer.parseInt(useParam[1]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_SERVER_BUFF; } @Override diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddWeaponExp.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddWeaponExp.java index 989cc6d15..c98178c76 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddWeaponExp.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseAddWeaponExp.java @@ -3,12 +3,12 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseAddWeaponExp extends ItemUseAddExp { + public ItemUseAddWeaponExp(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_ADD_WEAPON_EXP; } - - public ItemUseAddWeaponExp(String[] useParam) { - super(useParam); - } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseChestSelectItem.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseChestSelectItem.java index 12fed0f64..423721c2d 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseChestSelectItem.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseChestSelectItem.java @@ -3,12 +3,7 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseChestSelectItem extends ItemUseSelectItems { - private int[] optionItemCounts; - - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_CHEST_SELECT_ITEM; - } + private final int[] optionItemCounts; public ItemUseChestSelectItem(String[] useParam) { String[] options = useParam[0].split(","); @@ -26,7 +21,12 @@ public class ItemUseChestSelectItem extends ItemUseSelectItems { } catch (NumberFormatException ignored) { this.optionItemCounts[i] = INVALID; } - }; + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_CHEST_SELECT_ITEM; } @Override diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseCombineItem.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseCombineItem.java index 0dc8bd539..801b790b6 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseCombineItem.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseCombineItem.java @@ -6,19 +6,21 @@ public class ItemUseCombineItem extends ItemUseInt { private int resultId = 0; private int resultCount = 1; - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_COMBINE_ITEM; - } - public ItemUseCombineItem(String[] useParam) { super(useParam); try { this.resultId = Integer.parseInt(useParam[1]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } try { this.resultCount = Integer.parseInt(useParam[2]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_COMBINE_ITEM; } @Override diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainAvatar.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainAvatar.java index 2435745d4..3ddef564e 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainAvatar.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainAvatar.java @@ -1,28 +1,30 @@ package emu.grasscutter.game.props.ItemUseAction; -import java.util.Optional; - import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.props.ItemUseOp; import emu.grasscutter.game.systems.InventorySystem; +import java.util.Optional; + public class ItemUseGainAvatar extends ItemUseInt { private int level = 1; private int constellation = 0; - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_GAIN_AVATAR; - } - public ItemUseGainAvatar(String[] useParam) { super(useParam); try { this.level = Integer.parseInt(useParam[1]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } try { this.constellation = Integer.parseInt(useParam[2]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_GAIN_AVATAR; } @Override diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCardProduct.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCardProduct.java index 96658e31d..51671eca6 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCardProduct.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCardProduct.java @@ -3,14 +3,14 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseGainCardProduct extends ItemUseAction { + public ItemUseGainCardProduct(String[] useParam) { + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_GAIN_CARD_PRODUCT; } - public ItemUseGainCardProduct(String[] useParam) { - } - @Override public boolean useItem(UseItemParams params) { return params.player.rechargeMoonCard(); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java index 67212354e..61980af75 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainCostume.java @@ -1,19 +1,18 @@ package emu.grasscutter.game.props.ItemUseAction; +import emu.grasscutter.data.GameData; import emu.grasscutter.game.props.ItemUseOp; -import emu.grasscutter.data.GameData; - public class ItemUseGainCostume extends ItemUseInt { + public ItemUseGainCostume(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_GAIN_COSTUME; } - public ItemUseGainCostume(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { if (GameData.getAvatarCostumeDataMap().containsKey(this.i)) { diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java index 536e94351..019ea6023 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainFlycloak.java @@ -1,19 +1,18 @@ package emu.grasscutter.game.props.ItemUseAction; +import emu.grasscutter.data.GameData; import emu.grasscutter.game.props.ItemUseOp; -import emu.grasscutter.data.GameData; - public class ItemUseGainFlycloak extends ItemUseInt { + public ItemUseGainFlycloak(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_GAIN_FLYCLOAK; } - public ItemUseGainFlycloak(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { if (GameData.getAvatarFlycloakDataMap().containsKey(this.i)) { diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainNameCard.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainNameCard.java index dbcb5e37b..9ba2895cd 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainNameCard.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGainNameCard.java @@ -3,14 +3,14 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseGainNameCard extends ItemUseAction { + public ItemUseGainNameCard(String[] useParam) { + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_GAIN_NAME_CARD; } - public ItemUseGainNameCard(String[] useParam) { - } - @Override public boolean useItem(UseItemParams params) { params.player.addNameCard(params.usedItemId); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGrantSelectReward.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGrantSelectReward.java index 68fcad2cb..9dcb6d387 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGrantSelectReward.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseGrantSelectReward.java @@ -3,11 +3,6 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseGrantSelectReward extends ItemUseSelectItems { - @Override - public ItemUseOp getItemUseOp() { - return ItemUseOp.ITEM_USE_ADD_SELECT_ITEM; - } - public ItemUseGrantSelectReward(String[] useParam) { String[] options = useParam[0].split(","); this.optionItemIds = new int[options.length]; @@ -17,6 +12,11 @@ public class ItemUseGrantSelectReward extends ItemUseSelectItems { } catch (NumberFormatException ignored) { this.optionItemIds[i] = INVALID; } - }; + } + } + + @Override + public ItemUseOp getItemUseOp() { + return ItemUseOp.ITEM_USE_ADD_SELECT_ITEM; } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseInt.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseInt.java index fcb1c9222..03b458920 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseInt.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseInt.java @@ -3,11 +3,13 @@ package emu.grasscutter.game.props.ItemUseAction; import lombok.Getter; public abstract class ItemUseInt extends ItemUseAction { - @Getter protected int i = 0; + @Getter + protected int i = 0; public ItemUseInt(String[] useParam) { try { this.i = Integer.parseInt(useParam[0]); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) {} + } catch (NumberFormatException | ArrayIndexOutOfBoundsException ignored) { + } } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseMakeGadget.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseMakeGadget.java index d46ca8fb6..d7b2062ec 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseMakeGadget.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseMakeGadget.java @@ -4,15 +4,15 @@ import emu.grasscutter.game.entity.EntityVehicle; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseMakeGadget extends ItemUseInt { + public ItemUseMakeGadget(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_MAKE_GADGET; } - public ItemUseMakeGadget(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { var player = params.player; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseOpenRandomChest.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseOpenRandomChest.java index 025ead770..984c0e775 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseOpenRandomChest.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseOpenRandomChest.java @@ -5,15 +5,15 @@ import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseOpenRandomChest extends ItemUseInt { + public ItemUseOpenRandomChest(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_OPEN_RANDOM_CHEST; } - public ItemUseOpenRandomChest(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { // cash shop material bundles var data = params.player.getServer().getShopSystem().getShopChestData(this.i); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseReliveAvatar.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseReliveAvatar.java index 06646e11a..0d28eb44d 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseReliveAvatar.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseReliveAvatar.java @@ -3,14 +3,14 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseReliveAvatar extends ItemUseAction { + public ItemUseReliveAvatar(String[] useParam) { + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_RELIVE_AVATAR; } - public ItemUseReliveAvatar(String[] useParam) { - } - @Override public boolean useItem(UseItemParams params) { return params.player.getTeamManager().reviveAvatar(params.targetAvatar); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCodex.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCodex.java index 0d62e7709..2089bac98 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCodex.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCodex.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockCodex extends ItemUseInt { + public ItemUseUnlockCodex(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_CODEX; } - public ItemUseUnlockCodex(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return false; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCombine.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCombine.java index 54615e196..c2a3b0900 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCombine.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCombine.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockCombine extends ItemUseInt { + public ItemUseUnlockCombine(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_COMBINE; } - public ItemUseUnlockCombine(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return true; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCookRecipe.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCookRecipe.java index bf20227f4..b7435e048 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCookRecipe.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockCookRecipe.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockCookRecipe extends ItemUseInt { + public ItemUseUnlockCookRecipe(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_COOK_RECIPE; } - public ItemUseUnlockCookRecipe(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return true; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockForge.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockForge.java index ffa4d5b4e..2ca1765e7 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockForge.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockForge.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockForge extends ItemUseInt { + public ItemUseUnlockForge(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_FORGE; } - public ItemUseUnlockForge(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return true; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureFormula.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureFormula.java index d6d210237..63b2d4a7a 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureFormula.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureFormula.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockFurnitureFormula extends ItemUseInt { + public ItemUseUnlockFurnitureFormula(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_FURNITURE_FORMULA; } - public ItemUseUnlockFurnitureFormula(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return true; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureSuite.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureSuite.java index 328e7a63a..9657baa59 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureSuite.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockFurnitureSuite.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockFurnitureSuite extends ItemUseInt { + public ItemUseUnlockFurnitureSuite(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_FURNITURE_SUITE; } - public ItemUseUnlockFurnitureSuite(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return true; diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeBgm.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeBgm.java index d80d44ca7..06afc16a4 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeBgm.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeBgm.java @@ -3,15 +3,15 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockHomeBgm extends ItemUseInt { + public ItemUseUnlockHomeBgm(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_HOME_BGM; } - public ItemUseUnlockHomeBgm(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { params.player.getHome().addUnlockedHomeBgm(this.i); diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeModule.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeModule.java index abcbb0da2..5d0f78489 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeModule.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockHomeModule.java @@ -3,22 +3,22 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockHomeModule extends ItemUseInt { + public ItemUseUnlockHomeModule(String[] useParam) { + super(useParam); + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_HOME_MODULE; } - public ItemUseUnlockHomeModule(String[] useParam) { - super(useParam); - } - @Override public boolean useItem(UseItemParams params) { return true; } @Override - public boolean postUseItem(UseItemParams params){ + public boolean postUseItem(UseItemParams params) { params.player.addRealmList(this.i); return true; } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockPaidBattlePassNormal.java b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockPaidBattlePassNormal.java index 5b34bc6c7..d85bb9e51 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockPaidBattlePassNormal.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseAction/ItemUseUnlockPaidBattlePassNormal.java @@ -3,14 +3,14 @@ package emu.grasscutter.game.props.ItemUseAction; import emu.grasscutter.game.props.ItemUseOp; public class ItemUseUnlockPaidBattlePassNormal extends ItemUseAction { + public ItemUseUnlockPaidBattlePassNormal(String[] useParam) { + } + @Override public ItemUseOp getItemUseOp() { return ItemUseOp.ITEM_USE_UNLOCK_PAID_BATTLE_PASS_NORMAL; } - public ItemUseUnlockPaidBattlePassNormal(String[] useParam) { - } - @Override public boolean useItem(UseItemParams params) { // TODO: add paid BP diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseOp.java b/src/main/java/emu/grasscutter/game/props/ItemUseOp.java index 6e878363b..89990b778 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseOp.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseOp.java @@ -1,55 +1,54 @@ package emu.grasscutter.game.props; -import java.util.stream.Stream; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -public enum ItemUseOp { - ITEM_USE_NONE (0), - ITEM_USE_ACCEPT_QUEST (1), - ITEM_USE_TRIGGER_ABILITY (2), - ITEM_USE_GAIN_AVATAR (3), - ITEM_USE_ADD_EXP (4), - ITEM_USE_RELIVE_AVATAR (5), - ITEM_USE_ADD_BIG_TALENT_POINT (6), - ITEM_USE_ADD_PERSIST_STAMINA (7), - ITEM_USE_ADD_TEMPORARY_STAMINA (8), - ITEM_USE_ADD_CUR_STAMINA (9), - ITEM_USE_ADD_CUR_HP (10), - ITEM_USE_ADD_ELEM_ENERGY (11), - ITEM_USE_ADD_ALL_ENERGY (12), - ITEM_USE_ADD_DUNGEON_COND_TIME (13), - ITEM_USE_ADD_WEAPON_EXP (14), - ITEM_USE_ADD_SERVER_BUFF (15), - ITEM_USE_DEL_SERVER_BUFF (16), - ITEM_USE_UNLOCK_COOK_RECIPE (17), - ITEM_USE_OPEN_RANDOM_CHEST (20), - ITEM_USE_MAKE_GADGET (24), - ITEM_USE_ADD_ITEM (25), - ITEM_USE_GRANT_SELECT_REWARD (26), - ITEM_USE_ADD_SELECT_ITEM (27), - ITEM_USE_GAIN_FLYCLOAK (28), - ITEM_USE_GAIN_NAME_CARD (29), - ITEM_USE_UNLOCK_PAID_BATTLE_PASS_NORMAL (30), - ITEM_USE_GAIN_CARD_PRODUCT (31), - ITEM_USE_UNLOCK_FORGE (32), - ITEM_USE_UNLOCK_COMBINE (33), - ITEM_USE_UNLOCK_CODEX (34), - ITEM_USE_CHEST_SELECT_ITEM (35), - ITEM_USE_GAIN_RESIN_CARD_PRODUCT (36), - ITEM_USE_ADD_RELIQUARY_EXP (37), - ITEM_USE_UNLOCK_FURNITURE_FORMULA (38), - ITEM_USE_UNLOCK_FURNITURE_SUITE (39), - ITEM_USE_ADD_CHANNELLER_SLAB_BUFF (40), - ITEM_USE_GAIN_COSTUME (41), - ITEM_USE_ADD_TREASURE_MAP_BONUS_REGION_FRAGMENT (42), - ITEM_USE_COMBINE_ITEM (43), - ITEM_USE_UNLOCK_HOME_MODULE (44), - ITEM_USE_UNLOCK_HOME_BGM (45), - ITEM_USE_ADD_REGIONAL_PLAY_VAR (46); +import java.util.stream.Stream; + +public enum ItemUseOp { + ITEM_USE_NONE(0), + ITEM_USE_ACCEPT_QUEST(1), + ITEM_USE_TRIGGER_ABILITY(2), + ITEM_USE_GAIN_AVATAR(3), + ITEM_USE_ADD_EXP(4), + ITEM_USE_RELIVE_AVATAR(5), + ITEM_USE_ADD_BIG_TALENT_POINT(6), + ITEM_USE_ADD_PERSIST_STAMINA(7), + ITEM_USE_ADD_TEMPORARY_STAMINA(8), + ITEM_USE_ADD_CUR_STAMINA(9), + ITEM_USE_ADD_CUR_HP(10), + ITEM_USE_ADD_ELEM_ENERGY(11), + ITEM_USE_ADD_ALL_ENERGY(12), + ITEM_USE_ADD_DUNGEON_COND_TIME(13), + ITEM_USE_ADD_WEAPON_EXP(14), + ITEM_USE_ADD_SERVER_BUFF(15), + ITEM_USE_DEL_SERVER_BUFF(16), + ITEM_USE_UNLOCK_COOK_RECIPE(17), + ITEM_USE_OPEN_RANDOM_CHEST(20), + ITEM_USE_MAKE_GADGET(24), + ITEM_USE_ADD_ITEM(25), + ITEM_USE_GRANT_SELECT_REWARD(26), + ITEM_USE_ADD_SELECT_ITEM(27), + ITEM_USE_GAIN_FLYCLOAK(28), + ITEM_USE_GAIN_NAME_CARD(29), + ITEM_USE_UNLOCK_PAID_BATTLE_PASS_NORMAL(30), + ITEM_USE_GAIN_CARD_PRODUCT(31), + ITEM_USE_UNLOCK_FORGE(32), + ITEM_USE_UNLOCK_COMBINE(33), + ITEM_USE_UNLOCK_CODEX(34), + ITEM_USE_CHEST_SELECT_ITEM(35), + ITEM_USE_GAIN_RESIN_CARD_PRODUCT(36), + ITEM_USE_ADD_RELIQUARY_EXP(37), + ITEM_USE_UNLOCK_FURNITURE_FORMULA(38), + ITEM_USE_UNLOCK_FURNITURE_SUITE(39), + ITEM_USE_ADD_CHANNELLER_SLAB_BUFF(40), + ITEM_USE_GAIN_COSTUME(41), + ITEM_USE_ADD_TREASURE_MAP_BONUS_REGION_FRAGMENT(42), + ITEM_USE_COMBINE_ITEM(43), + ITEM_USE_UNLOCK_HOME_MODULE(44), + ITEM_USE_UNLOCK_HOME_BGM(45), + ITEM_USE_ADD_REGIONAL_PLAY_VAR(46); - private final int value; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); static { @@ -58,15 +57,17 @@ public enum ItemUseOp { }); } - private ItemUseOp(int value) { - this.value = value; - } + private final int value; - public int getValue() { - return value; + ItemUseOp(int value) { + this.value = value; } public static ItemUseOp getTypeByValue(int value) { return map.getOrDefault(value, ITEM_USE_NONE); } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/ItemUseTarget.java b/src/main/java/emu/grasscutter/game/props/ItemUseTarget.java index 38c32fde5..f4d901c9e 100644 --- a/src/main/java/emu/grasscutter/game/props/ItemUseTarget.java +++ b/src/main/java/emu/grasscutter/game/props/ItemUseTarget.java @@ -1,19 +1,18 @@ package emu.grasscutter.game.props; -import java.util.stream.Stream; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -public enum ItemUseTarget { - ITEM_USE_TARGET_NONE (0), - ITEM_USE_TARGET_CUR_AVATAR (1), - ITEM_USE_TARGET_CUR_TEAM (2), - ITEM_USE_TARGET_SPECIFY_AVATAR (3), - ITEM_USE_TARGET_SPECIFY_ALIVE_AVATAR (4), - ITEM_USE_TARGET_SPECIFY_DEAD_AVATAR (5); +import java.util.stream.Stream; + +public enum ItemUseTarget { + ITEM_USE_TARGET_NONE(0), + ITEM_USE_TARGET_CUR_AVATAR(1), + ITEM_USE_TARGET_CUR_TEAM(2), + ITEM_USE_TARGET_SPECIFY_AVATAR(3), + ITEM_USE_TARGET_SPECIFY_ALIVE_AVATAR(4), + ITEM_USE_TARGET_SPECIFY_DEAD_AVATAR(5); - private final int value; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); static { @@ -22,15 +21,17 @@ public enum ItemUseTarget { }); } - private ItemUseTarget(int value) { - this.value = value; - } + private final int value; - public int getValue() { - return value; + ItemUseTarget(int value) { + this.value = value; } public static ItemUseTarget getTypeByValue(int value) { return map.getOrDefault(value, ITEM_USE_TARGET_NONE); } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/LifeState.java b/src/main/java/emu/grasscutter/game/props/LifeState.java index 3d3ba79ef..613b60932 100644 --- a/src/main/java/emu/grasscutter/game/props/LifeState.java +++ b/src/main/java/emu/grasscutter/game/props/LifeState.java @@ -1,42 +1,43 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum LifeState { - LIFE_NONE(0), - LIFE_ALIVE(1), - LIFE_DEAD(2), - LIFE_REVIVE(3); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private LifeState(int value) { - this.value = value; - } + LIFE_NONE(0), + LIFE_ALIVE(1), + LIFE_DEAD(2), + LIFE_REVIVE(3); - public int getValue() { - return value; - } - - public static LifeState getTypeByValue(int value) { - return map.getOrDefault(value, LIFE_NONE); - } - - public static LifeState getTypeByName(String name) { - return stringMap.getOrDefault(name, LIFE_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + LifeState(int value) { + this.value = value; + } + + public static LifeState getTypeByValue(int value) { + return map.getOrDefault(value, LIFE_NONE); + } + + public static LifeState getTypeByName(String name) { + return stringMap.getOrDefault(name, LIFE_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/MonsterType.java b/src/main/java/emu/grasscutter/game/props/MonsterType.java index abbc33ba0..6a8ab99d3 100644 --- a/src/main/java/emu/grasscutter/game/props/MonsterType.java +++ b/src/main/java/emu/grasscutter/game/props/MonsterType.java @@ -1,44 +1,45 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum MonsterType { - MONSTER_NONE (0), - MONSTER_ORDINARY (1), - MONSTER_BOSS (2), - MONSTER_ENV_ANIMAL (3), - MONSTER_LITTLE_MONSTER (4), - MONSTER_FISH (5); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private MonsterType(int value) { - this.value = value; - } + MONSTER_NONE(0), + MONSTER_ORDINARY(1), + MONSTER_BOSS(2), + MONSTER_ENV_ANIMAL(3), + MONSTER_LITTLE_MONSTER(4), + MONSTER_FISH(5); - public int getValue() { - return value; - } - - public static MonsterType getTypeByValue(int value) { - return map.getOrDefault(value, MONSTER_NONE); - } - - public static MonsterType getTypeByName(String name) { - return stringMap.getOrDefault(name, MONSTER_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + MonsterType(int value) { + this.value = value; + } + + public static MonsterType getTypeByValue(int value) { + return map.getOrDefault(value, MONSTER_NONE); + } + + public static MonsterType getTypeByName(String name) { + return stringMap.getOrDefault(name, MONSTER_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/PlayerProperty.java b/src/main/java/emu/grasscutter/game/props/PlayerProperty.java index 6b8fe0fcd..52ef3a298 100644 --- a/src/main/java/emu/grasscutter/game/props/PlayerProperty.java +++ b/src/main/java/emu/grasscutter/game/props/PlayerProperty.java @@ -1,67 +1,70 @@ package emu.grasscutter.game.props; -import java.util.stream.Stream; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import lombok.Getter; +import java.util.stream.Stream; + public enum PlayerProperty { - PROP_NONE (0), - PROP_EXP (1001, 0), - PROP_BREAK_LEVEL (1002), - PROP_SATIATION_VAL (1003), - PROP_SATIATION_PENALTY_TIME (1004), - PROP_LEVEL (4001, 0, 90), - PROP_LAST_CHANGE_AVATAR_TIME (10001), - PROP_MAX_SPRING_VOLUME (10002, 0, 8_500_000), // Maximum volume of the Statue of the Seven for the player [0, 8500000] - PROP_CUR_SPRING_VOLUME (10003, true), // Current volume of the Statue of the Seven [0, PROP_MAX_SPRING_VOLUME] - PROP_IS_SPRING_AUTO_USE (10004, 0, 1), // Auto HP recovery when approaching the Statue of the Seven [0, 1] - PROP_SPRING_AUTO_USE_PERCENT (10005, 0, 100), // Auto HP recovery percentage [0, 100] - PROP_IS_FLYABLE (10006, 0, 1), // Are you in a state that disables your flying ability? e.g. new player [0, 1] - PROP_IS_WEATHER_LOCKED (10007, 0, 1), - PROP_IS_GAME_TIME_LOCKED (10008, 0, 1), - PROP_IS_TRANSFERABLE (10009, 0, 1), - PROP_MAX_STAMINA (10010, 0, 24_000), // Maximum stamina of the player (0 - 24000) - PROP_CUR_PERSIST_STAMINA (10011, true), // Used stamina of the player (0 - PROP_MAX_STAMINA) - PROP_CUR_TEMPORARY_STAMINA (10012), - PROP_PLAYER_LEVEL (10013, 1, 60), - PROP_PLAYER_EXP (10014), - PROP_PLAYER_HCOIN (10015), // Primogem (-inf, +inf) + PROP_NONE(0), + PROP_EXP(1001, 0), + PROP_BREAK_LEVEL(1002), + PROP_SATIATION_VAL(1003), + PROP_SATIATION_PENALTY_TIME(1004), + PROP_LEVEL(4001, 0, 90), + PROP_LAST_CHANGE_AVATAR_TIME(10001), + PROP_MAX_SPRING_VOLUME(10002, 0, 8_500_000), // Maximum volume of the Statue of the Seven for the player [0, 8500000] + PROP_CUR_SPRING_VOLUME(10003, true), // Current volume of the Statue of the Seven [0, PROP_MAX_SPRING_VOLUME] + PROP_IS_SPRING_AUTO_USE(10004, 0, 1), // Auto HP recovery when approaching the Statue of the Seven [0, 1] + PROP_SPRING_AUTO_USE_PERCENT(10005, 0, 100), // Auto HP recovery percentage [0, 100] + PROP_IS_FLYABLE(10006, 0, 1), // Are you in a state that disables your flying ability? e.g. new player [0, 1] + PROP_IS_WEATHER_LOCKED(10007, 0, 1), + PROP_IS_GAME_TIME_LOCKED(10008, 0, 1), + PROP_IS_TRANSFERABLE(10009, 0, 1), + PROP_MAX_STAMINA(10010, 0, 24_000), // Maximum stamina of the player (0 - 24000) + PROP_CUR_PERSIST_STAMINA(10011, true), // Used stamina of the player (0 - PROP_MAX_STAMINA) + PROP_CUR_TEMPORARY_STAMINA(10012), + PROP_PLAYER_LEVEL(10013, 1, 60), + PROP_PLAYER_EXP(10014), + PROP_PLAYER_HCOIN(10015), // Primogem (-inf, +inf) // It is known that Mihoyo will make Primogem negative in the cases that a player spends // his gems and then got a money refund, so negative is allowed. - PROP_PLAYER_SCOIN (10016, 0), // Mora [0, +inf) - PROP_PLAYER_MP_SETTING_TYPE (10017, 0, 2), // Do you allow other players to join your game? [0=no 1=direct 2=approval] - PROP_IS_MP_MODE_AVAILABLE (10018, 0, 1), // 0 if in quest or something that disables MP [0, 1] - PROP_PLAYER_WORLD_LEVEL (10019, 0, 8), // [0, 8] - PROP_PLAYER_RESIN (10020, 0, 2000), // Original Resin [0, 2000] - note that values above 160 require refills - PROP_PLAYER_WAIT_SUB_HCOIN (10022), - PROP_PLAYER_WAIT_SUB_SCOIN (10023), - PROP_IS_ONLY_MP_WITH_PS_PLAYER (10024, 0, 1), // Is only MP with PlayStation players? [0, 1] - PROP_PLAYER_MCOIN (10025), // Genesis Crystal (-inf, +inf) see 10015 - PROP_PLAYER_WAIT_SUB_MCOIN (10026), - PROP_PLAYER_LEGENDARY_KEY (10027,0), - PROP_IS_HAS_FIRST_SHARE (10028), - PROP_PLAYER_FORGE_POINT (10029, 0, 300_000), - PROP_CUR_CLIMATE_METER (10035), - PROP_CUR_CLIMATE_TYPE (10036), - PROP_CUR_CLIMATE_AREA_ID (10037), - PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE (10038), - PROP_PLAYER_WORLD_LEVEL_LIMIT (10039), - PROP_PLAYER_WORLD_LEVEL_ADJUST_CD (10040), - PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM (10041), - PROP_PLAYER_HOME_COIN (10042, 0), // Realm currency [0, +inf) - PROP_PLAYER_WAIT_SUB_HOME_COIN (10043); + PROP_PLAYER_SCOIN(10016, 0), // Mora [0, +inf) + PROP_PLAYER_MP_SETTING_TYPE(10017, 0, 2), // Do you allow other players to join your game? [0=no 1=direct 2=approval] + PROP_IS_MP_MODE_AVAILABLE(10018, 0, 1), // 0 if in quest or something that disables MP [0, 1] + PROP_PLAYER_WORLD_LEVEL(10019, 0, 8), // [0, 8] + PROP_PLAYER_RESIN(10020, 0, 2000), // Original Resin [0, 2000] - note that values above 160 require refills + PROP_PLAYER_WAIT_SUB_HCOIN(10022), + PROP_PLAYER_WAIT_SUB_SCOIN(10023), + PROP_IS_ONLY_MP_WITH_PS_PLAYER(10024, 0, 1), // Is only MP with PlayStation players? [0, 1] + PROP_PLAYER_MCOIN(10025), // Genesis Crystal (-inf, +inf) see 10015 + PROP_PLAYER_WAIT_SUB_MCOIN(10026), + PROP_PLAYER_LEGENDARY_KEY(10027, 0), + PROP_IS_HAS_FIRST_SHARE(10028), + PROP_PLAYER_FORGE_POINT(10029, 0, 300_000), + PROP_CUR_CLIMATE_METER(10035), + PROP_CUR_CLIMATE_TYPE(10036), + PROP_CUR_CLIMATE_AREA_ID(10037), + PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE(10038), + PROP_PLAYER_WORLD_LEVEL_LIMIT(10039), + PROP_PLAYER_WORLD_LEVEL_ADJUST_CD(10040), + PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM(10041), + PROP_PLAYER_HOME_COIN(10042, 0), // Realm currency [0, +inf) + PROP_PLAYER_WAIT_SUB_HOME_COIN(10043); private static final int inf = Integer.MAX_VALUE; // Maybe this should be something else? - @Getter private final int id, min, max; - @Getter private final boolean dynamicRange; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); static { Stream.of(values()).forEach(e -> map.put(e.getId(), e)); } + @Getter + private final int id, min, max; + @Getter + private final boolean dynamicRange; + PlayerProperty(int id, int min, int max, boolean dynamicRange) { this.id = id; this.min = min; diff --git a/src/main/java/emu/grasscutter/game/props/SceneType.java b/src/main/java/emu/grasscutter/game/props/SceneType.java index d6fbaf40d..d945d3d81 100644 --- a/src/main/java/emu/grasscutter/game/props/SceneType.java +++ b/src/main/java/emu/grasscutter/game/props/SceneType.java @@ -1,45 +1,46 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum SceneType { - SCENE_NONE (0), - SCENE_WORLD (1), - SCENE_DUNGEON (2), - SCENE_ROOM (3), - SCENE_HOME_WORLD (4), - SCENE_HOME_ROOM (5), - SCENE_ACTIVITY (6); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private SceneType(int value) { - this.value = value; - } + SCENE_NONE(0), + SCENE_WORLD(1), + SCENE_DUNGEON(2), + SCENE_ROOM(3), + SCENE_HOME_WORLD(4), + SCENE_HOME_ROOM(5), + SCENE_ACTIVITY(6); - public int getValue() { - return value; - } - - public static SceneType getTypeByValue(int value) { - return map.getOrDefault(value, SCENE_NONE); - } - - public static SceneType getTypeByName(String name) { - return stringMap.getOrDefault(name, SCENE_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + SceneType(int value) { + this.value = value; + } + + public static SceneType getTypeByValue(int value) { + return map.getOrDefault(value, SCENE_NONE); + } + + public static SceneType getTypeByName(String name) { + return stringMap.getOrDefault(name, SCENE_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/ServerBuffType.java b/src/main/java/emu/grasscutter/game/props/ServerBuffType.java index 98d72f6db..f602d91ba 100644 --- a/src/main/java/emu/grasscutter/game/props/ServerBuffType.java +++ b/src/main/java/emu/grasscutter/game/props/ServerBuffType.java @@ -1,17 +1,16 @@ package emu.grasscutter.game.props; -import java.util.stream.Stream; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -public enum ServerBuffType { - SERVER_BUFF_NONE (0), - SERVER_BUFF_AVATAR (1), - SERVER_BUFF_TEAM (2), - SERVER_BUFF_TOWER (3); +import java.util.stream.Stream; + +public enum ServerBuffType { + SERVER_BUFF_NONE(0), + SERVER_BUFF_AVATAR(1), + SERVER_BUFF_TEAM(2), + SERVER_BUFF_TOWER(3); - private final int value; private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); static { @@ -20,15 +19,17 @@ public enum ServerBuffType { }); } - private ServerBuffType(int value) { - this.value = value; - } + private final int value; - public int getValue() { - return value; + ServerBuffType(int value) { + this.value = value; } public static ServerBuffType getTypeByValue(int value) { return map.getOrDefault(value, SERVER_BUFF_NONE); } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/WatcherTriggerType.java b/src/main/java/emu/grasscutter/game/props/WatcherTriggerType.java index d9be1d8e2..d14cf5277 100644 --- a/src/main/java/emu/grasscutter/game/props/WatcherTriggerType.java +++ b/src/main/java/emu/grasscutter/game/props/WatcherTriggerType.java @@ -1,337 +1,338 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum WatcherTriggerType { - TRIGGER_NONE (0), - TRIGGER_COMBAT_CONFIG_COMMON (1), - TRIGGER_ELEMENT_VIEW (2), - TRIGGER_ENTER_AIRFLOW (5), - TRIGGER_NEW_MONSTER (6), - TRIGGER_NEW_AFFIX (8), - TRIGGER_CHANGE_INPUT_DEVICE_TYPE (9), - TRIGGER_PAIMON_ANGRY_VOICE_EASTER_EGG (10), - TRIGGER_WIND_CRYSTAL (11), - TRIGGER_ELEMENT_BALL (101), - TRIGGER_WORLD_LEVEL_UP (102), - TRIGGER_DUNGEON_ENTRY_TO_BE_EXPLORED (103), - TRIGGER_UNLOCK_GATE_TEMPLE (104), - TRIGGER_UNLOCK_AREA (105), - TRIGGER_UNLOCK_TRANS_POINT (106), - TRIGGER_OPEN_CHEST_WITH_GADGET_ID (107), - TRIGGER_CITY_LEVEL_UP (108), - TRIGGER_MONSTER_DIE (109), - TRIGGER_PLATFORM_START_MOVE (110), - TRIGGER_GROUP_NOTIFY (111), - TRIGGER_ELEMENT_TYPE_CHANGE (112), - TRIGGER_GADGET_INTERACTABLE (113), - TRIGGER_COLLECT_SET_OF_READINGS (114), - TRIGGER_TELEPORT_WITH_CERTAIN_PORTAL (115), - TRIGGER_WORLD_GATHER (116), - TRIGGER_TAKE_GENERAL_REWARD (117), - TRIGGER_BATTLE_FOR_MONSTER_DIE_OR (118), - TRIGGER_BATTLE_FOR_MONSTER_DIE_AND (119), - TRIGGER_OPEN_WORLD_CHEST (120), - TRIGGER_ENTER_CLIMATE_AREA (121), - TRIGGER_UNLOCK_SCENE_POINT (122), - TRIGGER_INTERACT_GADGET_WITH_INTERACT_ID (123), - TRIGGER_OBTAIN_AVATAR (201), - TRIGGER_PLAYER_LEVEL (202), - TRIGGER_AVATAR_UPGRADE (203), - TRIGGER_AVATAR_PROMOTE (204), - TRIGGER_WEAPON_UPGRADE (205), - TRIGGER_WEAPON_PROMOTE (206), - TRIGGER_RELIQUARY_UPGRADE (207), - TRIGGER_WEAR_RELIQUARY (208), - TRIGGER_UPGRADE_TALENT (209), - TRIGGER_UNLOCK_RECIPE (210), - TRIGGER_RELIQUARY_SET_NUM (211), - TRIGGER_OBTAIN_MATERIAL_NUM (212), - TRIGGER_OBTAIN_RELIQUARY_NUM (213), - TRIGGER_GACHA_NUM (214), - TRIGGER_ANY_RELIQUARY_UPGRADE (215), - TRIGGER_FETTER_LEVEL_AVATAR_NUM (216), - TRIGGER_SKILLED_AT_RECIPE (217), - TRIGGER_RELIQUARY_UPGRADE_EQUAL_RANK_LEVEL (218), - TRIGGER_SPECIFIED_WEAPON_UPGRADE (219), - TRIGGER_SPECIFIED_WEAPON_AWAKEN (220), - TRIGGER_UNLOCK_SPECIFIC_RECIPE_OR (221), - TRIGGER_POSSESS_MATERIAL_NUM (222), - TRIGGER_EXHIBITION_ACCUMULABLE_VALUE (223), - TRIGGER_EXHIBITION_REPLACEABLE_VALUE_SETTLE_NUM (224), - TRIGGER_ANY_WEAPON_UPGRADE_NUM (225), - TRIGGER_ANY_RELIQUARY_UPGRADE_NUM (226), - TRIGGER_ACTIVITY_SCORE_EXCEED_VALUE (227), - TRIGGER_UNLOCK_SPECIFIC_FORGE_OR (228), - TRIGGER_UNLOCK_SPECIFIC_ANIMAL_CODEX (229), - TRIGGER_OBTAIN_ITEM_NUM (230), - TRIGGER_CAPTURE_ANIMAL (231), - TRIGGER_DAILY_TASK (301), - TRIGGER_RAND_TASK (302), - TRIGGER_AVATAR_EXPEDITION (303), - TRIGGER_FINISH_TOWER_LEVEL (304), - TRIGGER_WORLD_BOSS_REWARD (306), - TRIGGER_FINISH_DUNGEON (307), - TRIGGER_START_AVATAR_EXPEDITION (308), - TRIGGER_OPEN_BLOSSOM_CHEST (309), - TRIGGER_FINISH_BLOSSOM_PROGRESS (310), - TRIGGER_DONE_TOWER_GADGET_UNHURT (311), - TRIGGER_DONE_TOWER_STARS (312), - TRIGGER_DONE_TOWER_UNHURT (313), - TRIGGER_STEAL_FOOD_TIMES (314), - TRIGGER_DONE_DUNGEON_WITH_SAME_ELEMENT_AVATARS (315), - TRIGGER_GROUP_FLIGHT_CHALLENGE_REACH_POINTS (316), - TRIGGER_FINISH_DAILY_DELIVERY_NUM (317), - TRIGGER_TOWER_STARS_NUM (318), - TRIGGER_FINISH_SPECIFED_TYPE_BLOSSOM_NUM (319), - TRIGGER_FINISH_SPECIFED_TYPE_BLOSSOM_CLIMATE_METER (320), - TRIGGER_FINISH_BLOSSOM_GROUP_VARIABLE_GT (321), - TRIGGER_EFFIGY_CHALLENGE_SCORE (322), - TRIGGER_FINISH_ROUTINE (323), - TRIGGER_ACTIVITY_EXPEDITION_FINISH (324), - TRIGGER_ACTIVITY_CHANNELLER_SLAB_FINISH_ALL_CAMP (325), - TRIGGER_ACTIVITY_CHANNELLER_SLAB_FINISH_ALL_ONEOFF_DUNGEON (326), - TRIGGER_ACTIVITY_CHANNELLER_SLAB_LOOP_DUNGEON_TOTAL_SCORE (327), - TRIGGER_GROUP_SUMMER_TIME_SPRINT_BOAT_REACH_POINTS (328), - TRIGGER_WEEKLY_BOSS_KILL (329), - TRIGGER_BOUNCE_CONJURING_FINISH_COUNT (330), - TRIGGER_BOUNCE_CONJURING_SCORE (331), - TRIGGER_GROUP_VARIABLE_SET_VALUE_TO (332), - TRIGGER_KILL_GADGETS_BY_SPECIFIC_SKILL (333), - TRIGGER_KILL_MONSTERS_WITHOUT_VEHICLE (334), - TRIGGER_KILL_MONSTER_IN_AREA (335), - TRIGGER_ENTER_VEHICLE (336), - TRIGGER_VEHICLE_DURATION (337), - TRIGGER_VEHICLE_FRIENDS (338), - TRIGGER_VEHICLE_KILLED_BY_MONSTER (339), - TRIGGER_VEHICLE_DASH (340), - TRIGGER_DO_COOK (401), - TRIGGER_DO_FORGE (402), - TRIGGER_DO_COMPOUND (403), - TRIGGER_DO_COMBINE (404), - TRIGGER_BUY_SHOP_GOODS (405), - TRIGGER_FORGE_WEAPON (406), - TRIGGER_MP_PLAY_BATTLE_WIN (421), - TRIGGER_KILL_GROUP_MONSTER (422), - TRIGGER_CRUCIBLE_ELEMENT_SCORE (423), - TRIGGER_MP_DUNGEON_TIMES (424), - TRIGGER_MP_KILL_MONSTER_NUM (425), - TRIGGER_CRUCIBLE_MAX_BALL (426), - TRIGGER_CRUCIBLE_MAX_SCORE (427), - TRIGGER_CRUCIBLE_SUBMIT_BALL (428), - TRIGGER_CRUCIBLE_WORLD_LEVEL_SCORE (429), - TRIGGER_MP_PLAY_GROUP_STATISTIC (430), - TRIGGER_KILL_GROUP_SPECIFIC_MONSTER (431), - TRIGGER_REACH_MP_PLAY_SCORE (432), - TRIGGER_REACH_MP_PLAY_RECORD (433), - TRIGGER_TREASURE_MAP_DONE_REGION (434), - TRIGGER_SEA_LAMP_MINI_QUEST (435), - TRIGGER_FINISH_FIND_HILICHURL_LEVEL (436), - TRIGGER_COMBINE_ITEM (437), - TRIGGER_FINISH_CHALLENGE_IN_DURATION (438), - TRIGGER_FINISH_CHALLENGE_LEFT_TIME (439), - TRIGGER_MP_KILL_MONSTER_ID_NUM (440), - TRIGGER_LOGIN (501), - TRIGGER_COST_MATERIAL (502), - TRIGGER_DELIVER_ITEM_TO_SALESMAN (503), - TRIGGER_USE_ITEM (504), - TRIGGER_ACCUMULATE_DAILY_LOGIN (505), - TRIGGER_FINISH_CHALLENGE (601), - TRIGGER_MECHANICUS_UNLOCK_GEAR (602), - TRIGGER_MECHANICUS_LEVELUP_GEAR (603), - TRIGGER_MECHANICUS_DIFFICULT (604), - TRIGGER_MECHANICUS_DIFFICULT_SCORE (605), - TRIGGER_MECHANICUS_KILL_MONSTER (606), - TRIGGER_MECHANICUS_BUILDING_POINT (607), - TRIGGER_MECHANICUS_DIFFICULT_EQ (608), - TRIGGER_MECHANICUS_BATTLE_END (609), - TRIGGER_MECHANICUS_BATTLE_END_EXCAPED_LESS_THAN (610), - TRIGGER_MECHANICUS_BATTLE_END_POINTS_MORE_THAN (611), - TRIGGER_MECHANICUS_BATTLE_END_GEAR_MORE_THAN (612), - TRIGGER_MECHANICUS_BATTLE_END_PURE_GEAR_DAMAGE (613), - TRIGGER_MECHANICUS_BATTLE_END_CARD_PICK_MORE_THAN (614), - TRIGGER_MECHANICUS_BATTLE_END_CARD_TARGET_MORE_THAN (615), - TRIGGER_MECHANICUS_BATTLE_END_BUILD_GEAR_MORE_THAN (616), - TRIGGER_MECHANICUS_BATTLE_END_GEAR_KILL_MORE_THAN (617), - TRIGGER_MECHANICUS_BATTLE_END_ROUND_MORE_THAN (618), - TRIGGER_MECHANICUS_BATTLE_END_ROUND (619), - TRIGGER_MECHANICUS_BATTLE_FIN_CHALLENGE_MORE_THAN (620), - TRIGGER_MECHANICUS_BATTLE_WATCHER_FINISH_COUNT (621), - TRIGGER_MECHANICUS_BATTLE_INTERACT_COUNT (622), - TRIGGER_MECHANICUS_BATTLE_DIFFICULT_ESCAPE (623), - TRIGGER_MECHANICUS_BATTLE_DIFFICULT_GEAR_NUM (624), - TRIGGER_MECHANICUS_BATTLE_DIFFICULT_GEAR_ID_NUM (625), - TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_IN_LIMIT_TIME (626), - TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_KEEP_ENERGY (627), - TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_WITH_GROUP_VARIABLE (628), - TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_WITH_BUFF_NUM (629), - TRIGGER_FLEUR_FAIR_DUNGEON_MISSION_FINISH (630), - TRIGGER_FINISH_DUNGEON_AND_CHALLENGE_REMAIN_TIME_GREATER_THAN (631), - TRIGGER_FINISH_DUNGEON_WITH_MIST_TRIAL_STAT (632), - TRIGGER_DUNGEON_MIST_TRIAL_STAT (633), - TRIGGER_DUNGEON_ELEMENT_REACTION_NUM (634), - TRIGGER_LEVEL_AVATAR_FINISH_DUNGEON_COUNT (635), - TRIGGER_CHESS_REACH_LEVEL (636), - TRIGGER_CHESS_DUNGEON_ADD_SCORE (637), - TRIGGER_CHESS_DUNGEON_SUCC_WITH_ESCAPED_MONSTERS_LESS_THAN (638), - TRIGGER_CHESS_DUNGEON_SUCC_WITH_TOWER_COUNT_LESS_OR_EQUAL (639), - TRIGGER_CHESS_DUNGEON_SUCC_WITH_CARD_COUNT_LESS_OR_EQUAL (640), - TRIGGER_CHESS_DUNGEON_SUCC_WITH_CARD_COUNT_GREATER_THAN (641), - TRIGGER_CHESS_KILL_MONSTERS (642), - TRIGGER_CHESS_COST_BUILDING_POINTS (643), - TRIGGER_SUMO_STAGE_SCORE_REACH (644), - TRIGGER_SUMO_TOTAL_MAX_SCORE_REACH (645), - TRIGGER_ROGUE_DESTROY_GADGET_NUM (646), - TRIGGER_ROGUE_KILL_MONSTER_NUM (647), - TRIGGER_ROGUE_FINISH_WITHOUT_USING_SPRING_CELL (649), - TRIGGER_ROGUE_FINISH_ALL_CHALLENGE_CELL (650), - TRIGGER_ROGUE_FINISH_WITH_AVATAR_ELEMENT_TYPE_NUM_LESS_THAN (651), - TRIGGER_ROGUE_FINISH_WITH_AVATAR_NUM_LESS_THAN (652), - TRIGGER_ROGUE_FINISH_NO_AVATAR_DEAD (653), - TRIGGER_ROGUE_SHIKIGAMI_UPGRADE (654), - TRIGGER_ROGUE_CURSE_NUM (655), - TRIGGER_ROGUE_SELECT_CARD_NUM (656), - TRIGGER_FINISH_QUEST_AND (700), - TRIGGER_FINISH_QUEST_OR (701), - TRIGGER_DAILY_TASK_VAR_EQUAL (702), - TRIGGER_QUEST_GLOBAL_VAR_EQUAL (703), - TRIGGER_TALK_NUM (704), - TRIGGER_FINISH_PARENT_QUEST_AND (705), - TRIGGER_FINISH_PARENT_QUEST_OR (706), - TRIGGER_ELEMENT_REACTION_TIMELIMIT_NUM (800), - TRIGGER_ELEMENT_REACTION_TIMELIMIT_KILL_NUM (801), - TRIGGER_ELEMENT_REACTION_TIMELIMIT_DAMAGE_NUM (802), - TRIGGER_ABILITY_STATE_PASS_TIME (803), - TRIGGER_MAX_CRITICAL_DAMAGE (804), - TRIGGER_FULL_SATIATION_TEAM_AVATAR_NUM (805), - TRIGGER_KILLED_BY_CERTAIN_MONSTER (806), - TRIGGER_CUR_AVATAR_HURT (807), - TRIGGER_CUR_AVATAR_ABILITY_STATE (808), - TRIGGER_USE_ENERGY_SKILL_NUM_TIMELIMIT (809), - TRIGGER_SHIELD_SOURCE_NUM (810), - TRIGGER_CUR_AVATAR_HURT_BY_SPECIFIC_ABILITY (811), - TRIGGER_KILLED_BY_SPECIFIC_ABILITY (812), - TRIGGER_MAX_DASH_TIME (900), - TRIGGER_MAX_FLY_TIME (901), - TRIGGER_MAX_FLY_MAP_DISTANCE (902), - TRIGGER_SIT_DOWN_IN_POINT (903), - TRIGGER_DASH (904), - TRIGGER_CLIMB (905), - TRIGGER_FLY (906), - TRIGGER_CITY_REPUTATION_LEVEL (930), - TRIGGER_CITY_REPUTATION_FINISH_REQUEST (931), - TRIGGER_HUNTING_FINISH_NUM (932), - TRIGGER_HUNTING_FAIL_NUM (933), - TRIGGER_OFFERING_LEVEL (934), - TRIGGER_MIRACLE_RING_DELIVER_ITEM (935), - TRIGGER_MIRACLE_RING_TAKE_REWARD (936), - TRIGGER_BLESSING_EXCHANGE_PIC_NUM (937), - TRIGGER_BLESSING_REDEEM_REWARD_NUM (938), - TRIGGER_GALLERY_BALLOON_REACH_SCORE (939), - TRIGGER_GALLERY_FALL_REACH_SCORE (940), - TRIGGER_FLEUR_FAIR_MUSIC_GAME_REACH_SCORE (941), - TRIGGER_MAIN_COOP_SAVE_POINT_AND (942), - TRIGGER_MAIN_COOP_SAVE_POINT_OR (943), - TRIGGER_MAIN_COOP_VAR_EQUAL (944), - TRIGGER_FINISH_ALL_ARENA_CHALLENGE_WATCHER_IN_SCHEDULE (945), - TRIGGER_GALLERY_BUOYANT_COMBAT_REACH_SCORE (946), - TRIGGER_BUOYANT_COMBAT_REACH_NEW_SCORE_LEVEL (947), - TRIGGER_PLACE_MIRACLE_RING (948), - TRIGGER_LUNA_RITE_SEARCH (949), - TRIGGER_GALLERY_FISH_REACH_SCORE (950), - TRIGGER_GALLERY_TRIATHLON_REACH_SCORE (951), - TRIGGER_WINTER_CAMP_SNOWMAN_COMPLEIET (952), - TRIGGER_CREATE_CUSTOM_DUNGEON (953), - TRIGGER_PUBLISH_CUSTOM_DUNGEON (954), - TRIGGER_PLAY_OTHER_CUSTOM_DUNGEON (955), - TRIGGER_FINISH_CUSTOM_DUNGEON_OFFICIAL (956), - TRIGGER_CUSTOM_DUNGEON_OFFICIAL_COIN (957), - TRIGGER_OBTAIN_WOOD_TYPE (1000), - TRIGGER_OBTAIN_WOOD_COUNT (1001), - TRIGGER_UNLOCK_FURNITURE_COUNT (1002), - TRIGGER_FURNITURE_MAKE (1003), - TRIGGER_HOME_LEVEL (1004), - TRIGGER_HOME_COIN (1005), - TRIGGER_HOME_COMFORT_LEVEL (1006), - TRIGGER_HOME_LIMITED_SHOP_BUY (1007), - TRIGGER_FURNITURE_SUITE_TYPE (1008), - TRIGGER_ARRANGEMENT_FURNITURE_COUNT (1009), - TRIGGER_ENTER_SELF_HOME (1010), - TRIGGER_HOME_MODULE_COMFORT_VALUE (1011), - TRIGGER_HOME_ENTER_ROOM (1012), - TRIGGER_HOME_AVATAR_IN (1013), - TRIGGER_HOME_AVATAR_REWARD_EVENT_COUNT (1014), - TRIGGER_HOME_AVATAR_TALK_FINISH_COUNT (1015), - TRIGGER_HOME_AVATAR_REWARD_EVENT_ALL_COUNT (1016), - TRIGGER_HOME_AVATAR_TALK_FINISH_ALL_COUNT (1017), - TRIGGER_HOME_AVATAR_FETTER_GET (1018), - TRIGGER_HOME_AVATAR_IN_COUNT (1019), - TRIGGER_HOME_DO_PLANT (1020), - TRIGGER_ARRANGEMENT_FURNITURE (1021), - TRIGGER_HOME_GATHER_COUNT (1022), - TRIGGER_HOME_FIELD_GATHER_COUNT (1023), - TRIGGER_HOME_UNLOCK_BGM_COUNT (1024), - TRIGGER_FISHING_SUCC_NUM (1100), - TRIGGER_FISHING_KEEP_BONUS (1101), - TRIGGER_EMPTY_FISH_POOL (1102), - TRIGGER_FISHING_FAIL_NUM (1103), - TRIGGER_SHOCK_FISH_NUM (1104), - TRIGGER_PLANT_FLOWER_SET_WISH (1105), - TRIGGER_PLANT_FLOWER_GIVE_FLOWER (1106), - TRIGGER_PLANT_FLOWER_OBTAIN_FLOWER_TYPE (1107), - TRIGGER_PLANT_FLOWER_COMMON_OBTAIN_FLOWER_TYPE (1108), - TRIGGER_FINISH_LANV2_PROJECTION_LEVEL (1111), - TRIGGER_GALLERY_SALVAGE_REACH_SCORE (1112), - TRIGGER_LANV2_FIREWORKS_CHALLENGE_REACH_SCORE (1113), - TRIGGER_POTION_STAGE_LEVEL_PASS_NUM (1115), - TRIGGER_POTION_STAGE_OBTAIN_MEDAL_NUM (1116), - TRIGGER_POTION_STAGE_REACH_TOTAL_SCORE (1117), - TRIGGER_BARTENDER_FINISH_STORY_MODULE (1120), - TRIGGER_BARTENDER_CHALLENGE_MODULE_LEVEL_SCORE (1121), - TRIGGER_BARTENDER_UNLOCK_FORMULA (1122), - TRIGGER_MICHIAE_MATSURI_UNLOCK_CRYSTAL_SKILL_REACH_NUM (1123), - TRIGGER_MICHIAE_MATSURI_FINISH_DARK_CHALLENGE_REACH_NUM (1124), - TRIGGER_CAPTURE_ENV_ANIMAL_REACH_NUM (1125), - TRIGGER_SPICE_MAKE_FORMULA_TIMES (1126), - TRIGGER_SPICE_GIVE_FOOD_TIMES (1127), - TRIGGER_SPICE_MAKE_FORMULA_SUCCESSFUL_TIMES (1128), - TRIGGER_IRODORI_FINISH_FLOWER_THEME (1131), - TRIGGER_IRODORI_FINISH_MASTER_STAGE (1132), - TRIGGER_IRODORI_CHESS_STAGE_REACH_SCORE (1133), - TRIGGER_IRODORI_FINISH_POETRY_THEME (1134), - TRIGGER_PHOTO_FINISH_POS_ID (1135), - TRIGGER_CRYSTAL_LINK_LEVEL_SCORE_REACH (1138), - TRIGGER_CRYSTAL_LINK_TOTAL_MAX_SCORE_REACH (1139); - - private final int value; - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private WatcherTriggerType(int value) { - this.value = value; - } + TRIGGER_NONE(0), + TRIGGER_COMBAT_CONFIG_COMMON(1), + TRIGGER_ELEMENT_VIEW(2), + TRIGGER_ENTER_AIRFLOW(5), + TRIGGER_NEW_MONSTER(6), + TRIGGER_NEW_AFFIX(8), + TRIGGER_CHANGE_INPUT_DEVICE_TYPE(9), + TRIGGER_PAIMON_ANGRY_VOICE_EASTER_EGG(10), + TRIGGER_WIND_CRYSTAL(11), + TRIGGER_ELEMENT_BALL(101), + TRIGGER_WORLD_LEVEL_UP(102), + TRIGGER_DUNGEON_ENTRY_TO_BE_EXPLORED(103), + TRIGGER_UNLOCK_GATE_TEMPLE(104), + TRIGGER_UNLOCK_AREA(105), + TRIGGER_UNLOCK_TRANS_POINT(106), + TRIGGER_OPEN_CHEST_WITH_GADGET_ID(107), + TRIGGER_CITY_LEVEL_UP(108), + TRIGGER_MONSTER_DIE(109), + TRIGGER_PLATFORM_START_MOVE(110), + TRIGGER_GROUP_NOTIFY(111), + TRIGGER_ELEMENT_TYPE_CHANGE(112), + TRIGGER_GADGET_INTERACTABLE(113), + TRIGGER_COLLECT_SET_OF_READINGS(114), + TRIGGER_TELEPORT_WITH_CERTAIN_PORTAL(115), + TRIGGER_WORLD_GATHER(116), + TRIGGER_TAKE_GENERAL_REWARD(117), + TRIGGER_BATTLE_FOR_MONSTER_DIE_OR(118), + TRIGGER_BATTLE_FOR_MONSTER_DIE_AND(119), + TRIGGER_OPEN_WORLD_CHEST(120), + TRIGGER_ENTER_CLIMATE_AREA(121), + TRIGGER_UNLOCK_SCENE_POINT(122), + TRIGGER_INTERACT_GADGET_WITH_INTERACT_ID(123), + TRIGGER_OBTAIN_AVATAR(201), + TRIGGER_PLAYER_LEVEL(202), + TRIGGER_AVATAR_UPGRADE(203), + TRIGGER_AVATAR_PROMOTE(204), + TRIGGER_WEAPON_UPGRADE(205), + TRIGGER_WEAPON_PROMOTE(206), + TRIGGER_RELIQUARY_UPGRADE(207), + TRIGGER_WEAR_RELIQUARY(208), + TRIGGER_UPGRADE_TALENT(209), + TRIGGER_UNLOCK_RECIPE(210), + TRIGGER_RELIQUARY_SET_NUM(211), + TRIGGER_OBTAIN_MATERIAL_NUM(212), + TRIGGER_OBTAIN_RELIQUARY_NUM(213), + TRIGGER_GACHA_NUM(214), + TRIGGER_ANY_RELIQUARY_UPGRADE(215), + TRIGGER_FETTER_LEVEL_AVATAR_NUM(216), + TRIGGER_SKILLED_AT_RECIPE(217), + TRIGGER_RELIQUARY_UPGRADE_EQUAL_RANK_LEVEL(218), + TRIGGER_SPECIFIED_WEAPON_UPGRADE(219), + TRIGGER_SPECIFIED_WEAPON_AWAKEN(220), + TRIGGER_UNLOCK_SPECIFIC_RECIPE_OR(221), + TRIGGER_POSSESS_MATERIAL_NUM(222), + TRIGGER_EXHIBITION_ACCUMULABLE_VALUE(223), + TRIGGER_EXHIBITION_REPLACEABLE_VALUE_SETTLE_NUM(224), + TRIGGER_ANY_WEAPON_UPGRADE_NUM(225), + TRIGGER_ANY_RELIQUARY_UPGRADE_NUM(226), + TRIGGER_ACTIVITY_SCORE_EXCEED_VALUE(227), + TRIGGER_UNLOCK_SPECIFIC_FORGE_OR(228), + TRIGGER_UNLOCK_SPECIFIC_ANIMAL_CODEX(229), + TRIGGER_OBTAIN_ITEM_NUM(230), + TRIGGER_CAPTURE_ANIMAL(231), + TRIGGER_DAILY_TASK(301), + TRIGGER_RAND_TASK(302), + TRIGGER_AVATAR_EXPEDITION(303), + TRIGGER_FINISH_TOWER_LEVEL(304), + TRIGGER_WORLD_BOSS_REWARD(306), + TRIGGER_FINISH_DUNGEON(307), + TRIGGER_START_AVATAR_EXPEDITION(308), + TRIGGER_OPEN_BLOSSOM_CHEST(309), + TRIGGER_FINISH_BLOSSOM_PROGRESS(310), + TRIGGER_DONE_TOWER_GADGET_UNHURT(311), + TRIGGER_DONE_TOWER_STARS(312), + TRIGGER_DONE_TOWER_UNHURT(313), + TRIGGER_STEAL_FOOD_TIMES(314), + TRIGGER_DONE_DUNGEON_WITH_SAME_ELEMENT_AVATARS(315), + TRIGGER_GROUP_FLIGHT_CHALLENGE_REACH_POINTS(316), + TRIGGER_FINISH_DAILY_DELIVERY_NUM(317), + TRIGGER_TOWER_STARS_NUM(318), + TRIGGER_FINISH_SPECIFED_TYPE_BLOSSOM_NUM(319), + TRIGGER_FINISH_SPECIFED_TYPE_BLOSSOM_CLIMATE_METER(320), + TRIGGER_FINISH_BLOSSOM_GROUP_VARIABLE_GT(321), + TRIGGER_EFFIGY_CHALLENGE_SCORE(322), + TRIGGER_FINISH_ROUTINE(323), + TRIGGER_ACTIVITY_EXPEDITION_FINISH(324), + TRIGGER_ACTIVITY_CHANNELLER_SLAB_FINISH_ALL_CAMP(325), + TRIGGER_ACTIVITY_CHANNELLER_SLAB_FINISH_ALL_ONEOFF_DUNGEON(326), + TRIGGER_ACTIVITY_CHANNELLER_SLAB_LOOP_DUNGEON_TOTAL_SCORE(327), + TRIGGER_GROUP_SUMMER_TIME_SPRINT_BOAT_REACH_POINTS(328), + TRIGGER_WEEKLY_BOSS_KILL(329), + TRIGGER_BOUNCE_CONJURING_FINISH_COUNT(330), + TRIGGER_BOUNCE_CONJURING_SCORE(331), + TRIGGER_GROUP_VARIABLE_SET_VALUE_TO(332), + TRIGGER_KILL_GADGETS_BY_SPECIFIC_SKILL(333), + TRIGGER_KILL_MONSTERS_WITHOUT_VEHICLE(334), + TRIGGER_KILL_MONSTER_IN_AREA(335), + TRIGGER_ENTER_VEHICLE(336), + TRIGGER_VEHICLE_DURATION(337), + TRIGGER_VEHICLE_FRIENDS(338), + TRIGGER_VEHICLE_KILLED_BY_MONSTER(339), + TRIGGER_VEHICLE_DASH(340), + TRIGGER_DO_COOK(401), + TRIGGER_DO_FORGE(402), + TRIGGER_DO_COMPOUND(403), + TRIGGER_DO_COMBINE(404), + TRIGGER_BUY_SHOP_GOODS(405), + TRIGGER_FORGE_WEAPON(406), + TRIGGER_MP_PLAY_BATTLE_WIN(421), + TRIGGER_KILL_GROUP_MONSTER(422), + TRIGGER_CRUCIBLE_ELEMENT_SCORE(423), + TRIGGER_MP_DUNGEON_TIMES(424), + TRIGGER_MP_KILL_MONSTER_NUM(425), + TRIGGER_CRUCIBLE_MAX_BALL(426), + TRIGGER_CRUCIBLE_MAX_SCORE(427), + TRIGGER_CRUCIBLE_SUBMIT_BALL(428), + TRIGGER_CRUCIBLE_WORLD_LEVEL_SCORE(429), + TRIGGER_MP_PLAY_GROUP_STATISTIC(430), + TRIGGER_KILL_GROUP_SPECIFIC_MONSTER(431), + TRIGGER_REACH_MP_PLAY_SCORE(432), + TRIGGER_REACH_MP_PLAY_RECORD(433), + TRIGGER_TREASURE_MAP_DONE_REGION(434), + TRIGGER_SEA_LAMP_MINI_QUEST(435), + TRIGGER_FINISH_FIND_HILICHURL_LEVEL(436), + TRIGGER_COMBINE_ITEM(437), + TRIGGER_FINISH_CHALLENGE_IN_DURATION(438), + TRIGGER_FINISH_CHALLENGE_LEFT_TIME(439), + TRIGGER_MP_KILL_MONSTER_ID_NUM(440), + TRIGGER_LOGIN(501), + TRIGGER_COST_MATERIAL(502), + TRIGGER_DELIVER_ITEM_TO_SALESMAN(503), + TRIGGER_USE_ITEM(504), + TRIGGER_ACCUMULATE_DAILY_LOGIN(505), + TRIGGER_FINISH_CHALLENGE(601), + TRIGGER_MECHANICUS_UNLOCK_GEAR(602), + TRIGGER_MECHANICUS_LEVELUP_GEAR(603), + TRIGGER_MECHANICUS_DIFFICULT(604), + TRIGGER_MECHANICUS_DIFFICULT_SCORE(605), + TRIGGER_MECHANICUS_KILL_MONSTER(606), + TRIGGER_MECHANICUS_BUILDING_POINT(607), + TRIGGER_MECHANICUS_DIFFICULT_EQ(608), + TRIGGER_MECHANICUS_BATTLE_END(609), + TRIGGER_MECHANICUS_BATTLE_END_EXCAPED_LESS_THAN(610), + TRIGGER_MECHANICUS_BATTLE_END_POINTS_MORE_THAN(611), + TRIGGER_MECHANICUS_BATTLE_END_GEAR_MORE_THAN(612), + TRIGGER_MECHANICUS_BATTLE_END_PURE_GEAR_DAMAGE(613), + TRIGGER_MECHANICUS_BATTLE_END_CARD_PICK_MORE_THAN(614), + TRIGGER_MECHANICUS_BATTLE_END_CARD_TARGET_MORE_THAN(615), + TRIGGER_MECHANICUS_BATTLE_END_BUILD_GEAR_MORE_THAN(616), + TRIGGER_MECHANICUS_BATTLE_END_GEAR_KILL_MORE_THAN(617), + TRIGGER_MECHANICUS_BATTLE_END_ROUND_MORE_THAN(618), + TRIGGER_MECHANICUS_BATTLE_END_ROUND(619), + TRIGGER_MECHANICUS_BATTLE_FIN_CHALLENGE_MORE_THAN(620), + TRIGGER_MECHANICUS_BATTLE_WATCHER_FINISH_COUNT(621), + TRIGGER_MECHANICUS_BATTLE_INTERACT_COUNT(622), + TRIGGER_MECHANICUS_BATTLE_DIFFICULT_ESCAPE(623), + TRIGGER_MECHANICUS_BATTLE_DIFFICULT_GEAR_NUM(624), + TRIGGER_MECHANICUS_BATTLE_DIFFICULT_GEAR_ID_NUM(625), + TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_IN_LIMIT_TIME(626), + TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_KEEP_ENERGY(627), + TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_WITH_GROUP_VARIABLE(628), + TRIGGER_FLEUR_FAIR_DUNGEON_FINISH_WITH_BUFF_NUM(629), + TRIGGER_FLEUR_FAIR_DUNGEON_MISSION_FINISH(630), + TRIGGER_FINISH_DUNGEON_AND_CHALLENGE_REMAIN_TIME_GREATER_THAN(631), + TRIGGER_FINISH_DUNGEON_WITH_MIST_TRIAL_STAT(632), + TRIGGER_DUNGEON_MIST_TRIAL_STAT(633), + TRIGGER_DUNGEON_ELEMENT_REACTION_NUM(634), + TRIGGER_LEVEL_AVATAR_FINISH_DUNGEON_COUNT(635), + TRIGGER_CHESS_REACH_LEVEL(636), + TRIGGER_CHESS_DUNGEON_ADD_SCORE(637), + TRIGGER_CHESS_DUNGEON_SUCC_WITH_ESCAPED_MONSTERS_LESS_THAN(638), + TRIGGER_CHESS_DUNGEON_SUCC_WITH_TOWER_COUNT_LESS_OR_EQUAL(639), + TRIGGER_CHESS_DUNGEON_SUCC_WITH_CARD_COUNT_LESS_OR_EQUAL(640), + TRIGGER_CHESS_DUNGEON_SUCC_WITH_CARD_COUNT_GREATER_THAN(641), + TRIGGER_CHESS_KILL_MONSTERS(642), + TRIGGER_CHESS_COST_BUILDING_POINTS(643), + TRIGGER_SUMO_STAGE_SCORE_REACH(644), + TRIGGER_SUMO_TOTAL_MAX_SCORE_REACH(645), + TRIGGER_ROGUE_DESTROY_GADGET_NUM(646), + TRIGGER_ROGUE_KILL_MONSTER_NUM(647), + TRIGGER_ROGUE_FINISH_WITHOUT_USING_SPRING_CELL(649), + TRIGGER_ROGUE_FINISH_ALL_CHALLENGE_CELL(650), + TRIGGER_ROGUE_FINISH_WITH_AVATAR_ELEMENT_TYPE_NUM_LESS_THAN(651), + TRIGGER_ROGUE_FINISH_WITH_AVATAR_NUM_LESS_THAN(652), + TRIGGER_ROGUE_FINISH_NO_AVATAR_DEAD(653), + TRIGGER_ROGUE_SHIKIGAMI_UPGRADE(654), + TRIGGER_ROGUE_CURSE_NUM(655), + TRIGGER_ROGUE_SELECT_CARD_NUM(656), + TRIGGER_FINISH_QUEST_AND(700), + TRIGGER_FINISH_QUEST_OR(701), + TRIGGER_DAILY_TASK_VAR_EQUAL(702), + TRIGGER_QUEST_GLOBAL_VAR_EQUAL(703), + TRIGGER_TALK_NUM(704), + TRIGGER_FINISH_PARENT_QUEST_AND(705), + TRIGGER_FINISH_PARENT_QUEST_OR(706), + TRIGGER_ELEMENT_REACTION_TIMELIMIT_NUM(800), + TRIGGER_ELEMENT_REACTION_TIMELIMIT_KILL_NUM(801), + TRIGGER_ELEMENT_REACTION_TIMELIMIT_DAMAGE_NUM(802), + TRIGGER_ABILITY_STATE_PASS_TIME(803), + TRIGGER_MAX_CRITICAL_DAMAGE(804), + TRIGGER_FULL_SATIATION_TEAM_AVATAR_NUM(805), + TRIGGER_KILLED_BY_CERTAIN_MONSTER(806), + TRIGGER_CUR_AVATAR_HURT(807), + TRIGGER_CUR_AVATAR_ABILITY_STATE(808), + TRIGGER_USE_ENERGY_SKILL_NUM_TIMELIMIT(809), + TRIGGER_SHIELD_SOURCE_NUM(810), + TRIGGER_CUR_AVATAR_HURT_BY_SPECIFIC_ABILITY(811), + TRIGGER_KILLED_BY_SPECIFIC_ABILITY(812), + TRIGGER_MAX_DASH_TIME(900), + TRIGGER_MAX_FLY_TIME(901), + TRIGGER_MAX_FLY_MAP_DISTANCE(902), + TRIGGER_SIT_DOWN_IN_POINT(903), + TRIGGER_DASH(904), + TRIGGER_CLIMB(905), + TRIGGER_FLY(906), + TRIGGER_CITY_REPUTATION_LEVEL(930), + TRIGGER_CITY_REPUTATION_FINISH_REQUEST(931), + TRIGGER_HUNTING_FINISH_NUM(932), + TRIGGER_HUNTING_FAIL_NUM(933), + TRIGGER_OFFERING_LEVEL(934), + TRIGGER_MIRACLE_RING_DELIVER_ITEM(935), + TRIGGER_MIRACLE_RING_TAKE_REWARD(936), + TRIGGER_BLESSING_EXCHANGE_PIC_NUM(937), + TRIGGER_BLESSING_REDEEM_REWARD_NUM(938), + TRIGGER_GALLERY_BALLOON_REACH_SCORE(939), + TRIGGER_GALLERY_FALL_REACH_SCORE(940), + TRIGGER_FLEUR_FAIR_MUSIC_GAME_REACH_SCORE(941), + TRIGGER_MAIN_COOP_SAVE_POINT_AND(942), + TRIGGER_MAIN_COOP_SAVE_POINT_OR(943), + TRIGGER_MAIN_COOP_VAR_EQUAL(944), + TRIGGER_FINISH_ALL_ARENA_CHALLENGE_WATCHER_IN_SCHEDULE(945), + TRIGGER_GALLERY_BUOYANT_COMBAT_REACH_SCORE(946), + TRIGGER_BUOYANT_COMBAT_REACH_NEW_SCORE_LEVEL(947), + TRIGGER_PLACE_MIRACLE_RING(948), + TRIGGER_LUNA_RITE_SEARCH(949), + TRIGGER_GALLERY_FISH_REACH_SCORE(950), + TRIGGER_GALLERY_TRIATHLON_REACH_SCORE(951), + TRIGGER_WINTER_CAMP_SNOWMAN_COMPLEIET(952), + TRIGGER_CREATE_CUSTOM_DUNGEON(953), + TRIGGER_PUBLISH_CUSTOM_DUNGEON(954), + TRIGGER_PLAY_OTHER_CUSTOM_DUNGEON(955), + TRIGGER_FINISH_CUSTOM_DUNGEON_OFFICIAL(956), + TRIGGER_CUSTOM_DUNGEON_OFFICIAL_COIN(957), + TRIGGER_OBTAIN_WOOD_TYPE(1000), + TRIGGER_OBTAIN_WOOD_COUNT(1001), + TRIGGER_UNLOCK_FURNITURE_COUNT(1002), + TRIGGER_FURNITURE_MAKE(1003), + TRIGGER_HOME_LEVEL(1004), + TRIGGER_HOME_COIN(1005), + TRIGGER_HOME_COMFORT_LEVEL(1006), + TRIGGER_HOME_LIMITED_SHOP_BUY(1007), + TRIGGER_FURNITURE_SUITE_TYPE(1008), + TRIGGER_ARRANGEMENT_FURNITURE_COUNT(1009), + TRIGGER_ENTER_SELF_HOME(1010), + TRIGGER_HOME_MODULE_COMFORT_VALUE(1011), + TRIGGER_HOME_ENTER_ROOM(1012), + TRIGGER_HOME_AVATAR_IN(1013), + TRIGGER_HOME_AVATAR_REWARD_EVENT_COUNT(1014), + TRIGGER_HOME_AVATAR_TALK_FINISH_COUNT(1015), + TRIGGER_HOME_AVATAR_REWARD_EVENT_ALL_COUNT(1016), + TRIGGER_HOME_AVATAR_TALK_FINISH_ALL_COUNT(1017), + TRIGGER_HOME_AVATAR_FETTER_GET(1018), + TRIGGER_HOME_AVATAR_IN_COUNT(1019), + TRIGGER_HOME_DO_PLANT(1020), + TRIGGER_ARRANGEMENT_FURNITURE(1021), + TRIGGER_HOME_GATHER_COUNT(1022), + TRIGGER_HOME_FIELD_GATHER_COUNT(1023), + TRIGGER_HOME_UNLOCK_BGM_COUNT(1024), + TRIGGER_FISHING_SUCC_NUM(1100), + TRIGGER_FISHING_KEEP_BONUS(1101), + TRIGGER_EMPTY_FISH_POOL(1102), + TRIGGER_FISHING_FAIL_NUM(1103), + TRIGGER_SHOCK_FISH_NUM(1104), + TRIGGER_PLANT_FLOWER_SET_WISH(1105), + TRIGGER_PLANT_FLOWER_GIVE_FLOWER(1106), + TRIGGER_PLANT_FLOWER_OBTAIN_FLOWER_TYPE(1107), + TRIGGER_PLANT_FLOWER_COMMON_OBTAIN_FLOWER_TYPE(1108), + TRIGGER_FINISH_LANV2_PROJECTION_LEVEL(1111), + TRIGGER_GALLERY_SALVAGE_REACH_SCORE(1112), + TRIGGER_LANV2_FIREWORKS_CHALLENGE_REACH_SCORE(1113), + TRIGGER_POTION_STAGE_LEVEL_PASS_NUM(1115), + TRIGGER_POTION_STAGE_OBTAIN_MEDAL_NUM(1116), + TRIGGER_POTION_STAGE_REACH_TOTAL_SCORE(1117), + TRIGGER_BARTENDER_FINISH_STORY_MODULE(1120), + TRIGGER_BARTENDER_CHALLENGE_MODULE_LEVEL_SCORE(1121), + TRIGGER_BARTENDER_UNLOCK_FORMULA(1122), + TRIGGER_MICHIAE_MATSURI_UNLOCK_CRYSTAL_SKILL_REACH_NUM(1123), + TRIGGER_MICHIAE_MATSURI_FINISH_DARK_CHALLENGE_REACH_NUM(1124), + TRIGGER_CAPTURE_ENV_ANIMAL_REACH_NUM(1125), + TRIGGER_SPICE_MAKE_FORMULA_TIMES(1126), + TRIGGER_SPICE_GIVE_FOOD_TIMES(1127), + TRIGGER_SPICE_MAKE_FORMULA_SUCCESSFUL_TIMES(1128), + TRIGGER_IRODORI_FINISH_FLOWER_THEME(1131), + TRIGGER_IRODORI_FINISH_MASTER_STAGE(1132), + TRIGGER_IRODORI_CHESS_STAGE_REACH_SCORE(1133), + TRIGGER_IRODORI_FINISH_POETRY_THEME(1134), + TRIGGER_PHOTO_FINISH_POS_ID(1135), + TRIGGER_CRYSTAL_LINK_LEVEL_SCORE_REACH(1138), + TRIGGER_CRYSTAL_LINK_TOTAL_MAX_SCORE_REACH(1139); - public int getValue() { - return value; - } - - public static WatcherTriggerType getTypeByValue(int value) { - return map.getOrDefault(value, TRIGGER_NONE); - } - - public static WatcherTriggerType getTypeByName(String name) { - return stringMap.getOrDefault(name, TRIGGER_NONE); - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private final int value; + + WatcherTriggerType(int value) { + this.value = value; + } + + public static WatcherTriggerType getTypeByValue(int value) { + return map.getOrDefault(value, TRIGGER_NONE); + } + + public static WatcherTriggerType getTypeByName(String name) { + return stringMap.getOrDefault(name, TRIGGER_NONE); + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/props/WeaponType.java b/src/main/java/emu/grasscutter/game/props/WeaponType.java index 11654464f..e2f297885 100644 --- a/src/main/java/emu/grasscutter/game/props/WeaponType.java +++ b/src/main/java/emu/grasscutter/game/props/WeaponType.java @@ -1,69 +1,69 @@ package emu.grasscutter.game.props; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.util.HashMap; import java.util.Map; import java.util.stream.Stream; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public enum WeaponType { - WEAPON_NONE (0), - WEAPON_SWORD_ONE_HAND (1, 10, 5), - WEAPON_CROSSBOW (2), - WEAPON_STAFF (3), - WEAPON_DOUBLE_DAGGER (4), - WEAPON_KATANA (5), - WEAPON_SHURIKEN (6), - WEAPON_STICK (7), - WEAPON_SPEAR (8), - WEAPON_SHIELD_SMALL (9), - WEAPON_CATALYST (10, 0, 10), - WEAPON_CLAYMORE (11, 0, 10), - WEAPON_BOW (12, 0, 5), - WEAPON_POLE (13, 0, 4); - - private final int value; - private int energyGainInitialProbability; - private int energyGainIncreaseProbability; - - private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); - private static final Map stringMap = new HashMap<>(); - - static { - Stream.of(values()).forEach(e -> { - map.put(e.getValue(), e); - stringMap.put(e.name(), e); - }); - } - - private WeaponType(int value) { - this.value = value; - } - - private WeaponType(int value, int energyGainInitialProbability, int energyGainIncreaseProbability) { - this.value = value; - this.energyGainInitialProbability = energyGainInitialProbability; - this.energyGainIncreaseProbability = energyGainIncreaseProbability; - } + WEAPON_NONE(0), + WEAPON_SWORD_ONE_HAND(1, 10, 5), + WEAPON_CROSSBOW(2), + WEAPON_STAFF(3), + WEAPON_DOUBLE_DAGGER(4), + WEAPON_KATANA(5), + WEAPON_SHURIKEN(6), + WEAPON_STICK(7), + WEAPON_SPEAR(8), + WEAPON_SHIELD_SMALL(9), + WEAPON_CATALYST(10, 0, 10), + WEAPON_CLAYMORE(11, 0, 10), + WEAPON_BOW(12, 0, 5), + WEAPON_POLE(13, 0, 4); - public int getValue() { - return value; - } - - public int getEnergyGainInitialProbability() { - return energyGainInitialProbability; - } + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); - public int getEnergyGainIncreaseProbability() { - return energyGainIncreaseProbability; - } + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } - public static WeaponType getTypeByValue(int value) { - return map.getOrDefault(value, WEAPON_NONE); - } - - public static WeaponType getTypeByName(String name) { - return stringMap.getOrDefault(name, WEAPON_NONE); - } + private final int value; + private int energyGainInitialProbability; + private int energyGainIncreaseProbability; + + WeaponType(int value) { + this.value = value; + } + + WeaponType(int value, int energyGainInitialProbability, int energyGainIncreaseProbability) { + this.value = value; + this.energyGainInitialProbability = energyGainInitialProbability; + this.energyGainIncreaseProbability = energyGainIncreaseProbability; + } + + public static WeaponType getTypeByValue(int value) { + return map.getOrDefault(value, WEAPON_NONE); + } + + public static WeaponType getTypeByName(String name) { + return stringMap.getOrDefault(name, WEAPON_NONE); + } + + public int getValue() { + return value; + } + + public int getEnergyGainInitialProbability() { + return energyGainInitialProbability; + } + + public int getEnergyGainIncreaseProbability() { + return energyGainIncreaseProbability; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/GameMainQuest.java b/src/main/java/emu/grasscutter/game/quest/GameMainQuest.java index 77bf898cf..78b1686b6 100644 --- a/src/main/java/emu/grasscutter/game/quest/GameMainQuest.java +++ b/src/main/java/emu/grasscutter/game/quest/GameMainQuest.java @@ -1,66 +1,79 @@ package emu.grasscutter.game.quest; -import java.util.*; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.data.binout.ScriptSceneData; -import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.quest.enums.LogicType; -import emu.grasscutter.game.quest.enums.QuestTrigger; -import emu.grasscutter.scripts.ScriptLoader; -import emu.grasscutter.server.packet.send.PacketCodexDataUpdateNotify; -import emu.grasscutter.utils.Position; -import lombok.Getter; -import org.bson.types.ObjectId; - import dev.morphia.annotations.Entity; import dev.morphia.annotations.Id; import dev.morphia.annotations.Indexed; import dev.morphia.annotations.Transient; +import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.MainQuestData; -import emu.grasscutter.data.binout.MainQuestData.*; +import emu.grasscutter.data.binout.MainQuestData.SubQuestData; +import emu.grasscutter.data.binout.MainQuestData.TalkData; +import emu.grasscutter.data.binout.ScriptSceneData; +import emu.grasscutter.data.excels.QuestData; import emu.grasscutter.data.excels.RewardData; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.ActionReason; +import emu.grasscutter.game.quest.enums.LogicType; import emu.grasscutter.game.quest.enums.ParentQuestState; import emu.grasscutter.game.quest.enums.QuestState; +import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.proto.ChildQuestOuterClass.ChildQuest; import emu.grasscutter.net.proto.ParentQuestOuterClass.ParentQuest; -import emu.grasscutter.net.proto.QuestOuterClass.Quest; +import emu.grasscutter.scripts.ScriptLoader; +import emu.grasscutter.server.packet.send.PacketCodexDataUpdateNotify; import emu.grasscutter.server.packet.send.PacketFinishedParentQuestUpdateNotify; -import emu.grasscutter.server.packet.send.PacketQuestListUpdateNotify; import emu.grasscutter.server.packet.send.PacketQuestProgressUpdateNotify; +import emu.grasscutter.utils.Position; +import lombok.Getter; +import org.bson.types.ObjectId; import javax.script.Bindings; import javax.script.CompiledScript; import javax.script.ScriptException; +import java.util.*; @Entity(value = "quests", useDiscriminator = false) public class GameMainQuest { - @Id private ObjectId id; - @Indexed @Getter private int ownerUid; - @Transient @Getter private Player owner; - @Transient @Getter private QuestManager questManager; - @Getter private Map childQuests; - @Getter private int parentQuestId; - @Getter private int[] questVars; + @Getter + List questGroupSuites; + @Getter + int[] suggestTrackMainQuestList; + @Id + private ObjectId id; + @Indexed + @Getter + private int ownerUid; + @Transient + @Getter + private Player owner; + @Transient + @Getter + private QuestManager questManager; + @Getter + private Map childQuests; + @Getter + private int parentQuestId; + @Getter + private int[] questVars; //QuestUpdateQuestVarReq is sent in two stages... - @Getter private List questVarsUpdate; - @Getter private ParentQuestState state; - @Getter private boolean isFinished; - @Getter List questGroupSuites; - - @Getter int[] suggestTrackMainQuestList; - @Getter private Map talks; + @Getter + private List questVarsUpdate; + @Getter + private ParentQuestState state; + @Getter + private boolean isFinished; + @Getter + private Map talks; //key is subId - private Map rewindPositions; - private Map rewindRotations; + private Map rewindPositions; + private Map rewindRotations; @Deprecated // Morphia only. Do not use. - public GameMainQuest() {} + public GameMainQuest() { + } public GameMainQuest(Player player, int parentQuestId) { this.owner = player; @@ -70,7 +83,7 @@ public class GameMainQuest { this.childQuests = new HashMap<>(); this.talks = new HashMap<>(); //official server always has a list of 5 questVars, with default value 0 - this.questVars = new int[] {0,0,0,0,0}; + this.questVars = new int[]{0, 0, 0, 0, 0}; this.state = ParentQuestState.PARENT_QUEST_STATE_NONE; this.questGroupSuites = new ArrayList<>(); this.rewindPositions = new HashMap<>(); @@ -95,6 +108,7 @@ public class GameMainQuest { public int getQuestVar(int i) { return questVars[i]; } + public void setQuestVar(int i, int value) { int previousValue = this.questVars[i]; this.questVars[i] = value; @@ -117,6 +131,7 @@ public class GameMainQuest { public GameQuest getChildQuestById(int id) { return this.getChildQuests().get(id); } + public GameQuest getChildQuestByOrder(int order) { return this.getChildQuests().values().stream().filter(p -> p.getQuestData().getOrder() == order).toList().get(0); } @@ -150,9 +165,13 @@ public class GameMainQuest { .forEach(getQuestManager()::startMainQuest); } } + //TODO - public void fail() {} - public void cancel() {} + public void fail() { + } + + public void cancel() { + } // Rewinds to the last finished/unfinished rewind quest, and returns the avatar rewind position (if it exists) public List rewind() { @@ -160,18 +179,19 @@ public class GameMainQuest { this.questManager = getOwner().getQuestManager(); } List sortedByOrder = new ArrayList<>(getChildQuests().values().stream().filter(q -> q.getQuestData().isRewind()).toList()); - sortedByOrder.sort((a,b) -> { - if ( a == b) { + sortedByOrder.sort((a, b) -> { + if (a == b) { return 0; } - return a.getQuestData().getOrder() > b.getQuestData().getOrder() ? 1 : -1;}); + return a.getQuestData().getOrder() > b.getQuestData().getOrder() ? 1 : -1; + }); boolean didRewind = false; for (GameQuest quest : sortedByOrder) { int i = sortedByOrder.indexOf(quest); - if ( (i+1) >= sortedByOrder.size()) { + if ((i + 1) >= sortedByOrder.size()) { didRewind = quest.rewind(null); } else { - didRewind = quest.rewind(sortedByOrder.get(i+1)); + didRewind = quest.rewind(sortedByOrder.get(i + 1)); } if (didRewind) { break; @@ -182,13 +202,14 @@ public class GameMainQuest { for (GameQuest quest : rewindQuests) { if (rewindPositions.containsKey(quest.getSubQuestId())) { List posAndRot = new ArrayList<>(); - posAndRot.add(0,rewindPositions.get(quest.getSubQuestId())); - posAndRot.add(1,rewindRotations.get(quest.getSubQuestId())); - return posAndRot; + posAndRot.add(0, rewindPositions.get(quest.getSubQuestId())); + posAndRot.add(1, rewindRotations.get(quest.getSubQuestId())); + return posAndRot; } } return null; } + public void addRewindPoints() { Bindings bindings = ScriptLoader.getEngine().createBindings(); String script = "Quest/Share/Q" + getParentQuestId() + "ShareConfig.lua"; @@ -223,12 +244,12 @@ public class GameMainQuest { if (dummyPointMap != null) { List avatarPosPos = dummyPointMap.get(avatarPos + ".pos"); if (avatarPosPos != null) { - Position pos = new Position(avatarPosPos.get(0),avatarPosPos.get(1),avatarPosPos.get(2)); + Position pos = new Position(avatarPosPos.get(0), avatarPosPos.get(1), avatarPosPos.get(2)); List avatarPosRot = dummyPointMap.get(avatarPos + ".rot"); - Position rot = new Position(avatarPosRot.get(0),avatarPosRot.get(1),avatarPosRot.get(2)); - rewindPositions.put(Integer.valueOf(subId),pos); - rewindRotations.put(Integer.valueOf(subId),rot); - Grasscutter.getLogger().debug("Succesfully loaded rewind position for subQuest {}",subId); + Position rot = new Position(avatarPosRot.get(0), avatarPosRot.get(1), avatarPosRot.get(2)); + rewindPositions.put(Integer.valueOf(subId), pos); + rewindRotations.put(Integer.valueOf(subId), rot); + Grasscutter.getLogger().debug("Succesfully loaded rewind position for subQuest {}", subId); } } } @@ -353,21 +374,21 @@ public class GameMainQuest { public ParentQuest toProto() { ParentQuest.Builder proto = ParentQuest.newBuilder() - .setParentQuestId(getParentQuestId()) - .setIsFinished(isFinished()); + .setParentQuestId(getParentQuestId()) + .setIsFinished(isFinished()); - proto.setParentQuestState(getState().getValue()) - .setVideoKey(QuestManager.getQuestKey(parentQuestId)); - for (GameQuest quest : this.getChildQuests().values()) { - if (quest.getState() != QuestState.QUEST_STATE_UNSTARTED) { - ChildQuest childQuest = ChildQuest.newBuilder() - .setQuestId(quest.getSubQuestId()) - .setState(quest.getState().getValue()) - .build(); + proto.setParentQuestState(getState().getValue()) + .setVideoKey(QuestManager.getQuestKey(parentQuestId)); + for (GameQuest quest : this.getChildQuests().values()) { + if (quest.getState() != QuestState.QUEST_STATE_UNSTARTED) { + ChildQuest childQuest = ChildQuest.newBuilder() + .setQuestId(quest.getSubQuestId()) + .setState(quest.getState().getValue()) + .build(); - proto.addChildQuestList(childQuest); - } + proto.addChildQuestList(childQuest); } + } for (int i : getQuestVars()) { proto.addQuestVar(i); diff --git a/src/main/java/emu/grasscutter/game/quest/GameQuest.java b/src/main/java/emu/grasscutter/game/quest/GameQuest.java index f7dee8fe5..1648da761 100644 --- a/src/main/java/emu/grasscutter/game/quest/GameQuest.java +++ b/src/main/java/emu/grasscutter/game/quest/GameQuest.java @@ -13,42 +13,58 @@ import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.proto.ChapterStateOuterClass; import emu.grasscutter.net.proto.QuestOuterClass.Quest; import emu.grasscutter.scripts.data.SceneGroup; - import emu.grasscutter.server.packet.send.PacketChapterStateNotify; -import emu.grasscutter.server.packet.send.PacketQuestListUpdateNotify; -import emu.grasscutter.server.packet.send.PacketQuestProgressUpdateNotify; import emu.grasscutter.utils.Utils; import lombok.Getter; import lombok.Setter; import javax.script.Bindings; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @Entity public class GameQuest { - @Transient @Getter @Setter private GameMainQuest mainQuest; - @Transient @Getter private QuestData questData; + @Transient + @Getter + @Setter + private GameMainQuest mainQuest; + @Transient + @Getter + private QuestData questData; - @Getter private int subQuestId; - @Getter private int mainQuestId; - @Getter @Setter + @Getter + private int subQuestId; + @Getter + private int mainQuestId; + @Getter + @Setter private QuestState state; - @Getter @Setter private int startTime; - @Getter @Setter private int acceptTime; - @Getter @Setter private int finishTime; + @Getter + @Setter + private int startTime; + @Getter + @Setter + private int acceptTime; + @Getter + @Setter + private int finishTime; - @Getter private int[] finishProgressList; - @Getter private int[] failProgressList; - @Transient @Getter private Map triggerData; - @Getter private Map triggers; + @Getter + private int[] finishProgressList; + @Getter + private int[] failProgressList; + @Transient + @Getter + private Map triggerData; + @Getter + private Map triggers; private transient Bindings bindings; @Deprecated // Morphia only. Do not use. - public GameQuest() {} + public GameQuest() { + } public GameQuest(GameMainQuest mainQuest, QuestData questData) { this.mainQuest = mainQuest; @@ -100,8 +116,8 @@ public class GameQuest { } //Some subQuests and talks become active when some other subQuests are unfinished (even from different MainQuests) - this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(),0,0,0); - this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(),0,0,0); + this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(), 0, 0, 0); + this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(), 0, 0, 0); Grasscutter.getLogger().debug("Quest {} is started", subQuestId); } @@ -144,8 +160,8 @@ public class GameQuest { getQuestData().getFinishExec().forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam())); //Some subQuests have conditions that subQuests are finished (even from different MainQuests) - getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0); - getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0); + getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0); + getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0); if (ChapterData.endQuestChapterMap.containsKey(subQuestId)) { mainQuest.getOwner().sendPacket(new PacketChapterStateNotify( @@ -164,16 +180,19 @@ public class GameQuest { getQuestData().getFailExec().forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam())); //Some subQuests have conditions that subQuests fail (even from different MainQuests) - getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0); - getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0); + getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0); + getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0); } + // Return true if ParentQuest should rewind to this childQuest public boolean rewind(GameQuest nextRewind) { if (questData.isRewind()) { - if (nextRewind == null) {return true;} + if (nextRewind == null) { + return true; + } // if the next isRewind subQuest is none or unstarted, reset all subQuests with order higher than this one, and restart this quest - if (nextRewind.getState() == QuestState.QUEST_STATE_NONE|| nextRewind.getState() == QuestState.QUEST_STATE_UNSTARTED) { + if (nextRewind.getState() == QuestState.QUEST_STATE_NONE || nextRewind.getState() == QuestState.QUEST_STATE_UNSTARTED) { getMainQuest().getChildQuests().values().stream().filter(p -> p.getQuestData().getOrder() > this.getQuestData().getOrder()).forEach(q -> q.setState(QuestState.QUEST_STATE_UNSTARTED)); this.start(); return true; @@ -188,12 +207,12 @@ public class GameQuest { public Quest toProto() { Quest.Builder proto = Quest.newBuilder() - .setQuestId(getSubQuestId()) - .setState(getState().getValue()) - .setParentQuestId(getMainQuestId()) - .setStartTime(getStartTime()) - .setStartGameTime(438) - .setAcceptTime(getAcceptTime()); + .setQuestId(getSubQuestId()) + .setState(getState().getValue()) + .setParentQuestId(getMainQuestId()) + .setStartTime(getStartTime()) + .setStartGameTime(438) + .setAcceptTime(getAcceptTime()); if (getFinishProgressList() != null) { for (int i : getFinishProgressList()) { diff --git a/src/main/java/emu/grasscutter/game/quest/QuestManager.java b/src/main/java/emu/grasscutter/game/quest/QuestManager.java index ad4528a8d..02fa2c937 100644 --- a/src/main/java/emu/grasscutter/game/quest/QuestManager.java +++ b/src/main/java/emu/grasscutter/game/quest/QuestManager.java @@ -1,41 +1,41 @@ package emu.grasscutter.game.quest; -import java.beans.Transient; -import java.util.*; -import java.util.function.Consumer; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.MainQuestData; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.quest.enums.ParentQuestState; -import emu.grasscutter.game.quest.enums.QuestTrigger; -import emu.grasscutter.game.quest.enums.LogicType; import emu.grasscutter.game.quest.enums.QuestState; -import emu.grasscutter.server.packet.send.*; +import emu.grasscutter.game.quest.enums.QuestTrigger; +import emu.grasscutter.server.packet.send.PacketFinishedParentQuestUpdateNotify; +import emu.grasscutter.server.packet.send.PacketQuestListUpdateNotify; import emu.grasscutter.utils.Position; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import jdk.jshell.spi.ExecutionControl; import lombok.Getter; +import java.util.*; +import java.util.function.Consumer; + public class QuestManager extends BasePlayerManager { - @Getter private final Player player; - @Getter private final Int2ObjectMap mainQuests; - @Getter private List addToQuestListUpdateNotify; + private static final Set newPlayerMainQuests = Set.of(303, 318, 348, 349, 350, 351, 416, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 20000, 20507, 20509, 21004, 21005, 21010, 21011, 21016, 21017, + 21020, 21021, 21025, 40063, 70121, 70124, 70511, 71010, 71012, 71013, 71015, 71016, 71017, 71555); + @Getter + private final Player player; + @Getter + private final Int2ObjectMap mainQuests; /* On SetPlayerBornDataReq, the server sends FinishedParentQuestNotify, with this exact parentQuestList. Captured on Game version 2.7 Note: quest 40063 is already set to finished, with childQuest 4006406's state set to 3 */ - - private static Set newPlayerMainQuests = Set.of(303,318,348,349,350,351,416,500, - 501,502,503,504,505,506,507,508,509,20000,20507,20509,21004,21005,21010,21011,21016,21017, - 21020,21021,21025,40063,70121,70124,70511,71010,71012,71013,71015,71016,71017,71555); + @Getter + private final List addToQuestListUpdateNotify; /* On SetPlayerBornDataReq, the server sends ServerCondMeetQuestListUpdateNotify, with this exact @@ -62,10 +62,6 @@ public class QuestManager extends BasePlayerManager { */ - public static long getQuestKey(int mainQuestId) { - QuestEncryptionKey questEncryptionKey = GameData.getMainQuestEncryptionMap().get(mainQuestId); - return questEncryptionKey != null ? questEncryptionKey.getEncryptionKey() : 0L; - } public QuestManager(Player player) { super(player); @@ -74,6 +70,11 @@ public class QuestManager extends BasePlayerManager { this.addToQuestListUpdateNotify = new ArrayList<>(); } + public static long getQuestKey(int mainQuestId) { + QuestEncryptionKey questEncryptionKey = GameData.getMainQuestEncryptionMap().get(mainQuestId); + return questEncryptionKey != null ? questEncryptionKey.getEncryptionKey() : 0L; + } + public void onNewPlayerCreate() { List newQuests = this.addMultMainQuests(newPlayerMainQuests); @@ -98,7 +99,7 @@ public class QuestManager extends BasePlayerManager { private List addMultMainQuests(Set mainQuestIds) { List newQuests = new ArrayList<>(); for (Integer id : mainQuestIds) { - getMainQuests().put(id.intValue(),new GameMainQuest(this.player, id)); + getMainQuests().put(id.intValue(), new GameMainQuest(this.player, id)); getMainQuestById(id).save(); newQuests.add(getMainQuestById(id)); } @@ -109,24 +110,26 @@ public class QuestManager extends BasePlayerManager { Looking through mainQuests 72201-72208 and 72174, we can infer that a questGlobalVar's default value is 0 */ public Integer getQuestGlobalVarValue(Integer variable) { - return getPlayer().getQuestGlobalVariables().getOrDefault(variable,0); + return getPlayer().getQuestGlobalVariables().getOrDefault(variable, 0); } public void setQuestGlobalVarValue(Integer variable, Integer value) { - Integer previousValue = getPlayer().getQuestGlobalVariables().put(variable,value); - Grasscutter.getLogger().debug("Changed questGlobalVar {} value from {} to {}", variable, previousValue==null ? 0: previousValue, value); + Integer previousValue = getPlayer().getQuestGlobalVariables().put(variable, value); + Grasscutter.getLogger().debug("Changed questGlobalVar {} value from {} to {}", variable, previousValue == null ? 0 : previousValue, value); } + public void incQuestGlobalVarValue(Integer variable, Integer inc) { // - Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable,0); - getPlayer().getQuestGlobalVariables().put(variable,previousValue + inc); + Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable, 0); + getPlayer().getQuestGlobalVariables().put(variable, previousValue + inc); Grasscutter.getLogger().debug("Incremented questGlobalVar {} value from {} to {}", variable, previousValue, previousValue + inc); } + //In MainQuest 998, dec is passed as a positive integer public void decQuestGlobalVarValue(Integer variable, Integer dec) { // - Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable,0); - getPlayer().getQuestGlobalVariables().put(variable,previousValue - dec); + Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable, 0); + getPlayer().getQuestGlobalVariables().put(variable, previousValue - dec); Grasscutter.getLogger().debug("Decremented questGlobalVar {} value from {} to {}", variable, previousValue, previousValue - dec); } @@ -213,6 +216,7 @@ public class QuestManager extends BasePlayerManager { return quest; } + public void startMainQuest(int mainQuestId) { var mainQuestData = GameData.getMainQuestDataMap().get(mainQuestId); @@ -225,6 +229,7 @@ public class QuestManager extends BasePlayerManager { .map(MainQuestData.SubQuestData::getSubId) .ifPresent(this::addQuest); } + public void triggerEvent(QuestTrigger condType, int... params) { triggerEvent(condType, "", params); } @@ -312,6 +317,7 @@ public class QuestManager extends BasePlayerManager { .filter(i -> i.getScene() == sceneId) .toList(); } + public void loadFromDatabase() { List quests = DatabaseHelper.getAllQuests(getPlayer()); diff --git a/src/main/java/emu/grasscutter/game/quest/QuestSystem.java b/src/main/java/emu/grasscutter/game/quest/QuestSystem.java index 7c90d89b8..6869bcc0e 100644 --- a/src/main/java/emu/grasscutter/game/quest/QuestSystem.java +++ b/src/main/java/emu/grasscutter/game/quest/QuestSystem.java @@ -1,19 +1,15 @@ package emu.grasscutter.game.quest; -import java.util.Set; - -import emu.grasscutter.data.excels.QuestData; +import emu.grasscutter.Grasscutter; +import emu.grasscutter.data.excels.QuestData.QuestCondition; +import emu.grasscutter.data.excels.QuestData.QuestExecParam; +import emu.grasscutter.game.quest.handlers.QuestBaseHandler; import emu.grasscutter.game.quest.handlers.QuestExecHandler; import emu.grasscutter.server.game.BaseGameSystem; import emu.grasscutter.server.game.GameServer; - -import org.reflections.Reflections; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.data.excels.QuestData.*; -import emu.grasscutter.game.quest.handlers.QuestBaseHandler; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.reflections.Reflections; @SuppressWarnings("unchecked") public class QuestSystem extends BaseGameSystem { diff --git a/src/main/java/emu/grasscutter/game/quest/QuestValue.java b/src/main/java/emu/grasscutter/game/quest/QuestValue.java index 42b868fc8..7a16e3dd0 100644 --- a/src/main/java/emu/grasscutter/game/quest/QuestValue.java +++ b/src/main/java/emu/grasscutter/game/quest/QuestValue.java @@ -1,11 +1,11 @@ package emu.grasscutter.game.quest; +import emu.grasscutter.game.quest.enums.QuestTrigger; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import emu.grasscutter.game.quest.enums.QuestTrigger; - -@Retention(RetentionPolicy.RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface QuestValue { - QuestTrigger value(); + QuestTrigger value(); } diff --git a/src/main/java/emu/grasscutter/game/quest/RewindData.java b/src/main/java/emu/grasscutter/game/quest/RewindData.java index 48267a771..1a0b0dcd1 100644 --- a/src/main/java/emu/grasscutter/game/quest/RewindData.java +++ b/src/main/java/emu/grasscutter/game/quest/RewindData.java @@ -4,6 +4,7 @@ import lombok.Data; import lombok.Getter; import java.util.List; + @Data public class RewindData { AvatarData avatar; @@ -11,7 +12,8 @@ public class RewindData { @Data public static class AvatarData { - @Getter private String pos; + @Getter + private String pos; } @Data @@ -25,4 +27,3 @@ public class RewindData { private String alias; } } - diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/BaseCondition.java b/src/main/java/emu/grasscutter/game/quest/conditions/BaseCondition.java index e3efe6ed6..751891784 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/BaseCondition.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/BaseCondition.java @@ -1,18 +1,18 @@ package emu.grasscutter.game.quest.conditions; -import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_CONTENT_NONE) public class BaseCondition extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { - // TODO Auto-generated method stub - return false; - } + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + // TODO Auto-generated method stub + return false; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionCompleteTalk.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionCompleteTalk.java index 6439fec7d..bc82ff7c7 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionCompleteTalk.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionCompleteTalk.java @@ -15,9 +15,9 @@ public class ConditionCompleteTalk extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { - GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(condition.getParam()[0]/100); + GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(condition.getParam()[0] / 100); if (checkMainQuest == null || GameData.getMainQuestDataMap().get(checkMainQuest.getParentQuestId()).getTalks() == null) { - Grasscutter.getLogger().debug("Warning: mainQuest {} hasn't been started yet, or has no talks", condition.getParam()[0]/100); + Grasscutter.getLogger().debug("Warning: mainQuest {} hasn't been started yet, or has no talks", condition.getParam()[0] / 100); return false; } MainQuestData.TalkData talkData = checkMainQuest.getTalks().get(Integer.valueOf(params[0])); diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionPlayerLevelEqualGreater.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionPlayerLevelEqualGreater.java index cb19e8878..7a97b91dc 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionPlayerLevelEqualGreater.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionPlayerLevelEqualGreater.java @@ -1,17 +1,17 @@ package emu.grasscutter.game.quest.conditions; -import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER) public class ConditionPlayerLevelEqualGreater extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { - return quest.getOwner().getLevel() >= params[0]; - } + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + return quest.getOwner().getLevel() >= params[0]; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarEqual.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarEqual.java index 9c136f093..74b903503 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarEqual.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarEqual.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; @@ -14,7 +13,7 @@ public class ConditionQuestGlobalVarEqual extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { Integer questGlobalVarValue = quest.getMainQuest().getQuestManager().getQuestGlobalVarValue(Integer.valueOf(params[0])); - Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0],questGlobalVarValue); + Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0], questGlobalVarValue); return questGlobalVarValue.intValue() == params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarGreater.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarGreater.java index 639c9b5c0..6f6200147 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarGreater.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarGreater.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; @@ -14,7 +13,7 @@ public class ConditionQuestGlobalVarGreater extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { Integer questGlobalVarValue = quest.getMainQuest().getQuestManager().getQuestGlobalVarValue(Integer.valueOf(params[0])); - Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0],questGlobalVarValue); + Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0], questGlobalVarValue); return questGlobalVarValue.intValue() > params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarLess.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarLess.java index 148678712..9885692b1 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarLess.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestGlobalVarLess.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; @@ -14,7 +13,7 @@ public class ConditionQuestGlobalVarLess extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { Integer questGlobalVarValue = quest.getMainQuest().getQuestManager().getQuestGlobalVarValue(Integer.valueOf(params[0])); - Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0],questGlobalVarValue); + Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0], questGlobalVarValue); return questGlobalVarValue.intValue() < params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarEqual.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarEqual.java index 90e7b0e27..039506ff3 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarEqual.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarEqual.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; @@ -14,7 +13,7 @@ public class ConditionQuestVarEqual extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { int questVarValue = quest.getMainQuest().getQuestVars()[params[0]]; - Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue); + Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue); return questVarValue == params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarGreater.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarGreater.java index f4a55a58c..7717cb80a 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarGreater.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarGreater.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; @@ -14,7 +13,7 @@ public class ConditionQuestVarGreater extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { int questVarValue = quest.getMainQuest().getQuestVars()[params[0]]; - Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue); + Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue); return questVarValue > params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarLess.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarLess.java index 5993d586a..293c9bfe3 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarLess.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionQuestVarLess.java @@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; @@ -14,7 +13,7 @@ public class ConditionQuestVarLess extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { int questVarValue = quest.getMainQuest().getQuestVars()[params[0]]; - Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue); + Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue); return questVarValue < params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateEqual.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateEqual.java index e1ce7fdb4..d0b96bb7f 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateEqual.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateEqual.java @@ -1,9 +1,8 @@ package emu.grasscutter.game.quest.conditions; -import emu.grasscutter.Grasscutter; -import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; diff --git a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateNotEqual.java b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateNotEqual.java index 21c7f5c99..a5a7445d9 100644 --- a/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateNotEqual.java +++ b/src/main/java/emu/grasscutter/game/quest/conditions/ConditionStateNotEqual.java @@ -1,6 +1,5 @@ package emu.grasscutter.game.quest.conditions; -import emu.grasscutter.Grasscutter; import emu.grasscutter.data.excels.QuestData; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; diff --git a/src/main/java/emu/grasscutter/game/quest/content/BaseContent.java b/src/main/java/emu/grasscutter/game/quest/content/BaseContent.java index f0db20a51..6d6715d69 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/BaseContent.java +++ b/src/main/java/emu/grasscutter/game/quest/content/BaseContent.java @@ -1,18 +1,18 @@ package emu.grasscutter.game.quest.content; -import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_CONTENT_NONE) public class BaseContent extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { - // TODO Auto-generated method stub - return false; - } + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + // TODO Auto-generated method stub + return false; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteAnyTalk.java b/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteAnyTalk.java index c31af3c37..35cc5a0bc 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteAnyTalk.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteAnyTalk.java @@ -13,8 +13,10 @@ public class ContentCompleteAnyTalk extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { - GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0]/100); - if (checkMainQuest == null) {return false;} + GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0] / 100); + if (checkMainQuest == null) { + return false; + } MainQuestData.TalkData talkData = checkMainQuest.getTalks().get(Integer.valueOf(paramStr)); return talkData == null || condition.getParamStr().contains(paramStr) || checkMainQuest.getChildQuestById(params[0]) != null; } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteTalk.java b/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteTalk.java index 8b43c6b3c..aa57476c2 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteTalk.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentCompleteTalk.java @@ -1,10 +1,10 @@ package emu.grasscutter.game.quest.content; import emu.grasscutter.data.binout.MainQuestData; +import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; -import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentEnterDungeon.java b/src/main/java/emu/grasscutter/game/quest/content/ContentEnterDungeon.java index 33981f8a3..646a558af 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentEnterDungeon.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentEnterDungeon.java @@ -1,8 +1,8 @@ package emu.grasscutter.game.quest.content; -import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentEnterRoom.java b/src/main/java/emu/grasscutter/game/quest/content/ContentEnterRoom.java index e140eb3cb..1b6590472 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentEnterRoom.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentEnterRoom.java @@ -9,9 +9,9 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_CONTENT_ENTER_ROOM) public class ContentEnterRoom extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { - return condition.getParam()[0] == params[0]; - } + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + return condition.getParam()[0] == params[0]; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentFinishPlot.java b/src/main/java/emu/grasscutter/game/quest/content/ContentFinishPlot.java index e11b130b4..7d34fb2b5 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentFinishPlot.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentFinishPlot.java @@ -1,10 +1,9 @@ package emu.grasscutter.game.quest.content; import emu.grasscutter.data.binout.MainQuestData; -import emu.grasscutter.game.quest.GameMainQuest; -import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestBaseHandler; diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentGameTimeTick.java b/src/main/java/emu/grasscutter/game/quest/content/ContentGameTimeTick.java index f28f5718c..5c9807557 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentGameTimeTick.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentGameTimeTick.java @@ -9,15 +9,15 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_CONTENT_GAME_TIME_TICK) public class ContentGameTimeTick extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { var range = condition.getParamStr().split(","); var min = Math.min(Integer.parseInt(range[0]), Integer.parseInt(range[1])); var max = Math.max(Integer.parseInt(range[0]), Integer.parseInt(range[1])); // params[0] is clock, params[1] is day - return params[0] >= min && params[0] <= max && + return params[0] >= min && params[0] <= max && params[1] >= condition.getParam()[0]; - } + } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentInteractGadget.java b/src/main/java/emu/grasscutter/game/quest/content/ContentInteractGadget.java index 975a7f224..1617478b9 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentInteractGadget.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentInteractGadget.java @@ -9,9 +9,9 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET) public class ContentInteractGadget extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { - return params[0] == condition.getParam()[0]; - } + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + return params[0] == condition.getParam()[0]; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentLeaveScene.java b/src/main/java/emu/grasscutter/game/quest/content/ContentLeaveScene.java index dc3b9698c..9542c9517 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentLeaveScene.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentLeaveScene.java @@ -1,7 +1,6 @@ package emu.grasscutter.game.quest.content; import emu.grasscutter.data.excels.QuestData.QuestCondition; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentLuaNotify.java b/src/main/java/emu/grasscutter/game/quest/content/ContentLuaNotify.java index f8ca181da..5c2114275 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentLuaNotify.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentLuaNotify.java @@ -9,9 +9,9 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler; @QuestValue(QuestTrigger.QUEST_CONTENT_LUA_NOTIFY) public class ContentLuaNotify extends QuestBaseHandler { - @Override - public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { - return condition.getParamStr().equals(paramStr); - } + @Override + public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { + return condition.getParamStr().equals(paramStr); + } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentNotFinishPlot.java b/src/main/java/emu/grasscutter/game/quest/content/ContentNotFinishPlot.java index f48c4945e..b8234ac68 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentNotFinishPlot.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentNotFinishPlot.java @@ -13,8 +13,10 @@ public class ContentNotFinishPlot extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { - GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0]/100); - if (checkMainQuest == null) {return false;} + GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0] / 100); + if (checkMainQuest == null) { + return false; + } MainQuestData.TalkData talkData = checkMainQuest.getTalks().get(Integer.valueOf(params[0])); return talkData == null; } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestStateEqual.java b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestStateEqual.java index dd8a90f35..e3795399d 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestStateEqual.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestStateEqual.java @@ -12,7 +12,9 @@ public class ContentQuestStateEqual extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) { GameQuest checkQuest = quest.getOwner().getQuestManager().getQuestById(condition.getParam()[0]); - if (checkQuest == null) {return false;} + if (checkQuest == null) { + return false; + } return checkQuest.getState().getValue() == params[1]; } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarEqual.java b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarEqual.java index f56de74ab..733fd0fac 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarEqual.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarEqual.java @@ -13,7 +13,7 @@ public class ContentQuestVarEqual extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { int questVarValue = quest.getMainQuest().getQuestVars()[params[0]]; - Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue); + Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue); return questVarValue == params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarGreater.java b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarGreater.java index 7eafa3bfa..1e59b640a 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarGreater.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarGreater.java @@ -13,7 +13,7 @@ public class ContentQuestVarGreater extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { int questVarValue = quest.getMainQuest().getQuestVars()[params[0]]; - Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue); + Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue); return questVarValue > params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarLess.java b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarLess.java index 6994eeb99..232ff8934 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarLess.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentQuestVarLess.java @@ -13,7 +13,7 @@ public class ContentQuestVarLess extends QuestBaseHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) { int questVarValue = quest.getMainQuest().getQuestVars()[params[0]]; - Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue); + Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue); return questVarValue < params[1]; } } diff --git a/src/main/java/emu/grasscutter/game/quest/content/ContentTriggerFire.java b/src/main/java/emu/grasscutter/game/quest/content/ContentTriggerFire.java index 99c52f5d9..773583c0c 100644 --- a/src/main/java/emu/grasscutter/game/quest/content/ContentTriggerFire.java +++ b/src/main/java/emu/grasscutter/game/quest/content/ContentTriggerFire.java @@ -1,9 +1,7 @@ package emu.grasscutter.game.quest.content; import emu.grasscutter.Grasscutter; -import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.data.excels.TriggerExcelConfigData; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; diff --git a/src/main/java/emu/grasscutter/game/quest/enums/LogicType.java b/src/main/java/emu/grasscutter/game/quest/enums/LogicType.java index 12677ee0d..a89e2e557 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/LogicType.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/LogicType.java @@ -3,41 +3,41 @@ package emu.grasscutter.game.quest.enums; import java.util.Arrays; public enum LogicType { - LOGIC_NONE (0), - LOGIC_AND (1), - LOGIC_OR (2), - LOGIC_NOT (3), - LOGIC_A_AND_ETCOR (4), - LOGIC_A_AND_B_AND_ETCOR (5), - LOGIC_A_OR_ETCAND (6), - LOGIC_A_OR_B_OR_ETCAND (7), - LOGIC_A_AND_B_OR_ETCAND (8); - - private final int value; - - LogicType(int id) { - this.value = id; - } + LOGIC_NONE(0), + LOGIC_AND(1), + LOGIC_OR(2), + LOGIC_NOT(3), + LOGIC_A_AND_ETCOR(4), + LOGIC_A_AND_B_AND_ETCOR(5), + LOGIC_A_OR_ETCAND(6), + LOGIC_A_OR_B_OR_ETCAND(7), + LOGIC_A_AND_B_OR_ETCAND(8); - public int getValue() { - return value; - } - - public static boolean calculate(LogicType logicType, int[] progress) { - if (logicType == null) { - return progress[0] == 1; - } - - switch (logicType) { - case LOGIC_AND -> { - return Arrays.stream(progress).allMatch(i -> i == 1); - } - case LOGIC_OR -> { - return Arrays.stream(progress).anyMatch(i -> i == 1); - } - default -> { - return Arrays.stream(progress).anyMatch(i -> i == 1); - } - } - } + private final int value; + + LogicType(int id) { + this.value = id; + } + + public static boolean calculate(LogicType logicType, int[] progress) { + if (logicType == null) { + return progress[0] == 1; + } + + switch (logicType) { + case LOGIC_AND -> { + return Arrays.stream(progress).allMatch(i -> i == 1); + } + case LOGIC_OR -> { + return Arrays.stream(progress).anyMatch(i -> i == 1); + } + default -> { + return Arrays.stream(progress).anyMatch(i -> i == 1); + } + } + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/enums/ParentQuestState.java b/src/main/java/emu/grasscutter/game/quest/enums/ParentQuestState.java index 6c7805f8d..a89b09f3a 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/ParentQuestState.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/ParentQuestState.java @@ -1,18 +1,18 @@ package emu.grasscutter.game.quest.enums; public enum ParentQuestState { - PARENT_QUEST_STATE_NONE (0), - PARENT_QUEST_STATE_FINISHED (1), - PARENT_QUEST_STATE_FAILED (2), - PARENT_QUEST_STATE_CANCELED (3); - - private final int value; - - ParentQuestState(int id) { - this.value = id; - } + PARENT_QUEST_STATE_NONE(0), + PARENT_QUEST_STATE_FINISHED(1), + PARENT_QUEST_STATE_FAILED(2), + PARENT_QUEST_STATE_CANCELED(3); - public int getValue() { - return value; - } + private final int value; + + ParentQuestState(int id) { + this.value = id; + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/enums/QuestGuideType.java b/src/main/java/emu/grasscutter/game/quest/enums/QuestGuideType.java index 45915c6b7..90cd6ea2d 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/QuestGuideType.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/QuestGuideType.java @@ -1,17 +1,17 @@ package emu.grasscutter.game.quest.enums; public enum QuestGuideType { - QUEST_GUIDE_NONE (0), - QUEST_GUIDE_LOCATION (1), - QUEST_GUIDE_NPC (2); - - private final int value; - - QuestGuideType(int id) { - this.value = id; - } + QUEST_GUIDE_NONE(0), + QUEST_GUIDE_LOCATION(1), + QUEST_GUIDE_NPC(2); - public int getValue() { - return value; - } + private final int value; + + QuestGuideType(int id) { + this.value = id; + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/enums/QuestShowType.java b/src/main/java/emu/grasscutter/game/quest/enums/QuestShowType.java index 014c1ee06..2ea9c61f4 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/QuestShowType.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/QuestShowType.java @@ -1,16 +1,16 @@ package emu.grasscutter.game.quest.enums; public enum QuestShowType { - QUEST_SHOW (0), - QUEST_HIDDEN (1); - - private final int value; - - QuestShowType(int id) { - this.value = id; - } + QUEST_SHOW(0), + QUEST_HIDDEN(1); - public int getValue() { - return value; - } + private final int value; + + QuestShowType(int id) { + this.value = id; + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/enums/QuestState.java b/src/main/java/emu/grasscutter/game/quest/enums/QuestState.java index 5e4db5290..71ad52130 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/QuestState.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/QuestState.java @@ -1,14 +1,14 @@ package emu.grasscutter.game.quest.enums; public enum QuestState { - QUEST_STATE_NONE (0), - QUEST_STATE_UNSTARTED (1), - QUEST_STATE_UNFINISHED (2), - QUEST_STATE_FINISHED (3), - QUEST_STATE_FAILED (4), + QUEST_STATE_NONE(0), + QUEST_STATE_UNSTARTED(1), + QUEST_STATE_UNFINISHED(2), + QUEST_STATE_FINISHED(3), + QUEST_STATE_FAILED(4), // Used by lua - NONE (0), + NONE(0), UNSTARTED(1), UNFINISHED(2), FINISHED(3), diff --git a/src/main/java/emu/grasscutter/game/quest/enums/QuestTrigger.java b/src/main/java/emu/grasscutter/game/quest/enums/QuestTrigger.java index c9c3eb880..27a044712 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/QuestTrigger.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/QuestTrigger.java @@ -8,237 +8,227 @@ import java.util.Map; import java.util.stream.Stream; public enum QuestTrigger { - QUEST_COND_NONE (0), - QUEST_COND_STATE_EQUAL (1), - QUEST_COND_STATE_NOT_EQUAL (2), - QUEST_COND_PACK_HAVE_ITEM (3), - QUEST_COND_AVATAR_ELEMENT_EQUAL (4), - QUEST_COND_AVATAR_ELEMENT_NOT_EQUAL (5), - QUEST_COND_AVATAR_CAN_CHANGE_ELEMENT (6), - QUEST_COND_CITY_LEVEL_EQUAL_GREATER (7), - QUEST_COND_ITEM_NUM_LESS_THAN (8), - QUEST_COND_DAILY_TASK_START (9), - QUEST_COND_OPEN_STATE_EQUAL (10), - QUEST_COND_DAILY_TASK_OPEN (11), - QUEST_COND_DAILY_TASK_REWARD_CAN_GET (12), - QUEST_COND_DAILY_TASK_REWARD_RECEIVED (13), - QUEST_COND_PLAYER_LEVEL_REWARD_CAN_GET (14), - QUEST_COND_EXPLORATION_REWARD_CAN_GET (15), - QUEST_COND_IS_WORLD_OWNER (16), - QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER (17), - QUEST_COND_SCENE_AREA_UNLOCKED (18), - QUEST_COND_ITEM_GIVING_ACTIVED (19), - QUEST_COND_ITEM_GIVING_FINISHED (20), - QUEST_COND_IS_DAYTIME (21), - QUEST_COND_CURRENT_AVATAR (22), - QUEST_COND_CURRENT_AREA (23), - QUEST_COND_QUEST_VAR_EQUAL (24), - QUEST_COND_QUEST_VAR_GREATER (25), - QUEST_COND_QUEST_VAR_LESS (26), - QUEST_COND_FORGE_HAVE_FINISH (27), - QUEST_COND_DAILY_TASK_IN_PROGRESS (28), - QUEST_COND_DAILY_TASK_FINISHED (29), - QUEST_COND_ACTIVITY_COND (30), - QUEST_COND_ACTIVITY_OPEN (31), - QUEST_COND_DAILY_TASK_VAR_GT (32), - QUEST_COND_DAILY_TASK_VAR_EQ (33), - QUEST_COND_DAILY_TASK_VAR_LT (34), - QUEST_COND_BARGAIN_ITEM_GT (35), - QUEST_COND_BARGAIN_ITEM_EQ (36), - QUEST_COND_BARGAIN_ITEM_LT (37), - QUEST_COND_COMPLETE_TALK (38), - QUEST_COND_NOT_HAVE_BLOSSOM_TALK (39), - QUEST_COND_IS_CUR_BLOSSOM_TALK (40), - QUEST_COND_QUEST_NOT_RECEIVE (41), - QUEST_COND_QUEST_SERVER_COND_VALID (42), - QUEST_COND_ACTIVITY_CLIENT_COND (43), - QUEST_COND_QUEST_GLOBAL_VAR_EQUAL (44), - QUEST_COND_QUEST_GLOBAL_VAR_GREATER (45), - QUEST_COND_QUEST_GLOBAL_VAR_LESS (46), - QUEST_COND_PERSONAL_LINE_UNLOCK (47), - QUEST_COND_CITY_REPUTATION_REQUEST (48), - QUEST_COND_MAIN_COOP_START (49), - QUEST_COND_MAIN_COOP_ENTER_SAVE_POINT (50), - QUEST_COND_CITY_REPUTATION_LEVEL (51), - QUEST_COND_CITY_REPUTATION_UNLOCK (52), - QUEST_COND_LUA_NOTIFY (53), - QUEST_COND_CUR_CLIMATE (54), - QUEST_COND_ACTIVITY_END (55), - QUEST_COND_COOP_POINT_RUNNING (56), - QUEST_COND_GADGET_TALK_STATE_EQUAL (57), - QUEST_COND_AVATAR_FETTER_GT (58), - QUEST_COND_AVATAR_FETTER_EQ (59), - QUEST_COND_AVATAR_FETTER_LT (60), - QUEST_COND_NEW_HOMEWORLD_MOUDLE_UNLOCK (61), - QUEST_COND_NEW_HOMEWORLD_LEVEL_REWARD (62), - QUEST_COND_NEW_HOMEWORLD_MAKE_FINISH (63), - QUEST_COND_HOMEWORLD_NPC_EVENT (64), - QUEST_COND_TIME_VAR_GT_EQ (65), - QUEST_COND_TIME_VAR_PASS_DAY (66), - QUEST_COND_HOMEWORLD_NPC_NEW_TALK (67), - QUEST_COND_PLAYER_CHOOSE_MALE (68), - QUEST_COND_HISTORY_GOT_ANY_ITEM (69), - QUEST_COND_LEARNED_RECIPE (70), - QUEST_COND_LUNARITE_REGION_UNLOCKED (71), - QUEST_COND_LUNARITE_HAS_REGION_HINT_COUNT (72), - QUEST_COND_LUNARITE_COLLECT_FINISH (73), - QUEST_COND_LUNARITE_MARK_ALL_FINISH (74), - QUEST_COND_NEW_HOMEWORLD_SHOP_ITEM (75), - QUEST_COND_SCENE_POINT_UNLOCK (76), - QUEST_COND_SCENE_LEVEL_TAG_EQ (77), + QUEST_COND_NONE(0), + QUEST_COND_STATE_EQUAL(1), + QUEST_COND_STATE_NOT_EQUAL(2), + QUEST_COND_PACK_HAVE_ITEM(3), + QUEST_COND_AVATAR_ELEMENT_EQUAL(4), + QUEST_COND_AVATAR_ELEMENT_NOT_EQUAL(5), + QUEST_COND_AVATAR_CAN_CHANGE_ELEMENT(6), + QUEST_COND_CITY_LEVEL_EQUAL_GREATER(7), + QUEST_COND_ITEM_NUM_LESS_THAN(8), + QUEST_COND_DAILY_TASK_START(9), + QUEST_COND_OPEN_STATE_EQUAL(10), + QUEST_COND_DAILY_TASK_OPEN(11), + QUEST_COND_DAILY_TASK_REWARD_CAN_GET(12), + QUEST_COND_DAILY_TASK_REWARD_RECEIVED(13), + QUEST_COND_PLAYER_LEVEL_REWARD_CAN_GET(14), + QUEST_COND_EXPLORATION_REWARD_CAN_GET(15), + QUEST_COND_IS_WORLD_OWNER(16), + QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER(17), + QUEST_COND_SCENE_AREA_UNLOCKED(18), + QUEST_COND_ITEM_GIVING_ACTIVED(19), + QUEST_COND_ITEM_GIVING_FINISHED(20), + QUEST_COND_IS_DAYTIME(21), + QUEST_COND_CURRENT_AVATAR(22), + QUEST_COND_CURRENT_AREA(23), + QUEST_COND_QUEST_VAR_EQUAL(24), + QUEST_COND_QUEST_VAR_GREATER(25), + QUEST_COND_QUEST_VAR_LESS(26), + QUEST_COND_FORGE_HAVE_FINISH(27), + QUEST_COND_DAILY_TASK_IN_PROGRESS(28), + QUEST_COND_DAILY_TASK_FINISHED(29), + QUEST_COND_ACTIVITY_COND(30), + QUEST_COND_ACTIVITY_OPEN(31), + QUEST_COND_DAILY_TASK_VAR_GT(32), + QUEST_COND_DAILY_TASK_VAR_EQ(33), + QUEST_COND_DAILY_TASK_VAR_LT(34), + QUEST_COND_BARGAIN_ITEM_GT(35), + QUEST_COND_BARGAIN_ITEM_EQ(36), + QUEST_COND_BARGAIN_ITEM_LT(37), + QUEST_COND_COMPLETE_TALK(38), + QUEST_COND_NOT_HAVE_BLOSSOM_TALK(39), + QUEST_COND_IS_CUR_BLOSSOM_TALK(40), + QUEST_COND_QUEST_NOT_RECEIVE(41), + QUEST_COND_QUEST_SERVER_COND_VALID(42), + QUEST_COND_ACTIVITY_CLIENT_COND(43), + QUEST_COND_QUEST_GLOBAL_VAR_EQUAL(44), + QUEST_COND_QUEST_GLOBAL_VAR_GREATER(45), + QUEST_COND_QUEST_GLOBAL_VAR_LESS(46), + QUEST_COND_PERSONAL_LINE_UNLOCK(47), + QUEST_COND_CITY_REPUTATION_REQUEST(48), + QUEST_COND_MAIN_COOP_START(49), + QUEST_COND_MAIN_COOP_ENTER_SAVE_POINT(50), + QUEST_COND_CITY_REPUTATION_LEVEL(51), + QUEST_COND_CITY_REPUTATION_UNLOCK(52), + QUEST_COND_LUA_NOTIFY(53), + QUEST_COND_CUR_CLIMATE(54), + QUEST_COND_ACTIVITY_END(55), + QUEST_COND_COOP_POINT_RUNNING(56), + QUEST_COND_GADGET_TALK_STATE_EQUAL(57), + QUEST_COND_AVATAR_FETTER_GT(58), + QUEST_COND_AVATAR_FETTER_EQ(59), + QUEST_COND_AVATAR_FETTER_LT(60), + QUEST_COND_NEW_HOMEWORLD_MOUDLE_UNLOCK(61), + QUEST_COND_NEW_HOMEWORLD_LEVEL_REWARD(62), + QUEST_COND_NEW_HOMEWORLD_MAKE_FINISH(63), + QUEST_COND_HOMEWORLD_NPC_EVENT(64), + QUEST_COND_TIME_VAR_GT_EQ(65), + QUEST_COND_TIME_VAR_PASS_DAY(66), + QUEST_COND_HOMEWORLD_NPC_NEW_TALK(67), + QUEST_COND_PLAYER_CHOOSE_MALE(68), + QUEST_COND_HISTORY_GOT_ANY_ITEM(69), + QUEST_COND_LEARNED_RECIPE(70), + QUEST_COND_LUNARITE_REGION_UNLOCKED(71), + QUEST_COND_LUNARITE_HAS_REGION_HINT_COUNT(72), + QUEST_COND_LUNARITE_COLLECT_FINISH(73), + QUEST_COND_LUNARITE_MARK_ALL_FINISH(74), + QUEST_COND_NEW_HOMEWORLD_SHOP_ITEM(75), + QUEST_COND_SCENE_POINT_UNLOCK(76), + QUEST_COND_SCENE_LEVEL_TAG_EQ(77), - QUEST_CONTENT_NONE (0), - QUEST_CONTENT_KILL_MONSTER (1), - QUEST_CONTENT_COMPLETE_TALK (2), - QUEST_CONTENT_MONSTER_DIE (3), - QUEST_CONTENT_FINISH_PLOT (4), - QUEST_CONTENT_OBTAIN_ITEM (5), - QUEST_CONTENT_TRIGGER_FIRE (6), - QUEST_CONTENT_CLEAR_GROUP_MONSTER (7), - QUEST_CONTENT_NOT_FINISH_PLOT (8), - QUEST_CONTENT_ENTER_DUNGEON (9), - QUEST_CONTENT_ENTER_MY_WORLD (10), - QUEST_CONTENT_FINISH_DUNGEON (11), - QUEST_CONTENT_DESTROY_GADGET (12), - QUEST_CONTENT_OBTAIN_MATERIAL_WITH_SUBTYPE (13), - QUEST_CONTENT_NICK_NAME (14), - QUEST_CONTENT_WORKTOP_SELECT (15), - QUEST_CONTENT_SEAL_BATTLE_RESULT (16), - QUEST_CONTENT_ENTER_ROOM (17), - QUEST_CONTENT_GAME_TIME_TICK (18), - QUEST_CONTENT_FAIL_DUNGEON (19), - QUEST_CONTENT_LUA_NOTIFY (20), - QUEST_CONTENT_TEAM_DEAD (21), - QUEST_CONTENT_COMPLETE_ANY_TALK (22), - QUEST_CONTENT_UNLOCK_TRANS_POINT (23), - QUEST_CONTENT_ADD_QUEST_PROGRESS (24), - QUEST_CONTENT_INTERACT_GADGET (25), - QUEST_CONTENT_DAILY_TASK_COMP_FINISH (26), - QUEST_CONTENT_FINISH_ITEM_GIVING (27), - QUEST_CONTENT_SKILL (107), - QUEST_CONTENT_CITY_LEVEL_UP (109), - QUEST_CONTENT_PATTERN_GROUP_CLEAR_MONSTER (110), - QUEST_CONTENT_ITEM_LESS_THAN (111), - QUEST_CONTENT_PLAYER_LEVEL_UP (112), - QUEST_CONTENT_DUNGEON_OPEN_STATUE (113), - QUEST_CONTENT_UNLOCK_AREA (114), - QUEST_CONTENT_OPEN_CHEST_WITH_GADGET_ID (115), - QUEST_CONTENT_UNLOCK_TRANS_POINT_WITH_TYPE (116), - QUEST_CONTENT_FINISH_DAILY_DUNGEON (117), - QUEST_CONTENT_FINISH_WEEKLY_DUNGEON (118), - QUEST_CONTENT_QUEST_VAR_EQUAL (119), - QUEST_CONTENT_QUEST_VAR_GREATER (120), - QUEST_CONTENT_QUEST_VAR_LESS (121), - QUEST_CONTENT_OBTAIN_VARIOUS_ITEM (122), - QUEST_CONTENT_FINISH_TOWER_LEVEL (123), - QUEST_CONTENT_BARGAIN_SUCC (124), - QUEST_CONTENT_BARGAIN_FAIL (125), - QUEST_CONTENT_ITEM_LESS_THAN_BARGAIN (126), - QUEST_CONTENT_ACTIVITY_TRIGGER_FAILED (127), - QUEST_CONTENT_MAIN_COOP_ENTER_SAVE_POINT (128), - QUEST_CONTENT_ANY_MANUAL_TRANSPORT (129), - QUEST_CONTENT_USE_ITEM (130), - QUEST_CONTENT_MAIN_COOP_ENTER_ANY_SAVE_POINT (131), - QUEST_CONTENT_ENTER_MY_HOME_WORLD (132), - QUEST_CONTENT_ENTER_MY_WORLD_SCENE (133), - QUEST_CONTENT_TIME_VAR_GT_EQ (134), - QUEST_CONTENT_TIME_VAR_PASS_DAY (135), - QUEST_CONTENT_QUEST_STATE_EQUAL (136), - QUEST_CONTENT_QUEST_STATE_NOT_EQUAL (137), - QUEST_CONTENT_UNLOCKED_RECIPE (138), - QUEST_CONTENT_NOT_UNLOCKED_RECIPE (139), - QUEST_CONTENT_FISHING_SUCC (140), - QUEST_CONTENT_ENTER_ROGUE_DUNGEON (141), - QUEST_CONTENT_USE_WIDGET (142), - QUEST_CONTENT_CAPTURE_SUCC (143), - QUEST_CONTENT_CAPTURE_USE_CAPTURETAG_LIST (144), - QUEST_CONTENT_CAPTURE_USE_MATERIAL_LIST (145), - QUEST_CONTENT_ENTER_VEHICLE (147), - QUEST_CONTENT_SCENE_LEVEL_TAG_EQ (148), - QUEST_CONTENT_LEAVE_SCENE (149), - QUEST_CONTENT_LEAVE_SCENE_RANGE (150), - QUEST_CONTENT_IRODORI_FINISH_FLOWER_COMBINATION (151), - QUEST_CONTENT_IRODORI_POETRY_REACH_MIN_PROGRESS (152), - QUEST_CONTENT_IRODORI_POETRY_FINISH_FILL_POETRY (153), + QUEST_CONTENT_NONE(0), + QUEST_CONTENT_KILL_MONSTER(1), + QUEST_CONTENT_COMPLETE_TALK(2), + QUEST_CONTENT_MONSTER_DIE(3), + QUEST_CONTENT_FINISH_PLOT(4), + QUEST_CONTENT_OBTAIN_ITEM(5), + QUEST_CONTENT_TRIGGER_FIRE(6), + QUEST_CONTENT_CLEAR_GROUP_MONSTER(7), + QUEST_CONTENT_NOT_FINISH_PLOT(8), + QUEST_CONTENT_ENTER_DUNGEON(9), + QUEST_CONTENT_ENTER_MY_WORLD(10), + QUEST_CONTENT_FINISH_DUNGEON(11), + QUEST_CONTENT_DESTROY_GADGET(12), + QUEST_CONTENT_OBTAIN_MATERIAL_WITH_SUBTYPE(13), + QUEST_CONTENT_NICK_NAME(14), + QUEST_CONTENT_WORKTOP_SELECT(15), + QUEST_CONTENT_SEAL_BATTLE_RESULT(16), + QUEST_CONTENT_ENTER_ROOM(17), + QUEST_CONTENT_GAME_TIME_TICK(18), + QUEST_CONTENT_FAIL_DUNGEON(19), + QUEST_CONTENT_LUA_NOTIFY(20), + QUEST_CONTENT_TEAM_DEAD(21), + QUEST_CONTENT_COMPLETE_ANY_TALK(22), + QUEST_CONTENT_UNLOCK_TRANS_POINT(23), + QUEST_CONTENT_ADD_QUEST_PROGRESS(24), + QUEST_CONTENT_INTERACT_GADGET(25), + QUEST_CONTENT_DAILY_TASK_COMP_FINISH(26), + QUEST_CONTENT_FINISH_ITEM_GIVING(27), + QUEST_CONTENT_SKILL(107), + QUEST_CONTENT_CITY_LEVEL_UP(109), + QUEST_CONTENT_PATTERN_GROUP_CLEAR_MONSTER(110), + QUEST_CONTENT_ITEM_LESS_THAN(111), + QUEST_CONTENT_PLAYER_LEVEL_UP(112), + QUEST_CONTENT_DUNGEON_OPEN_STATUE(113), + QUEST_CONTENT_UNLOCK_AREA(114), + QUEST_CONTENT_OPEN_CHEST_WITH_GADGET_ID(115), + QUEST_CONTENT_UNLOCK_TRANS_POINT_WITH_TYPE(116), + QUEST_CONTENT_FINISH_DAILY_DUNGEON(117), + QUEST_CONTENT_FINISH_WEEKLY_DUNGEON(118), + QUEST_CONTENT_QUEST_VAR_EQUAL(119), + QUEST_CONTENT_QUEST_VAR_GREATER(120), + QUEST_CONTENT_QUEST_VAR_LESS(121), + QUEST_CONTENT_OBTAIN_VARIOUS_ITEM(122), + QUEST_CONTENT_FINISH_TOWER_LEVEL(123), + QUEST_CONTENT_BARGAIN_SUCC(124), + QUEST_CONTENT_BARGAIN_FAIL(125), + QUEST_CONTENT_ITEM_LESS_THAN_BARGAIN(126), + QUEST_CONTENT_ACTIVITY_TRIGGER_FAILED(127), + QUEST_CONTENT_MAIN_COOP_ENTER_SAVE_POINT(128), + QUEST_CONTENT_ANY_MANUAL_TRANSPORT(129), + QUEST_CONTENT_USE_ITEM(130), + QUEST_CONTENT_MAIN_COOP_ENTER_ANY_SAVE_POINT(131), + QUEST_CONTENT_ENTER_MY_HOME_WORLD(132), + QUEST_CONTENT_ENTER_MY_WORLD_SCENE(133), + QUEST_CONTENT_TIME_VAR_GT_EQ(134), + QUEST_CONTENT_TIME_VAR_PASS_DAY(135), + QUEST_CONTENT_QUEST_STATE_EQUAL(136), + QUEST_CONTENT_QUEST_STATE_NOT_EQUAL(137), + QUEST_CONTENT_UNLOCKED_RECIPE(138), + QUEST_CONTENT_NOT_UNLOCKED_RECIPE(139), + QUEST_CONTENT_FISHING_SUCC(140), + QUEST_CONTENT_ENTER_ROGUE_DUNGEON(141), + QUEST_CONTENT_USE_WIDGET(142), + QUEST_CONTENT_CAPTURE_SUCC(143), + QUEST_CONTENT_CAPTURE_USE_CAPTURETAG_LIST(144), + QUEST_CONTENT_CAPTURE_USE_MATERIAL_LIST(145), + QUEST_CONTENT_ENTER_VEHICLE(147), + QUEST_CONTENT_SCENE_LEVEL_TAG_EQ(148), + QUEST_CONTENT_LEAVE_SCENE(149), + QUEST_CONTENT_LEAVE_SCENE_RANGE(150), + QUEST_CONTENT_IRODORI_FINISH_FLOWER_COMBINATION(151), + QUEST_CONTENT_IRODORI_POETRY_REACH_MIN_PROGRESS(152), + QUEST_CONTENT_IRODORI_POETRY_FINISH_FILL_POETRY(153), - QUEST_EXEC_NONE (0), - QUEST_EXEC_DEL_PACK_ITEM (1), - QUEST_EXEC_UNLOCK_POINT (2), - QUEST_EXEC_UNLOCK_AREA (3), - QUEST_EXEC_UNLOCK_FORCE (4), - QUEST_EXEC_LOCK_FORCE (5), - QUEST_EXEC_CHANGE_AVATAR_ELEMET (6), - QUEST_EXEC_REFRESH_GROUP_MONSTER (7), - QUEST_EXEC_SET_IS_FLYABLE (8), - QUEST_EXEC_SET_IS_WEATHER_LOCKED (9), - QUEST_EXEC_SET_IS_GAME_TIME_LOCKED (10), - QUEST_EXEC_SET_IS_TRANSFERABLE (11), - QUEST_EXEC_GRANT_TRIAL_AVATAR (12), - QUEST_EXEC_OPEN_BORED (13), - QUEST_EXEC_ROLLBACK_QUEST (14), - QUEST_EXEC_NOTIFY_GROUP_LUA (15), - QUEST_EXEC_SET_OPEN_STATE (16), - QUEST_EXEC_LOCK_POINT (17), - QUEST_EXEC_DEL_PACK_ITEM_BATCH (18), - QUEST_EXEC_REFRESH_GROUP_SUITE (19), - QUEST_EXEC_REMOVE_TRIAL_AVATAR (20), - QUEST_EXEC_SET_GAME_TIME (21), - QUEST_EXEC_SET_WEATHER_GADGET (22), - QUEST_EXEC_ADD_QUEST_PROGRESS (23), - QUEST_EXEC_NOTIFY_DAILY_TASK (24), - QUEST_EXEC_CREATE_PATTERN_GROUP (25), - QUEST_EXEC_REMOVE_PATTERN_GROUP (26), - QUEST_EXEC_REFRESH_GROUP_SUITE_RANDOM (27), - QUEST_EXEC_ACTIVE_ITEM_GIVING (28), - QUEST_EXEC_DEL_ALL_SPECIFIC_PACK_ITEM (29), - QUEST_EXEC_ROLLBACK_PARENT_QUEST (30), - QUEST_EXEC_LOCK_AVATAR_TEAM (31), - QUEST_EXEC_UNLOCK_AVATAR_TEAM (32), - QUEST_EXEC_UPDATE_PARENT_QUEST_REWARD_INDEX (33), - QUEST_EXEC_SET_DAILY_TASK_VAR (34), - QUEST_EXEC_INC_DAILY_TASK_VAR (35), - QUEST_EXEC_DEC_DAILY_TASK_VAR (36), - QUEST_EXEC_ACTIVE_ACTIVITY_COND_STATE (37), - QUEST_EXEC_INACTIVE_ACTIVITY_COND_STATE (38), - QUEST_EXEC_ADD_CUR_AVATAR_ENERGY (39), - QUEST_EXEC_START_BARGAIN (41), - QUEST_EXEC_STOP_BARGAIN (42), - QUEST_EXEC_SET_QUEST_GLOBAL_VAR (43), - QUEST_EXEC_INC_QUEST_GLOBAL_VAR (44), - QUEST_EXEC_DEC_QUEST_GLOBAL_VAR (45), - QUEST_EXEC_REGISTER_DYNAMIC_GROUP (46), - QUEST_EXEC_UNREGISTER_DYNAMIC_GROUP (47), - QUEST_EXEC_SET_QUEST_VAR (48), - QUEST_EXEC_INC_QUEST_VAR (49), - QUEST_EXEC_DEC_QUEST_VAR (50), - QUEST_EXEC_RANDOM_QUEST_VAR (51), - QUEST_EXEC_ACTIVATE_SCANNING_PIC (52), - QUEST_EXEC_RELOAD_SCENE_TAG (53), - QUEST_EXEC_REGISTER_DYNAMIC_GROUP_ONLY (54), - QUEST_EXEC_CHANGE_SKILL_DEPOT (55), - QUEST_EXEC_ADD_SCENE_TAG (56), - QUEST_EXEC_DEL_SCENE_TAG (57), - QUEST_EXEC_INIT_TIME_VAR (58), - QUEST_EXEC_CLEAR_TIME_VAR (59), - QUEST_EXEC_MODIFY_CLIMATE_AREA (60), - QUEST_EXEC_GRANT_TRIAL_AVATAR_AND_LOCK_TEAM (61), - QUEST_EXEC_CHANGE_MAP_AREA_STATE (62), - QUEST_EXEC_DEACTIVE_ITEM_GIVING (63), - QUEST_EXEC_CHANGE_SCENE_LEVEL_TAG (64), - QUEST_EXEC_UNLOCK_PLAYER_WORLD_SCENE (65), - QUEST_EXEC_LOCK_PLAYER_WORLD_SCENE (66), - QUEST_EXEC_FAIL_MAINCOOP (67), - QUEST_EXEC_MODIFY_WEATHER_AREA (68); - - private final int value; - - QuestTrigger(int id) { - this.value = id; - } - - public int getValue() { - return value; - } + QUEST_EXEC_NONE(0), + QUEST_EXEC_DEL_PACK_ITEM(1), + QUEST_EXEC_UNLOCK_POINT(2), + QUEST_EXEC_UNLOCK_AREA(3), + QUEST_EXEC_UNLOCK_FORCE(4), + QUEST_EXEC_LOCK_FORCE(5), + QUEST_EXEC_CHANGE_AVATAR_ELEMET(6), + QUEST_EXEC_REFRESH_GROUP_MONSTER(7), + QUEST_EXEC_SET_IS_FLYABLE(8), + QUEST_EXEC_SET_IS_WEATHER_LOCKED(9), + QUEST_EXEC_SET_IS_GAME_TIME_LOCKED(10), + QUEST_EXEC_SET_IS_TRANSFERABLE(11), + QUEST_EXEC_GRANT_TRIAL_AVATAR(12), + QUEST_EXEC_OPEN_BORED(13), + QUEST_EXEC_ROLLBACK_QUEST(14), + QUEST_EXEC_NOTIFY_GROUP_LUA(15), + QUEST_EXEC_SET_OPEN_STATE(16), + QUEST_EXEC_LOCK_POINT(17), + QUEST_EXEC_DEL_PACK_ITEM_BATCH(18), + QUEST_EXEC_REFRESH_GROUP_SUITE(19), + QUEST_EXEC_REMOVE_TRIAL_AVATAR(20), + QUEST_EXEC_SET_GAME_TIME(21), + QUEST_EXEC_SET_WEATHER_GADGET(22), + QUEST_EXEC_ADD_QUEST_PROGRESS(23), + QUEST_EXEC_NOTIFY_DAILY_TASK(24), + QUEST_EXEC_CREATE_PATTERN_GROUP(25), + QUEST_EXEC_REMOVE_PATTERN_GROUP(26), + QUEST_EXEC_REFRESH_GROUP_SUITE_RANDOM(27), + QUEST_EXEC_ACTIVE_ITEM_GIVING(28), + QUEST_EXEC_DEL_ALL_SPECIFIC_PACK_ITEM(29), + QUEST_EXEC_ROLLBACK_PARENT_QUEST(30), + QUEST_EXEC_LOCK_AVATAR_TEAM(31), + QUEST_EXEC_UNLOCK_AVATAR_TEAM(32), + QUEST_EXEC_UPDATE_PARENT_QUEST_REWARD_INDEX(33), + QUEST_EXEC_SET_DAILY_TASK_VAR(34), + QUEST_EXEC_INC_DAILY_TASK_VAR(35), + QUEST_EXEC_DEC_DAILY_TASK_VAR(36), + QUEST_EXEC_ACTIVE_ACTIVITY_COND_STATE(37), + QUEST_EXEC_INACTIVE_ACTIVITY_COND_STATE(38), + QUEST_EXEC_ADD_CUR_AVATAR_ENERGY(39), + QUEST_EXEC_START_BARGAIN(41), + QUEST_EXEC_STOP_BARGAIN(42), + QUEST_EXEC_SET_QUEST_GLOBAL_VAR(43), + QUEST_EXEC_INC_QUEST_GLOBAL_VAR(44), + QUEST_EXEC_DEC_QUEST_GLOBAL_VAR(45), + QUEST_EXEC_REGISTER_DYNAMIC_GROUP(46), + QUEST_EXEC_UNREGISTER_DYNAMIC_GROUP(47), + QUEST_EXEC_SET_QUEST_VAR(48), + QUEST_EXEC_INC_QUEST_VAR(49), + QUEST_EXEC_DEC_QUEST_VAR(50), + QUEST_EXEC_RANDOM_QUEST_VAR(51), + QUEST_EXEC_ACTIVATE_SCANNING_PIC(52), + QUEST_EXEC_RELOAD_SCENE_TAG(53), + QUEST_EXEC_REGISTER_DYNAMIC_GROUP_ONLY(54), + QUEST_EXEC_CHANGE_SKILL_DEPOT(55), + QUEST_EXEC_ADD_SCENE_TAG(56), + QUEST_EXEC_DEL_SCENE_TAG(57), + QUEST_EXEC_INIT_TIME_VAR(58), + QUEST_EXEC_CLEAR_TIME_VAR(59), + QUEST_EXEC_MODIFY_CLIMATE_AREA(60), + QUEST_EXEC_GRANT_TRIAL_AVATAR_AND_LOCK_TEAM(61), + QUEST_EXEC_CHANGE_MAP_AREA_STATE(62), + QUEST_EXEC_DEACTIVE_ITEM_GIVING(63), + QUEST_EXEC_CHANGE_SCENE_LEVEL_TAG(64), + QUEST_EXEC_UNLOCK_PLAYER_WORLD_SCENE(65), + QUEST_EXEC_LOCK_PLAYER_WORLD_SCENE(66), + QUEST_EXEC_FAIL_MAINCOOP(67), + QUEST_EXEC_MODIFY_WEATHER_AREA(68); private static final Int2ObjectMap contentMap = new Int2ObjectOpenHashMap<>(); private static final Map contentStringMap = new HashMap<>(); @@ -247,9 +237,14 @@ public enum QuestTrigger { Stream.of(values()) .filter(e -> e.name().startsWith("QUEST_CONTENT_")) .forEach(e -> { - contentMap.put(e.getValue(), e); - contentStringMap.put(e.name(), e); - }); + contentMap.put(e.getValue(), e); + contentStringMap.put(e.name(), e); + }); + } + + private final int value; + QuestTrigger(int id) { + this.value = id; } public static QuestTrigger getContentTriggerByValue(int value) { @@ -259,4 +254,8 @@ public enum QuestTrigger { public static QuestTrigger getContentTriggerByName(String name) { return contentStringMap.getOrDefault(name, QUEST_CONTENT_NONE); } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/enums/QuestType.java b/src/main/java/emu/grasscutter/game/quest/enums/QuestType.java index fbbac2ae0..be1e31fe7 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/QuestType.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/QuestType.java @@ -1,22 +1,22 @@ package emu.grasscutter.game.quest.enums; public enum QuestType { - AQ (0), - FQ (1), - LQ (2), - EQ (3), - DQ (4), - IQ (5), - VQ (6), - WQ (7); - - private final int value; - - QuestType(int id) { - this.value = id; - } + AQ(0), + FQ(1), + LQ(2), + EQ(3), + DQ(4), + IQ(5), + VQ(6), + WQ(7); - public int getValue() { - return value; - } + private final int value; + + QuestType(int id) { + this.value = id; + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/enums/ShowQuestGuideType.java b/src/main/java/emu/grasscutter/game/quest/enums/ShowQuestGuideType.java index d4e985592..d59d1737b 100644 --- a/src/main/java/emu/grasscutter/game/quest/enums/ShowQuestGuideType.java +++ b/src/main/java/emu/grasscutter/game/quest/enums/ShowQuestGuideType.java @@ -1,17 +1,17 @@ package emu.grasscutter.game.quest.enums; public enum ShowQuestGuideType { - QUEST_GUIDE_ITEM_ENABLE (0), - QUEST_GUIDE_ITEM_DISABLE (1), - QUEST_GUIDE_ITEM_MOVE_HIDE (2); - - private final int value; - - ShowQuestGuideType(int id) { - this.value = id; - } + QUEST_GUIDE_ITEM_ENABLE(0), + QUEST_GUIDE_ITEM_DISABLE(1), + QUEST_GUIDE_ITEM_MOVE_HIDE(2); - public int getValue() { - return value; - } + private final int value; + + ShowQuestGuideType(int id) { + this.value = id; + } + + public int getValue() { + return value; + } } diff --git a/src/main/java/emu/grasscutter/game/quest/exec/ExecDecQuestGlobalVar.java b/src/main/java/emu/grasscutter/game/quest/exec/ExecDecQuestGlobalVar.java index 56a62106c..13323ac40 100644 --- a/src/main/java/emu/grasscutter/game/quest/exec/ExecDecQuestGlobalVar.java +++ b/src/main/java/emu/grasscutter/game/quest/exec/ExecDecQuestGlobalVar.java @@ -11,7 +11,7 @@ import emu.grasscutter.game.quest.handlers.QuestExecHandler; public class ExecDecQuestGlobalVar extends QuestExecHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) { - quest.getOwner().getQuestManager().decQuestGlobalVarValue(Integer.valueOf(paramStr[0]),Integer.valueOf(paramStr[1])); + quest.getOwner().getQuestManager().decQuestGlobalVarValue(Integer.valueOf(paramStr[0]), Integer.valueOf(paramStr[1])); return true; } } diff --git a/src/main/java/emu/grasscutter/game/quest/exec/ExecIncQuestGlobalVar.java b/src/main/java/emu/grasscutter/game/quest/exec/ExecIncQuestGlobalVar.java index b0eae50c0..e300cf5c4 100644 --- a/src/main/java/emu/grasscutter/game/quest/exec/ExecIncQuestGlobalVar.java +++ b/src/main/java/emu/grasscutter/game/quest/exec/ExecIncQuestGlobalVar.java @@ -10,7 +10,7 @@ import emu.grasscutter.game.quest.handlers.QuestExecHandler; public class ExecIncQuestGlobalVar extends QuestExecHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) { - quest.getOwner().getQuestManager().incQuestGlobalVarValue(Integer.valueOf(paramStr[0]),Integer.valueOf(paramStr[1])); + quest.getOwner().getQuestManager().incQuestGlobalVarValue(Integer.valueOf(paramStr[0]), Integer.valueOf(paramStr[1])); return true; } } diff --git a/src/main/java/emu/grasscutter/game/quest/exec/ExecNotifyGroupLua.java b/src/main/java/emu/grasscutter/game/quest/exec/ExecNotifyGroupLua.java index df674fc4b..9c04dc173 100644 --- a/src/main/java/emu/grasscutter/game/quest/exec/ExecNotifyGroupLua.java +++ b/src/main/java/emu/grasscutter/game/quest/exec/ExecNotifyGroupLua.java @@ -2,14 +2,12 @@ package emu.grasscutter.game.quest.exec; import emu.grasscutter.data.excels.QuestData; import emu.grasscutter.game.quest.GameQuest; -import emu.grasscutter.game.quest.QuestGroupSuite; import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestState; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestExecHandler; import emu.grasscutter.scripts.constants.EventType; import emu.grasscutter.scripts.data.ScriptArgs; -import emu.grasscutter.server.packet.send.PacketGroupSuiteNotify; @QuestValue(QuestTrigger.QUEST_EXEC_NOTIFY_GROUP_LUA) public class ExecNotifyGroupLua extends QuestExecHandler { @@ -21,7 +19,7 @@ public class ExecNotifyGroupLua extends QuestExecHandler { var scriptManager = quest.getOwner().getScene().getScriptManager(); - if(quest.getOwner().getScene().getId() == sceneId){ + if (quest.getOwner().getScene().getId() == sceneId) { scriptManager.callEvent( quest.getState() == QuestState.QUEST_STATE_FINISHED ? EventType.EVENT_QUEST_FINISH : EventType.EVENT_QUEST_START diff --git a/src/main/java/emu/grasscutter/game/quest/exec/ExecRefreshGroupSuite.java b/src/main/java/emu/grasscutter/game/quest/exec/ExecRefreshGroupSuite.java index c14e3c34d..11dc7306e 100644 --- a/src/main/java/emu/grasscutter/game/quest/exec/ExecRefreshGroupSuite.java +++ b/src/main/java/emu/grasscutter/game/quest/exec/ExecRefreshGroupSuite.java @@ -8,8 +8,6 @@ import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestExecHandler; import emu.grasscutter.server.packet.send.PacketGroupSuiteNotify; -import java.util.Arrays; - @QuestValue(QuestTrigger.QUEST_EXEC_REFRESH_GROUP_SUITE) public class ExecRefreshGroupSuite extends QuestExecHandler { @@ -28,7 +26,7 @@ public class ExecRefreshGroupSuite extends QuestExecHandler { .build()); // refresh immediately if player is in this scene - if(quest.getOwner().getScene().getId() == sceneId){ + if (quest.getOwner().getScene().getId() == sceneId) { scriptManager.refreshGroup(scriptManager.getGroupById(groupId), suiteId); quest.getOwner().sendPacket(new PacketGroupSuiteNotify(groupId, suiteId)); } diff --git a/src/main/java/emu/grasscutter/game/quest/exec/ExecSetQuestGlobalVar.java b/src/main/java/emu/grasscutter/game/quest/exec/ExecSetQuestGlobalVar.java index 2142f4cff..89827ea59 100644 --- a/src/main/java/emu/grasscutter/game/quest/exec/ExecSetQuestGlobalVar.java +++ b/src/main/java/emu/grasscutter/game/quest/exec/ExecSetQuestGlobalVar.java @@ -10,7 +10,7 @@ import emu.grasscutter.game.quest.handlers.QuestExecHandler; public class ExecSetQuestGlobalVar extends QuestExecHandler { @Override public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) { - quest.getOwner().getQuestManager().setQuestGlobalVarValue(Integer.valueOf(paramStr[0]),Integer.valueOf(paramStr[1])); + quest.getOwner().getQuestManager().setQuestGlobalVarValue(Integer.valueOf(paramStr[0]), Integer.valueOf(paramStr[1])); return true; } } diff --git a/src/main/java/emu/grasscutter/game/quest/exec/ExecUnlockArea.java b/src/main/java/emu/grasscutter/game/quest/exec/ExecUnlockArea.java index cc958bba9..b6164f92d 100644 --- a/src/main/java/emu/grasscutter/game/quest/exec/ExecUnlockArea.java +++ b/src/main/java/emu/grasscutter/game/quest/exec/ExecUnlockArea.java @@ -6,8 +6,6 @@ import emu.grasscutter.game.quest.QuestValue; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.game.quest.handlers.QuestExecHandler; -import java.util.Arrays; - @QuestValue(QuestTrigger.QUEST_EXEC_UNLOCK_AREA) public class ExecUnlockArea extends QuestExecHandler { @Override diff --git a/src/main/java/emu/grasscutter/game/quest/handlers/QuestBaseHandler.java b/src/main/java/emu/grasscutter/game/quest/handlers/QuestBaseHandler.java index 077029016..625212b59 100644 --- a/src/main/java/emu/grasscutter/game/quest/handlers/QuestBaseHandler.java +++ b/src/main/java/emu/grasscutter/game/quest/handlers/QuestBaseHandler.java @@ -5,6 +5,6 @@ import emu.grasscutter.game.quest.GameQuest; public abstract class QuestBaseHandler { - public abstract boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params); + public abstract boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params); } diff --git a/src/main/java/emu/grasscutter/game/quest/handlers/QuestExecHandler.java b/src/main/java/emu/grasscutter/game/quest/handlers/QuestExecHandler.java index 378a59614..3dcc6e889 100644 --- a/src/main/java/emu/grasscutter/game/quest/handlers/QuestExecHandler.java +++ b/src/main/java/emu/grasscutter/game/quest/handlers/QuestExecHandler.java @@ -5,6 +5,6 @@ import emu.grasscutter.game.quest.GameQuest; public abstract class QuestExecHandler { - public abstract boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr); + public abstract boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr); } diff --git a/src/main/java/emu/grasscutter/game/shop/ShopInfo.java b/src/main/java/emu/grasscutter/game/shop/ShopInfo.java index d728f0483..2cc8656f9 100644 --- a/src/main/java/emu/grasscutter/game/shop/ShopInfo.java +++ b/src/main/java/emu/grasscutter/game/shop/ShopInfo.java @@ -9,43 +9,58 @@ import java.util.ArrayList; import java.util.List; public class ShopInfo { - @Getter @Setter private int goodsId = 0; - @Getter @Setter private ItemParamData goodsItem; - @Getter @Setter private int scoin = 0; - @Getter @Setter private List costItemList; - @Getter @Setter private int boughtNum = 0; - @Getter @Setter private int buyLimit = 0; - @Getter @Setter private int beginTime = 0; - @Getter @Setter private int endTime = 1924992000; - @Getter @Setter private int minLevel = 0; - @Getter @Setter private int maxLevel = 61; - @Getter @Setter private List preGoodsIdList = new ArrayList<>(); - @Getter @Setter private int mcoin = 0; - @Getter @Setter private int hcoin = 0; - @Getter @Setter private int disableType = 0; - @Getter @Setter private int secondarySheetId = 0; + @Getter + @Setter + private int goodsId = 0; + @Getter + @Setter + private ItemParamData goodsItem; + @Getter + @Setter + private int scoin = 0; + @Getter + @Setter + private List costItemList; + @Getter + @Setter + private int boughtNum = 0; + @Getter + @Setter + private int buyLimit = 0; + @Getter + @Setter + private int beginTime = 0; + @Getter + @Setter + private int endTime = 1924992000; + @Getter + @Setter + private int minLevel = 0; + @Getter + @Setter + private int maxLevel = 61; + @Getter + @Setter + private List preGoodsIdList = new ArrayList<>(); + @Getter + @Setter + private int mcoin = 0; + @Getter + @Setter + private int hcoin = 0; + @Getter + @Setter + private int disableType = 0; + @Getter + @Setter + private int secondarySheetId = 0; private String refreshType; - - public enum ShopRefreshType { - NONE(0), - SHOP_REFRESH_DAILY(1), - SHOP_REFRESH_WEEKLY(2), - SHOP_REFRESH_MONTHLY(3); - - private final int value; - ShopRefreshType(int value) { - this.value = value; - } - - public int value() { - return value; - } - } - - @Setter private transient ShopRefreshType shopRefreshType; - @Getter @Setter private int shopRefreshParam; - + @Setter + private transient ShopRefreshType shopRefreshType; + @Getter + @Setter + private int shopRefreshParam; public ShopInfo(ShopGoodsData sgd) { this.goodsId = sgd.getGoodsId(); this.goodsItem = new ItemParamData(sgd.getItemId(), sgd.getItemCount()); @@ -75,8 +90,14 @@ public class ShopInfo { private boolean evaluateVirtualCost(ItemParamData item) { return switch (item.getId()) { - case 201 -> {this.hcoin += item.getCount(); yield true;} - case 203 -> {this.mcoin += item.getCount(); yield true;} + case 201 -> { + this.hcoin += item.getCount(); + yield true; + } + case 203 -> { + this.mcoin += item.getCount(); + yield true; + } default -> false; }; } @@ -85,4 +106,21 @@ public class ShopInfo { if (this.costItemList != null) this.costItemList.removeIf(item -> evaluateVirtualCost(item)); } + + public enum ShopRefreshType { + NONE(0), + SHOP_REFRESH_DAILY(1), + SHOP_REFRESH_WEEKLY(2), + SHOP_REFRESH_MONTHLY(3); + + private final int value; + + ShopRefreshType(int value) { + this.value = value; + } + + public int value() { + return value; + } + } } diff --git a/src/main/java/emu/grasscutter/game/shop/ShopLimit.java b/src/main/java/emu/grasscutter/game/shop/ShopLimit.java index 296179d3f..827826803 100644 --- a/src/main/java/emu/grasscutter/game/shop/ShopLimit.java +++ b/src/main/java/emu/grasscutter/game/shop/ShopLimit.java @@ -4,6 +4,11 @@ import dev.morphia.annotations.Entity; @Entity public class ShopLimit { + private int shopGoodId; + private int hasBought; + private int hasBoughtInPeriod = 0; + private int nextRefreshTime = 0; + public int getShopGoodId() { return shopGoodId; } @@ -35,9 +40,4 @@ public class ShopLimit { public void setHasBoughtInPeriod(int hasBoughtInPeriod) { this.hasBoughtInPeriod = hasBoughtInPeriod; } - - private int shopGoodId; - private int hasBought; - private int hasBoughtInPeriod = 0; - private int nextRefreshTime = 0; } diff --git a/src/main/java/emu/grasscutter/game/shop/ShopSystem.java b/src/main/java/emu/grasscutter/game/shop/ShopSystem.java index 8253e05aa..3f034e99b 100644 --- a/src/main/java/emu/grasscutter/game/shop/ShopSystem.java +++ b/src/main/java/emu/grasscutter/game/shop/ShopSystem.java @@ -11,18 +11,17 @@ import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import static emu.grasscutter.config.Configuration.*; - import java.util.ArrayList; import java.util.List; import java.util.Map; -public class ShopSystem extends BaseGameSystem { - private final Int2ObjectMap> shopData; - private final Int2ObjectMap> shopChestData; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; +public class ShopSystem extends BaseGameSystem { private static final int REFRESH_HOUR = 4; // In GMT+8 server private static final String TIME_ZONE = "Asia/Shanghai"; // GMT+8 Timezone + private final Int2ObjectMap> shopData; + private final Int2ObjectMap> shopChestData; public ShopSystem(GameServer server) { super(server); @@ -31,6 +30,18 @@ public class ShopSystem extends BaseGameSystem { this.load(); } + public static int getShopNextRefreshTime(ShopInfo shopInfo) { + return switch (shopInfo.getShopRefreshType()) { + case SHOP_REFRESH_DAILY -> + Utils.getNextTimestampOfThisHour(REFRESH_HOUR, TIME_ZONE, shopInfo.getShopRefreshParam()); + case SHOP_REFRESH_WEEKLY -> + Utils.getNextTimestampOfThisHourInNextWeek(REFRESH_HOUR, TIME_ZONE, shopInfo.getShopRefreshParam()); + case SHOP_REFRESH_MONTHLY -> + Utils.getNextTimestampOfThisHourInNextMonth(REFRESH_HOUR, TIME_ZONE, shopInfo.getShopRefreshParam()); + default -> 0; + }; + } + public Int2ObjectMap> getShopData() { return shopData; } @@ -39,15 +50,6 @@ public class ShopSystem extends BaseGameSystem { return this.shopChestData.get(chestId); } - public static int getShopNextRefreshTime(ShopInfo shopInfo) { - return switch (shopInfo.getShopRefreshType()) { - case SHOP_REFRESH_DAILY -> Utils.getNextTimestampOfThisHour(REFRESH_HOUR, TIME_ZONE, shopInfo.getShopRefreshParam()); - case SHOP_REFRESH_WEEKLY -> Utils.getNextTimestampOfThisHourInNextWeek(REFRESH_HOUR, TIME_ZONE, shopInfo.getShopRefreshParam()); - case SHOP_REFRESH_MONTHLY -> Utils.getNextTimestampOfThisHourInNextMonth(REFRESH_HOUR, TIME_ZONE, shopInfo.getShopRefreshParam()); - default -> 0; - }; - } - private void loadShop() { getShopData().clear(); try { diff --git a/src/main/java/emu/grasscutter/game/systems/AnnouncementSystem.java b/src/main/java/emu/grasscutter/game/systems/AnnouncementSystem.java index e27415237..e09647acc 100644 --- a/src/main/java/emu/grasscutter/game/systems/AnnouncementSystem.java +++ b/src/main/java/emu/grasscutter/game/systems/AnnouncementSystem.java @@ -68,9 +68,13 @@ public class AnnouncementSystem extends BaseGameSystem { getOnlinePlayers().forEach(i -> i.sendPacket(new PacketServerAnnounceRevokeNotify(tplId))); } + public enum AnnounceType { + CENTER, COUNTDOWN + } + @Data @FieldDefaults(level = AccessLevel.PRIVATE) - public class AnnounceConfigItem{ + public class AnnounceConfigItem { int templateId; AnnounceType type; int frequency; @@ -92,7 +96,7 @@ public class AnnouncementSystem extends BaseGameSystem { proto.setCenterSystemText(content) .setCenterSystemFrequency(frequency) ; - }else { + } else { proto.setCountDownText(content) .setCountDownFrequency(frequency) ; @@ -101,8 +105,4 @@ public class AnnouncementSystem extends BaseGameSystem { return proto; } } - - public enum AnnounceType{ - CENTER, COUNTDOWN - } } diff --git a/src/main/java/emu/grasscutter/game/systems/InventorySystem.java b/src/main/java/emu/grasscutter/game/systems/InventorySystem.java index d4537716d..31a7fe446 100644 --- a/src/main/java/emu/grasscutter/game/systems/InventorySystem.java +++ b/src/main/java/emu/grasscutter/game/systems/InventorySystem.java @@ -1,15 +1,5 @@ package emu.grasscutter.game.systems; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.stream.Stream; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.common.ItemParamData; @@ -23,11 +13,11 @@ import emu.grasscutter.game.inventory.ItemType; import emu.grasscutter.game.inventory.MaterialType; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.game.props.ItemUseOp; import emu.grasscutter.game.props.ItemUseAction.ItemUseAddExp; import emu.grasscutter.game.props.ItemUseAction.ItemUseAddReliquaryExp; import emu.grasscutter.game.props.ItemUseAction.ItemUseAddWeaponExp; import emu.grasscutter.game.props.ItemUseAction.UseItemParams; +import emu.grasscutter.game.props.ItemUseOp; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.MaterialInfoOuterClass.MaterialInfo; import emu.grasscutter.server.event.player.PlayerUseFoodEvent; @@ -35,15 +25,15 @@ import emu.grasscutter.server.game.BaseGameSystem; import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.Utils; -import it.unimi.dsi.fastutil.ints.Int2FloatArrayMap; -import it.unimi.dsi.fastutil.ints.Int2IntArrayMap; -import it.unimi.dsi.fastutil.ints.Int2IntMap; -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; -import it.unimi.dsi.fastutil.ints.Int2IntRBTreeMap; +import it.unimi.dsi.fastutil.ints.*; import lombok.val; +import java.util.*; +import java.util.stream.Stream; + public class InventorySystem extends BaseGameSystem { private static final Int2IntMap weaponRefundMaterials = new Int2IntArrayMap(); + { // Use a sorted map, use exp as key to sort by exp // We want to have weaponRefundMaterials as (id, exp) in descending exp order @@ -55,7 +45,7 @@ public class InventorySystem extends BaseGameSystem { if (actions == null) return; for (var action : actions) { if (action.getItemUseOp() == ItemUseOp.ITEM_USE_ADD_WEAPON_EXP) { - temp.putIfAbsent((int) ((ItemUseAddWeaponExp) action).getExp(), (int) id); + temp.putIfAbsent(((ItemUseAddWeaponExp) action).getExp(), (int) id); return; } } @@ -67,6 +57,42 @@ public class InventorySystem extends BaseGameSystem { super(server); } + public static synchronized int checkPlayerAvatarConstellationLevel(Player player, int id) { + // Try to accept itemId OR avatarId + int avatarId = 0; + if (GameData.getAvatarDataMap().containsKey(id)) { + avatarId = id; + } else { + avatarId = Optional.ofNullable(GameData.getItemDataMap().get(id)) + .map(itemData -> itemData.getItemUseActions()) + .flatMap(actions -> + actions.stream() + .filter(action -> action.getItemUseOp() == ItemUseOp.ITEM_USE_GAIN_AVATAR) + .map(action -> ((emu.grasscutter.game.props.ItemUseAction.ItemUseGainAvatar) action).getI()) + .findFirst()) + .orElse(0); + } + + if (avatarId == 0) + return -2; // Not an Avatar + + Avatar avatar = player.getAvatars().getAvatarById(avatarId); + if (avatar == null) + return -1; // Doesn't have + + // Constellation + int constLevel = avatar.getCoreProudSkillLevel(); + val avatarData = avatar.getSkillDepot(); + if (avatarData == null) { + Grasscutter.getLogger().error("Attempted to check constellation level for UID" + player.getUid() + "'s avatar " + avatarId + " but avatar has no skillDepot!"); + return 0; + } + int constItemId = avatarData.getTalentCostItemId(); + GameItem constItem = player.getInventory().getInventoryTab(ItemType.ITEM_MATERIAL).getItemById(constItemId); + constLevel += Optional.ofNullable(constItem).map(GameItem::getCount).orElse(0); + return constLevel; + } + public void lockEquip(Player player, long targetEquipGuid, boolean isLocked) { GameItem equip = player.getInventory().getItemByGuid(targetEquipGuid); @@ -275,7 +301,6 @@ public class InventorySystem extends BaseGameSystem { return getLeftoverOres(expGain); } - public void upgradeWeapon(Player player, long targetGuid, List foodWeaponGuidList, List itemParamList) { GameItem weapon = player.getInventory().getItemByGuid(targetGuid); @@ -478,7 +503,7 @@ public class InventorySystem extends BaseGameSystem { ItemParamData[] costs = nextPromoteData.getCostItems(); // Can this be null? if (nextPromoteData.getCoinCost() > 0) { costs = Arrays.copyOf(costs, costs.length + 1); - costs[costs.length-1] = new ItemParamData(202, nextPromoteData.getCoinCost()); + costs[costs.length - 1] = new ItemParamData(202, nextPromoteData.getCoinCost()); } if (!player.getInventory().payItems(costs)) { return; @@ -523,7 +548,7 @@ public class InventorySystem extends BaseGameSystem { ItemParamData[] costs = nextPromoteData.getCostItems(); // Can this be null? if (nextPromoteData.getCoinCost() > 0) { costs = Arrays.copyOf(costs, costs.length + 1); - costs[costs.length-1] = new ItemParamData(202, nextPromoteData.getCoinCost()); + costs[costs.length - 1] = new ItemParamData(202, nextPromoteData.getCoinCost()); } if (!player.getInventory().payItems(costs)) { return; @@ -544,7 +569,7 @@ public class InventorySystem extends BaseGameSystem { avatar.getProudSkillList().add(proudSkillId); player.sendPacket(new PacketProudSkillChangeNotify(avatar)); }) - ); + ); // Packets player.sendPacket(new PacketAvatarPropNotify(avatar)); @@ -590,7 +615,7 @@ public class InventorySystem extends BaseGameSystem { // Payment check int moraCost = expGain / 5; - ItemParamData[] costItems = new ItemParamData[] {new ItemParamData(itemId, count), new ItemParamData(202, moraCost)}; + ItemParamData[] costItems = new ItemParamData[]{new ItemParamData(itemId, count), new ItemParamData(202, moraCost)}; if (!player.getInventory().payItems(costItems)) { return; } @@ -764,7 +789,8 @@ public class InventorySystem extends BaseGameSystem { // Ensure targeting conditions are satisfied val target = Optional.ofNullable(params.targetAvatar); switch (params.itemUseTarget) { - case ITEM_USE_TARGET_NONE -> {} + case ITEM_USE_TARGET_NONE -> { + } case ITEM_USE_TARGET_SPECIFY_AVATAR -> { if (target.isEmpty()) return false; } @@ -774,17 +800,20 @@ public class InventorySystem extends BaseGameSystem { case ITEM_USE_TARGET_SPECIFY_DEAD_AVATAR -> { if (target.map(a -> a.getAsEntity().isAlive()).orElse(true)) return false; } - case ITEM_USE_TARGET_CUR_AVATAR -> {} - case ITEM_USE_TARGET_CUR_TEAM -> {} + case ITEM_USE_TARGET_CUR_AVATAR -> { + } + case ITEM_USE_TARGET_CUR_TEAM -> { + } } int[] satiationParams = itemData.getSatiationParams(); if (satiationParams != null && satiationParams.length > 0 && target.isPresent()) { // Invoke and call player use food event. - var event = new PlayerUseFoodEvent(params.player, itemData, params.targetAvatar.getAsEntity()); event.call(); + var event = new PlayerUseFoodEvent(params.player, itemData, params.targetAvatar.getAsEntity()); + event.call(); if (event.isCanceled()) return false; - float satiationIncrease = satiationParams[0] + ((float)satiationParams[1])/params.targetAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP); + float satiationIncrease = satiationParams[0] + ((float) satiationParams[1]) / params.targetAvatar.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP); if (!params.player.getSatiationManager().addSatiation(params.targetAvatar, satiationIncrease, itemData.getId())) { // Make sure avatar can eat return false; } @@ -795,43 +824,7 @@ public class InventorySystem extends BaseGameSystem { Grasscutter.getLogger().debug("Using - actions - {}", actions); if (actions == null) return true; // Maybe returning false would be more appropriate? return actions.stream() - .map(use -> use.useItem(params)) - .reduce(false, (a,b) -> a || b); // Don't short-circuit!!! - } - - public static synchronized int checkPlayerAvatarConstellationLevel(Player player, int id) { - // Try to accept itemId OR avatarId - int avatarId = 0; - if (GameData.getAvatarDataMap().containsKey(id)) { - avatarId = id; - } else { - avatarId = Optional.ofNullable(GameData.getItemDataMap().get(id)) - .map(itemData -> itemData.getItemUseActions()) - .flatMap(actions -> - actions.stream() - .filter(action -> action.getItemUseOp() == ItemUseOp.ITEM_USE_GAIN_AVATAR) - .map(action -> ((emu.grasscutter.game.props.ItemUseAction.ItemUseGainAvatar) action).getI()) - .findFirst()) - .orElse(0); - } - - if (avatarId == 0) - return -2; // Not an Avatar - - Avatar avatar = player.getAvatars().getAvatarById(avatarId); - if (avatar == null) - return -1; // Doesn't have - - // Constellation - int constLevel = avatar.getCoreProudSkillLevel(); - val avatarData = avatar.getSkillDepot(); - if (avatarData == null) { - Grasscutter.getLogger().error("Attempted to check constellation level for UID"+player.getUid()+"'s avatar "+avatarId+" but avatar has no skillDepot!"); - return 0; - } - int constItemId = avatarData.getTalentCostItemId(); - GameItem constItem = player.getInventory().getInventoryTab(ItemType.ITEM_MATERIAL).getItemById(constItemId); - constLevel += Optional.ofNullable(constItem).map(GameItem::getCount).orElse(0); - return constLevel; + .map(use -> use.useItem(params)) + .reduce(false, (a, b) -> a || b); // Don't short-circuit!!! } } diff --git a/src/main/java/emu/grasscutter/game/systems/MultiplayerSystem.java b/src/main/java/emu/grasscutter/game/systems/MultiplayerSystem.java index 0f6ee90d2..3eb2a79a1 100644 --- a/src/main/java/emu/grasscutter/game/systems/MultiplayerSystem.java +++ b/src/main/java/emu/grasscutter/game/systems/MultiplayerSystem.java @@ -1,11 +1,11 @@ package emu.grasscutter.game.systems; import emu.grasscutter.game.CoopRequest; +import emu.grasscutter.game.player.Player; +import emu.grasscutter.game.player.Player.SceneLoadState; import emu.grasscutter.game.props.EnterReason; import emu.grasscutter.game.world.World; import emu.grasscutter.net.proto.EnterTypeOuterClass.EnterType; -import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.player.Player.SceneLoadState; import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass; import emu.grasscutter.server.game.BaseGameSystem; import emu.grasscutter.server.game.GameServer; diff --git a/src/main/java/emu/grasscutter/game/tower/TowerData.java b/src/main/java/emu/grasscutter/game/tower/TowerData.java index df0e35274..df0d548ef 100644 --- a/src/main/java/emu/grasscutter/game/tower/TowerData.java +++ b/src/main/java/emu/grasscutter/game/tower/TowerData.java @@ -1,25 +1,25 @@ -package emu.grasscutter.game.tower; - -import java.util.Map; - -import dev.morphia.annotations.Entity; -import dev.morphia.annotations.Transient; - -@Entity -public class TowerData{ - /** - * the floor players chose - */ - int currentFloorId; - int currentLevel; - @Transient - int currentLevelId; - - /** - * floorId - Record - */ - Map recordMap; - - @Transient - int entryScene; -} +package emu.grasscutter.game.tower; + +import dev.morphia.annotations.Entity; +import dev.morphia.annotations.Transient; + +import java.util.Map; + +@Entity +public class TowerData { + /** + * the floor players chose + */ + int currentFloorId; + int currentLevel; + @Transient + int currentLevelId; + + /** + * floorId - Record + */ + Map recordMap; + + @Transient + int entryScene; +} diff --git a/src/main/java/emu/grasscutter/game/tower/TowerLevelRecord.java b/src/main/java/emu/grasscutter/game/tower/TowerLevelRecord.java index 5a65f63ed..4b16ae26b 100644 --- a/src/main/java/emu/grasscutter/game/tower/TowerLevelRecord.java +++ b/src/main/java/emu/grasscutter/game/tower/TowerLevelRecord.java @@ -18,7 +18,17 @@ public class TowerLevelRecord { private int floorStarRewardProgress; - public TowerLevelRecord setLevelStars(int levelId, int stars){ + public TowerLevelRecord() { + + } + + public TowerLevelRecord(int floorId) { + this.floorId = floorId; + this.passedLevelMap = new HashMap<>(); + this.floorStarRewardProgress = 0; + } + + public TowerLevelRecord setLevelStars(int levelId, int stars) { passedLevelMap.put(levelId, stars); return this; } @@ -27,16 +37,6 @@ public class TowerLevelRecord { return passedLevelMap.values().stream().mapToInt(Integer::intValue).sum(); } - public TowerLevelRecord(){ - - } - - public TowerLevelRecord(int floorId){ - this.floorId = floorId; - this.passedLevelMap = new HashMap<>(); - this.floorStarRewardProgress = 0; - } - public int getFloorId() { return floorId; } diff --git a/src/main/java/emu/grasscutter/game/tower/TowerManager.java b/src/main/java/emu/grasscutter/game/tower/TowerManager.java index c562a54ab..9dccd1f7e 100644 --- a/src/main/java/emu/grasscutter/game/tower/TowerManager.java +++ b/src/main/java/emu/grasscutter/game/tower/TowerManager.java @@ -14,6 +14,8 @@ import java.util.Map; public class TowerManager extends BasePlayerManager { + private static final List towerDungeonSettleListener = List.of(new TowerDungeonSettleListener()); + public TowerManager(Player player) { super(player); } @@ -36,11 +38,10 @@ public class TowerManager extends BasePlayerManager { public int getCurrentLevel() { return getTowerData().currentLevel + 1; } - private static final List towerDungeonSettleListener = List.of(new TowerDungeonSettleListener()); public Map getRecordMap() { Map recordMap = getTowerData().recordMap; - if (recordMap == null || recordMap.size()==0) { + if (recordMap == null || recordMap.size() == 0) { recordMap = new HashMap<>(); recordMap.put(1001, new TowerLevelRecord(1001)); getTowerData().recordMap = recordMap; @@ -53,10 +54,10 @@ public class TowerManager extends BasePlayerManager { getTowerData().currentFloorId = floorData.getFloorId(); getTowerData().currentLevel = 0; getTowerData().currentLevelId = GameData.getTowerLevelDataMap().values().stream() - .filter(x -> x.getLevelGroupId() == floorData.getLevelGroupId() && x.getLevelIndex() == 1) - .findFirst() - .map(TowerLevelData::getId) - .orElse(0); + .filter(x -> x.getLevelGroupId() == floorData.getLevelGroupId() && x.getLevelIndex() == 1) + .findFirst() + .map(TowerLevelData::getId) + .orElse(0); if (getTowerData().entryScene == 0) { getTowerData().entryScene = player.getSceneId(); @@ -75,7 +76,7 @@ public class TowerManager extends BasePlayerManager { // use team user choose player.getTeamManager().useTemporaryTeam(0); player.getServer().getDungeonSystem().handoffDungeon(player, dungeonId, - towerDungeonSettleListener); + towerDungeonSettleListener); // make sure user can exit dungeon correctly player.getScene().setPrevScene(getTowerData().entryScene); @@ -91,15 +92,16 @@ public class TowerManager extends BasePlayerManager { public void notifyCurLevelRecordChange() { player.getSession().send(new PacketTowerCurLevelRecordChangeNotify(getTowerData().currentFloorId, getCurrentLevel())); } + public void notifyCurLevelRecordChangeWhenDone(int stars) { Map recordMap = getRecordMap(); int currentFloorId = getTowerData().currentFloorId; if (!recordMap.containsKey(currentFloorId)) { recordMap.put(currentFloorId, - new TowerLevelRecord(currentFloorId).setLevelStars(getCurrentLevelId(),stars)); - }else { + new TowerLevelRecord(currentFloorId).setLevelStars(getCurrentLevelId(), stars)); + } else { recordMap.put(currentFloorId, - recordMap.get(currentFloorId).setLevelStars(getCurrentLevelId(),stars)); + recordMap.get(currentFloorId).setLevelStars(getCurrentLevelId(), stars)); } getTowerData().currentLevel++; @@ -109,16 +111,19 @@ public class TowerManager extends BasePlayerManager { var nextFloorId = this.getNextFloorId(); recordMap.computeIfAbsent(nextFloorId, TowerLevelRecord::new); player.getSession().send(new PacketTowerCurLevelRecordChangeNotify(nextFloorId, 1)); - }else { + } else { player.getSession().send(new PacketTowerCurLevelRecordChangeNotify(currentFloorId, getCurrentLevel())); } } + public boolean hasNextLevel() { return getTowerData().currentLevel < 3; } + public int getNextFloorId() { return player.getServer().getTowerSystem().getNextFloorId(getTowerData().currentFloorId); } + public boolean hasNextFloor() { return player.getServer().getTowerSystem().getNextFloorId(getTowerData().currentFloorId) > 0; } @@ -133,7 +138,7 @@ public class TowerManager extends BasePlayerManager { return false; } return recordMap.get(player.getServer().getTowerSystem().getLastEntranceFloor()) - .getStarCount() >= 6; + .getStarCount() >= 6; } public void mirrorTeamSetUp(int teamId) { diff --git a/src/main/java/emu/grasscutter/game/tower/TowerSystem.java b/src/main/java/emu/grasscutter/game/tower/TowerSystem.java index 014c5ddd7..21a0f5c0d 100644 --- a/src/main/java/emu/grasscutter/game/tower/TowerSystem.java +++ b/src/main/java/emu/grasscutter/game/tower/TowerSystem.java @@ -12,13 +12,13 @@ import java.util.List; public class TowerSystem extends BaseGameSystem { + private TowerScheduleConfig towerScheduleConfig; + public TowerSystem(GameServer server) { super(server); this.load(); } - private TowerScheduleConfig towerScheduleConfig; - public synchronized void load() { try { towerScheduleConfig = DataLoader.loadClass("TowerSchedule.json", TowerScheduleConfig.class); @@ -35,7 +35,7 @@ public class TowerSystem extends BaseGameSystem { var data = GameData.getTowerScheduleDataMap().get(towerScheduleConfig.getScheduleId()); if (data == null) { Grasscutter.getLogger().error("Could not get current tower schedule data by schedule id {}, please check your resource files", - towerScheduleConfig.getScheduleId()); + towerScheduleConfig.getScheduleId()); } return data; @@ -57,13 +57,13 @@ public class TowerSystem extends BaseGameSystem { var nextId = 0; // find in entrance floors first - for (int i=0;i players; - @Getter private final Map entities; - @Getter private final Set spawnedEntities; - @Getter private final Set deadSpawnedEntities; - @Getter private final Set loadedBlocks; - @Getter private final BlossomManager blossomManager; + @Getter + private final World world; + @Getter + private final SceneData sceneData; + @Getter + private final List players; + @Getter + private final Map entities; + @Getter + private final Set spawnedEntities; + @Getter + private final Set deadSpawnedEntities; + @Getter + private final Set loadedBlocks; + @Getter + private final BlossomManager blossomManager; private Set loadedGridBlocks; - @Getter @Setter private boolean dontDestroyWhenEmpty; + @Getter + @Setter + private boolean dontDestroyWhenEmpty; - @Getter @Setter private int autoCloseTime; - @Getter @Setter private int time; - private long startTime; + @Getter + @Setter + private int autoCloseTime; + @Getter + @Setter + private int time; + private final long startTime; - @Getter private SceneScriptManager scriptManager; - @Getter @Setter private WorldChallenge challenge; - @Getter private List dungeonSettleListeners; - @Getter private DungeonData dungeonData; - @Getter @Setter private int prevScene; // Id of the previous scene - @Getter @Setter private int prevScenePoint; + @Getter + private final SceneScriptManager scriptManager; + @Getter + @Setter + private WorldChallenge challenge; + @Getter + private List dungeonSettleListeners; + @Getter + private DungeonData dungeonData; + @Getter + @Setter + private int prevScene; // Id of the previous scene + @Getter + @Setter + private int prevScenePoint; private Set npcBornEntrySet; + public Scene(World world, SceneData sceneData) { this.world = world; this.sceneData = sceneData; @@ -96,9 +120,9 @@ public class Scene { public GameEntity getEntityByConfigId(int configId) { return this.entities.values().stream() - .filter(x -> x.getConfigId() == configId) - .findFirst() - .orElse(null); + .filter(x -> x.getConfigId() == configId) + .findFirst() + .orElse(null); } public void changeTime(int time) { @@ -225,6 +249,7 @@ public class Scene { player.sendPacket(new PacketSceneEntityAppearNotify(entity)); } + public void addEntities(Collection entities) { addEntities(entities, VisionType.VISION_TYPE_BORN); } @@ -258,14 +283,16 @@ public class Scene { this.broadcastPacket(new PacketSceneEntityDisappearNotify(removed, visionType)); } } + public synchronized void removeEntities(List entity, VisionType visionType) { var toRemove = entity.stream() - .map(this::removeEntityDirectly) - .toList(); + .map(this::removeEntityDirectly) + .toList(); if (toRemove.size() > 0) { this.broadcastPacket(new PacketSceneEntityDisappearNotify(toRemove, visionType)); } } + public synchronized void replaceEntity(EntityAvatar oldEntity, EntityAvatar newEntity) { this.removeEntityDirectly(oldEntity); this.addEntityDirectly(newEntity); @@ -367,6 +394,7 @@ public class Scene { return level; } + public void checkNpcGroup() { Set npcBornEntries = ConcurrentHashMap.newKeySet(); for (Player player : this.getPlayers()) { @@ -390,8 +418,7 @@ public class Scene { public synchronized void checkSpawns() { Set loadedGridBlocks = new HashSet<>(); for (Player player : this.getPlayers()) { - for (SpawnDataEntry.GridBlockId block : SpawnDataEntry.GridBlockId.getAdjacentGridBlockIds(player.getSceneId(), player.getPosition())) - loadedGridBlocks.add(block); + Collections.addAll(loadedGridBlocks, SpawnDataEntry.GridBlockId.getAdjacentGridBlockIds(player.getSceneId(), player.getPosition())); } if (this.loadedGridBlocks.containsAll(loadedGridBlocks)) { // Don't recalculate static spawns if nothing has changed return; @@ -401,7 +428,7 @@ public class Scene { Set visible = new HashSet<>(); for (var block : loadedGridBlocks) { var spawns = spawnLists.get(block); - if (spawns!=null) { + if (spawns != null) { visible.addAll(spawns); } } @@ -445,7 +472,7 @@ public class Scene { gadget.setConfigId(entry.getConfigId()); gadget.setSpawnEntry(entry); int state = entry.getGadgetState(); - if (state>0) { + if (state > 0) { gadget.setState(state); } gadget.buildContent(); @@ -488,7 +515,7 @@ public class Scene { public List getPlayerActiveBlocks(Player player) { // consider the borders' entities of blocks, so we check if contains by index return SceneIndexManager.queryNeighbors(getScriptManager().getBlocksIndex(), - player.getPosition().toXZDoubleArray(), Grasscutter.getConfig().server.game.loadEntitiesForPlayerRange); + player.getPosition().toXZDoubleArray(), Grasscutter.getConfig().server.game.loadEntitiesForPlayerRange); } private boolean unloadBlockIfNotVisible(Collection visible, SceneBlock block) { @@ -526,12 +553,12 @@ public class Scene { public List playerMeetGroups(Player player, SceneBlock block) { List sceneGroups = SceneIndexManager.queryNeighbors(block.sceneGroupIndex, player.getPosition().toDoubleArray(), - Grasscutter.getConfig().server.game.loadEntitiesForPlayerRange); + Grasscutter.getConfig().server.game.loadEntitiesForPlayerRange); List groups = sceneGroups.stream() - .filter(group -> !scriptManager.getLoadedGroupSetPerBlock().get(block.id).contains(group)) - .peek(group -> scriptManager.getLoadedGroupSetPerBlock().get(block.id).add(group)) - .toList(); + .filter(group -> !scriptManager.getLoadedGroupSetPerBlock().get(block.id).contains(group)) + .peek(group -> scriptManager.getLoadedGroupSetPerBlock().get(block.id).add(group)) + .toList(); if (groups.size() == 0) { return List.of(); @@ -539,20 +566,22 @@ public class Scene { return groups; } + public void onLoadBlock(SceneBlock block, List players) { this.getScriptManager().loadBlockFromScript(block); - scriptManager.getLoadedGroupSetPerBlock().put(block.id , new HashSet<>()); + scriptManager.getLoadedGroupSetPerBlock().put(block.id, new HashSet<>()); // the groups form here is not added in current scene var groups = players.stream() - .filter(player -> block.contains(player.getPosition())) - .map(p -> playerMeetGroups(p, block)) - .flatMap(Collection::stream) - .toList(); + .filter(player -> block.contains(player.getPosition())) + .map(p -> playerMeetGroups(p, block)) + .flatMap(Collection::stream) + .toList(); onLoadGroup(groups); Grasscutter.getLogger().info("Scene {} Block {} loaded.", this.getId(), block.id); } + public void loadTriggerFromGroup(SceneGroup group, String triggerName) { //Load triggers and regions getScriptManager().registerTrigger(group.triggers.values().stream().filter(p -> p.name.contains(triggerName)).toList()); @@ -582,8 +611,8 @@ public class Scene { if (garbageGadgets != null) { entities.addAll(garbageGadgets.stream().map(g -> scriptManager.createGadget(group.id, group.block_id, g)) - .filter(Objects::nonNull) - .toList()); + .filter(Objects::nonNull) + .toList()); } // Load suites @@ -611,7 +640,7 @@ public class Scene { public void onUnloadBlock(SceneBlock block) { List toRemove = this.getEntities().values().stream() - .filter(e -> e.getBlockId() == block.id).toList(); + .filter(e -> e.getBlockId() == block.id).toList(); if (toRemove.size() > 0) { toRemove.forEach(this::removeEntityDirectly); @@ -649,12 +678,11 @@ public class Scene { public void onPlayerDestroyGadget(int entityId) { GameEntity entity = getEntities().get(entityId); - if (entity == null || !(entity instanceof EntityClientGadget)) { + if (entity == null || !(entity instanceof EntityClientGadget gadget)) { return; } // Get and remove entity - EntityClientGadget gadget = (EntityClientGadget) entity; this.removeEntityDirectly(gadget); // Remove from owner's gadget list @@ -709,9 +737,11 @@ public class Scene { addEntity(entity); } } + public void loadNpcForPlayerEnter(Player player) { this.npcBornEntrySet.addAll(loadNpcForPlayer(player)); } + private List loadNpcForPlayer(Player player) { var pos = player.getPosition(); var data = GameData.getSceneNpcBornData().get(getId()); @@ -720,7 +750,7 @@ public class Scene { } var npcList = SceneIndexManager.queryNeighbors(data.getIndex(), pos.toDoubleArray(), - Grasscutter.getConfig().server.game.loadEntitiesForPlayerRange); + Grasscutter.getConfig().server.game.loadEntitiesForPlayerRange); var sceneNpcBornEntries = npcList.stream() .filter(i -> !this.npcBornEntrySet.contains(i)) diff --git a/src/main/java/emu/grasscutter/game/world/SpawnDataEntry.java b/src/main/java/emu/grasscutter/game/world/SpawnDataEntry.java index 22f853776..0006b0846 100644 --- a/src/main/java/emu/grasscutter/game/world/SpawnDataEntry.java +++ b/src/main/java/emu/grasscutter/game/world/SpawnDataEntry.java @@ -1,45 +1,65 @@ package emu.grasscutter.game.world; -import java.util.List; -import java.util.Objects; - import emu.grasscutter.data.GameDepot; import emu.grasscutter.utils.Position; import lombok.Getter; import lombok.Setter; +import java.util.List; +import java.util.Objects; + public class SpawnDataEntry { - @Getter @Setter private transient SpawnGroupEntry group; - @Getter private int monsterId; - @Getter private int gadgetId; - @Getter private int configId; - @Getter private int level; - @Getter private int poseId; - @Getter private int gatherItemId; - @Getter private int gadgetState; - @Getter private Position pos; - @Getter private Position rot; + @Getter + @Setter + private transient SpawnGroupEntry group; + @Getter + private int monsterId; + @Getter + private int gadgetId; + @Getter + private int configId; + @Getter + private int level; + @Getter + private int poseId; + @Getter + private int gatherItemId; + @Getter + private int gadgetState; + @Getter + private Position pos; + @Getter + private Position rot; public GridBlockId getBlockId() { int scale = GridBlockId.getScale(gadgetId); - return new GridBlockId(group.sceneId,scale, - (int)(pos.getX() / GameDepot.BLOCK_SIZE[scale]), - (int)(pos.getZ() / GameDepot.BLOCK_SIZE[scale]) + return new GridBlockId(group.sceneId, scale, + (int) (pos.getX() / GameDepot.BLOCK_SIZE[scale]), + (int) (pos.getZ() / GameDepot.BLOCK_SIZE[scale]) ); } public static class SpawnGroupEntry { - @Getter private int sceneId; - @Getter private int groupId; - @Getter private int blockId; - @Getter @Setter private List spawns; + @Getter + private int sceneId; + @Getter + private int groupId; + @Getter + private int blockId; + @Getter + @Setter + private List spawns; } public static class GridBlockId { - @Getter private int sceneId; - @Getter private int scale; - @Getter private int x; - @Getter private int z; + @Getter + private final int sceneId; + @Getter + private final int scale; + @Getter + private final int x; + @Getter + private final int z; public GridBlockId(int sceneId, int scale, int x, int z) { this.sceneId = sceneId; @@ -48,6 +68,25 @@ public class SpawnDataEntry { this.z = z; } + public static GridBlockId[] getAdjacentGridBlockIds(int sceneId, Position pos) { + GridBlockId[] results = new GridBlockId[5 * 5 * GameDepot.BLOCK_SIZE.length]; + int t = 0; + for (int scale = 0; scale < GameDepot.BLOCK_SIZE.length; scale++) { + int x = ((int) (pos.getX() / GameDepot.BLOCK_SIZE[scale])); + int z = ((int) (pos.getZ() / GameDepot.BLOCK_SIZE[scale])); + for (int i = x - 2; i < x + 3; i++) { + for (int j = z - 2; j < z + 3; j++) { + results[t++] = new GridBlockId(sceneId, scale, i, j); + } + } + } + return results; + } + + public static int getScale(int gadgetId) { + return 0;//you should implement here,this is index of GameDepot.BLOCK_SIZE + } + @Override public String toString() { return "SpawnDataEntryScaledPoint{" + @@ -70,24 +109,5 @@ public class SpawnDataEntry { public int hashCode() { return Objects.hash(sceneId, scale, x, z); } - - public static GridBlockId[] getAdjacentGridBlockIds(int sceneId, Position pos) { - GridBlockId[] results = new GridBlockId[5*5*GameDepot.BLOCK_SIZE.length]; - int t=0; - for (int scale = 0; scale < GameDepot.BLOCK_SIZE.length; scale++) { - int x = ((int)(pos.getX()/GameDepot.BLOCK_SIZE[scale])); - int z = ((int)(pos.getZ()/GameDepot.BLOCK_SIZE[scale])); - for (int i=x-2; i { private final GameServer server; private final Player owner; private final List players; private final Int2ObjectMap scenes; - private int levelEntityId; + private final int levelEntityId; private int nextEntityId = 0; private int nextPeerId = 0; private int worldLevel; - private boolean isMultiplayer; + private final boolean isMultiplayer; public World(Player player) { this(player, false); @@ -169,10 +163,10 @@ public class World implements Iterable { public synchronized void removePlayer(Player player) { // Remove team entities player.sendPacket( - new PacketDelTeamEntityNotify( - player.getSceneId(), - this.getPlayers().stream().map(p -> p.getTeamManager().getEntityId()).collect(Collectors.toList()) - ) + new PacketDelTeamEntityNotify( + player.getSceneId(), + this.getPlayers().stream().map(p -> p.getTeamManager().getEntityId()).collect(Collectors.toList()) + ) ); // Deregister @@ -224,7 +218,8 @@ public class World implements Iterable { // Call player teleport event. PlayerTeleportEvent event = new PlayerTeleportEvent(player, teleportType, player.getPosition(), teleportTo); // Call event & check if it was canceled. - event.call(); if (event.isCanceled()) { + event.call(); + if (event.isCanceled()) { return false; // Teleport was canceled. } @@ -310,7 +305,7 @@ public class World implements Iterable { } // Dont send packets if player is loading into the scene - if (player.getSceneLoadState().getValue() < SceneLoadState.INIT.getValue() ) { + if (player.getSceneLoadState().getValue() < SceneLoadState.INIT.getValue()) { // World player info packets player.getSession().send(new PacketWorldPlayerInfoNotify(this)); player.getSession().send(new PacketScenePlayerInfoNotify(this)); diff --git a/src/main/java/emu/grasscutter/game/world/WorldDataSystem.java b/src/main/java/emu/grasscutter/game/world/WorldDataSystem.java index ffc807717..428682ecf 100644 --- a/src/main/java/emu/grasscutter/game/world/WorldDataSystem.java +++ b/src/main/java/emu/grasscutter/game/world/WorldDataSystem.java @@ -54,9 +54,9 @@ public class WorldDataSystem extends BaseGameSystem { public RewardPreviewData getRewardByBossId(int monsterId) { var investigationMonsterData = GameData.getInvestigationMonsterDataMap().values().parallelStream() - .filter(imd -> imd.getMonsterIdList() != null && !imd.getMonsterIdList().isEmpty()) - .filter(imd -> imd.getMonsterIdList().get(0) == monsterId) - .findFirst(); + .filter(imd -> imd.getMonsterIdList() != null && !imd.getMonsterIdList().isEmpty()) + .filter(imd -> imd.getMonsterIdList().get(0) == monsterId) + .findFirst(); if (investigationMonsterData.isEmpty()) { return null; @@ -84,6 +84,7 @@ public class WorldDataSystem extends BaseGameSystem { } return level; } + private InvestigationMonsterOuterClass.InvestigationMonster getInvestigationMonster(Player player, InvestigationMonsterData imd) { if (imd.getGroupIdList().isEmpty() || imd.getMonsterIdList().isEmpty()) { return null; @@ -99,8 +100,8 @@ public class WorldDataSystem extends BaseGameSystem { } var monster = group.monsters.values().stream() - .filter(x -> x.monster_id == monsterId) - .findFirst(); + .filter(x -> x.monster_id == monsterId) + .findFirst(); if (monster.isEmpty()) { return null; } @@ -108,15 +109,15 @@ public class WorldDataSystem extends BaseGameSystem { var builder = InvestigationMonsterOuterClass.InvestigationMonster.newBuilder(); builder.setId(imd.getId()) - .setCityId(imd.getCityId()) - .setSceneId(imd.getCityData().getSceneId()) - .setGroupId(groupId) - .setMonsterId(monsterId) - .setLevel(getMonsterLevel(monster.get(), player.getWorld())) - .setIsAlive(true) - .setNextRefreshTime(Integer.MAX_VALUE) - .setRefreshInterval(Integer.MAX_VALUE) - .setPos(monster.get().pos.toProto()); + .setCityId(imd.getCityId()) + .setSceneId(imd.getCityData().getSceneId()) + .setGroupId(groupId) + .setMonsterId(monsterId) + .setLevel(getMonsterLevel(monster.get(), player.getWorld())) + .setIsAlive(true) + .setNextRefreshTime(Integer.MAX_VALUE) + .setRefreshInterval(Integer.MAX_VALUE) + .setPos(monster.get().pos.toProto()); if ("Boss".equals(imd.getMonsterCategory())) { var bossChest = group.searchBossChestInGroup(); @@ -136,11 +137,11 @@ public class WorldDataSystem extends BaseGameSystem { } return GameData.getInvestigationMonsterDataMap().values() - .parallelStream() - .filter(imd -> imd.getCityId() == cityId) - .map(imd -> this.getInvestigationMonster(player, imd)) - .filter(Objects::nonNull) - .toList(); + .parallelStream() + .filter(imd -> imd.getCityId() == cityId) + .map(imd -> this.getInvestigationMonster(player, imd)) + .filter(Objects::nonNull) + .toList(); } } diff --git a/src/main/java/emu/grasscutter/net/packet/BasePacket.java b/src/main/java/emu/grasscutter/net/packet/BasePacket.java index ff40b8ee0..63a896721 100644 --- a/src/main/java/emu/grasscutter/net/packet/BasePacket.java +++ b/src/main/java/emu/grasscutter/net/packet/BasePacket.java @@ -1,25 +1,22 @@ package emu.grasscutter.net.packet; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - import com.google.protobuf.GeneratedMessageV3; import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead; import emu.grasscutter.utils.Crypto; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + public class BasePacket { private static final int const1 = 17767; // 0x4567 private static final int const2 = -30293; // 0x89ab - + public boolean shouldEncrypt = true; private int opcode; private boolean shouldBuildHeader = false; - private byte[] header; private byte[] data; - // Encryption private boolean useDispatchKey; - public boolean shouldEncrypt = true; public BasePacket(int opcode) { this.opcode = opcode; diff --git a/src/main/java/emu/grasscutter/net/packet/Opcodes.java b/src/main/java/emu/grasscutter/net/packet/Opcodes.java index 0f818e351..221f18520 100644 --- a/src/main/java/emu/grasscutter/net/packet/Opcodes.java +++ b/src/main/java/emu/grasscutter/net/packet/Opcodes.java @@ -3,11 +3,15 @@ package emu.grasscutter.net.packet; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -@Retention(RetentionPolicy.RUNTIME) +@Retention(RetentionPolicy.RUNTIME) public @interface Opcodes { - /** Opcode for the packet/handler */ - int value(); - - /** HANDLER ONLY - will disable this handler from being registered */ - boolean disabled() default false; + /** + * Opcode for the packet/handler + */ + int value(); + + /** + * HANDLER ONLY - will disable this handler from being registered + */ + boolean disabled() default false; } diff --git a/src/main/java/emu/grasscutter/net/packet/PacketHandler.java b/src/main/java/emu/grasscutter/net/packet/PacketHandler.java index c8fbc3a89..f99618ab0 100644 --- a/src/main/java/emu/grasscutter/net/packet/PacketHandler.java +++ b/src/main/java/emu/grasscutter/net/packet/PacketHandler.java @@ -3,7 +3,7 @@ package emu.grasscutter.net.packet; import emu.grasscutter.server.game.GameSession; public abstract class PacketHandler { - protected static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; - - public abstract void handle(GameSession session, byte[] header, byte[] payload) throws Exception; + protected static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; + + public abstract void handle(GameSession session, byte[] header, byte[] payload) throws Exception; } diff --git a/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java b/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java index e442d4708..16b66ae0f 100644 --- a/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java +++ b/src/main/java/emu/grasscutter/net/packet/PacketOpcodes.java @@ -2,1924 +2,1924 @@ package emu.grasscutter.net.packet; public class PacketOpcodes { - // Empty - public static final int NONE = 0; + // Empty + public static final int NONE = 0; - // Opcodes - public static final int AbilityChangeNotify = 1159; - public static final int AbilityInvocationFailNotify = 1114; - public static final int AbilityInvocationFixedNotify = 1167; - public static final int AbilityInvocationsNotify = 1175; - public static final int AcceptCityReputationRequestReq = 2882; - public static final int AcceptCityReputationRequestRsp = 2865; - public static final int AchievementAllDataNotify = 2698; - public static final int AchievementUpdateNotify = 2693; - public static final int ActivityCoinInfoNotify = 2189; - public static final int ActivityCondStateChangeNotify = 2012; - public static final int ActivityDisableTransferPointInteractionNotify = 8969; - public static final int ActivityInfoNotify = 2134; - public static final int ActivityPlayOpenAnimNotify = 2136; - public static final int ActivitySaleChangeNotify = 2034; - public static final int ActivityScheduleInfoNotify = 2068; - public static final int ActivitySelectAvatarCardReq = 2043; - public static final int ActivitySelectAvatarCardRsp = 2130; - public static final int ActivityTakeAllScoreRewardReq = 8731; - public static final int ActivityTakeAllScoreRewardRsp = 8964; - public static final int ActivityTakeScoreRewardReq = 8869; - public static final int ActivityTakeScoreRewardRsp = 8852; - public static final int ActivityTakeWatcherRewardBatchReq = 2044; - public static final int ActivityTakeWatcherRewardBatchRsp = 2023; - public static final int ActivityTakeWatcherRewardReq = 2063; - public static final int ActivityTakeWatcherRewardRsp = 2082; - public static final int ActivityUpdateWatcherNotify = 2183; - public static final int AddBlacklistReq = 4041; - public static final int AddBlacklistRsp = 4070; - public static final int AddFriendNotify = 4019; - public static final int AddNoGachaAvatarCardNotify = 1787; - public static final int AddQuestContentProgressReq = 434; - public static final int AddQuestContentProgressRsp = 472; - public static final int AddRandTaskInfoNotify = 187; - public static final int AddSeenMonsterNotify = 235; - public static final int AdjustWorldLevelReq = 132; - public static final int AdjustWorldLevelRsp = 131; - public static final int AllCoopInfoNotify = 1998; - public static final int AllMarkPointNotify = 3156; - public static final int AllSeenMonsterNotify = 252; - public static final int AllWidgetDataNotify = 4300; - public static final int AnchorPointDataNotify = 4298; - public static final int AnchorPointOpReq = 4296; - public static final int AnchorPointOpRsp = 4286; - public static final int AnimatorForceSetAirMoveNotify = 337; - public static final int AntiAddictNotify = 103; - public static final int ArenaChallengeFinishNotify = 2169; - public static final int AskAddFriendNotify = 4044; - public static final int AskAddFriendReq = 4014; - public static final int AskAddFriendRsp = 4034; - public static final int AsterLargeInfoNotify = 2059; - public static final int AsterLittleInfoNotify = 2006; - public static final int AsterMidCampInfoNotify = 2142; - public static final int AsterMidInfoNotify = 2118; - public static final int AsterMiscInfoNotify = 2072; - public static final int AsterProgressInfoNotify = 2173; - public static final int AvatarAddNotify = 1756; - public static final int AvatarBuffAddNotify = 341; - public static final int AvatarBuffDelNotify = 370; - public static final int AvatarCardChangeReq = 641; - public static final int AvatarCardChangeRsp = 670; - public static final int AvatarChangeAnimHashReq = 1620; - public static final int AvatarChangeAnimHashRsp = 1694; - public static final int AvatarChangeCostumeNotify = 1759; - public static final int AvatarChangeCostumeReq = 1611; - public static final int AvatarChangeCostumeRsp = 1760; - public static final int AvatarChangeElementTypeReq = 1790; - public static final int AvatarChangeElementTypeRsp = 1781; - public static final int AvatarDataNotify = 1613; - public static final int AvatarDelNotify = 1621; - public static final int AvatarDieAnimationEndReq = 1665; - public static final int AvatarDieAnimationEndRsp = 1795; - public static final int AvatarEnterElementViewNotify = 326; - public static final int AvatarEquipAffixStartNotify = 1666; - public static final int AvatarEquipChangeNotify = 661; - public static final int AvatarExpeditionAllDataReq = 1748; - public static final int AvatarExpeditionAllDataRsp = 1671; - public static final int AvatarExpeditionCallBackReq = 1791; - public static final int AvatarExpeditionCallBackRsp = 1631; - public static final int AvatarExpeditionDataNotify = 1646; - public static final int AvatarExpeditionGetRewardReq = 1641; - public static final int AvatarExpeditionGetRewardRsp = 1707; - public static final int AvatarExpeditionStartReq = 1763; - public static final int AvatarExpeditionStartRsp = 1699; - public static final int AvatarFetterDataNotify = 1648; - public static final int AvatarFetterLevelRewardReq = 1653; - public static final int AvatarFetterLevelRewardRsp = 1691; - public static final int AvatarFightPropNotify = 1214; - public static final int AvatarFightPropUpdateNotify = 1234; - public static final int AvatarFlycloakChangeNotify = 1728; - public static final int AvatarFollowRouteNotify = 3300; - public static final int AvatarGainCostumeNotify = 1701; - public static final int AvatarGainFlycloakNotify = 1793; - public static final int AvatarLifeStateChangeNotify = 1282; - public static final int AvatarPromoteGetRewardReq = 1610; - public static final int AvatarPromoteGetRewardRsp = 1711; - public static final int AvatarPromoteReq = 1799; - public static final int AvatarPromoteRsp = 1681; - public static final int AvatarPropChangeReasonNotify = 1265; - public static final int AvatarPropNotify = 1259; - public static final int AvatarSatiationDataNotify = 1655; - public static final int AvatarSkillChangeNotify = 1042; - public static final int AvatarSkillDepotChangeNotify = 1064; - public static final int AvatarSkillInfoNotify = 1082; - public static final int AvatarSkillMaxChargeCountNotify = 1072; - public static final int AvatarSkillUpgradeReq = 1007; - public static final int AvatarSkillUpgradeRsp = 1091; - public static final int AvatarTeamUpdateNotify = 1744; - public static final int AvatarUnlockTalentNotify = 1054; - public static final int AvatarUpgradeReq = 1764; - public static final int AvatarUpgradeRsp = 1741; - public static final int AvatarWearFlycloakReq = 1700; - public static final int AvatarWearFlycloakRsp = 1745; - public static final int BackMyWorldReq = 280; - public static final int BackMyWorldRsp = 247; - public static final int BargainOfferPriceReq = 474; - public static final int BargainOfferPriceRsp = 446; - public static final int BargainStartNotify = 494; - public static final int BargainTerminateNotify = 484; - public static final int BattlePassAllDataNotify = 2648; - public static final int BattlePassBuySuccNotify = 2617; - public static final int BattlePassCurScheduleUpdateNotify = 2646; - public static final int BattlePassMissionDelNotify = 2609; - public static final int BattlePassMissionUpdateNotify = 2643; - public static final int BeginCameraSceneLookNotify = 260; - public static final int BigTalentPointConvertReq = 1014; - public static final int BigTalentPointConvertRsp = 1034; - public static final int BlessingAcceptAllGivePicReq = 2160; - public static final int BlessingAcceptAllGivePicRsp = 2159; - public static final int BlessingAcceptGivePicReq = 2091; - public static final int BlessingAcceptGivePicRsp = 2187; - public static final int BlessingGetAllRecvPicRecordListReq = 2010; - public static final int BlessingGetAllRecvPicRecordListRsp = 2111; - public static final int BlessingGetFriendPicListReq = 2128; - public static final int BlessingGetFriendPicListRsp = 2193; - public static final int BlessingGiveFriendPicReq = 2066; - public static final int BlessingGiveFriendPicRsp = 2053; - public static final int BlessingRecvFriendPicNotify = 2011; - public static final int BlessingRedeemRewardReq = 2100; - public static final int BlessingRedeemRewardRsp = 2145; - public static final int BlessingScanReq = 2004; - public static final int BlessingScanRsp = 2055; - public static final int BlitzRushParkourRestartReq = 8085; - public static final int BlitzRushParkourRestartRsp = 8538; - public static final int BlossomBriefInfoNotify = 2754; - public static final int BlossomChestCreateNotify = 2734; - public static final int BlossomChestInfoNotify = 882; - public static final int BonusActivityInfoReq = 2591; - public static final int BonusActivityInfoRsp = 2542; - public static final int BonusActivityUpdateNotify = 2507; - public static final int BossChestActivateNotify = 872; - public static final int BounceConjuringSettleNotify = 8434; - public static final int BuoyantCombatSettleNotify = 8387; - public static final int BuyBattlePassLevelReq = 2626; - public static final int BuyBattlePassLevelRsp = 2612; - public static final int BuyGoodsReq = 754; - public static final int BuyGoodsRsp = 764; - public static final int BuyResinReq = 630; - public static final int BuyResinRsp = 687; - public static final int CalcWeaponUpgradeReturnItemsReq = 601; - public static final int CalcWeaponUpgradeReturnItemsRsp = 698; - public static final int CanUseSkillNotify = 1027; - public static final int CancelCityReputationRequestReq = 2850; - public static final int CancelCityReputationRequestRsp = 2859; - public static final int CancelCoopTaskReq = 1976; - public static final int CancelCoopTaskRsp = 1962; - public static final int CancelFinishParentQuestNotify = 402; - public static final int CardProductRewardNotify = 4146; - public static final int ChallengeDataNotify = 923; - public static final int ChallengeRecordNotify = 974; - public static final int ChangeAvatarReq = 1704; - public static final int ChangeAvatarRsp = 1689; - public static final int ChangeGameTimeReq = 165; - public static final int ChangeGameTimeRsp = 150; - public static final int ChangeMailStarNotify = 1491; - public static final int ChangeMpTeamAvatarReq = 1660; - public static final int ChangeMpTeamAvatarRsp = 1747; - public static final int ChangeServerGlobalValueNotify = 46; - public static final int ChangeTeamNameReq = 1692; - public static final int ChangeTeamNameRsp = 1664; - public static final int ChangeWorldToSingleModeNotify = 3025; - public static final int ChangeWorldToSingleModeReq = 3243; - public static final int ChangeWorldToSingleModeRsp = 3271; - public static final int ChannelerSlabCheckEnterLoopDungeonReq = 8678; - public static final int ChannelerSlabCheckEnterLoopDungeonRsp = 8961; - public static final int ChannelerSlabEnterLoopDungeonReq = 8928; - public static final int ChannelerSlabEnterLoopDungeonRsp = 8892; - public static final int ChannelerSlabLoopDungeonChallengeInfoNotify = 8499; - public static final int ChannelerSlabLoopDungeonSelectConditionReq = 8368; - public static final int ChannelerSlabLoopDungeonSelectConditionRsp = 8943; - public static final int ChannelerSlabLoopDungeonTakeFirstPassRewardReq = 8779; - public static final int ChannelerSlabLoopDungeonTakeFirstPassRewardRsp = 8654; - public static final int ChannelerSlabLoopDungeonTakeScoreRewardReq = 8751; - public static final int ChannelerSlabLoopDungeonTakeScoreRewardRsp = 8186; - public static final int ChannelerSlabOneOffDungeonInfoNotify = 8038; - public static final int ChannelerSlabOneOffDungeonInfoReq = 8069; - public static final int ChannelerSlabOneOffDungeonInfoRsp = 8731; - public static final int ChannelerSlabSaveAssistInfoReq = 8304; - public static final int ChannelerSlabSaveAssistInfoRsp = 8443; - public static final int ChannelerSlabStageActiveChallengeIndexNotify = 8647; - public static final int ChannelerSlabStageOneofDungeonNotify = 8203; - public static final int ChannelerSlabTakeoffBuffReq = 8329; - public static final int ChannelerSlabTakeoffBuffRsp = 8646; - public static final int ChannelerSlabWearBuffReq = 8487; - public static final int ChannelerSlabWearBuffRsp = 8651; - public static final int ChapterStateNotify = 427; - public static final int ChatChannelDataNotify = 5041; - public static final int ChatChannelUpdateNotify = 4957; - public static final int ChatHistoryNotify = 3301; - public static final int CheckAddItemExceedLimitNotify = 685; - public static final int CheckSegmentCRCNotify = 56; - public static final int CheckSegmentCRCReq = 23; - public static final int ChessEscapedMonstersNotify = 5389; - public static final int ChessLeftMonstersNotify = 5376; - public static final int ChessManualRefreshCardsReq = 5306; - public static final int ChessManualRefreshCardsRsp = 5390; - public static final int ChessPickCardNotify = 5303; - public static final int ChessPickCardReq = 5301; - public static final int ChessPickCardRsp = 5398; - public static final int ChessPlayerInfoNotify = 5392; - public static final int ChessSelectedCardsNotify = 5385; - public static final int ChooseCurAvatarTeamReq = 1650; - public static final int ChooseCurAvatarTeamRsp = 1625; - public static final int CityReputationDataNotify = 2827; - public static final int CityReputationLevelupNotify = 2814; - public static final int ClearRoguelikeCurseNotify = 8565; - public static final int ClientAIStateNotify = 1129; - public static final int ClientAbilitiesInitFinishCombineNotify = 1172; - public static final int ClientAbilityChangeNotify = 1107; - public static final int ClientAbilityInitBeginNotify = 1154; - public static final int ClientAbilityInitFinishNotify = 1164; - public static final int ClientBulletCreateNotify = 94; - public static final int ClientCollectorDataNotify = 4267; - public static final int ClientHashDebugNotify = 3234; - public static final int ClientLoadingCostumeVerificationNotify = 3387; - public static final int ClientLockGameTimeNotify = 189; - public static final int ClientNewMailNotify = 1450; - public static final int ClientPauseNotify = 276; - public static final int ClientReconnectNotify = 7; - public static final int ClientReportNotify = 29; - public static final int ClientScriptEventNotify = 248; - public static final int ClientTransmitReq = 271; - public static final int ClientTransmitRsp = 202; - public static final int ClientTriggerEventNotify = 191; - public static final int CloseCommonTipsNotify = 3196; - public static final int ClosedItemNotify = 689; - public static final int CodexDataFullNotify = 4203; - public static final int CodexDataUpdateNotify = 4207; - public static final int CombatInvocationsNotify = 387; - public static final int CombineDataNotify = 690; - public static final int CombineFormulaDataNotify = 692; - public static final int CombineReq = 616; - public static final int CombineRsp = 637; - public static final int CommonPlayerTipsNotify = 8076; - public static final int CompoundDataNotify = 118; - public static final int CompoundUnlockNotify = 155; - public static final int CookDataNotify = 157; - public static final int CookGradeDataNotify = 126; - public static final int CookRecipeDataNotify = 186; - public static final int CoopCgShowNotify = 1957; - public static final int CoopCgUpdateNotify = 1989; - public static final int CoopChapterUpdateNotify = 1982; - public static final int CoopDataNotify = 1994; - public static final int CoopPointUpdateNotify = 1951; - public static final int CoopProgressUpdateNotify = 1990; - public static final int CoopRewardUpdateNotify = 1981; - public static final int CreateMassiveEntityNotify = 340; - public static final int CreateMassiveEntityReq = 349; - public static final int CreateMassiveEntityRsp = 397; - public static final int CreateVehicleReq = 874; - public static final int CreateVehicleRsp = 846; - public static final int CutSceneBeginNotify = 295; - public static final int CutSceneEndNotify = 283; - public static final int CutSceneFinishNotify = 228; - public static final int DailyTaskDataNotify = 111; - public static final int DailyTaskFilterCityReq = 199; - public static final int DailyTaskFilterCityRsp = 178; - public static final int DailyTaskProgressNotify = 160; - public static final int DailyTaskScoreRewardNotify = 193; - public static final int DailyTaskUnlockedCitiesNotify = 180; - public static final int DataResVersionNotify = 140; - public static final int DealAddFriendReq = 4072; - public static final int DealAddFriendRsp = 4082; - public static final int DebugNotify = 101; - public static final int DelMailReq = 1434; - public static final int DelMailRsp = 1472; - public static final int DelScenePlayTeamEntityNotify = 3214; - public static final int DelTeamEntityNotify = 330; - public static final int DeleteFriendNotify = 4023; - public static final int DeleteFriendReq = 4059; - public static final int DeleteFriendRsp = 4007; - public static final int DestroyMassiveEntityNotify = 311; - public static final int DestroyMaterialReq = 608; - public static final int DestroyMaterialRsp = 679; - public static final int DigActivityChangeGadgetStateReq = 8140; - public static final int DigActivityChangeGadgetStateRsp = 8656; - public static final int DigActivityMarkPointChangeNotify = 8585; - public static final int DisableRoguelikeTrapNotify = 8007; - public static final int DoGachaReq = 1554; - public static final int DoGachaRsp = 1564; - public static final int DoRoguelikeDungeonCardGachaReq = 8427; - public static final int DoRoguelikeDungeonCardGachaRsp = 8567; - public static final int DoSetPlayerBornDataNotify = 161; - public static final int DraftGuestReplyInviteNotify = 5482; - public static final int DraftGuestReplyInviteReq = 5434; - public static final int DraftGuestReplyInviteRsp = 5472; - public static final int DraftGuestReplyTwiceConfirmNotify = 5442; - public static final int DraftGuestReplyTwiceConfirmReq = 5459; - public static final int DraftGuestReplyTwiceConfirmRsp = 5407; - public static final int DraftInviteResultNotify = 5465; - public static final int DraftOwnerInviteNotify = 5414; - public static final int DraftOwnerStartInviteReq = 5454; - public static final int DraftOwnerStartInviteRsp = 5464; - public static final int DraftOwnerTwiceConfirmNotify = 5450; - public static final int DraftTwiceConfirmResultNotify = 5491; - public static final int DragonSpineChapterFinishNotify = 2182; - public static final int DragonSpineChapterOpenNotify = 2126; - public static final int DragonSpineChapterProgressChangeNotify = 2155; - public static final int DragonSpineCoinChangeNotify = 2076; - public static final int DropHintNotify = 633; - public static final int DropItemReq = 650; - public static final int DropItemRsp = 659; - public static final int DungeonCandidateTeamChangeAvatarReq = 988; - public static final int DungeonCandidateTeamChangeAvatarRsp = 949; - public static final int DungeonCandidateTeamCreateReq = 957; - public static final int DungeonCandidateTeamCreateRsp = 986; - public static final int DungeonCandidateTeamDismissNotify = 913; - public static final int DungeonCandidateTeamInfoNotify = 946; - public static final int DungeonCandidateTeamInviteNotify = 984; - public static final int DungeonCandidateTeamInviteReq = 926; - public static final int DungeonCandidateTeamInviteRsp = 933; - public static final int DungeonCandidateTeamKickReq = 916; - public static final int DungeonCandidateTeamKickRsp = 937; - public static final int DungeonCandidateTeamLeaveReq = 925; - public static final int DungeonCandidateTeamLeaveRsp = 918; - public static final int DungeonCandidateTeamPlayerLeaveNotify = 970; - public static final int DungeonCandidateTeamRefuseNotify = 941; - public static final int DungeonCandidateTeamReplyInviteReq = 958; - public static final int DungeonCandidateTeamReplyInviteRsp = 905; - public static final int DungeonCandidateTeamSetChangingAvatarReq = 979; - public static final int DungeonCandidateTeamSetChangingAvatarRsp = 945; - public static final int DungeonCandidateTeamSetReadyReq = 971; - public static final int DungeonCandidateTeamSetReadyRsp = 902; - public static final int DungeonChallengeBeginNotify = 961; - public static final int DungeonChallengeFinishNotify = 956; - public static final int DungeonDataNotify = 966; - public static final int DungeonDieOptionReq = 907; - public static final int DungeonDieOptionRsp = 991; - public static final int DungeonEntryInfoReq = 967; - public static final int DungeonEntryInfoRsp = 975; - public static final int DungeonEntryToBeExploreNotify = 3313; - public static final int DungeonFollowNotify = 919; - public static final int DungeonGetStatueDropReq = 944; - public static final int DungeonGetStatueDropRsp = 994; - public static final int DungeonInterruptChallengeReq = 993; - public static final int DungeonInterruptChallengeRsp = 930; - public static final int DungeonPlayerDieNotify = 959; - public static final int DungeonPlayerDieReq = 929; - public static final int DungeonPlayerDieRsp = 927; - public static final int DungeonRestartInviteNotify = 904; - public static final int DungeonRestartInviteReplyNotify = 936; - public static final int DungeonRestartInviteReplyReq = 920; - public static final int DungeonRestartInviteReplyRsp = 943; - public static final int DungeonRestartReq = 953; - public static final int DungeonRestartResultNotify = 908; - public static final int DungeonRestartRsp = 938; - public static final int DungeonReviseLevelNotify = 901; - public static final int DungeonSettleNotify = 950; - public static final int DungeonShowReminderNotify = 942; - public static final int DungeonSlipRevivePointActivateReq = 911; - public static final int DungeonSlipRevivePointActivateRsp = 960; - public static final int DungeonWayPointActivateReq = 982; - public static final int DungeonWayPointActivateRsp = 965; - public static final int DungeonWayPointNotify = 972; - public static final int EchoNotify = 44; - public static final int EchoShellTakeRewardReq = 8078; - public static final int EchoShellTakeRewardRsp = 8523; - public static final int EchoShellUpdateNotify = 8377; - public static final int EffigyChallengeInfoNotify = 2038; - public static final int EffigyChallengeResultNotify = 2028; - public static final int EndCameraSceneLookNotify = 293; - public static final int EnterChessDungeonReq = 8341; - public static final int EnterChessDungeonRsp = 8947; - public static final int EnterFishingReq = 5848; - public static final int EnterFishingRsp = 5843; - public static final int EnterMechanicusDungeonReq = 3959; - public static final int EnterMechanicusDungeonRsp = 3907; - public static final int EnterRoguelikeDungeonNotify = 8557; - public static final int EnterSceneDoneReq = 269; - public static final int EnterSceneDoneRsp = 281; - public static final int EnterScenePeerNotify = 215; - public static final int EnterSceneReadyReq = 300; - public static final int EnterSceneReadyRsp = 239; - public static final int EnterSceneWeatherAreaNotify = 288; - public static final int EnterTransPointRegionNotify = 227; - public static final int EnterTrialAvatarActivityDungeonReq = 2084; - public static final int EnterTrialAvatarActivityDungeonRsp = 2154; - public static final int EnterWorldAreaReq = 233; - public static final int EnterWorldAreaRsp = 216; - public static final int EntityAiKillSelfNotify = 308; - public static final int EntityAiSyncNotify = 320; - public static final int EntityAuthorityChangeNotify = 384; - public static final int EntityConfigHashNotify = 3103; - public static final int EntityFightPropChangeReasonNotify = 1272; - public static final int EntityFightPropNotify = 1254; - public static final int EntityFightPropUpdateNotify = 1264; - public static final int EntityForceSyncReq = 237; - public static final int EntityForceSyncRsp = 225; - public static final int EntityJumpNotify = 219; - public static final int EntityMoveRoomNotify = 3060; - public static final int EntityPropNotify = 1267; - public static final int EntityTagChangeNotify = 3428; - public static final int EquipRoguelikeRuneReq = 8526; - public static final int EquipRoguelikeRuneRsp = 8572; - public static final int EvtAiSyncCombatThreatInfoNotify = 338; - public static final int EvtAiSyncSkillCdNotify = 325; - public static final int EvtAnimatorParameterNotify = 375; - public static final int EvtAnimatorStateChangedNotify = 359; - public static final int EvtAvatarEnterFocusNotify = 394; - public static final int EvtAvatarExitFocusNotify = 374; - public static final int EvtAvatarLockChairReq = 379; - public static final int EvtAvatarLockChairRsp = 345; - public static final int EvtAvatarSitDownNotify = 302; - public static final int EvtAvatarStandUpNotify = 388; - public static final int EvtAvatarUpdateFocusNotify = 346; - public static final int EvtBeingHitNotify = 367; - public static final int EvtBeingHitsCombineNotify = 318; - public static final int EvtBulletDeactiveNotify = 342; - public static final int EvtBulletHitNotify = 391; - public static final int EvtBulletMoveNotify = 344; - public static final int EvtCostStaminaNotify = 365; - public static final int EvtCreateGadgetNotify = 314; - public static final int EvtDestroyGadgetNotify = 334; - public static final int EvtDestroyServerGadgetNotify = 336; - public static final int EvtDoSkillSuccNotify = 364; - public static final int EvtEntityRenderersChangedNotify = 316; - public static final int EvtEntityStartDieEndNotify = 329; - public static final int EvtFaceToDirNotify = 382; - public static final int EvtFaceToEntityNotify = 372; - public static final int EvtRushMoveNotify = 307; - public static final int EvtSetAttackTargetNotify = 350; - public static final int ExecuteGadgetLuaReq = 217; - public static final int ExecuteGadgetLuaRsp = 224; - public static final int ExecuteGroupTriggerReq = 204; - public static final int ExecuteGroupTriggerRsp = 220; - public static final int ExitFishingReq = 5817; - public static final int ExitFishingRsp = 5826; - public static final int ExitSceneWeatherAreaNotify = 249; - public static final int ExitTransPointRegionNotify = 266; - public static final int ExpeditionChallengeEnterRegionNotify = 2077; - public static final int ExpeditionChallengeFinishedNotify = 2075; - public static final int ExpeditionRecallReq = 2008; - public static final int ExpeditionRecallRsp = 2015; - public static final int ExpeditionStartReq = 2002; - public static final int ExpeditionStartRsp = 2177; - public static final int ExpeditionTakeRewardReq = 2129; - public static final int ExpeditionTakeRewardRsp = 2158; - public static final int FindHilichurlAcceptQuestNotify = 8170; - public static final int FindHilichurlFinishSecondQuestNotify = 8326; - public static final int FinishDeliveryNotify = 2110; - public static final int FinishMainCoopReq = 1986; - public static final int FinishMainCoopRsp = 1965; - public static final int FinishedParentQuestNotify = 464; - public static final int FinishedParentQuestUpdateNotify = 414; - public static final int FireworkNotify = 5934; - public static final int FireworkReq = 6068; - public static final int FireworkRsp = 5918; - public static final int FireworkSetNotify = 6079; - public static final int FireworkSetReq = 6099; - public static final int FireworkSetRsp = 5969; - public static final int FishAttractNotify = 5812; - public static final int FishBaitGoneNotify = 5825; - public static final int FishBattleBeginReq = 5835; - public static final int FishBattleBeginRsp = 5821; - public static final int FishBattleEndReq = 5801; - public static final int FishBattleEndRsp = 5802; - public static final int FishBiteReq = 5839; - public static final int FishBiteRsp = 5831; - public static final int FishCastRodReq = 5836; - public static final int FishCastRodRsp = 5815; - public static final int FishChosenNotify = 5844; - public static final int FishEscapeNotify = 5832; - public static final int FishPoolDataNotify = 5840; - public static final int FishingGallerySettleNotify = 8594; - public static final int FleurFairBalloonSettleNotify = 2200; - public static final int FleurFairBuffEnergyNotify = 5302; - public static final int FleurFairFallSettleNotify = 2027; - public static final int FleurFairFinishGalleryStageNotify = 5349; - public static final int FleurFairMusicGameSettleReq = 2086; - public static final int FleurFairMusicGameSettleRsp = 2033; - public static final int FleurFairMusicGameStartReq = 2150; - public static final int FleurFairMusicGameStartRsp = 2174; - public static final int FleurFairReplayMiniGameReq = 2165; - public static final int FleurFairReplayMiniGameRsp = 2192; - public static final int FleurFairStageSettleNotify = 5388; - public static final int FlightActivityRestartReq = 2039; - public static final int FlightActivityRestartRsp = 2093; - public static final int FlightActivitySettleNotify = 2115; - public static final int FocusAvatarReq = 1712; - public static final int FocusAvatarRsp = 1604; - public static final int ForceAddPlayerFriendReq = 4004; - public static final int ForceAddPlayerFriendRsp = 4020; - public static final int ForceDragAvatarNotify = 3017; - public static final int ForceDragBackTransferNotify = 3245; - public static final int ForgeDataNotify = 603; - public static final int ForgeFormulaDataNotify = 606; - public static final int ForgeGetQueueDataReq = 618; - public static final int ForgeGetQueueDataRsp = 658; - public static final int ForgeQueueDataNotify = 625; - public static final int ForgeQueueManipulateReq = 602; - public static final int ForgeQueueManipulateRsp = 688; - public static final int ForgeStartReq = 605; - public static final int ForgeStartRsp = 671; - public static final int FoundationNotify = 861; - public static final int FoundationReq = 827; - public static final int FoundationRsp = 866; - public static final int FriendInfoChangeNotify = 4092; - public static final int FunitureMakeMakeInfoChangeNotify = 4588; - public static final int FurnitureCurModuleArrangeCountNotify = 4864; - public static final int FurnitureMakeBeHelpedNotify = 4694; - public static final int FurnitureMakeCancelReq = 4619; - public static final int FurnitureMakeCancelRsp = 4825; - public static final int FurnitureMakeFinishNotify = 4658; - public static final int FurnitureMakeHelpReq = 4851; - public static final int FurnitureMakeHelpRsp = 4841; - public static final int FurnitureMakeReq = 4681; - public static final int FurnitureMakeRsp = 4506; - public static final int FurnitureMakeStartReq = 4552; - public static final int FurnitureMakeStartRsp = 4487; - public static final int GMShowNavMeshReq = 2304; - public static final int GMShowNavMeshRsp = 2320; - public static final int GMShowObstacleReq = 2353; - public static final int GMShowObstacleRsp = 2338; - public static final int GachaOpenWishNotify = 1572; - public static final int GachaSimpleInfoNotify = 1582; - public static final int GachaWishReq = 1514; - public static final int GachaWishRsp = 1534; - public static final int GadgetAutoPickDropInfoNotify = 842; - public static final int GadgetChainLevelChangeNotify = 819; - public static final int GadgetChainLevelUpdateNotify = 823; - public static final int GadgetCustomTreeInfoNotify = 833; - public static final int GadgetGeneralRewardInfoNotify = 891; - public static final int GadgetInteractReq = 867; - public static final int GadgetInteractRsp = 875; - public static final int GadgetPlayDataNotify = 859; - public static final int GadgetPlayStartNotify = 865; - public static final int GadgetPlayStopNotify = 850; - public static final int GadgetPlayUidOpNotify = 807; - public static final int GadgetStateNotify = 854; - public static final int GadgetTalkChangeNotify = 856; - public static final int GalleryBalloonScoreNotify = 5554; - public static final int GalleryBalloonShootNotify = 5575; - public static final int GalleryBounceConjuringHitNotify = 5527; - public static final int GalleryBrokenFloorFallNotify = 5507; - public static final int GalleryBulletHitNotify = 5559; - public static final int GalleryFallCatchNotify = 5514; - public static final int GalleryFallScoreNotify = 5534; - public static final int GalleryFlowerCatchNotify = 5565; - public static final int GalleryPreStartNotify = 5550; - public static final int GalleryStartNotify = 5567; - public static final int GalleryStopNotify = 5564; - public static final int GallerySumoKillMonsterNotify = 5566; - public static final int GetActivityInfoReq = 2116; - public static final int GetActivityInfoRsp = 2140; - public static final int GetActivityScheduleReq = 2153; - public static final int GetActivityScheduleRsp = 2032; - public static final int GetActivityShopSheetInfoReq = 772; - public static final int GetActivityShopSheetInfoRsp = 782; - public static final int GetAllActivatedBargainDataReq = 413; - public static final int GetAllActivatedBargainDataRsp = 457; - public static final int GetAllH5ActivityInfoReq = 5693; - public static final int GetAllH5ActivityInfoRsp = 5698; - public static final int GetAllMailReq = 1459; - public static final int GetAllMailRsp = 1407; - public static final int GetAllSceneGalleryInfoReq = 5572; - public static final int GetAllSceneGalleryInfoRsp = 5582; - public static final int GetAllUnlockNameCardReq = 4046; - public static final int GetAllUnlockNameCardRsp = 4084; - public static final int GetAreaExplorePointReq = 258; - public static final int GetAreaExplorePointRsp = 205; - public static final int GetAuthSalesmanInfoReq = 2139; - public static final int GetAuthSalesmanInfoRsp = 2123; - public static final int GetAuthkeyReq = 1482; - public static final int GetAuthkeyRsp = 1465; - public static final int GetBargainDataReq = 441; - public static final int GetBargainDataRsp = 470; - public static final int GetBattlePassProductReq = 2639; - public static final int GetBattlePassProductRsp = 2631; - public static final int GetBlossomBriefInfoListReq = 2767; - public static final int GetBlossomBriefInfoListRsp = 2775; - public static final int GetBonusActivityRewardReq = 2529; - public static final int GetBonusActivityRewardRsp = 2527; - public static final int GetChatEmojiCollectionReq = 4021; - public static final int GetChatEmojiCollectionRsp = 4001; - public static final int GetCityHuntingOfferReq = 4309; - public static final int GetCityHuntingOfferRsp = 4346; - public static final int GetCityReputationInfoReq = 2867; - public static final int GetCityReputationInfoRsp = 2875; - public static final int GetCityReputationMapInfoReq = 2807; - public static final int GetCityReputationMapInfoRsp = 2891; - public static final int GetCompoundDataReq = 158; - public static final int GetCompoundDataRsp = 105; - public static final int GetDailyDungeonEntryInfoReq = 997; - public static final int GetDailyDungeonEntryInfoRsp = 940; - public static final int GetDungeonEntryExploreConditionReq = 3449; - public static final int GetDungeonEntryExploreConditionRsp = 3413; - public static final int GetExpeditionAssistInfoListReq = 2180; - public static final int GetExpeditionAssistInfoListRsp = 2197; - public static final int GetFriendShowAvatarInfoReq = 4060; - public static final int GetFriendShowAvatarInfoRsp = 4093; - public static final int GetFriendShowNameCardInfoReq = 4053; - public static final int GetFriendShowNameCardInfoRsp = 4038; - public static final int GetFurnitureCurModuleArrangeCountReq = 4899; - public static final int GetGachaInfoReq = 1567; - public static final int GetGachaInfoRsp = 1575; - public static final int GetHomeLevelUpRewardReq = 4821; - public static final int GetHomeLevelUpRewardRsp = 4585; - public static final int GetHuntingOfferRewardReq = 4336; - public static final int GetHuntingOfferRewardRsp = 4315; - public static final int GetInvestigationMonsterReq = 1909; - public static final int GetInvestigationMonsterRsp = 1923; - public static final int GetMailItemReq = 1464; - public static final int GetMailItemRsp = 1414; - public static final int GetMapAreaReq = 3084; - public static final int GetMapAreaRsp = 3458; - public static final int GetMapMarkTipsReq = 3342; - public static final int GetMapMarkTipsRsp = 3465; - public static final int GetMechanicusInfoReq = 3967; - public static final int GetMechanicusInfoRsp = 3975; - public static final int GetNextResourceInfoReq = 185; - public static final int GetNextResourceInfoRsp = 173; - public static final int GetOnlinePlayerInfoReq = 66; - public static final int GetOnlinePlayerInfoRsp = 61; - public static final int GetOnlinePlayerListReq = 82; - public static final int GetOnlinePlayerListRsp = 65; - public static final int GetOpActivityInfoReq = 5167; - public static final int GetOpActivityInfoRsp = 5175; - public static final int GetPlayerAskFriendListReq = 4079; - public static final int GetPlayerAskFriendListRsp = 4045; - public static final int GetPlayerBlacklistReq = 4005; - public static final int GetPlayerBlacklistRsp = 4071; - public static final int GetPlayerFriendListReq = 4067; - public static final int GetPlayerFriendListRsp = 4075; - public static final int GetPlayerHomeCompInfoReq = 4511; - public static final int GetPlayerMpModeAvailabilityReq = 1839; - public static final int GetPlayerMpModeAvailabilityRsp = 1831; - public static final int GetPlayerSocialDetailReq = 4065; - public static final int GetPlayerSocialDetailRsp = 4050; - public static final int GetPlayerTokenReq = 167; - public static final int GetPlayerTokenRsp = 175; - public static final int GetPushTipsRewardReq = 2246; - public static final int GetPushTipsRewardRsp = 2284; - public static final int GetQuestTalkHistoryReq = 482; - public static final int GetQuestTalkHistoryRsp = 465; - public static final int GetRecentMpPlayerListReq = 4026; - public static final int GetRecentMpPlayerListRsp = 4033; - public static final int GetRegionSearchReq = 5636; - public static final int GetReunionMissionInfoReq = 5089; - public static final int GetReunionMissionInfoRsp = 5081; - public static final int GetReunionPrivilegeInfoReq = 5076; - public static final int GetReunionPrivilegeInfoRsp = 5062; - public static final int GetReunionSignInInfoReq = 5086; - public static final int GetReunionSignInInfoRsp = 5065; - public static final int GetSceneAreaReq = 244; - public static final int GetSceneAreaRsp = 294; - public static final int GetSceneNpcPositionReq = 564; - public static final int GetSceneNpcPositionRsp = 514; - public static final int GetScenePerformanceReq = 3283; - public static final int GetScenePerformanceRsp = 3274; - public static final int GetScenePointReq = 242; - public static final int GetScenePointRsp = 229; - public static final int GetShopReq = 767; - public static final int GetShopRsp = 775; - public static final int GetShopmallDataReq = 714; - public static final int GetShopmallDataRsp = 734; - public static final int GetSignInRewardReq = 2514; - public static final int GetSignInRewardRsp = 2534; - public static final int GetWidgetSlotReq = 4255; - public static final int GetWidgetSlotRsp = 4266; - public static final int GetWorldMpInfoReq = 3479; - public static final int GetWorldMpInfoRsp = 3118; - public static final int GiveUpRoguelikeDungeonCardReq = 8292; - public static final int GiveUpRoguelikeDungeonCardRsp = 8752; - public static final int GivingRecordChangeNotify = 136; - public static final int GivingRecordNotify = 143; - public static final int GmTalkNotify = 84; - public static final int GmTalkReq = 75; - public static final int GmTalkRsp = 54; - public static final int GrantRewardNotify = 613; - public static final int GroupLinkAllNotify = 5798; - public static final int GroupLinkChangeNotify = 5793; - public static final int GroupLinkDeleteNotify = 5759; - public static final int GroupSuiteNotify = 3263; - public static final int GroupUnloadNotify = 3167; - public static final int GuestBeginEnterSceneNotify = 3195; - public static final int GuestPostEnterSceneNotify = 3012; - public static final int H5ActivityIdsNotify = 5659; - public static final int HideAndSeekPlayerReadyNotify = 5330; - public static final int HideAndSeekPlayerSetAvatarNotify = 5387; - public static final int HideAndSeekSelectAvatarReq = 5397; - public static final int HideAndSeekSelectAvatarRsp = 5340; - public static final int HideAndSeekSelectSkillReq = 8896; - public static final int HideAndSeekSelectSkillRsp = 8715; - public static final int HideAndSeekSetReadyReq = 5311; - public static final int HideAndSeekSetReadyRsp = 5360; - public static final int HideAndSeekSettleNotify = 5393; - public static final int HitClientTrivialNotify = 278; - public static final int HitTreeNotify = 3299; - public static final int HomeAvatarAllFinishRewardNotify = 4504; - public static final int HomeAvatarCostumeChangeNotify = 4651; - public static final int HomeAvatarRewardEventGetReq = 4859; - public static final int HomeAvatarRewardEventGetRsp = 4784; - public static final int HomeAvatarRewardEventNotify = 4682; - public static final int HomeAvatarSummonAllEventNotify = 4892; - public static final int HomeAvatarSummonEventReq = 4708; - public static final int HomeAvatarSummonEventRsp = 4633; - public static final int HomeAvatarSummonFinishReq = 4510; - public static final int HomeAvatarSummonFinishRsp = 4566; - public static final int HomeAvatarTalkFinishInfoNotify = 4517; - public static final int HomeAvatarTalkReq = 4603; - public static final int HomeAvatarTalkRsp = 4484; - public static final int HomeAvtarAllFinishRewardNotify = 4480; - public static final int HomeBasicInfoNotify = 4501; - public static final int HomeBlockNotify = 4857; - public static final int HomeChangeEditModeReq = 4533; - public static final int HomeChangeEditModeRsp = 4862; - public static final int HomeChangeModuleReq = 4789; - public static final int HomeChangeModuleRsp = 4876; - public static final int HomeChooseModuleReq = 4843; - public static final int HomeChooseModuleRsp = 4736; - public static final int HomeComfortInfoNotify = 4816; - public static final int HomeCustomFurnitureInfoNotify = 4647; - public static final int HomeEditCustomFurnitureReq = 4558; - public static final int HomeEditCustomFurnitureRsp = 4749; - public static final int HomeFishFarmingInfoNotify = 4807; - public static final int HomeGetArrangementInfoReq = 4538; - public static final int HomeGetArrangementInfoRsp = 4704; - public static final int HomeGetBasicInfoReq = 4817; - public static final int HomeGetFishFarmingInfoReq = 4575; - public static final int HomeGetFishFarmingInfoRsp = 4849; - public static final int HomeGetOnlineStatusReq = 4589; - public static final int HomeGetOnlineStatusRsp = 4642; - public static final int HomeKickPlayerReq = 4610; - public static final int HomeKickPlayerRsp = 4889; - public static final int HomeLimitedShopBuyGoodsReq = 4471; - public static final int HomeLimitedShopBuyGoodsRsp = 4883; - public static final int HomeLimitedShopGoodsListReq = 4769; - public static final int HomeLimitedShopGoodsListRsp = 4451; - public static final int HomeLimitedShopInfoChangeNotify = 4722; - public static final int HomeLimitedShopInfoNotify = 4584; - public static final int HomeLimitedShopInfoReq = 4476; - public static final int HomeLimitedShopInfoRsp = 4791; - public static final int HomeMarkPointNotify = 4697; - public static final int HomeModuleSeenReq = 4672; - public static final int HomeModuleSeenRsp = 4507; - public static final int HomeModuleUnlockNotify = 4700; - public static final int HomePlantFieldNotify = 4710; - public static final int HomePlantInfoNotify = 4545; - public static final int HomePlantInfoReq = 4645; - public static final int HomePlantInfoRsp = 4848; - public static final int HomePlantSeedReq = 4607; - public static final int HomePlantSeedRsp = 4546; - public static final int HomePlantWeedReq = 4614; - public static final int HomePlantWeedRsp = 4671; - public static final int HomePriorCheckNotify = 4872; - public static final int HomeResourceNotify = 4753; - public static final int HomeResourceTakeFetterExpReq = 4534; - public static final int HomeResourceTakeFetterExpRsp = 4808; - public static final int HomeResourceTakeHomeCoinReq = 4688; - public static final int HomeResourceTakeHomeCoinRsp = 4554; - public static final int HomeSceneInitFinishReq = 4900; - public static final int HomeSceneInitFinishRsp = 4780; - public static final int HomeSceneJumpReq = 4665; - public static final int HomeSceneJumpRsp = 4482; - public static final int HomeTransferReq = 4537; - public static final int HomeTransferRsp = 4623; - public static final int HomeUpdateArrangementInfoReq = 4840; - public static final int HomeUpdateArrangementInfoRsp = 4776; - public static final int HomeUpdateFishFarmingInfoReq = 4746; - public static final int HomeUpdateFishFarmingInfoRsp = 4551; - public static final int HostPlayerNotify = 354; - public static final int HuntingFailNotify = 4335; - public static final int HuntingGiveUpReq = 4301; - public static final int HuntingGiveUpRsp = 4302; - public static final int HuntingOngoingNotify = 4321; - public static final int HuntingRevealClueNotify = 4332; - public static final int HuntingRevealFinalNotify = 4339; - public static final int HuntingStartNotify = 4344; - public static final int HuntingSuccessNotify = 4331; - public static final int InBattleMechanicusBuildingPointsNotify = 5372; - public static final int InBattleMechanicusCardResultNotify = 5342; - public static final int InBattleMechanicusConfirmCardNotify = 5391; - public static final int InBattleMechanicusConfirmCardReq = 5359; - public static final int InBattleMechanicusConfirmCardRsp = 5307; - public static final int InBattleMechanicusEscapeMonsterNotify = 5320; - public static final int InBattleMechanicusLeftMonsterNotify = 5334; - public static final int InBattleMechanicusPickCardNotify = 5350; - public static final int InBattleMechanicusPickCardReq = 5382; - public static final int InBattleMechanicusPickCardRsp = 5365; - public static final int InBattleMechanicusSettleNotify = 5327; - public static final int InteractDailyDungeonInfoNotify = 987; - public static final int InterruptGalleryReq = 5591; - public static final int InterruptGalleryRsp = 5542; - public static final int InvestigationMonsterUpdateNotify = 1920; - public static final int ItemAddHintNotify = 614; - public static final int ItemCdGroupTimeNotify = 626; - public static final int ItemGivingReq = 108; - public static final int ItemGivingRsp = 179; - public static final int JoinHomeWorldFailNotify = 4847; - public static final int JoinPlayerFailNotify = 251; - public static final int JoinPlayerSceneReq = 285; - public static final int JoinPlayerSceneRsp = 273; - public static final int KeepAliveNotify = 67; - public static final int LeaveSceneReq = 275; - public static final int LeaveSceneRsp = 254; - public static final int LeaveWorldNotify = 3009; - public static final int LevelupCityReq = 243; - public static final int LevelupCityRsp = 236; - public static final int LifeStateChangeNotify = 1275; - public static final int LiveEndNotify = 886; - public static final int LiveStartNotify = 870; - public static final int LoadActivityTerrainNotify = 2146; - public static final int LuaEnvironmentEffectNotify = 3136; - public static final int LuaSetOptionNotify = 343; - public static final int LunaRiteAreaFinishNotify = 8956; - public static final int LunaRiteGroupBundleRegisterNotify = 8279; - public static final int LunaRiteHintPointRemoveNotify = 8793; - public static final int LunaRiteHintPointReq = 8114; - public static final int LunaRiteHintPointRsp = 8873; - public static final int LunaRiteSacrificeReq = 8182; - public static final int LunaRiteSacrificeRsp = 8159; - public static final int LunaRiteTakeSacrificeRewardReq = 8999; - public static final int LunaRiteTakeSacrificeRewardRsp = 8156; - public static final int MailChangeNotify = 1475; - public static final int MainCoopUpdateNotify = 1993; - public static final int MapAreaChangeNotify = 3284; - public static final int MarkEntityInMinMapNotify = 230; - public static final int MarkMapReq = 3087; - public static final int MarkMapRsp = 3193; - public static final int MarkNewNotify = 1207; - public static final int MarkTargetInvestigationMonsterNotify = 1916; - public static final int MassiveEntityElementOpBatchNotify = 304; - public static final int MassiveEntityStateChangedNotify = 360; - public static final int MaterialDeleteReturnNotify = 653; - public static final int MaterialDeleteUpdateNotify = 620; - public static final int McoinExchangeHcoinReq = 643; - public static final int McoinExchangeHcoinRsp = 636; - public static final int MechanicusCandidateTeamCreateReq = 3929; - public static final int MechanicusCandidateTeamCreateRsp = 3927; - public static final int MechanicusCloseNotify = 3934; - public static final int MechanicusCoinNotify = 3964; - public static final int MechanicusLevelupGearReq = 3965; - public static final int MechanicusLevelupGearRsp = 3950; - public static final int MechanicusOpenNotify = 3914; - public static final int MechanicusSequenceOpenNotify = 3954; - public static final int MechanicusUnlockGearReq = 3972; - public static final int MechanicusUnlockGearRsp = 3982; - public static final int MeetNpcReq = 572; - public static final int MeetNpcRsp = 582; - public static final int MetNpcIdListNotify = 534; - public static final int MiracleRingDataNotify = 5209; - public static final int MiracleRingDeliverItemReq = 5244; - public static final int MiracleRingDeliverItemRsp = 5232; - public static final int MiracleRingDestroyNotify = 5239; - public static final int MiracleRingDropResultNotify = 5215; - public static final int MiracleRingTakeRewardReq = 5246; - public static final int MiracleRingTakeRewardRsp = 5236; - public static final int MistTrialDunegonFailNotify = 8765; - public static final int MistTrialGetChallengeMissionReq = 8002; - public static final int MistTrialGetChallengeMissionRsp = 8558; - public static final int MistTrialSelectAvatarAndEnterDungeonReq = 8641; - public static final int MistTrialSelectAvatarAndEnterDungeonRsp = 8060; - public static final int MonsterAIConfigHashNotify = 3379; - public static final int MonsterAlertChangeNotify = 313; - public static final int MonsterForceAlertNotify = 357; - public static final int MonsterPointArrayRouteUpdateNotify = 3498; - public static final int MonsterSummonTagNotify = 1367; - public static final int MpBlockNotify = 1837; - public static final int MpPlayGuestReplyInviteReq = 1840; - public static final int MpPlayGuestReplyInviteRsp = 1822; - public static final int MpPlayGuestReplyNotify = 1810; - public static final int MpPlayInviteResultNotify = 1828; - public static final int MpPlayOwnerCheckReq = 1817; - public static final int MpPlayOwnerCheckRsp = 1826; - public static final int MpPlayOwnerInviteNotify = 1838; - public static final int MpPlayOwnerStartInviteReq = 1812; - public static final int MpPlayOwnerStartInviteRsp = 1825; - public static final int MpPlayPrepareInterruptNotify = 1818; - public static final int MpPlayPrepareNotify = 1807; - public static final int MultistagePlayEndNotify = 5312; - public static final int MultistagePlayFinishStageReq = 5375; - public static final int MultistagePlayFinishStageRsp = 5329; - public static final int MultistagePlayInfoNotify = 5367; - public static final int MultistagePlaySettleNotify = 5348; - public static final int MultistagePlayStageEndNotify = 5322; - public static final int GetUgcRsp = 6343; - public static final int MusicGameGetBeatmapRsp = 6309; - public static final int MusicGameSettleReq = 8278; - public static final int MusicGameSettleRsp = 8542; - public static final int MusicGameStartReq = 8103; - public static final int MusicGameStartRsp = 8334; - public static final int MusicGameCreateBeatmapRsp = 6347; - public static final int GetUgcReq = 6348; - public static final int MusicGameSearchBeatmapRsp = 6304; - public static final int MusicGameSearchBeatmapReq = 6343; - public static final int MusicGameStartToPlayOthersBeatmapReq = 6302; - public static final int MusicGameStartToPlayOthersBeatmapRsp = 6313; - public static final int NavMeshStatsNotify = 2343; - public static final int NormalUidOpNotify = 5748; - public static final int NpcTalkReq = 567; - public static final int NpcTalkRsp = 575; - public static final int ObstacleModifyNotify = 2354; - public static final int OfferingInteractReq = 2901; - public static final int OfferingInteractRsp = 2913; - public static final int OneofGatherPointDetectorDataNotify = 4297; - public static final int OpActivityDataNotify = 5154; - public static final int OpActivityStateNotify = 2567; - public static final int OpActivityUpdateNotify = 5164; - public static final int OpenBlossomCircleCampGuideNotify = 2772; - public static final int OpenStateChangeNotify = 146; - public static final int OpenStateUpdateNotify = 174; - public static final int OrderDisplayNotify = 4115; - public static final int OrderFinishNotify = 4109; - public static final int OtherPlayerEnterHomeNotify = 4771; - public static final int PSNBlackListNotify = 4008; - public static final int PSNFriendListNotify = 4036; - public static final int PSPlayerApplyEnterMpReq = 1801; - public static final int PSPlayerApplyEnterMpRsp = 1802; - public static final int PathfindingEnterSceneReq = 2314; - public static final int PathfindingEnterSceneRsp = 2334; - public static final int PathfindingPingNotify = 2364; - public static final int PersonalLineAllDataReq = 437; - public static final int PersonalLineAllDataRsp = 425; - public static final int PersonalLineNewUnlockNotify = 449; - public static final int PersonalSceneJumpReq = 298; - public static final int PersonalSceneJumpRsp = 203; - public static final int PingReq = 14; - public static final int PingRsp = 34; - public static final int PlantFlowerAcceptAllGiveFlowerReq = 8807; - public static final int PlantFlowerAcceptAllGiveFlowerRsp = 8040; - public static final int PlantFlowerAcceptGiveFlowerReq = 8989; - public static final int PlantFlowerAcceptGiveFlowerRsp = 8343; - public static final int PlantFlowerEditFlowerCombinationReq = 8301; - public static final int PlantFlowerEditFlowerCombinationRsp = 8975; - public static final int PlantFlowerGetCanGiveFriendFlowerReq = 8510; - public static final int PlantFlowerGetCanGiveFriendFlowerRsp = 8692; - public static final int PlantFlowerGetFriendFlowerWishListReq = 8828; - public static final int PlantFlowerGetFriendFlowerWishListRsp = 8375; - public static final int PlantFlowerGetRecvFlowerListReq = 8123; - public static final int PlantFlowerGetRecvFlowerListRsp = 8779; - public static final int PlantFlowerGetSeedInfoReq = 8055; - public static final int PlantFlowerGetSeedInfoRsp = 8797; - public static final int PlantFlowerGiveFriendFlowerReq = 8593; - public static final int PlantFlowerGiveFriendFlowerRsp = 8688; - public static final int PlantFlowerHaveRecvFlowerNotify = 8729; - public static final int PlantFlowerSetFlowerWishReq = 8997; - public static final int PlantFlowerSetFlowerWishRsp = 8034; - public static final int PlantFlowerTakeSeedRewardReq = 8851; - public static final int PlantFlowerTakeSeedRewardRsp = 8340; - public static final int PlatformChangeRouteNotify = 221; - public static final int PlatformStartRouteNotify = 279; - public static final int PlatformStopRouteNotify = 245; - public static final int PlayerAllowEnterMpAfterAgreeMatchNotify = 4181; - public static final int PlayerApplyEnterHomeNotify = 4757; - public static final int PlayerApplyEnterHomeResultNotify = 4568; - public static final int PlayerApplyEnterHomeResultReq = 4668; - public static final int PlayerApplyEnterHomeResultRsp = 4714; - public static final int PlayerApplyEnterMpAfterMatchAgreedNotify = 4171; - public static final int PlayerApplyEnterMpNotify = 1848; - public static final int PlayerApplyEnterMpReq = 1843; - public static final int PlayerApplyEnterMpResultNotify = 1846; - public static final int PlayerApplyEnterMpResultReq = 1836; - public static final int PlayerApplyEnterMpResultRsp = 1815; - public static final int PlayerApplyEnterMpRsp = 1809; - public static final int PlayerCancelMatchReq = 4196; - public static final int PlayerCancelMatchRsp = 4186; - public static final int PlayerChatCDNotify = 3354; - public static final int PlayerChatNotify = 3236; - public static final int PlayerChatReq = 3125; - public static final int PlayerChatRsp = 3070; - public static final int PlayerCompoundMaterialReq = 133; - public static final int PlayerCompoundMaterialRsp = 116; - public static final int PlayerConfirmMatchReq = 4182; - public static final int PlayerConfirmMatchRsp = 4189; - public static final int PlayerCookArgsReq = 145; - public static final int PlayerCookArgsRsp = 121; - public static final int PlayerCookReq = 184; - public static final int PlayerCookRsp = 141; - public static final int PlayerDataNotify = 182; - public static final int PlayerEnterDungeonReq = 954; - public static final int PlayerEnterDungeonRsp = 964; - public static final int PlayerEnterSceneInfoNotify = 289; - public static final int PlayerEnterSceneNotify = 267; - public static final int PlayerEyePointStateNotify = 3065; - public static final int PlayerFishingDataNotify = 5838; - public static final int PlayerForceExitReq = 106; - public static final int PlayerForceExitRsp = 190; - public static final int PlayerGameTimeNotify = 159; - public static final int PlayerGeneralMatchConfirmNotify = 4152; - public static final int PlayerGeneralMatchDismissNotify = 4151; - public static final int PlayerGetForceQuitBanInfoReq = 4167; - public static final int PlayerGetForceQuitBanInfoRsp = 4176; - public static final int PlayerHomeCompInfoNotify = 4886; - public static final int PlayerInjectFixNotify = 192; - public static final int PlayerInvestigationAllInfoNotify = 1911; - public static final int PlayerInvestigationNotify = 1901; - public static final int PlayerInvestigationTargetNotify = 1930; - public static final int PlayerLevelRewardUpdateNotify = 120; - public static final int PlayerLoginReq = 154; - public static final int PlayerLoginRsp = 164; - public static final int PlayerLogoutNotify = 172; - public static final int PlayerLogoutReq = 114; - public static final int PlayerLogoutRsp = 134; - public static final int PlayerLuaShellNotify = 101; - public static final int PlayerMatchAgreedResultNotify = 4185; - public static final int PlayerMatchInfoNotify = 4159; - public static final int PlayerMatchStopNotify = 4165; - public static final int PlayerMatchSuccNotify = 4194; - public static final int PlayerOfferingDataNotify = 2925; - public static final int PlayerOfferingReq = 2916; - public static final int PlayerOfferingRsp = 2924; - public static final int PlayerPreEnterMpNotify = 1832; - public static final int PlayerPropChangeNotify = 156; - public static final int PlayerPropChangeReasonNotify = 1250; - public static final int PlayerPropNotify = 107; - public static final int PlayerQuitDungeonReq = 914; - public static final int PlayerQuitDungeonRsp = 934; - public static final int PlayerQuitFromHomeNotify = 4837; - public static final int PlayerQuitFromMpNotify = 1844; - public static final int PlayerRandomCookReq = 170; - public static final int PlayerRandomCookRsp = 113; - public static final int PlayerRechargeDataNotify = 4136; - public static final int PlayerReportReq = 4002; - public static final int PlayerReportRsp = 4088; - public static final int PlayerRoutineDataNotify = 3548; - public static final int PlayerSetLanguageReq = 149; - public static final int PlayerSetLanguageRsp = 197; - public static final int PlayerSetOnlyMPWithPSPlayerReq = 1835; - public static final int PlayerSetOnlyMPWithPSPlayerRsp = 1821; - public static final int PlayerSetPauseReq = 102; - public static final int PlayerSetPauseRsp = 188; - public static final int PlayerStartMatchReq = 4198; - public static final int PlayerStartMatchRsp = 4193; - public static final int PlayerStoreNotify = 667; - public static final int PlayerTimeNotify = 171; - public static final int PlayerWorldSceneInfoListNotify = 3152; - public static final int PostEnterSceneReq = 3446; - public static final int PostEnterSceneRsp = 3030; - public static final int PrivateChatNotify = 5004; - public static final int PrivateChatReq = 5017; - public static final int PrivateChatRsp = 5025; - public static final int PrivateChatSetSequenceReq = 4985; - public static final int PrivateChatSetSequenceRsp = 4957; - public static final int ProfilePictureChangeNotify = 4043; - public static final int ProjectorOptionReq = 813; - public static final int ProjectorOptionRsp = 857; - public static final int ProudSkillChangeNotify = 1059; - public static final int ProudSkillExtraLevelNotify = 1029; - public static final int ProudSkillUpgradeReq = 1065; - public static final int ProudSkillUpgradeRsp = 1050; - public static final int PullPrivateChatReq = 4984; - public static final int PullPrivateChatRsp = 5022; - public static final int PullRecentChatReq = 5032; - public static final int PullRecentChatRsp = 5015; - public static final int PushTipsAllDataNotify = 2219; - public static final int PushTipsChangeNotify = 2244; - public static final int PushTipsReadFinishReq = 2294; - public static final int PushTipsReadFinishRsp = 2274; - public static final int QueryCodexMonsterBeKilledNumReq = 4208; - public static final int QueryCodexMonsterBeKilledNumRsp = 4201; - public static final int QueryPathReq = 2367; - public static final int QueryPathRsp = 2375; - public static final int QuestCreateEntityReq = 450; - public static final int QuestCreateEntityRsp = 459; - public static final int QuestDelNotify = 454; - public static final int QuestDestroyEntityReq = 407; - public static final int QuestDestroyEntityRsp = 491; - public static final int QuestDestroyNpcReq = 419; - public static final int QuestDestroyNpcRsp = 444; - public static final int QuestGlobalVarNotify = 426; - public static final int QuestListNotify = 467; - public static final int QuestListUpdateNotify = 475; - public static final int QuestProgressUpdateNotify = 466; - public static final int QuestTransmitReq = 433; - public static final int QuestTransmitRsp = 416; - public static final int QuestUpdateQuestTimeVarNotify = 488; - public static final int QuestUpdateQuestVarNotify = 423; - public static final int QuestUpdateQuestVarReq = 461; - public static final int QuestUpdateQuestVarRsp = 456; - public static final int QuickUseWidgetReq = 4281; - public static final int QuickUseWidgetRsp = 4285; - public static final int ReadMailNotify = 1454; - public static final int ReadPrivateChatReq = 5000; - public static final int ReadPrivateChatRsp = 5009; - public static final int ReceivedTrialAvatarActivityRewardReq = 2005; - public static final int ReceivedTrialAvatarActivityRewardRsp = 2009; - public static final int RechargeReq = 4148; - public static final int RechargeRsp = 4143; - public static final int RedeemLegendaryKeyReq = 418; - public static final int RedeemLegendaryKeyRsp = 458; - public static final int RefreshBackgroundAvatarReq = 1636; - public static final int RefreshBackgroundAvatarRsp = 1786; - public static final int RefreshRoguelikeDungeonCardReq = 8092; - public static final int RefreshRoguelikeDungeonCardRsp = 8721; - public static final int RegionSearchChangeRegionNotify = 5643; - public static final int RegionSearchNotify = 5648; - public static final int ReliquaryDecomposeReq = 631; - public static final int ReliquaryDecomposeRsp = 699; - public static final int ReliquaryPromoteReq = 646; - public static final int ReliquaryPromoteRsp = 684; - public static final int ReliquaryUpgradeReq = 694; - public static final int ReliquaryUpgradeRsp = 674; - public static final int RemoveBlacklistReq = 4013; - public static final int RemoveBlacklistRsp = 4057; - public static final int RemoveRandTaskInfoNotify = 153; - public static final int ReportFightAntiCheatNotify = 321; - public static final int ReportTrackingIOInfoNotify = 4144; - public static final int RequestLiveInfoReq = 884; - public static final int RequestLiveInfoRsp = 841; - public static final int ResinCardDataUpdateNotify = 4131; - public static final int ResinChangeNotify = 649; - public static final int RestartEffigyChallengeReq = 2188; - public static final int RestartEffigyChallengeRsp = 2137; - public static final int ReunionActivateNotify = 5088; - public static final int ReunionBriefInfoReq = 5098; - public static final int ReunionBriefInfoRsp = 5093; - public static final int ReunionDailyRefreshNotify = 5072; - public static final int ReunionPrivilegeChangeNotify = 5090; - public static final int ReunionSettleNotify = 5075; - public static final int RobotPushPlayerDataNotify = 42; - public static final int RogueCellUpdateNotify = 8624; - public static final int RogueDungeonPlayerCellChangeNotify = 8320; - public static final int RogueHealAvatarsReq = 8610; - public static final int RogueHealAvatarsRsp = 8941; - public static final int RogueResumeDungeonReq = 8029; - public static final int RogueResumeDungeonRsp = 8009; - public static final int RogueSwitchAvatarReq = 8770; - public static final int RogueSwitchAvatarRsp = 8259; - public static final int RoguelikeCardGachaNotify = 8494; - public static final int RoguelikeEffectDataNotify = 8556; - public static final int RoguelikeEffectViewReq = 8885; - public static final int RoguelikeEffectViewRsp = 8862; - public static final int RoguelikeGiveUpReq = 8061; - public static final int RoguelikeGiveUpRsp = 8868; - public static final int RoguelikeMistClearNotify = 8512; - public static final int RoguelikeRefreshCardCostUpdateNotify = 8266; - public static final int RoguelikeResourceBonusPropUpdateNotify = 8376; - public static final int RoguelikeRuneRecordUpdateNotify = 8950; - public static final int RoguelikeSelectAvatarAndEnterDungeonReq = 8863; - public static final int RoguelikeSelectAvatarAndEnterDungeonRsp = 8400; - public static final int RoguelikeTakeStageFirstPassRewardReq = 8541; - public static final int RoguelikeTakeStageFirstPassRewardRsp = 8530; - public static final int SalesmanDeliverItemReq = 2167; - public static final int SalesmanDeliverItemRsp = 2067; - public static final int SalesmanTakeRewardReq = 2062; - public static final int SalesmanTakeRewardRsp = 2070; - public static final int SalesmanTakeSpecialRewardReq = 2166; - public static final int SalesmanTakeSpecialRewardRsp = 2184; - public static final int SaveCoopDialogReq = 1972; - public static final int SaveCoopDialogRsp = 1960; - public static final int SaveMainCoopReq = 1959; - public static final int SaveMainCoopRsp = 1996; - public static final int SceneAreaUnlockNotify = 274; - public static final int SceneAreaWeatherNotify = 297; - public static final int SceneAudioNotify = 3412; - public static final int SceneAvatarStaminaStepReq = 250; - public static final int SceneAvatarStaminaStepRsp = 259; - public static final int SceneCreateEntityReq = 241; - public static final int SceneCreateEntityRsp = 270; - public static final int SceneDataNotify = 3210; - public static final int SceneDestroyEntityReq = 213; - public static final int SceneDestroyEntityRsp = 257; - public static final int SceneEntitiesMoveCombineNotify = 3188; - public static final int SceneEntitiesMovesReq = 222; - public static final int SceneEntitiesMovesRsp = 212; - public static final int SceneEntityAppearNotify = 234; - public static final int SceneEntityDisappearNotify = 272; - public static final int SceneEntityDrownReq = 246; - public static final int SceneEntityDrownRsp = 284; - public static final int SceneEntityMoveNotify = 207; - public static final int SceneEntityMoveReq = 282; - public static final int SceneEntityMoveRsp = 265; - public static final int SceneEntityUpdateNotify = 3095; - public static final int SceneForceLockNotify = 226; - public static final int SceneForceUnlockNotify = 286; - public static final int SceneGalleryInfoNotify = 5529; - public static final int SceneInitFinishReq = 264; - public static final int SceneInitFinishRsp = 214; - public static final int SceneKickPlayerNotify = 299; - public static final int SceneKickPlayerReq = 232; - public static final int SceneKickPlayerRsp = 231; - public static final int ScenePlayBattleInfoListNotify = 4379; - public static final int ScenePlayBattleInfoNotify = 4417; - public static final int ScenePlayBattleInterruptNotify = 4357; - public static final int ScenePlayBattleResultNotify = 4441; - public static final int ScenePlayBattleUidOpNotify = 4392; - public static final int ScenePlayGuestReplyInviteReq = 4422; - public static final int ScenePlayGuestReplyInviteRsp = 4432; - public static final int ScenePlayGuestReplyNotify = 4415; - public static final int ScenePlayInfoListNotify = 4409; - public static final int ScenePlayInviteResultNotify = 4400; - public static final int ScenePlayOutofRegionNotify = 4377; - public static final int ScenePlayOwnerCheckReq = 4425; - public static final int ScenePlayOwnerCheckRsp = 4404; - public static final int ScenePlayOwnerInviteNotify = 4384; - public static final int ScenePlayOwnerStartInviteReq = 4414; - public static final int ScenePlayOwnerStartInviteRsp = 4364; - public static final int ScenePlayerInfoNotify = 240; - public static final int ScenePlayerLocationNotify = 291; - public static final int ScenePlayerSoundNotify = 201; - public static final int ScenePointUnlockNotify = 261; - public static final int SceneRouteChangeNotify = 208; - public static final int SceneTeamUpdateNotify = 1762; - public static final int SceneTimeNotify = 210; - public static final int SceneTransToPointReq = 256; - public static final int SceneTransToPointRsp = 223; - public static final int SceneWeatherForcastReq = 3037; - public static final int SceneWeatherForcastRsp = 3257; - public static final int SeaLampCoinNotify = 2127; - public static final int SeaLampContributeItemReq = 2119; - public static final int SeaLampContributeItemRsp = 2138; - public static final int SeaLampFlyLampNotify = 2161; - public static final int SeaLampFlyLampReq = 2175; - public static final int SeaLampFlyLampRsp = 2152; - public static final int SeaLampPopularityNotify = 2087; - public static final int SeaLampTakeContributionRewardReq = 2149; - public static final int SeaLampTakeContributionRewardRsp = 2170; - public static final int SeaLampTakePhaseRewardReq = 2135; - public static final int SeaLampTakePhaseRewardRsp = 2085; - public static final int SealBattleBeginNotify = 206; - public static final int SealBattleEndNotify = 290; - public static final int SealBattleProgressNotify = 292; - public static final int SeeMonsterReq = 255; - public static final int SeeMonsterRsp = 209; - public static final int SelectAsterMidDifficultyReq = 2003; - public static final int SelectAsterMidDifficultyRsp = 2001; - public static final int SelectEffigyChallengeConditionReq = 2199; - public static final int SelectEffigyChallengeConditionRsp = 2081; - public static final int SelectRoguelikeDungeonCardReq = 8229; - public static final int SelectRoguelikeDungeonCardRsp = 8037; - public static final int SelectWorktopOptionReq = 814; - public static final int SelectWorktopOptionRsp = 834; - public static final int ServerAnnounceNotify = 2073; - public static final int ServerAnnounceRevokeNotify = 2103; - public static final int ServerBuffChangeNotify = 353; - public static final int ServerCondMeetQuestListUpdateNotify = 486; - public static final int ServerDisconnectClientNotify = 198; - public static final int ServerGlobalValueChangeNotify = 1142; - public static final int ServerLogNotify = 59; - public static final int ServerMessageNotify = 5743; - public static final int ServerTimeNotify = 50; - public static final int ServerUpdateGlobalValueNotify = 1191; - public static final int SetBattlePassViewedReq = 2601; - public static final int SetBattlePassViewedRsp = 2602; - public static final int SetChatEmojiCollectionReq = 4098; - public static final int SetChatEmojiCollectionRsp = 4003; - public static final int SetCoopChapterViewedReq = 1978; - public static final int SetCoopChapterViewedRsp = 1968; - public static final int SetCurExpeditionChallengeIdReq = 2168; - public static final int SetCurExpeditionChallengeIdRsp = 2052; - public static final int SetEntityClientDataNotify = 3457; - public static final int SetEquipLockStateReq = 645; - public static final int SetEquipLockStateRsp = 621; - public static final int SetFriendEnterHomeOptionReq = 4732; - public static final int SetFriendEnterHomeOptionRsp = 4835; - public static final int SetFriendRemarkNameReq = 4049; - public static final int SetFriendRemarkNameRsp = 4097; - public static final int SetH5ActivityRedDotTimestampReq = 5696; - public static final int SetH5ActivityRedDotTimestampRsp = 5686; - public static final int SetIsAutoUnlockSpecificEquipReq = 673; - public static final int SetIsAutoUnlockSpecificEquipRsp = 632; - public static final int SetLimitOptimizationNotify = 8431; - public static final int SetNameCardReq = 4094; - public static final int SetNameCardRsp = 4074; - public static final int SetOpenStateReq = 144; - public static final int SetOpenStateRsp = 194; - public static final int SetPlayerBirthdayReq = 4091; - public static final int SetPlayerBirthdayRsp = 4042; - public static final int SetPlayerBornDataReq = 127; - public static final int SetPlayerBornDataRsp = 166; - public static final int SetPlayerHeadImageReq = 4066; - public static final int SetPlayerHeadImageRsp = 4061; - public static final int SetPlayerNameReq = 123; - public static final int SetPlayerNameRsp = 119; - public static final int SetPlayerPropReq = 142; - public static final int SetPlayerPropRsp = 129; - public static final int SetPlayerSignatureReq = 4029; - public static final int SetPlayerSignatureRsp = 4027; - public static final int SetSceneWeatherAreaReq = 296; - public static final int SetSceneWeatherAreaRsp = 263; - public static final int SetUpAvatarTeamReq = 1638; - public static final int SetUpAvatarTeamRsp = 1628; - public static final int SetUpLunchBoxWidgetReq = 4282; - public static final int SetUpLunchBoxWidgetRsp = 4289; - public static final int SetWidgetSlotReq = 4297; - public static final int SetWidgetSlotRsp = 4270; - public static final int ShowClientGuideNotify = 3384; - public static final int ShowClientTutorialNotify = 3120; - public static final int ShowCommonTipsNotify = 3469; - public static final int ShowMessageNotify = 64; - public static final int ShowTemplateReminderNotify = 3186; - public static final int SignInInfoReq = 2554; - public static final int SignInInfoRsp = 2564; - public static final int SocialDataNotify = 4016; - public static final int SpringUseReq = 1788; - public static final int SpringUseRsp = 1737; - public static final int StartArenaChallengeLevelReq = 2194; - public static final int StartArenaChallengeLevelRsp = 2057; - public static final int StartBuoyantCombatGalleryReq = 8282; - public static final int StartBuoyantCombatGalleryRsp = 8916; - public static final int StartCoopPointReq = 1952; - public static final int StartCoopPointRsp = 1967; - public static final int StartEffigyChallengeReq = 2156; - public static final int StartEffigyChallengeRsp = 2021; - public static final int StartFishingReq = 5809; - public static final int StartFishingRsp = 5846; - public static final int StartRogueEliteCellChallengeReq = 8874; - public static final int StartRogueEliteCellChallengeRsp = 8759; - public static final int StartRogueNormalCellChallengeReq = 8809; - public static final int StartRogueNormalCellChallengeRsp = 8834; - public static final int StoreItemChangeNotify = 654; - public static final int StoreItemDelNotify = 664; - public static final int StoreWeightLimitNotify = 675; - public static final int SummerTimeFloatSignalPositionNotify = 8639; - public static final int SummerTimeFloatSignalUpdateNotify = 8576; - public static final int SummerTimeSprintBoatRestartReq = 8178; - public static final int SummerTimeSprintBoatRestartRsp = 8987; - public static final int SummerTimeSprintBoatSettleNotify = 8256; - public static final int SumoDungeonSettleNotify = 8665; - public static final int SumoEnterDungeonNotify = 8823; - public static final int SumoLeaveDungeonNotify = 8778; - public static final int SumoRestartDungeonReq = 8246; - public static final int SumoRestartDungeonRsp = 8249; - public static final int SumoSaveTeamReq = 8607; - public static final int SumoSaveTeamRsp = 8005; - public static final int SumoSelectTeamAndEnterDungeonReq = 8930; - public static final int SumoSelectTeamAndEnterDungeonRsp = 8131; - public static final int SumoSetNoSwitchPunishTimeNotify = 8536; - public static final int SumoSwitchTeamReq = 8384; - public static final int SumoSwitchTeamRsp = 8065; - public static final int SyncScenePlayTeamEntityNotify = 3362; - public static final int SyncTeamEntityNotify = 393; - public static final int TakeAchievementGoalRewardReq = 2686; - public static final int TakeAchievementGoalRewardRsp = 2665; - public static final int TakeAchievementRewardReq = 2659; - public static final int TakeAchievementRewardRsp = 2696; - public static final int TakeAsterSpecialRewardReq = 2061; - public static final int TakeAsterSpecialRewardRsp = 2026; - public static final int TakeBattlePassMissionPointReq = 2644; - public static final int TakeBattlePassMissionPointRsp = 2632; - public static final int TakeBattlePassRewardReq = 2636; - public static final int TakeBattlePassRewardRsp = 2615; - public static final int TakeCityReputationExploreRewardReq = 2842; - public static final int TakeCityReputationExploreRewardRsp = 2829; - public static final int TakeCityReputationLevelRewardReq = 2854; - public static final int TakeCityReputationLevelRewardRsp = 2864; - public static final int TakeCityReputationParentQuestReq = 2834; - public static final int TakeCityReputationParentQuestRsp = 2872; - public static final int TakeCompoundOutputReq = 137; - public static final int TakeCompoundOutputRsp = 125; - public static final int TakeCoopRewardReq = 1975; - public static final int TakeCoopRewardRsp = 1988; - public static final int TakeDeliveryDailyRewardReq = 2054; - public static final int TakeDeliveryDailyRewardRsp = 2029; - public static final int TakeEffigyFirstPassRewardReq = 2050; - public static final int TakeEffigyFirstPassRewardRsp = 2025; - public static final int TakeEffigyRewardReq = 2104; - public static final int TakeEffigyRewardRsp = 2089; - public static final int TakeFirstShareRewardReq = 4037; - public static final int TakeFirstShareRewardRsp = 4025; - public static final int TakeFurnitureMakeReq = 4713; - public static final int TakeFurnitureMakeRsp = 4630; - public static final int TakeHuntingOfferReq = 4348; - public static final int TakeHuntingOfferRsp = 4343; - public static final int TakeInvestigationRewardReq = 1928; - public static final int TakeInvestigationRewardRsp = 1910; - public static final int TakeInvestigationTargetRewardReq = 1926; - public static final int TakeInvestigationTargetRewardRsp = 1927; - public static final int TakeMaterialDeleteReturnReq = 638; - public static final int TakeMaterialDeleteReturnRsp = 604; - public static final int TakeOfferingLevelRewardReq = 2921; - public static final int TakeOfferingLevelRewardRsp = 2908; - public static final int TakePlayerLevelRewardReq = 138; - public static final int TakePlayerLevelRewardRsp = 104; - public static final int TakeRegionSearchRewardReq = 5609; - public static final int TakeRegionSearchRewardRsp = 5646; - public static final int TakeResinCardDailyRewardReq = 4132; - public static final int TakeResinCardDailyRewardRsp = 4139; - public static final int TakeReunionFirstGiftRewardReq = 5059; - public static final int TakeReunionFirstGiftRewardRsp = 5096; - public static final int TakeReunionMissionRewardReq = 5052; - public static final int TakeReunionMissionRewardRsp = 5067; - public static final int TakeReunionSignInRewardReq = 5094; - public static final int TakeReunionSignInRewardRsp = 5082; - public static final int TakeReunionWatcherRewardReq = 5085; - public static final int TakeReunionWatcherRewardRsp = 5071; - public static final int TakeoffEquipReq = 627; - public static final int TakeoffEquipRsp = 666; - public static final int TaskVarNotify = 176; - public static final int TeamResonanceChangeNotify = 1066; - public static final int TowerAllDataReq = 2482; - public static final int TowerAllDataRsp = 2465; - public static final int TowerBriefDataNotify = 2467; - public static final int TowerBuffSelectReq = 2491; - public static final int TowerBuffSelectRsp = 2442; - public static final int TowerCurLevelRecordChangeNotify = 2454; - public static final int TowerDailyRewardProgressChangeNotify = 2464; - public static final int TowerEnterLevelReq = 2459; - public static final int TowerEnterLevelRsp = 2407; - public static final int TowerFloorRecordChangeNotify = 2475; - public static final int TowerGetFloorStarRewardReq = 2494; - public static final int TowerGetFloorStarRewardRsp = 2474; - public static final int TowerLevelEndNotify = 2457; - public static final int TowerLevelStarCondNotify = 2486; - public static final int TowerMiddleLevelChangeTeamNotify = 2426; - public static final int TowerRecordHandbookReq = 2433; - public static final int TowerRecordHandbookRsp = 2416; - public static final int TowerSurrenderReq = 2419; - public static final int TowerSurrenderRsp = 2444; - public static final int TowerTeamSelectReq = 2434; - public static final int TowerTeamSelectRsp = 2472; - public static final int TreasureMapBonusChallengeNotify = 2163; - public static final int TreasureMapCurrencyNotify = 2046; - public static final int TreasureMapDetectorDataNotify = 4272; - public static final int TreasureMapGuideTaskDoneNotify = 2099; - public static final int TreasureMapHostInfoNotify = 8260; - public static final int TreasureMapMpChallengeNotify = 2071; - public static final int TreasureMapPreTaskDoneNotify = 2191; - public static final int TreasureMapRegionActiveNotify = 2148; - public static final int TreasureMapRegionInfoNotify = 2190; - public static final int TrialAvatarFirstPassDungeonNotify = 2105; - public static final int TrialAvatarInDungeonIndexNotify = 2109; - public static final int TriggerCreateGadgetToEquipPartNotify = 333; - public static final int TriggerRoguelikeCurseNotify = 8901; - public static final int TriggerRoguelikeRuneReq = 8053; - public static final int TriggerRoguelikeRuneRsp = 8631; - public static final int TryEnterHomeReq = 4729; - public static final int TryEnterHomeRsp = 4597; - public static final int UnfreezeGroupLimitNotify = 3464; - public static final int UnionCmdNotify = 27; - public static final int LastPacketPrintNotify = 41; - public static final int SalvagePreventSettleNotify = 8967; - public static final int HomeEnterEditModeFinishReq = 4676; - public static final int ReplayCustomDungeonRsp = 6234; - public static final int SpiceActivityFinishMakeSpiceRsp = 8004; - public static final int GachaActivityTakeRewardRsp = 8272; - public static final int MistTrialGetDungeonExhibitionDataRsp = 8058; - public static final int CrystalLinkEnterDungeonRsp = 8067; - public static final int ChangeCustomDungeonRoomRsp = 6239; - public static final int MistTrialGetDungeonExhibitionDataReq = 8931; - public static final int ActivityGetRecvGiftListRsp = 8791; - public static final int ReformFireworksReq = 6040; - public static final int CrystalLinkRestartDungeonReq = 8317; - public static final int LaunchFireworksReq = 6053; - public static final int WinterCampGetCanGiveFriendItemRsp = 8147; - public static final int PublishUgcReq = 6339; - public static final int GachaActivityCreateRobotReq = 8654; - public static final int GachaActivityCreateRobotRsp = 8808; - public static final int SpiceActivityProcessFoodReq = 8697; - public static final int PotionSaveDungeonResultReq = 8306; - public static final int WinterCampRecvItemNotify = 8740; - public static final int StartRogueDiaryPlayReq = 8804; - public static final int BartenderFinishLevelReq = 9000; - public static final int SalvageEscortSettleNotify = 8353; - public static final int HomeChangeBgmReq = 4806; - public static final int EvtBeingHealedNotify = 301; - public static final int GetCustomDungeonReq = 6247; - public static final int IrodoriChessEquipCardReq = 8511; - public static final int ResetRogueDiaryPlayRsp = 8336; - public static final int SpiceActivityProcessFoodRsp = 8075; - public static final int HomeBalloonGalleryScoreNotify = 4532; - public static final int PhotoActivityFinishRsp = 8713; - public static final int QuickOpenActivityReq = 8171; - public static final int LanternRiteDoFireworksReformReq = 8261; - public static final int RogueDiaryCoinAddNotify = 8059; - public static final int RogueDiaryRepairInfoNotify = 8835; - public static final int PhotoActivityFinishReq = 8473; - public static final int ViewLanternProjectionTipsRsp = 8108; - public static final int MichiaeMatsuriInteractStatueRsp = 8216; - public static final int TryEnterNextRogueDiaryDungeonReq = 8832; - public static final int ActivityAcceptGiveGiftRsp = 8915; - public static final int RogueDiaryDungeonInfoNotify = 8415; - public static final int StartRogueDiaryRoomReq = 8291; - public static final int LevelTagDataNotify = 3072; - public static final int StoreCustomDungeonReq = 6218; - public static final int WinterCampGetRecvItemListReq = 8547; - public static final int GachaActivityResetRsp = 8296; - public static final int WinterCampRaceScoreNotify = 8664; - public static final int MainCoopFailNotify = 1987; - public static final int CheckUgcStateReq = 6302; - public static final int WinterCampTakeBattleRewardRsp = 8573; - public static final int ActivityGetRecvGiftListReq = 8973; - public static final int SalvagePreventRestartRsp = 8030; - public static final int TryInterruptRogueDiaryDungeonRsp = 8655; - public static final int WinterCampGiveFriendItemRsp = 8781; - public static final int RogueFinishRepairRsp = 8024; - public static final int IrodoriChessUnequipCardRsp = 8825; - public static final int MichiaeMatsuriUnlockCrystalSkillRsp = 8845; - public static final int SaveUgcReq = 6344; - public static final int ResetRogueDiaryPlayReq = 8360; - public static final int CrystalLinkDungeonInfoNotify = 8925; - public static final int SaveCustomDungeonRoomRsp = 6246; - public static final int WinterCampEditSnowmanCombinationReq = 8743; - public static final int SearchCustomDungeonRsp = 6228; - public static final int BartenderCancelOrderReq = 8717; - public static final int WinterCampTriathlonSettleNotify = 8920; - public static final int ViewLanternProjectionLevelTipsRsp = 8134; - public static final int WinterCampTriathlonRestartReq = 8117; - public static final int ServerCombatEndNotify = 1127; - public static final int ReadSignatureAuditRsp = 4032; - public static final int GetGameplayRecommendationReq = 109; - public static final int TryInterruptRogueDiaryDungeonReq = 8362; - public static final int ResumeRogueDiaryDungeonReq = 8056; - public static final int EnterIrodoriChessDungeonReq = 8933; - public static final int GetRecommendCustomDungeonReq = 6238; - public static final int GachaActivityUpdateElemNotify = 8338; - public static final int ActivityHaveRecvGiftNotify = 8350; - public static final int WinterCampAcceptGiveItemReq = 8014; - public static final int MistTrialSettleNotify = 8559; - public static final int HomeRacingGallerySettleNotify = 4764; - public static final int QuickOpenActivityRsp = 8670; - public static final int SaveUgcRsp = 6332; - public static final int BartenderCancelOrderRsp = 8850; - public static final int MichiaeMatsuriRemoveChestMarkNotify = 8082; - public static final int GachaActivityResetReq = 8231; - public static final int GachaActivityNextStageRsp = 8304; - public static final int WinterCampSetWishListReq = 8405; - public static final int RetryCurRogueDiaryDungeonRsp = 8960; - public static final int BartenderStartLevelReq = 8460; - public static final int ResumeRogueDiaryDungeonRsp = 8712; - public static final int OutStuckCustomDungeonReq = 6227; - public static final int EnterIrodoriChessDungeonRsp = 8211; - public static final int RetryCurRogueDiaryDungeonReq = 8423; - public static final int WinterCampGetFriendWishListRsp = 8224; - public static final int HomeChangeBgmNotify = 4653; - public static final int GachaActivityPercentNotify = 8469; - public static final int RegionalPlayInfoNotify = 6298; - public static final int PotionEnterDungeonRsp = 8889; - public static final int LikeCustomDungeonReq = 6219; - public static final int ChangeCustomDungeonRoomReq = 6232; - public static final int GetRecommendCustomDungeonRsp = 6240; - public static final int CrystalLinkRestartDungeonRsp = 8748; - public static final int RemoveCustomDungeonReq = 6231; - public static final int BackPlayCustomDungeonOfficialRsp = 6216; - public static final int PlayerSignatureAuditDataNotify = 4076; - public static final int GalleryCrystalLinkKillMonsterNotify = 5561; - public static final int GetRogueDairyRepairInfoReq = 8633; - public static final int HomeClearGroupRecordRsp = 4846; - public static final int IrodoriChessPlayerInfoNotify = 5332; - public static final int LanternRiteDoFireworksReformRsp = 8564; - public static final int GetStoreCustomDungeonReq = 6222; - public static final int TryCustomDungeonRsp = 6201; - public static final int GetParentQuestVideoKeyRsp = 493; - public static final int IrodoriEditFlowerCombinationReq = 8746; - public static final int PotionSaveDungeonResultRsp = 8911; - public static final int PotionEnterDungeonReq = 8630; - public static final int WidgetUpdateExtraCDReq = 6005; - public static final int UgcNotify = 6301; - public static final int IrodoriChessUnequipCardReq = 8783; - public static final int EnterRogueDiaryDungeonRsp = 8515; - public static final int TryCustomDungeonReq = 6221; - public static final int RefreshRogueDiaryCardReq = 8849; - public static final int PhotoActivityClientViewReq = 8167; - public static final int ActivityAcceptGiveGiftReq = 8303; - public static final int SearchCustomDungeonReq = 6207; - public static final int UpdateSalvageBundleMarkReq = 8157; - public static final int ReadNicknameAuditRsp = 181; - public static final int AllShareCDDataNotify = 9067; - public static final int GetUgcBriefInfoReq = 6309; - public static final int IrodoriFillPoetryReq = 8228; - public static final int LanternRiteTakeSkinRewardReq = 8502; - public static final int RemoveCustomDungeonRsp = 6235; - public static final int CustomDungeonRecoverNotify = 6204; - public static final int SetCodexPushtipsReadRsp = 4202; - public static final int LanternRiteEndFireworksReformRsp = 8142; - public static final int ActivitySetGiftWishReq = 8848; - public static final int WinterCampGetFriendWishListReq = 8440; - public static final int FinishLanternProjectionRsp = 8016; - public static final int ActivitySetGiftWishRsp = 8764; - public static final int WinterCampTakeExploreRewardReq = 8750; - public static final int WidgetUpdateExtraCDRsp = 5925; - public static final int SignatureAuditConfigNotify = 4085; - public static final int BartenderCompleteOrderReq = 8327; - public static final int HomeGetGroupRecordReq = 4844; - public static final int MichiaeMatsuriDarkPressureLevelUpdateNotify = 8135; - public static final int RefreshRogueDiaryCardRsp = 8105; - public static final int ReplayCustomDungeonReq = 6242; - public static final int ReserveRogueDiaryAvatarRsp = 8457; - public static final int StartRogueDiaryRoomRsp = 8755; - public static final int BartenderStartLevelRsp = 8747; - public static final int IrodoriFillPoetryRsp = 8346; - public static final int EnterCustomDungeonRsp = 6243; - public static final int CheckUgcUpdateReq = 6335; - public static final int CrystalLinkEnterDungeonReq = 8861; - public static final int BartenderCancelLevelReq = 8161; - public static final int BartenderLevelProgressNotify = 8518; - public static final int LanternRiteEndFireworksReformReq = 8322; - public static final int GetParentQuestVideoKeyReq = 460; - public static final int SalvageEscortRestartRsp = 8118; - public static final int LuminanceStoneChallengeSettleNotify = 8895; - public static final int PublishCustomDungeonReq = 6202; - public static final int ActivityAcceptAllGiveGiftRsp = 8241; - public static final int FinishLanternProjectionReq = 8720; - public static final int ReformFireworksRsp = 5982; - public static final int HomePreChangeEditModeNotify = 4670; - public static final int SpiceActivityFinishMakeSpiceReq = 8032; - public static final int PlayerNicknameNotify = 139; - public static final int IrodoriMasterStartGalleryRsp = 8017; - public static final int LanternRiteStartFireworksReformRsp = 8546; - public static final int GetUgcBriefInfoRsp = 6346; - public static final int EnterCustomDungeonReq = 6248; - public static final int GlobalBuildingInfoNotify = 5373; - public static final int GetQuestLackingResourceReq = 440; - public static final int ExitCustomDungeonTryReq = 6226; - public static final int ActivityGiveFriendGiftRsp = 8524; - public static final int WidgetCaptureAnimalReq = 4274; - public static final int WinterCampEditSnowmanCombinationRsp = 8128; - public static final int WidgetCaptureAnimalRsp = 4261; - public static final int GetGameplayRecommendationRsp = 135; - public static final int IrodoriChessEquipCardRsp = 8145; - public static final int LanternRiteTakeSkinRewardRsp = 8356; - public static final int ClientRemoveCombatEndModifierNotify = 1166; - public static final int WinterCampTakeExploreRewardRsp = 8707; - public static final int HomeUpdatePictureFrameInfoRsp = 4748; - public static final int BartenderGetFormulaRsp = 8608; - public static final int SaveCustomDungeonRoomReq = 6209; - public static final int PlayerNicknameAuditDataNotify = 200; - public static final int HomeEnterEditModeFinishRsp = 4562; - public static final int ViewLanternProjectionTipsReq = 8818; - public static final int ActivityGetCanGiveFriendGiftRsp = 8186; - public static final int StoreCustomDungeonRsp = 6237; - public static final int ActivityBannerClearRsp = 2037; - public static final int EvtLocalGadgetOwnerLeaveSceneNotify = 398; - public static final int SetCodexPushtipsReadReq = 4210; - public static final int WinterCampAcceptGiveItemRsp = 8374; - public static final int RogueFinishRepairReq = 8749; - public static final int HomeGalleryInPlayingNotify = 5523; - public static final int HomeClearGroupRecordReq = 4870; - public static final int PotionRestartDungeonRsp = 8275; - public static final int PlayerSignatureNotify = 4089; - public static final int ReserveRogueDiaryAvatarReq = 8416; - public static final int TryEnterNextRogueDiaryDungeonRsp = 8223; - public static final int PublishUgcRsp = 6331; - public static final int ReadNicknameAuditReq = 169; - public static final int GetCustomDungeonRsp = 6220; - public static final int WinterCampAcceptAllGiveItemReq = 8251; - public static final int WinterCampGetCanGiveFriendItemReq = 8866; - public static final int ActivityAcceptAllGiveGiftReq = 8394; - public static final int GetQuestLackingResourceRsp = 411; - public static final int WinterCampStageInfoChangeNotify = 8531; - public static final int ActivityGetFriendGiftWishListRsp = 8777; - public static final int HomeSeekFurnitureGalleryScoreNotify = 4795; - public static final int WinterCampGiveFriendItemReq = 8187; - public static final int HomeAllUnlockedBgmIdListNotify = 4544; - public static final int LanternRiteStartFireworksReformReq = 8865; - public static final int GroupLinkMarkUpdateNotify = 5796; - public static final int FireworksReformDataNotify = 6080; - public static final int CheckUgcUpdateRsp = 6321; - public static final int RogueDiaryReviveAvatarReq = 8575; - public static final int ReadSignatureAuditReq = 4073; - public static final int HomeNewUnlockedBgmIdListNotify = 4612; - public static final int IrodoriChessLeftMonsterNotify = 5331; - public static final int MichiaeMatsuriStartDarkChallengeRsp = 8160; - public static final int MichiaeMatsuriUnlockCrystalSkillReq = 8949; - public static final int NicknameAuditConfigNotify = 115; - public static final int OutStuckCustomDungeonRsp = 6230; - public static final int BartenderGetFormulaReq = 8500; - public static final int PotionResetChallengeReq = 8958; - public static final int WinterCampTriathlonRestartRsp = 8258; - public static final int GetStoreCustomDungeonRsp = 6210; - public static final int NpcTalkStateNotify = 497; - public static final int SkyCrystalDetectorDataUpdateNotify = 4262; - public static final int IrodoriScanEntityRsp = 8730; - public static final int HomePictureFrameInfoNotify = 4895; - public static final int CustomDungeonOfficialNotify = 6250; - public static final int HomeUpdatePictureFrameInfoReq = 4813; - public static final int RogueDiaryTiredAvatarNotify = 8929; - public static final int ServerTryCancelGeneralMatchNotify = 4162; - public static final int GachaActivityNextStageReq = 8212; - public static final int LaunchFireworksRsp = 6011; - public static final int FireworksLaunchDataNotify = 6038; - public static final int SpiceActivityGivingRecordNotify = 8049; - public static final int IrodoriScanEntityReq = 8281; - public static final int IrodoriMasterGallerySettleNotify = 8379; - public static final int ActivityGetFriendGiftWishListReq = 8091; - public static final int CheckUgcStateRsp = 6317; - public static final int HomeBalloonGallerySettleNotify = 4618; - public static final int MichiaeMatsuriStartBossChallengeReq = 8225; - public static final int Unk2700_NGPMINKIOPK = 8956; - public static final int CustomDungeonBattleRecordNotify = 6233; - public static final int ActivityBannerNotify = 2018; - public static final int BartenderFinishLevelRsp = 8044; - public static final int UpdateSalvageBundleMarkRsp = 8732; - public static final int WinterCampAcceptAllGiveItemRsp = 8815; - public static final int WinterCampSetWishListRsp = 8985; - public static final int GachaActivityTakeRewardReq = 8796; - public static final int IrodoriMasterGalleryCgEndNotify = 8555; - public static final int EnterRogueDiaryDungeonReq = 8388; - public static final int GalleryCrystalLinkBuffInfoNotify = 5556; - public static final int HomeGetGroupRecordRsp = 4522; - public static final int MichiaeMatsuriRemoveChallengeMarkNotify = 8578; - public static final int MichiaeMatsuriGainCrystalExpUpdateNotify = 8289; - public static final int MichiaeMatsuriInteractStatueReq = 8836; - public static final int MichiaeMatsuriStartDarkChallengeReq = 8357; - public static final int PotionResetChallengeRsp = 8262; - public static final int BartenderCancelLevelRsp = 8701; - public static final int CustomDungeonUpdateNotify = 6225; - public static final int HomeChangeBgmRsp = 4815; - public static final int BartenderCompleteOrderRsp = 8709; - public static final int ActivityGiveFriendGiftReq = 8763; - public static final int ActivityBannerClearReq = 2114; - public static final int BackPlayCustomDungeonOfficialReq = 6205; - public static final int SalvageEscortRestartReq = 8020; - public static final int MichiaeMatsuriStartBossChallengeRsp = 8826; - public static final int RogueDiaryReviveAvatarRsp = 8812; - public static final int WinterCampTakeBattleRewardReq = 8495; - public static final int TanukiTravelFinishGuideQuestNotify = 8130; - public static final int ViewLanternProjectionLevelTipsReq = 8937; - public static final int GetRogueDairyRepairInfoRsp = 8433; - public static final int PublishCustomDungeonRsp = 6217; - public static final int IrodoriEditFlowerCombinationRsp = 8800; - public static final int ActivityGetCanGiveFriendGiftReq = 8934; - public static final int IrodoriMasterStartGalleryReq = 8344; - public static final int ExitCustomDungeonTryRsp = 6212; - public static final int PotionEnterDungeonNotify = 8295; - public static final int SalvagePreventRestartReq = 8439; - public static final int RogueDiaryDungeonSettleNotify = 8220; - public static final int WinterCampGetRecvItemListRsp = 8234; - public static final int PhotoActivityClientViewRsp = 8945; - public static final int StartRogueDiaryPlayRsp = 8169; - public static final int PotionRestartDungeonReq = 8613; - public static final int LikeCustomDungeonRsp = 6203; - public static final int GearActivityFinishPlayGearRsp = 20017; - public static final int NightCrowGadgetObservationMatchRsp = 818; - public static final int GearActivityStartPlayPictureReq = 24138; - public static final int ActivityReadPushTipsRsp = 8119; - public static final int IslandPartyRaftInfoNotify = 5544; - public static final int GearActivityStartPlayGearReq = 24337; - public static final int SummerTimeV2RestartDungeonReq = 8988; - public static final int NightCrowGadgetObservationMatchReq = 825; - public static final int InvestigationReadQuestDailyNotify = 1921; - public static final int InvestigationQuestDailyNotify = 1902; - public static final int GearActivityFinishPlayPictureRsp = 23580; - public static final int GearActivityStartPlayGearRsp = 22301; - public static final int IslandPartySettleNotify = 20411; - public static final int GearActivityStartPlayPictureRsp = 23136; - public static final int TakeBackGivingItemRsp = 110; - public static final int GalleryWillStartCountdownNotify = 5584; - public static final int ActivityPushTipsInfoNotify = 8419; - public static final int PersistentDungeonSwitchAvatarReq = 1720; - public static final int SummerTimeV2RestartBoatGalleryReq = 8676; - public static final int StopReminderNotify = 3241; - public static final int IslandPartySailInfoNotify = 5594; - public static final int SummerTimeV2RestartDungeonRsp = 8101; - public static final int GearActivityFinishPlayGearReq = 24069; - public static final int BackRebornGalleryReq = 5574; - public static final int PersistentDungeonSwitchAvatarRsp = 1656; - public static final int GalleryIslandPartyDownHillInfoNotify = 5519; - public static final int GadgetChangeLevelTagRsp = 837; - public static final int ActivityReadPushTipsReq = 8285; - public static final int BackRebornGalleryRsp = 5546; - public static final int SummerTimeV2RestartBoatGalleryRsp = 8599; - public static final int SummerTimeV2BoatSettleNotify = 8436; - public static final int TakeBackGivingItemReq = 152; - public static final int GadgetChangeLevelTagReq = 816; - public static final int GearActivityFinishPlayPictureReq = 21009; - public static final int HomeExchangeWoodRsp = 4582; - public static final int HomeExchangeWoodReq = 4716; - public static final int GravenInnocenceEditCarveCombinationRsp = 20912; - public static final int GetAllMailResultNotify = 1429; - public static final int MuqadasPotionRestartDungeonReq = 23633; - public static final int ToTheMoonRemoveObstacleRsp = 6165; - public static final int MuqadasPotionCaptureWeaknessReq = 23970; - public static final int GravenInnocenceEditCarveCombinationReq = 24190; - public static final int ParentQuestInferenceDataNotify = 430; - public static final int DelBackupAvatarTeamReq = 1608; - public static final int AssociateInferenceWordReq = 438; - public static final int AvatarTeamAllDataNotify = 1729; - public static final int InstableSprayGalleryInfoNotify = 5541; - public static final int PlayerCompoundMaterialBoostReq = 177; - public static final int GravenInnocencePhotoFinishReq = 23079; - public static final int InstableSpraySwitchTeamReq = 24932; - public static final int SubmitInferenceWordRsp = 443; - public static final int InstableSprayEnterDungeonRsp = 24557; - public static final int AllWidgetBackgroundActiveStateNotify = 6034; - public static final int GetHomeExchangeWoodInfoReq = 4852; - public static final int GetAllMailNotify = 1442; - public static final int GravenInnocenceRaceRestartRsp = 24201; - public static final int InstableSprayRestartDungeonReq = 23108; - public static final int ToTheMoonAddObstacleRsp = 6172; - public static final int GetHomeExchangeWoodInfoRsp = 4592; - public static final int WorldChestOpenNotify = 3279; - public static final int DeshretObeliskChestInfoNotify = 858; - public static final int MuqadasPotionRestartDungeonRsp = 20273; - public static final int RemotePlayerWidgetNotify = 6009; - public static final int GravenInnocencePhotoFinishRsp = 23629; - public static final int InstableSprayLevelFinishNotify = 23121; - public static final int ChangeWidgetBackgroundActiveStateRsp = 6042; - public static final int AddBackupAvatarTeamRsp = 1777; - public static final int MuqadasPotionActivityEnterDungeonRsp = 22334; - public static final int AddBackupAvatarTeamReq = 1602; - public static final int PlayerDeathZoneNotify = 6259; - public static final int PlayerCompoundMaterialBoostRsp = 162; - public static final int InstableSpraySwitchTeamRsp = 23402; - public static final int TreasureSeelieCollectOrbsNotify = 24055; - public static final int AranaraCollectionDataNotify = 6398; - public static final int AssociateInferenceWordRsp = 404; - public static final int MuqadasPotionCaptureWeaknessRsp = 23854; - public static final int DelBackupAvatarTeamRsp = 1615; - public static final int InterpretInferenceWordRsp = 453; - public static final int MuqadasPotionActivityEnterDungeonReq = 21504; - public static final int ToTheMoonRemoveObstacleReq = 6182; - public static final int CheckGroupReplacedReq = 3036; - public static final int ToTheMoonEnterSceneRsp = 6114; - public static final int CheckGroupReplacedRsp = 3190; - public static final int InstableSprayEnterDungeonReq = 23181; - public static final int ToTheMoonEnterSceneReq = 6164; - public static final int ToTheMoonQueryPathRsp = 6175; - public static final int InterpretInferenceWordReq = 487; - public static final int AreaPlayInfoNotify = 3472; - public static final int ToTheMoonAddObstacleReq = 6134; - public static final int MuqadasPotionDungeonSettleNotify = 20893; - public static final int ToTheMoonPingNotify = 6154; - public static final int InstableSprayRestartDungeonRsp = 20879; - public static final int ToTheMoonQueryPathReq = 6167; - public static final int DeathZoneInfoNotify = 6293; - public static final int WidgetQuickHitTreeReq = 3068; - public static final int AddAranaraCollectionNotify = 6393; - public static final int ChangeWidgetBackgroundActiveStateReq = 5953; - public static final int DeathZoneObserveNotify = 3232; - public static final int GravenInnocenceRaceRestartReq = 22616; - public static final int GravenInnocencePhotoReminderNotify = 24173; - public static final int WidgetQuickHitTreeRsp = 3174; - public static final int GravenInnocenceRaceSettleNotify = 24552; - public static final int WatcherEventStageNotify = 2214; - public static final int SubmitInferenceWordReq = 420; - public static final int UnlockAvatarTalentReq = 1067; - public static final int UnlockAvatarTalentRsp = 1075; - public static final int UnlockCoopChapterReq = 1985; - public static final int UnlockCoopChapterRsp = 1971; - public static final int UnlockNameCardNotify = 4086; - public static final int UnlockPersonalLineReq = 405; - public static final int UnlockPersonalLineRsp = 471; - public static final int UnlockTransPointReq = 3180; - public static final int UnlockTransPointRsp = 3311; - public static final int UnlockedFurnitureFormulaDataNotify = 4481; - public static final int UnlockedFurnitureSuiteDataNotify = 4684; - public static final int UnmarkEntityInMinMapNotify = 287; - public static final int UpdateAbilityCreatedMovingPlatformNotify = 829; - public static final int UpdatePS4BlockListReq = 4018; - public static final int UpdatePS4BlockListRsp = 4058; - public static final int UpdatePS4FriendListNotify = 4056; - public static final int UpdatePS4FriendListReq = 4006; - public static final int UpdatePS4FriendListRsp = 4090; - public static final int UpdatePlayerShowAvatarListReq = 4040; - public static final int UpdatePlayerShowAvatarListRsp = 4011; - public static final int UpdatePlayerShowNameCardListReq = 4030; - public static final int UpdatePlayerShowNameCardListRsp = 4087; - public static final int UpdateRedPointNotify = 74; - public static final int UpdateReunionWatcherNotify = 5051; - public static final int UpgradeRoguelikeShikigamiReq = 8907; - public static final int UpgradeRoguelikeShikigamiRsp = 8493; - public static final int UseItemReq = 682; - public static final int UseItemRsp = 665; - public static final int UseMiracleRingReq = 5248; - public static final int UseMiracleRingRsp = 5243; - public static final int UseWidgetCreateGadgetReq = 4292; - public static final int UseWidgetCreateGadgetRsp = 4284; - public static final int UseWidgetRetractGadgetReq = 4283; - public static final int UseWidgetRetractGadgetRsp = 4277; - public static final int VehicleInteractReq = 844; - public static final int VehicleInteractRsp = 894; - public static final int VehicleStaminaNotify = 826; - public static final int ViewCodexReq = 4206; - public static final int ViewCodexRsp = 4204; - public static final int WatcherAllDataNotify = 2267; - public static final int WatcherChangeNotify = 2275; - public static final int WatcherEventNotify = 2254; - public static final int WatcherEventTypeNotify = 2264; - public static final int WaterSpritePhaseFinishNotify = 2096; - public static final int WeaponAwakenReq = 657; - public static final int WeaponAwakenRsp = 686; - public static final int WeaponPromoteReq = 619; - public static final int WeaponPromoteRsp = 644; - public static final int WeaponUpgradeReq = 656; - public static final int WeaponUpgradeRsp = 623; - public static final int WearEquipReq = 642; - public static final int WearEquipRsp = 629; - public static final int WidgetActiveChangeNotify = 4264; - public static final int WidgetCoolDownNotify = 4271; - public static final int WidgetDoBagReq = 4299; - public static final int WidgetDoBagRsp = 4295; - public static final int WidgetGadgetAllDataNotify = 4280; - public static final int WidgetGadgetDataNotify = 4273; - public static final int WidgetGadgetDestroyNotify = 4263; - public static final int WidgetReportReq = 4251; - public static final int WidgetReportRsp = 4252; - public static final int WidgetSlotChangeNotify = 4254; - public static final int WidgetUseAttachAbilityGroupChangeNotify = 4291; - public static final int WindSeedClientNotify = 1150; - public static final int WorktopOptionNotify = 864; - public static final int WorldAllRoutineTypeNotify = 3543; - public static final int WorldDataNotify = 3357; - public static final int WorldOwnerBlossomBriefInfoNotify = 2764; - public static final int WorldOwnerBlossomScheduleInfoNotify = 2714; - public static final int WorldOwnerDailyTaskNotify = 130; - public static final int WorldPlayerDieNotify = 277; - public static final int WorldPlayerInfoNotify = 3247; - public static final int WorldPlayerLocationNotify = 211; - public static final int WorldPlayerRTTNotify = 19; - public static final int WorldPlayerReviveReq = 262; - public static final int WorldPlayerReviveRsp = 268; - public static final int WorldRoutineChangeNotify = 3546; - public static final int WorldRoutineTypeCloseNotify = 3536; - public static final int WorldRoutineTypeRefreshNotify = 3509; - public static final int SkipPlayerGameTimeReq = 163; - public static final int SkipPlayerGameTimeRsp = 196; + // Opcodes + public static final int AbilityChangeNotify = 1159; + public static final int AbilityInvocationFailNotify = 1114; + public static final int AbilityInvocationFixedNotify = 1167; + public static final int AbilityInvocationsNotify = 1175; + public static final int AcceptCityReputationRequestReq = 2882; + public static final int AcceptCityReputationRequestRsp = 2865; + public static final int AchievementAllDataNotify = 2698; + public static final int AchievementUpdateNotify = 2693; + public static final int ActivityCoinInfoNotify = 2189; + public static final int ActivityCondStateChangeNotify = 2012; + public static final int ActivityDisableTransferPointInteractionNotify = 8969; + public static final int ActivityInfoNotify = 2134; + public static final int ActivityPlayOpenAnimNotify = 2136; + public static final int ActivitySaleChangeNotify = 2034; + public static final int ActivityScheduleInfoNotify = 2068; + public static final int ActivitySelectAvatarCardReq = 2043; + public static final int ActivitySelectAvatarCardRsp = 2130; + public static final int ActivityTakeAllScoreRewardReq = 8731; + public static final int ActivityTakeAllScoreRewardRsp = 8964; + public static final int ActivityTakeScoreRewardReq = 8869; + public static final int ActivityTakeScoreRewardRsp = 8852; + public static final int ActivityTakeWatcherRewardBatchReq = 2044; + public static final int ActivityTakeWatcherRewardBatchRsp = 2023; + public static final int ActivityTakeWatcherRewardReq = 2063; + public static final int ActivityTakeWatcherRewardRsp = 2082; + public static final int ActivityUpdateWatcherNotify = 2183; + public static final int AddBlacklistReq = 4041; + public static final int AddBlacklistRsp = 4070; + public static final int AddFriendNotify = 4019; + public static final int AddNoGachaAvatarCardNotify = 1787; + public static final int AddQuestContentProgressReq = 434; + public static final int AddQuestContentProgressRsp = 472; + public static final int AddRandTaskInfoNotify = 187; + public static final int AddSeenMonsterNotify = 235; + public static final int AdjustWorldLevelReq = 132; + public static final int AdjustWorldLevelRsp = 131; + public static final int AllCoopInfoNotify = 1998; + public static final int AllMarkPointNotify = 3156; + public static final int AllSeenMonsterNotify = 252; + public static final int AllWidgetDataNotify = 4300; + public static final int AnchorPointDataNotify = 4298; + public static final int AnchorPointOpReq = 4296; + public static final int AnchorPointOpRsp = 4286; + public static final int AnimatorForceSetAirMoveNotify = 337; + public static final int AntiAddictNotify = 103; + public static final int ArenaChallengeFinishNotify = 2169; + public static final int AskAddFriendNotify = 4044; + public static final int AskAddFriendReq = 4014; + public static final int AskAddFriendRsp = 4034; + public static final int AsterLargeInfoNotify = 2059; + public static final int AsterLittleInfoNotify = 2006; + public static final int AsterMidCampInfoNotify = 2142; + public static final int AsterMidInfoNotify = 2118; + public static final int AsterMiscInfoNotify = 2072; + public static final int AsterProgressInfoNotify = 2173; + public static final int AvatarAddNotify = 1756; + public static final int AvatarBuffAddNotify = 341; + public static final int AvatarBuffDelNotify = 370; + public static final int AvatarCardChangeReq = 641; + public static final int AvatarCardChangeRsp = 670; + public static final int AvatarChangeAnimHashReq = 1620; + public static final int AvatarChangeAnimHashRsp = 1694; + public static final int AvatarChangeCostumeNotify = 1759; + public static final int AvatarChangeCostumeReq = 1611; + public static final int AvatarChangeCostumeRsp = 1760; + public static final int AvatarChangeElementTypeReq = 1790; + public static final int AvatarChangeElementTypeRsp = 1781; + public static final int AvatarDataNotify = 1613; + public static final int AvatarDelNotify = 1621; + public static final int AvatarDieAnimationEndReq = 1665; + public static final int AvatarDieAnimationEndRsp = 1795; + public static final int AvatarEnterElementViewNotify = 326; + public static final int AvatarEquipAffixStartNotify = 1666; + public static final int AvatarEquipChangeNotify = 661; + public static final int AvatarExpeditionAllDataReq = 1748; + public static final int AvatarExpeditionAllDataRsp = 1671; + public static final int AvatarExpeditionCallBackReq = 1791; + public static final int AvatarExpeditionCallBackRsp = 1631; + public static final int AvatarExpeditionDataNotify = 1646; + public static final int AvatarExpeditionGetRewardReq = 1641; + public static final int AvatarExpeditionGetRewardRsp = 1707; + public static final int AvatarExpeditionStartReq = 1763; + public static final int AvatarExpeditionStartRsp = 1699; + public static final int AvatarFetterDataNotify = 1648; + public static final int AvatarFetterLevelRewardReq = 1653; + public static final int AvatarFetterLevelRewardRsp = 1691; + public static final int AvatarFightPropNotify = 1214; + public static final int AvatarFightPropUpdateNotify = 1234; + public static final int AvatarFlycloakChangeNotify = 1728; + public static final int AvatarFollowRouteNotify = 3300; + public static final int AvatarGainCostumeNotify = 1701; + public static final int AvatarGainFlycloakNotify = 1793; + public static final int AvatarLifeStateChangeNotify = 1282; + public static final int AvatarPromoteGetRewardReq = 1610; + public static final int AvatarPromoteGetRewardRsp = 1711; + public static final int AvatarPromoteReq = 1799; + public static final int AvatarPromoteRsp = 1681; + public static final int AvatarPropChangeReasonNotify = 1265; + public static final int AvatarPropNotify = 1259; + public static final int AvatarSatiationDataNotify = 1655; + public static final int AvatarSkillChangeNotify = 1042; + public static final int AvatarSkillDepotChangeNotify = 1064; + public static final int AvatarSkillInfoNotify = 1082; + public static final int AvatarSkillMaxChargeCountNotify = 1072; + public static final int AvatarSkillUpgradeReq = 1007; + public static final int AvatarSkillUpgradeRsp = 1091; + public static final int AvatarTeamUpdateNotify = 1744; + public static final int AvatarUnlockTalentNotify = 1054; + public static final int AvatarUpgradeReq = 1764; + public static final int AvatarUpgradeRsp = 1741; + public static final int AvatarWearFlycloakReq = 1700; + public static final int AvatarWearFlycloakRsp = 1745; + public static final int BackMyWorldReq = 280; + public static final int BackMyWorldRsp = 247; + public static final int BargainOfferPriceReq = 474; + public static final int BargainOfferPriceRsp = 446; + public static final int BargainStartNotify = 494; + public static final int BargainTerminateNotify = 484; + public static final int BattlePassAllDataNotify = 2648; + public static final int BattlePassBuySuccNotify = 2617; + public static final int BattlePassCurScheduleUpdateNotify = 2646; + public static final int BattlePassMissionDelNotify = 2609; + public static final int BattlePassMissionUpdateNotify = 2643; + public static final int BeginCameraSceneLookNotify = 260; + public static final int BigTalentPointConvertReq = 1014; + public static final int BigTalentPointConvertRsp = 1034; + public static final int BlessingAcceptAllGivePicReq = 2160; + public static final int BlessingAcceptAllGivePicRsp = 2159; + public static final int BlessingAcceptGivePicReq = 2091; + public static final int BlessingAcceptGivePicRsp = 2187; + public static final int BlessingGetAllRecvPicRecordListReq = 2010; + public static final int BlessingGetAllRecvPicRecordListRsp = 2111; + public static final int BlessingGetFriendPicListReq = 2128; + public static final int BlessingGetFriendPicListRsp = 2193; + public static final int BlessingGiveFriendPicReq = 2066; + public static final int BlessingGiveFriendPicRsp = 2053; + public static final int BlessingRecvFriendPicNotify = 2011; + public static final int BlessingRedeemRewardReq = 2100; + public static final int BlessingRedeemRewardRsp = 2145; + public static final int BlessingScanReq = 2004; + public static final int BlessingScanRsp = 2055; + public static final int BlitzRushParkourRestartReq = 8085; + public static final int BlitzRushParkourRestartRsp = 8538; + public static final int BlossomBriefInfoNotify = 2754; + public static final int BlossomChestCreateNotify = 2734; + public static final int BlossomChestInfoNotify = 882; + public static final int BonusActivityInfoReq = 2591; + public static final int BonusActivityInfoRsp = 2542; + public static final int BonusActivityUpdateNotify = 2507; + public static final int BossChestActivateNotify = 872; + public static final int BounceConjuringSettleNotify = 8434; + public static final int BuoyantCombatSettleNotify = 8387; + public static final int BuyBattlePassLevelReq = 2626; + public static final int BuyBattlePassLevelRsp = 2612; + public static final int BuyGoodsReq = 754; + public static final int BuyGoodsRsp = 764; + public static final int BuyResinReq = 630; + public static final int BuyResinRsp = 687; + public static final int CalcWeaponUpgradeReturnItemsReq = 601; + public static final int CalcWeaponUpgradeReturnItemsRsp = 698; + public static final int CanUseSkillNotify = 1027; + public static final int CancelCityReputationRequestReq = 2850; + public static final int CancelCityReputationRequestRsp = 2859; + public static final int CancelCoopTaskReq = 1976; + public static final int CancelCoopTaskRsp = 1962; + public static final int CancelFinishParentQuestNotify = 402; + public static final int CardProductRewardNotify = 4146; + public static final int ChallengeDataNotify = 923; + public static final int ChallengeRecordNotify = 974; + public static final int ChangeAvatarReq = 1704; + public static final int ChangeAvatarRsp = 1689; + public static final int ChangeGameTimeReq = 165; + public static final int ChangeGameTimeRsp = 150; + public static final int ChangeMailStarNotify = 1491; + public static final int ChangeMpTeamAvatarReq = 1660; + public static final int ChangeMpTeamAvatarRsp = 1747; + public static final int ChangeServerGlobalValueNotify = 46; + public static final int ChangeTeamNameReq = 1692; + public static final int ChangeTeamNameRsp = 1664; + public static final int ChangeWorldToSingleModeNotify = 3025; + public static final int ChangeWorldToSingleModeReq = 3243; + public static final int ChangeWorldToSingleModeRsp = 3271; + public static final int ChannelerSlabCheckEnterLoopDungeonReq = 8678; + public static final int ChannelerSlabCheckEnterLoopDungeonRsp = 8961; + public static final int ChannelerSlabEnterLoopDungeonReq = 8928; + public static final int ChannelerSlabEnterLoopDungeonRsp = 8892; + public static final int ChannelerSlabLoopDungeonChallengeInfoNotify = 8499; + public static final int ChannelerSlabLoopDungeonSelectConditionReq = 8368; + public static final int ChannelerSlabLoopDungeonSelectConditionRsp = 8943; + public static final int ChannelerSlabLoopDungeonTakeFirstPassRewardReq = 8779; + public static final int ChannelerSlabLoopDungeonTakeFirstPassRewardRsp = 8654; + public static final int ChannelerSlabLoopDungeonTakeScoreRewardReq = 8751; + public static final int ChannelerSlabLoopDungeonTakeScoreRewardRsp = 8186; + public static final int ChannelerSlabOneOffDungeonInfoNotify = 8038; + public static final int ChannelerSlabOneOffDungeonInfoReq = 8069; + public static final int ChannelerSlabOneOffDungeonInfoRsp = 8731; + public static final int ChannelerSlabSaveAssistInfoReq = 8304; + public static final int ChannelerSlabSaveAssistInfoRsp = 8443; + public static final int ChannelerSlabStageActiveChallengeIndexNotify = 8647; + public static final int ChannelerSlabStageOneofDungeonNotify = 8203; + public static final int ChannelerSlabTakeoffBuffReq = 8329; + public static final int ChannelerSlabTakeoffBuffRsp = 8646; + public static final int ChannelerSlabWearBuffReq = 8487; + public static final int ChannelerSlabWearBuffRsp = 8651; + public static final int ChapterStateNotify = 427; + public static final int ChatChannelDataNotify = 5041; + public static final int ChatChannelUpdateNotify = 4957; + public static final int ChatHistoryNotify = 3301; + public static final int CheckAddItemExceedLimitNotify = 685; + public static final int CheckSegmentCRCNotify = 56; + public static final int CheckSegmentCRCReq = 23; + public static final int ChessEscapedMonstersNotify = 5389; + public static final int ChessLeftMonstersNotify = 5376; + public static final int ChessManualRefreshCardsReq = 5306; + public static final int ChessManualRefreshCardsRsp = 5390; + public static final int ChessPickCardNotify = 5303; + public static final int ChessPickCardReq = 5301; + public static final int ChessPickCardRsp = 5398; + public static final int ChessPlayerInfoNotify = 5392; + public static final int ChessSelectedCardsNotify = 5385; + public static final int ChooseCurAvatarTeamReq = 1650; + public static final int ChooseCurAvatarTeamRsp = 1625; + public static final int CityReputationDataNotify = 2827; + public static final int CityReputationLevelupNotify = 2814; + public static final int ClearRoguelikeCurseNotify = 8565; + public static final int ClientAIStateNotify = 1129; + public static final int ClientAbilitiesInitFinishCombineNotify = 1172; + public static final int ClientAbilityChangeNotify = 1107; + public static final int ClientAbilityInitBeginNotify = 1154; + public static final int ClientAbilityInitFinishNotify = 1164; + public static final int ClientBulletCreateNotify = 94; + public static final int ClientCollectorDataNotify = 4267; + public static final int ClientHashDebugNotify = 3234; + public static final int ClientLoadingCostumeVerificationNotify = 3387; + public static final int ClientLockGameTimeNotify = 189; + public static final int ClientNewMailNotify = 1450; + public static final int ClientPauseNotify = 276; + public static final int ClientReconnectNotify = 7; + public static final int ClientReportNotify = 29; + public static final int ClientScriptEventNotify = 248; + public static final int ClientTransmitReq = 271; + public static final int ClientTransmitRsp = 202; + public static final int ClientTriggerEventNotify = 191; + public static final int CloseCommonTipsNotify = 3196; + public static final int ClosedItemNotify = 689; + public static final int CodexDataFullNotify = 4203; + public static final int CodexDataUpdateNotify = 4207; + public static final int CombatInvocationsNotify = 387; + public static final int CombineDataNotify = 690; + public static final int CombineFormulaDataNotify = 692; + public static final int CombineReq = 616; + public static final int CombineRsp = 637; + public static final int CommonPlayerTipsNotify = 8076; + public static final int CompoundDataNotify = 118; + public static final int CompoundUnlockNotify = 155; + public static final int CookDataNotify = 157; + public static final int CookGradeDataNotify = 126; + public static final int CookRecipeDataNotify = 186; + public static final int CoopCgShowNotify = 1957; + public static final int CoopCgUpdateNotify = 1989; + public static final int CoopChapterUpdateNotify = 1982; + public static final int CoopDataNotify = 1994; + public static final int CoopPointUpdateNotify = 1951; + public static final int CoopProgressUpdateNotify = 1990; + public static final int CoopRewardUpdateNotify = 1981; + public static final int CreateMassiveEntityNotify = 340; + public static final int CreateMassiveEntityReq = 349; + public static final int CreateMassiveEntityRsp = 397; + public static final int CreateVehicleReq = 874; + public static final int CreateVehicleRsp = 846; + public static final int CutSceneBeginNotify = 295; + public static final int CutSceneEndNotify = 283; + public static final int CutSceneFinishNotify = 228; + public static final int DailyTaskDataNotify = 111; + public static final int DailyTaskFilterCityReq = 199; + public static final int DailyTaskFilterCityRsp = 178; + public static final int DailyTaskProgressNotify = 160; + public static final int DailyTaskScoreRewardNotify = 193; + public static final int DailyTaskUnlockedCitiesNotify = 180; + public static final int DataResVersionNotify = 140; + public static final int DealAddFriendReq = 4072; + public static final int DealAddFriendRsp = 4082; + public static final int DebugNotify = 101; + public static final int DelMailReq = 1434; + public static final int DelMailRsp = 1472; + public static final int DelScenePlayTeamEntityNotify = 3214; + public static final int DelTeamEntityNotify = 330; + public static final int DeleteFriendNotify = 4023; + public static final int DeleteFriendReq = 4059; + public static final int DeleteFriendRsp = 4007; + public static final int DestroyMassiveEntityNotify = 311; + public static final int DestroyMaterialReq = 608; + public static final int DestroyMaterialRsp = 679; + public static final int DigActivityChangeGadgetStateReq = 8140; + public static final int DigActivityChangeGadgetStateRsp = 8656; + public static final int DigActivityMarkPointChangeNotify = 8585; + public static final int DisableRoguelikeTrapNotify = 8007; + public static final int DoGachaReq = 1554; + public static final int DoGachaRsp = 1564; + public static final int DoRoguelikeDungeonCardGachaReq = 8427; + public static final int DoRoguelikeDungeonCardGachaRsp = 8567; + public static final int DoSetPlayerBornDataNotify = 161; + public static final int DraftGuestReplyInviteNotify = 5482; + public static final int DraftGuestReplyInviteReq = 5434; + public static final int DraftGuestReplyInviteRsp = 5472; + public static final int DraftGuestReplyTwiceConfirmNotify = 5442; + public static final int DraftGuestReplyTwiceConfirmReq = 5459; + public static final int DraftGuestReplyTwiceConfirmRsp = 5407; + public static final int DraftInviteResultNotify = 5465; + public static final int DraftOwnerInviteNotify = 5414; + public static final int DraftOwnerStartInviteReq = 5454; + public static final int DraftOwnerStartInviteRsp = 5464; + public static final int DraftOwnerTwiceConfirmNotify = 5450; + public static final int DraftTwiceConfirmResultNotify = 5491; + public static final int DragonSpineChapterFinishNotify = 2182; + public static final int DragonSpineChapterOpenNotify = 2126; + public static final int DragonSpineChapterProgressChangeNotify = 2155; + public static final int DragonSpineCoinChangeNotify = 2076; + public static final int DropHintNotify = 633; + public static final int DropItemReq = 650; + public static final int DropItemRsp = 659; + public static final int DungeonCandidateTeamChangeAvatarReq = 988; + public static final int DungeonCandidateTeamChangeAvatarRsp = 949; + public static final int DungeonCandidateTeamCreateReq = 957; + public static final int DungeonCandidateTeamCreateRsp = 986; + public static final int DungeonCandidateTeamDismissNotify = 913; + public static final int DungeonCandidateTeamInfoNotify = 946; + public static final int DungeonCandidateTeamInviteNotify = 984; + public static final int DungeonCandidateTeamInviteReq = 926; + public static final int DungeonCandidateTeamInviteRsp = 933; + public static final int DungeonCandidateTeamKickReq = 916; + public static final int DungeonCandidateTeamKickRsp = 937; + public static final int DungeonCandidateTeamLeaveReq = 925; + public static final int DungeonCandidateTeamLeaveRsp = 918; + public static final int DungeonCandidateTeamPlayerLeaveNotify = 970; + public static final int DungeonCandidateTeamRefuseNotify = 941; + public static final int DungeonCandidateTeamReplyInviteReq = 958; + public static final int DungeonCandidateTeamReplyInviteRsp = 905; + public static final int DungeonCandidateTeamSetChangingAvatarReq = 979; + public static final int DungeonCandidateTeamSetChangingAvatarRsp = 945; + public static final int DungeonCandidateTeamSetReadyReq = 971; + public static final int DungeonCandidateTeamSetReadyRsp = 902; + public static final int DungeonChallengeBeginNotify = 961; + public static final int DungeonChallengeFinishNotify = 956; + public static final int DungeonDataNotify = 966; + public static final int DungeonDieOptionReq = 907; + public static final int DungeonDieOptionRsp = 991; + public static final int DungeonEntryInfoReq = 967; + public static final int DungeonEntryInfoRsp = 975; + public static final int DungeonEntryToBeExploreNotify = 3313; + public static final int DungeonFollowNotify = 919; + public static final int DungeonGetStatueDropReq = 944; + public static final int DungeonGetStatueDropRsp = 994; + public static final int DungeonInterruptChallengeReq = 993; + public static final int DungeonInterruptChallengeRsp = 930; + public static final int DungeonPlayerDieNotify = 959; + public static final int DungeonPlayerDieReq = 929; + public static final int DungeonPlayerDieRsp = 927; + public static final int DungeonRestartInviteNotify = 904; + public static final int DungeonRestartInviteReplyNotify = 936; + public static final int DungeonRestartInviteReplyReq = 920; + public static final int DungeonRestartInviteReplyRsp = 943; + public static final int DungeonRestartReq = 953; + public static final int DungeonRestartResultNotify = 908; + public static final int DungeonRestartRsp = 938; + public static final int DungeonReviseLevelNotify = 901; + public static final int DungeonSettleNotify = 950; + public static final int DungeonShowReminderNotify = 942; + public static final int DungeonSlipRevivePointActivateReq = 911; + public static final int DungeonSlipRevivePointActivateRsp = 960; + public static final int DungeonWayPointActivateReq = 982; + public static final int DungeonWayPointActivateRsp = 965; + public static final int DungeonWayPointNotify = 972; + public static final int EchoNotify = 44; + public static final int EchoShellTakeRewardReq = 8078; + public static final int EchoShellTakeRewardRsp = 8523; + public static final int EchoShellUpdateNotify = 8377; + public static final int EffigyChallengeInfoNotify = 2038; + public static final int EffigyChallengeResultNotify = 2028; + public static final int EndCameraSceneLookNotify = 293; + public static final int EnterChessDungeonReq = 8341; + public static final int EnterChessDungeonRsp = 8947; + public static final int EnterFishingReq = 5848; + public static final int EnterFishingRsp = 5843; + public static final int EnterMechanicusDungeonReq = 3959; + public static final int EnterMechanicusDungeonRsp = 3907; + public static final int EnterRoguelikeDungeonNotify = 8557; + public static final int EnterSceneDoneReq = 269; + public static final int EnterSceneDoneRsp = 281; + public static final int EnterScenePeerNotify = 215; + public static final int EnterSceneReadyReq = 300; + public static final int EnterSceneReadyRsp = 239; + public static final int EnterSceneWeatherAreaNotify = 288; + public static final int EnterTransPointRegionNotify = 227; + public static final int EnterTrialAvatarActivityDungeonReq = 2084; + public static final int EnterTrialAvatarActivityDungeonRsp = 2154; + public static final int EnterWorldAreaReq = 233; + public static final int EnterWorldAreaRsp = 216; + public static final int EntityAiKillSelfNotify = 308; + public static final int EntityAiSyncNotify = 320; + public static final int EntityAuthorityChangeNotify = 384; + public static final int EntityConfigHashNotify = 3103; + public static final int EntityFightPropChangeReasonNotify = 1272; + public static final int EntityFightPropNotify = 1254; + public static final int EntityFightPropUpdateNotify = 1264; + public static final int EntityForceSyncReq = 237; + public static final int EntityForceSyncRsp = 225; + public static final int EntityJumpNotify = 219; + public static final int EntityMoveRoomNotify = 3060; + public static final int EntityPropNotify = 1267; + public static final int EntityTagChangeNotify = 3428; + public static final int EquipRoguelikeRuneReq = 8526; + public static final int EquipRoguelikeRuneRsp = 8572; + public static final int EvtAiSyncCombatThreatInfoNotify = 338; + public static final int EvtAiSyncSkillCdNotify = 325; + public static final int EvtAnimatorParameterNotify = 375; + public static final int EvtAnimatorStateChangedNotify = 359; + public static final int EvtAvatarEnterFocusNotify = 394; + public static final int EvtAvatarExitFocusNotify = 374; + public static final int EvtAvatarLockChairReq = 379; + public static final int EvtAvatarLockChairRsp = 345; + public static final int EvtAvatarSitDownNotify = 302; + public static final int EvtAvatarStandUpNotify = 388; + public static final int EvtAvatarUpdateFocusNotify = 346; + public static final int EvtBeingHitNotify = 367; + public static final int EvtBeingHitsCombineNotify = 318; + public static final int EvtBulletDeactiveNotify = 342; + public static final int EvtBulletHitNotify = 391; + public static final int EvtBulletMoveNotify = 344; + public static final int EvtCostStaminaNotify = 365; + public static final int EvtCreateGadgetNotify = 314; + public static final int EvtDestroyGadgetNotify = 334; + public static final int EvtDestroyServerGadgetNotify = 336; + public static final int EvtDoSkillSuccNotify = 364; + public static final int EvtEntityRenderersChangedNotify = 316; + public static final int EvtEntityStartDieEndNotify = 329; + public static final int EvtFaceToDirNotify = 382; + public static final int EvtFaceToEntityNotify = 372; + public static final int EvtRushMoveNotify = 307; + public static final int EvtSetAttackTargetNotify = 350; + public static final int ExecuteGadgetLuaReq = 217; + public static final int ExecuteGadgetLuaRsp = 224; + public static final int ExecuteGroupTriggerReq = 204; + public static final int ExecuteGroupTriggerRsp = 220; + public static final int ExitFishingReq = 5817; + public static final int ExitFishingRsp = 5826; + public static final int ExitSceneWeatherAreaNotify = 249; + public static final int ExitTransPointRegionNotify = 266; + public static final int ExpeditionChallengeEnterRegionNotify = 2077; + public static final int ExpeditionChallengeFinishedNotify = 2075; + public static final int ExpeditionRecallReq = 2008; + public static final int ExpeditionRecallRsp = 2015; + public static final int ExpeditionStartReq = 2002; + public static final int ExpeditionStartRsp = 2177; + public static final int ExpeditionTakeRewardReq = 2129; + public static final int ExpeditionTakeRewardRsp = 2158; + public static final int FindHilichurlAcceptQuestNotify = 8170; + public static final int FindHilichurlFinishSecondQuestNotify = 8326; + public static final int FinishDeliveryNotify = 2110; + public static final int FinishMainCoopReq = 1986; + public static final int FinishMainCoopRsp = 1965; + public static final int FinishedParentQuestNotify = 464; + public static final int FinishedParentQuestUpdateNotify = 414; + public static final int FireworkNotify = 5934; + public static final int FireworkReq = 6068; + public static final int FireworkRsp = 5918; + public static final int FireworkSetNotify = 6079; + public static final int FireworkSetReq = 6099; + public static final int FireworkSetRsp = 5969; + public static final int FishAttractNotify = 5812; + public static final int FishBaitGoneNotify = 5825; + public static final int FishBattleBeginReq = 5835; + public static final int FishBattleBeginRsp = 5821; + public static final int FishBattleEndReq = 5801; + public static final int FishBattleEndRsp = 5802; + public static final int FishBiteReq = 5839; + public static final int FishBiteRsp = 5831; + public static final int FishCastRodReq = 5836; + public static final int FishCastRodRsp = 5815; + public static final int FishChosenNotify = 5844; + public static final int FishEscapeNotify = 5832; + public static final int FishPoolDataNotify = 5840; + public static final int FishingGallerySettleNotify = 8594; + public static final int FleurFairBalloonSettleNotify = 2200; + public static final int FleurFairBuffEnergyNotify = 5302; + public static final int FleurFairFallSettleNotify = 2027; + public static final int FleurFairFinishGalleryStageNotify = 5349; + public static final int FleurFairMusicGameSettleReq = 2086; + public static final int FleurFairMusicGameSettleRsp = 2033; + public static final int FleurFairMusicGameStartReq = 2150; + public static final int FleurFairMusicGameStartRsp = 2174; + public static final int FleurFairReplayMiniGameReq = 2165; + public static final int FleurFairReplayMiniGameRsp = 2192; + public static final int FleurFairStageSettleNotify = 5388; + public static final int FlightActivityRestartReq = 2039; + public static final int FlightActivityRestartRsp = 2093; + public static final int FlightActivitySettleNotify = 2115; + public static final int FocusAvatarReq = 1712; + public static final int FocusAvatarRsp = 1604; + public static final int ForceAddPlayerFriendReq = 4004; + public static final int ForceAddPlayerFriendRsp = 4020; + public static final int ForceDragAvatarNotify = 3017; + public static final int ForceDragBackTransferNotify = 3245; + public static final int ForgeDataNotify = 603; + public static final int ForgeFormulaDataNotify = 606; + public static final int ForgeGetQueueDataReq = 618; + public static final int ForgeGetQueueDataRsp = 658; + public static final int ForgeQueueDataNotify = 625; + public static final int ForgeQueueManipulateReq = 602; + public static final int ForgeQueueManipulateRsp = 688; + public static final int ForgeStartReq = 605; + public static final int ForgeStartRsp = 671; + public static final int FoundationNotify = 861; + public static final int FoundationReq = 827; + public static final int FoundationRsp = 866; + public static final int FriendInfoChangeNotify = 4092; + public static final int FunitureMakeMakeInfoChangeNotify = 4588; + public static final int FurnitureCurModuleArrangeCountNotify = 4864; + public static final int FurnitureMakeBeHelpedNotify = 4694; + public static final int FurnitureMakeCancelReq = 4619; + public static final int FurnitureMakeCancelRsp = 4825; + public static final int FurnitureMakeFinishNotify = 4658; + public static final int FurnitureMakeHelpReq = 4851; + public static final int FurnitureMakeHelpRsp = 4841; + public static final int FurnitureMakeReq = 4681; + public static final int FurnitureMakeRsp = 4506; + public static final int FurnitureMakeStartReq = 4552; + public static final int FurnitureMakeStartRsp = 4487; + public static final int GMShowNavMeshReq = 2304; + public static final int GMShowNavMeshRsp = 2320; + public static final int GMShowObstacleReq = 2353; + public static final int GMShowObstacleRsp = 2338; + public static final int GachaOpenWishNotify = 1572; + public static final int GachaSimpleInfoNotify = 1582; + public static final int GachaWishReq = 1514; + public static final int GachaWishRsp = 1534; + public static final int GadgetAutoPickDropInfoNotify = 842; + public static final int GadgetChainLevelChangeNotify = 819; + public static final int GadgetChainLevelUpdateNotify = 823; + public static final int GadgetCustomTreeInfoNotify = 833; + public static final int GadgetGeneralRewardInfoNotify = 891; + public static final int GadgetInteractReq = 867; + public static final int GadgetInteractRsp = 875; + public static final int GadgetPlayDataNotify = 859; + public static final int GadgetPlayStartNotify = 865; + public static final int GadgetPlayStopNotify = 850; + public static final int GadgetPlayUidOpNotify = 807; + public static final int GadgetStateNotify = 854; + public static final int GadgetTalkChangeNotify = 856; + public static final int GalleryBalloonScoreNotify = 5554; + public static final int GalleryBalloonShootNotify = 5575; + public static final int GalleryBounceConjuringHitNotify = 5527; + public static final int GalleryBrokenFloorFallNotify = 5507; + public static final int GalleryBulletHitNotify = 5559; + public static final int GalleryFallCatchNotify = 5514; + public static final int GalleryFallScoreNotify = 5534; + public static final int GalleryFlowerCatchNotify = 5565; + public static final int GalleryPreStartNotify = 5550; + public static final int GalleryStartNotify = 5567; + public static final int GalleryStopNotify = 5564; + public static final int GallerySumoKillMonsterNotify = 5566; + public static final int GetActivityInfoReq = 2116; + public static final int GetActivityInfoRsp = 2140; + public static final int GetActivityScheduleReq = 2153; + public static final int GetActivityScheduleRsp = 2032; + public static final int GetActivityShopSheetInfoReq = 772; + public static final int GetActivityShopSheetInfoRsp = 782; + public static final int GetAllActivatedBargainDataReq = 413; + public static final int GetAllActivatedBargainDataRsp = 457; + public static final int GetAllH5ActivityInfoReq = 5693; + public static final int GetAllH5ActivityInfoRsp = 5698; + public static final int GetAllMailReq = 1459; + public static final int GetAllMailRsp = 1407; + public static final int GetAllSceneGalleryInfoReq = 5572; + public static final int GetAllSceneGalleryInfoRsp = 5582; + public static final int GetAllUnlockNameCardReq = 4046; + public static final int GetAllUnlockNameCardRsp = 4084; + public static final int GetAreaExplorePointReq = 258; + public static final int GetAreaExplorePointRsp = 205; + public static final int GetAuthSalesmanInfoReq = 2139; + public static final int GetAuthSalesmanInfoRsp = 2123; + public static final int GetAuthkeyReq = 1482; + public static final int GetAuthkeyRsp = 1465; + public static final int GetBargainDataReq = 441; + public static final int GetBargainDataRsp = 470; + public static final int GetBattlePassProductReq = 2639; + public static final int GetBattlePassProductRsp = 2631; + public static final int GetBlossomBriefInfoListReq = 2767; + public static final int GetBlossomBriefInfoListRsp = 2775; + public static final int GetBonusActivityRewardReq = 2529; + public static final int GetBonusActivityRewardRsp = 2527; + public static final int GetChatEmojiCollectionReq = 4021; + public static final int GetChatEmojiCollectionRsp = 4001; + public static final int GetCityHuntingOfferReq = 4309; + public static final int GetCityHuntingOfferRsp = 4346; + public static final int GetCityReputationInfoReq = 2867; + public static final int GetCityReputationInfoRsp = 2875; + public static final int GetCityReputationMapInfoReq = 2807; + public static final int GetCityReputationMapInfoRsp = 2891; + public static final int GetCompoundDataReq = 158; + public static final int GetCompoundDataRsp = 105; + public static final int GetDailyDungeonEntryInfoReq = 997; + public static final int GetDailyDungeonEntryInfoRsp = 940; + public static final int GetDungeonEntryExploreConditionReq = 3449; + public static final int GetDungeonEntryExploreConditionRsp = 3413; + public static final int GetExpeditionAssistInfoListReq = 2180; + public static final int GetExpeditionAssistInfoListRsp = 2197; + public static final int GetFriendShowAvatarInfoReq = 4060; + public static final int GetFriendShowAvatarInfoRsp = 4093; + public static final int GetFriendShowNameCardInfoReq = 4053; + public static final int GetFriendShowNameCardInfoRsp = 4038; + public static final int GetFurnitureCurModuleArrangeCountReq = 4899; + public static final int GetGachaInfoReq = 1567; + public static final int GetGachaInfoRsp = 1575; + public static final int GetHomeLevelUpRewardReq = 4821; + public static final int GetHomeLevelUpRewardRsp = 4585; + public static final int GetHuntingOfferRewardReq = 4336; + public static final int GetHuntingOfferRewardRsp = 4315; + public static final int GetInvestigationMonsterReq = 1909; + public static final int GetInvestigationMonsterRsp = 1923; + public static final int GetMailItemReq = 1464; + public static final int GetMailItemRsp = 1414; + public static final int GetMapAreaReq = 3084; + public static final int GetMapAreaRsp = 3458; + public static final int GetMapMarkTipsReq = 3342; + public static final int GetMapMarkTipsRsp = 3465; + public static final int GetMechanicusInfoReq = 3967; + public static final int GetMechanicusInfoRsp = 3975; + public static final int GetNextResourceInfoReq = 185; + public static final int GetNextResourceInfoRsp = 173; + public static final int GetOnlinePlayerInfoReq = 66; + public static final int GetOnlinePlayerInfoRsp = 61; + public static final int GetOnlinePlayerListReq = 82; + public static final int GetOnlinePlayerListRsp = 65; + public static final int GetOpActivityInfoReq = 5167; + public static final int GetOpActivityInfoRsp = 5175; + public static final int GetPlayerAskFriendListReq = 4079; + public static final int GetPlayerAskFriendListRsp = 4045; + public static final int GetPlayerBlacklistReq = 4005; + public static final int GetPlayerBlacklistRsp = 4071; + public static final int GetPlayerFriendListReq = 4067; + public static final int GetPlayerFriendListRsp = 4075; + public static final int GetPlayerHomeCompInfoReq = 4511; + public static final int GetPlayerMpModeAvailabilityReq = 1839; + public static final int GetPlayerMpModeAvailabilityRsp = 1831; + public static final int GetPlayerSocialDetailReq = 4065; + public static final int GetPlayerSocialDetailRsp = 4050; + public static final int GetPlayerTokenReq = 167; + public static final int GetPlayerTokenRsp = 175; + public static final int GetPushTipsRewardReq = 2246; + public static final int GetPushTipsRewardRsp = 2284; + public static final int GetQuestTalkHistoryReq = 482; + public static final int GetQuestTalkHistoryRsp = 465; + public static final int GetRecentMpPlayerListReq = 4026; + public static final int GetRecentMpPlayerListRsp = 4033; + public static final int GetRegionSearchReq = 5636; + public static final int GetReunionMissionInfoReq = 5089; + public static final int GetReunionMissionInfoRsp = 5081; + public static final int GetReunionPrivilegeInfoReq = 5076; + public static final int GetReunionPrivilegeInfoRsp = 5062; + public static final int GetReunionSignInInfoReq = 5086; + public static final int GetReunionSignInInfoRsp = 5065; + public static final int GetSceneAreaReq = 244; + public static final int GetSceneAreaRsp = 294; + public static final int GetSceneNpcPositionReq = 564; + public static final int GetSceneNpcPositionRsp = 514; + public static final int GetScenePerformanceReq = 3283; + public static final int GetScenePerformanceRsp = 3274; + public static final int GetScenePointReq = 242; + public static final int GetScenePointRsp = 229; + public static final int GetShopReq = 767; + public static final int GetShopRsp = 775; + public static final int GetShopmallDataReq = 714; + public static final int GetShopmallDataRsp = 734; + public static final int GetSignInRewardReq = 2514; + public static final int GetSignInRewardRsp = 2534; + public static final int GetWidgetSlotReq = 4255; + public static final int GetWidgetSlotRsp = 4266; + public static final int GetWorldMpInfoReq = 3479; + public static final int GetWorldMpInfoRsp = 3118; + public static final int GiveUpRoguelikeDungeonCardReq = 8292; + public static final int GiveUpRoguelikeDungeonCardRsp = 8752; + public static final int GivingRecordChangeNotify = 136; + public static final int GivingRecordNotify = 143; + public static final int GmTalkNotify = 84; + public static final int GmTalkReq = 75; + public static final int GmTalkRsp = 54; + public static final int GrantRewardNotify = 613; + public static final int GroupLinkAllNotify = 5798; + public static final int GroupLinkChangeNotify = 5793; + public static final int GroupLinkDeleteNotify = 5759; + public static final int GroupSuiteNotify = 3263; + public static final int GroupUnloadNotify = 3167; + public static final int GuestBeginEnterSceneNotify = 3195; + public static final int GuestPostEnterSceneNotify = 3012; + public static final int H5ActivityIdsNotify = 5659; + public static final int HideAndSeekPlayerReadyNotify = 5330; + public static final int HideAndSeekPlayerSetAvatarNotify = 5387; + public static final int HideAndSeekSelectAvatarReq = 5397; + public static final int HideAndSeekSelectAvatarRsp = 5340; + public static final int HideAndSeekSelectSkillReq = 8896; + public static final int HideAndSeekSelectSkillRsp = 8715; + public static final int HideAndSeekSetReadyReq = 5311; + public static final int HideAndSeekSetReadyRsp = 5360; + public static final int HideAndSeekSettleNotify = 5393; + public static final int HitClientTrivialNotify = 278; + public static final int HitTreeNotify = 3299; + public static final int HomeAvatarAllFinishRewardNotify = 4504; + public static final int HomeAvatarCostumeChangeNotify = 4651; + public static final int HomeAvatarRewardEventGetReq = 4859; + public static final int HomeAvatarRewardEventGetRsp = 4784; + public static final int HomeAvatarRewardEventNotify = 4682; + public static final int HomeAvatarSummonAllEventNotify = 4892; + public static final int HomeAvatarSummonEventReq = 4708; + public static final int HomeAvatarSummonEventRsp = 4633; + public static final int HomeAvatarSummonFinishReq = 4510; + public static final int HomeAvatarSummonFinishRsp = 4566; + public static final int HomeAvatarTalkFinishInfoNotify = 4517; + public static final int HomeAvatarTalkReq = 4603; + public static final int HomeAvatarTalkRsp = 4484; + public static final int HomeAvtarAllFinishRewardNotify = 4480; + public static final int HomeBasicInfoNotify = 4501; + public static final int HomeBlockNotify = 4857; + public static final int HomeChangeEditModeReq = 4533; + public static final int HomeChangeEditModeRsp = 4862; + public static final int HomeChangeModuleReq = 4789; + public static final int HomeChangeModuleRsp = 4876; + public static final int HomeChooseModuleReq = 4843; + public static final int HomeChooseModuleRsp = 4736; + public static final int HomeComfortInfoNotify = 4816; + public static final int HomeCustomFurnitureInfoNotify = 4647; + public static final int HomeEditCustomFurnitureReq = 4558; + public static final int HomeEditCustomFurnitureRsp = 4749; + public static final int HomeFishFarmingInfoNotify = 4807; + public static final int HomeGetArrangementInfoReq = 4538; + public static final int HomeGetArrangementInfoRsp = 4704; + public static final int HomeGetBasicInfoReq = 4817; + public static final int HomeGetFishFarmingInfoReq = 4575; + public static final int HomeGetFishFarmingInfoRsp = 4849; + public static final int HomeGetOnlineStatusReq = 4589; + public static final int HomeGetOnlineStatusRsp = 4642; + public static final int HomeKickPlayerReq = 4610; + public static final int HomeKickPlayerRsp = 4889; + public static final int HomeLimitedShopBuyGoodsReq = 4471; + public static final int HomeLimitedShopBuyGoodsRsp = 4883; + public static final int HomeLimitedShopGoodsListReq = 4769; + public static final int HomeLimitedShopGoodsListRsp = 4451; + public static final int HomeLimitedShopInfoChangeNotify = 4722; + public static final int HomeLimitedShopInfoNotify = 4584; + public static final int HomeLimitedShopInfoReq = 4476; + public static final int HomeLimitedShopInfoRsp = 4791; + public static final int HomeMarkPointNotify = 4697; + public static final int HomeModuleSeenReq = 4672; + public static final int HomeModuleSeenRsp = 4507; + public static final int HomeModuleUnlockNotify = 4700; + public static final int HomePlantFieldNotify = 4710; + public static final int HomePlantInfoNotify = 4545; + public static final int HomePlantInfoReq = 4645; + public static final int HomePlantInfoRsp = 4848; + public static final int HomePlantSeedReq = 4607; + public static final int HomePlantSeedRsp = 4546; + public static final int HomePlantWeedReq = 4614; + public static final int HomePlantWeedRsp = 4671; + public static final int HomePriorCheckNotify = 4872; + public static final int HomeResourceNotify = 4753; + public static final int HomeResourceTakeFetterExpReq = 4534; + public static final int HomeResourceTakeFetterExpRsp = 4808; + public static final int HomeResourceTakeHomeCoinReq = 4688; + public static final int HomeResourceTakeHomeCoinRsp = 4554; + public static final int HomeSceneInitFinishReq = 4900; + public static final int HomeSceneInitFinishRsp = 4780; + public static final int HomeSceneJumpReq = 4665; + public static final int HomeSceneJumpRsp = 4482; + public static final int HomeTransferReq = 4537; + public static final int HomeTransferRsp = 4623; + public static final int HomeUpdateArrangementInfoReq = 4840; + public static final int HomeUpdateArrangementInfoRsp = 4776; + public static final int HomeUpdateFishFarmingInfoReq = 4746; + public static final int HomeUpdateFishFarmingInfoRsp = 4551; + public static final int HostPlayerNotify = 354; + public static final int HuntingFailNotify = 4335; + public static final int HuntingGiveUpReq = 4301; + public static final int HuntingGiveUpRsp = 4302; + public static final int HuntingOngoingNotify = 4321; + public static final int HuntingRevealClueNotify = 4332; + public static final int HuntingRevealFinalNotify = 4339; + public static final int HuntingStartNotify = 4344; + public static final int HuntingSuccessNotify = 4331; + public static final int InBattleMechanicusBuildingPointsNotify = 5372; + public static final int InBattleMechanicusCardResultNotify = 5342; + public static final int InBattleMechanicusConfirmCardNotify = 5391; + public static final int InBattleMechanicusConfirmCardReq = 5359; + public static final int InBattleMechanicusConfirmCardRsp = 5307; + public static final int InBattleMechanicusEscapeMonsterNotify = 5320; + public static final int InBattleMechanicusLeftMonsterNotify = 5334; + public static final int InBattleMechanicusPickCardNotify = 5350; + public static final int InBattleMechanicusPickCardReq = 5382; + public static final int InBattleMechanicusPickCardRsp = 5365; + public static final int InBattleMechanicusSettleNotify = 5327; + public static final int InteractDailyDungeonInfoNotify = 987; + public static final int InterruptGalleryReq = 5591; + public static final int InterruptGalleryRsp = 5542; + public static final int InvestigationMonsterUpdateNotify = 1920; + public static final int ItemAddHintNotify = 614; + public static final int ItemCdGroupTimeNotify = 626; + public static final int ItemGivingReq = 108; + public static final int ItemGivingRsp = 179; + public static final int JoinHomeWorldFailNotify = 4847; + public static final int JoinPlayerFailNotify = 251; + public static final int JoinPlayerSceneReq = 285; + public static final int JoinPlayerSceneRsp = 273; + public static final int KeepAliveNotify = 67; + public static final int LeaveSceneReq = 275; + public static final int LeaveSceneRsp = 254; + public static final int LeaveWorldNotify = 3009; + public static final int LevelupCityReq = 243; + public static final int LevelupCityRsp = 236; + public static final int LifeStateChangeNotify = 1275; + public static final int LiveEndNotify = 886; + public static final int LiveStartNotify = 870; + public static final int LoadActivityTerrainNotify = 2146; + public static final int LuaEnvironmentEffectNotify = 3136; + public static final int LuaSetOptionNotify = 343; + public static final int LunaRiteAreaFinishNotify = 8956; + public static final int LunaRiteGroupBundleRegisterNotify = 8279; + public static final int LunaRiteHintPointRemoveNotify = 8793; + public static final int LunaRiteHintPointReq = 8114; + public static final int LunaRiteHintPointRsp = 8873; + public static final int LunaRiteSacrificeReq = 8182; + public static final int LunaRiteSacrificeRsp = 8159; + public static final int LunaRiteTakeSacrificeRewardReq = 8999; + public static final int LunaRiteTakeSacrificeRewardRsp = 8156; + public static final int MailChangeNotify = 1475; + public static final int MainCoopUpdateNotify = 1993; + public static final int MapAreaChangeNotify = 3284; + public static final int MarkEntityInMinMapNotify = 230; + public static final int MarkMapReq = 3087; + public static final int MarkMapRsp = 3193; + public static final int MarkNewNotify = 1207; + public static final int MarkTargetInvestigationMonsterNotify = 1916; + public static final int MassiveEntityElementOpBatchNotify = 304; + public static final int MassiveEntityStateChangedNotify = 360; + public static final int MaterialDeleteReturnNotify = 653; + public static final int MaterialDeleteUpdateNotify = 620; + public static final int McoinExchangeHcoinReq = 643; + public static final int McoinExchangeHcoinRsp = 636; + public static final int MechanicusCandidateTeamCreateReq = 3929; + public static final int MechanicusCandidateTeamCreateRsp = 3927; + public static final int MechanicusCloseNotify = 3934; + public static final int MechanicusCoinNotify = 3964; + public static final int MechanicusLevelupGearReq = 3965; + public static final int MechanicusLevelupGearRsp = 3950; + public static final int MechanicusOpenNotify = 3914; + public static final int MechanicusSequenceOpenNotify = 3954; + public static final int MechanicusUnlockGearReq = 3972; + public static final int MechanicusUnlockGearRsp = 3982; + public static final int MeetNpcReq = 572; + public static final int MeetNpcRsp = 582; + public static final int MetNpcIdListNotify = 534; + public static final int MiracleRingDataNotify = 5209; + public static final int MiracleRingDeliverItemReq = 5244; + public static final int MiracleRingDeliverItemRsp = 5232; + public static final int MiracleRingDestroyNotify = 5239; + public static final int MiracleRingDropResultNotify = 5215; + public static final int MiracleRingTakeRewardReq = 5246; + public static final int MiracleRingTakeRewardRsp = 5236; + public static final int MistTrialDunegonFailNotify = 8765; + public static final int MistTrialGetChallengeMissionReq = 8002; + public static final int MistTrialGetChallengeMissionRsp = 8558; + public static final int MistTrialSelectAvatarAndEnterDungeonReq = 8641; + public static final int MistTrialSelectAvatarAndEnterDungeonRsp = 8060; + public static final int MonsterAIConfigHashNotify = 3379; + public static final int MonsterAlertChangeNotify = 313; + public static final int MonsterForceAlertNotify = 357; + public static final int MonsterPointArrayRouteUpdateNotify = 3498; + public static final int MonsterSummonTagNotify = 1367; + public static final int MpBlockNotify = 1837; + public static final int MpPlayGuestReplyInviteReq = 1840; + public static final int MpPlayGuestReplyInviteRsp = 1822; + public static final int MpPlayGuestReplyNotify = 1810; + public static final int MpPlayInviteResultNotify = 1828; + public static final int MpPlayOwnerCheckReq = 1817; + public static final int MpPlayOwnerCheckRsp = 1826; + public static final int MpPlayOwnerInviteNotify = 1838; + public static final int MpPlayOwnerStartInviteReq = 1812; + public static final int MpPlayOwnerStartInviteRsp = 1825; + public static final int MpPlayPrepareInterruptNotify = 1818; + public static final int MpPlayPrepareNotify = 1807; + public static final int MultistagePlayEndNotify = 5312; + public static final int MultistagePlayFinishStageReq = 5375; + public static final int MultistagePlayFinishStageRsp = 5329; + public static final int MultistagePlayInfoNotify = 5367; + public static final int MultistagePlaySettleNotify = 5348; + public static final int MultistagePlayStageEndNotify = 5322; + public static final int GetUgcRsp = 6343; + public static final int MusicGameGetBeatmapRsp = 6309; + public static final int MusicGameSettleReq = 8278; + public static final int MusicGameSettleRsp = 8542; + public static final int MusicGameStartReq = 8103; + public static final int MusicGameStartRsp = 8334; + public static final int MusicGameCreateBeatmapRsp = 6347; + public static final int GetUgcReq = 6348; + public static final int MusicGameSearchBeatmapRsp = 6304; + public static final int MusicGameSearchBeatmapReq = 6343; + public static final int MusicGameStartToPlayOthersBeatmapReq = 6302; + public static final int MusicGameStartToPlayOthersBeatmapRsp = 6313; + public static final int NavMeshStatsNotify = 2343; + public static final int NormalUidOpNotify = 5748; + public static final int NpcTalkReq = 567; + public static final int NpcTalkRsp = 575; + public static final int ObstacleModifyNotify = 2354; + public static final int OfferingInteractReq = 2901; + public static final int OfferingInteractRsp = 2913; + public static final int OneofGatherPointDetectorDataNotify = 4297; + public static final int OpActivityDataNotify = 5154; + public static final int OpActivityStateNotify = 2567; + public static final int OpActivityUpdateNotify = 5164; + public static final int OpenBlossomCircleCampGuideNotify = 2772; + public static final int OpenStateChangeNotify = 146; + public static final int OpenStateUpdateNotify = 174; + public static final int OrderDisplayNotify = 4115; + public static final int OrderFinishNotify = 4109; + public static final int OtherPlayerEnterHomeNotify = 4771; + public static final int PSNBlackListNotify = 4008; + public static final int PSNFriendListNotify = 4036; + public static final int PSPlayerApplyEnterMpReq = 1801; + public static final int PSPlayerApplyEnterMpRsp = 1802; + public static final int PathfindingEnterSceneReq = 2314; + public static final int PathfindingEnterSceneRsp = 2334; + public static final int PathfindingPingNotify = 2364; + public static final int PersonalLineAllDataReq = 437; + public static final int PersonalLineAllDataRsp = 425; + public static final int PersonalLineNewUnlockNotify = 449; + public static final int PersonalSceneJumpReq = 298; + public static final int PersonalSceneJumpRsp = 203; + public static final int PingReq = 14; + public static final int PingRsp = 34; + public static final int PlantFlowerAcceptAllGiveFlowerReq = 8807; + public static final int PlantFlowerAcceptAllGiveFlowerRsp = 8040; + public static final int PlantFlowerAcceptGiveFlowerReq = 8989; + public static final int PlantFlowerAcceptGiveFlowerRsp = 8343; + public static final int PlantFlowerEditFlowerCombinationReq = 8301; + public static final int PlantFlowerEditFlowerCombinationRsp = 8975; + public static final int PlantFlowerGetCanGiveFriendFlowerReq = 8510; + public static final int PlantFlowerGetCanGiveFriendFlowerRsp = 8692; + public static final int PlantFlowerGetFriendFlowerWishListReq = 8828; + public static final int PlantFlowerGetFriendFlowerWishListRsp = 8375; + public static final int PlantFlowerGetRecvFlowerListReq = 8123; + public static final int PlantFlowerGetRecvFlowerListRsp = 8779; + public static final int PlantFlowerGetSeedInfoReq = 8055; + public static final int PlantFlowerGetSeedInfoRsp = 8797; + public static final int PlantFlowerGiveFriendFlowerReq = 8593; + public static final int PlantFlowerGiveFriendFlowerRsp = 8688; + public static final int PlantFlowerHaveRecvFlowerNotify = 8729; + public static final int PlantFlowerSetFlowerWishReq = 8997; + public static final int PlantFlowerSetFlowerWishRsp = 8034; + public static final int PlantFlowerTakeSeedRewardReq = 8851; + public static final int PlantFlowerTakeSeedRewardRsp = 8340; + public static final int PlatformChangeRouteNotify = 221; + public static final int PlatformStartRouteNotify = 279; + public static final int PlatformStopRouteNotify = 245; + public static final int PlayerAllowEnterMpAfterAgreeMatchNotify = 4181; + public static final int PlayerApplyEnterHomeNotify = 4757; + public static final int PlayerApplyEnterHomeResultNotify = 4568; + public static final int PlayerApplyEnterHomeResultReq = 4668; + public static final int PlayerApplyEnterHomeResultRsp = 4714; + public static final int PlayerApplyEnterMpAfterMatchAgreedNotify = 4171; + public static final int PlayerApplyEnterMpNotify = 1848; + public static final int PlayerApplyEnterMpReq = 1843; + public static final int PlayerApplyEnterMpResultNotify = 1846; + public static final int PlayerApplyEnterMpResultReq = 1836; + public static final int PlayerApplyEnterMpResultRsp = 1815; + public static final int PlayerApplyEnterMpRsp = 1809; + public static final int PlayerCancelMatchReq = 4196; + public static final int PlayerCancelMatchRsp = 4186; + public static final int PlayerChatCDNotify = 3354; + public static final int PlayerChatNotify = 3236; + public static final int PlayerChatReq = 3125; + public static final int PlayerChatRsp = 3070; + public static final int PlayerCompoundMaterialReq = 133; + public static final int PlayerCompoundMaterialRsp = 116; + public static final int PlayerConfirmMatchReq = 4182; + public static final int PlayerConfirmMatchRsp = 4189; + public static final int PlayerCookArgsReq = 145; + public static final int PlayerCookArgsRsp = 121; + public static final int PlayerCookReq = 184; + public static final int PlayerCookRsp = 141; + public static final int PlayerDataNotify = 182; + public static final int PlayerEnterDungeonReq = 954; + public static final int PlayerEnterDungeonRsp = 964; + public static final int PlayerEnterSceneInfoNotify = 289; + public static final int PlayerEnterSceneNotify = 267; + public static final int PlayerEyePointStateNotify = 3065; + public static final int PlayerFishingDataNotify = 5838; + public static final int PlayerForceExitReq = 106; + public static final int PlayerForceExitRsp = 190; + public static final int PlayerGameTimeNotify = 159; + public static final int PlayerGeneralMatchConfirmNotify = 4152; + public static final int PlayerGeneralMatchDismissNotify = 4151; + public static final int PlayerGetForceQuitBanInfoReq = 4167; + public static final int PlayerGetForceQuitBanInfoRsp = 4176; + public static final int PlayerHomeCompInfoNotify = 4886; + public static final int PlayerInjectFixNotify = 192; + public static final int PlayerInvestigationAllInfoNotify = 1911; + public static final int PlayerInvestigationNotify = 1901; + public static final int PlayerInvestigationTargetNotify = 1930; + public static final int PlayerLevelRewardUpdateNotify = 120; + public static final int PlayerLoginReq = 154; + public static final int PlayerLoginRsp = 164; + public static final int PlayerLogoutNotify = 172; + public static final int PlayerLogoutReq = 114; + public static final int PlayerLogoutRsp = 134; + public static final int PlayerLuaShellNotify = 101; + public static final int PlayerMatchAgreedResultNotify = 4185; + public static final int PlayerMatchInfoNotify = 4159; + public static final int PlayerMatchStopNotify = 4165; + public static final int PlayerMatchSuccNotify = 4194; + public static final int PlayerOfferingDataNotify = 2925; + public static final int PlayerOfferingReq = 2916; + public static final int PlayerOfferingRsp = 2924; + public static final int PlayerPreEnterMpNotify = 1832; + public static final int PlayerPropChangeNotify = 156; + public static final int PlayerPropChangeReasonNotify = 1250; + public static final int PlayerPropNotify = 107; + public static final int PlayerQuitDungeonReq = 914; + public static final int PlayerQuitDungeonRsp = 934; + public static final int PlayerQuitFromHomeNotify = 4837; + public static final int PlayerQuitFromMpNotify = 1844; + public static final int PlayerRandomCookReq = 170; + public static final int PlayerRandomCookRsp = 113; + public static final int PlayerRechargeDataNotify = 4136; + public static final int PlayerReportReq = 4002; + public static final int PlayerReportRsp = 4088; + public static final int PlayerRoutineDataNotify = 3548; + public static final int PlayerSetLanguageReq = 149; + public static final int PlayerSetLanguageRsp = 197; + public static final int PlayerSetOnlyMPWithPSPlayerReq = 1835; + public static final int PlayerSetOnlyMPWithPSPlayerRsp = 1821; + public static final int PlayerSetPauseReq = 102; + public static final int PlayerSetPauseRsp = 188; + public static final int PlayerStartMatchReq = 4198; + public static final int PlayerStartMatchRsp = 4193; + public static final int PlayerStoreNotify = 667; + public static final int PlayerTimeNotify = 171; + public static final int PlayerWorldSceneInfoListNotify = 3152; + public static final int PostEnterSceneReq = 3446; + public static final int PostEnterSceneRsp = 3030; + public static final int PrivateChatNotify = 5004; + public static final int PrivateChatReq = 5017; + public static final int PrivateChatRsp = 5025; + public static final int PrivateChatSetSequenceReq = 4985; + public static final int PrivateChatSetSequenceRsp = 4957; + public static final int ProfilePictureChangeNotify = 4043; + public static final int ProjectorOptionReq = 813; + public static final int ProjectorOptionRsp = 857; + public static final int ProudSkillChangeNotify = 1059; + public static final int ProudSkillExtraLevelNotify = 1029; + public static final int ProudSkillUpgradeReq = 1065; + public static final int ProudSkillUpgradeRsp = 1050; + public static final int PullPrivateChatReq = 4984; + public static final int PullPrivateChatRsp = 5022; + public static final int PullRecentChatReq = 5032; + public static final int PullRecentChatRsp = 5015; + public static final int PushTipsAllDataNotify = 2219; + public static final int PushTipsChangeNotify = 2244; + public static final int PushTipsReadFinishReq = 2294; + public static final int PushTipsReadFinishRsp = 2274; + public static final int QueryCodexMonsterBeKilledNumReq = 4208; + public static final int QueryCodexMonsterBeKilledNumRsp = 4201; + public static final int QueryPathReq = 2367; + public static final int QueryPathRsp = 2375; + public static final int QuestCreateEntityReq = 450; + public static final int QuestCreateEntityRsp = 459; + public static final int QuestDelNotify = 454; + public static final int QuestDestroyEntityReq = 407; + public static final int QuestDestroyEntityRsp = 491; + public static final int QuestDestroyNpcReq = 419; + public static final int QuestDestroyNpcRsp = 444; + public static final int QuestGlobalVarNotify = 426; + public static final int QuestListNotify = 467; + public static final int QuestListUpdateNotify = 475; + public static final int QuestProgressUpdateNotify = 466; + public static final int QuestTransmitReq = 433; + public static final int QuestTransmitRsp = 416; + public static final int QuestUpdateQuestTimeVarNotify = 488; + public static final int QuestUpdateQuestVarNotify = 423; + public static final int QuestUpdateQuestVarReq = 461; + public static final int QuestUpdateQuestVarRsp = 456; + public static final int QuickUseWidgetReq = 4281; + public static final int QuickUseWidgetRsp = 4285; + public static final int ReadMailNotify = 1454; + public static final int ReadPrivateChatReq = 5000; + public static final int ReadPrivateChatRsp = 5009; + public static final int ReceivedTrialAvatarActivityRewardReq = 2005; + public static final int ReceivedTrialAvatarActivityRewardRsp = 2009; + public static final int RechargeReq = 4148; + public static final int RechargeRsp = 4143; + public static final int RedeemLegendaryKeyReq = 418; + public static final int RedeemLegendaryKeyRsp = 458; + public static final int RefreshBackgroundAvatarReq = 1636; + public static final int RefreshBackgroundAvatarRsp = 1786; + public static final int RefreshRoguelikeDungeonCardReq = 8092; + public static final int RefreshRoguelikeDungeonCardRsp = 8721; + public static final int RegionSearchChangeRegionNotify = 5643; + public static final int RegionSearchNotify = 5648; + public static final int ReliquaryDecomposeReq = 631; + public static final int ReliquaryDecomposeRsp = 699; + public static final int ReliquaryPromoteReq = 646; + public static final int ReliquaryPromoteRsp = 684; + public static final int ReliquaryUpgradeReq = 694; + public static final int ReliquaryUpgradeRsp = 674; + public static final int RemoveBlacklistReq = 4013; + public static final int RemoveBlacklistRsp = 4057; + public static final int RemoveRandTaskInfoNotify = 153; + public static final int ReportFightAntiCheatNotify = 321; + public static final int ReportTrackingIOInfoNotify = 4144; + public static final int RequestLiveInfoReq = 884; + public static final int RequestLiveInfoRsp = 841; + public static final int ResinCardDataUpdateNotify = 4131; + public static final int ResinChangeNotify = 649; + public static final int RestartEffigyChallengeReq = 2188; + public static final int RestartEffigyChallengeRsp = 2137; + public static final int ReunionActivateNotify = 5088; + public static final int ReunionBriefInfoReq = 5098; + public static final int ReunionBriefInfoRsp = 5093; + public static final int ReunionDailyRefreshNotify = 5072; + public static final int ReunionPrivilegeChangeNotify = 5090; + public static final int ReunionSettleNotify = 5075; + public static final int RobotPushPlayerDataNotify = 42; + public static final int RogueCellUpdateNotify = 8624; + public static final int RogueDungeonPlayerCellChangeNotify = 8320; + public static final int RogueHealAvatarsReq = 8610; + public static final int RogueHealAvatarsRsp = 8941; + public static final int RogueResumeDungeonReq = 8029; + public static final int RogueResumeDungeonRsp = 8009; + public static final int RogueSwitchAvatarReq = 8770; + public static final int RogueSwitchAvatarRsp = 8259; + public static final int RoguelikeCardGachaNotify = 8494; + public static final int RoguelikeEffectDataNotify = 8556; + public static final int RoguelikeEffectViewReq = 8885; + public static final int RoguelikeEffectViewRsp = 8862; + public static final int RoguelikeGiveUpReq = 8061; + public static final int RoguelikeGiveUpRsp = 8868; + public static final int RoguelikeMistClearNotify = 8512; + public static final int RoguelikeRefreshCardCostUpdateNotify = 8266; + public static final int RoguelikeResourceBonusPropUpdateNotify = 8376; + public static final int RoguelikeRuneRecordUpdateNotify = 8950; + public static final int RoguelikeSelectAvatarAndEnterDungeonReq = 8863; + public static final int RoguelikeSelectAvatarAndEnterDungeonRsp = 8400; + public static final int RoguelikeTakeStageFirstPassRewardReq = 8541; + public static final int RoguelikeTakeStageFirstPassRewardRsp = 8530; + public static final int SalesmanDeliverItemReq = 2167; + public static final int SalesmanDeliverItemRsp = 2067; + public static final int SalesmanTakeRewardReq = 2062; + public static final int SalesmanTakeRewardRsp = 2070; + public static final int SalesmanTakeSpecialRewardReq = 2166; + public static final int SalesmanTakeSpecialRewardRsp = 2184; + public static final int SaveCoopDialogReq = 1972; + public static final int SaveCoopDialogRsp = 1960; + public static final int SaveMainCoopReq = 1959; + public static final int SaveMainCoopRsp = 1996; + public static final int SceneAreaUnlockNotify = 274; + public static final int SceneAreaWeatherNotify = 297; + public static final int SceneAudioNotify = 3412; + public static final int SceneAvatarStaminaStepReq = 250; + public static final int SceneAvatarStaminaStepRsp = 259; + public static final int SceneCreateEntityReq = 241; + public static final int SceneCreateEntityRsp = 270; + public static final int SceneDataNotify = 3210; + public static final int SceneDestroyEntityReq = 213; + public static final int SceneDestroyEntityRsp = 257; + public static final int SceneEntitiesMoveCombineNotify = 3188; + public static final int SceneEntitiesMovesReq = 222; + public static final int SceneEntitiesMovesRsp = 212; + public static final int SceneEntityAppearNotify = 234; + public static final int SceneEntityDisappearNotify = 272; + public static final int SceneEntityDrownReq = 246; + public static final int SceneEntityDrownRsp = 284; + public static final int SceneEntityMoveNotify = 207; + public static final int SceneEntityMoveReq = 282; + public static final int SceneEntityMoveRsp = 265; + public static final int SceneEntityUpdateNotify = 3095; + public static final int SceneForceLockNotify = 226; + public static final int SceneForceUnlockNotify = 286; + public static final int SceneGalleryInfoNotify = 5529; + public static final int SceneInitFinishReq = 264; + public static final int SceneInitFinishRsp = 214; + public static final int SceneKickPlayerNotify = 299; + public static final int SceneKickPlayerReq = 232; + public static final int SceneKickPlayerRsp = 231; + public static final int ScenePlayBattleInfoListNotify = 4379; + public static final int ScenePlayBattleInfoNotify = 4417; + public static final int ScenePlayBattleInterruptNotify = 4357; + public static final int ScenePlayBattleResultNotify = 4441; + public static final int ScenePlayBattleUidOpNotify = 4392; + public static final int ScenePlayGuestReplyInviteReq = 4422; + public static final int ScenePlayGuestReplyInviteRsp = 4432; + public static final int ScenePlayGuestReplyNotify = 4415; + public static final int ScenePlayInfoListNotify = 4409; + public static final int ScenePlayInviteResultNotify = 4400; + public static final int ScenePlayOutofRegionNotify = 4377; + public static final int ScenePlayOwnerCheckReq = 4425; + public static final int ScenePlayOwnerCheckRsp = 4404; + public static final int ScenePlayOwnerInviteNotify = 4384; + public static final int ScenePlayOwnerStartInviteReq = 4414; + public static final int ScenePlayOwnerStartInviteRsp = 4364; + public static final int ScenePlayerInfoNotify = 240; + public static final int ScenePlayerLocationNotify = 291; + public static final int ScenePlayerSoundNotify = 201; + public static final int ScenePointUnlockNotify = 261; + public static final int SceneRouteChangeNotify = 208; + public static final int SceneTeamUpdateNotify = 1762; + public static final int SceneTimeNotify = 210; + public static final int SceneTransToPointReq = 256; + public static final int SceneTransToPointRsp = 223; + public static final int SceneWeatherForcastReq = 3037; + public static final int SceneWeatherForcastRsp = 3257; + public static final int SeaLampCoinNotify = 2127; + public static final int SeaLampContributeItemReq = 2119; + public static final int SeaLampContributeItemRsp = 2138; + public static final int SeaLampFlyLampNotify = 2161; + public static final int SeaLampFlyLampReq = 2175; + public static final int SeaLampFlyLampRsp = 2152; + public static final int SeaLampPopularityNotify = 2087; + public static final int SeaLampTakeContributionRewardReq = 2149; + public static final int SeaLampTakeContributionRewardRsp = 2170; + public static final int SeaLampTakePhaseRewardReq = 2135; + public static final int SeaLampTakePhaseRewardRsp = 2085; + public static final int SealBattleBeginNotify = 206; + public static final int SealBattleEndNotify = 290; + public static final int SealBattleProgressNotify = 292; + public static final int SeeMonsterReq = 255; + public static final int SeeMonsterRsp = 209; + public static final int SelectAsterMidDifficultyReq = 2003; + public static final int SelectAsterMidDifficultyRsp = 2001; + public static final int SelectEffigyChallengeConditionReq = 2199; + public static final int SelectEffigyChallengeConditionRsp = 2081; + public static final int SelectRoguelikeDungeonCardReq = 8229; + public static final int SelectRoguelikeDungeonCardRsp = 8037; + public static final int SelectWorktopOptionReq = 814; + public static final int SelectWorktopOptionRsp = 834; + public static final int ServerAnnounceNotify = 2073; + public static final int ServerAnnounceRevokeNotify = 2103; + public static final int ServerBuffChangeNotify = 353; + public static final int ServerCondMeetQuestListUpdateNotify = 486; + public static final int ServerDisconnectClientNotify = 198; + public static final int ServerGlobalValueChangeNotify = 1142; + public static final int ServerLogNotify = 59; + public static final int ServerMessageNotify = 5743; + public static final int ServerTimeNotify = 50; + public static final int ServerUpdateGlobalValueNotify = 1191; + public static final int SetBattlePassViewedReq = 2601; + public static final int SetBattlePassViewedRsp = 2602; + public static final int SetChatEmojiCollectionReq = 4098; + public static final int SetChatEmojiCollectionRsp = 4003; + public static final int SetCoopChapterViewedReq = 1978; + public static final int SetCoopChapterViewedRsp = 1968; + public static final int SetCurExpeditionChallengeIdReq = 2168; + public static final int SetCurExpeditionChallengeIdRsp = 2052; + public static final int SetEntityClientDataNotify = 3457; + public static final int SetEquipLockStateReq = 645; + public static final int SetEquipLockStateRsp = 621; + public static final int SetFriendEnterHomeOptionReq = 4732; + public static final int SetFriendEnterHomeOptionRsp = 4835; + public static final int SetFriendRemarkNameReq = 4049; + public static final int SetFriendRemarkNameRsp = 4097; + public static final int SetH5ActivityRedDotTimestampReq = 5696; + public static final int SetH5ActivityRedDotTimestampRsp = 5686; + public static final int SetIsAutoUnlockSpecificEquipReq = 673; + public static final int SetIsAutoUnlockSpecificEquipRsp = 632; + public static final int SetLimitOptimizationNotify = 8431; + public static final int SetNameCardReq = 4094; + public static final int SetNameCardRsp = 4074; + public static final int SetOpenStateReq = 144; + public static final int SetOpenStateRsp = 194; + public static final int SetPlayerBirthdayReq = 4091; + public static final int SetPlayerBirthdayRsp = 4042; + public static final int SetPlayerBornDataReq = 127; + public static final int SetPlayerBornDataRsp = 166; + public static final int SetPlayerHeadImageReq = 4066; + public static final int SetPlayerHeadImageRsp = 4061; + public static final int SetPlayerNameReq = 123; + public static final int SetPlayerNameRsp = 119; + public static final int SetPlayerPropReq = 142; + public static final int SetPlayerPropRsp = 129; + public static final int SetPlayerSignatureReq = 4029; + public static final int SetPlayerSignatureRsp = 4027; + public static final int SetSceneWeatherAreaReq = 296; + public static final int SetSceneWeatherAreaRsp = 263; + public static final int SetUpAvatarTeamReq = 1638; + public static final int SetUpAvatarTeamRsp = 1628; + public static final int SetUpLunchBoxWidgetReq = 4282; + public static final int SetUpLunchBoxWidgetRsp = 4289; + public static final int SetWidgetSlotReq = 4297; + public static final int SetWidgetSlotRsp = 4270; + public static final int ShowClientGuideNotify = 3384; + public static final int ShowClientTutorialNotify = 3120; + public static final int ShowCommonTipsNotify = 3469; + public static final int ShowMessageNotify = 64; + public static final int ShowTemplateReminderNotify = 3186; + public static final int SignInInfoReq = 2554; + public static final int SignInInfoRsp = 2564; + public static final int SocialDataNotify = 4016; + public static final int SpringUseReq = 1788; + public static final int SpringUseRsp = 1737; + public static final int StartArenaChallengeLevelReq = 2194; + public static final int StartArenaChallengeLevelRsp = 2057; + public static final int StartBuoyantCombatGalleryReq = 8282; + public static final int StartBuoyantCombatGalleryRsp = 8916; + public static final int StartCoopPointReq = 1952; + public static final int StartCoopPointRsp = 1967; + public static final int StartEffigyChallengeReq = 2156; + public static final int StartEffigyChallengeRsp = 2021; + public static final int StartFishingReq = 5809; + public static final int StartFishingRsp = 5846; + public static final int StartRogueEliteCellChallengeReq = 8874; + public static final int StartRogueEliteCellChallengeRsp = 8759; + public static final int StartRogueNormalCellChallengeReq = 8809; + public static final int StartRogueNormalCellChallengeRsp = 8834; + public static final int StoreItemChangeNotify = 654; + public static final int StoreItemDelNotify = 664; + public static final int StoreWeightLimitNotify = 675; + public static final int SummerTimeFloatSignalPositionNotify = 8639; + public static final int SummerTimeFloatSignalUpdateNotify = 8576; + public static final int SummerTimeSprintBoatRestartReq = 8178; + public static final int SummerTimeSprintBoatRestartRsp = 8987; + public static final int SummerTimeSprintBoatSettleNotify = 8256; + public static final int SumoDungeonSettleNotify = 8665; + public static final int SumoEnterDungeonNotify = 8823; + public static final int SumoLeaveDungeonNotify = 8778; + public static final int SumoRestartDungeonReq = 8246; + public static final int SumoRestartDungeonRsp = 8249; + public static final int SumoSaveTeamReq = 8607; + public static final int SumoSaveTeamRsp = 8005; + public static final int SumoSelectTeamAndEnterDungeonReq = 8930; + public static final int SumoSelectTeamAndEnterDungeonRsp = 8131; + public static final int SumoSetNoSwitchPunishTimeNotify = 8536; + public static final int SumoSwitchTeamReq = 8384; + public static final int SumoSwitchTeamRsp = 8065; + public static final int SyncScenePlayTeamEntityNotify = 3362; + public static final int SyncTeamEntityNotify = 393; + public static final int TakeAchievementGoalRewardReq = 2686; + public static final int TakeAchievementGoalRewardRsp = 2665; + public static final int TakeAchievementRewardReq = 2659; + public static final int TakeAchievementRewardRsp = 2696; + public static final int TakeAsterSpecialRewardReq = 2061; + public static final int TakeAsterSpecialRewardRsp = 2026; + public static final int TakeBattlePassMissionPointReq = 2644; + public static final int TakeBattlePassMissionPointRsp = 2632; + public static final int TakeBattlePassRewardReq = 2636; + public static final int TakeBattlePassRewardRsp = 2615; + public static final int TakeCityReputationExploreRewardReq = 2842; + public static final int TakeCityReputationExploreRewardRsp = 2829; + public static final int TakeCityReputationLevelRewardReq = 2854; + public static final int TakeCityReputationLevelRewardRsp = 2864; + public static final int TakeCityReputationParentQuestReq = 2834; + public static final int TakeCityReputationParentQuestRsp = 2872; + public static final int TakeCompoundOutputReq = 137; + public static final int TakeCompoundOutputRsp = 125; + public static final int TakeCoopRewardReq = 1975; + public static final int TakeCoopRewardRsp = 1988; + public static final int TakeDeliveryDailyRewardReq = 2054; + public static final int TakeDeliveryDailyRewardRsp = 2029; + public static final int TakeEffigyFirstPassRewardReq = 2050; + public static final int TakeEffigyFirstPassRewardRsp = 2025; + public static final int TakeEffigyRewardReq = 2104; + public static final int TakeEffigyRewardRsp = 2089; + public static final int TakeFirstShareRewardReq = 4037; + public static final int TakeFirstShareRewardRsp = 4025; + public static final int TakeFurnitureMakeReq = 4713; + public static final int TakeFurnitureMakeRsp = 4630; + public static final int TakeHuntingOfferReq = 4348; + public static final int TakeHuntingOfferRsp = 4343; + public static final int TakeInvestigationRewardReq = 1928; + public static final int TakeInvestigationRewardRsp = 1910; + public static final int TakeInvestigationTargetRewardReq = 1926; + public static final int TakeInvestigationTargetRewardRsp = 1927; + public static final int TakeMaterialDeleteReturnReq = 638; + public static final int TakeMaterialDeleteReturnRsp = 604; + public static final int TakeOfferingLevelRewardReq = 2921; + public static final int TakeOfferingLevelRewardRsp = 2908; + public static final int TakePlayerLevelRewardReq = 138; + public static final int TakePlayerLevelRewardRsp = 104; + public static final int TakeRegionSearchRewardReq = 5609; + public static final int TakeRegionSearchRewardRsp = 5646; + public static final int TakeResinCardDailyRewardReq = 4132; + public static final int TakeResinCardDailyRewardRsp = 4139; + public static final int TakeReunionFirstGiftRewardReq = 5059; + public static final int TakeReunionFirstGiftRewardRsp = 5096; + public static final int TakeReunionMissionRewardReq = 5052; + public static final int TakeReunionMissionRewardRsp = 5067; + public static final int TakeReunionSignInRewardReq = 5094; + public static final int TakeReunionSignInRewardRsp = 5082; + public static final int TakeReunionWatcherRewardReq = 5085; + public static final int TakeReunionWatcherRewardRsp = 5071; + public static final int TakeoffEquipReq = 627; + public static final int TakeoffEquipRsp = 666; + public static final int TaskVarNotify = 176; + public static final int TeamResonanceChangeNotify = 1066; + public static final int TowerAllDataReq = 2482; + public static final int TowerAllDataRsp = 2465; + public static final int TowerBriefDataNotify = 2467; + public static final int TowerBuffSelectReq = 2491; + public static final int TowerBuffSelectRsp = 2442; + public static final int TowerCurLevelRecordChangeNotify = 2454; + public static final int TowerDailyRewardProgressChangeNotify = 2464; + public static final int TowerEnterLevelReq = 2459; + public static final int TowerEnterLevelRsp = 2407; + public static final int TowerFloorRecordChangeNotify = 2475; + public static final int TowerGetFloorStarRewardReq = 2494; + public static final int TowerGetFloorStarRewardRsp = 2474; + public static final int TowerLevelEndNotify = 2457; + public static final int TowerLevelStarCondNotify = 2486; + public static final int TowerMiddleLevelChangeTeamNotify = 2426; + public static final int TowerRecordHandbookReq = 2433; + public static final int TowerRecordHandbookRsp = 2416; + public static final int TowerSurrenderReq = 2419; + public static final int TowerSurrenderRsp = 2444; + public static final int TowerTeamSelectReq = 2434; + public static final int TowerTeamSelectRsp = 2472; + public static final int TreasureMapBonusChallengeNotify = 2163; + public static final int TreasureMapCurrencyNotify = 2046; + public static final int TreasureMapDetectorDataNotify = 4272; + public static final int TreasureMapGuideTaskDoneNotify = 2099; + public static final int TreasureMapHostInfoNotify = 8260; + public static final int TreasureMapMpChallengeNotify = 2071; + public static final int TreasureMapPreTaskDoneNotify = 2191; + public static final int TreasureMapRegionActiveNotify = 2148; + public static final int TreasureMapRegionInfoNotify = 2190; + public static final int TrialAvatarFirstPassDungeonNotify = 2105; + public static final int TrialAvatarInDungeonIndexNotify = 2109; + public static final int TriggerCreateGadgetToEquipPartNotify = 333; + public static final int TriggerRoguelikeCurseNotify = 8901; + public static final int TriggerRoguelikeRuneReq = 8053; + public static final int TriggerRoguelikeRuneRsp = 8631; + public static final int TryEnterHomeReq = 4729; + public static final int TryEnterHomeRsp = 4597; + public static final int UnfreezeGroupLimitNotify = 3464; + public static final int UnionCmdNotify = 27; + public static final int LastPacketPrintNotify = 41; + public static final int SalvagePreventSettleNotify = 8967; + public static final int HomeEnterEditModeFinishReq = 4676; + public static final int ReplayCustomDungeonRsp = 6234; + public static final int SpiceActivityFinishMakeSpiceRsp = 8004; + public static final int GachaActivityTakeRewardRsp = 8272; + public static final int MistTrialGetDungeonExhibitionDataRsp = 8058; + public static final int CrystalLinkEnterDungeonRsp = 8067; + public static final int ChangeCustomDungeonRoomRsp = 6239; + public static final int MistTrialGetDungeonExhibitionDataReq = 8931; + public static final int ActivityGetRecvGiftListRsp = 8791; + public static final int ReformFireworksReq = 6040; + public static final int CrystalLinkRestartDungeonReq = 8317; + public static final int LaunchFireworksReq = 6053; + public static final int WinterCampGetCanGiveFriendItemRsp = 8147; + public static final int PublishUgcReq = 6339; + public static final int GachaActivityCreateRobotReq = 8654; + public static final int GachaActivityCreateRobotRsp = 8808; + public static final int SpiceActivityProcessFoodReq = 8697; + public static final int PotionSaveDungeonResultReq = 8306; + public static final int WinterCampRecvItemNotify = 8740; + public static final int StartRogueDiaryPlayReq = 8804; + public static final int BartenderFinishLevelReq = 9000; + public static final int SalvageEscortSettleNotify = 8353; + public static final int HomeChangeBgmReq = 4806; + public static final int EvtBeingHealedNotify = 301; + public static final int GetCustomDungeonReq = 6247; + public static final int IrodoriChessEquipCardReq = 8511; + public static final int ResetRogueDiaryPlayRsp = 8336; + public static final int SpiceActivityProcessFoodRsp = 8075; + public static final int HomeBalloonGalleryScoreNotify = 4532; + public static final int PhotoActivityFinishRsp = 8713; + public static final int QuickOpenActivityReq = 8171; + public static final int LanternRiteDoFireworksReformReq = 8261; + public static final int RogueDiaryCoinAddNotify = 8059; + public static final int RogueDiaryRepairInfoNotify = 8835; + public static final int PhotoActivityFinishReq = 8473; + public static final int ViewLanternProjectionTipsRsp = 8108; + public static final int MichiaeMatsuriInteractStatueRsp = 8216; + public static final int TryEnterNextRogueDiaryDungeonReq = 8832; + public static final int ActivityAcceptGiveGiftRsp = 8915; + public static final int RogueDiaryDungeonInfoNotify = 8415; + public static final int StartRogueDiaryRoomReq = 8291; + public static final int LevelTagDataNotify = 3072; + public static final int StoreCustomDungeonReq = 6218; + public static final int WinterCampGetRecvItemListReq = 8547; + public static final int GachaActivityResetRsp = 8296; + public static final int WinterCampRaceScoreNotify = 8664; + public static final int MainCoopFailNotify = 1987; + public static final int CheckUgcStateReq = 6302; + public static final int WinterCampTakeBattleRewardRsp = 8573; + public static final int ActivityGetRecvGiftListReq = 8973; + public static final int SalvagePreventRestartRsp = 8030; + public static final int TryInterruptRogueDiaryDungeonRsp = 8655; + public static final int WinterCampGiveFriendItemRsp = 8781; + public static final int RogueFinishRepairRsp = 8024; + public static final int IrodoriChessUnequipCardRsp = 8825; + public static final int MichiaeMatsuriUnlockCrystalSkillRsp = 8845; + public static final int SaveUgcReq = 6344; + public static final int ResetRogueDiaryPlayReq = 8360; + public static final int CrystalLinkDungeonInfoNotify = 8925; + public static final int SaveCustomDungeonRoomRsp = 6246; + public static final int WinterCampEditSnowmanCombinationReq = 8743; + public static final int SearchCustomDungeonRsp = 6228; + public static final int BartenderCancelOrderReq = 8717; + public static final int WinterCampTriathlonSettleNotify = 8920; + public static final int ViewLanternProjectionLevelTipsRsp = 8134; + public static final int WinterCampTriathlonRestartReq = 8117; + public static final int ServerCombatEndNotify = 1127; + public static final int ReadSignatureAuditRsp = 4032; + public static final int GetGameplayRecommendationReq = 109; + public static final int TryInterruptRogueDiaryDungeonReq = 8362; + public static final int ResumeRogueDiaryDungeonReq = 8056; + public static final int EnterIrodoriChessDungeonReq = 8933; + public static final int GetRecommendCustomDungeonReq = 6238; + public static final int GachaActivityUpdateElemNotify = 8338; + public static final int ActivityHaveRecvGiftNotify = 8350; + public static final int WinterCampAcceptGiveItemReq = 8014; + public static final int MistTrialSettleNotify = 8559; + public static final int HomeRacingGallerySettleNotify = 4764; + public static final int QuickOpenActivityRsp = 8670; + public static final int SaveUgcRsp = 6332; + public static final int BartenderCancelOrderRsp = 8850; + public static final int MichiaeMatsuriRemoveChestMarkNotify = 8082; + public static final int GachaActivityResetReq = 8231; + public static final int GachaActivityNextStageRsp = 8304; + public static final int WinterCampSetWishListReq = 8405; + public static final int RetryCurRogueDiaryDungeonRsp = 8960; + public static final int BartenderStartLevelReq = 8460; + public static final int ResumeRogueDiaryDungeonRsp = 8712; + public static final int OutStuckCustomDungeonReq = 6227; + public static final int EnterIrodoriChessDungeonRsp = 8211; + public static final int RetryCurRogueDiaryDungeonReq = 8423; + public static final int WinterCampGetFriendWishListRsp = 8224; + public static final int HomeChangeBgmNotify = 4653; + public static final int GachaActivityPercentNotify = 8469; + public static final int RegionalPlayInfoNotify = 6298; + public static final int PotionEnterDungeonRsp = 8889; + public static final int LikeCustomDungeonReq = 6219; + public static final int ChangeCustomDungeonRoomReq = 6232; + public static final int GetRecommendCustomDungeonRsp = 6240; + public static final int CrystalLinkRestartDungeonRsp = 8748; + public static final int RemoveCustomDungeonReq = 6231; + public static final int BackPlayCustomDungeonOfficialRsp = 6216; + public static final int PlayerSignatureAuditDataNotify = 4076; + public static final int GalleryCrystalLinkKillMonsterNotify = 5561; + public static final int GetRogueDairyRepairInfoReq = 8633; + public static final int HomeClearGroupRecordRsp = 4846; + public static final int IrodoriChessPlayerInfoNotify = 5332; + public static final int LanternRiteDoFireworksReformRsp = 8564; + public static final int GetStoreCustomDungeonReq = 6222; + public static final int TryCustomDungeonRsp = 6201; + public static final int GetParentQuestVideoKeyRsp = 493; + public static final int IrodoriEditFlowerCombinationReq = 8746; + public static final int PotionSaveDungeonResultRsp = 8911; + public static final int PotionEnterDungeonReq = 8630; + public static final int WidgetUpdateExtraCDReq = 6005; + public static final int UgcNotify = 6301; + public static final int IrodoriChessUnequipCardReq = 8783; + public static final int EnterRogueDiaryDungeonRsp = 8515; + public static final int TryCustomDungeonReq = 6221; + public static final int RefreshRogueDiaryCardReq = 8849; + public static final int PhotoActivityClientViewReq = 8167; + public static final int ActivityAcceptGiveGiftReq = 8303; + public static final int SearchCustomDungeonReq = 6207; + public static final int UpdateSalvageBundleMarkReq = 8157; + public static final int ReadNicknameAuditRsp = 181; + public static final int AllShareCDDataNotify = 9067; + public static final int GetUgcBriefInfoReq = 6309; + public static final int IrodoriFillPoetryReq = 8228; + public static final int LanternRiteTakeSkinRewardReq = 8502; + public static final int RemoveCustomDungeonRsp = 6235; + public static final int CustomDungeonRecoverNotify = 6204; + public static final int SetCodexPushtipsReadRsp = 4202; + public static final int LanternRiteEndFireworksReformRsp = 8142; + public static final int ActivitySetGiftWishReq = 8848; + public static final int WinterCampGetFriendWishListReq = 8440; + public static final int FinishLanternProjectionRsp = 8016; + public static final int ActivitySetGiftWishRsp = 8764; + public static final int WinterCampTakeExploreRewardReq = 8750; + public static final int WidgetUpdateExtraCDRsp = 5925; + public static final int SignatureAuditConfigNotify = 4085; + public static final int BartenderCompleteOrderReq = 8327; + public static final int HomeGetGroupRecordReq = 4844; + public static final int MichiaeMatsuriDarkPressureLevelUpdateNotify = 8135; + public static final int RefreshRogueDiaryCardRsp = 8105; + public static final int ReplayCustomDungeonReq = 6242; + public static final int ReserveRogueDiaryAvatarRsp = 8457; + public static final int StartRogueDiaryRoomRsp = 8755; + public static final int BartenderStartLevelRsp = 8747; + public static final int IrodoriFillPoetryRsp = 8346; + public static final int EnterCustomDungeonRsp = 6243; + public static final int CheckUgcUpdateReq = 6335; + public static final int CrystalLinkEnterDungeonReq = 8861; + public static final int BartenderCancelLevelReq = 8161; + public static final int BartenderLevelProgressNotify = 8518; + public static final int LanternRiteEndFireworksReformReq = 8322; + public static final int GetParentQuestVideoKeyReq = 460; + public static final int SalvageEscortRestartRsp = 8118; + public static final int LuminanceStoneChallengeSettleNotify = 8895; + public static final int PublishCustomDungeonReq = 6202; + public static final int ActivityAcceptAllGiveGiftRsp = 8241; + public static final int FinishLanternProjectionReq = 8720; + public static final int ReformFireworksRsp = 5982; + public static final int HomePreChangeEditModeNotify = 4670; + public static final int SpiceActivityFinishMakeSpiceReq = 8032; + public static final int PlayerNicknameNotify = 139; + public static final int IrodoriMasterStartGalleryRsp = 8017; + public static final int LanternRiteStartFireworksReformRsp = 8546; + public static final int GetUgcBriefInfoRsp = 6346; + public static final int EnterCustomDungeonReq = 6248; + public static final int GlobalBuildingInfoNotify = 5373; + public static final int GetQuestLackingResourceReq = 440; + public static final int ExitCustomDungeonTryReq = 6226; + public static final int ActivityGiveFriendGiftRsp = 8524; + public static final int WidgetCaptureAnimalReq = 4274; + public static final int WinterCampEditSnowmanCombinationRsp = 8128; + public static final int WidgetCaptureAnimalRsp = 4261; + public static final int GetGameplayRecommendationRsp = 135; + public static final int IrodoriChessEquipCardRsp = 8145; + public static final int LanternRiteTakeSkinRewardRsp = 8356; + public static final int ClientRemoveCombatEndModifierNotify = 1166; + public static final int WinterCampTakeExploreRewardRsp = 8707; + public static final int HomeUpdatePictureFrameInfoRsp = 4748; + public static final int BartenderGetFormulaRsp = 8608; + public static final int SaveCustomDungeonRoomReq = 6209; + public static final int PlayerNicknameAuditDataNotify = 200; + public static final int HomeEnterEditModeFinishRsp = 4562; + public static final int ViewLanternProjectionTipsReq = 8818; + public static final int ActivityGetCanGiveFriendGiftRsp = 8186; + public static final int StoreCustomDungeonRsp = 6237; + public static final int ActivityBannerClearRsp = 2037; + public static final int EvtLocalGadgetOwnerLeaveSceneNotify = 398; + public static final int SetCodexPushtipsReadReq = 4210; + public static final int WinterCampAcceptGiveItemRsp = 8374; + public static final int RogueFinishRepairReq = 8749; + public static final int HomeGalleryInPlayingNotify = 5523; + public static final int HomeClearGroupRecordReq = 4870; + public static final int PotionRestartDungeonRsp = 8275; + public static final int PlayerSignatureNotify = 4089; + public static final int ReserveRogueDiaryAvatarReq = 8416; + public static final int TryEnterNextRogueDiaryDungeonRsp = 8223; + public static final int PublishUgcRsp = 6331; + public static final int ReadNicknameAuditReq = 169; + public static final int GetCustomDungeonRsp = 6220; + public static final int WinterCampAcceptAllGiveItemReq = 8251; + public static final int WinterCampGetCanGiveFriendItemReq = 8866; + public static final int ActivityAcceptAllGiveGiftReq = 8394; + public static final int GetQuestLackingResourceRsp = 411; + public static final int WinterCampStageInfoChangeNotify = 8531; + public static final int ActivityGetFriendGiftWishListRsp = 8777; + public static final int HomeSeekFurnitureGalleryScoreNotify = 4795; + public static final int WinterCampGiveFriendItemReq = 8187; + public static final int HomeAllUnlockedBgmIdListNotify = 4544; + public static final int LanternRiteStartFireworksReformReq = 8865; + public static final int GroupLinkMarkUpdateNotify = 5796; + public static final int FireworksReformDataNotify = 6080; + public static final int CheckUgcUpdateRsp = 6321; + public static final int RogueDiaryReviveAvatarReq = 8575; + public static final int ReadSignatureAuditReq = 4073; + public static final int HomeNewUnlockedBgmIdListNotify = 4612; + public static final int IrodoriChessLeftMonsterNotify = 5331; + public static final int MichiaeMatsuriStartDarkChallengeRsp = 8160; + public static final int MichiaeMatsuriUnlockCrystalSkillReq = 8949; + public static final int NicknameAuditConfigNotify = 115; + public static final int OutStuckCustomDungeonRsp = 6230; + public static final int BartenderGetFormulaReq = 8500; + public static final int PotionResetChallengeReq = 8958; + public static final int WinterCampTriathlonRestartRsp = 8258; + public static final int GetStoreCustomDungeonRsp = 6210; + public static final int NpcTalkStateNotify = 497; + public static final int SkyCrystalDetectorDataUpdateNotify = 4262; + public static final int IrodoriScanEntityRsp = 8730; + public static final int HomePictureFrameInfoNotify = 4895; + public static final int CustomDungeonOfficialNotify = 6250; + public static final int HomeUpdatePictureFrameInfoReq = 4813; + public static final int RogueDiaryTiredAvatarNotify = 8929; + public static final int ServerTryCancelGeneralMatchNotify = 4162; + public static final int GachaActivityNextStageReq = 8212; + public static final int LaunchFireworksRsp = 6011; + public static final int FireworksLaunchDataNotify = 6038; + public static final int SpiceActivityGivingRecordNotify = 8049; + public static final int IrodoriScanEntityReq = 8281; + public static final int IrodoriMasterGallerySettleNotify = 8379; + public static final int ActivityGetFriendGiftWishListReq = 8091; + public static final int CheckUgcStateRsp = 6317; + public static final int HomeBalloonGallerySettleNotify = 4618; + public static final int MichiaeMatsuriStartBossChallengeReq = 8225; + public static final int Unk2700_NGPMINKIOPK = 8956; + public static final int CustomDungeonBattleRecordNotify = 6233; + public static final int ActivityBannerNotify = 2018; + public static final int BartenderFinishLevelRsp = 8044; + public static final int UpdateSalvageBundleMarkRsp = 8732; + public static final int WinterCampAcceptAllGiveItemRsp = 8815; + public static final int WinterCampSetWishListRsp = 8985; + public static final int GachaActivityTakeRewardReq = 8796; + public static final int IrodoriMasterGalleryCgEndNotify = 8555; + public static final int EnterRogueDiaryDungeonReq = 8388; + public static final int GalleryCrystalLinkBuffInfoNotify = 5556; + public static final int HomeGetGroupRecordRsp = 4522; + public static final int MichiaeMatsuriRemoveChallengeMarkNotify = 8578; + public static final int MichiaeMatsuriGainCrystalExpUpdateNotify = 8289; + public static final int MichiaeMatsuriInteractStatueReq = 8836; + public static final int MichiaeMatsuriStartDarkChallengeReq = 8357; + public static final int PotionResetChallengeRsp = 8262; + public static final int BartenderCancelLevelRsp = 8701; + public static final int CustomDungeonUpdateNotify = 6225; + public static final int HomeChangeBgmRsp = 4815; + public static final int BartenderCompleteOrderRsp = 8709; + public static final int ActivityGiveFriendGiftReq = 8763; + public static final int ActivityBannerClearReq = 2114; + public static final int BackPlayCustomDungeonOfficialReq = 6205; + public static final int SalvageEscortRestartReq = 8020; + public static final int MichiaeMatsuriStartBossChallengeRsp = 8826; + public static final int RogueDiaryReviveAvatarRsp = 8812; + public static final int WinterCampTakeBattleRewardReq = 8495; + public static final int TanukiTravelFinishGuideQuestNotify = 8130; + public static final int ViewLanternProjectionLevelTipsReq = 8937; + public static final int GetRogueDairyRepairInfoRsp = 8433; + public static final int PublishCustomDungeonRsp = 6217; + public static final int IrodoriEditFlowerCombinationRsp = 8800; + public static final int ActivityGetCanGiveFriendGiftReq = 8934; + public static final int IrodoriMasterStartGalleryReq = 8344; + public static final int ExitCustomDungeonTryRsp = 6212; + public static final int PotionEnterDungeonNotify = 8295; + public static final int SalvagePreventRestartReq = 8439; + public static final int RogueDiaryDungeonSettleNotify = 8220; + public static final int WinterCampGetRecvItemListRsp = 8234; + public static final int PhotoActivityClientViewRsp = 8945; + public static final int StartRogueDiaryPlayRsp = 8169; + public static final int PotionRestartDungeonReq = 8613; + public static final int LikeCustomDungeonRsp = 6203; + public static final int GearActivityFinishPlayGearRsp = 20017; + public static final int NightCrowGadgetObservationMatchRsp = 818; + public static final int GearActivityStartPlayPictureReq = 24138; + public static final int ActivityReadPushTipsRsp = 8119; + public static final int IslandPartyRaftInfoNotify = 5544; + public static final int GearActivityStartPlayGearReq = 24337; + public static final int SummerTimeV2RestartDungeonReq = 8988; + public static final int NightCrowGadgetObservationMatchReq = 825; + public static final int InvestigationReadQuestDailyNotify = 1921; + public static final int InvestigationQuestDailyNotify = 1902; + public static final int GearActivityFinishPlayPictureRsp = 23580; + public static final int GearActivityStartPlayGearRsp = 22301; + public static final int IslandPartySettleNotify = 20411; + public static final int GearActivityStartPlayPictureRsp = 23136; + public static final int TakeBackGivingItemRsp = 110; + public static final int GalleryWillStartCountdownNotify = 5584; + public static final int ActivityPushTipsInfoNotify = 8419; + public static final int PersistentDungeonSwitchAvatarReq = 1720; + public static final int SummerTimeV2RestartBoatGalleryReq = 8676; + public static final int StopReminderNotify = 3241; + public static final int IslandPartySailInfoNotify = 5594; + public static final int SummerTimeV2RestartDungeonRsp = 8101; + public static final int GearActivityFinishPlayGearReq = 24069; + public static final int BackRebornGalleryReq = 5574; + public static final int PersistentDungeonSwitchAvatarRsp = 1656; + public static final int GalleryIslandPartyDownHillInfoNotify = 5519; + public static final int GadgetChangeLevelTagRsp = 837; + public static final int ActivityReadPushTipsReq = 8285; + public static final int BackRebornGalleryRsp = 5546; + public static final int SummerTimeV2RestartBoatGalleryRsp = 8599; + public static final int SummerTimeV2BoatSettleNotify = 8436; + public static final int TakeBackGivingItemReq = 152; + public static final int GadgetChangeLevelTagReq = 816; + public static final int GearActivityFinishPlayPictureReq = 21009; + public static final int HomeExchangeWoodRsp = 4582; + public static final int HomeExchangeWoodReq = 4716; + public static final int GravenInnocenceEditCarveCombinationRsp = 20912; + public static final int GetAllMailResultNotify = 1429; + public static final int MuqadasPotionRestartDungeonReq = 23633; + public static final int ToTheMoonRemoveObstacleRsp = 6165; + public static final int MuqadasPotionCaptureWeaknessReq = 23970; + public static final int GravenInnocenceEditCarveCombinationReq = 24190; + public static final int ParentQuestInferenceDataNotify = 430; + public static final int DelBackupAvatarTeamReq = 1608; + public static final int AssociateInferenceWordReq = 438; + public static final int AvatarTeamAllDataNotify = 1729; + public static final int InstableSprayGalleryInfoNotify = 5541; + public static final int PlayerCompoundMaterialBoostReq = 177; + public static final int GravenInnocencePhotoFinishReq = 23079; + public static final int InstableSpraySwitchTeamReq = 24932; + public static final int SubmitInferenceWordRsp = 443; + public static final int InstableSprayEnterDungeonRsp = 24557; + public static final int AllWidgetBackgroundActiveStateNotify = 6034; + public static final int GetHomeExchangeWoodInfoReq = 4852; + public static final int GetAllMailNotify = 1442; + public static final int GravenInnocenceRaceRestartRsp = 24201; + public static final int InstableSprayRestartDungeonReq = 23108; + public static final int ToTheMoonAddObstacleRsp = 6172; + public static final int GetHomeExchangeWoodInfoRsp = 4592; + public static final int WorldChestOpenNotify = 3279; + public static final int DeshretObeliskChestInfoNotify = 858; + public static final int MuqadasPotionRestartDungeonRsp = 20273; + public static final int RemotePlayerWidgetNotify = 6009; + public static final int GravenInnocencePhotoFinishRsp = 23629; + public static final int InstableSprayLevelFinishNotify = 23121; + public static final int ChangeWidgetBackgroundActiveStateRsp = 6042; + public static final int AddBackupAvatarTeamRsp = 1777; + public static final int MuqadasPotionActivityEnterDungeonRsp = 22334; + public static final int AddBackupAvatarTeamReq = 1602; + public static final int PlayerDeathZoneNotify = 6259; + public static final int PlayerCompoundMaterialBoostRsp = 162; + public static final int InstableSpraySwitchTeamRsp = 23402; + public static final int TreasureSeelieCollectOrbsNotify = 24055; + public static final int AranaraCollectionDataNotify = 6398; + public static final int AssociateInferenceWordRsp = 404; + public static final int MuqadasPotionCaptureWeaknessRsp = 23854; + public static final int DelBackupAvatarTeamRsp = 1615; + public static final int InterpretInferenceWordRsp = 453; + public static final int MuqadasPotionActivityEnterDungeonReq = 21504; + public static final int ToTheMoonRemoveObstacleReq = 6182; + public static final int CheckGroupReplacedReq = 3036; + public static final int ToTheMoonEnterSceneRsp = 6114; + public static final int CheckGroupReplacedRsp = 3190; + public static final int InstableSprayEnterDungeonReq = 23181; + public static final int ToTheMoonEnterSceneReq = 6164; + public static final int ToTheMoonQueryPathRsp = 6175; + public static final int InterpretInferenceWordReq = 487; + public static final int AreaPlayInfoNotify = 3472; + public static final int ToTheMoonAddObstacleReq = 6134; + public static final int MuqadasPotionDungeonSettleNotify = 20893; + public static final int ToTheMoonPingNotify = 6154; + public static final int InstableSprayRestartDungeonRsp = 20879; + public static final int ToTheMoonQueryPathReq = 6167; + public static final int DeathZoneInfoNotify = 6293; + public static final int WidgetQuickHitTreeReq = 3068; + public static final int AddAranaraCollectionNotify = 6393; + public static final int ChangeWidgetBackgroundActiveStateReq = 5953; + public static final int DeathZoneObserveNotify = 3232; + public static final int GravenInnocenceRaceRestartReq = 22616; + public static final int GravenInnocencePhotoReminderNotify = 24173; + public static final int WidgetQuickHitTreeRsp = 3174; + public static final int GravenInnocenceRaceSettleNotify = 24552; + public static final int WatcherEventStageNotify = 2214; + public static final int SubmitInferenceWordReq = 420; + public static final int UnlockAvatarTalentReq = 1067; + public static final int UnlockAvatarTalentRsp = 1075; + public static final int UnlockCoopChapterReq = 1985; + public static final int UnlockCoopChapterRsp = 1971; + public static final int UnlockNameCardNotify = 4086; + public static final int UnlockPersonalLineReq = 405; + public static final int UnlockPersonalLineRsp = 471; + public static final int UnlockTransPointReq = 3180; + public static final int UnlockTransPointRsp = 3311; + public static final int UnlockedFurnitureFormulaDataNotify = 4481; + public static final int UnlockedFurnitureSuiteDataNotify = 4684; + public static final int UnmarkEntityInMinMapNotify = 287; + public static final int UpdateAbilityCreatedMovingPlatformNotify = 829; + public static final int UpdatePS4BlockListReq = 4018; + public static final int UpdatePS4BlockListRsp = 4058; + public static final int UpdatePS4FriendListNotify = 4056; + public static final int UpdatePS4FriendListReq = 4006; + public static final int UpdatePS4FriendListRsp = 4090; + public static final int UpdatePlayerShowAvatarListReq = 4040; + public static final int UpdatePlayerShowAvatarListRsp = 4011; + public static final int UpdatePlayerShowNameCardListReq = 4030; + public static final int UpdatePlayerShowNameCardListRsp = 4087; + public static final int UpdateRedPointNotify = 74; + public static final int UpdateReunionWatcherNotify = 5051; + public static final int UpgradeRoguelikeShikigamiReq = 8907; + public static final int UpgradeRoguelikeShikigamiRsp = 8493; + public static final int UseItemReq = 682; + public static final int UseItemRsp = 665; + public static final int UseMiracleRingReq = 5248; + public static final int UseMiracleRingRsp = 5243; + public static final int UseWidgetCreateGadgetReq = 4292; + public static final int UseWidgetCreateGadgetRsp = 4284; + public static final int UseWidgetRetractGadgetReq = 4283; + public static final int UseWidgetRetractGadgetRsp = 4277; + public static final int VehicleInteractReq = 844; + public static final int VehicleInteractRsp = 894; + public static final int VehicleStaminaNotify = 826; + public static final int ViewCodexReq = 4206; + public static final int ViewCodexRsp = 4204; + public static final int WatcherAllDataNotify = 2267; + public static final int WatcherChangeNotify = 2275; + public static final int WatcherEventNotify = 2254; + public static final int WatcherEventTypeNotify = 2264; + public static final int WaterSpritePhaseFinishNotify = 2096; + public static final int WeaponAwakenReq = 657; + public static final int WeaponAwakenRsp = 686; + public static final int WeaponPromoteReq = 619; + public static final int WeaponPromoteRsp = 644; + public static final int WeaponUpgradeReq = 656; + public static final int WeaponUpgradeRsp = 623; + public static final int WearEquipReq = 642; + public static final int WearEquipRsp = 629; + public static final int WidgetActiveChangeNotify = 4264; + public static final int WidgetCoolDownNotify = 4271; + public static final int WidgetDoBagReq = 4299; + public static final int WidgetDoBagRsp = 4295; + public static final int WidgetGadgetAllDataNotify = 4280; + public static final int WidgetGadgetDataNotify = 4273; + public static final int WidgetGadgetDestroyNotify = 4263; + public static final int WidgetReportReq = 4251; + public static final int WidgetReportRsp = 4252; + public static final int WidgetSlotChangeNotify = 4254; + public static final int WidgetUseAttachAbilityGroupChangeNotify = 4291; + public static final int WindSeedClientNotify = 1150; + public static final int WorktopOptionNotify = 864; + public static final int WorldAllRoutineTypeNotify = 3543; + public static final int WorldDataNotify = 3357; + public static final int WorldOwnerBlossomBriefInfoNotify = 2764; + public static final int WorldOwnerBlossomScheduleInfoNotify = 2714; + public static final int WorldOwnerDailyTaskNotify = 130; + public static final int WorldPlayerDieNotify = 277; + public static final int WorldPlayerInfoNotify = 3247; + public static final int WorldPlayerLocationNotify = 211; + public static final int WorldPlayerRTTNotify = 19; + public static final int WorldPlayerReviveReq = 262; + public static final int WorldPlayerReviveRsp = 268; + public static final int WorldRoutineChangeNotify = 3546; + public static final int WorldRoutineTypeCloseNotify = 3536; + public static final int WorldRoutineTypeRefreshNotify = 3509; + public static final int SkipPlayerGameTimeReq = 163; + public static final int SkipPlayerGameTimeRsp = 196; } diff --git a/src/main/java/emu/grasscutter/net/packet/PacketOpcodesUtils.java b/src/main/java/emu/grasscutter/net/packet/PacketOpcodesUtils.java index 177778394..280940cb7 100644 --- a/src/main/java/emu/grasscutter/net/packet/PacketOpcodesUtils.java +++ b/src/main/java/emu/grasscutter/net/packet/PacketOpcodesUtils.java @@ -1,5 +1,11 @@ package emu.grasscutter.net.packet; +import emu.grasscutter.GameConstants; +import emu.grasscutter.Grasscutter; +import emu.grasscutter.utils.JsonUtils; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; @@ -8,20 +14,11 @@ import java.util.Set; import java.util.TreeMap; import java.util.stream.Collectors; -import emu.grasscutter.GameConstants; -import emu.grasscutter.Grasscutter; -import emu.grasscutter.utils.JsonUtils; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - public class PacketOpcodesUtils { - private static Int2ObjectMap opcodeMap; - public static final Set BANNED_PACKETS = Set.of( PacketOpcodes.WindSeedClientNotify, PacketOpcodes.PlayerLuaShellNotify ); - public static final Set LOOP_PACKETS = Set.of( PacketOpcodes.PingReq, PacketOpcodes.PingRsp, @@ -29,13 +26,14 @@ public class PacketOpcodesUtils { PacketOpcodes.UnionCmdNotify, PacketOpcodes.QueryPathReq, PacketOpcodes.QueryPathRsp, - + // Satiation sends these every tick PacketOpcodes.PlayerTimeNotify, PacketOpcodes.PlayerGameTimeNotify, PacketOpcodes.AvatarPropNotify, PacketOpcodes.AvatarSatiationDataNotify ); + private static final Int2ObjectMap opcodeMap; static { opcodeMap = new Int2ObjectOpenHashMap(); @@ -62,8 +60,8 @@ public class PacketOpcodesUtils { try (FileWriter writer = new FileWriter("./PacketIds_" + GameConstants.VERSION + ".json")) { // Create sorted tree map Map packetIds = opcodeMap.int2ObjectEntrySet().stream() - .filter(e -> e.getIntKey() > 0) - .collect(Collectors.toMap(Int2ObjectMap.Entry::getIntKey, Int2ObjectMap.Entry::getValue, (k, v) -> v, TreeMap::new)); + .filter(e -> e.getIntKey() > 0) + .collect(Collectors.toMap(Int2ObjectMap.Entry::getIntKey, Int2ObjectMap.Entry::getValue, (k, v) -> v, TreeMap::new)); // Write to file writer.write(JsonUtils.encode(packetIds)); Grasscutter.getLogger().info("Dumped packet ids."); diff --git a/src/main/java/emu/grasscutter/net/packet/PacketWriter.java b/src/main/java/emu/grasscutter/net/packet/PacketWriter.java index c8ea039b9..645546c8d 100644 --- a/src/main/java/emu/grasscutter/net/packet/PacketWriter.java +++ b/src/main/java/emu/grasscutter/net/packet/PacketWriter.java @@ -4,100 +4,100 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; public class PacketWriter { - // Little endian - private final ByteArrayOutputStream baos; - - public PacketWriter() { - this.baos = new ByteArrayOutputStream(128); - } + // Little endian + private final ByteArrayOutputStream baos; - public byte[] build() { - return baos.toByteArray(); - } + public PacketWriter() { + this.baos = new ByteArrayOutputStream(128); + } - // Writers - - public void writeEmpty(int i) { - while (i > 0) { - baos.write(0); - i--; - } - } - - public void writeMax(int i) { - while (i > 0) { - baos.write(0xFF); - i--; - } - } - - public void writeInt8(byte b) { + public byte[] build() { + return baos.toByteArray(); + } + + // Writers + + public void writeEmpty(int i) { + while (i > 0) { + baos.write(0); + i--; + } + } + + public void writeMax(int i) { + while (i > 0) { + baos.write(0xFF); + i--; + } + } + + public void writeInt8(byte b) { baos.write(b); } - public void writeInt8(int i) { - baos.write((byte) i); - } - - public void writeBoolean(boolean b) { + public void writeInt8(int i) { + baos.write((byte) i); + } + + public void writeBoolean(boolean b) { baos.write(b ? 1 : 0); } - - public void writeUint8(byte b) { - // Unsigned byte + + public void writeUint8(byte b) { + // Unsigned byte baos.write(b & 0xFF); } - - public void writeUint8(int i) { - baos.write((byte) i & 0xFF); - } - - public void writeUint16(int i) { - // Unsigned short + public void writeUint8(int i) { + + baos.write((byte) i & 0xFF); + } + + public void writeUint16(int i) { + // Unsigned short baos.write((byte) (i & 0xFF)); baos.write((byte) ((i >>> 8) & 0xFF)); } - - public void writeUint24(int i) { - // 24 bit integer + + public void writeUint24(int i) { + // 24 bit integer baos.write((byte) (i & 0xFF)); baos.write((byte) ((i >>> 8) & 0xFF)); baos.write((byte) ((i >>> 16) & 0xFF)); } - - public void writeInt16(int i) { - // Signed short + + public void writeInt16(int i) { + // Signed short baos.write((byte) i); baos.write((byte) (i >>> 8)); } public void writeUint32(int i) { - // Unsigned int + // Unsigned int baos.write((byte) (i & 0xFF)); baos.write((byte) ((i >>> 8) & 0xFF)); baos.write((byte) ((i >>> 16) & 0xFF)); baos.write((byte) ((i >>> 24) & 0xFF)); } - + public void writeInt32(int i) { - // Signed int + // Signed int baos.write((byte) i); baos.write((byte) (i >>> 8)); baos.write((byte) (i >>> 16)); baos.write((byte) (i >>> 24)); } - + public void writeUint32(long i) { - // Unsigned int (long) + // Unsigned int (long) baos.write((byte) (i & 0xFF)); baos.write((byte) ((i >>> 8) & 0xFF)); baos.write((byte) ((i >>> 16) & 0xFF)); baos.write((byte) ((i >>> 24) & 0xFF)); } - - public void writeFloat(float f){ - this.writeUint32(Float.floatToRawIntBits(f)); + + public void writeFloat(float f) { + this.writeUint32(Float.floatToRawIntBits(f)); } public void writeUint64(long l) { @@ -110,68 +110,68 @@ public class PacketWriter { baos.write((byte) ((l >>> 48) & 0xFF)); baos.write((byte) ((l >>> 56) & 0xFF)); } - - public void writeDouble(double d){ - long l = Double.doubleToLongBits(d); - this.writeUint64(l); + + public void writeDouble(double d) { + long l = Double.doubleToLongBits(d); + this.writeUint64(l); } - + public void writeString16(String s) { - if (s == null) { - this.writeUint16(0); - return; - } + if (s == null) { + this.writeUint16(0); + return; + } - this.writeUint16(s.length() * 2); - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - this.writeUint16((short) c); - } + this.writeUint16(s.length() * 2); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + this.writeUint16((short) c); + } } - + public void writeString8(String s) { - if (s == null) { - this.writeUint16(0); - return; - } + if (s == null) { + this.writeUint16(0); + return; + } - this.writeUint16(s.length()); - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - this.writeUint8((byte) c); - } + this.writeUint16(s.length()); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + this.writeUint8((byte) c); + } } - + public void writeDirectString8(String s, int expectedSize) { - if (s == null) { - return; - } + if (s == null) { + return; + } - for (int i = 0; i < expectedSize; i++) { - char c = i < s.length() ? s.charAt(i) : 0; - this.writeUint8((byte) c); - } + for (int i = 0; i < expectedSize; i++) { + char c = i < s.length() ? s.charAt(i) : 0; + this.writeUint8((byte) c); + } } - + public void writeBytes(byte[] bytes) { - try { - baos.write(bytes); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + try { + baos.write(bytes); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } - public void writeBytes(int[] bytes) { - byte[] b = new byte[bytes.length]; - for (int i = 0; i < bytes.length; i++) - b[i] = (byte)bytes[i]; + public void writeBytes(int[] bytes) { + byte[] b = new byte[bytes.length]; + for (int i = 0; i < bytes.length; i++) + b[i] = (byte) bytes[i]; - try { - baos.write(b); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } + try { + baos.write(b); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } diff --git a/src/main/java/emu/grasscutter/plugin/Plugin.java b/src/main/java/emu/grasscutter/plugin/Plugin.java index eff60130f..78e77ee9c 100644 --- a/src/main/java/emu/grasscutter/plugin/Plugin.java +++ b/src/main/java/emu/grasscutter/plugin/Plugin.java @@ -4,7 +4,6 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.plugin.api.ServerHook; import emu.grasscutter.server.game.GameServer; import emu.grasscutter.utils.FileUtils; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,8 +24,9 @@ public abstract class Plugin { /** * This method is reflected into. - * + *

* Set plugin variables. + * * @param identifier The plugin's identifier. */ private void initializePlugin(PluginIdentifier identifier, URLClassLoader classLoader) { @@ -42,12 +42,12 @@ public abstract class Plugin { if (!this.dataFolder.exists() && !this.dataFolder.mkdirs()) { Grasscutter.getLogger().warn("Failed to create plugin data folder for " + this.identifier.name); - return; } } /** * The plugin's identifier instance. + * * @return An instance of {@link PluginIdentifier}. */ public final PluginIdentifier getIdentifier() { @@ -77,6 +77,7 @@ public abstract class Plugin { /** * Returns the server that initialized the plugin. + * * @return A server instance. */ public final GameServer getServer() { @@ -85,6 +86,7 @@ public abstract class Plugin { /** * Returns an input stream for a resource in the JAR file. + * * @param resourceName The name of the resource. * @return An input stream. */ @@ -94,6 +96,7 @@ public abstract class Plugin { /** * Returns a directory where plugins can store data files. + * * @return A directory on the file system. */ public final File getDataFolder() { @@ -102,6 +105,7 @@ public abstract class Plugin { /** * Returns the server hook. + * * @return A server hook singleton. */ public final ServerHook getHandle() { @@ -110,6 +114,7 @@ public abstract class Plugin { /** * Returns the plugin's logger. + * * @return A SLF4J logger. */ public final Logger getLogger() { @@ -117,9 +122,14 @@ public abstract class Plugin { } /* Called when the plugin is first loaded. */ - public void onLoad() { } + public void onLoad() { + } + /* Called after (most of) the server enables. */ - public void onEnable() { } + public void onEnable() { + } + /* Called before the server disables. */ - public void onDisable() { } + public void onDisable() { + } } diff --git a/src/main/java/emu/grasscutter/plugin/PluginConfig.java b/src/main/java/emu/grasscutter/plugin/PluginConfig.java index e80cd6f60..c0339f5c6 100644 --- a/src/main/java/emu/grasscutter/plugin/PluginConfig.java +++ b/src/main/java/emu/grasscutter/plugin/PluginConfig.java @@ -11,6 +11,7 @@ public final class PluginConfig { /** * Attempts to validate this config instance. + * * @return True if the config is valid, false otherwise. */ @SuppressWarnings("BooleanMethodIsAlwaysInverted") diff --git a/src/main/java/emu/grasscutter/plugin/PluginIdentifier.java b/src/main/java/emu/grasscutter/plugin/PluginIdentifier.java index a467e3949..dc3eb0988 100644 --- a/src/main/java/emu/grasscutter/plugin/PluginIdentifier.java +++ b/src/main/java/emu/grasscutter/plugin/PluginIdentifier.java @@ -4,10 +4,10 @@ package emu.grasscutter.plugin; public final class PluginIdentifier { public final String name, description, version; public final String[] authors; - + public PluginIdentifier( - String name, String description, String version, - String[] authors + String name, String description, String version, + String[] authors ) { this.name = name; this.description = description; @@ -19,11 +19,11 @@ public final class PluginIdentifier { * Converts a {@link PluginConfig} into a {@link PluginIdentifier}. */ public static PluginIdentifier fromPluginConfig(PluginConfig config) { - if(!config.validate()) + if (!config.validate()) throw new IllegalArgumentException("A valid plugin config is required to convert into a plugin identifier."); return new PluginIdentifier( - config.name, config.description, config.version, - config.authors + config.name, config.description, config.version, + config.authors ); } } diff --git a/src/main/java/emu/grasscutter/plugin/PluginManager.java b/src/main/java/emu/grasscutter/plugin/PluginManager.java index 3f78dfd67..74c2561aa 100644 --- a/src/main/java/emu/grasscutter/plugin/PluginManager.java +++ b/src/main/java/emu/grasscutter/plugin/PluginManager.java @@ -1,21 +1,28 @@ package emu.grasscutter.plugin; import emu.grasscutter.Grasscutter; -import emu.grasscutter.server.event.*; +import emu.grasscutter.server.event.Event; +import emu.grasscutter.server.event.EventHandler; +import emu.grasscutter.server.event.HandlerPriority; import emu.grasscutter.utils.FileUtils; import emu.grasscutter.utils.JsonUtils; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Getter; import javax.annotation.Nullable; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.InputStreamReader; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.*; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; import static emu.grasscutter.utils.Language.translate; -import java.io.*; -import java.lang.reflect.Method; -import java.net.*; -import java.util.*; -import java.util.jar.*; - /** * Manages the server's plugins and the event system. */ @@ -29,15 +36,6 @@ public final class PluginManager { this.loadPlugins(); // Load all plugins from the plugins directory. } - /* Data about an unloaded plugin. */ - @AllArgsConstructor @Getter - static class PluginData { - private Plugin plugin; - private PluginIdentifier identifier; - private URLClassLoader classLoader; - private String[] dependencies; - } - /** * Loads plugins from the config-specified directory. */ @@ -130,7 +128,8 @@ public final class PluginManager { } // Load plugins with dependencies. - int depth = 0; final int maxDepth = 30; + int depth = 0; + final int maxDepth = 30; while (!dependencies.isEmpty()) { // Check if the depth is too high. if (depth >= maxDepth) { @@ -154,7 +153,8 @@ public final class PluginManager { // Load the plugin. this.loadPlugin(pluginData.getPlugin(), pluginData.getIdentifier(), pluginData.getClassLoader()); } catch (Exception exception) { - Grasscutter.getLogger().error(translate("plugin.failed_to_load"), exception); depth++; + Grasscutter.getLogger().error(translate("plugin.failed_to_load"), exception); + depth++; } } } @@ -218,7 +218,7 @@ public final class PluginManager { /** * Registers a plugin's event listener. * - * @param plugin The plugin registering the listener. + * @param plugin The plugin registering the listener. * @param listener The event listener. */ public void registerListener(Plugin plugin, EventHandler listener) { @@ -306,4 +306,14 @@ public final class PluginManager { (event.isCanceled() && handler.ignoresCanceled()) ) handler.getCallback().consume((T) event); } + + /* Data about an unloaded plugin. */ + @AllArgsConstructor + @Getter + static class PluginData { + private Plugin plugin; + private PluginIdentifier identifier; + private URLClassLoader classLoader; + private String[] dependencies; + } } diff --git a/src/main/java/emu/grasscutter/plugin/api/PlayerHook.java b/src/main/java/emu/grasscutter/plugin/api/PlayerHook.java index 0b91ede33..65f353c9a 100644 --- a/src/main/java/emu/grasscutter/plugin/api/PlayerHook.java +++ b/src/main/java/emu/grasscutter/plugin/api/PlayerHook.java @@ -20,6 +20,7 @@ public final class PlayerHook { /** * Hooks into the player. + * * @param player The player to hook into. */ public PlayerHook(Player player) { @@ -36,6 +37,7 @@ public final class PlayerHook { /** * Sends a player to another scene. + * * @param sceneId The scene to send the player to. */ public void changeScenes(int sceneId) { @@ -44,6 +46,7 @@ public final class PlayerHook { /** * Broadcasts an avatar property notify to all world players. + * * @param property The property that was updated. */ public void updateFightProperty(FightProperty property) { @@ -52,6 +55,7 @@ public final class PlayerHook { /** * Broadcasts the packet sent to all world players. + * * @param packet The packet to send. */ public void broadcastPacketToWorld(BasePacket packet) { @@ -60,6 +64,7 @@ public final class PlayerHook { /** * Set the currently equipped avatar's health. + * * @param health The health to set the avatar to. */ public void setHealth(float health) { @@ -69,6 +74,7 @@ public final class PlayerHook { /** * Revives the specified avatar. + * * @param avatar The avatar to revive. */ public void reviveAvatar(Avatar avatar) { @@ -78,18 +84,20 @@ public final class PlayerHook { /** * Teleports a player to a position. * This will **not** transfer the player to another scene. + * * @param position The position to teleport the player to. */ public void teleport(Position position) { this.player.getPosition().set(position); this.player.sendPacket(new PacketPlayerEnterSceneNotify(this.player, - EnterType.ENTER_TYPE_JUMP, EnterReason.TransPoint, - this.player.getSceneId(), position + EnterType.ENTER_TYPE_JUMP, EnterReason.TransPoint, + this.player.getSceneId(), position )); } /** * Gets the currently selected avatar's max health. + * * @return The max health as a float. */ public float getMaxHealth() { @@ -98,6 +106,7 @@ public final class PlayerHook { /** * Gets the currently selected avatar in entity form. + * * @return The avatar as an {@link EntityAvatar}. */ public EntityAvatar getCurrentAvatarEntity() { @@ -106,6 +115,7 @@ public final class PlayerHook { /** * Gets the currently selected avatar. + * * @return The avatar as an {@link Avatar}. */ public Avatar getCurrentAvatar() { diff --git a/src/main/java/emu/grasscutter/plugin/api/ServerHook.java b/src/main/java/emu/grasscutter/plugin/api/ServerHook.java index deb98806a..cc53f5da1 100644 --- a/src/main/java/emu/grasscutter/plugin/api/ServerHook.java +++ b/src/main/java/emu/grasscutter/plugin/api/ServerHook.java @@ -23,16 +23,9 @@ public final class ServerHook { private final GameServer gameServer; private final HttpServer httpServer; - /** - * Gets the server hook instance. - * @return A {@link ServerHook} singleton. - */ - public static ServerHook getInstance() { - return instance; - } - /** * Hooks into a server. + * * @param gameServer The game server to hook into. * @param httpServer The HTTP server to hook into. */ @@ -43,6 +36,15 @@ public final class ServerHook { instance = this; } + /** + * Gets the server hook instance. + * + * @return A {@link ServerHook} singleton. + */ + public static ServerHook getInstance() { + return instance; + } + /** * @return The game server. */ @@ -59,6 +61,7 @@ public final class ServerHook { /** * Gets all online players. + * * @return Players connected to the server. */ @Deprecated(forRemoval = true) @@ -68,6 +71,7 @@ public final class ServerHook { /** * Gets all online players. + * * @return Players connected to the server. */ public Stream getOnlinePlayersStream() { @@ -76,6 +80,7 @@ public final class ServerHook { /** * Registers a command to the {@link emu.grasscutter.command.CommandMap}. + * * @param handler The command handler. */ public void registerCommand(CommandHandler handler) { @@ -88,6 +93,7 @@ public final class ServerHook { /** * Adds a router using an instance of a class. + * * @param router A router instance. */ public void addRouter(Router router) { @@ -96,6 +102,7 @@ public final class ServerHook { /** * Adds a router using a class. + * * @param router The class of the router. */ public void addRouter(Class router) { @@ -104,6 +111,7 @@ public final class ServerHook { /** * Sets the server's authentication system. + * * @param authSystem An instance of the authentication system. */ public void setAuthSystem(AuthenticationSystem authSystem) { @@ -112,6 +120,7 @@ public final class ServerHook { /** * Sets the server's permission handler. + * * @param permHandler An instance of the permission handler. */ public void setPermissionHandler(PermissionHandler permHandler) { diff --git a/src/main/java/emu/grasscutter/scripts/SceneIndexManager.java b/src/main/java/emu/grasscutter/scripts/SceneIndexManager.java index 597661226..1fe7e7e3c 100644 --- a/src/main/java/emu/grasscutter/scripts/SceneIndexManager.java +++ b/src/main/java/emu/grasscutter/scripts/SceneIndexManager.java @@ -12,20 +12,22 @@ import java.util.function.Function; public class SceneIndexManager { - public static RTree buildIndex(int dimensions, Collection elements, Function extractor){ + public static RTree buildIndex(int dimensions, Collection elements, Function extractor) { RTree rtree = RTree.dimensions(dimensions).create(); return rtree.add(elements.stream().map(e -> Entry.entry(e, extractor.apply(e))).toList()); } - public static List queryNeighbors(RTree tree, double[] position, int range){ + + public static List queryNeighbors(RTree tree, double[] position, int range) { var result = new ArrayList(); Rectangle rectangle = Rectangle.create(calRange(position, -range), calRange(position, range)); var queryResult = tree.search(rectangle); queryResult.forEach(q -> result.add(q.value())); return result; } - private static double[] calRange(double[] position, int range){ + + private static double[] calRange(double[] position, int range) { var newPos = position.clone(); - for(int i=0;i(1000), + FastThreadLocalThread::new, new ThreadPoolExecutor.AbortPolicy()); + } + private final Scene scene; private final Map variables; - private SceneMeta meta; - private boolean isInit; /** * current triggers controlled by RefreshGroup */ private final Map> currentTriggers; private final Map regions; // - private final Map sceneGroups; - private ScriptMonsterTideService scriptMonsterTideService; - private ScriptMonsterSpawnService scriptMonsterSpawnService; + private final Map sceneGroups; /** * blockid - loaded groupSet */ private final Map> loadedGroupSetPerBlock; - public static final ExecutorService eventExecutor; - static { - eventExecutor = new ThreadPoolExecutor(4, 4, - 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(1000), - FastThreadLocalThread::new, new ThreadPoolExecutor.AbortPolicy()); - } + private SceneMeta meta; + private boolean isInit; + private ScriptMonsterTideService scriptMonsterTideService; + private final ScriptMonsterSpawnService scriptMonsterSpawnService; + public SceneScriptManager(Scene scene) { this.scene = scene; this.currentTriggers = new ConcurrentHashMap<>(); @@ -87,22 +90,28 @@ public class SceneScriptManager { public Set getTriggersByEvent(int eventId) { return currentTriggers.computeIfAbsent(eventId, e -> new HashSet<>()); } + public void registerTrigger(List triggers) { triggers.forEach(this::registerTrigger); } + public void registerTrigger(SceneTrigger trigger) { getTriggersByEvent(trigger.event).add(trigger); Grasscutter.getLogger().debug("Registered trigger {}", trigger.name); } + public void deregisterTrigger(List triggers) { triggers.forEach(this::deregisterTrigger); } + public void deregisterTrigger(SceneTrigger trigger) { getTriggersByEvent(trigger.event).remove(trigger); } + public void resetTriggers(int eventId) { currentTriggers.put(eventId, new HashSet<>()); } + public void refreshGroup(SceneGroup group, int suiteIndex) { if (group == null) { return; @@ -123,6 +132,7 @@ public class SceneScriptManager { spawnMonstersInGroup(group, suite); spawnGadgetsInGroup(group, suite); } + public EntityRegion getRegionById(int id) { return regions.get(id); } @@ -131,10 +141,12 @@ public class SceneScriptManager { regions.put(region.getId(), region); Grasscutter.getLogger().debug("Registered region {} from group {}", region.getMetaRegion().config_id, region.getGroupId()); } + public void registerRegionInGroupSuite(SceneGroup group, SceneSuite suite) { suite.sceneRegions.stream().map(region -> new EntityRegion(this.getScene(), region)) .forEach(this::registerRegion); } + public synchronized void deregisterRegion(SceneRegion region) { var instance = regions.values().stream() .filter(r -> r.getConfigId() == region.config_id) @@ -209,7 +221,7 @@ public class SceneScriptManager { targetID = players.get(0).getUid(); if (region.hasNewEntities()) { - Grasscutter.getLogger().trace("Call EVENT_ENTER_REGION_{}",region.getMetaRegion().config_id); + Grasscutter.getLogger().trace("Call EVENT_ENTER_REGION_{}", region.getMetaRegion().config_id); callEvent(EventType.EVENT_ENTER_REGION, new ScriptArgs(region.getConfigId()) .setSourceEntityId(region.getId()) .setTargetEntityId(targetID) @@ -241,12 +253,14 @@ public class SceneScriptManager { .filter(Objects::nonNull) .toList(); } + public List getMonstersInGroupSuite(SceneGroup group, SceneSuite suite) { return suite.sceneMonsters.stream() .map(mob -> createMonster(group.id, group.block_id, mob)) .filter(Objects::nonNull) .toList(); } + public void addGroupSuite(SceneGroup group, SceneSuite suite) { // we added trigger first registerTrigger(suite.sceneTriggers); @@ -258,6 +272,7 @@ public class SceneScriptManager { registerRegionInGroupSuite(group, suite); } + public void removeGroupSuite(SceneGroup group, SceneSuite suite) { deregisterTrigger(suite.sceneTriggers); removeMonstersInGroup(group, suite); @@ -274,9 +289,9 @@ public class SceneScriptManager { } var toCreate = gadgets.stream() - .map(g -> createGadget(g.group.id, group.block_id, g)) - .filter(Objects::nonNull) - .toList(); + .map(g -> createGadget(g.group.id, group.block_id, g)) + .filter(Objects::nonNull) + .toList(); this.addEntities(toCreate); } @@ -285,24 +300,27 @@ public class SceneScriptManager { return; } this.addEntities(suite.sceneMonsters.stream() - .map(mob -> createMonster(group.id, group.block_id, mob)).toList()); + .map(mob -> createMonster(group.id, group.block_id, mob)).toList()); } public void startMonsterTideInGroup(SceneGroup group, Integer[] ordersConfigId, int tideCount, int sceneLimit) { this.scriptMonsterTideService = - new ScriptMonsterTideService(this, group, tideCount, sceneLimit, ordersConfigId); + new ScriptMonsterTideService(this, group, tideCount, sceneLimit, ordersConfigId); } + public void unloadCurrentMonsterTide() { if (this.getScriptMonsterTideService() == null) { return; } this.getScriptMonsterTideService().unload(); } + public void spawnMonstersByConfigId(SceneGroup group, int configId, int delayTime) { // TODO delay getScene().addEntity(createMonster(group.id, group.block_id, group.monsters.get(configId))); } + // Events public void callEvent(int eventType, ScriptArgs params) { /** @@ -322,7 +340,9 @@ public class SceneScriptManager { List relevantTriggersList = this.getTriggersByEvent(eventType).stream() .filter(p -> p.condition.contains(String.valueOf(params.param1))).toList(); relevantTriggers = new HashSet<>(relevantTriggersList); - } else {relevantTriggers = this.getTriggersByEvent(eventType);} + } else { + relevantTriggers = this.getTriggersByEvent(eventType); + } for (SceneTrigger trigger : relevantTriggers) { try { ScriptLoader.getScriptLib().setCurrentGroup(trigger.currentGroup); @@ -346,11 +366,11 @@ public class SceneScriptManager { Grasscutter.getLogger().debug("Condition Trigger {} returned {}", trigger.condition, ret); } //TODO some ret do not bool - }finally { + } finally { ScriptLoader.getScriptLib().removeCurrentGroup(); } } - }finally { + } finally { // make sure it is removed ScriptLoader.getScriptLib().removeSceneScriptManager(); } @@ -379,8 +399,8 @@ public class SceneScriptManager { public LuaValue safetyCall(String name, LuaValue func, LuaValue args) { try { return func.call(ScriptLoader.getScriptLibLua(), args); - }catch (LuaError error) { - ScriptLib.logger.error("[LUA] call trigger failed {},{}",name,args,error); + } catch (LuaError error) { + ScriptLib.logger.error("[LUA] call trigger failed {},{}", name, args, error); return LuaValue.valueOf(-1); } } @@ -421,9 +441,11 @@ public class SceneScriptManager { return entity; } + public EntityNPC createNPC(SceneNPC npc, int blockId, int suiteId) { return new EntityNPC(getScene(), npc, blockId, suiteId); } + public EntityMonster createMonster(int groupId, int blockId, SceneMonster monster) { if (monster == null) { return null; @@ -457,7 +479,7 @@ public class SceneScriptManager { entity.setPoseId(monster.pose_id); this.getScriptMonsterSpawnService() - .onMonsterCreatedListener.forEach(action -> action.onNotify(entity)); + .onMonsterCreatedListener.forEach(action -> action.onNotify(entity)); return entity; } @@ -477,27 +499,29 @@ public class SceneScriptManager { public RTree getBlocksIndex() { return meta.sceneBlockIndex; } + public void removeMonstersInGroup(SceneGroup group, SceneSuite suite) { var configSet = suite.sceneMonsters.stream() - .map(m -> m.config_id) - .collect(Collectors.toSet()); + .map(m -> m.config_id) + .collect(Collectors.toSet()); var toRemove = getScene().getEntities().values().stream() - .filter(e -> e instanceof EntityMonster) - .filter(e -> e.getGroupId() == group.id) - .filter(e -> configSet.contains(e.getConfigId())) - .toList(); + .filter(e -> e instanceof EntityMonster) + .filter(e -> e.getGroupId() == group.id) + .filter(e -> configSet.contains(e.getConfigId())) + .toList(); getScene().removeEntities(toRemove, VisionTypeOuterClass.VisionType.VISION_TYPE_MISS); } + public void removeGadgetsInGroup(SceneGroup group, SceneSuite suite) { var configSet = suite.sceneGadgets.stream() - .map(m -> m.config_id) - .collect(Collectors.toSet()); + .map(m -> m.config_id) + .collect(Collectors.toSet()); var toRemove = getScene().getEntities().values().stream() - .filter(e -> e instanceof EntityGadget) - .filter(e -> e.getGroupId() == group.id) - .filter(e -> configSet.contains(e.getConfigId())) - .toList(); + .filter(e -> e instanceof EntityGadget) + .filter(e -> e.getGroupId() == group.id) + .filter(e -> configSet.contains(e.getConfigId())) + .toList(); getScene().removeEntities(toRemove, VisionTypeOuterClass.VisionType.VISION_TYPE_MISS); } diff --git a/src/main/java/emu/grasscutter/scripts/ScriptLib.java b/src/main/java/emu/grasscutter/scripts/ScriptLib.java index 1dce83452..964890104 100644 --- a/src/main/java/emu/grasscutter/scripts/ScriptLib.java +++ b/src/main/java/emu/grasscutter/scripts/ScriptLib.java @@ -2,17 +2,16 @@ package emu.grasscutter.scripts; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.dungeons.challenge.DungeonChallenge; +import emu.grasscutter.game.dungeons.challenge.factory.ChallengeFactory; import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.EntityMonster; import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.entity.gadget.GadgetWorktop; -import emu.grasscutter.game.dungeons.challenge.factory.ChallengeFactory; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.EntityType; import emu.grasscutter.game.quest.enums.QuestState; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.scripts.data.SceneGroup; -import emu.grasscutter.scripts.data.SceneRegion; import emu.grasscutter.server.packet.send.PacketCanUseSkillNotify; import emu.grasscutter.server.packet.send.PacketDungeonShowReminderNotify; import emu.grasscutter.server.packet.send.PacketWorktopOptionNotify; @@ -25,498 +24,511 @@ import org.slf4j.LoggerFactory; import java.util.Optional; public class ScriptLib { - public static final Logger logger = LoggerFactory.getLogger(ScriptLib.class); - private final FastThreadLocal sceneScriptManager; - private final FastThreadLocal currentGroup; - public ScriptLib() { - this.sceneScriptManager = new FastThreadLocal<>(); - this.currentGroup = new FastThreadLocal<>(); - } - - public void setSceneScriptManager(SceneScriptManager sceneScriptManager){ - this.sceneScriptManager.set(sceneScriptManager); - } - - public void removeSceneScriptManager(){ - this.sceneScriptManager.remove(); - } - - public SceneScriptManager getSceneScriptManager() { - // normally not null - return Optional.of(sceneScriptManager.get()).get(); - } - - private String printTable(LuaTable table){ - StringBuilder sb = new StringBuilder(); - sb.append("{"); - for(var meta : table.keys()){ - sb.append(meta).append(":").append(table.get(meta)).append(","); - } - sb.append("}"); - return sb.toString(); - } - public void setCurrentGroup(SceneGroup currentGroup){ - this.currentGroup.set(currentGroup); - } - public Optional getCurrentGroup(){ - return Optional.of(this.currentGroup.get()); - } - public void removeCurrentGroup(){ - this.currentGroup.remove(); - } - public int SetGadgetStateByConfigId(int configId, int gadgetState) { - logger.debug("[LUA] Call SetGadgetStateByConfigId with {},{}", - configId,gadgetState); - Optional entity = getSceneScriptManager().getScene().getEntities().values().stream() - .filter(e -> e.getConfigId() == configId).findFirst(); - - if (entity.isEmpty()) { - return 1; - } - - if (entity.get() instanceof EntityGadget entityGadget) { - entityGadget.updateState(gadgetState); - return 0; - } - - return 1; - } - - public int SetGroupGadgetStateByConfigId(int groupId, int configId, int gadgetState) { - logger.debug("[LUA] Call SetGroupGadgetStateByConfigId with {},{},{}", - groupId,configId,gadgetState); - - getSceneScriptManager().getScene().getEntities().values().stream() - .filter(e -> e.getGroupId() == groupId) - .filter(e -> e instanceof EntityGadget) - .map(e -> (EntityGadget)e) - .forEach(e -> e.updateState(gadgetState)); - - return 0; - } - - public int SetWorktopOptionsByGroupId(int groupId, int configId, int[] options) { - logger.debug("[LUA] Call SetWorktopOptionsByGroupId with {},{},{}", - groupId,configId,options); - - Optional entity = getSceneScriptManager().getScene().getEntities().values().stream() - .filter(e -> e.getConfigId() == configId && e.getGroupId() == groupId).findFirst(); - - - if (entity.isEmpty() || !(entity.get() instanceof EntityGadget gadget)) { - return 1; - } - - if (!(gadget.getContent() instanceof GadgetWorktop worktop)) { - return 1; - } - - worktop.addWorktopOptions(options); - getSceneScriptManager().getScene().broadcastPacket(new PacketWorktopOptionNotify(gadget)); - - return 0; - } - - public int SetWorktopOptions(LuaTable table){ - logger.debug("[LUA] Call SetWorktopOptions with {}", printTable(table)); - // TODO - return 0; - } - public int DelWorktopOptionByGroupId(int groupId, int configId, int option) { - logger.debug("[LUA] Call DelWorktopOptionByGroupId with {},{},{}",groupId,configId,option); - - Optional entity = getSceneScriptManager().getScene().getEntities().values().stream() - .filter(e -> e.getConfigId() == configId && e.getGroupId() == groupId).findFirst(); - - if (entity.isEmpty() || !(entity.get() instanceof EntityGadget gadget)) { - return 1; - } - - if (!(gadget.getContent() instanceof GadgetWorktop worktop)) { - return 1; - } - - worktop.removeWorktopOption(option); - getSceneScriptManager().getScene().broadcastPacket(new PacketWorktopOptionNotify(gadget)); - - return 0; - } - - // Some fields are guessed - public int AutoMonsterTide(int challengeIndex, int groupId, Integer[] ordersConfigId, int tideCount, int sceneLimit, int param6) { - logger.debug("[LUA] Call AutoMonsterTide with {},{},{},{},{},{}", - challengeIndex,groupId,ordersConfigId,tideCount,sceneLimit,param6); - - SceneGroup group = getSceneScriptManager().getGroupById(groupId); - - if (group == null || group.monsters == null) { - return 1; - } - - this.getSceneScriptManager().startMonsterTideInGroup(group, ordersConfigId, tideCount, sceneLimit); - - return 0; - } - - public int AddExtraGroupSuite(int groupId, int suite) { - logger.debug("[LUA] Call AddExtraGroupSuite with {},{}", - groupId,suite); - SceneGroup group = getSceneScriptManager().getGroupById(groupId); - - if (group == null || group.monsters == null) { - return 1; - } - var suiteData = group.getSuiteByIndex(suite); - if(suiteData == null){ - return 1; - } - // avoid spawn wrong monster - if(getSceneScriptManager().getScene().getChallenge() != null) - if(!getSceneScriptManager().getScene().getChallenge().inProgress() || - getSceneScriptManager().getScene().getChallenge().getGroup().id != groupId){ - return 0; - } - this.getSceneScriptManager().addGroupSuite(group, suiteData); - - return 0; - } - public int GoToGroupSuite(int groupId, int suite) { - logger.debug("[LUA] Call GoToGroupSuite with {},{}", - groupId,suite); - SceneGroup group = getSceneScriptManager().getGroupById(groupId); - if (group == null || group.monsters == null) { - return 1; - } - var suiteData = group.getSuiteByIndex(suite); - if(suiteData == null){ - return 1; - } - - for(var suiteItem : group.suites){ - if(suiteData == suiteItem){ - continue; - } - this.getSceneScriptManager().removeGroupSuite(group, suiteItem); - } - this.getSceneScriptManager().addGroupSuite(group, suiteData); - - return 0; - } - public int RemoveExtraGroupSuite(int groupId, int suite) { - logger.debug("[LUA] Call RemoveExtraGroupSuite with {},{}", - groupId,suite); - - SceneGroup group = getSceneScriptManager().getGroupById(groupId); - if (group == null || group.monsters == null) { - return 1; - } - var suiteData = group.getSuiteByIndex(suite); - if(suiteData == null){ - return 1; - } - - this.getSceneScriptManager().removeGroupSuite(group, suiteData); - - return 0; - } - public int KillExtraGroupSuite(int groupId, int suite) { - logger.debug("[LUA] Call KillExtraGroupSuite with {},{}", - groupId,suite); - - SceneGroup group = getSceneScriptManager().getGroupById(groupId); - if (group == null || group.monsters == null) { - return 1; - } - var suiteData = group.getSuiteByIndex(suite); - if(suiteData == null){ - return 1; - } - - this.getSceneScriptManager().removeGroupSuite(group, suiteData); - - return 0; - } - // param3 (probably time limit for timed dungeons) - public int ActiveChallenge(int challengeId, int challengeIndex, int timeLimitOrGroupId, int groupId, int objectiveKills, int param5) { - logger.debug("[LUA] Call ActiveChallenge with {},{},{},{},{},{}", - challengeId,challengeIndex,timeLimitOrGroupId,groupId,objectiveKills,param5); - - var challenge = ChallengeFactory.getChallenge( - challengeId, - challengeIndex, - timeLimitOrGroupId, - groupId, - objectiveKills, - param5, - getSceneScriptManager().getScene(), - getCurrentGroup().get() - ); - - if(challenge == null){ - return 1; - } - - if(challenge instanceof DungeonChallenge dungeonChallenge){ - // set if tower first stage (6-1) - dungeonChallenge.setStage(getSceneScriptManager().getVariables().getOrDefault("stage", -1) == 0); - } - - getSceneScriptManager().getScene().setChallenge(challenge); - challenge.start(); - return 0; - } - - public int GetGroupMonsterCountByGroupId(int groupId) { - logger.debug("[LUA] Call GetGroupMonsterCountByGroupId with {}", - groupId); - return (int) getSceneScriptManager().getScene().getEntities().values().stream() - .filter(e -> e instanceof EntityMonster && e.getGroupId() == groupId) - .count(); - } - - public int GetGroupVariableValue(String var) { - logger.debug("[LUA] Call GetGroupVariableValue with {}", - var); - return getSceneScriptManager().getVariables().getOrDefault(var, 0); - } - - public int SetGroupVariableValue(String var, int value) { - logger.debug("[LUA] Call SetGroupVariableValue with {},{}", - var, value); - getSceneScriptManager().getVariables().put(var, value); - return 0; - } - - public LuaValue ChangeGroupVariableValue(String var, int value) { - logger.debug("[LUA] Call ChangeGroupVariableValue with {},{}", - var, value); - - getSceneScriptManager().getVariables().put(var, getSceneScriptManager().getVariables().get(var) + value); - return LuaValue.ZERO; - } - - /** - * Set the actions and triggers to designated group - */ - public int RefreshGroup(LuaTable table) { - logger.debug("[LUA] Call RefreshGroup with {}", - printTable(table)); - // Kill and Respawn? - int groupId = table.get("group_id").toint(); - int suite = table.get("suite").toint(); - - SceneGroup group = getSceneScriptManager().getGroupById(groupId); - - if (group == null || group.monsters == null) { - return 1; - } - - getSceneScriptManager().refreshGroup(group, suite); - - return 0; - } - - public int GetRegionEntityCount(LuaTable table) { - logger.debug("[LUA] Call GetRegionEntityCount with {}", - printTable(table)); - int regionId = table.get("region_eid").toint(); - int entityType = table.get("entity_type").toint(); - - var region = this.getSceneScriptManager().getRegionById(regionId); - - if (region == null) { - return 0; - } - - return (int) region.getEntities().stream().filter(e -> e >> 24 == entityType).count(); - } - - public void PrintContextLog(String msg) { - logger.info("[LUA] " + msg); - } - - public int TowerCountTimeStatus(int isDone, int var2){ - logger.debug("[LUA] Call TowerCountTimeStatus with {},{}", - isDone,var2); - // TODO record time - return 0; - } - public int GetGroupMonsterCount(){ - logger.debug("[LUA] Call GetGroupMonsterCount "); - - return (int) getSceneScriptManager().getScene().getEntities().values().stream() - .filter(e -> e instanceof EntityMonster && - e.getGroupId() == getCurrentGroup().map(sceneGroup -> sceneGroup.id).orElse(-1)) - .count(); - } - public int SetMonsterBattleByGroup(int var1, int var2, int var3){ - logger.debug("[LUA] Call SetMonsterBattleByGroup with {},{},{}", - var1,var2,var3); - // TODO - return 0; - } - - public int CauseDungeonFail(int var1){ - logger.debug("[LUA] Call CauseDungeonFail with {}", - var1); - - return 0; - } - - public int GetGroupVariableValueByGroup(String name, int groupId){ - logger.debug("[LUA] Call GetGroupVariableValueByGroup with {},{}", - name,groupId); - - return getSceneScriptManager().getVariables().getOrDefault(name, 0); - } - - public int SetIsAllowUseSkill(int canUse, int var2){ - logger.debug("[LUA] Call SetIsAllowUseSkill with {},{}", - canUse,var2); - - getSceneScriptManager().getScene().broadcastPacket(new PacketCanUseSkillNotify(canUse == 1)); - return 0; - } - - public int KillEntityByConfigId(LuaTable table){ - logger.debug("[LUA] Call KillEntityByConfigId with {}", - printTable(table)); - var configId = table.get("config_id"); - if(configId == LuaValue.NIL){ - return 1; - } - - var entity = getSceneScriptManager().getScene().getEntityByConfigId(configId.toint()); - if(entity == null){ - return 0; - } - getSceneScriptManager().getScene().killEntity(entity, 0); - return 0; - } - - public int SetGroupVariableValueByGroup(String key, int value, int groupId){ - logger.debug("[LUA] Call SetGroupVariableValueByGroup with {},{},{}", - key,value,groupId); - - getSceneScriptManager().getVariables().put(key, value); - return 0; - } - - public int CreateMonster(LuaTable table){ - logger.debug("[LUA] Call CreateMonster with {}", - printTable(table)); - var configId = table.get("config_id").toint(); - var delayTime = table.get("delay_time").toint(); - - if(getCurrentGroup().isEmpty()){ - return 1; - } - - getSceneScriptManager().spawnMonstersByConfigId(getCurrentGroup().get(), configId, delayTime); - return 0; - } - - public int TowerMirrorTeamSetUp(int team, int var1) { - logger.debug("[LUA] Call TowerMirrorTeamSetUp with {},{}", - team,var1); - - getSceneScriptManager().unloadCurrentMonsterTide(); - getSceneScriptManager().getScene().getPlayers().get(0).getTowerManager().mirrorTeamSetUp(team-1); - - return 0; - } - - public int CreateGadget(LuaTable table){ - logger.debug("[LUA] Call CreateGadget with {}", - printTable(table)); - var configId = table.get("config_id").toint(); - - var group = getCurrentGroup(); - - if (group.isEmpty()) { - return 1; - } - - var gadget = group.get().gadgets.get(configId); - var entity = getSceneScriptManager().createGadget(group.get().id, group.get().block_id, gadget); - - getSceneScriptManager().addEntity(entity); - - return 0; - } - public int CheckRemainGadgetCountByGroupId(LuaTable table){ - logger.debug("[LUA] Call CheckRemainGadgetCountByGroupId with {}", - printTable(table)); - var groupId = table.get("group_id").toint(); - - var count = getSceneScriptManager().getScene().getEntities().values().stream() - .filter(g -> g instanceof EntityGadget entityGadget && entityGadget.getGroupId() == groupId) - .count(); - return (int)count; - } - - public int GetGadgetStateByConfigId(int groupId, int configId){ - logger.debug("[LUA] Call GetGadgetStateByConfigId with {},{}", - groupId, configId); - - if(groupId == 0){ - groupId = getCurrentGroup().get().id; - } - final int realGroupId = groupId; - var gadget = getSceneScriptManager().getScene().getEntities().values().stream() - .filter(g -> g instanceof EntityGadget entityGadget && entityGadget.getGroupId() == realGroupId) - .filter(g -> g.getConfigId() == configId) - .findFirst(); - if(gadget.isEmpty()){ - return 1; - } - return ((EntityGadget)gadget.get()).getState(); - } - - public int MarkPlayerAction(int var1, int var2, int var3, int var4){ - logger.debug("[LUA] Call MarkPlayerAction with {},{},{},{}", - var1, var2,var3,var4); - - return 0; - } - - public int AddQuestProgress(String var1){ - logger.debug("[LUA] Call AddQuestProgress with {}", - var1); - - for(var player : getSceneScriptManager().getScene().getPlayers()){ + public static final Logger logger = LoggerFactory.getLogger(ScriptLib.class); + private final FastThreadLocal sceneScriptManager; + private final FastThreadLocal currentGroup; + + public ScriptLib() { + this.sceneScriptManager = new FastThreadLocal<>(); + this.currentGroup = new FastThreadLocal<>(); + } + + public void removeSceneScriptManager() { + this.sceneScriptManager.remove(); + } + + public SceneScriptManager getSceneScriptManager() { + // normally not null + return Optional.of(sceneScriptManager.get()).get(); + } + + public void setSceneScriptManager(SceneScriptManager sceneScriptManager) { + this.sceneScriptManager.set(sceneScriptManager); + } + + private String printTable(LuaTable table) { + StringBuilder sb = new StringBuilder(); + sb.append("{"); + for (var meta : table.keys()) { + sb.append(meta).append(":").append(table.get(meta)).append(","); + } + sb.append("}"); + return sb.toString(); + } + + public Optional getCurrentGroup() { + return Optional.of(this.currentGroup.get()); + } + + public void setCurrentGroup(SceneGroup currentGroup) { + this.currentGroup.set(currentGroup); + } + + public void removeCurrentGroup() { + this.currentGroup.remove(); + } + + public int SetGadgetStateByConfigId(int configId, int gadgetState) { + logger.debug("[LUA] Call SetGadgetStateByConfigId with {},{}", + configId, gadgetState); + Optional entity = getSceneScriptManager().getScene().getEntities().values().stream() + .filter(e -> e.getConfigId() == configId).findFirst(); + + if (entity.isEmpty()) { + return 1; + } + + if (entity.get() instanceof EntityGadget entityGadget) { + entityGadget.updateState(gadgetState); + return 0; + } + + return 1; + } + + public int SetGroupGadgetStateByConfigId(int groupId, int configId, int gadgetState) { + logger.debug("[LUA] Call SetGroupGadgetStateByConfigId with {},{},{}", + groupId, configId, gadgetState); + + getSceneScriptManager().getScene().getEntities().values().stream() + .filter(e -> e.getGroupId() == groupId) + .filter(e -> e instanceof EntityGadget) + .map(e -> (EntityGadget) e) + .forEach(e -> e.updateState(gadgetState)); + + return 0; + } + + public int SetWorktopOptionsByGroupId(int groupId, int configId, int[] options) { + logger.debug("[LUA] Call SetWorktopOptionsByGroupId with {},{},{}", + groupId, configId, options); + + Optional entity = getSceneScriptManager().getScene().getEntities().values().stream() + .filter(e -> e.getConfigId() == configId && e.getGroupId() == groupId).findFirst(); + + + if (entity.isEmpty() || !(entity.get() instanceof EntityGadget gadget)) { + return 1; + } + + if (!(gadget.getContent() instanceof GadgetWorktop worktop)) { + return 1; + } + + worktop.addWorktopOptions(options); + getSceneScriptManager().getScene().broadcastPacket(new PacketWorktopOptionNotify(gadget)); + + return 0; + } + + public int SetWorktopOptions(LuaTable table) { + logger.debug("[LUA] Call SetWorktopOptions with {}", printTable(table)); + // TODO + return 0; + } + + public int DelWorktopOptionByGroupId(int groupId, int configId, int option) { + logger.debug("[LUA] Call DelWorktopOptionByGroupId with {},{},{}", groupId, configId, option); + + Optional entity = getSceneScriptManager().getScene().getEntities().values().stream() + .filter(e -> e.getConfigId() == configId && e.getGroupId() == groupId).findFirst(); + + if (entity.isEmpty() || !(entity.get() instanceof EntityGadget gadget)) { + return 1; + } + + if (!(gadget.getContent() instanceof GadgetWorktop worktop)) { + return 1; + } + + worktop.removeWorktopOption(option); + getSceneScriptManager().getScene().broadcastPacket(new PacketWorktopOptionNotify(gadget)); + + return 0; + } + + // Some fields are guessed + public int AutoMonsterTide(int challengeIndex, int groupId, Integer[] ordersConfigId, int tideCount, int sceneLimit, int param6) { + logger.debug("[LUA] Call AutoMonsterTide with {},{},{},{},{},{}", + challengeIndex, groupId, ordersConfigId, tideCount, sceneLimit, param6); + + SceneGroup group = getSceneScriptManager().getGroupById(groupId); + + if (group == null || group.monsters == null) { + return 1; + } + + this.getSceneScriptManager().startMonsterTideInGroup(group, ordersConfigId, tideCount, sceneLimit); + + return 0; + } + + public int AddExtraGroupSuite(int groupId, int suite) { + logger.debug("[LUA] Call AddExtraGroupSuite with {},{}", + groupId, suite); + SceneGroup group = getSceneScriptManager().getGroupById(groupId); + + if (group == null || group.monsters == null) { + return 1; + } + var suiteData = group.getSuiteByIndex(suite); + if (suiteData == null) { + return 1; + } + // avoid spawn wrong monster + if (getSceneScriptManager().getScene().getChallenge() != null) + if (!getSceneScriptManager().getScene().getChallenge().inProgress() || + getSceneScriptManager().getScene().getChallenge().getGroup().id != groupId) { + return 0; + } + this.getSceneScriptManager().addGroupSuite(group, suiteData); + + return 0; + } + + public int GoToGroupSuite(int groupId, int suite) { + logger.debug("[LUA] Call GoToGroupSuite with {},{}", + groupId, suite); + SceneGroup group = getSceneScriptManager().getGroupById(groupId); + if (group == null || group.monsters == null) { + return 1; + } + var suiteData = group.getSuiteByIndex(suite); + if (suiteData == null) { + return 1; + } + + for (var suiteItem : group.suites) { + if (suiteData == suiteItem) { + continue; + } + this.getSceneScriptManager().removeGroupSuite(group, suiteItem); + } + this.getSceneScriptManager().addGroupSuite(group, suiteData); + + return 0; + } + + public int RemoveExtraGroupSuite(int groupId, int suite) { + logger.debug("[LUA] Call RemoveExtraGroupSuite with {},{}", + groupId, suite); + + SceneGroup group = getSceneScriptManager().getGroupById(groupId); + if (group == null || group.monsters == null) { + return 1; + } + var suiteData = group.getSuiteByIndex(suite); + if (suiteData == null) { + return 1; + } + + this.getSceneScriptManager().removeGroupSuite(group, suiteData); + + return 0; + } + + public int KillExtraGroupSuite(int groupId, int suite) { + logger.debug("[LUA] Call KillExtraGroupSuite with {},{}", + groupId, suite); + + SceneGroup group = getSceneScriptManager().getGroupById(groupId); + if (group == null || group.monsters == null) { + return 1; + } + var suiteData = group.getSuiteByIndex(suite); + if (suiteData == null) { + return 1; + } + + this.getSceneScriptManager().removeGroupSuite(group, suiteData); + + return 0; + } + + // param3 (probably time limit for timed dungeons) + public int ActiveChallenge(int challengeId, int challengeIndex, int timeLimitOrGroupId, int groupId, int objectiveKills, int param5) { + logger.debug("[LUA] Call ActiveChallenge with {},{},{},{},{},{}", + challengeId, challengeIndex, timeLimitOrGroupId, groupId, objectiveKills, param5); + + var challenge = ChallengeFactory.getChallenge( + challengeId, + challengeIndex, + timeLimitOrGroupId, + groupId, + objectiveKills, + param5, + getSceneScriptManager().getScene(), + getCurrentGroup().get() + ); + + if (challenge == null) { + return 1; + } + + if (challenge instanceof DungeonChallenge dungeonChallenge) { + // set if tower first stage (6-1) + dungeonChallenge.setStage(getSceneScriptManager().getVariables().getOrDefault("stage", -1) == 0); + } + + getSceneScriptManager().getScene().setChallenge(challenge); + challenge.start(); + return 0; + } + + public int GetGroupMonsterCountByGroupId(int groupId) { + logger.debug("[LUA] Call GetGroupMonsterCountByGroupId with {}", + groupId); + return (int) getSceneScriptManager().getScene().getEntities().values().stream() + .filter(e -> e instanceof EntityMonster && e.getGroupId() == groupId) + .count(); + } + + public int GetGroupVariableValue(String var) { + logger.debug("[LUA] Call GetGroupVariableValue with {}", + var); + return getSceneScriptManager().getVariables().getOrDefault(var, 0); + } + + public int SetGroupVariableValue(String var, int value) { + logger.debug("[LUA] Call SetGroupVariableValue with {},{}", + var, value); + getSceneScriptManager().getVariables().put(var, value); + return 0; + } + + public LuaValue ChangeGroupVariableValue(String var, int value) { + logger.debug("[LUA] Call ChangeGroupVariableValue with {},{}", + var, value); + + getSceneScriptManager().getVariables().put(var, getSceneScriptManager().getVariables().get(var) + value); + return LuaValue.ZERO; + } + + /** + * Set the actions and triggers to designated group + */ + public int RefreshGroup(LuaTable table) { + logger.debug("[LUA] Call RefreshGroup with {}", + printTable(table)); + // Kill and Respawn? + int groupId = table.get("group_id").toint(); + int suite = table.get("suite").toint(); + + SceneGroup group = getSceneScriptManager().getGroupById(groupId); + + if (group == null || group.monsters == null) { + return 1; + } + + getSceneScriptManager().refreshGroup(group, suite); + + return 0; + } + + public int GetRegionEntityCount(LuaTable table) { + logger.debug("[LUA] Call GetRegionEntityCount with {}", + printTable(table)); + int regionId = table.get("region_eid").toint(); + int entityType = table.get("entity_type").toint(); + + var region = this.getSceneScriptManager().getRegionById(regionId); + + if (region == null) { + return 0; + } + + return (int) region.getEntities().stream().filter(e -> e >> 24 == entityType).count(); + } + + public void PrintContextLog(String msg) { + logger.info("[LUA] " + msg); + } + + public int TowerCountTimeStatus(int isDone, int var2) { + logger.debug("[LUA] Call TowerCountTimeStatus with {},{}", + isDone, var2); + // TODO record time + return 0; + } + + public int GetGroupMonsterCount() { + logger.debug("[LUA] Call GetGroupMonsterCount "); + + return (int) getSceneScriptManager().getScene().getEntities().values().stream() + .filter(e -> e instanceof EntityMonster && + e.getGroupId() == getCurrentGroup().map(sceneGroup -> sceneGroup.id).orElse(-1)) + .count(); + } + + public int SetMonsterBattleByGroup(int var1, int var2, int var3) { + logger.debug("[LUA] Call SetMonsterBattleByGroup with {},{},{}", + var1, var2, var3); + // TODO + return 0; + } + + public int CauseDungeonFail(int var1) { + logger.debug("[LUA] Call CauseDungeonFail with {}", + var1); + + return 0; + } + + public int GetGroupVariableValueByGroup(String name, int groupId) { + logger.debug("[LUA] Call GetGroupVariableValueByGroup with {},{}", + name, groupId); + + return getSceneScriptManager().getVariables().getOrDefault(name, 0); + } + + public int SetIsAllowUseSkill(int canUse, int var2) { + logger.debug("[LUA] Call SetIsAllowUseSkill with {},{}", + canUse, var2); + + getSceneScriptManager().getScene().broadcastPacket(new PacketCanUseSkillNotify(canUse == 1)); + return 0; + } + + public int KillEntityByConfigId(LuaTable table) { + logger.debug("[LUA] Call KillEntityByConfigId with {}", + printTable(table)); + var configId = table.get("config_id"); + if (configId == LuaValue.NIL) { + return 1; + } + + var entity = getSceneScriptManager().getScene().getEntityByConfigId(configId.toint()); + if (entity == null) { + return 0; + } + getSceneScriptManager().getScene().killEntity(entity, 0); + return 0; + } + + public int SetGroupVariableValueByGroup(String key, int value, int groupId) { + logger.debug("[LUA] Call SetGroupVariableValueByGroup with {},{},{}", + key, value, groupId); + + getSceneScriptManager().getVariables().put(key, value); + return 0; + } + + public int CreateMonster(LuaTable table) { + logger.debug("[LUA] Call CreateMonster with {}", + printTable(table)); + var configId = table.get("config_id").toint(); + var delayTime = table.get("delay_time").toint(); + + if (getCurrentGroup().isEmpty()) { + return 1; + } + + getSceneScriptManager().spawnMonstersByConfigId(getCurrentGroup().get(), configId, delayTime); + return 0; + } + + public int TowerMirrorTeamSetUp(int team, int var1) { + logger.debug("[LUA] Call TowerMirrorTeamSetUp with {},{}", + team, var1); + + getSceneScriptManager().unloadCurrentMonsterTide(); + getSceneScriptManager().getScene().getPlayers().get(0).getTowerManager().mirrorTeamSetUp(team - 1); + + return 0; + } + + public int CreateGadget(LuaTable table) { + logger.debug("[LUA] Call CreateGadget with {}", + printTable(table)); + var configId = table.get("config_id").toint(); + + var group = getCurrentGroup(); + + if (group.isEmpty()) { + return 1; + } + + var gadget = group.get().gadgets.get(configId); + var entity = getSceneScriptManager().createGadget(group.get().id, group.get().block_id, gadget); + + getSceneScriptManager().addEntity(entity); + + return 0; + } + + public int CheckRemainGadgetCountByGroupId(LuaTable table) { + logger.debug("[LUA] Call CheckRemainGadgetCountByGroupId with {}", + printTable(table)); + var groupId = table.get("group_id").toint(); + + var count = getSceneScriptManager().getScene().getEntities().values().stream() + .filter(g -> g instanceof EntityGadget entityGadget && entityGadget.getGroupId() == groupId) + .count(); + return (int) count; + } + + public int GetGadgetStateByConfigId(int groupId, int configId) { + logger.debug("[LUA] Call GetGadgetStateByConfigId with {},{}", + groupId, configId); + + if (groupId == 0) { + groupId = getCurrentGroup().get().id; + } + final int realGroupId = groupId; + var gadget = getSceneScriptManager().getScene().getEntities().values().stream() + .filter(g -> g instanceof EntityGadget entityGadget && entityGadget.getGroupId() == realGroupId) + .filter(g -> g.getConfigId() == configId) + .findFirst(); + if (gadget.isEmpty()) { + return 1; + } + return ((EntityGadget) gadget.get()).getState(); + } + + public int MarkPlayerAction(int var1, int var2, int var3, int var4) { + logger.debug("[LUA] Call MarkPlayerAction with {},{},{},{}", + var1, var2, var3, var4); + + return 0; + } + + public int AddQuestProgress(String var1) { + logger.debug("[LUA] Call AddQuestProgress with {}", + var1); + + for (var player : getSceneScriptManager().getScene().getPlayers()) { player.getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_LUA_NOTIFY, var1); player.getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_LUA_NOTIFY, var1); } - return 0; - } + return 0; + } - /** - * change the state of gadget - */ - public int ChangeGroupGadget(LuaTable table){ - logger.debug("[LUA] Call ChangeGroupGadget with {}", - printTable(table)); - var configId = table.get("config_id").toint(); - var state = table.get("state").toint(); + /** + * change the state of gadget + */ + public int ChangeGroupGadget(LuaTable table) { + logger.debug("[LUA] Call ChangeGroupGadget with {}", + printTable(table)); + var configId = table.get("config_id").toint(); + var state = table.get("state").toint(); - var entity = getSceneScriptManager().getScene().getEntityByConfigId(configId); - if(entity == null){ - return 1; - } + var entity = getSceneScriptManager().getScene().getEntityByConfigId(configId); + if (entity == null) { + return 1; + } - if (entity instanceof EntityGadget entityGadget) { - entityGadget.updateState(state); - return 0; - } + if (entity instanceof EntityGadget entityGadget) { + entityGadget.updateState(state); + return 0; + } - return 1; - } + return 1; + } - public int GetEntityType(int entityId){ + public int GetEntityType(int entityId) { var entity = getSceneScriptManager().getScene().getEntityById(entityId); - if(entity == null){ + if (entity == null) { // check players Player player = DatabaseHelper.getPlayerByUid(entityId); if (player != null) { @@ -529,23 +541,23 @@ public class ScriptLib { return entity.getEntityType(); } - public int GetQuestState(int entityId, int questId){ + public int GetQuestState(int entityId, int questId) { var player = getSceneScriptManager().getScene().getWorld().getHost(); var quest = player.getQuestManager().getQuestById(questId); - if(quest == null){ + if (quest == null) { return QuestState.QUEST_STATE_NONE.getValue(); } return quest.getState().getValue(); } - public int ShowReminder(int reminderId){ + public int ShowReminder(int reminderId) { getSceneScriptManager().getScene().broadcastPacket(new PacketDungeonShowReminderNotify(reminderId)); return 0; } - public int RemoveEntityByConfigId(int groupId, int entityType, int configId){ + public int RemoveEntityByConfigId(int groupId, int entityType, int configId) { logger.debug("[LUA] Call RemoveEntityByConfigId"); var entity = getSceneScriptManager().getScene().getEntities().values().stream() @@ -554,7 +566,7 @@ public class ScriptLib { .filter(e -> e.getConfigId() == configId) .findFirst(); - if(entity.isEmpty()){ + if (entity.isEmpty()) { return 1; } diff --git a/src/main/java/emu/grasscutter/scripts/ScriptLoader.java b/src/main/java/emu/grasscutter/scripts/ScriptLoader.java index 54efe768f..8caac465e 100644 --- a/src/main/java/emu/grasscutter/scripts/ScriptLoader.java +++ b/src/main/java/emu/grasscutter/scripts/ScriptLoader.java @@ -11,7 +11,6 @@ import emu.grasscutter.scripts.serializer.LuaSerializer; import emu.grasscutter.scripts.serializer.Serializer; import emu.grasscutter.utils.FileUtils; import lombok.Getter; - import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.OneArgFunction; @@ -31,19 +30,23 @@ import java.util.concurrent.ConcurrentHashMap; public class ScriptLoader { private static ScriptEngineManager sm; - @Getter private static ScriptEngine engine; + @Getter + private static ScriptEngine engine; private static ScriptEngineFactory factory; - @Getter private static Serializer serializer; - @Getter private static ScriptLib scriptLib; - @Getter private static LuaValue scriptLibLua; + @Getter + private static Serializer serializer; + @Getter + private static ScriptLib scriptLib; + @Getter + private static LuaValue scriptLibLua; /** * suggest GC to remove it if the memory is less */ - private static Map> scriptsCache = new ConcurrentHashMap<>(); + private static final Map> scriptsCache = new ConcurrentHashMap<>(); /** * sceneId - SceneMeta */ - private static Map> sceneMetaCache = new ConcurrentHashMap<>(); + private static final Map> sceneMetaCache = new ConcurrentHashMap<>(); public synchronized static void init() throws Exception { if (sm != null) { @@ -87,7 +90,7 @@ public class ScriptLoader { public static Optional tryGet(SoftReference softReference) { try { return Optional.ofNullable(softReference.get()); - }catch (NullPointerException npe) { + } catch (NullPointerException npe) { return Optional.empty(); } } diff --git a/src/main/java/emu/grasscutter/scripts/ScriptUtils.java b/src/main/java/emu/grasscutter/scripts/ScriptUtils.java index b79fef9d6..0a601c7cd 100644 --- a/src/main/java/emu/grasscutter/scripts/ScriptUtils.java +++ b/src/main/java/emu/grasscutter/scripts/ScriptUtils.java @@ -1,28 +1,27 @@ package emu.grasscutter.scripts; -import java.util.HashMap; - +import emu.grasscutter.Grasscutter; import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; -import emu.grasscutter.Grasscutter; +import java.util.HashMap; public class ScriptUtils { - - public static HashMap toMap(LuaTable table) { - HashMap map = new HashMap<>(); - LuaValue[] rootKeys = table.keys(); - for (LuaValue k : rootKeys) { - if (table.get(k).istable()) { - map.put(k, toMap(table.get(k).checktable())); - } else { - map.put(k, table.get(k)); - } - } - return map; - } - - public static void print(LuaTable table) { - Grasscutter.getLogger().info(toMap(table).toString()); - } + + public static HashMap toMap(LuaTable table) { + HashMap map = new HashMap<>(); + LuaValue[] rootKeys = table.keys(); + for (LuaValue k : rootKeys) { + if (table.get(k).istable()) { + map.put(k, toMap(table.get(k).checktable())); + } else { + map.put(k, table.get(k)); + } + } + return map; + } + + public static void print(LuaTable table) { + Grasscutter.getLogger().info(toMap(table).toString()); + } } diff --git a/src/main/java/emu/grasscutter/scripts/constants/EventType.java b/src/main/java/emu/grasscutter/scripts/constants/EventType.java index 22af9da6e..5e7ad7599 100644 --- a/src/main/java/emu/grasscutter/scripts/constants/EventType.java +++ b/src/main/java/emu/grasscutter/scripts/constants/EventType.java @@ -1,127 +1,127 @@ package emu.grasscutter.scripts.constants; public class EventType { - public static final int EVENT_NONE = 0; - /** - * param1: monster.configId - */ - public static final int EVENT_ANY_MONSTER_DIE = 1; - public static final int EVENT_ANY_GADGET_DIE = 2; - public static final int EVENT_VARIABLE_CHANGE = 3; - public static final int EVENT_ENTER_REGION = 4; - public static final int EVENT_LEAVE_REGION = 5; - public static final int EVENT_GADGET_CREATE = 6; - public static final int EVENT_GADGET_STATE_CHANGE = 7; - public static final int EVENT_DUNGEON_SETTLE = 8; - public static final int EVENT_SELECT_OPTION = 9; - public static final int EVENT_CLIENT_EXECUTE = 10; - public static final int EVENT_ANY_MONSTER_LIVE = 11; - public static final int EVENT_SPECIFIC_MONSTER_HP_CHANGE = 12; - public static final int EVENT_CITY_LEVELUP_UNLOCK_DUNGEON_ENTRY = 13; - public static final int EVENT_DUNGEON_BROADCAST_ONTIMER = 14; - public static final int EVENT_TIMER_EVENT = 15; - public static final int EVENT_CHALLENGE_SUCCESS = 16; - public static final int EVENT_CHALLENGE_FAIL = 17; - public static final int EVENT_SEAL_BATTLE_BEGIN = 18; - public static final int EVENT_SEAL_BATTLE_END = 19; - public static final int EVENT_GATHER = 20; - public static final int EVENT_QUEST_FINISH = 21; - public static final int EVENT_MONSTER_BATTLE = 22; - public static final int EVENT_CITY_LEVELUP = 23; - public static final int EVENT_CUTSCENE_END = 24; - public static final int EVENT_AVATAR_NEAR_PLATFORM = 25; - public static final int EVENT_PLATFORM_REACH_POINT = 26; - public static final int EVENT_UNLOCK_TRANS_POINT = 27; - public static final int EVENT_QUEST_START = 28; - public static final int EVENT_GROUP_LOAD = 29; - public static final int EVENT_GROUP_WILL_UNLOAD = 30; - public static final int EVENT_GROUP_WILL_REFRESH = 31; - public static final int EVENT_GROUP_REFRESH = 32; - public static final int EVENT_DUNGEON_REWARD_GET = 33; - public static final int EVENT_SPECIFIC_GADGET_HP_CHANGE = 34; - public static final int EVENT_MONSTER_TIDE_OVER = 35; - public static final int EVENT_MONSTER_TIDE_CREATE = 36; - public static final int EVENT_MONSTER_TIDE_DIE = 37; - public static final int EVENT_SEALAMP_PHASE_CHANGE = 38; - public static final int EVENT_BLOSSOM_PROGRESS_FINISH = 39; - public static final int EVENT_BLOSSOM_CHEST_DIE = 40; - public static final int EVENT_GADGET_PLAY_START = 41; - public static final int EVENT_GADGET_PLAY_START_CD = 42; - public static final int EVENT_GADGET_PLAY_STOP = 43; - public static final int EVENT_GADGET_LUA_NOTIFY = 44; - public static final int EVENT_MP_PLAY_PREPARE = 45; - public static final int EVENT_MP_PLAY_BATTLE = 46; - public static final int EVENT_MP_PLAY_PREPARE_INTERRUPT = 47; - public static final int EVENT_SELECT_DIFFICULTY = 48; - public static final int EVENT_SCENE_MP_PLAY_BATTLE_STATE = 49; - public static final int EVENT_SCENE_MP_PLAY_BATTLE_STAGE_CHANGE = 50; - public static final int EVENT_SCENE_MP_PLAY_BATTLE_RESULT = 51; - public static final int EVENT_SEAL_BATTLE_PROGRESS_DECREASE = 52; - public static final int EVENT_GENERAL_REWARD_DIE = 53; - public static final int EVENT_SCENE_MP_PLAY_BATTLE_INTERRUPT = 54; - public static final int EVENT_MONSTER_DIE_BEFORE_LEAVE_SCENE = 55; - public static final int EVENT_SCENE_MP_PLAY_OPEN = 56; - public static final int EVENT_OFFERING_LEVELUP = 57; - public static final int EVENT_DUNGEON_REVIVE = 58; - public static final int EVENT_SCENE_MP_PLAY_ALL_AVATAR_DIE = 59; - public static final int EVENT_DUNGEON_ALL_AVATAR_DIE = 60; - public static final int EVENT_GENERAL_REWARD_TAKEN = 61; - public static final int EVENT_PLATFORM_REACH_ARRAYPOINT = 62; - public static final int EVENT_SCENE_MULTISTAGE_PLAY_STAGE_END = 63; - public static final int EVENT_SCENE_MULTISTAGE_PLAY_END_STAGE_REQ = 64; - public static final int EVENT_MECHANICUS_PICKED_CARD = 65; - public static final int EVENT_POOL_MONSTER_TIDE_OVER = 66; - public static final int EVENT_POOL_MONSTER_TIDE_CREATE = 67; - public static final int EVENT_POOL_MONSTER_TIDE_DIE = 68; - public static final int EVENT_DUNGEON_AVATAR_SLIP_DIE = 69; - public static final int EVENT_GALLERY_START = 70; - public static final int EVENT_GALLERY_STOP = 71; - public static final int EVENT_TIME_AXIS_PASS = 72; - public static final int EVENT_FLEUR_FAIR_DUNGEON_ALL_PLAYER_ENTER = 73; - public static final int EVENT_GADGETTALK_DONE = 74; - public static final int EVENT_SET_GAME_TIME = 75; - public static final int EVENT_HIDE_AND_SEEK_PLAYER_QUIT = 76; - public static final int EVENT_AVATAR_DIE = 77; - public static final int EVENT_SCENE_MULTISTAGE_PLAY_STAGE_START = 78; - public static final int EVENT_GALLERY_PROGRESS_PASS = 79; - public static final int EVENT_GALLERY_PROGRESS_EMPTY = 80; - public static final int EVENT_GALLERY_PROGRESS_FULL = 81; - public static final int EVENT_HUNTING_FINISH_FINAL = 82; - public static final int EVENT_USE_WIDGET_TOY_FOX_CAMERA = 83; - public static final int EVENT_LUNA_RITE_SACRIFICE = 84; - public static final int EVENT_SUMO_SWITCH_TEAM_EVENT = 85; - public static final int EVENT_FISHING_START = 86; - public static final int EVENT_FISHING_STOP = 87; - public static final int EVENT_FISHING_QTE_FINISH = 88; - public static final int EVENT_FISHING_TIMEOUT_FLEE = 89; - public static final int EVENT_ROGUE_CELL_STATE_CHANGE = 90; - public static final int EVENT_ROGUE_CELL_CONSTRUCT = 91; - public static final int EVENT_ROGUE_CELL_FINISH_SELECT_CARD = 92; - public static final int EVENT_ANY_MONSTER_CAPTURE = 93; - public static final int EVENT_ACTIVITY_INTERACT_GADGET = 94; - public static final int EVENT_CHALLENGE_PAUSE = 95; - public static final int EVENT_LEVEL_TAG_CHANGE = 96; - public static final int EVENT_CUSTOM_DUNGEON_START = 97; - public static final int EVENT_CUSTOM_DUNGEON_RESTART = 98; - public static final int EVENT_CUSTOM_DUNGEON_REACTIVE = 99; - public static final int EVENT_CUSTOM_DUNGEON_OUT_STUCK = 100; - public static final int EVENT_CUSTOM_DUNGEON_EXIT_TRY = 101; - public static final int EVENT_CUSTOM_DUNGEON_OFFICIAL_RESTART = 102; - public static final int EVENT_ANY_MONSTER_CAPTURE_AND_DISAPPEAR = 103; - public static final int EVENT_MICHIAE_INTERACT = 104; - public static final int EVENT_SELECT_UIINTERACT = 105; - public static final int EVENT_LUA_NOTIFY = 106; - public static final int EVENT_PHOTO_FINISH = 107; - public static final int EVENT_IRODORI_MASTER_READY = 108; - public static final int EVENT_ROGUE_START_FIGHT = 109; - public static final int EVENT_ROGUE_CREAGE_FIGHT_GADGET = 110; - public static final int EVENT_ROGUE_CREAGE_REPAIR_GADGET = 111; - public static final int EVENT_ROGUE_OPEN_ACCESS = 112; - public static final int EVENT_GADGET_GIVING_FINISHED = 113; - public static final int EVENT_OBSERVATION_POINT_NOTIFY = 114; - public static final int EVENT_GADGET_GIVING_TAKEBACK = 115; - public static final int EVENT_ECHO_SHELL_INTERACT = 116; - public static final int EVENT_PLATFORM_ARRIVAL = 2701; - public static final int EVENT_PLAYER_BACK_GALLERY_REVIVE_POINT = 2800; - public static final int EVENT_GALLERY_CANNOT_START_AFTER_COUNTDOWN = 2801; + public static final int EVENT_NONE = 0; + /** + * param1: monster.configId + */ + public static final int EVENT_ANY_MONSTER_DIE = 1; + public static final int EVENT_ANY_GADGET_DIE = 2; + public static final int EVENT_VARIABLE_CHANGE = 3; + public static final int EVENT_ENTER_REGION = 4; + public static final int EVENT_LEAVE_REGION = 5; + public static final int EVENT_GADGET_CREATE = 6; + public static final int EVENT_GADGET_STATE_CHANGE = 7; + public static final int EVENT_DUNGEON_SETTLE = 8; + public static final int EVENT_SELECT_OPTION = 9; + public static final int EVENT_CLIENT_EXECUTE = 10; + public static final int EVENT_ANY_MONSTER_LIVE = 11; + public static final int EVENT_SPECIFIC_MONSTER_HP_CHANGE = 12; + public static final int EVENT_CITY_LEVELUP_UNLOCK_DUNGEON_ENTRY = 13; + public static final int EVENT_DUNGEON_BROADCAST_ONTIMER = 14; + public static final int EVENT_TIMER_EVENT = 15; + public static final int EVENT_CHALLENGE_SUCCESS = 16; + public static final int EVENT_CHALLENGE_FAIL = 17; + public static final int EVENT_SEAL_BATTLE_BEGIN = 18; + public static final int EVENT_SEAL_BATTLE_END = 19; + public static final int EVENT_GATHER = 20; + public static final int EVENT_QUEST_FINISH = 21; + public static final int EVENT_MONSTER_BATTLE = 22; + public static final int EVENT_CITY_LEVELUP = 23; + public static final int EVENT_CUTSCENE_END = 24; + public static final int EVENT_AVATAR_NEAR_PLATFORM = 25; + public static final int EVENT_PLATFORM_REACH_POINT = 26; + public static final int EVENT_UNLOCK_TRANS_POINT = 27; + public static final int EVENT_QUEST_START = 28; + public static final int EVENT_GROUP_LOAD = 29; + public static final int EVENT_GROUP_WILL_UNLOAD = 30; + public static final int EVENT_GROUP_WILL_REFRESH = 31; + public static final int EVENT_GROUP_REFRESH = 32; + public static final int EVENT_DUNGEON_REWARD_GET = 33; + public static final int EVENT_SPECIFIC_GADGET_HP_CHANGE = 34; + public static final int EVENT_MONSTER_TIDE_OVER = 35; + public static final int EVENT_MONSTER_TIDE_CREATE = 36; + public static final int EVENT_MONSTER_TIDE_DIE = 37; + public static final int EVENT_SEALAMP_PHASE_CHANGE = 38; + public static final int EVENT_BLOSSOM_PROGRESS_FINISH = 39; + public static final int EVENT_BLOSSOM_CHEST_DIE = 40; + public static final int EVENT_GADGET_PLAY_START = 41; + public static final int EVENT_GADGET_PLAY_START_CD = 42; + public static final int EVENT_GADGET_PLAY_STOP = 43; + public static final int EVENT_GADGET_LUA_NOTIFY = 44; + public static final int EVENT_MP_PLAY_PREPARE = 45; + public static final int EVENT_MP_PLAY_BATTLE = 46; + public static final int EVENT_MP_PLAY_PREPARE_INTERRUPT = 47; + public static final int EVENT_SELECT_DIFFICULTY = 48; + public static final int EVENT_SCENE_MP_PLAY_BATTLE_STATE = 49; + public static final int EVENT_SCENE_MP_PLAY_BATTLE_STAGE_CHANGE = 50; + public static final int EVENT_SCENE_MP_PLAY_BATTLE_RESULT = 51; + public static final int EVENT_SEAL_BATTLE_PROGRESS_DECREASE = 52; + public static final int EVENT_GENERAL_REWARD_DIE = 53; + public static final int EVENT_SCENE_MP_PLAY_BATTLE_INTERRUPT = 54; + public static final int EVENT_MONSTER_DIE_BEFORE_LEAVE_SCENE = 55; + public static final int EVENT_SCENE_MP_PLAY_OPEN = 56; + public static final int EVENT_OFFERING_LEVELUP = 57; + public static final int EVENT_DUNGEON_REVIVE = 58; + public static final int EVENT_SCENE_MP_PLAY_ALL_AVATAR_DIE = 59; + public static final int EVENT_DUNGEON_ALL_AVATAR_DIE = 60; + public static final int EVENT_GENERAL_REWARD_TAKEN = 61; + public static final int EVENT_PLATFORM_REACH_ARRAYPOINT = 62; + public static final int EVENT_SCENE_MULTISTAGE_PLAY_STAGE_END = 63; + public static final int EVENT_SCENE_MULTISTAGE_PLAY_END_STAGE_REQ = 64; + public static final int EVENT_MECHANICUS_PICKED_CARD = 65; + public static final int EVENT_POOL_MONSTER_TIDE_OVER = 66; + public static final int EVENT_POOL_MONSTER_TIDE_CREATE = 67; + public static final int EVENT_POOL_MONSTER_TIDE_DIE = 68; + public static final int EVENT_DUNGEON_AVATAR_SLIP_DIE = 69; + public static final int EVENT_GALLERY_START = 70; + public static final int EVENT_GALLERY_STOP = 71; + public static final int EVENT_TIME_AXIS_PASS = 72; + public static final int EVENT_FLEUR_FAIR_DUNGEON_ALL_PLAYER_ENTER = 73; + public static final int EVENT_GADGETTALK_DONE = 74; + public static final int EVENT_SET_GAME_TIME = 75; + public static final int EVENT_HIDE_AND_SEEK_PLAYER_QUIT = 76; + public static final int EVENT_AVATAR_DIE = 77; + public static final int EVENT_SCENE_MULTISTAGE_PLAY_STAGE_START = 78; + public static final int EVENT_GALLERY_PROGRESS_PASS = 79; + public static final int EVENT_GALLERY_PROGRESS_EMPTY = 80; + public static final int EVENT_GALLERY_PROGRESS_FULL = 81; + public static final int EVENT_HUNTING_FINISH_FINAL = 82; + public static final int EVENT_USE_WIDGET_TOY_FOX_CAMERA = 83; + public static final int EVENT_LUNA_RITE_SACRIFICE = 84; + public static final int EVENT_SUMO_SWITCH_TEAM_EVENT = 85; + public static final int EVENT_FISHING_START = 86; + public static final int EVENT_FISHING_STOP = 87; + public static final int EVENT_FISHING_QTE_FINISH = 88; + public static final int EVENT_FISHING_TIMEOUT_FLEE = 89; + public static final int EVENT_ROGUE_CELL_STATE_CHANGE = 90; + public static final int EVENT_ROGUE_CELL_CONSTRUCT = 91; + public static final int EVENT_ROGUE_CELL_FINISH_SELECT_CARD = 92; + public static final int EVENT_ANY_MONSTER_CAPTURE = 93; + public static final int EVENT_ACTIVITY_INTERACT_GADGET = 94; + public static final int EVENT_CHALLENGE_PAUSE = 95; + public static final int EVENT_LEVEL_TAG_CHANGE = 96; + public static final int EVENT_CUSTOM_DUNGEON_START = 97; + public static final int EVENT_CUSTOM_DUNGEON_RESTART = 98; + public static final int EVENT_CUSTOM_DUNGEON_REACTIVE = 99; + public static final int EVENT_CUSTOM_DUNGEON_OUT_STUCK = 100; + public static final int EVENT_CUSTOM_DUNGEON_EXIT_TRY = 101; + public static final int EVENT_CUSTOM_DUNGEON_OFFICIAL_RESTART = 102; + public static final int EVENT_ANY_MONSTER_CAPTURE_AND_DISAPPEAR = 103; + public static final int EVENT_MICHIAE_INTERACT = 104; + public static final int EVENT_SELECT_UIINTERACT = 105; + public static final int EVENT_LUA_NOTIFY = 106; + public static final int EVENT_PHOTO_FINISH = 107; + public static final int EVENT_IRODORI_MASTER_READY = 108; + public static final int EVENT_ROGUE_START_FIGHT = 109; + public static final int EVENT_ROGUE_CREAGE_FIGHT_GADGET = 110; + public static final int EVENT_ROGUE_CREAGE_REPAIR_GADGET = 111; + public static final int EVENT_ROGUE_OPEN_ACCESS = 112; + public static final int EVENT_GADGET_GIVING_FINISHED = 113; + public static final int EVENT_OBSERVATION_POINT_NOTIFY = 114; + public static final int EVENT_GADGET_GIVING_TAKEBACK = 115; + public static final int EVENT_ECHO_SHELL_INTERACT = 116; + public static final int EVENT_PLATFORM_ARRIVAL = 2701; + public static final int EVENT_PLAYER_BACK_GALLERY_REVIVE_POINT = 2800; + public static final int EVENT_GALLERY_CANNOT_START_AFTER_COUNTDOWN = 2801; } diff --git a/src/main/java/emu/grasscutter/scripts/constants/ScriptGadgetState.java b/src/main/java/emu/grasscutter/scripts/constants/ScriptGadgetState.java index a36340ab6..187299a01 100644 --- a/src/main/java/emu/grasscutter/scripts/constants/ScriptGadgetState.java +++ b/src/main/java/emu/grasscutter/scripts/constants/ScriptGadgetState.java @@ -1,24 +1,24 @@ package emu.grasscutter.scripts.constants; public class ScriptGadgetState { - public static final int Default = 0; - public static final int GatherDrop = 1; - public static final int ChestLocked = 101; - public static final int ChestOpened = 102; - public static final int ChestTrap = 103; - public static final int ChestBramble = 104; - public static final int ChestFrozen = 105; - public static final int ChestRock = 106; - public static final int GearStart = 201; - public static final int GearStop = 202; - public static final int GearAction1 = 203; - public static final int GearAction2 = 204; - public static final int CrystalResonate1 = 301; - public static final int CrystalResonate2 = 302; - public static final int CrystalExplode = 303; - public static final int CrystalDrain = 304; - public static final int StatueActive = 401; - public static final int Action01 = 901; - public static final int Action02 = 902; - public static final int Action03 = 903; + public static final int Default = 0; + public static final int GatherDrop = 1; + public static final int ChestLocked = 101; + public static final int ChestOpened = 102; + public static final int ChestTrap = 103; + public static final int ChestBramble = 104; + public static final int ChestFrozen = 105; + public static final int ChestRock = 106; + public static final int GearStart = 201; + public static final int GearStop = 202; + public static final int GearAction1 = 203; + public static final int GearAction2 = 204; + public static final int CrystalResonate1 = 301; + public static final int CrystalResonate2 = 302; + public static final int CrystalExplode = 303; + public static final int CrystalDrain = 304; + public static final int StatueActive = 401; + public static final int Action01 = 901; + public static final int Action02 = 902; + public static final int Action03 = 903; } diff --git a/src/main/java/emu/grasscutter/scripts/constants/ScriptRegionShape.java b/src/main/java/emu/grasscutter/scripts/constants/ScriptRegionShape.java index 67ee3510f..31e1f7f63 100644 --- a/src/main/java/emu/grasscutter/scripts/constants/ScriptRegionShape.java +++ b/src/main/java/emu/grasscutter/scripts/constants/ScriptRegionShape.java @@ -1,9 +1,9 @@ package emu.grasscutter.scripts.constants; public class ScriptRegionShape { - public static final int NONE = 0; - public static final int SPHERE = 1; - public static final int CUBIC = 2; - public static final int CYLINDER = 3; - public static final int POLYGON = 4; + public static final int NONE = 0; + public static final int SPHERE = 1; + public static final int CUBIC = 2; + public static final int CYLINDER = 3; + public static final int POLYGON = 4; } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneBlock.java b/src/main/java/emu/grasscutter/scripts/data/SceneBlock.java index b5bfdca2f..772a71030 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneBlock.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneBlock.java @@ -13,7 +13,6 @@ import lombok.ToString; import javax.script.Bindings; import javax.script.CompiledScript; import javax.script.ScriptException; - import java.util.Map; import java.util.stream.Collectors; @@ -25,7 +24,7 @@ public class SceneBlock { public Position min; public int sceneId; - public Map groups; + public Map groups; public RTree sceneGroupIndex; private transient boolean loaded; // Not an actual variable in the scripts either @@ -39,8 +38,8 @@ public class SceneBlock { } public boolean contains(Position pos) { - return pos.getX() <= this.max.getX() && pos.getX() >= this.min.getX() && - pos.getZ() <= this.max.getZ() && pos.getZ() >= this.min.getZ(); + return pos.getX() <= this.max.getX() && pos.getX() >= this.min.getX() && + pos.getZ() <= this.max.getZ() && pos.getZ() >= this.min.getZ(); } public SceneBlock load(int sceneId, Bindings bindings) { @@ -62,7 +61,7 @@ public class SceneBlock { // Set groups this.groups = ScriptLoader.getSerializer().toList(SceneGroup.class, bindings.get("groups")).stream() - .collect(Collectors.toMap(x -> x.id, y -> y, (a, b) -> a)); + .collect(Collectors.toMap(x -> x.id, y -> y, (a, b) -> a)); this.groups.values().forEach(g -> g.block_id = this.id); this.sceneGroupIndex = SceneIndexManager.buildIndex(3, this.groups.values(), g -> g.pos.toPoint()); diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneBusiness.java b/src/main/java/emu/grasscutter/scripts/data/SceneBusiness.java index f03011e09..2609f9b5d 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneBusiness.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneBusiness.java @@ -6,5 +6,5 @@ import lombok.ToString; @ToString @Setter public class SceneBusiness { - public int type; + public int type; } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneConfig.java b/src/main/java/emu/grasscutter/scripts/data/SceneConfig.java index cba2be8bd..f152df6d0 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneConfig.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneConfig.java @@ -7,9 +7,9 @@ import lombok.ToString; @ToString @Setter public class SceneConfig { - public Position vision_anchor; - public Position born_pos; - public Position born_rot; - public Position begin_pos; - public Position size; + public Position vision_anchor; + public Position born_pos; + public Position born_rot; + public Position begin_pos; + public Position size; } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneGadget.java b/src/main/java/emu/grasscutter/scripts/data/SceneGadget.java index 132cc6b7b..108fa7100 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneGadget.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneGadget.java @@ -5,7 +5,7 @@ import lombok.ToString; @ToString @Setter -public class SceneGadget extends SceneObject{ +public class SceneGadget extends SceneObject { public int gadget_id; public int state; public int point_type; diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneGarbage.java b/src/main/java/emu/grasscutter/scripts/data/SceneGarbage.java index 19f98984e..268941c3a 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneGarbage.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneGarbage.java @@ -1,12 +1,12 @@ package emu.grasscutter.scripts.data; -import java.util.List; - import lombok.Setter; import lombok.ToString; +import java.util.List; + @ToString @Setter public class SceneGarbage { - public List gadgets; + public List gadgets; } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneGroup.java b/src/main/java/emu/grasscutter/scripts/data/SceneGroup.java index 93527bbc4..08697e985 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneGroup.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneGroup.java @@ -10,7 +10,6 @@ import org.luaj.vm2.LuaValue; import javax.script.Bindings; import javax.script.CompiledScript; import javax.script.ScriptException; - import java.util.List; import java.util.Map; import java.util.Optional; @@ -25,7 +24,7 @@ public class SceneGroup { public int refresh_id; public Position pos; - public Map monsters; // + public Map monsters; // public Map gadgets; // public Map triggers; public Map regions; @@ -39,6 +38,7 @@ public class SceneGroup { private transient boolean loaded; // Not an actual variable in the scripts either private transient CompiledScript script; private transient Bindings bindings; + public static SceneGroup of(int groupId) { var group = new SceneGroup(); group.id = groupId; @@ -96,15 +96,15 @@ public class SceneGroup { // Set this.monsters = ScriptLoader.getSerializer().toList(SceneMonster.class, this.bindings.get("monsters")).stream() - .collect(Collectors.toMap(x -> x.config_id, y -> y, (a, b) -> a)); + .collect(Collectors.toMap(x -> x.config_id, y -> y, (a, b) -> a)); this.monsters.values().forEach(m -> m.group = this); this.gadgets = ScriptLoader.getSerializer().toList(SceneGadget.class, this.bindings.get("gadgets")).stream() - .collect(Collectors.toMap(x -> x.config_id, y -> y, (a, b) -> a)); + .collect(Collectors.toMap(x -> x.config_id, y -> y, (a, b) -> a)); this.gadgets.values().forEach(m -> m.group = this); this.triggers = ScriptLoader.getSerializer().toList(SceneTrigger.class, this.bindings.get("triggers")).stream() - .collect(Collectors.toMap(x -> x.name, y -> y, (a, b) -> a)); + .collect(Collectors.toMap(x -> x.name, y -> y, (a, b) -> a)); this.triggers.values().forEach(t -> t.currentGroup = this); this.suites = ScriptLoader.getSerializer().toList(SceneSuite.class, this.bindings.get("suites")); @@ -140,9 +140,9 @@ public class SceneGroup { public Optional searchBossChestInGroup() { return this.gadgets.values().stream() - .filter(g -> g.boss_chest != null && g.boss_chest.monster_config_id > 0) - .map(g -> g.boss_chest) - .findFirst(); + .filter(g -> g.boss_chest != null && g.boss_chest.monster_config_id > 0) + .map(g -> g.boss_chest) + .findFirst(); } } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneInitConfig.java b/src/main/java/emu/grasscutter/scripts/data/SceneInitConfig.java index 267f0e227..307989b33 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneInitConfig.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneInitConfig.java @@ -6,7 +6,7 @@ import lombok.ToString; @ToString @Setter public class SceneInitConfig { - public int suite; - public int end_suite; - public boolean rand_suite; + public int suite; + public int end_suite; + public boolean rand_suite; } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneMeta.java b/src/main/java/emu/grasscutter/scripts/data/SceneMeta.java index 4153c9ec2..878d9bea1 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneMeta.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneMeta.java @@ -11,7 +11,6 @@ import lombok.ToString; import javax.script.Bindings; import javax.script.CompiledScript; import javax.script.ScriptException; - import java.util.List; import java.util.Map; import java.util.stream.Collectors; diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneMonster.java b/src/main/java/emu/grasscutter/scripts/data/SceneMonster.java index 3856883c2..3fa718b71 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneMonster.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneMonster.java @@ -5,10 +5,10 @@ import lombok.ToString; @ToString @Setter -public class SceneMonster extends SceneObject{ - public int monster_id; - public int pose_id; - public int drop_id; +public class SceneMonster extends SceneObject { + public int monster_id; + public int pose_id; + public int drop_id; public int special_name_id; public String drop_tag; public int climate_area_id; diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneNPC.java b/src/main/java/emu/grasscutter/scripts/data/SceneNPC.java index 97f3f79dd..1dfb44211 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneNPC.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneNPC.java @@ -5,6 +5,6 @@ import lombok.ToString; @ToString @Setter -public class SceneNPC extends SceneObject{ - public int npc_id; -} \ No newline at end of file +public class SceneNPC extends SceneObject { + public int npc_id; +} diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneRegion.java b/src/main/java/emu/grasscutter/scripts/data/SceneRegion.java index 595957322..978a0fd7c 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneRegion.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneRegion.java @@ -21,18 +21,19 @@ public class SceneRegion { public List point_array; public transient SceneGroup group; + public boolean contains(Position position) { switch (shape) { case ScriptRegionShape.CUBIC: return (Math.abs(pos.getX() - position.getX()) <= size.getX()) && - (Math.abs(pos.getY() - position.getY()) <= size.getY()) && - (Math.abs(pos.getZ() - position.getZ()) <= size.getZ()); + (Math.abs(pos.getY() - position.getY()) <= size.getY()) && + (Math.abs(pos.getZ() - position.getZ()) <= size.getZ()); case ScriptRegionShape.SPHERE: var x = Math.pow(pos.getX() - position.getX(), 2); var y = Math.pow(pos.getY() - position.getY(), 2); var z = Math.pow(pos.getZ() - position.getZ(), 2); // ^ means XOR in java! - return x + y + z <= (radius*radius); + return x + y + z <= (radius * radius); } return false; } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneSuite.java b/src/main/java/emu/grasscutter/scripts/data/SceneSuite.java index d1309ee83..593970cbd 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneSuite.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneSuite.java @@ -1,29 +1,29 @@ package emu.grasscutter.scripts.data; -import java.util.ArrayList; -import java.util.List; - import lombok.Setter; import lombok.ToString; +import java.util.ArrayList; +import java.util.List; + @ToString @Setter public class SceneSuite { // make it refer the default empty list to avoid NPE caused by some group - public List monsters = List.of(); - public List gadgets = List.of(); - public List triggers = List.of(); + public List monsters = List.of(); + public List gadgets = List.of(); + public List triggers = List.of(); public List regions = List.of(); public int rand_weight; public int[] npcs; - public transient List sceneMonsters = List.of(); - public transient List sceneGadgets = List.of(); - public transient List sceneTriggers = List.of(); + public transient List sceneMonsters = List.of(); + public transient List sceneGadgets = List.of(); + public transient List sceneTriggers = List.of(); public transient List sceneRegions = List.of(); public void init(SceneGroup sceneGroup) { - if(sceneGroup.monsters != null && this.monsters != null){ + if (sceneGroup.monsters != null && this.monsters != null) { this.sceneMonsters = new ArrayList<>( this.monsters.stream() .filter(sceneGroup.monsters::containsKey) @@ -32,7 +32,7 @@ public class SceneSuite { ); } - if(sceneGroup.gadgets != null && this.gadgets != null){ + if (sceneGroup.gadgets != null && this.gadgets != null) { this.sceneGadgets = new ArrayList<>( this.gadgets.stream() .filter(sceneGroup.gadgets::containsKey) @@ -41,7 +41,7 @@ public class SceneSuite { ); } - if(sceneGroup.triggers != null && this.triggers != null) { + if (sceneGroup.triggers != null && this.triggers != null) { this.sceneTriggers = new ArrayList<>( this.triggers.stream() .filter(sceneGroup.triggers::containsKey) @@ -49,7 +49,7 @@ public class SceneSuite { .toList() ); } - if(sceneGroup.regions != null && this.regions != null) { + if (sceneGroup.regions != null && this.regions != null) { this.sceneRegions = new ArrayList<>( this.regions.stream() .filter(sceneGroup.regions::containsKey) diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneTrigger.java b/src/main/java/emu/grasscutter/scripts/data/SceneTrigger.java index 88e2e0891..10da92dc7 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneTrigger.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneTrigger.java @@ -4,41 +4,42 @@ import lombok.Setter; @Setter public class SceneTrigger { - public String name; - public int config_id; - public int event; - public String source; - public String condition; - public String action; + public String name; + public int config_id; + public int event; + public String source; + public String condition; + public String action; public boolean forbid_guest; public int trigger_count; public String tlog_tag; - public transient SceneGroup currentGroup; - @Override - public boolean equals(Object obj) { - if(obj instanceof SceneTrigger sceneTrigger){ - return this.name.equals(sceneTrigger.name); - } - return super.equals(obj); - } + public transient SceneGroup currentGroup; - @Override - public int hashCode() { - return name.hashCode(); - } + @Override + public boolean equals(Object obj) { + if (obj instanceof SceneTrigger sceneTrigger) { + return this.name.equals(sceneTrigger.name); + } + return super.equals(obj); + } - @Override - public String toString() { - return "SceneTrigger{" + - "name='" + name + '\'' + - ", config_id=" + config_id + - ", event=" + event + - ", source='" + source + '\'' + - ", condition='" + condition + '\'' + - ", action='" + action + '\'' + - ", forbid_guest='" + forbid_guest + '\'' + - ", trigger_count='" + trigger_count + '\'' + - '}'; - } + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public String toString() { + return "SceneTrigger{" + + "name='" + name + '\'' + + ", config_id=" + config_id + + ", event=" + event + + ", source='" + source + '\'' + + ", condition='" + condition + '\'' + + ", action='" + action + '\'' + + ", forbid_guest='" + forbid_guest + '\'' + + ", trigger_count='" + trigger_count + '\'' + + '}'; + } } diff --git a/src/main/java/emu/grasscutter/scripts/data/SceneVar.java b/src/main/java/emu/grasscutter/scripts/data/SceneVar.java index a95f78304..5e9fb4d4c 100644 --- a/src/main/java/emu/grasscutter/scripts/data/SceneVar.java +++ b/src/main/java/emu/grasscutter/scripts/data/SceneVar.java @@ -6,8 +6,8 @@ import lombok.ToString; @ToString @Setter public class SceneVar { - public String name; - public int value; - public boolean no_refresh; + public String name; + public int value; + public boolean no_refresh; public int configId; } diff --git a/src/main/java/emu/grasscutter/scripts/data/ScriptArgs.java b/src/main/java/emu/grasscutter/scripts/data/ScriptArgs.java index daa5e0342..92143bae6 100644 --- a/src/main/java/emu/grasscutter/scripts/data/ScriptArgs.java +++ b/src/main/java/emu/grasscutter/scripts/data/ScriptArgs.java @@ -1,59 +1,60 @@ package emu.grasscutter.scripts.data; public class ScriptArgs { - public int param1; - public int param2; - public int param3; - public int source_eid; // Source entity + public int param1; + public int param2; + public int param3; + public int source_eid; // Source entity public int target_eid; - public ScriptArgs() { - } + public ScriptArgs() { - public ScriptArgs(int param1) { - this.param1 = param1; - } + } - public ScriptArgs(int param1, int param2) { - this.param1 = param1; - this.param2 = param2; - } + public ScriptArgs(int param1) { + this.param1 = param1; + } - public int getParam1() { - return param1; - } + public ScriptArgs(int param1, int param2) { + this.param1 = param1; + this.param2 = param2; + } - public ScriptArgs setParam1(int param1) { - this.param1 = param1; - return this; - } + public int getParam1() { + return param1; + } - public int getParam2() { - return param2; - } + public ScriptArgs setParam1(int param1) { + this.param1 = param1; + return this; + } - public ScriptArgs setParam2(int param2) { - this.param2 = param2; - return this; - } + public int getParam2() { + return param2; + } - public int getParam3() { - return param3; - } + public ScriptArgs setParam2(int param2) { + this.param2 = param2; + return this; + } - public ScriptArgs setParam3(int param3) { - this.param3 = param3; - return this; - } + public int getParam3() { + return param3; + } - public int getSourceEntityId() { - return source_eid; - } + public ScriptArgs setParam3(int param3) { + this.param3 = param3; + return this; + } - public ScriptArgs setSourceEntityId(int source_eid) { - this.source_eid = source_eid; - return this; - } + public int getSourceEntityId() { + return source_eid; + } + + public ScriptArgs setSourceEntityId(int source_eid) { + this.source_eid = source_eid; + return this; + } public int getTargetEntityId() { return target_eid; diff --git a/src/main/java/emu/grasscutter/scripts/serializer/LuaSerializer.java b/src/main/java/emu/grasscutter/scripts/serializer/LuaSerializer.java index f6b7fb4e7..4498c1615 100644 --- a/src/main/java/emu/grasscutter/scripts/serializer/LuaSerializer.java +++ b/src/main/java/emu/grasscutter/scripts/serializer/LuaSerializer.java @@ -35,8 +35,8 @@ public class LuaSerializer implements Serializer { return serializeMap(type, (LuaTable) obj); } - private Map serializeMap(Class type, LuaTable table) { - Map map = new HashMap<>(); + private Map serializeMap(Class type, LuaTable table) { + Map map = new HashMap<>(); if (table == null) { return map; @@ -65,7 +65,7 @@ public class LuaSerializer implements Serializer { } if (object != null) { - map.put(String.valueOf(k),object); + map.put(String.valueOf(k), object); } } catch (Exception ex) { @@ -197,21 +197,21 @@ public class LuaSerializer implements Serializer { var methodNameSet = new HashSet<>(Arrays.stream(methodAccess.getMethodNames()).toList()); Arrays.stream(type.getDeclaredFields()) - .filter(field -> methodNameSet.contains(getSetterName(field.getName()))) - .forEach(field -> { - var setter = getSetterName(field.getName()); - var index = methodAccess.getIndex(setter); - fieldMetaMap.put(field.getName(), new FieldMeta(field.getName(), setter, index, field.getType())); - }); + .filter(field -> methodNameSet.contains(getSetterName(field.getName()))) + .forEach(field -> { + var setter = getSetterName(field.getName()); + var index = methodAccess.getIndex(setter); + fieldMetaMap.put(field.getName(), new FieldMeta(field.getName(), setter, index, field.getType())); + }); Arrays.stream(type.getFields()) - .filter(field -> !fieldMetaMap.containsKey(field.getName())) - .filter(field -> methodNameSet.contains(getSetterName(field.getName()))) - .forEach(field -> { - var setter = getSetterName(field.getName()); - var index = methodAccess.getIndex(setter); - fieldMetaMap.put(field.getName(), new FieldMeta(field.getName(), setter, index, field.getType())); - }); + .filter(field -> !fieldMetaMap.containsKey(field.getName())) + .filter(field -> methodNameSet.contains(getSetterName(field.getName()))) + .forEach(field -> { + var setter = getSetterName(field.getName()); + var index = methodAccess.getIndex(setter); + fieldMetaMap.put(field.getName(), new FieldMeta(field.getName(), setter, index, field.getType())); + }); fieldMetaCache.put(type, fieldMetaMap); return fieldMetaMap; @@ -230,7 +230,7 @@ public class LuaSerializer implements Serializer { @Data @AllArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE) - static class FieldMeta{ + static class FieldMeta { String name; String setter; int index; diff --git a/src/main/java/emu/grasscutter/scripts/serializer/Serializer.java b/src/main/java/emu/grasscutter/scripts/serializer/Serializer.java index b5e11eaf6..d9ea2d6ec 100644 --- a/src/main/java/emu/grasscutter/scripts/serializer/Serializer.java +++ b/src/main/java/emu/grasscutter/scripts/serializer/Serializer.java @@ -6,9 +6,9 @@ import java.util.Map; public interface Serializer { - public List toList(Class type, Object obj); + List toList(Class type, Object obj); - public T toObject(Class type, Object obj); + T toObject(Class type, Object obj); - public Map toMap(Class type, Object obj); + Map toMap(Class type, Object obj); } diff --git a/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterSpawnService.java b/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterSpawnService.java index c4ceedc89..df5d4d3bc 100644 --- a/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterSpawnService.java +++ b/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterSpawnService.java @@ -1,13 +1,7 @@ package emu.grasscutter.scripts.service; -import emu.grasscutter.data.GameData; -import emu.grasscutter.data.excels.MonsterData; -import emu.grasscutter.data.excels.WorldLevelData; import emu.grasscutter.game.entity.EntityMonster; import emu.grasscutter.scripts.SceneScriptManager; -import emu.grasscutter.scripts.constants.EventType; -import emu.grasscutter.scripts.data.SceneMonster; -import emu.grasscutter.scripts.data.ScriptArgs; import emu.grasscutter.scripts.listener.ScriptMonsterListener; import java.util.ArrayList; @@ -15,28 +9,31 @@ import java.util.List; public class ScriptMonsterSpawnService { - private final SceneScriptManager sceneScriptManager; public final List onMonsterCreatedListener = new ArrayList<>(); - public final List onMonsterDeadListener = new ArrayList<>(); + private final SceneScriptManager sceneScriptManager; - public ScriptMonsterSpawnService(SceneScriptManager sceneScriptManager){ + public ScriptMonsterSpawnService(SceneScriptManager sceneScriptManager) { this.sceneScriptManager = sceneScriptManager; } - public void addMonsterCreatedListener(ScriptMonsterListener scriptMonsterListener){ + public void addMonsterCreatedListener(ScriptMonsterListener scriptMonsterListener) { onMonsterCreatedListener.add(scriptMonsterListener); } - public void addMonsterDeadListener(ScriptMonsterListener scriptMonsterListener){ + + public void addMonsterDeadListener(ScriptMonsterListener scriptMonsterListener) { onMonsterDeadListener.add(scriptMonsterListener); } - public void removeMonsterCreatedListener(ScriptMonsterListener scriptMonsterListener){ + + public void removeMonsterCreatedListener(ScriptMonsterListener scriptMonsterListener) { onMonsterCreatedListener.remove(scriptMonsterListener); } - public void removeMonsterDeadListener(ScriptMonsterListener scriptMonsterListener){ + + public void removeMonsterDeadListener(ScriptMonsterListener scriptMonsterListener) { onMonsterDeadListener.remove(scriptMonsterListener); } - public void onMonsterDead(EntityMonster entityMonster){ + + public void onMonsterDead(EntityMonster entityMonster) { onMonsterDeadListener.forEach(l -> l.onNotify(entityMonster)); } diff --git a/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterTideService.java b/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterTideService.java index 831548716..e093fdf0f 100644 --- a/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterTideService.java +++ b/src/main/java/emu/grasscutter/scripts/service/ScriptMonsterTideService.java @@ -20,11 +20,11 @@ public class ScriptMonsterTideService { private final AtomicInteger monsterKillCount; private final int monsterSceneLimit; private final ConcurrentLinkedQueue monsterConfigOrders; - private final OnMonsterCreated onMonsterCreated= new OnMonsterCreated(); - private final OnMonsterDead onMonsterDead= new OnMonsterDead(); + private final OnMonsterCreated onMonsterCreated = new OnMonsterCreated(); + private final OnMonsterDead onMonsterDead = new OnMonsterDead(); public ScriptMonsterTideService(SceneScriptManager sceneScriptManager, - SceneGroup group, int tideCount, int monsterSceneLimit, Integer[] ordersConfigId){ + SceneGroup group, int tideCount, int monsterSceneLimit, Integer[] ordersConfigId) { this.sceneScriptManager = sceneScriptManager; this.currentGroup = group; this.monsterSceneLimit = monsterSceneLimit; @@ -41,25 +41,30 @@ public class ScriptMonsterTideService { } } - public class OnMonsterCreated implements ScriptMonsterListener{ - @Override - public void onNotify(EntityMonster sceneMonster) { - if(monsterSceneLimit > 0){ - monsterAlive.incrementAndGet(); - monsterTideCount.decrementAndGet(); - } - } - } - - public SceneMonster getNextMonster(){ + public SceneMonster getNextMonster() { var nextId = this.monsterConfigOrders.poll(); - if(currentGroup.monsters.containsKey(nextId)){ + if (currentGroup.monsters.containsKey(nextId)) { return currentGroup.monsters.get(nextId); } // TODO some monster config_id do not exist in groups, so temporarily set it to the first return currentGroup.monsters.values().stream().findFirst().orElse(null); } + public void unload() { + this.sceneScriptManager.getScriptMonsterSpawnService().removeMonsterCreatedListener(onMonsterCreated); + this.sceneScriptManager.getScriptMonsterSpawnService().removeMonsterDeadListener(onMonsterDead); + } + + public class OnMonsterCreated implements ScriptMonsterListener { + @Override + public void onNotify(EntityMonster sceneMonster) { + if (monsterSceneLimit > 0) { + monsterAlive.incrementAndGet(); + monsterTideCount.decrementAndGet(); + } + } + } + public class OnMonsterDead implements ScriptMonsterListener { @Override public void onNotify(EntityMonster sceneMonster) { @@ -81,9 +86,4 @@ public class ScriptMonsterTideService { } } - - public void unload(){ - this.sceneScriptManager.getScriptMonsterSpawnService().removeMonsterCreatedListener(onMonsterCreated); - this.sceneScriptManager.getScriptMonsterSpawnService().removeMonsterDeadListener(onMonsterDead); - } } diff --git a/src/main/java/emu/grasscutter/server/event/Event.java b/src/main/java/emu/grasscutter/server/event/Event.java index bea7dd66f..8e32ed78f 100644 --- a/src/main/java/emu/grasscutter/server/event/Event.java +++ b/src/main/java/emu/grasscutter/server/event/Event.java @@ -19,7 +19,7 @@ public abstract class Event { * Cancels the event if possible. */ public void cancel() { - if(this instanceof Cancellable) + if (this instanceof Cancellable) this.cancelled = true; } diff --git a/src/main/java/emu/grasscutter/server/event/EventHandler.java b/src/main/java/emu/grasscutter/server/event/EventHandler.java index 4bd1bf044..00bd2ace0 100644 --- a/src/main/java/emu/grasscutter/server/event/EventHandler.java +++ b/src/main/java/emu/grasscutter/server/event/EventHandler.java @@ -9,13 +9,14 @@ public final class EventHandler { private EventConsumer listener; private HandlerPriority priority; private boolean handleCanceled; - + public EventHandler(Class eventClass) { this.eventClass = eventClass; } /** * Gets which event this handler is handling. + * * @return An event class. */ public Class handles() { @@ -24,6 +25,7 @@ public final class EventHandler { /** * Returns the callback for the handler. + * * @return A consumer callback. */ public EventConsumer getCallback() { @@ -32,6 +34,7 @@ public final class EventHandler { /** * Returns the handler's priority. + * * @return The priority of the handler. */ public HandlerPriority getPriority() { @@ -40,6 +43,7 @@ public final class EventHandler { /** * Returns if the handler will ignore cancelled events. + * * @return The ignore cancelled state. */ public boolean ignoresCanceled() { @@ -48,29 +52,35 @@ public final class EventHandler { /** * Sets the callback method for when the event is invoked. + * * @param listener An event handler method. * @return Method chaining. */ public EventHandler listener(EventConsumer listener) { - this.listener = listener; return this; + this.listener = listener; + return this; } /** * Changes the handler's priority in handling events. + * * @param priority The priority of the handler. * @return Method chaining. */ public EventHandler priority(HandlerPriority priority) { - this.priority = priority; return this; + this.priority = priority; + return this; } /** * Sets if the handler will ignore cancelled events. + * * @param ignore If the handler should ignore cancelled events. * @return Method chaining. */ public EventHandler ignore(boolean ignore) { - this.handleCanceled = ignore; return this; + this.handleCanceled = ignore; + return this; } /** @@ -79,4 +89,4 @@ public final class EventHandler { public void register(Plugin plugin) { Grasscutter.getPluginManager().registerListener(plugin, this); } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/server/event/dispatch/QueryAllRegionsEvent.java b/src/main/java/emu/grasscutter/server/event/dispatch/QueryAllRegionsEvent.java index bb4864692..937f9f8f7 100644 --- a/src/main/java/emu/grasscutter/server/event/dispatch/QueryAllRegionsEvent.java +++ b/src/main/java/emu/grasscutter/server/event/dispatch/QueryAllRegionsEvent.java @@ -4,18 +4,18 @@ import emu.grasscutter.server.event.types.ServerEvent; public final class QueryAllRegionsEvent extends ServerEvent { private String regionList; - + public QueryAllRegionsEvent(String regionList) { super(Type.DISPATCH); - + this.regionList = regionList; } - - public void setRegionList(String regionList) { - this.regionList = regionList; - } - + public String getRegionList() { return this.regionList; } + + public void setRegionList(String regionList) { + this.regionList = regionList; + } } diff --git a/src/main/java/emu/grasscutter/server/event/dispatch/QueryCurrentRegionEvent.java b/src/main/java/emu/grasscutter/server/event/dispatch/QueryCurrentRegionEvent.java index d963d74a7..6ae59362d 100644 --- a/src/main/java/emu/grasscutter/server/event/dispatch/QueryCurrentRegionEvent.java +++ b/src/main/java/emu/grasscutter/server/event/dispatch/QueryCurrentRegionEvent.java @@ -11,11 +11,11 @@ public final class QueryCurrentRegionEvent extends ServerEvent { this.regionInfo = regionInfo; } - public void setRegionInfo(String regionInfo) { - this.regionInfo = regionInfo; - } - public String getRegionInfo() { return this.regionInfo; } + + public void setRegionInfo(String regionInfo) { + this.regionInfo = regionInfo; + } } diff --git a/src/main/java/emu/grasscutter/server/event/entity/EntityDamageEvent.java b/src/main/java/emu/grasscutter/server/event/entity/EntityDamageEvent.java index 9c5a4c033..58eb802da 100644 --- a/src/main/java/emu/grasscutter/server/event/entity/EntityDamageEvent.java +++ b/src/main/java/emu/grasscutter/server/event/entity/EntityDamageEvent.java @@ -7,8 +7,9 @@ import emu.grasscutter.server.event.types.EntityEvent; import javax.annotation.Nullable; public final class EntityDamageEvent extends EntityEvent implements Cancellable { + @Nullable + private final GameEntity damager; private float damage; - @Nullable private final GameEntity damager; public EntityDamageEvent(GameEntity entity, float damage, @Nullable GameEntity damager) { super(entity); diff --git a/src/main/java/emu/grasscutter/server/event/entity/EntityDeathEvent.java b/src/main/java/emu/grasscutter/server/event/entity/EntityDeathEvent.java index 91e64386e..ead999907 100644 --- a/src/main/java/emu/grasscutter/server/event/entity/EntityDeathEvent.java +++ b/src/main/java/emu/grasscutter/server/event/entity/EntityDeathEvent.java @@ -8,8 +8,11 @@ import lombok.Getter; import javax.annotation.Nullable; public final class EntityDeathEvent extends EntityEvent { - @Getter private final Location deathLocation; - @Getter @Nullable private final GameEntity killer; + @Getter + private final Location deathLocation; + @Getter + @Nullable + private final GameEntity killer; public EntityDeathEvent(GameEntity entity, int killerId) { super(entity); diff --git a/src/main/java/emu/grasscutter/server/event/game/PlayerCreationEvent.java b/src/main/java/emu/grasscutter/server/event/game/PlayerCreationEvent.java index 2049f4661..24cf09235 100644 --- a/src/main/java/emu/grasscutter/server/event/game/PlayerCreationEvent.java +++ b/src/main/java/emu/grasscutter/server/event/game/PlayerCreationEvent.java @@ -7,21 +7,21 @@ import emu.grasscutter.server.game.GameSession; public final class PlayerCreationEvent extends GameEvent { private final GameSession session; private Class playerClass; - + public PlayerCreationEvent(GameSession session, Class playerClass) { this.session = session; this.playerClass = playerClass; } - + public GameSession getSession() { return this.session; } - - public void setPlayerClass(Class playerClass) { - this.playerClass = playerClass; - } - + public Class getPlayerClass() { return this.playerClass; } + + public void setPlayerClass(Class playerClass) { + this.playerClass = playerClass; + } } diff --git a/src/main/java/emu/grasscutter/server/event/game/ReceiveCommandFeedbackEvent.java b/src/main/java/emu/grasscutter/server/event/game/ReceiveCommandFeedbackEvent.java index 734f891ea..31a6a33c8 100644 --- a/src/main/java/emu/grasscutter/server/event/game/ReceiveCommandFeedbackEvent.java +++ b/src/main/java/emu/grasscutter/server/event/game/ReceiveCommandFeedbackEvent.java @@ -18,16 +18,16 @@ public final class ReceiveCommandFeedbackEvent extends ServerEvent implements Ca this.message = message; } - public void setMessage(String message) { - this.message = message; - } - public String getMessage() { return this.message; } + public void setMessage(String message) { + this.message = message; + } + @Nullable public Player getPlayer() { return this.player; } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/server/event/game/ReceivePacketEvent.java b/src/main/java/emu/grasscutter/server/event/game/ReceivePacketEvent.java index e64a6305d..4f21297cf 100644 --- a/src/main/java/emu/grasscutter/server/event/game/ReceivePacketEvent.java +++ b/src/main/java/emu/grasscutter/server/event/game/ReceivePacketEvent.java @@ -8,28 +8,28 @@ public final class ReceivePacketEvent extends ServerEvent implements Cancellable private final GameSession gameSession; private final int packetId; private byte[] packetData; - + public ReceivePacketEvent(GameSession gameSession, int packetId, byte[] packetData) { super(Type.GAME); - + this.gameSession = gameSession; this.packetId = packetId; this.packetData = packetData; } - + public GameSession getGameSession() { return this.gameSession; } - + public int getPacketId() { return this.packetId; } - - public void setPacketData(byte[] packetData) { - this.packetData = packetData; - } - + public byte[] getPacketData() { return this.packetData; } + + public void setPacketData(byte[] packetData) { + this.packetData = packetData; + } } diff --git a/src/main/java/emu/grasscutter/server/event/game/SendPacketEvent.java b/src/main/java/emu/grasscutter/server/event/game/SendPacketEvent.java index e5dd4982c..7a6125ba7 100644 --- a/src/main/java/emu/grasscutter/server/event/game/SendPacketEvent.java +++ b/src/main/java/emu/grasscutter/server/event/game/SendPacketEvent.java @@ -20,11 +20,11 @@ public final class SendPacketEvent extends ServerEvent implements Cancellable { return this.gameSession; } - public void setPacket(BasePacket packet) { - this.packet = packet; - } - public BasePacket getPacket() { return this.packet; } + + public void setPacket(BasePacket packet) { + this.packet = packet; + } } diff --git a/src/main/java/emu/grasscutter/server/event/game/ServerTickEvent.java b/src/main/java/emu/grasscutter/server/event/game/ServerTickEvent.java index 8839dd5e5..1762997de 100644 --- a/src/main/java/emu/grasscutter/server/event/game/ServerTickEvent.java +++ b/src/main/java/emu/grasscutter/server/event/game/ServerTickEvent.java @@ -1,6 +1,7 @@ package emu.grasscutter.server.event.game; import emu.grasscutter.server.event.types.ServerEvent; + import java.time.Instant; public final class ServerTickEvent extends ServerEvent { @@ -20,4 +21,4 @@ public final class ServerTickEvent extends ServerEvent { public Instant getTickEnd() { return this.end; } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/server/event/internal/ServerStartEvent.java b/src/main/java/emu/grasscutter/server/event/internal/ServerStartEvent.java index 3a050d750..31294d96c 100644 --- a/src/main/java/emu/grasscutter/server/event/internal/ServerStartEvent.java +++ b/src/main/java/emu/grasscutter/server/event/internal/ServerStartEvent.java @@ -6,13 +6,13 @@ import java.time.OffsetDateTime; public final class ServerStartEvent extends ServerEvent { private final OffsetDateTime startTime; - + public ServerStartEvent(Type type, OffsetDateTime startTime) { super(type); - + this.startTime = startTime; } - + public OffsetDateTime getStartTime() { return this.startTime; } diff --git a/src/main/java/emu/grasscutter/server/event/player/PlayerQuitEvent.java b/src/main/java/emu/grasscutter/server/event/player/PlayerQuitEvent.java index 4ac1b2f3b..b2d4b382a 100644 --- a/src/main/java/emu/grasscutter/server/event/player/PlayerQuitEvent.java +++ b/src/main/java/emu/grasscutter/server/event/player/PlayerQuitEvent.java @@ -1,7 +1,6 @@ package emu.grasscutter.server.event.player; import emu.grasscutter.game.player.Player; -import emu.grasscutter.server.event.types.GameEvent; import emu.grasscutter.server.event.types.PlayerEvent; public final class PlayerQuitEvent extends PlayerEvent { diff --git a/src/main/java/emu/grasscutter/server/event/player/PlayerReceiveMailEvent.java b/src/main/java/emu/grasscutter/server/event/player/PlayerReceiveMailEvent.java index c38740ae4..c008a9783 100644 --- a/src/main/java/emu/grasscutter/server/event/player/PlayerReceiveMailEvent.java +++ b/src/main/java/emu/grasscutter/server/event/player/PlayerReceiveMailEvent.java @@ -7,18 +7,18 @@ import emu.grasscutter.server.event.types.PlayerEvent; public final class PlayerReceiveMailEvent extends PlayerEvent implements Cancellable { private Mail message; - + public PlayerReceiveMailEvent(Player player, Mail message) { super(player); - + this.message = message; } - - public void setMessage(Mail message) { - this.message = message; - } - + public Mail getMessage() { return this.message; } + + public void setMessage(Mail message) { + this.message = message; + } } diff --git a/src/main/java/emu/grasscutter/server/event/player/PlayerTeamDeathEvent.java b/src/main/java/emu/grasscutter/server/event/player/PlayerTeamDeathEvent.java index a10bce01d..2a2f98603 100644 --- a/src/main/java/emu/grasscutter/server/event/player/PlayerTeamDeathEvent.java +++ b/src/main/java/emu/grasscutter/server/event/player/PlayerTeamDeathEvent.java @@ -10,7 +10,8 @@ import lombok.Getter; * To listen for one player death, use {@link emu.grasscutter.server.event.entity.EntityDeathEvent}. */ public final class PlayerTeamDeathEvent extends PlayerEvent { - @Getter private final EntityAvatar selectedAvatar; + @Getter + private final EntityAvatar selectedAvatar; public PlayerTeamDeathEvent(Player player, EntityAvatar selectedAvatar) { super(player); diff --git a/src/main/java/emu/grasscutter/server/event/player/PlayerUseFoodEvent.java b/src/main/java/emu/grasscutter/server/event/player/PlayerUseFoodEvent.java index 8a3aa15a3..9ab9678a7 100644 --- a/src/main/java/emu/grasscutter/server/event/player/PlayerUseFoodEvent.java +++ b/src/main/java/emu/grasscutter/server/event/player/PlayerUseFoodEvent.java @@ -12,8 +12,11 @@ import lombok.Setter; * This event is invoked when the player uses food on an avatar. */ public final class PlayerUseFoodEvent extends PlayerEvent implements Cancellable { - @Getter @Setter private ItemData foodUsed; - @Getter private final EntityAvatar selectedAvatar; + @Getter + private final EntityAvatar selectedAvatar; + @Getter + @Setter + private ItemData foodUsed; public PlayerUseFoodEvent(Player player, ItemData foodUsed, EntityAvatar selectedAvatar) { super(player); diff --git a/src/main/java/emu/grasscutter/server/event/types/GameEvent.java b/src/main/java/emu/grasscutter/server/event/types/GameEvent.java index 61c8daa73..aabd64427 100644 --- a/src/main/java/emu/grasscutter/server/event/types/GameEvent.java +++ b/src/main/java/emu/grasscutter/server/event/types/GameEvent.java @@ -6,5 +6,5 @@ import emu.grasscutter.server.event.Event; * An event that is related to the game. */ public abstract class GameEvent extends Event { - -} \ No newline at end of file + +} diff --git a/src/main/java/emu/grasscutter/server/event/types/ServerEvent.java b/src/main/java/emu/grasscutter/server/event/types/ServerEvent.java index 5191bbf22..5cf0d41f6 100644 --- a/src/main/java/emu/grasscutter/server/event/types/ServerEvent.java +++ b/src/main/java/emu/grasscutter/server/event/types/ServerEvent.java @@ -7,15 +7,15 @@ import emu.grasscutter.server.event.Event; */ public abstract class ServerEvent extends Event { protected final Type type; - + public ServerEvent(Type type) { this.type = type; } - + public Type getServerType() { return this.type; } - + public enum Type { DISPATCH, GAME diff --git a/src/main/java/emu/grasscutter/server/game/GameServer.java b/src/main/java/emu/grasscutter/server/game/GameServer.java index 09e4e3475..6396804fb 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServer.java +++ b/src/main/java/emu/grasscutter/server/game/GameServer.java @@ -28,10 +28,10 @@ import emu.grasscutter.game.world.World; import emu.grasscutter.game.world.WorldDataSystem; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; -import emu.grasscutter.server.event.types.ServerEvent; import emu.grasscutter.server.event.game.ServerTickEvent; import emu.grasscutter.server.event.internal.ServerStartEvent; import emu.grasscutter.server.event.internal.ServerStopEvent; +import emu.grasscutter.server.event.types.ServerEvent; import emu.grasscutter.server.scheduler.ServerTaskScheduler; import emu.grasscutter.task.TaskMap; import kcp.highway.ChannelConfig; @@ -44,7 +44,7 @@ import java.time.OffsetDateTime; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -import static emu.grasscutter.config.Configuration.*; +import static emu.grasscutter.config.Configuration.GAME_INFO; import static emu.grasscutter.utils.Language.translate; @Getter @@ -90,7 +90,7 @@ public final class GameServer extends KcpServer { channelConfig.setUseConvChannel(true); channelConfig.setAckNoDelay(false); - this.init(GameSessionManager.getListener(),channelConfig,address); + this.init(GameSessionManager.getListener(), channelConfig, address); DungeonChallenge.initialize(); EnergyManager.initialize(); @@ -131,6 +131,19 @@ public final class GameServer extends KcpServer { Runtime.getRuntime().addShutdownHook(new Thread(this::onServerShutdown)); } + private static InetSocketAddress getAdapterInetSocketAddress() { + InetSocketAddress inetSocketAddress; + if (GAME_INFO.bindAddress.equals("")) { + inetSocketAddress = new InetSocketAddress(GAME_INFO.bindPort); + } else { + inetSocketAddress = new InetSocketAddress( + GAME_INFO.bindAddress, + GAME_INFO.bindPort + ); + } + return inetSocketAddress; + } + @Deprecated public ChatSystemHandler getChatManager() { return chatManager; @@ -149,19 +162,6 @@ public final class GameServer extends KcpServer { this.chatManager = chatManager; } - private static InetSocketAddress getAdapterInetSocketAddress() { - InetSocketAddress inetSocketAddress; - if (GAME_INFO.bindAddress.equals("")) { - inetSocketAddress=new InetSocketAddress(GAME_INFO.bindPort); - }else { - inetSocketAddress=new InetSocketAddress( - GAME_INFO.bindAddress, - GAME_INFO.bindPort - ); - } - return inetSocketAddress; - } - public void registerPlayer(Player player) { getPlayers().put(player.getUid(), player); } @@ -261,7 +261,8 @@ public final class GameServer extends KcpServer { } public void onServerShutdown() { - ServerStopEvent event = new ServerStopEvent(ServerEvent.Type.GAME, OffsetDateTime.now()); event.call(); + ServerStopEvent event = new ServerStopEvent(ServerEvent.Type.GAME, OffsetDateTime.now()); + event.call(); // Kick and save all players List list = new ArrayList<>(this.getPlayers().size()); diff --git a/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java b/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java index 260dc84b8..9fee490d4 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java +++ b/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java @@ -1,21 +1,19 @@ package emu.grasscutter.server.game; -import static emu.grasscutter.config.Configuration.*; - -import java.util.Set; - -import emu.grasscutter.game.Account; -import emu.grasscutter.server.event.game.ReceivePacketEvent; -import org.reflections.Reflections; - import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter.ServerDebugMode; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.server.event.game.ReceivePacketEvent; import emu.grasscutter.server.game.GameSession.SessionState; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.reflections.Reflections; + +import java.util.Set; + +import static emu.grasscutter.config.Configuration.GAME_INFO; @SuppressWarnings("unchecked") public class GameServerPacketHandler { diff --git a/src/main/java/emu/grasscutter/server/game/GameSession.java b/src/main/java/emu/grasscutter/server/game/GameSession.java index 3788b8f62..da51b3baa 100644 --- a/src/main/java/emu/grasscutter/server/game/GameSession.java +++ b/src/main/java/emu/grasscutter/server/game/GameSession.java @@ -1,9 +1,5 @@ package emu.grasscutter.server.game; -import java.io.File; -import java.net.InetSocketAddress; -import java.nio.file.Path; - import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter.ServerDebugMode; import emu.grasscutter.game.Account; @@ -20,21 +16,34 @@ import io.netty.buffer.Unpooled; import lombok.Getter; import lombok.Setter; -import static emu.grasscutter.config.Configuration.*; +import java.io.File; +import java.net.InetSocketAddress; +import java.nio.file.Path; + +import static emu.grasscutter.config.Configuration.GAME_INFO; +import static emu.grasscutter.config.Configuration.SERVER; import static emu.grasscutter.utils.Language.translate; public class GameSession implements GameSessionManager.KcpChannel { private final GameServer server; private GameSessionManager.KcpTunnel tunnel; - @Getter @Setter private Account account; - @Getter private Player player; + @Getter + @Setter + private Account account; + @Getter + private Player player; - @Setter private boolean useSecretKey; - @Getter @Setter private SessionState state; + @Setter + private boolean useSecretKey; + @Getter + @Setter + private SessionState state; - @Getter private int clientTime; - @Getter private long lastPingTime; + @Getter + private int clientTime; + @Getter + private long lastPingTime; private int lastClientSeq = 10; public GameSession(GameServer server) { diff --git a/src/main/java/emu/grasscutter/server/game/GameSessionManager.java b/src/main/java/emu/grasscutter/server/game/GameSessionManager.java index ed8762938..62b4b717c 100644 --- a/src/main/java/emu/grasscutter/server/game/GameSessionManager.java +++ b/src/main/java/emu/grasscutter/server/game/GameSessionManager.java @@ -1,110 +1,115 @@ -package emu.grasscutter.server.game; - -import java.net.InetSocketAddress; -import java.util.concurrent.ConcurrentHashMap; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.utils.Crypto; -import emu.grasscutter.utils.Utils; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import io.netty.channel.DefaultEventLoop; -import kcp.highway.KcpListener; -import kcp.highway.Ukcp; - -public class GameSessionManager { - private static final DefaultEventLoop logicThread = new DefaultEventLoop(); - private static final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); - private static final KcpListener listener = new KcpListener(){ - @Override - public void onConnected(Ukcp ukcp) { - int times = 0; - GameServer server = Grasscutter.getGameServer(); - while (server==null){//Waiting server to establish - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - ukcp.close(); - return; - } - if(times++>5){ - Grasscutter.getLogger().error("Service is not available!"); - ukcp.close(); - return; - } - server = Grasscutter.getGameServer(); - } - GameSession conversation = new GameSession(server); - conversation.onConnected(new KcpTunnel(){ - @Override - public InetSocketAddress getAddress() { - return ukcp.user().getRemoteAddress(); - } - - @Override - public void writeData(byte[] bytes) { - ByteBuf buf = Unpooled.wrappedBuffer(bytes); - ukcp.write(buf); - buf.release(); - } - - @Override - public void close() { - ukcp.close(); - } - - @Override - public int getSrtt() { - return ukcp.srtt(); - } - }); - sessions.put(ukcp,conversation); - } - - @Override - public void handleReceive(ByteBuf buf, Ukcp kcp) { - byte[] byteData = Utils.byteBufToArray(buf); - logicThread.execute(() -> { - try { - GameSession conversation = sessions.get(kcp); - if(conversation!=null) { - conversation.handleReceive(byteData); - } - }catch (Exception e){ - e.printStackTrace(); - } - }); - } - - @Override - public void handleException(Throwable ex, Ukcp ukcp) { - - } - - @Override - public void handleClose(Ukcp ukcp) { - GameSession conversation = sessions.get(ukcp); - if(conversation!=null) { - conversation.handleClose(); - sessions.remove(ukcp); - } - } - }; - - public static KcpListener getListener() { - return listener; - } - - interface KcpTunnel{ - InetSocketAddress getAddress(); - void writeData(byte[] bytes); - void close(); - int getSrtt(); - } - interface KcpChannel{ - void onConnected(KcpTunnel tunnel); - void handleClose(); - void handleReceive(byte[] bytes); - } -} +package emu.grasscutter.server.game; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.utils.Utils; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.channel.DefaultEventLoop; +import kcp.highway.KcpListener; +import kcp.highway.Ukcp; + +import java.net.InetSocketAddress; +import java.util.concurrent.ConcurrentHashMap; + +public class GameSessionManager { + private static final DefaultEventLoop logicThread = new DefaultEventLoop(); + private static final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); + private static final KcpListener listener = new KcpListener() { + @Override + public void onConnected(Ukcp ukcp) { + int times = 0; + GameServer server = Grasscutter.getGameServer(); + while (server == null) {//Waiting server to establish + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + ukcp.close(); + return; + } + if (times++ > 5) { + Grasscutter.getLogger().error("Service is not available!"); + ukcp.close(); + return; + } + server = Grasscutter.getGameServer(); + } + GameSession conversation = new GameSession(server); + conversation.onConnected(new KcpTunnel() { + @Override + public InetSocketAddress getAddress() { + return ukcp.user().getRemoteAddress(); + } + + @Override + public void writeData(byte[] bytes) { + ByteBuf buf = Unpooled.wrappedBuffer(bytes); + ukcp.write(buf); + buf.release(); + } + + @Override + public void close() { + ukcp.close(); + } + + @Override + public int getSrtt() { + return ukcp.srtt(); + } + }); + sessions.put(ukcp, conversation); + } + + @Override + public void handleReceive(ByteBuf buf, Ukcp kcp) { + byte[] byteData = Utils.byteBufToArray(buf); + logicThread.execute(() -> { + try { + GameSession conversation = sessions.get(kcp); + if (conversation != null) { + conversation.handleReceive(byteData); + } + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + + @Override + public void handleException(Throwable ex, Ukcp ukcp) { + + } + + @Override + public void handleClose(Ukcp ukcp) { + GameSession conversation = sessions.get(ukcp); + if (conversation != null) { + conversation.handleClose(); + sessions.remove(ukcp); + } + } + }; + + public static KcpListener getListener() { + return listener; + } + + interface KcpTunnel { + InetSocketAddress getAddress(); + + void writeData(byte[] bytes); + + void close(); + + int getSrtt(); + } + + interface KcpChannel { + void onConnected(KcpTunnel tunnel); + + void handleClose(); + + void handleReceive(byte[] bytes); + } +} diff --git a/src/main/java/emu/grasscutter/server/http/HttpServer.java b/src/main/java/emu/grasscutter/server/http/HttpServer.java index 2678d8f04..010cf198c 100644 --- a/src/main/java/emu/grasscutter/server/http/HttpServer.java +++ b/src/main/java/emu/grasscutter/server/http/HttpServer.java @@ -4,9 +4,7 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter.ServerDebugMode; import emu.grasscutter.utils.FileUtils; import io.javalin.Javalin; -import io.javalin.core.util.JavalinLogger; import io.javalin.http.ContentType; - import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.util.ssl.SslContextFactory; @@ -53,13 +51,14 @@ public final class HttpServer { /** * Creates an HTTP(S) server. + * * @return A server instance. */ @SuppressWarnings("resource") private static Server createServer() { Server server = new Server(); ServerConnector serverConnector - = new ServerConnector(server); + = new ServerConnector(server); if (HTTP_ENCRYPTION.useEncryption) { var sslContextFactory = new SslContextFactory.Server(); @@ -97,6 +96,7 @@ public final class HttpServer { /** * Returns the handle for the Express application. + * * @return A Javalin instance. */ public Javalin getHandle() { @@ -105,6 +105,7 @@ public final class HttpServer { /** * Initializes the provided class. + * * @param router The router class. * @return Method chaining. */ @@ -121,18 +122,20 @@ public final class HttpServer { routerInstance.applyRoutes(this.javalin); // Apply routes. } catch (Exception exception) { Grasscutter.getLogger().warn(translate("messages.dispatch.router_error"), exception); - } return this; + } + return this; } /** * Starts listening on the HTTP server. + * * @throws UnsupportedEncodingException */ public void start() throws UnsupportedEncodingException { // Attempt to start the HTTP server. if (HTTP_INFO.bindAddress.equals("")) { this.javalin.start(HTTP_INFO.bindPort); - }else { + } else { this.javalin.start(HTTP_INFO.bindAddress, HTTP_INFO.bindPort); } @@ -144,21 +147,22 @@ public final class HttpServer { * Handles the '/' (index) endpoint on the Express application. */ public static class DefaultRequestRouter implements Router { - @Override public void applyRoutes(Javalin javalin) { + @Override + public void applyRoutes(Javalin javalin) { javalin.get("/", ctx -> { // Send file File file = new File(HTTP_STATIC_FILES.indexFile); if (!file.exists()) { ctx.contentType(ContentType.TEXT_HTML); ctx.result(""" - - - - - - %s - - """.formatted(translate("messages.status.welcome"))); + + + + + + %s + + """.formatted(translate("messages.status.welcome"))); } else { var filePath = file.getPath(); ContentType fromExtension = ContentType.getContentTypeByExtension(filePath.substring(filePath.lastIndexOf(".") + 1)); @@ -173,7 +177,8 @@ public final class HttpServer { * Handles unhandled endpoints on the Express application. */ public static class UnhandledRequestRouter implements Router { - @Override public void applyRoutes(Javalin javalin) { + @Override + public void applyRoutes(Javalin javalin) { javalin.error(404, ctx -> { // Error log if (DISPATCH_INFO.logRequests == ServerDebugMode.MISSING) @@ -183,17 +188,17 @@ public final class HttpServer { if (!file.exists()) { ctx.contentType(ContentType.TEXT_HTML); ctx.result(""" - - - - - + + + + + - - - - - """); + + + + + """); } else { var filePath = file.getPath(); ContentType fromExtension = ContentType.getContentTypeByExtension(filePath.substring(filePath.lastIndexOf(".") + 1)); diff --git a/src/main/java/emu/grasscutter/server/http/Router.java b/src/main/java/emu/grasscutter/server/http/Router.java index 7388856b3..22811de7c 100644 --- a/src/main/java/emu/grasscutter/server/http/Router.java +++ b/src/main/java/emu/grasscutter/server/http/Router.java @@ -10,18 +10,20 @@ public interface Router { /** * Called when the router is initialized by Express. + * * @param javalin A Javalin instance. */ void applyRoutes(Javalin javalin); /** * Applies this handler to all endpoint types + * * @param javalin A Javalin instance. * @param path * @param ctx * @return The Javalin instance. */ - public default Javalin allRoutes(Javalin javalin, String path, Handler ctx) { + default Javalin allRoutes(Javalin javalin, String path, Handler ctx) { javalin.get(path, ctx); javalin.post(path, ctx); javalin.put(path, ctx); diff --git a/src/main/java/emu/grasscutter/server/http/dispatch/DispatchHandler.java b/src/main/java/emu/grasscutter/server/http/dispatch/DispatchHandler.java index 5bf9f579d..09dcb2ec7 100644 --- a/src/main/java/emu/grasscutter/server/http/dispatch/DispatchHandler.java +++ b/src/main/java/emu/grasscutter/server/http/dispatch/DispatchHandler.java @@ -4,8 +4,10 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.auth.AuthenticationSystem; import emu.grasscutter.auth.OAuthAuthenticator.ClientType; import emu.grasscutter.server.http.Router; -import emu.grasscutter.server.http.objects.*; +import emu.grasscutter.server.http.objects.ComboTokenReqJson; import emu.grasscutter.server.http.objects.ComboTokenReqJson.LoginTokenData; +import emu.grasscutter.server.http.objects.LoginAccountRequestJson; +import emu.grasscutter.server.http.objects.LoginTokenRequestJson; import emu.grasscutter.utils.JsonUtils; import io.javalin.Javalin; import io.javalin.http.Context; @@ -16,43 +18,6 @@ import static emu.grasscutter.utils.Language.translate; * Handles requests related to authentication. (aka dispatch) */ public final class DispatchHandler implements Router { - @Override public void applyRoutes(Javalin javalin) { - // OS - // Username & Password login (from client). - javalin.post("/hk4e_global/mdk/shield/api/login", DispatchHandler::clientLogin); - // Cached token login (from registry). - javalin.post("/hk4e_global/mdk/shield/api/verify", DispatchHandler::tokenLogin); - // Combo token login (from session key). - javalin.post("/hk4e_global/combo/granter/login/v2/login", DispatchHandler::sessionKeyLogin); - - // CN - // Username & Password login (from client). - javalin.post("/hk4e_cn/mdk/shield/api/login", DispatchHandler::clientLogin); - // Cached token login (from registry). - javalin.post("/hk4e_cn/mdk/shield/api/verify", DispatchHandler::tokenLogin); - // Combo token login (from session key). - javalin.post("/hk4e_cn/combo/granter/login/v2/login", DispatchHandler::sessionKeyLogin); - - // External login (from other clients). - javalin.get("/authentication/type", ctx -> ctx.result(Grasscutter.getAuthenticationSystem().getClass().getSimpleName())); - javalin.post("/authentication/login", ctx -> Grasscutter.getAuthenticationSystem().getExternalAuthenticator() - .handleLogin(AuthenticationSystem.fromExternalRequest(ctx))); - javalin.post("/authentication/register", ctx -> Grasscutter.getAuthenticationSystem().getExternalAuthenticator() - .handleAccountCreation(AuthenticationSystem.fromExternalRequest(ctx))); - javalin.post("/authentication/change_password", ctx -> Grasscutter.getAuthenticationSystem().getExternalAuthenticator() - .handlePasswordReset(AuthenticationSystem.fromExternalRequest(ctx))); - - // External login (from OAuth2). - javalin.post("/hk4e_global/mdk/shield/api/loginByThirdparty", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() - .handleLogin(AuthenticationSystem.fromExternalRequest(ctx))); - javalin.get("/authentication/openid/redirect", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() - .handleTokenProcess(AuthenticationSystem.fromExternalRequest(ctx))); - javalin.get("/Api/twitter_login", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() - .handleRedirection(AuthenticationSystem.fromExternalRequest(ctx), ClientType.DESKTOP)); - javalin.get("/sdkTwitterLogin.html", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() - .handleRedirection(AuthenticationSystem.fromExternalRequest(ctx), ClientType.MOBILE)); - } - /** * @route /hk4e_global/mdk/shield/api/login */ @@ -67,8 +32,8 @@ public final class DispatchHandler implements Router { // Pass data to authentication handler. var responseData = Grasscutter.getAuthenticationSystem() - .getPasswordAuthenticator() - .authenticate(AuthenticationSystem.fromPasswordRequest(ctx, bodyData)); + .getPasswordAuthenticator() + .authenticate(AuthenticationSystem.fromPasswordRequest(ctx, bodyData)); // Send response. ctx.json(responseData); @@ -90,8 +55,8 @@ public final class DispatchHandler implements Router { // Pass data to authentication handler. var responseData = Grasscutter.getAuthenticationSystem() - .getTokenAuthenticator() - .authenticate(AuthenticationSystem.fromTokenRequest(ctx, bodyData)); + .getTokenAuthenticator() + .authenticate(AuthenticationSystem.fromTokenRequest(ctx, bodyData)); // Send response. ctx.json(responseData); @@ -116,12 +81,50 @@ public final class DispatchHandler implements Router { // Pass data to authentication handler. var responseData = Grasscutter.getAuthenticationSystem() - .getSessionKeyAuthenticator() - .authenticate(AuthenticationSystem.fromComboTokenRequest(ctx, bodyData, tokenData)); + .getSessionKeyAuthenticator() + .authenticate(AuthenticationSystem.fromComboTokenRequest(ctx, bodyData, tokenData)); // Send response. ctx.json(responseData); // Log to console. Grasscutter.getLogger().info(translate("messages.dispatch.account.login_attempt", ctx.ip())); } + + @Override + public void applyRoutes(Javalin javalin) { + // OS + // Username & Password login (from client). + javalin.post("/hk4e_global/mdk/shield/api/login", DispatchHandler::clientLogin); + // Cached token login (from registry). + javalin.post("/hk4e_global/mdk/shield/api/verify", DispatchHandler::tokenLogin); + // Combo token login (from session key). + javalin.post("/hk4e_global/combo/granter/login/v2/login", DispatchHandler::sessionKeyLogin); + + // CN + // Username & Password login (from client). + javalin.post("/hk4e_cn/mdk/shield/api/login", DispatchHandler::clientLogin); + // Cached token login (from registry). + javalin.post("/hk4e_cn/mdk/shield/api/verify", DispatchHandler::tokenLogin); + // Combo token login (from session key). + javalin.post("/hk4e_cn/combo/granter/login/v2/login", DispatchHandler::sessionKeyLogin); + + // External login (from other clients). + javalin.get("/authentication/type", ctx -> ctx.result(Grasscutter.getAuthenticationSystem().getClass().getSimpleName())); + javalin.post("/authentication/login", ctx -> Grasscutter.getAuthenticationSystem().getExternalAuthenticator() + .handleLogin(AuthenticationSystem.fromExternalRequest(ctx))); + javalin.post("/authentication/register", ctx -> Grasscutter.getAuthenticationSystem().getExternalAuthenticator() + .handleAccountCreation(AuthenticationSystem.fromExternalRequest(ctx))); + javalin.post("/authentication/change_password", ctx -> Grasscutter.getAuthenticationSystem().getExternalAuthenticator() + .handlePasswordReset(AuthenticationSystem.fromExternalRequest(ctx))); + + // External login (from OAuth2). + javalin.post("/hk4e_global/mdk/shield/api/loginByThirdparty", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() + .handleLogin(AuthenticationSystem.fromExternalRequest(ctx))); + javalin.get("/authentication/openid/redirect", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() + .handleTokenProcess(AuthenticationSystem.fromExternalRequest(ctx))); + javalin.get("/Api/twitter_login", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() + .handleRedirection(AuthenticationSystem.fromExternalRequest(ctx), ClientType.DESKTOP)); + javalin.get("/sdkTwitterLogin.html", ctx -> Grasscutter.getAuthenticationSystem().getOAuthAuthenticator() + .handleRedirection(AuthenticationSystem.fromExternalRequest(ctx), ClientType.MOBILE)); + } } diff --git a/src/main/java/emu/grasscutter/server/http/dispatch/RegionHandler.java b/src/main/java/emu/grasscutter/server/http/dispatch/RegionHandler.java index 3b55c2f2d..76ca1b800 100644 --- a/src/main/java/emu/grasscutter/server/http/dispatch/RegionHandler.java +++ b/src/main/java/emu/grasscutter/server/http/dispatch/RegionHandler.java @@ -3,10 +3,10 @@ package emu.grasscutter.server.http.dispatch; import com.google.protobuf.ByteString; import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter.ServerRunMode; -import emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp; import emu.grasscutter.net.proto.QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp; -import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo; +import emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp; import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo; +import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo; import emu.grasscutter.server.event.dispatch.QueryAllRegionsEvent; import emu.grasscutter.server.event.dispatch.QueryCurrentRegionEvent; import emu.grasscutter.server.http.Router; @@ -15,18 +15,19 @@ import emu.grasscutter.utils.Crypto; import emu.grasscutter.utils.Utils; import io.javalin.Javalin; import io.javalin.http.Context; +import org.slf4j.Logger; import javax.crypto.Cipher; import java.io.ByteArrayOutputStream; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import java.security.Signature; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Pattern; -import org.slf4j.Logger; - import static emu.grasscutter.config.Configuration.*; -import static emu.grasscutter.utils.Language.translate; /** * Handles requests related to region queries. @@ -44,86 +45,6 @@ public final class RegionHandler implements Router { } } - /** - * Configures region data according to configuration. - */ - private void initialize() { - String dispatchDomain = "http" + (HTTP_ENCRYPTION.useInRouting ? "s" : "") + "://" - + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" - + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort); - - // Create regions. - List servers = new ArrayList<>(); - List usedNames = new ArrayList<>(); // List to check for potential naming conflicts. - - var configuredRegions = new ArrayList<>(List.of(DISPATCH_INFO.regions)); - if (SERVER.runMode != ServerRunMode.HYBRID && configuredRegions.size() == 0) { - Grasscutter.getLogger().error("[Dispatch] There are no game servers available. Exiting due to unplayable state."); - System.exit(1); - } else if (configuredRegions.size() == 0) - configuredRegions.add(new Region("os_usa", DISPATCH_INFO.defaultName, - lr(GAME_INFO.accessAddress, GAME_INFO.bindAddress), - lr(GAME_INFO.accessPort, GAME_INFO.bindPort))); - - configuredRegions.forEach(region -> { - if (usedNames.contains(region.Name)) { - Grasscutter.getLogger().error("Region name already in use."); - return; - } - - // Create a region identifier. - var identifier = RegionSimpleInfo.newBuilder() - .setName(region.Name).setTitle(region.Title).setType("DEV_PUBLIC") - .setDispatchUrl(dispatchDomain + "/query_cur_region/" + region.Name) - .build(); - usedNames.add(region.Name); servers.add(identifier); - - // Create a region info object. - var regionInfo = RegionInfo.newBuilder() - .setGateserverIp(region.Ip).setGateserverPort(region.Port) - .setSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) - .build(); - // Create an updated region query. - var updatedQuery = QueryCurrRegionHttpRsp.newBuilder().setRegionInfo(regionInfo).build(); - regions.put(region.Name, new RegionData(updatedQuery, Utils.base64Encode(updatedQuery.toByteString().toByteArray()))); - }); - - // Create a config object. - byte[] customConfig = "{\"sdkenv\":\"2\",\"checkdevice\":\"false\",\"loadPatch\":\"false\",\"showexception\":\"false\",\"regionConfig\":\"pm|fk|add\",\"downloadMode\":\"0\"}".getBytes(); - Crypto.xor(customConfig, Crypto.DISPATCH_KEY); // XOR the config with the key. - - // Create an updated region list. - QueryRegionListHttpRsp updatedRegionList = QueryRegionListHttpRsp.newBuilder() - .addAllRegionList(servers) - .setClientSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) - .setClientCustomConfigEncrypted(ByteString.copyFrom(customConfig)) - .setEnableLoginPc(true).build(); - - // Set the region list response. - regionListResponse = Utils.base64Encode(updatedRegionList.toByteString().toByteArray()); - - // CN - // Create a config object. - byte[] customConfigcn = "{\"sdkenv\":\"0\",\"checkdevice\":\"true\",\"loadPatch\":\"false\",\"showexception\":\"false\",\"regionConfig\":\"pm|fk|add\",\"downloadMode\":\"0\"}".getBytes(); - Crypto.xor(customConfigcn, Crypto.DISPATCH_KEY); // XOR the config with the key. - - // Create an updated region list. - QueryRegionListHttpRsp updatedRegionListcn = QueryRegionListHttpRsp.newBuilder() - .addAllRegionList(servers) - .setClientSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) - .setClientCustomConfigEncrypted(ByteString.copyFrom(customConfigcn)) - .setEnableLoginPc(true).build(); - - // Set the region list response. - regionListResponsecn = Utils.base64Encode(updatedRegionListcn.toByteString().toByteArray()); - } - - @Override - public void applyRoutes(Javalin javalin) { - javalin.get("/query_region_list", RegionHandler::queryRegionList); - javalin.get("/query_cur_region/{region}", RegionHandler::queryCurrentRegion); - } - /** * Handle query region list request. * @@ -140,7 +61,7 @@ public final class RegionHandler implements Router { // Determine the region list to use based on the version and platform. if ("CNRELiOS".equals(versionCode) || "CNRELWin".equals(versionCode) - || "CNRELAndroid".equals(versionCode)) { + || "CNRELAndroid".equals(versionCode)) { // Use the CN region list. QueryAllRegionsEvent event = new QueryAllRegionsEvent(regionListResponsecn); event.call(); @@ -149,7 +70,7 @@ public final class RegionHandler implements Router { // Respond with the event result. ctx.result(event.getRegionList()); } else if ("OSRELiOS".equals(versionCode) || "OSRELWin".equals(versionCode) - || "OSRELAndroid".equals(versionCode)) { + || "OSRELAndroid".equals(versionCode)) { // Use the OS region list. QueryAllRegionsEvent event = new QueryAllRegionsEvent(regionListResponse); event.call(); @@ -205,11 +126,12 @@ public final class RegionHandler implements Router { String[] versionCode = versionName.replaceAll(Pattern.compile("[a-zA-Z]").pattern(), "").split("\\."); int versionMajor = Integer.parseInt(versionCode[0]); int versionMinor = Integer.parseInt(versionCode[1]); - int versionFix = Integer.parseInt(versionCode[2]); + int versionFix = Integer.parseInt(versionCode[2]); if (versionMajor >= 3 || (versionMajor == 2 && versionMinor == 7 && versionFix >= 50) || (versionMajor == 2 && versionMinor == 8)) { try { - QueryCurrentRegionEvent event = new QueryCurrentRegionEvent(regionData); event.call(); + QueryCurrentRegionEvent event = new QueryCurrentRegionEvent(regionData); + event.call(); if (ctx.queryParam("dispatchSeed") == null) { // More love for UA Patch players @@ -255,14 +177,13 @@ public final class RegionHandler implements Router { rsp.sign = Utils.base64Encode(privateSignature.sign()); ctx.json(rsp); - } - catch (Exception e) { + } catch (Exception e) { Grasscutter.getLogger().error("An error occurred while handling query_cur_region.", e); } - } - else { + } else { // Invoke event. - QueryCurrentRegionEvent event = new QueryCurrentRegionEvent(regionData); event.call(); + QueryCurrentRegionEvent event = new QueryCurrentRegionEvent(regionData); + event.call(); // Respond with event result. ctx.result(event.getRegionInfo()); } @@ -270,6 +191,96 @@ public final class RegionHandler implements Router { Grasscutter.getLogger().info(String.format("Client %s request: query_cur_region/%s", ctx.ip(), regionName)); } + /** + * Gets the current region query. + * + * @return A {@link QueryCurrRegionHttpRsp} object. + */ + public static QueryCurrRegionHttpRsp getCurrentRegion() { + return SERVER.runMode == ServerRunMode.HYBRID ? regions.get("os_usa").getRegionQuery() : null; + } + + /** + * Configures region data according to configuration. + */ + private void initialize() { + String dispatchDomain = "http" + (HTTP_ENCRYPTION.useInRouting ? "s" : "") + "://" + + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" + + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort); + + // Create regions. + List servers = new ArrayList<>(); + List usedNames = new ArrayList<>(); // List to check for potential naming conflicts. + + var configuredRegions = new ArrayList<>(List.of(DISPATCH_INFO.regions)); + if (SERVER.runMode != ServerRunMode.HYBRID && configuredRegions.size() == 0) { + Grasscutter.getLogger().error("[Dispatch] There are no game servers available. Exiting due to unplayable state."); + System.exit(1); + } else if (configuredRegions.size() == 0) + configuredRegions.add(new Region("os_usa", DISPATCH_INFO.defaultName, + lr(GAME_INFO.accessAddress, GAME_INFO.bindAddress), + lr(GAME_INFO.accessPort, GAME_INFO.bindPort))); + + configuredRegions.forEach(region -> { + if (usedNames.contains(region.Name)) { + Grasscutter.getLogger().error("Region name already in use."); + return; + } + + // Create a region identifier. + var identifier = RegionSimpleInfo.newBuilder() + .setName(region.Name).setTitle(region.Title).setType("DEV_PUBLIC") + .setDispatchUrl(dispatchDomain + "/query_cur_region/" + region.Name) + .build(); + usedNames.add(region.Name); + servers.add(identifier); + + // Create a region info object. + var regionInfo = RegionInfo.newBuilder() + .setGateserverIp(region.Ip).setGateserverPort(region.Port) + .setSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) + .build(); + // Create an updated region query. + var updatedQuery = QueryCurrRegionHttpRsp.newBuilder().setRegionInfo(regionInfo).build(); + regions.put(region.Name, new RegionData(updatedQuery, Utils.base64Encode(updatedQuery.toByteString().toByteArray()))); + }); + + // Create a config object. + byte[] customConfig = "{\"sdkenv\":\"2\",\"checkdevice\":\"false\",\"loadPatch\":\"false\",\"showexception\":\"false\",\"regionConfig\":\"pm|fk|add\",\"downloadMode\":\"0\"}".getBytes(); + Crypto.xor(customConfig, Crypto.DISPATCH_KEY); // XOR the config with the key. + + // Create an updated region list. + QueryRegionListHttpRsp updatedRegionList = QueryRegionListHttpRsp.newBuilder() + .addAllRegionList(servers) + .setClientSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) + .setClientCustomConfigEncrypted(ByteString.copyFrom(customConfig)) + .setEnableLoginPc(true).build(); + + // Set the region list response. + regionListResponse = Utils.base64Encode(updatedRegionList.toByteString().toByteArray()); + + // CN + // Create a config object. + byte[] customConfigcn = "{\"sdkenv\":\"0\",\"checkdevice\":\"true\",\"loadPatch\":\"false\",\"showexception\":\"false\",\"regionConfig\":\"pm|fk|add\",\"downloadMode\":\"0\"}".getBytes(); + Crypto.xor(customConfigcn, Crypto.DISPATCH_KEY); // XOR the config with the key. + + // Create an updated region list. + QueryRegionListHttpRsp updatedRegionListcn = QueryRegionListHttpRsp.newBuilder() + .addAllRegionList(servers) + .setClientSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) + .setClientCustomConfigEncrypted(ByteString.copyFrom(customConfigcn)) + .setEnableLoginPc(true).build(); + + // Set the region list response. + regionListResponsecn = Utils.base64Encode(updatedRegionListcn.toByteString().toByteArray()); + } + + @Override + public void applyRoutes(Javalin javalin) { + javalin.get("/query_region_list", RegionHandler::queryRegionList); + javalin.get("/query_cur_region/{region}", RegionHandler::queryCurrentRegion); + } + /** * Region data container. */ @@ -290,12 +301,4 @@ public final class RegionHandler implements Router { return this.base64; } } - - /** - * Gets the current region query. - * @return A {@link QueryCurrRegionHttpRsp} object. - */ - public static QueryCurrRegionHttpRsp getCurrentRegion() { - return SERVER.runMode == ServerRunMode.HYBRID ? regions.get("os_usa").getRegionQuery() : null; - } } diff --git a/src/main/java/emu/grasscutter/server/http/documentation/DocumentationServerHandler.java b/src/main/java/emu/grasscutter/server/http/documentation/DocumentationServerHandler.java index 6e64286c2..1d38fbfc6 100644 --- a/src/main/java/emu/grasscutter/server/http/documentation/DocumentationServerHandler.java +++ b/src/main/java/emu/grasscutter/server/http/documentation/DocumentationServerHandler.java @@ -2,7 +2,6 @@ package emu.grasscutter.server.http.documentation; import emu.grasscutter.server.http.Router; import io.javalin.Javalin; -import io.javalin.http.Context; public final class DocumentationServerHandler implements Router { diff --git a/src/main/java/emu/grasscutter/server/http/documentation/GachaMappingRequestHandler.java b/src/main/java/emu/grasscutter/server/http/documentation/GachaMappingRequestHandler.java index 0a9bb3bfa..6bd26ffba 100644 --- a/src/main/java/emu/grasscutter/server/http/documentation/GachaMappingRequestHandler.java +++ b/src/main/java/emu/grasscutter/server/http/documentation/GachaMappingRequestHandler.java @@ -5,12 +5,12 @@ import emu.grasscutter.utils.Language; import io.javalin.http.ContentType; import io.javalin.http.Context; -import static emu.grasscutter.config.Configuration.DOCUMENT_LANGUAGE; - import java.util.List; +import static emu.grasscutter.config.Configuration.DOCUMENT_LANGUAGE; + final class GachaMappingRequestHandler implements DocumentationHandler { - private List gachaJsons; + private final List gachaJsons; GachaMappingRequestHandler() { this.gachaJsons = Tools.createGachaMappingJsons(); diff --git a/src/main/java/emu/grasscutter/server/http/documentation/HandbookRequestHandler.java b/src/main/java/emu/grasscutter/server/http/documentation/HandbookRequestHandler.java index 4ddde4265..30ddd25eb 100644 --- a/src/main/java/emu/grasscutter/server/http/documentation/HandbookRequestHandler.java +++ b/src/main/java/emu/grasscutter/server/http/documentation/HandbookRequestHandler.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.http.documentation; -import static emu.grasscutter.config.Configuration.*; - import emu.grasscutter.Grasscutter; import emu.grasscutter.command.CommandMap; import emu.grasscutter.data.GameData; @@ -14,6 +12,7 @@ import emu.grasscutter.utils.Language; import io.javalin.http.ContentType; import io.javalin.http.Context; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; + import java.io.IOException; import java.nio.file.Files; import java.util.ArrayList; @@ -42,7 +41,7 @@ final class HandbookRequestHandler implements DocumentationHandler { Matcher matcher = localePattern.matcher(acceptLanguage); if (matcher.find()) { String lang = matcher.group(0); - langIdx = Language.TextStrings.MAP_GC_LANGUAGES.getOrDefault(lang,0); + langIdx = Language.TextStrings.MAP_GC_LANGUAGES.getOrDefault(lang, 0); } } @@ -62,7 +61,7 @@ final class HandbookRequestHandler implements DocumentationHandler { final List languages = Language.TextStrings.getLanguages(); final List sbs = new ArrayList<>(NUM_LANGUAGES); for (int langIdx = 0; langIdx < NUM_LANGUAGES; langIdx++) - sbs.add(new StringBuilder("")); + sbs.add(new StringBuilder()); // Commands table CommandMap.getInstance().getHandlersAsList().forEach(cmd -> { @@ -71,7 +70,7 @@ final class HandbookRequestHandler implements DocumentationHandler { for (int langIdx = 0; langIdx < NUM_LANGUAGES; langIdx++) sbs.get(langIdx).append("" + label + "" + languages.get(langIdx).get(descKey) + "\n"); }); - sbs.forEach(sb -> sb.setLength(sb.length()-1)); // Remove trailing \n + sbs.forEach(sb -> sb.setLength(sb.length() - 1)); // Remove trailing \n final List cmdsTable = sbs.stream().map(StringBuilder::toString).toList(); // Avatars table @@ -83,7 +82,7 @@ final class HandbookRequestHandler implements DocumentationHandler { for (int langIdx = 0; langIdx < NUM_LANGUAGES; langIdx++) sbs.get(langIdx).append("" + id + "" + name.get(langIdx) + "\n"); }); - sbs.forEach(sb -> sb.setLength(sb.length()-1)); // Remove trailing \n + sbs.forEach(sb -> sb.setLength(sb.length() - 1)); // Remove trailing \n final List avatarsTable = sbs.stream().map(StringBuilder::toString).toList(); // Items table @@ -95,7 +94,7 @@ final class HandbookRequestHandler implements DocumentationHandler { for (int langIdx = 0; langIdx < NUM_LANGUAGES; langIdx++) sbs.get(langIdx).append("" + id + "" + name.get(langIdx) + "\n"); }); - sbs.forEach(sb -> sb.setLength(sb.length()-1)); // Remove trailing \n + sbs.forEach(sb -> sb.setLength(sb.length() - 1)); // Remove trailing \n final List itemsTable = sbs.stream().map(StringBuilder::toString).toList(); // Scenes table @@ -105,7 +104,7 @@ final class HandbookRequestHandler implements DocumentationHandler { for (int langIdx = 0; langIdx < NUM_LANGUAGES; langIdx++) sbs.get(langIdx).append("" + id + "" + data.getScriptData() + "\n"); }); - sbs.forEach(sb -> sb.setLength(sb.length()-1)); // Remove trailing \n + sbs.forEach(sb -> sb.setLength(sb.length() - 1)); // Remove trailing \n final List scenesTable = sbs.stream().map(StringBuilder::toString).toList(); // Monsters table @@ -116,7 +115,7 @@ final class HandbookRequestHandler implements DocumentationHandler { for (int langIdx = 0; langIdx < NUM_LANGUAGES; langIdx++) sbs.get(langIdx).append("" + id + "" + name.get(langIdx) + "\n"); }); - sbs.forEach(sb -> sb.setLength(sb.length()-1)); // Remove trailing \n + sbs.forEach(sb -> sb.setLength(sb.length() - 1)); // Remove trailing \n final List monstersTable = sbs.stream().map(StringBuilder::toString).toList(); // Add translated title etc. to the page. diff --git a/src/main/java/emu/grasscutter/server/http/documentation/RootRequestHandler.java b/src/main/java/emu/grasscutter/server/http/documentation/RootRequestHandler.java index f184ac952..70a5122a1 100644 --- a/src/main/java/emu/grasscutter/server/http/documentation/RootRequestHandler.java +++ b/src/main/java/emu/grasscutter/server/http/documentation/RootRequestHandler.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.http.documentation; -import static emu.grasscutter.utils.Language.translate; - import emu.grasscutter.Grasscutter; import emu.grasscutter.utils.FileUtils; import io.javalin.http.ContentType; @@ -10,6 +8,8 @@ import io.javalin.http.Context; import java.io.IOException; import java.nio.file.Files; +import static emu.grasscutter.utils.Language.translate; + final class RootRequestHandler implements DocumentationHandler { private final String template; @@ -33,8 +33,8 @@ final class RootRequestHandler implements DocumentationHandler { } String content = template.replace("{{TITLE}}", translate("documentation.index.title")) - .replace("{{ITEM_HANDBOOK}}", translate("documentation.index.handbook")) - .replace("{{ITEM_GACHA_MAPPING}}", translate("documentation.index.gacha_mapping")); + .replace("{{ITEM_HANDBOOK}}", translate("documentation.index.handbook")) + .replace("{{ITEM_GACHA_MAPPING}}", translate("documentation.index.gacha_mapping")); ctx.contentType(ContentType.TEXT_HTML); ctx.result(content); } diff --git a/src/main/java/emu/grasscutter/server/http/handlers/AnnouncementsHandler.java b/src/main/java/emu/grasscutter/server/http/handlers/AnnouncementsHandler.java index f3fa4f033..8963f18e7 100644 --- a/src/main/java/emu/grasscutter/server/http/handlers/AnnouncementsHandler.java +++ b/src/main/java/emu/grasscutter/server/http/handlers/AnnouncementsHandler.java @@ -2,39 +2,24 @@ package emu.grasscutter.server.http.handlers; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.DataLoader; -import emu.grasscutter.server.http.objects.HttpJsonResponse; import emu.grasscutter.server.http.Router; +import emu.grasscutter.server.http.objects.HttpJsonResponse; import emu.grasscutter.utils.FileUtils; import io.javalin.Javalin; import io.javalin.http.ContentType; import io.javalin.http.Context; -import static emu.grasscutter.config.Configuration.*; - import java.io.IOException; import java.io.InputStream; import java.util.Objects; import java.util.StringJoiner; +import static emu.grasscutter.config.Configuration.*; + /** * Handles requests related to the announcements page. */ public final class AnnouncementsHandler implements Router { - @Override public void applyRoutes(Javalin javalin) { - // hk4e-api-os.hoyoverse.com - this.allRoutes(javalin, "/common/hk4e_global/announcement/api/getAlertPic", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"total\":0,\"list\":[]}}")); - // hk4e-api-os.hoyoverse.com - this.allRoutes(javalin,"/common/hk4e_global/announcement/api/getAlertAnn", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"alert\":false,\"alert_id\":0,\"remind\":true}}")); - // hk4e-api-os.hoyoverse.com - this.allRoutes(javalin,"/common/hk4e_global/announcement/api/getAnnList", AnnouncementsHandler::getAnnouncement); - // hk4e-api-os-static.hoyoverse.com - this.allRoutes(javalin,"/common/hk4e_global/announcement/api/getAnnContent", AnnouncementsHandler::getAnnouncement); - // hk4e-sdk-os.hoyoverse.com - this.allRoutes(javalin,"/hk4e_global/mdk/shopwindow/shopwindow/listPriceTier", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"suggest_currency\":\"USD\",\"tiers\":[]}}")); - - javalin.get("/hk4e/announcement/*", AnnouncementsHandler::getPageResources); - } - private static void getAnnouncement(Context ctx) { String data = ""; if (Objects.equals(ctx.endpointHandlerPath(), "/common/hk4e_global/announcement/api/getAnnContent")) { @@ -63,8 +48,8 @@ public final class AnnouncementsHandler implements Router { } String dispatchDomain = "http" + (HTTP_ENCRYPTION.useInRouting ? "s" : "") + "://" - + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" - + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort); + + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" + + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort); data = data .replace("{{DISPATCH_PUBLIC}}", dispatchDomain) @@ -94,4 +79,20 @@ public final class AnnouncementsHandler implements Router { ctx.status(404); } } + + @Override + public void applyRoutes(Javalin javalin) { + // hk4e-api-os.hoyoverse.com + this.allRoutes(javalin, "/common/hk4e_global/announcement/api/getAlertPic", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"total\":0,\"list\":[]}}")); + // hk4e-api-os.hoyoverse.com + this.allRoutes(javalin, "/common/hk4e_global/announcement/api/getAlertAnn", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"alert\":false,\"alert_id\":0,\"remind\":true}}")); + // hk4e-api-os.hoyoverse.com + this.allRoutes(javalin, "/common/hk4e_global/announcement/api/getAnnList", AnnouncementsHandler::getAnnouncement); + // hk4e-api-os-static.hoyoverse.com + this.allRoutes(javalin, "/common/hk4e_global/announcement/api/getAnnContent", AnnouncementsHandler::getAnnouncement); + // hk4e-sdk-os.hoyoverse.com + this.allRoutes(javalin, "/hk4e_global/mdk/shopwindow/shopwindow/listPriceTier", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"suggest_currency\":\"USD\",\"tiers\":[]}}")); + + javalin.get("/hk4e/announcement/*", AnnouncementsHandler::getPageResources); + } } diff --git a/src/main/java/emu/grasscutter/server/http/handlers/GachaHandler.java b/src/main/java/emu/grasscutter/server/http/handlers/GachaHandler.java index b7e48dc16..7fd79a0f9 100644 --- a/src/main/java/emu/grasscutter/server/http/handlers/GachaHandler.java +++ b/src/main/java/emu/grasscutter/server/http/handlers/GachaHandler.java @@ -29,17 +29,11 @@ import static emu.grasscutter.utils.Language.translate; * Handles all gacha-related HTTP requests. */ public final class GachaHandler implements Router { - @Getter private static final Path gachaMappingsPath = FileUtils.getDataUserPath("gacha/mappings.js"); + @Getter + private static final Path gachaMappingsPath = FileUtils.getDataUserPath("gacha/mappings.js"); @Deprecated(forRemoval = true) public static final String gachaMappings = gachaMappingsPath.toString(); - @Override public void applyRoutes(Javalin javalin) { - javalin.get("/gacha", GachaHandler::gachaRecords); - javalin.get("/gacha/details", GachaHandler::gachaDetails); - - javalin._conf.addSinglePageRoot("/gacha/mappings", gachaMappingsPath.toString(), Location.EXTERNAL); // TODO: This ***must*** be changed to take the Path not a String. This might involve upgrading Javalin. - } - private static void gachaRecords(Context ctx) { String sessionKey = ctx.queryParam("s"); Account account = DatabaseHelper.getAccountBySessionKey(sessionKey); @@ -98,10 +92,10 @@ public final class GachaHandler implements Router { // Add translated title etc. to the page. template = template.replace("{{TITLE}}", translate(player, "gacha.details.title")) - .replace("{{AVAILABLE_FIVE_STARS}}", translate(player, "gacha.details.available_five_stars")) - .replace("{{AVAILABLE_FOUR_STARS}}", translate(player, "gacha.details.available_four_stars")) - .replace("{{AVAILABLE_THREE_STARS}}", translate(player, "gacha.details.available_three_stars")) - .replace("{{LANGUAGE}}", Utils.getLanguageCode(account.getLocale())); + .replace("{{AVAILABLE_FIVE_STARS}}", translate(player, "gacha.details.available_five_stars")) + .replace("{{AVAILABLE_FOUR_STARS}}", translate(player, "gacha.details.available_four_stars")) + .replace("{{AVAILABLE_THREE_STARS}}", translate(player, "gacha.details.available_three_stars")) + .replace("{{LANGUAGE}}", Utils.getLanguageCode(account.getLocale())); // Get the banner info for the banner we want. int scheduleId = Integer.parseInt(ctx.queryParam("scheduleId")); @@ -135,4 +129,12 @@ public final class GachaHandler implements Router { ctx.contentType(ContentType.TEXT_HTML); ctx.result(template); } + + @Override + public void applyRoutes(Javalin javalin) { + javalin.get("/gacha", GachaHandler::gachaRecords); + javalin.get("/gacha/details", GachaHandler::gachaDetails); + + javalin._conf.addSinglePageRoot("/gacha/mappings", gachaMappingsPath.toString(), Location.EXTERNAL); // TODO: This ***must*** be changed to take the Path not a String. This might involve upgrading Javalin. + } } diff --git a/src/main/java/emu/grasscutter/server/http/handlers/GenericHandler.java b/src/main/java/emu/grasscutter/server/http/handlers/GenericHandler.java index 172ab2d9d..ff15a96d5 100644 --- a/src/main/java/emu/grasscutter/server/http/handlers/GenericHandler.java +++ b/src/main/java/emu/grasscutter/server/http/handlers/GenericHandler.java @@ -1,20 +1,29 @@ package emu.grasscutter.server.http.handlers; -import static emu.grasscutter.config.Configuration.ACCOUNT; - import emu.grasscutter.GameConstants; import emu.grasscutter.Grasscutter; -import emu.grasscutter.server.http.objects.HttpJsonResponse; import emu.grasscutter.server.http.Router; +import emu.grasscutter.server.http.objects.HttpJsonResponse; import emu.grasscutter.server.http.objects.WebStaticVersionResponse; import io.javalin.Javalin; import io.javalin.http.Context; +import static emu.grasscutter.config.Configuration.ACCOUNT; + /** * Handles all generic, hard-coded responses. */ public final class GenericHandler implements Router { - @Override public void applyRoutes(Javalin javalin) { + private static void serverStatus(Context ctx) { + int playerCount = Grasscutter.getGameServer().getPlayers().size(); + int maxPlayer = ACCOUNT.maxPlayer; + String version = GameConstants.VERSION; + + ctx.result("{\"retcode\":0,\"status\":{\"playerCount\":" + playerCount + ",\"maxPlayer\":" + maxPlayer + ",\"version\":\"" + version + "\"}}"); + } + + @Override + public void applyRoutes(Javalin javalin) { // hk4e-sdk-os.hoyoverse.com javalin.get("/hk4e_global/mdk/agreement/api/getAgreementInfos", new HttpJsonResponse("{\"retcode\":0,\"message\":\"OK\",\"data\":{\"marketing_agreements\":[]}}")); // hk4e-sdk-os.hoyoverse.com (this could be either GET or POST based on the observation of different clients) @@ -45,12 +54,4 @@ public final class GenericHandler implements Router { javalin.get("/status/server", GenericHandler::serverStatus); } - - private static void serverStatus(Context ctx) { - int playerCount = Grasscutter.getGameServer().getPlayers().size(); - int maxPlayer = ACCOUNT.maxPlayer; - String version = GameConstants.VERSION; - - ctx.result("{\"retcode\":0,\"status\":{\"playerCount\":" + playerCount + ",\"maxPlayer\":" + maxPlayer + ",\"version\":\"" + version + "\"}}"); - } } diff --git a/src/main/java/emu/grasscutter/server/http/handlers/LogHandler.java b/src/main/java/emu/grasscutter/server/http/handlers/LogHandler.java index 37ac7ad45..39f23e527 100644 --- a/src/main/java/emu/grasscutter/server/http/handlers/LogHandler.java +++ b/src/main/java/emu/grasscutter/server/http/handlers/LogHandler.java @@ -8,15 +8,16 @@ import io.javalin.http.Context; * Handles logging requests made to the server. */ public final class LogHandler implements Router { - @Override public void applyRoutes(Javalin javalin) { + private static void log(Context ctx) { + // TODO: Figure out how to dump request body and log to file. + ctx.result("{\"code\":0}"); + } + + @Override + public void applyRoutes(Javalin javalin) { // overseauspider.yuanshen.com javalin.post("/log", LogHandler::log); // log-upload-os.mihoyo.com javalin.post("/crash/dataUpload", LogHandler::log); } - - private static void log(Context ctx) { - // TODO: Figure out how to dump request body and log to file. - ctx.result("{\"code\":0}"); - } } diff --git a/src/main/java/emu/grasscutter/server/http/objects/ComboTokenReqJson.java b/src/main/java/emu/grasscutter/server/http/objects/ComboTokenReqJson.java index 5642f159a..07cde5906 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/ComboTokenReqJson.java +++ b/src/main/java/emu/grasscutter/server/http/objects/ComboTokenReqJson.java @@ -1,15 +1,15 @@ package emu.grasscutter.server.http.objects; public class ComboTokenReqJson { - public int app_id; - public int channel_id; - public String data; - public String device; - public String sign; - - public static class LoginTokenData { - public String uid; - public String token; - public boolean guest; - } + public int app_id; + public int channel_id; + public String data; + public String device; + public String sign; + + public static class LoginTokenData { + public String uid; + public String token; + public boolean guest; + } } diff --git a/src/main/java/emu/grasscutter/server/http/objects/ComboTokenResJson.java b/src/main/java/emu/grasscutter/server/http/objects/ComboTokenResJson.java index b592fa163..c229a1e19 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/ComboTokenResJson.java +++ b/src/main/java/emu/grasscutter/server/http/objects/ComboTokenResJson.java @@ -1,17 +1,17 @@ package emu.grasscutter.server.http.objects; public class ComboTokenResJson { - public String message; - public int retcode; - public LoginData data = new LoginData(); - - public static class LoginData { - public int account_type = 1; - public boolean heartbeat; - public String combo_id; - public String combo_token; - public String open_id; - public String data = "{\"guest\":false}"; - public String fatigue_remind = null; // ? - } + public String message; + public int retcode; + public LoginData data = new LoginData(); + + public static class LoginData { + public int account_type = 1; + public boolean heartbeat; + public String combo_id; + public String combo_token; + public String open_id; + public String data = "{\"guest\":false}"; + public String fatigue_remind = null; // ? + } } diff --git a/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java b/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java index 410e69ac9..d457cbe76 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java +++ b/src/main/java/emu/grasscutter/server/http/objects/HttpJsonResponse.java @@ -1,31 +1,30 @@ package emu.grasscutter.server.http.objects; -import java.io.IOException; -import java.util.Arrays; -import java.util.Objects; - import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter.ServerDebugMode; import io.javalin.http.Context; import io.javalin.http.Handler; import org.jetbrains.annotations.NotNull; -import static emu.grasscutter.config.Configuration.*; +import java.util.Arrays; +import java.util.Objects; + +import static emu.grasscutter.config.Configuration.DISPATCH_INFO; import static emu.grasscutter.utils.Language.translate; public final class HttpJsonResponse implements Handler { private final String response; private final String[] missingRoutes = { // TODO: When http requests for theses routes are found please remove it from this list and update the route request type in the DispatchServer - "/common/hk4e_global/announcement/api/getAlertPic", - "/common/hk4e_global/announcement/api/getAlertAnn", - "/common/hk4e_global/announcement/api/getAnnList", - "/common/hk4e_global/announcement/api/getAnnContent", - "/hk4e_global/mdk/shopwindow/shopwindow/listPriceTier", - "/log/sdk/upload", - "/sdk/upload", - "/perf/config/verify", - "/log", - "/crash/dataUpload" + "/common/hk4e_global/announcement/api/getAlertPic", + "/common/hk4e_global/announcement/api/getAlertAnn", + "/common/hk4e_global/announcement/api/getAnnList", + "/common/hk4e_global/announcement/api/getAnnContent", + "/hk4e_global/mdk/shopwindow/shopwindow/listPriceTier", + "/log/sdk/upload", + "/sdk/upload", + "/perf/config/verify", + "/log", + "/crash/dataUpload" }; public HttpJsonResponse(String response) { diff --git a/src/main/java/emu/grasscutter/server/http/objects/LoginAccountRequestJson.java b/src/main/java/emu/grasscutter/server/http/objects/LoginAccountRequestJson.java index 3a8193a97..d0bd1c143 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/LoginAccountRequestJson.java +++ b/src/main/java/emu/grasscutter/server/http/objects/LoginAccountRequestJson.java @@ -1,7 +1,7 @@ package emu.grasscutter.server.http.objects; public class LoginAccountRequestJson { - public String account; - public String password; - public boolean is_crypto; + public String account; + public String password; + public boolean is_crypto; } diff --git a/src/main/java/emu/grasscutter/server/http/objects/LoginResultJson.java b/src/main/java/emu/grasscutter/server/http/objects/LoginResultJson.java index 5601c1c29..0557c9c05 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/LoginResultJson.java +++ b/src/main/java/emu/grasscutter/server/http/objects/LoginResultJson.java @@ -1,38 +1,38 @@ package emu.grasscutter.server.http.objects; public class LoginResultJson { - public String message; - public int retcode; - public VerifyData data = new VerifyData(); - - public static class VerifyData { - public VerifyAccountData account = new VerifyAccountData(); - public boolean device_grant_required = false; - public String realname_operation = "NONE"; - public boolean realperson_required = false; - public boolean safe_mobile_required = false; - } - - public static class VerifyAccountData { - public String uid; - public String name = ""; - public String email = ""; - public String mobile = ""; - public String is_email_verify = "0"; - public String realname = ""; - public String identity_card = ""; - public String token; - public String safe_mobile = ""; - public String facebook_name = ""; - public String twitter_name = ""; - public String game_center_name = ""; - public String google_name = ""; - public String apple_name = ""; - public String sony_name = ""; - public String tap_name = ""; - public String country = "US"; - public String reactivate_ticket = ""; - public String area_code = "**"; - public String device_grant_ticket = ""; - } + public String message; + public int retcode; + public VerifyData data = new VerifyData(); + + public static class VerifyData { + public VerifyAccountData account = new VerifyAccountData(); + public boolean device_grant_required = false; + public String realname_operation = "NONE"; + public boolean realperson_required = false; + public boolean safe_mobile_required = false; + } + + public static class VerifyAccountData { + public String uid; + public String name = ""; + public String email = ""; + public String mobile = ""; + public String is_email_verify = "0"; + public String realname = ""; + public String identity_card = ""; + public String token; + public String safe_mobile = ""; + public String facebook_name = ""; + public String twitter_name = ""; + public String game_center_name = ""; + public String google_name = ""; + public String apple_name = ""; + public String sony_name = ""; + public String tap_name = ""; + public String country = "US"; + public String reactivate_ticket = ""; + public String area_code = "**"; + public String device_grant_ticket = ""; + } } diff --git a/src/main/java/emu/grasscutter/server/http/objects/LoginTokenRequestJson.java b/src/main/java/emu/grasscutter/server/http/objects/LoginTokenRequestJson.java index d01c60401..2ab624d9e 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/LoginTokenRequestJson.java +++ b/src/main/java/emu/grasscutter/server/http/objects/LoginTokenRequestJson.java @@ -1,6 +1,6 @@ package emu.grasscutter.server.http.objects; public class LoginTokenRequestJson { - public String uid; - public String token; + public String uid; + public String token; } diff --git a/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java b/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java index 6217138e5..11d08236c 100644 --- a/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java +++ b/src/main/java/emu/grasscutter/server/http/objects/WebStaticVersionResponse.java @@ -6,21 +6,13 @@ import io.javalin.http.ContentType; import io.javalin.http.Context; import io.javalin.http.Handler; -import static emu.grasscutter.config.Configuration.DISPATCH_INFO; - import java.io.IOException; import java.io.InputStream; +import static emu.grasscutter.config.Configuration.DISPATCH_INFO; + public class WebStaticVersionResponse implements Handler { - @Override - public void handle(Context ctx) throws IOException { - String requestFor = ctx.path().substring(ctx.path().lastIndexOf("-") + 1); - - getPageResources("/webstatic/" + requestFor, ctx); - return; - } - private static void getPageResources(String path, Context ctx) { try (InputStream filestream = FileUtils.readResourceAsStream(path)) { ContentType fromExtension = ContentType.getContentTypeByExtension(path.substring(path.lastIndexOf(".") + 1)); @@ -33,4 +25,11 @@ public class WebStaticVersionResponse implements Handler { ctx.status(404); } } + + @Override + public void handle(Context ctx) throws IOException { + String requestFor = ctx.path().substring(ctx.path().lastIndexOf("-") + 1); + + getPageResources("/webstatic/" + requestFor, ctx); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/Handler.java b/src/main/java/emu/grasscutter/server/packet/recv/Handler.java index e56664ac2..6eed61c54 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/Handler.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/Handler.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.NONE) public class Handler extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAbilityInvocationsNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAbilityInvocationsNotify.java index 765c5af8c..d47143efe 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAbilityInvocationsNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAbilityInvocationsNotify.java @@ -1,34 +1,25 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.game.entity.EntityBaseGadget; -import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.world.Scene; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AbilityInvocationsNotifyOuterClass.AbilityInvocationsNotify; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.proto.SceneEntityInfoOuterClass; -import emu.grasscutter.net.proto.VisionTypeOuterClass; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketSceneEntityDisappearNotify; -import emu.grasscutter.utils.Position; -import emu.grasscutter.utils.Utils; -import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; @Opcodes(PacketOpcodes.AbilityInvocationsNotify) public class HandlerAbilityInvocationsNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - AbilityInvocationsNotify notif = AbilityInvocationsNotify.parseFrom(payload); - Player player = session.getPlayer(); - for (AbilityInvokeEntry entry : notif.getInvokesList()) { - player.getAbilityManager().onAbilityInvoke(entry); - player.getAbilityInvokeHandler().addEntry(entry.getForwardType(), entry); - } - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + AbilityInvocationsNotify notif = AbilityInvocationsNotify.parseFrom(payload); + + Player player = session.getPlayer(); + for (AbilityInvokeEntry entry : notif.getInvokesList()) { + player.getAbilityManager().onAbilityInvoke(entry); + player.getAbilityInvokeHandler().addEntry(entry.getForwardType(), entry); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerActivityTakeWatcherRewardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerActivityTakeWatcherRewardReq.java index 3ea3b75e2..5545cbb86 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerActivityTakeWatcherRewardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerActivityTakeWatcherRewardReq.java @@ -12,14 +12,14 @@ import java.util.Optional; @Opcodes(PacketOpcodes.ActivityTakeWatcherRewardReq) public class HandlerActivityTakeWatcherRewardReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = ActivityTakeWatcherRewardReqOuterClass.ActivityTakeWatcherRewardReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = ActivityTakeWatcherRewardReqOuterClass.ActivityTakeWatcherRewardReq.parseFrom(payload); Optional.ofNullable(session.getPlayer().getActivityManager().getPlayerActivityDataMap().get(req.getActivityId())) .ifPresent(x -> x.takeWatcherReward(req.getWatcherId())); session.send(new PacketActivityTakeWatcherRewardRsp(req.getActivityId(), req.getWatcherId())); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddBackupAvatarTeamReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddBackupAvatarTeamReq.java index 9b02217e1..ca481971c 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddBackupAvatarTeamReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddBackupAvatarTeamReq.java @@ -1,8 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.AddBackupAvatarTeamReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddQuestContentProgressReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddQuestContentProgressReq.java index bbfd05cdf..ee9ba7080 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddQuestContentProgressReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAddQuestContentProgressReq.java @@ -1,8 +1,7 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.data.GameData; -import emu.grasscutter.data.excels.QuestData; -import emu.grasscutter.game.quest.GameQuest; +import emu.grasscutter.data.excels.QuestData.QuestCondition; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; @@ -10,7 +9,7 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AddQuestContentProgressReqOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketAddQuestContentProgressRsp; -import emu.grasscutter.data.excels.QuestData.QuestCondition; + import java.util.List; import java.util.stream.Stream; @@ -24,8 +23,8 @@ public class HandlerAddQuestContentProgressReq extends PacketHandler { Stream finishCond = GameData.getQuestDataMap().get(req.getParam()).getFinishCond().stream(); Stream acceptCond = GameData.getQuestDataMap().get(req.getParam()).getAcceptCond().stream(); Stream failCond = GameData.getQuestDataMap().get(req.getParam()).getFailCond().stream(); - List allCondMatch = Stream.concat(Stream.concat(acceptCond,failCond),finishCond).filter(p -> p.getType().getValue() == req.getContentType()).toList(); - for (QuestCondition cond : allCondMatch ) { + List allCondMatch = Stream.concat(Stream.concat(acceptCond, failCond), finishCond).filter(p -> p.getType().getValue() == req.getContentType()).toList(); + for (QuestCondition cond : allCondMatch) { session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.getContentTriggerByValue(req.getContentType()), cond.getParam()); } session.send(new PacketAddQuestContentProgressRsp(req.getContentType())); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAskAddFriendReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAskAddFriendReq.java index 3449b88d4..cc16d625b 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAskAddFriendReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAskAddFriendReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AskAddFriendReqOuterClass.AskAddFriendReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.AskAddFriendReq) public class HandlerAskAddFriendReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - AskAddFriendReq req = AskAddFriendReq.parseFrom(payload); - - session.getPlayer().getFriendsList().sendFriendRequest(req.getTargetUid()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + AskAddFriendReq req = AskAddFriendReq.parseFrom(payload); + + session.getPlayer().getFriendsList().sendFriendRequest(req.getTargetUid()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeCostumeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeCostumeReq.java index d2270a524..0c925b344 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeCostumeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeCostumeReq.java @@ -1,26 +1,26 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarChangeCostumeReqOuterClass.AvatarChangeCostumeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketAvatarChangeCostumeRsp; @Opcodes(PacketOpcodes.AvatarChangeCostumeReq) public class HandlerAvatarChangeCostumeReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - AvatarChangeCostumeReq req = AvatarChangeCostumeReq.parseFrom(payload); - - boolean success = session.getPlayer().getAvatars().changeCostume(req.getAvatarGuid(), req.getCostumeId()); - - if (success) { - session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp(req.getAvatarGuid(), req.getCostumeId())); - } else { - session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp()); - } - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + AvatarChangeCostumeReq req = AvatarChangeCostumeReq.parseFrom(payload); + + boolean success = session.getPlayer().getAvatars().changeCostume(req.getAvatarGuid(), req.getCostumeId()); + + if (success) { + session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp(req.getAvatarGuid(), req.getCostumeId())); + } else { + session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp()); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeElementTypeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeElementTypeReq.java index 57d652005..6222ae1c0 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeElementTypeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarChangeElementTypeReq.java @@ -7,10 +7,10 @@ import emu.grasscutter.data.excels.WorldAreaData; import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.entity.EntityAvatar; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarChangeElementTypeReqOuterClass.AvatarChangeElementTypeReq; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketAbilityChangeNotify; import emu.grasscutter.server.packet.send.PacketAvatarChangeElementTypeRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarDieAnimationEndReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarDieAnimationEndReq.java index 2935da00c..46f586259 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarDieAnimationEndReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarDieAnimationEndReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarDieAnimationEndReqOuterClass.AvatarDieAnimationEndReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.AvatarDieAnimationEndReq) public class HandlerAvatarDieAnimationEndReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - AvatarDieAnimationEndReq req = AvatarDieAnimationEndReq.parseFrom(payload); - - session.getPlayer().getTeamManager().onAvatarDie(req.getDieGuid()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + AvatarDieAnimationEndReq req = AvatarDieAnimationEndReq.parseFrom(payload); + + session.getPlayer().getTeamManager().onAvatarDie(req.getDieGuid()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarFetterLevelRewardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarFetterLevelRewardReq.java index 5ce8d74cf..63c3ce526 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarFetterLevelRewardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarFetterLevelRewardReq.java @@ -1,54 +1,53 @@ -package emu.grasscutter.server.packet.recv; - -import emu.grasscutter.data.GameData; -import emu.grasscutter.data.excels.RewardData; -import emu.grasscutter.game.avatar.Avatar; -import emu.grasscutter.game.inventory.GameItem; -import emu.grasscutter.game.props.ActionReason; -import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq; -import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketAvatarDataNotify; -import emu.grasscutter.server.packet.send.PacketAvatarFetterDataNotify; -import emu.grasscutter.server.packet.send.PacketAvatarFetterLevelRewardRsp; -import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; -import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify; -import emu.grasscutter.net.packet.PacketHandler; - -@Opcodes(PacketOpcodes.AvatarFetterLevelRewardReq) -public class HandlerAvatarFetterLevelRewardReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - AvatarFetterLevelRewardReq req = AvatarFetterLevelRewardReq.parseFrom(payload); - if (req.getFetterLevel() < 10) { - // You don't have a full level of fetter level, why do you want to get a divorce certificate? - session.send(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel())); - } else { - long avatarGuid = req.getAvatarGuid(); - - Avatar avatar = session - .getPlayer() - .getAvatars() - .getAvatarByGuid(avatarGuid); - - int rewardId = avatar.getNameCardRewardId(); - - RewardData card = GameData.getRewardDataMap().get(rewardId); - int cardId = card.getRewardItemList().get(0).getItemId(); - - if (session.getPlayer().getNameCardList().contains(cardId)) { - // Already got divorce certificate. - session.getPlayer().sendPacket(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel(), rewardId)); - return; - } - - GameItem item = new GameItem(cardId); - session.getPlayer().getInventory().addItem(item, ActionReason.FetterLevelReward); - session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId)); - session.send(new PacketAvatarFetterDataNotify(avatar)); - session.send(new PacketAvatarDataNotify(avatar.getPlayer())); - session.send(new PacketAvatarFetterLevelRewardRsp(avatarGuid, req.getFetterLevel(), rewardId)); - } - } -} +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.data.GameData; +import emu.grasscutter.data.excels.RewardData; +import emu.grasscutter.game.avatar.Avatar; +import emu.grasscutter.game.inventory.GameItem; +import emu.grasscutter.game.props.ActionReason; +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketAvatarDataNotify; +import emu.grasscutter.server.packet.send.PacketAvatarFetterDataNotify; +import emu.grasscutter.server.packet.send.PacketAvatarFetterLevelRewardRsp; +import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify; + +@Opcodes(PacketOpcodes.AvatarFetterLevelRewardReq) +public class HandlerAvatarFetterLevelRewardReq extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + AvatarFetterLevelRewardReq req = AvatarFetterLevelRewardReq.parseFrom(payload); + if (req.getFetterLevel() < 10) { + // You don't have a full level of fetter level, why do you want to get a divorce certificate? + session.send(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel())); + } else { + long avatarGuid = req.getAvatarGuid(); + + Avatar avatar = session + .getPlayer() + .getAvatars() + .getAvatarByGuid(avatarGuid); + + int rewardId = avatar.getNameCardRewardId(); + + RewardData card = GameData.getRewardDataMap().get(rewardId); + int cardId = card.getRewardItemList().get(0).getItemId(); + + if (session.getPlayer().getNameCardList().contains(cardId)) { + // Already got divorce certificate. + session.getPlayer().sendPacket(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel(), rewardId)); + return; + } + + GameItem item = new GameItem(cardId); + session.getPlayer().getInventory().addItem(item, ActionReason.FetterLevelReward); + session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId)); + session.send(new PacketAvatarFetterDataNotify(avatar)); + session.send(new PacketAvatarDataNotify(avatar.getPlayer())); + session.send(new PacketAvatarFetterLevelRewardRsp(avatarGuid, req.getFetterLevel(), rewardId)); + } + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarPromoteReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarPromoteReq.java index 6b2540850..7ee1b5467 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarPromoteReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarPromoteReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarPromoteReqOuterClass.AvatarPromoteReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.AvatarPromoteReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarSkillUpgradeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarSkillUpgradeReq.java index c90b1a507..9cc09e771 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarSkillUpgradeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarSkillUpgradeReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarSkillUpgradeReqOuterClass.AvatarSkillUpgradeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.AvatarSkillUpgradeReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarUpgradeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarUpgradeReq.java index e13cec34c..f8d09e8cf 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarUpgradeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarUpgradeReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarUpgradeReqOuterClass.AvatarUpgradeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.AvatarUpgradeReq) @@ -15,10 +15,10 @@ public class HandlerAvatarUpgradeReq extends PacketHandler { // Level up avatar session.getServer().getInventorySystem().upgradeAvatar( - session.getPlayer(), - req.getAvatarGuid(), - req.getItemId(), - req.getCount() + session.getPlayer(), + req.getAvatarGuid(), + req.getItemId(), + req.getCount() ); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarWearFlycloakReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarWearFlycloakReq.java index a33db86df..3cd9ff7dd 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarWearFlycloakReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarWearFlycloakReq.java @@ -1,24 +1,24 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarWearFlycloakReqOuterClass.AvatarWearFlycloakReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketAvatarWearFlycloakRsp; @Opcodes(PacketOpcodes.AvatarWearFlycloakReq) public class HandlerAvatarWearFlycloakReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - AvatarWearFlycloakReq req = AvatarWearFlycloakReq.parseFrom(payload); - - boolean success = session.getPlayer().getAvatars().wearFlycloak(req.getAvatarGuid(), req.getFlycloakId()); - - if (success) { - session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp(req.getAvatarGuid(), req.getFlycloakId())); - } else { - session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp()); - } - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + AvatarWearFlycloakReq req = AvatarWearFlycloakReq.parseFrom(payload); + + boolean success = session.getPlayer().getAvatars().wearFlycloak(req.getAvatarGuid(), req.getFlycloakId()); + + if (success) { + session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp(req.getAvatarGuid(), req.getFlycloakId())); + } else { + session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp()); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java index d9ae9d3ba..012e4d11f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBackMyWorldReq.java @@ -11,23 +11,23 @@ import emu.grasscutter.server.packet.send.PacketBackMyWorldRsp; @Opcodes(PacketOpcodes.BackMyWorldReq) public class HandlerBackMyWorldReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - Scene scene = session.getPlayer().getScene(); - int prevScene = scene.getPrevScene(); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + Scene scene = session.getPlayer().getScene(); + int prevScene = scene.getPrevScene(); - // Sanity check for switching between teapot realms - if (prevScene >= 2000 && prevScene <= 2400) { - prevScene = 3; - } + // Sanity check for switching between teapot realms + if (prevScene >= 2000 && prevScene <= 2400) { + prevScene = 3; + } - session.getPlayer().getWorld().transferPlayerToScene( - session.getPlayer(), - prevScene, - TeleportType.WAYPOINT, - session.getPlayer().getPrevPos()); + session.getPlayer().getWorld().transferPlayerToScene( + session.getPlayer(), + prevScene, + TeleportType.WAYPOINT, + session.getPlayer().getPrevPos()); - session.send(new PacketBackMyWorldRsp()); - } + session.send(new PacketBackMyWorldRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyBattlePassLevelReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyBattlePassLevelReq.java index abe2aebd8..97d572668 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyBattlePassLevelReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyBattlePassLevelReq.java @@ -1,22 +1,22 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.BuyBattlePassLevelReqOuterClass.BuyBattlePassLevelReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketBuyBattlePassLevelRsp; @Opcodes(PacketOpcodes.BuyBattlePassLevelReq) public class HandlerBuyBattlePassLevelReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - BuyBattlePassLevelReq req = BuyBattlePassLevelReq.parseFrom(payload); - - int buyLevel = session.getPlayer().getBattlePassManager().buyLevels(req.getBuyLevel()); - - session.send(new PacketBuyBattlePassLevelRsp(buyLevel)); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + BuyBattlePassLevelReq req = BuyBattlePassLevelReq.parseFrom(payload); + + int buyLevel = session.getPlayer().getBattlePassManager().buyLevels(req.getBuyLevel()); + + session.send(new PacketBuyBattlePassLevelRsp(buyLevel)); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCalcWeaponUpgradeReturnItemsReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCalcWeaponUpgradeReturnItemsReq.java index 3d26b5432..9eb5f2c25 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCalcWeaponUpgradeReturnItemsReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCalcWeaponUpgradeReturnItemsReq.java @@ -1,15 +1,15 @@ package emu.grasscutter.server.packet.recv; -import java.util.List; - import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CalcWeaponUpgradeReturnItemsReqOuterClass.CalcWeaponUpgradeReturnItemsReq; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketCalcWeaponUpgradeReturnItemsRsp; +import java.util.List; + @Opcodes(PacketOpcodes.CalcWeaponUpgradeReturnItemsReq) public class HandlerCalcWeaponUpgradeReturnItemsReq extends PacketHandler { @@ -18,10 +18,10 @@ public class HandlerCalcWeaponUpgradeReturnItemsReq extends PacketHandler { CalcWeaponUpgradeReturnItemsReq req = CalcWeaponUpgradeReturnItemsReq.parseFrom(payload); List returnOres = session.getServer().getInventorySystem().calcWeaponUpgradeReturnItems( - session.getPlayer(), - req.getTargetWeaponGuid(), - req.getFoodWeaponGuidListList(), - req.getItemParamListList() + session.getPlayer(), + req.getTargetWeaponGuid(), + req.getFoodWeaponGuidListList(), + req.getItemParamListList() ); if (returnOres != null) { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeAvatarReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeAvatarReq.java index eeba74418..8088758d2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeAvatarReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeAvatarReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeAvatarReqOuterClass.ChangeAvatarReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ChangeAvatarReq) public class HandlerChangeAvatarReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - ChangeAvatarReq req = ChangeAvatarReq.parseFrom(payload); - - session.getPlayer().getTeamManager().changeAvatar(req.getGuid()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ChangeAvatarReq req = ChangeAvatarReq.parseFrom(payload); + + session.getPlayer().getTeamManager().changeAvatar(req.getGuid()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeGameTimeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeGameTimeReq.java index 17d66e60e..0bc477046 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeGameTimeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeGameTimeReq.java @@ -2,24 +2,24 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeGameTimeReqOuterClass.ChangeGameTimeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketChangeGameTimeRsp; @Opcodes(PacketOpcodes.ChangeGameTimeReq) public class HandlerChangeGameTimeReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - ChangeGameTimeReq req = ChangeGameTimeReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ChangeGameTimeReq req = ChangeGameTimeReq.parseFrom(payload); - session.getPlayer().getScene().changeTime(req.getGameTime()); + session.getPlayer().getScene().changeTime(req.getGameTime()); session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_GAME_TIME_TICK, - req.getGameTime() / 60 , // hours + req.getGameTime() / 60, // hours req.getExtraDays()); //days - session.getPlayer().sendPacket(new PacketChangeGameTimeRsp(session.getPlayer())); - } + session.getPlayer().sendPacket(new PacketChangeGameTimeRsp(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMailStarNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMailStarNotify.java index 0967cfc47..dd5fa0093 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMailStarNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMailStarNotify.java @@ -23,7 +23,7 @@ public class HandlerChangeMailStarNotify extends PacketHandler { for (int mailId : req.getMailIdListList()) { Mail message = session.getPlayer().getMail(mailId); - message.importance = req.getIsStar() == true ? 1 : 0; + message.importance = req.getIsStar() ? 1 : 0; session.getPlayer().replaceMailByIndex(mailId, message); updatedMail.add(message); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMpTeamAvatarReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMpTeamAvatarReq.java index a8b0b05e8..8a12cea12 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMpTeamAvatarReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeMpTeamAvatarReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeMpTeamAvatarReqOuterClass.ChangeMpTeamAvatarReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ChangeMpTeamAvatarReq) public class HandlerChangeMpTeamAvatarReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - ChangeMpTeamAvatarReq req = ChangeMpTeamAvatarReq.parseFrom(payload); - - session.getPlayer().getTeamManager().setupMpTeam(req.getAvatarGuidListList()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ChangeMpTeamAvatarReq req = ChangeMpTeamAvatarReq.parseFrom(payload); + + session.getPlayer().getTeamManager().setupMpTeam(req.getAvatarGuidListList()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeTeamNameReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeTeamNameReq.java index c754ff7c5..852694acd 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeTeamNameReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChangeTeamNameReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeTeamNameReqOuterClass.ChangeTeamNameReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ChangeTeamNameReq) public class HandlerChangeTeamNameReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - ChangeTeamNameReq req = ChangeTeamNameReq.parseFrom(payload); - - session.getPlayer().getTeamManager().setTeamName(req.getTeamId(), req.getTeamName()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ChangeTeamNameReq req = ChangeTeamNameReq.parseFrom(payload); + + session.getPlayer().getTeamManager().setTeamName(req.getTeamId(), req.getTeamName()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChooseCurAvatarTeamReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChooseCurAvatarTeamReq.java index 16c28ad48..f53d60e0e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerChooseCurAvatarTeamReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerChooseCurAvatarTeamReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChooseCurAvatarTeamReqOuterClass.ChooseCurAvatarTeamReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ChooseCurAvatarTeamReq) public class HandlerChooseCurAvatarTeamReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - ChooseCurAvatarTeamReq req = ChooseCurAvatarTeamReq.parseFrom(payload); - - session.getPlayer().getTeamManager().setCurrentTeam(req.getTeamId()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ChooseCurAvatarTeamReq req = ChooseCurAvatarTeamReq.parseFrom(payload); + + session.getPlayer().getTeamManager().setCurrentTeam(req.getTeamId()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java index 5b33cc5e1..fa534ac23 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java @@ -2,12 +2,11 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.utils.Utils; @Opcodes(PacketOpcodes.ClientAbilityInitFinishNotify) public class HandlerClientAbilityInitFinishNotify extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombatInvocationsNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombatInvocationsNotify.java index 80dcf9849..d88726d71 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombatInvocationsNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombatInvocationsNotify.java @@ -5,6 +5,7 @@ import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult; import emu.grasscutter.net.proto.CombatInvocationsNotifyOuterClass.CombatInvocationsNotify; @@ -12,7 +13,6 @@ import emu.grasscutter.net.proto.CombatInvokeEntryOuterClass.CombatInvokeEntry; import emu.grasscutter.net.proto.EntityMoveInfoOuterClass.EntityMoveInfo; import emu.grasscutter.net.proto.EvtAnimatorParameterInfoOuterClass.EvtAnimatorParameterInfo; import emu.grasscutter.net.proto.EvtBeingHitInfoOuterClass.EvtBeingHitInfo; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.proto.MotionInfoOuterClass.MotionInfo; import emu.grasscutter.net.proto.MotionStateOuterClass.MotionState; import emu.grasscutter.net.proto.PlayerDieTypeOuterClass; @@ -146,7 +146,7 @@ public class HandlerCombatInvocationsNotify extends PacketHandler { } if (damageFactor > 0) { Grasscutter.getLogger().debug(currentHP + "/" + maxHP + "\tLandingSpeed: " + cachedLandingSpeed + - "\tDamageFactor: " + damageFactor + "\tDamage: " + damage + "\tNewHP: " + newHP); + "\tDamageFactor: " + damageFactor + "\tDamage: " + damage + "\tNewHP: " + newHP); } else { Grasscutter.getLogger().trace(currentHP + "/" + maxHP + "\tLandingSpeed: 0\tNo damage"); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombineReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombineReq.java index cbcd1f038..0837c5d7e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombineReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCombineReq.java @@ -1,7 +1,6 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.data.common.ItemParamData; -import emu.grasscutter.data.excels.CombineData; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; @@ -22,27 +21,26 @@ public class HandlerCombineReq extends PacketHandler { CombineReqOuterClass.CombineReq req = CombineReqOuterClass.CombineReq.parseFrom(payload); var result = session.getServer().getCombineSystem() - .combineItem(session.getPlayer(), req.getCombineId(), req.getCombineCount()); + .combineItem(session.getPlayer(), req.getCombineId(), req.getCombineCount()); if (result == null) { return; } session.send(new PacketCombineRsp(req, - toItemParamList(result.getMaterial()), - toItemParamList(result.getResult()), - toItemParamList(result.getExtra()), - toItemParamList(result.getBack()), - toItemParamList(result.getBack()))); + toItemParamList(result.getMaterial()), + toItemParamList(result.getResult()), + toItemParamList(result.getExtra()), + toItemParamList(result.getBack()), + toItemParamList(result.getBack()))); } private List toItemParamList(List list) { return list.stream() - .map(item -> ItemParamOuterClass.ItemParam.newBuilder() - .setItemId(item.getId()) - .setCount(item.getCount()) - .build()) - .collect(Collectors.toList()); + .map(item -> ItemParamOuterClass.ItemParam.newBuilder() + .setItemId(item.getId()) + .setCount(item.getCount()) + .build()) + .collect(Collectors.toList()); } } - diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCreateVehicleReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCreateVehicleReq.java index 367d46677..c8345db0e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerCreateVehicleReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerCreateVehicleReq.java @@ -4,18 +4,16 @@ import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CreateVehicleReqOuterClass; - import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketCreateVehicleRsp; - import emu.grasscutter.utils.Position; @Opcodes(PacketOpcodes.CreateVehicleReq) public class HandlerCreateVehicleReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - CreateVehicleReqOuterClass.CreateVehicleReq req = CreateVehicleReqOuterClass.CreateVehicleReq.parseFrom(payload); - session.send(new PacketCreateVehicleRsp(session.getPlayer(), req.getVehicleId(), req.getScenePointId(), new Position(req.getPos()), new Position(req.getRot()))); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + CreateVehicleReqOuterClass.CreateVehicleReq req = CreateVehicleReqOuterClass.CreateVehicleReq.parseFrom(payload); + session.send(new PacketCreateVehicleRsp(session.getPlayer(), req.getVehicleId(), req.getScenePointId(), new Position(req.getPos()), new Position(req.getRot()))); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDealAddFriendReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDealAddFriendReq.java index ebf1e39d0..93619dc2f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDealAddFriendReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDealAddFriendReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DealAddFriendReqOuterClass.DealAddFriendReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.DealAddFriendReq) public class HandlerDealAddFriendReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - DealAddFriendReq req = DealAddFriendReq.parseFrom(payload); - - session.getPlayer().getFriendsList().handleFriendRequest(req.getTargetUid(), req.getDealAddFriendResult()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + DealAddFriendReq req = DealAddFriendReq.parseFrom(payload); + + session.getPlayer().getFriendsList().handleFriendRequest(req.getTargetUid(), req.getDealAddFriendResult()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelBackupAvatarTeamReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelBackupAvatarTeamReq.java index 33c864102..63362a1a2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelBackupAvatarTeamReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelBackupAvatarTeamReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DelBackupAvatarTeamReqOuterClass.DelBackupAvatarTeamReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.DelBackupAvatarTeamReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelMailReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelMailReq.java index 2c95cc307..88c202982 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelMailReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDelMailReq.java @@ -1,13 +1,10 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.Grasscutter; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DelMailReqOuterClass; -import emu.grasscutter.net.proto.DeleteFriendReqOuterClass; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketDelMailRsp; @Opcodes(PacketOpcodes.DelMailReq) public class HandlerDelMailReq extends PacketHandler { @@ -15,7 +12,7 @@ public class HandlerDelMailReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { DelMailReqOuterClass.DelMailReq req = DelMailReqOuterClass.DelMailReq.parseFrom(payload); - + session.getPlayer().getMailHandler().deleteMail(req.getMailIdListList()); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDeleteFriendReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDeleteFriendReq.java index 5f0c958ba..241c96543 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDeleteFriendReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDeleteFriendReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DeleteFriendReqOuterClass.DeleteFriendReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.DeleteFriendReq) public class HandlerDeleteFriendReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - DeleteFriendReq req = DeleteFriendReq.parseFrom(payload); - - session.getPlayer().getFriendsList().deleteFriend(req.getTargetUid()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + DeleteFriendReq req = DeleteFriendReq.parseFrom(payload); + + session.getPlayer().getFriendsList().deleteFriend(req.getTargetUid()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDestroyMaterialReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDestroyMaterialReq.java index 9a5e63397..b4bbe7388 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDestroyMaterialReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDestroyMaterialReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DestroyMaterialReqOuterClass.DestroyMaterialReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.DestroyMaterialReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDoGachaReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDoGachaReq.java index e8ad28e10..3ff67444f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDoGachaReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDoGachaReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DoGachaReqOuterClass.DoGachaReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.DoGachaReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDungeonEntryInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDungeonEntryInfoReq.java index 34ad24be7..e011efadd 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerDungeonEntryInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerDungeonEntryInfoReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DungeonEntryInfoReqOuterClass.DungeonEntryInfoReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.DungeonEntryInfoReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java index 919490c48..102ec0e90 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java @@ -2,10 +2,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.Grasscutter; import emu.grasscutter.game.player.Player.SceneLoadState; -import emu.grasscutter.game.quest.QuestGroupSuite; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.*; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneReadyReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneReadyReq.java index b9a979b6c..9a9efccb2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneReadyReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneReadyReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketEnterScenePeerNotify; import emu.grasscutter.server.packet.send.PacketEnterSceneReadyRsp; @Opcodes(PacketOpcodes.EnterSceneReadyReq) public class HandlerEnterSceneReadyReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) { - session.send(new PacketEnterScenePeerNotify(session.getPlayer())); - session.send(new PacketEnterSceneReadyRsp(session.getPlayer())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) { + session.send(new PacketEnterScenePeerNotify(session.getPlayer())); + session.send(new PacketEnterSceneReadyRsp(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterTransPointRegionNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterTransPointRegionNotify.java index ac1624614..5d60c3b99 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterTransPointRegionNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterTransPointRegionNotify.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.game.managers.SotSManager; -import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; @@ -10,7 +8,7 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.EnterTransPointRegionNotify) public class HandlerEnterTransPointRegionNotify extends PacketHandler { @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception{ + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { session.getPlayer().getSotsManager().handleEnterTransPointRegionNotify(); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterWorldAreaReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterWorldAreaReq.java index 53211a12d..330a8eb9a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterWorldAreaReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterWorldAreaReq.java @@ -1,23 +1,23 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EnterWorldAreaReqOuterClass.EnterWorldAreaReq; import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketEnterWorldAreaRsp; @Opcodes(PacketOpcodes.EnterWorldAreaReq) public class HandlerEnterWorldAreaReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - PacketHead head = PacketHead.parseFrom(header); - EnterWorldAreaReq enterWorld = EnterWorldAreaReq.parseFrom(payload); - - session.send(new PacketEnterWorldAreaRsp(head.getClientSequenceId(), enterWorld)); - //session.send(new PacketScenePlayerLocationNotify(session.getPlayer())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + PacketHead head = PacketHead.parseFrom(header); + EnterWorldAreaReq enterWorld = EnterWorldAreaReq.parseFrom(payload); + + session.send(new PacketEnterWorldAreaRsp(head.getClientSequenceId(), enterWorld)); + //session.send(new PacketScenePlayerLocationNotify(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEntityAiSyncNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEntityAiSyncNotify.java index ea0e1b847..6182114ea 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEntityAiSyncNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEntityAiSyncNotify.java @@ -1,22 +1,22 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EntityAiSyncNotifyOuterClass.EntityAiSyncNotify; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketEntityAiSyncNotify; @Opcodes(PacketOpcodes.EntityAiSyncNotify) public class HandlerEntityAiSyncNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - EntityAiSyncNotify notify = EntityAiSyncNotify.parseFrom(payload); - - if (notify.getLocalAvatarAlertedMonsterListCount() > 0) { - session.getPlayer().getScene().broadcastPacket(new PacketEntityAiSyncNotify(notify)); - } - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + EntityAiSyncNotify notify = EntityAiSyncNotify.parseFrom(payload); + + if (notify.getLocalAvatarAlertedMonsterListCount() > 0) { + session.getPlayer().getScene().broadcastPacket(new PacketEntityAiSyncNotify(notify)); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncCombatThreatInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncCombatThreatInfoNotify.java index 84c6df4dd..e92de89e5 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncCombatThreatInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncCombatThreatInfoNotify.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.EvtAiSyncCombatThreatInfoNotify) public class HandlerEvtAiSyncCombatThreatInfoNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncSkillCdNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncSkillCdNotify.java index 03ad8cad2..cba71a170 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncSkillCdNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtAiSyncSkillCdNotify.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.EvtAiSyncSkillCdNotify) public class HandlerEvtAiSyncSkillCdNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtCreateGadgetNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtCreateGadgetNotify.java index 4d7007e1e..6d4be1408 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtCreateGadgetNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtCreateGadgetNotify.java @@ -1,11 +1,11 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.game.entity.EntitySolarIsotomaClientGadget; import emu.grasscutter.game.entity.EntityClientGadget; +import emu.grasscutter.game.entity.EntitySolarIsotomaClientGadget; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EvtCreateGadgetNotifyOuterClass.EvtCreateGadgetNotify; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.EvtCreateGadgetNotify) @@ -28,8 +28,7 @@ public class HandlerEvtCreateGadgetNotify extends PacketHandler { new EntitySolarIsotomaClientGadget(session.getPlayer().getScene(), session.getPlayer(), notify); //Default. - default -> - new EntityClientGadget(session.getPlayer().getScene(), session.getPlayer(), notify); + default -> new EntityClientGadget(session.getPlayer().getScene(), session.getPlayer(), notify); }; session.getPlayer().getScene().onPlayerCreateGadget(gadget); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtDestroyGadgetNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtDestroyGadgetNotify.java index 7d1abe8ea..8cb697dfc 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtDestroyGadgetNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtDestroyGadgetNotify.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EvtDestroyGadgetNotifyOuterClass.EvtDestroyGadgetNotify; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.EvtDestroyGadgetNotify) public class HandlerEvtDestroyGadgetNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - EvtDestroyGadgetNotify notify = EvtDestroyGadgetNotify.parseFrom(payload); - session.getPlayer().getScene().onPlayerDestroyGadget(notify.getEntityId()); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + EvtDestroyGadgetNotify notify = EvtDestroyGadgetNotify.parseFrom(payload); + + session.getPlayer().getScene().onPlayerDestroyGadget(notify.getEntityId()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtEntityRenderersChangedNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtEntityRenderersChangedNotify.java index 091bc00d4..172d04c38 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtEntityRenderersChangedNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEvtEntityRenderersChangedNotify.java @@ -4,16 +4,14 @@ import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EvtEntityRenderersChangedNotifyOuterClass; -import emu.grasscutter.net.proto.ForwardTypeOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketEvtEntityRenderersChangedNotify; -import emu.grasscutter.server.packet.send.PacketWorldPlayerLocationNotify; @Opcodes(PacketOpcodes.EvtEntityRenderersChangedNotify) public class HandlerEvtEntityRenderersChangedNotify extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { var req = EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify.parseFrom(payload); switch (req.getForwardType()) { @@ -25,6 +23,6 @@ public class HandlerEvtEntityRenderersChangedNotify extends PacketHandler { session.getPlayer().getScene().getWorld().getHost().sendPacket(new PacketEvtEntityRenderersChangedNotify(req)); } - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerExitTransPointRegionNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerExitTransPointRegionNotify.java index 6b4c1f934..ecb41bdd5 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerExitTransPointRegionNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerExitTransPointRegionNotify.java @@ -1,8 +1,5 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.Grasscutter; -import emu.grasscutter.game.managers.SotSManager; -import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; @@ -11,7 +8,7 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ExitTransPointRegionNotify) public class HandlerExitTransPointRegionNotify extends PacketHandler { @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception{ + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { session.getPlayer().getSotsManager().handleExitTransPointRegionNotify(); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeGetQueueDataReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeGetQueueDataReq.java index a7ca38d2d..1be6a8b2e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeGetQueueDataReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeGetQueueDataReq.java @@ -1,14 +1,14 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ForgeGetQueueDataReq) public class HandlerForgeGetQueueDataReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.getPlayer().getForgingManager().handleForgeGetQueueDataReq(); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.getPlayer().getForgingManager().handleForgeGetQueueDataReq(); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeQueueManipulateReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeQueueManipulateReq.java index 52ce87ddb..b6891613c 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeQueueManipulateReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeQueueManipulateReq.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ForgeQueueManipulateReqOuterClass.ForgeQueueManipulateReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ForgeQueueManipulateReq) public class HandlerForgeQueueManipulateReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - ForgeQueueManipulateReq req = ForgeQueueManipulateReq.parseFrom(payload); - session.getPlayer().getForgingManager().handleForgeQueueManipulateReq(req); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ForgeQueueManipulateReq req = ForgeQueueManipulateReq.parseFrom(payload); + session.getPlayer().getForgingManager().handleForgeQueueManipulateReq(req); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeStartReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeStartReq.java index 221dd5c59..e8a8134c2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeStartReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerForgeStartReq.java @@ -1,15 +1,10 @@ package emu.grasscutter.server.packet.recv; -import java.lang.invoke.StringConcatFactory; - -import emu.grasscutter.Grasscutter; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ForgeStartReqOuterClass; -import emu.grasscutter.net.proto.DeleteFriendReqOuterClass; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketDelMailRsp; @Opcodes(PacketOpcodes.ForgeStartReq) public class HandlerForgeStartReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeReq.java index 97d42a2b1..774b6c848 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeReq.java @@ -7,10 +7,10 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.FurnitureMakeReq) public class HandlerFurnitureMakeReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.getPlayer().getFurnitureManager().queryStatus(); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.getPlayer().getFurnitureManager().queryStatus(); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeStartReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeStartReq.java index 7376d80f2..eb074af89 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeStartReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerFurnitureMakeStartReq.java @@ -8,13 +8,13 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.FurnitureMakeStartReq) public class HandlerFurnitureMakeStartReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = FurnitureMakeStartReqOuterClass.FurnitureMakeStartReq.parseFrom(payload); - session.getPlayer().getFurnitureManager().startMake(req.getMakeId(), req.getAvatarId()); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = FurnitureMakeStartReqOuterClass.FurnitureMakeStartReq.parseFrom(payload); - } + session.getPlayer().getFurnitureManager().startMake(req.getMakeId(), req.getAvatarId()); + + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGadgetInteractReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGadgetInteractReq.java index 9dadef7bb..c61942323 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGadgetInteractReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGadgetInteractReq.java @@ -2,20 +2,20 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.GadgetInteractReq) public class HandlerGadgetInteractReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - GadgetInteractReq req = GadgetInteractReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + GadgetInteractReq req = GadgetInteractReq.parseFrom(payload); session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET, req.getGadgetId()); - session.getPlayer().interactWith(req.getGadgetEntityId(), req); - } + session.getPlayer().interactWith(req.getGadgetEntityId(), req); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetActivityInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetActivityInfoReq.java index 8ecad3514..b87dab46f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetActivityInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetActivityInfoReq.java @@ -1,8 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetActivityInfoReqOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetActivityInfoRsp; @@ -11,12 +11,12 @@ import java.util.HashSet; @Opcodes(PacketOpcodes.GetActivityInfoReq) public class HandlerGetActivityInfoReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { var req = GetActivityInfoReqOuterClass.GetActivityInfoReq.parseFrom(payload); - session.send(new PacketGetActivityInfoRsp( + session.send(new PacketGetActivityInfoRsp( new HashSet<>(req.getActivityIdListList()), session.getPlayer().getActivityManager())); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllH5ActivityInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllH5ActivityInfoReq.java index 9ec01d195..54e0fe360 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllH5ActivityInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllH5ActivityInfoReq.java @@ -1,17 +1,17 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketH5ActivityIdsNotify; @Opcodes(PacketOpcodes.GetAllH5ActivityInfoReq) public class HandlerGetAllH5ActivityInfoReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketH5ActivityIdsNotify()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketH5ActivityIdsNotify()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllMailReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllMailReq.java index a1c451ab0..93db71aba 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllMailReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllMailReq.java @@ -1,14 +1,11 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.Grasscutter; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetAllMailReqOuterClass; -import emu.grasscutter.net.proto.GetPlayerTokenReqOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetAllMailRsp; -import emu.grasscutter.server.packet.send.PacketGetGachaInfoRsp; @Opcodes(PacketOpcodes.GetAllMailReq) public class HandlerGetAllMailReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllUnlockNameCardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllUnlockNameCardReq.java index 37bf3a03b..27509fd8d 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllUnlockNameCardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAllUnlockNameCardReq.java @@ -1,17 +1,17 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetAllUnlockNameCardRsp; @Opcodes(PacketOpcodes.GetAllUnlockNameCardReq) public class HandlerGetAllUnlockNameCardReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketGetAllUnlockNameCardRsp(session.getPlayer())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketGetAllUnlockNameCardRsp(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAuthkeyReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAuthkeyReq.java index 16440426e..1384e4af3 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAuthkeyReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetAuthkeyReq.java @@ -1,17 +1,17 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetAuthkeyRsp; @Opcodes(PacketOpcodes.GetAuthkeyReq) public class HandlerGetAuthkeyReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketGetAuthkeyRsp()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketGetAuthkeyRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetDailyDungeonEntryInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetDailyDungeonEntryInfoReq.java index f81e9bb6b..20701744d 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetDailyDungeonEntryInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetDailyDungeonEntryInfoReq.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.Grasscutter; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; @@ -13,8 +12,8 @@ public class HandlerGetDailyDungeonEntryInfoReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req= - GetDailyDungeonEntryInfoReqOuterClass.GetDailyDungeonEntryInfoReq.parseFrom(payload); + var req = + GetDailyDungeonEntryInfoReqOuterClass.GetDailyDungeonEntryInfoReq.parseFrom(payload); session.send(new PacketGetDailyDungeonEntryInfoRsp(req.getSceneId())); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFriendShowAvatarInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFriendShowAvatarInfoReq.java index 61fd31640..52d0cfce2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFriendShowAvatarInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFriendShowAvatarInfoReq.java @@ -11,16 +11,16 @@ import emu.grasscutter.server.packet.send.PacketGetFriendShowAvatarInfoRsp; @Opcodes(PacketOpcodes.GetFriendShowAvatarInfoReq) public class HandlerGetFriendShowAvatarInfoReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - GetFriendShowAvatarInfoReq req = GetFriendShowAvatarInfoReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + GetFriendShowAvatarInfoReq req = GetFriendShowAvatarInfoReq.parseFrom(payload); - int targetUid = req.getUid(); - Player targetPlayer = session.getServer().getPlayerByUid(targetUid, true); + int targetUid = req.getUid(); + Player targetPlayer = session.getServer().getPlayerByUid(targetUid, true); - if (targetPlayer.isShowAvatars()) { - session.send(new PacketGetFriendShowAvatarInfoRsp(targetUid, targetPlayer.getShowAvatarInfoList())); - } - } + if (targetPlayer.isShowAvatars()) { + session.send(new PacketGetFriendShowAvatarInfoRsp(targetUid, targetPlayer.getShowAvatarInfoList())); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFurnitureCurModuleArrangeCountReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFurnitureCurModuleArrangeCountReq.java index 9fa71a02a..747974cb9 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFurnitureCurModuleArrangeCountReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFurnitureCurModuleArrangeCountReq.java @@ -8,10 +8,10 @@ import emu.grasscutter.server.packet.send.PacketFurnitureCurModuleArrangeCountNo @Opcodes(PacketOpcodes.GetFurnitureCurModuleArrangeCountReq) public class HandlerGetFurnitureCurModuleArrangeCountReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketFurnitureCurModuleArrangeCountNotify()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketFurnitureCurModuleArrangeCountNotify()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java index 085952b93..87a66323a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java @@ -1,12 +1,9 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.game.gacha.GachaBanner; -import emu.grasscutter.game.gacha.PlayerGachaBannerInfo; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketGachaWishRsp; import emu.grasscutter.server.packet.send.PacketGetGachaInfoRsp; @Opcodes(PacketOpcodes.GetGachaInfoReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetHomeLevelUpRewardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetHomeLevelUpRewardReq.java index ad6c8921f..2c8bc4cc9 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetHomeLevelUpRewardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetHomeLevelUpRewardReq.java @@ -1,19 +1,18 @@ package emu.grasscutter.server.packet.recv; -import java.util.List; -import java.util.Set; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.common.ItemParamData; - import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.GetHomeLevelUpRewardReqOuterClass.GetHomeLevelUpRewardReq; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetHomeLevelUpRewardRsp; -import emu.grasscutter.net.proto.GetHomeLevelUpRewardReqOuterClass.GetHomeLevelUpRewardReq; + +import java.util.List; +import java.util.Set; @Opcodes(PacketOpcodes.GetHomeLevelUpRewardReq) public class HandlerGetHomeLevelUpRewardReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetInvestigationMonsterReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetInvestigationMonsterReq.java index 27a2f6cf6..885724638 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetInvestigationMonsterReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetInvestigationMonsterReq.java @@ -15,9 +15,9 @@ public class HandlerGetInvestigationMonsterReq extends PacketHandler { var req = GetInvestigationMonsterReqOuterClass.GetInvestigationMonsterReq.parseFrom(payload); session.send(new PacketGetInvestigationMonsterRsp( - session.getPlayer(), - session.getServer().getWorldDataSystem(), - req.getCityIdListList())); + session.getPlayer(), + session.getServer().getWorldDataSystem(), + req.getCityIdListList())); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetMailItemReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetMailItemReq.java index f00bf911e..38e2f47c0 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetMailItemReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetMailItemReq.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.recv; -import emu.grasscutter.Grasscutter; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerBlacklistReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerBlacklistReq.java index 7036aff6a..8e53e0be4 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerBlacklistReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerBlacklistReq.java @@ -2,16 +2,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.GetPlayerBlacklistReq) public class HandlerGetPlayerBlacklistReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new BasePacket(PacketOpcodes.GetPlayerBlacklistRsp).buildHeader(3)); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new BasePacket(PacketOpcodes.GetPlayerBlacklistRsp).buildHeader(3)); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerFriendListReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerFriendListReq.java index a825f1573..8c705d6cc 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerFriendListReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerFriendListReq.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetPlayerFriendListRsp; @Opcodes(PacketOpcodes.GetPlayerFriendListReq) public class HandlerGetPlayerFriendListReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - //session.send(new PacketGetPlayerAskFriendListRsp(session.getPlayer())); - session.send(new PacketGetPlayerFriendListRsp(session.getPlayer())); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + //session.send(new PacketGetPlayerAskFriendListRsp(session.getPlayer())); + session.send(new PacketGetPlayerFriendListRsp(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerHomeCompInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerHomeCompInfoReq.java index 165665a73..5365669f3 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerHomeCompInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerHomeCompInfoReq.java @@ -8,10 +8,10 @@ import emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify; @Opcodes(PacketOpcodes.GetPlayerHomeCompInfoReq) public class HandlerGetPlayerHomeCompInfoReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerSocialDetailReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerSocialDetailReq.java index eafd15b78..0655d95f2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerSocialDetailReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerSocialDetailReq.java @@ -1,26 +1,26 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetPlayerSocialDetailReqOuterClass.GetPlayerSocialDetailReq; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetPlayerSocialDetailRsp; @Opcodes(PacketOpcodes.GetPlayerSocialDetailReq) public class HandlerGetPlayerSocialDetailReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - GetPlayerSocialDetailReq req = GetPlayerSocialDetailReq.parseFrom(payload); - - SocialDetail.Builder detail = session.getServer().getSocialDetailByUid(req.getUid()); - if (detail != null) { - detail.setIsFriend(session.getPlayer().getFriendsList().isFriendsWith(req.getUid())); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + GetPlayerSocialDetailReq req = GetPlayerSocialDetailReq.parseFrom(payload); - session.send(new PacketGetPlayerSocialDetailRsp(detail)); - } + SocialDetail.Builder detail = session.getServer().getSocialDetailByUid(req.getUid()); + + if (detail != null) { + detail.setIsFriend(session.getPlayer().getFriendsList().isFriendsWith(req.getUid())); + } + + session.send(new PacketGetPlayerSocialDetailRsp(detail)); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java index 922205eb1..bcc9816f3 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java @@ -5,9 +5,9 @@ import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.Account; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetPlayerTokenReqOuterClass.GetPlayerTokenReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.event.game.PlayerCreationEvent; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.game.GameSession.SessionState; @@ -17,13 +17,11 @@ import emu.grasscutter.utils.Crypto; import emu.grasscutter.utils.Utils; import javax.crypto.Cipher; - -import static emu.grasscutter.config.Configuration.ACCOUNT; -import static emu.grasscutter.config.Configuration.GAME_OPTIONS; - import java.nio.ByteBuffer; import java.security.Signature; +import static emu.grasscutter.config.Configuration.ACCOUNT; + @Opcodes(PacketOpcodes.GetPlayerTokenReq) public class HandlerGetPlayerTokenReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetRegionSearchReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetRegionSearchReq.java index 88ed20910..18f29f952 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetRegionSearchReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetRegionSearchReq.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.GetRegionSearchReq) public class HandlerGetRegionSearchReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetSceneAreaReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetSceneAreaReq.java index 672c1b4f2..7f30ff5e3 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetSceneAreaReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetSceneAreaReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetSceneAreaReqOuterClass.GetSceneAreaReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetSceneAreaRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetScenePointReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetScenePointReq.java index 7226b0ef4..18047df53 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetScenePointReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetScenePointReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetScenePointReqOuterClass.GetScenePointReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetScenePointRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopReq.java index 1dbe1c3ff..c0accac1b 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopReq.java @@ -9,10 +9,10 @@ import emu.grasscutter.server.packet.send.PacketGetShopRsp; @Opcodes(PacketOpcodes.GetShopReq) public class HandlerGetShopReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - GetShopReq req = GetShopReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + GetShopReq req = GetShopReq.parseFrom(payload); - session.send(new PacketGetShopRsp(session.getPlayer(), req.getShopType())); - } + session.send(new PacketGetShopRsp(session.getPlayer(), req.getShopType())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopmallDataReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopmallDataReq.java index c9c98f045..fd4d482d7 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopmallDataReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetShopmallDataReq.java @@ -1,18 +1,18 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetShopmallDataRsp; @Opcodes(PacketOpcodes.GetShopmallDataReq) public class HandlerGetShopmallDataReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // TODO add the correct shops - session.send(new PacketGetShopmallDataRsp()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // TODO add the correct shops + session.send(new PacketGetShopmallDataRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWidgetSlotReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWidgetSlotReq.java index e7b352122..5f2be1ebe 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWidgetSlotReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWidgetSlotReq.java @@ -2,19 +2,18 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketGetShopRsp; import emu.grasscutter.server.packet.send.PacketGetWidgetSlotRsp; @Opcodes(PacketOpcodes.GetWidgetSlotReq) public class HandlerGetWidgetSlotReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - Player player = session.getPlayer(); - session.send(new PacketGetWidgetSlotRsp(player)); - } - + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + Player player = session.getPlayer(); + session.send(new PacketGetWidgetSlotRsp(player)); + } + } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWorldMpInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWorldMpInfoReq.java index e93ecfad0..dcba93111 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWorldMpInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetWorldMpInfoReq.java @@ -1,17 +1,17 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketGetWorldMpInfoRsp; @Opcodes(PacketOpcodes.GetWorldMpInfoReq) public class HandlerGetWorldMpInfoReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketGetWorldMpInfoRsp(session.getPlayer().getWorld())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketGetWorldMpInfoRsp(session.getPlayer().getWorld())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHitTreeNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHitTreeNotify.java index 222116d56..331fd7f09 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHitTreeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHitTreeNotify.java @@ -1,21 +1,19 @@ -package emu.grasscutter.server.packet.recv; - -import java.math.BigInteger; - -import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.HitTreeNotifyOuterClass.HitTreeNotify; -import emu.grasscutter.server.game.GameSession; - -/** - * Implement Deforestation Function - */ -@Opcodes(PacketOpcodes.HitTreeNotify) -public class HandlerHitTreeNotify extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - HitTreeNotify hit = HitTreeNotify.parseFrom(payload); - session.getPlayer().getDeforestationManager().onDeforestationInvoke(hit); - } -} \ No newline at end of file +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.HitTreeNotifyOuterClass.HitTreeNotify; +import emu.grasscutter.server.game.GameSession; + +/** + * Implement Deforestation Function + */ +@Opcodes(PacketOpcodes.HitTreeNotify) +public class HandlerHitTreeNotify extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + HitTreeNotify hit = HitTreeNotify.parseFrom(payload); + session.getPlayer().getDeforestationManager().onDeforestationInvoke(hit); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeEditModeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeEditModeReq.java index 0bb076bfd..08b8bc4ec 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeEditModeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeEditModeReq.java @@ -5,20 +5,23 @@ import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.HomeChangeEditModeReqOuterClass; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.*; +import emu.grasscutter.server.packet.send.PacketHomeBasicInfoNotify; +import emu.grasscutter.server.packet.send.PacketHomeChangeEditModeRsp; +import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify; +import emu.grasscutter.server.packet.send.PacketHomePreChangeEditModeNotify; @Opcodes(PacketOpcodes.HomeChangeEditModeReq) public class HandlerHomeChangeEditModeReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = HomeChangeEditModeReqOuterClass.HomeChangeEditModeReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = HomeChangeEditModeReqOuterClass.HomeChangeEditModeReq.parseFrom(payload); - session.send(new PacketHomePreChangeEditModeNotify(req.getIsEnterEditMode())); - session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), req.getIsEnterEditMode())); - session.send(new PacketHomeComfortInfoNotify(session.getPlayer())); + session.send(new PacketHomePreChangeEditModeNotify(req.getIsEnterEditMode())); + session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), req.getIsEnterEditMode())); + session.send(new PacketHomeComfortInfoNotify(session.getPlayer())); - session.send(new PacketHomeChangeEditModeRsp(req.getIsEnterEditMode())); - } + session.send(new PacketHomeChangeEditModeRsp(req.getIsEnterEditMode())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeModuleReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeModuleReq.java index c99593539..2e50cc070 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeModuleReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChangeModuleReq.java @@ -18,7 +18,7 @@ public class HandlerHomeChangeModuleReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { HomeChangeModuleReqOuterClass.HomeChangeModuleReq req = - HomeChangeModuleReqOuterClass.HomeChangeModuleReq.parseFrom(payload); + HomeChangeModuleReqOuterClass.HomeChangeModuleReq.parseFrom(payload); session.getPlayer().setCurrentRealmId(req.getTargetModuleId()); session.send(new PacketHomeChangeModuleRsp(req.getTargetModuleId())); session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer())); @@ -30,8 +30,8 @@ public class HandlerHomeChangeModuleReq extends PacketHandler { Position pos = scene.getScriptManager().getConfig().born_pos; session.getPlayer().getWorld().transferPlayerToScene( - session.getPlayer(), realmId, - TeleportType.WAYPOINT, pos + session.getPlayer(), realmId, + TeleportType.WAYPOINT, pos ); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChooseModuleReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChooseModuleReq.java index 5a7c0dbe5..30b7bd16c 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChooseModuleReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeChooseModuleReq.java @@ -16,7 +16,7 @@ public class HandlerHomeChooseModuleReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { HomeChooseModuleReqOuterClass.HomeChooseModuleReq req = - HomeChooseModuleReqOuterClass.HomeChooseModuleReq.parseFrom(payload); + HomeChooseModuleReqOuterClass.HomeChooseModuleReq.parseFrom(payload); session.getPlayer().addRealmList(req.getModuleId()); session.getPlayer().setCurrentRealmId(req.getModuleId()); session.send(new PacketHomeChooseModuleRsp(req.getModuleId())); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetArrangementInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetArrangementInfoReq.java index f92d3a228..ae5f7ca67 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetArrangementInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetArrangementInfoReq.java @@ -9,12 +9,12 @@ import emu.grasscutter.server.packet.send.PacketHomeGetArrangementInfoRsp; @Opcodes(PacketOpcodes.HomeGetArrangementInfoReq) public class HandlerHomeGetArrangementInfoReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = HomeGetArrangementInfoReqOuterClass.HomeGetArrangementInfoReq.parseFrom(payload); - session.send(new PacketHomeGetArrangementInfoRsp(session.getPlayer(), req.getSceneIdListList())); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = HomeGetArrangementInfoReqOuterClass.HomeGetArrangementInfoReq.parseFrom(payload); + + session.send(new PacketHomeGetArrangementInfoRsp(session.getPlayer(), req.getSceneIdListList())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetBasicInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetBasicInfoReq.java index 9ccfee2b7..5af3acf6a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetBasicInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeGetBasicInfoReq.java @@ -8,11 +8,11 @@ import emu.grasscutter.server.packet.send.PacketHomeBasicInfoNotify; @Opcodes(PacketOpcodes.HomeGetBasicInfoReq) public class HandlerHomeGetBasicInfoReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), false)); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + + session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), false)); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeFetterExpReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeFetterExpReq.java index bf7e9352b..ccd173a4a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeFetterExpReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeFetterExpReq.java @@ -8,11 +8,11 @@ import emu.grasscutter.server.packet.send.PacketHomeResourceTakeFetterExpRsp; @Opcodes(PacketOpcodes.HomeResourceTakeFetterExpReq) public class HandlerHomeResourceTakeFetterExpReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketHomeResourceTakeFetterExpRsp(session.getPlayer())); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + + session.send(new PacketHomeResourceTakeFetterExpRsp(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeHomeCoinReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeHomeCoinReq.java index 68261e3a1..013ae7f11 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeHomeCoinReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeResourceTakeHomeCoinReq.java @@ -8,11 +8,11 @@ import emu.grasscutter.server.packet.send.PacketHomeResourceTakeHomeCoinRsp; @Opcodes(PacketOpcodes.HomeResourceTakeHomeCoinReq) public class HandlerHomeResourceTakeHomeCoinReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketHomeResourceTakeHomeCoinRsp(session.getPlayer())); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + + session.send(new PacketHomeResourceTakeHomeCoinRsp(session.getPlayer())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneInitFinishReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneInitFinishReq.java index b59cd227e..7b835b080 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneInitFinishReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneInitFinishReq.java @@ -8,10 +8,10 @@ import emu.grasscutter.server.packet.send.PacketHomeSceneInitFinishRsp; @Opcodes(PacketOpcodes.HomeSceneInitFinishReq) public class HandlerHomeSceneInitFinishReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketHomeSceneInitFinishRsp()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.send(new PacketHomeSceneInitFinishRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java index 3b823ee76..832da5d75 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeSceneJumpReq.java @@ -11,36 +11,36 @@ import emu.grasscutter.utils.Position; @Opcodes(PacketOpcodes.HomeSceneJumpReq) public class HandlerHomeSceneJumpReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = HomeSceneJumpReqOuterClass.HomeSceneJumpReq.parseFrom(payload); - int realmId = 2000 + session.getPlayer().getCurrentRealmId(); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = HomeSceneJumpReqOuterClass.HomeSceneJumpReq.parseFrom(payload); - var home = session.getPlayer().getHome(); - var homeScene = home.getHomeSceneItem(realmId); - home.save(); + int realmId = 2000 + session.getPlayer().getCurrentRealmId(); - Scene scene = session.getPlayer().getWorld().getSceneById(req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId); - Position pos = scene.getScriptManager().getConfig().born_pos; - Position rot = home.getSceneMap().get(scene.getId()).getBornRot(); + var home = session.getPlayer().getHome(); + var homeScene = home.getHomeSceneItem(realmId); + home.save(); - // Make player face correct direction when entering or exiting - session.getPlayer().getRotation().set(rot); + Scene scene = session.getPlayer().getWorld().getSceneById(req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId); + Position pos = scene.getScriptManager().getConfig().born_pos; + Position rot = home.getSceneMap().get(scene.getId()).getBornRot(); - // Make player exit to front of main house - if (!req.getIsEnterRoomScene()) { - pos = home.getSceneMap().get(realmId).getBornPos(); - } + // Make player face correct direction when entering or exiting + session.getPlayer().getRotation().set(rot); - session.getPlayer().getWorld().transferPlayerToScene( - session.getPlayer(), - req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId, - pos - ); + // Make player exit to front of main house + if (!req.getIsEnterRoomScene()) { + pos = home.getSceneMap().get(realmId).getBornPos(); + } - session.send(new PacketHomeSceneJumpRsp(req.getIsEnterRoomScene())); - } + session.getPlayer().getWorld().transferPlayerToScene( + session.getPlayer(), + req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId, + pos + ); + + session.send(new PacketHomeSceneJumpRsp(req.getIsEnterRoomScene())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeUpdateArrangementInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeUpdateArrangementInfoReq.java index 60aea018c..5a880cfd2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeUpdateArrangementInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerHomeUpdateArrangementInfoReq.java @@ -9,19 +9,19 @@ import emu.grasscutter.server.packet.send.PacketHomeUpdateArrangementInfoRsp; @Opcodes(PacketOpcodes.HomeUpdateArrangementInfoReq) public class HandlerHomeUpdateArrangementInfoReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = HomeUpdateArrangementInfoReqOuterClass.HomeUpdateArrangementInfoReq.parseFrom(payload); - var homeScene = session.getPlayer().getHome() - .getHomeSceneItem(session.getPlayer().getSceneId()); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = HomeUpdateArrangementInfoReqOuterClass.HomeUpdateArrangementInfoReq.parseFrom(payload); - homeScene.update(req.getSceneArrangementInfo()); + var homeScene = session.getPlayer().getHome() + .getHomeSceneItem(session.getPlayer().getSceneId()); - session.getPlayer().getHome().save(); + homeScene.update(req.getSceneArrangementInfo()); - session.send(new PacketHomeUpdateArrangementInfoRsp()); - } + session.getPlayer().getHome().save(); + + session.send(new PacketHomeUpdateArrangementInfoRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMarkMapReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMarkMapReq.java index 58348a2e0..65551d759 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMarkMapReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMarkMapReq.java @@ -9,9 +9,9 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.MarkMapReq) public class HandlerMarkMapReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - MarkMapReq req = MarkMapReq.parseFrom(payload); - session.getPlayer().getMapMarksManager().handleMapMarkReq(req); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + MarkMapReq req = MarkMapReq.parseFrom(payload); + session.getPlayer().getMapMarksManager().handleMapMarkReq(req); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java index 21acbfe21..e5ab20adb 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java @@ -14,12 +14,12 @@ public class HandlerMcoinExchangeHcoinReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq exchangeReq = McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq.parseFrom(payload); - + if (session.getPlayer().getCrystals() < exchangeReq.getMcoinCost() && exchangeReq.getMcoinCost() == exchangeReq.getHcoin()) { session.send(new PacketMcoinExchangeHcoinRsp(RetcodeOuterClass.Retcode.RET_UNKNOWN_ERROR_VALUE)); return; } - + session.getPlayer().setCrystals(session.getPlayer().getCrystals() - exchangeReq.getMcoinCost()); session.getPlayer().setPrimogems(session.getPlayer().getPrimogems() + exchangeReq.getHcoin()); session.getPlayer().save(); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMonsterAIConfigHashNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMonsterAIConfigHashNotify.java index 52149d460..9bed8c3eb 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMonsterAIConfigHashNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMonsterAIConfigHashNotify.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.MonsterAIConfigHashNotify) public class HandlerMonsterAIConfigHashNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameSettleReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameSettleReq.java index d04a09f6b..1514d27e6 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameSettleReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameSettleReq.java @@ -43,7 +43,7 @@ public class HandlerMusicGameSettleReq extends PacketHandler { // update activity info session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get()))); - }else { + } else { handler.setMusicGameCustomBeatmapRecord(playerData.get(), MusicGamePlayerData.CustomBeatmapRecord.of() .musicShareId(req.getUgcGuid()) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameStartReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameStartReq.java index 363673af2..84cbb60e2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameStartReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameStartReq.java @@ -10,11 +10,11 @@ import emu.grasscutter.server.packet.send.PacketMusicGameStartRsp; @Opcodes(PacketOpcodes.MusicGameStartReq) public class HandlerMusicGameStartReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = MusicGameStartReqOuterClass.MusicGameStartReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = MusicGameStartReqOuterClass.MusicGameStartReq.parseFrom(payload); - session.send(new PacketMusicGameStartRsp(req.getMusicBasicId(), req.getUgcGuid())); - } + session.send(new PacketMusicGameStartRsp(req.getMusicBasicId(), req.getUgcGuid())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java index b414ad5ef..29e833366 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java @@ -3,14 +3,11 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.MainQuestData; import emu.grasscutter.data.binout.MainQuestData.TalkData; -import emu.grasscutter.game.inventory.GameItem; -import emu.grasscutter.game.quest.GameMainQuest; -import emu.grasscutter.game.quest.enums.ParentQuestState; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketNpcTalkRsp; @@ -23,7 +20,7 @@ public class HandlerNpcTalkReq extends PacketHandler { //Check if mainQuest exists //remove last 2 digits to get a mainQuestId int talkId = req.getTalkId(); - int mainQuestId = talkId/100; + int mainQuestId = talkId / 100; MainQuestData mainQuestData = GameData.getMainQuestDataMap().get(mainQuestId); if (mainQuestData != null) { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerObstacleModifyNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerObstacleModifyNotify.java index 6c2bff830..586e4c664 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerObstacleModifyNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerObstacleModifyNotify.java @@ -1,16 +1,16 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ObstacleModifyNotify) public class HandlerObstacleModifyNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPathfindingEnterSceneReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPathfindingEnterSceneReq.java index 2d69d07f4..ce0e9039f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPathfindingEnterSceneReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPathfindingEnterSceneReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPathfindingEnterSceneRsp; @Opcodes(PacketOpcodes.PathfindingEnterSceneReq) public class HandlerPathfindingEnterSceneReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - PacketHead head = PacketHead.parseFrom(header); - session.send(new PacketPathfindingEnterSceneRsp(head.getClientSequenceId())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + PacketHead head = PacketHead.parseFrom(header); + session.send(new PacketPathfindingEnterSceneRsp(head.getClientSequenceId())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPingReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPingReq.java index 70d661ebd..d59215cf7 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPingReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPingReq.java @@ -1,24 +1,24 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead; import emu.grasscutter.net.proto.PingReqOuterClass.PingReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPingRsp; @Opcodes(PacketOpcodes.PingReq) public class HandlerPingReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - PacketHead head = PacketHead.parseFrom(header); - PingReq ping = PingReq.parseFrom(payload); - - session.updateLastPingTime(ping.getClientTime()); - - session.send(new PacketPingRsp(head.getClientSequenceId(), ping.getClientTime())); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + PacketHead head = PacketHead.parseFrom(header); + PingReq ping = PingReq.parseFrom(payload); + + session.updateLastPingTime(ping.getClientTime()); + + session.send(new PacketPingRsp(head.getClientSequenceId(), ping.getClientTime())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpReq.java index 3e1e7ffb1..da634f06e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerApplyEnterMpReqOuterClass.PlayerApplyEnterMpReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpResultReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpResultReq.java index 418266468..fe5492261 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpResultReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerApplyEnterMpResultReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerApplyEnterMpResultReqOuterClass.PlayerApplyEnterMpResultReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpResultRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerChatReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerChatReq.java index fd39a4367..9966cb961 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerChatReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerChatReq.java @@ -1,10 +1,10 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChatInfoOuterClass.ChatInfo; import emu.grasscutter.net.proto.PlayerChatReqOuterClass.PlayerChatReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPlayerChatRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerEnterDungeonReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerEnterDungeonReq.java index f76ff588c..ae5541883 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerEnterDungeonReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerEnterDungeonReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerEnterDungeonReqOuterClass.PlayerEnterDungeonReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.PlayerEnterDungeonReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerForceExitReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerForceExitReq.java index 4f578021a..6da2ff68a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerForceExitReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerForceExitReq.java @@ -2,27 +2,27 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.PlayerForceExitReq) public class HandlerPlayerForceExitReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Client should auto disconnect right now - session.send(new BasePacket(PacketOpcodes.PlayerForceExitRsp)); - new Thread(){ - @Override - public void run() { - try { - Thread.sleep(1000);// disconnect after 1 seconds - } catch (InterruptedException e) { - e.printStackTrace(); - } - session.close(); - super.run(); - } - }.start(); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Client should auto disconnect right now + session.send(new BasePacket(PacketOpcodes.PlayerForceExitRsp)); + new Thread() { + @Override + public void run() { + try { + Thread.sleep(1000);// disconnect after 1 seconds + } catch (InterruptedException e) { + e.printStackTrace(); + } + session.close(); + super.run(); + } + }.start(); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerGetForceQuitBanInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerGetForceQuitBanInfoReq.java index 7da3bbcb8..e35265560 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerGetForceQuitBanInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerGetForceQuitBanInfoReq.java @@ -1,8 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.RetcodeOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPlayerGetForceQuitBanInfoRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java index 3df671fa5..873531a94 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java @@ -1,15 +1,11 @@ package emu.grasscutter.server.packet.recv; -import static emu.grasscutter.config.Configuration.ACCOUNT; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerLoginReqOuterClass.PlayerLoginReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.game.GameSession.SessionState; import emu.grasscutter.server.packet.send.PacketPlayerLoginRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerQuitDungeonReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerQuitDungeonReq.java index a8e483c50..5a3cc8a4b 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerQuitDungeonReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerQuitDungeonReq.java @@ -1,8 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.PlayerQuitDungeonReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerSetPauseReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerSetPauseReq.java index 4ec394da4..3abbc0824 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerSetPauseReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerSetPauseReq.java @@ -1,10 +1,10 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead; import emu.grasscutter.net.proto.PlayerSetPauseReqOuterClass.PlayerSetPauseReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPlayerSetPauseRsp; import emu.grasscutter.server.packet.send.PacketPlayerTimeNotify; @@ -13,16 +13,16 @@ import emu.grasscutter.server.packet.send.PacketSceneTimeNotify; @Opcodes(PacketOpcodes.PlayerSetPauseReq) public class HandlerPlayerSetPauseReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - PacketHead head = PacketHead.parseFrom(header); - PlayerSetPauseReq req = PlayerSetPauseReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + PacketHead head = PacketHead.parseFrom(header); + PlayerSetPauseReq req = PlayerSetPauseReq.parseFrom(payload); - session.send(new PacketPlayerSetPauseRsp(head.getClientSequenceId())); - session.getPlayer().setPaused(req.getIsPaused()); + session.send(new PacketPlayerSetPauseRsp(head.getClientSequenceId())); + session.getPlayer().setPaused(req.getIsPaused()); session.send(new PacketPlayerTimeNotify(session.getPlayer())); session.send(new PacketSceneTimeNotify(session.getPlayer())); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPostEnterSceneReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPostEnterSceneReq.java index f91cdc9b8..b3307718f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPostEnterSceneReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPostEnterSceneReq.java @@ -3,8 +3,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.props.SceneType; import emu.grasscutter.game.quest.enums.QuestTrigger; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketPostEnterSceneRsp; @@ -14,7 +14,7 @@ public class HandlerPostEnterSceneReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { if (session.getPlayer().getScene().getSceneType() == SceneType.SCENE_ROOM) { - session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_ENTER_ROOM, session.getPlayer().getSceneId(),0); + session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_ENTER_ROOM, session.getPlayer().getSceneId(), 0); } session.send(new PacketPostEnterSceneRsp(session.getPlayer())); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPrivateChatReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPrivateChatReq.java index 77e109eae..01142bf6a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPrivateChatReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPrivateChatReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PrivateChatReqOuterClass.PrivateChatReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.PrivateChatReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullPrivateChatReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullPrivateChatReq.java index cd0eb5d79..eb489d3a2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullPrivateChatReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullPrivateChatReq.java @@ -1,11 +1,10 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PullPrivateChatReqOuterClass.PullPrivateChatReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketPullPrivateChatRsp; @Opcodes(PacketOpcodes.PullPrivateChatReq) public class HandlerPullPrivateChatReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullRecentChatReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullRecentChatReq.java index 9856a1443..8e7ee378b 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullRecentChatReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPullRecentChatReq.java @@ -1,10 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketPullRecentChatRsp; @Opcodes(PacketOpcodes.PullRecentChatReq) public class HandlerPullRecentChatReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryCodexMonsterBeKilledNumReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryCodexMonsterBeKilledNumReq.java index dca38dcdb..991b7a87a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryCodexMonsterBeKilledNumReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryCodexMonsterBeKilledNumReq.java @@ -1,9 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.proto.QueryCodexMonsterBeKilledNumReqOuterClass; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.QueryCodexMonsterBeKilledNumReqOuterClass.QueryCodexMonsterBeKilledNumReq; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketQueryCodexMonsterBeKilledNumRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryPathReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryPathReq.java index 6ecadee5b..0cc8bd2c1 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryPathReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryPathReq.java @@ -1,9 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.proto.QueryPathReqOuterClass; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.QueryPathReqOuterClass.QueryPathReq; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketQueryPathRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuestUpdateQuestVarReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuestUpdateQuestVarReq.java index 4e804f422..baa23810a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuestUpdateQuestVarReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuestUpdateQuestVarReq.java @@ -4,12 +4,9 @@ import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.PacketHeadOuterClass; -import emu.grasscutter.net.proto.PlayerSetPauseReqOuterClass; import emu.grasscutter.net.proto.QuestUpdateQuestVarReqOuterClass; import emu.grasscutter.net.proto.QuestVarOpOuterClass; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketPlayerSetPauseRsp; import emu.grasscutter.server.packet.send.PacketQuestUpdateQuestVarRsp; import java.util.List; @@ -21,7 +18,7 @@ public class HandlerQuestUpdateQuestVarReq extends PacketHandler { public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { //Client sends packets. One with the value, and one with the index and the new value to set/inc/dec var req = QuestUpdateQuestVarReqOuterClass.QuestUpdateQuestVarReq.parseFrom(payload); - GameMainQuest mainQuest = session.getPlayer().getQuestManager().getMainQuestById(req.getQuestId()/100); + GameMainQuest mainQuest = session.getPlayer().getQuestManager().getMainQuestById(req.getQuestId() / 100); List questVars = req.getQuestVarOpListList(); if (mainQuest.getQuestVarsUpdate().size() == 0) { for (QuestVarOpOuterClass.QuestVarOp questVar : questVars) { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuickUseWidgetReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuickUseWidgetReq.java index 6e0149649..c72799966 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuickUseWidgetReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQuickUseWidgetReq.java @@ -12,18 +12,17 @@ import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.QuickUseWidgetRspOuterClass.QuickUseWidgetRsp; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketPullRecentChatRsp; @Opcodes(PacketOpcodes.QuickUseWidgetReq) public class HandlerQuickUseWidgetReq extends PacketHandler { /* - * WARNING: with the consuming of material widget ( Example: bomb ), - * this is just a implement designed to the decreasing of count - * - * ### Known Bug: No effects after using item but decrease. ### - * - * If you know which Packet could make the effects, feel free to contribute! - * */ + * WARNING: with the consuming of material widget ( Example: bomb ), + * this is just a implement designed to the decreasing of count + * + * ### Known Bug: No effects after using item but decrease. ### + * + * If you know which Packet could make the effects, feel free to contribute! + * */ @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { QuickUseWidgetRsp.Builder proto = QuickUseWidgetRsp.newBuilder(); @@ -42,7 +41,7 @@ public class HandlerQuickUseWidgetReq extends PacketHandler { proto.setRetcode(0); } proto.setMaterialId(materialId); - inventory.removeItem(item,1);// decrease count + inventory.removeItem(item, 1);// decrease count BasePacket rsp = new BasePacket(PacketOpcodes.QuickUseWidgetRsp); rsp.setData(proto); session.send(rsp); diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerReadMailNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerReadMailNotify.java index 8c9c87149..636a9499c 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerReadMailNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerReadMailNotify.java @@ -4,7 +4,6 @@ import emu.grasscutter.game.mail.Mail; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.GetAllMailReqOuterClass; import emu.grasscutter.net.proto.ReadMailNotifyOuterClass; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketMailChangeNotify; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryDecomposeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryDecomposeReq.java index fae813a8d..c81cfc41e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryDecomposeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryDecomposeReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ReliquaryDecomposeReqOuterClass.ReliquaryDecomposeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ReliquaryDecomposeReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryUpgradeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryUpgradeReq.java index 6115ef1fd..6d3459fa1 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryUpgradeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerReliquaryUpgradeReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ReliquaryUpgradeReqOuterClass.ReliquaryUpgradeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.ReliquaryUpgradeReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneEntityDrownReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneEntityDrownReq.java index fefbee3b6..9583999d2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneEntityDrownReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneEntityDrownReq.java @@ -1,35 +1,34 @@ -package emu.grasscutter.server.packet.recv; - -import emu.grasscutter.game.entity.EntityAvatar; -import emu.grasscutter.game.entity.EntityMonster; -import emu.grasscutter.game.entity.GameEntity; -import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.game.props.LifeState; -import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.SceneEntityDrownReqOuterClass.SceneEntityDrownReq; -import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketSceneEntityDrownRsp; - -@Opcodes(PacketOpcodes.SceneEntityDrownReq) -public class HandlerSceneEntityDrownReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - SceneEntityDrownReq req = SceneEntityDrownReq.parseFrom(payload); - - GameEntity entity = session.getPlayer().getScene().getEntityById(req.getEntityId()); - - if (entity == null || !(entity instanceof EntityMonster || entity instanceof EntityAvatar)) { - return; - } - - entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, 0); - - //TODO: make a list somewhere of all entities to remove per tick rather than one by one - session.getPlayer().getScene().killEntity(entity, 0); - session.getPlayer().getScene().broadcastPacket(new PacketSceneEntityDrownRsp(req.getEntityId())); - } - -} +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.game.entity.EntityAvatar; +import emu.grasscutter.game.entity.EntityMonster; +import emu.grasscutter.game.entity.GameEntity; +import emu.grasscutter.game.props.FightProperty; +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.SceneEntityDrownReqOuterClass.SceneEntityDrownReq; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketSceneEntityDrownRsp; + +@Opcodes(PacketOpcodes.SceneEntityDrownReq) +public class HandlerSceneEntityDrownReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SceneEntityDrownReq req = SceneEntityDrownReq.parseFrom(payload); + + GameEntity entity = session.getPlayer().getScene().getEntityById(req.getEntityId()); + + if (entity == null || !(entity instanceof EntityMonster || entity instanceof EntityAvatar)) { + return; + } + + entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, 0); + + //TODO: make a list somewhere of all entities to remove per tick rather than one by one + session.getPlayer().getScene().killEntity(entity, 0); + session.getPlayer().getScene().broadcastPacket(new PacketSceneEntityDrownRsp(req.getEntityId())); + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneInitFinishReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneInitFinishReq.java index 9d7dc8443..20a9137ef 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneInitFinishReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneInitFinishReq.java @@ -3,51 +3,38 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.player.Player.SceneLoadState; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketHostPlayerNotify; -import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneInfoNotify; -import emu.grasscutter.server.packet.send.PacketPlayerGameTimeNotify; -import emu.grasscutter.server.packet.send.PacketPlayerWorldSceneInfoListNotify; -import emu.grasscutter.server.packet.send.PacketSceneAreaWeatherNotify; -import emu.grasscutter.server.packet.send.PacketSceneInitFinishRsp; -import emu.grasscutter.server.packet.send.PacketScenePlayerInfoNotify; -import emu.grasscutter.server.packet.send.PacketSceneTeamUpdateNotify; -import emu.grasscutter.server.packet.send.PacketSceneTimeNotify; -import emu.grasscutter.server.packet.send.PacketServerTimeNotify; -import emu.grasscutter.server.packet.send.PacketSyncScenePlayTeamEntityNotify; -import emu.grasscutter.server.packet.send.PacketSyncTeamEntityNotify; -import emu.grasscutter.server.packet.send.PacketWorldDataNotify; -import emu.grasscutter.server.packet.send.PacketWorldPlayerInfoNotify; +import emu.grasscutter.server.packet.send.*; @Opcodes(PacketOpcodes.SceneInitFinishReq) public class HandlerSceneInitFinishReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Info packets - session.send(new PacketServerTimeNotify()); - session.send(new PacketWorldPlayerInfoNotify(session.getPlayer().getWorld())); - session.send(new PacketWorldDataNotify(session.getPlayer().getWorld())); - session.send(new PacketPlayerWorldSceneInfoListNotify()); - session.send(new BasePacket(PacketOpcodes.SceneForceUnlockNotify)); - session.send(new PacketHostPlayerNotify(session.getPlayer().getWorld())); - - session.send(new PacketSceneTimeNotify(session.getPlayer())); - session.send(new PacketPlayerGameTimeNotify(session.getPlayer())); - session.send(new PacketPlayerEnterSceneInfoNotify(session.getPlayer())); - session.send(new PacketSceneAreaWeatherNotify(session.getPlayer())); - session.send(new PacketScenePlayerInfoNotify(session.getPlayer().getWorld())); - session.send(new PacketSceneTeamUpdateNotify(session.getPlayer())); - - session.send(new PacketSyncTeamEntityNotify(session.getPlayer())); - session.send(new PacketSyncScenePlayTeamEntityNotify(session.getPlayer())); - - // Done Packet - session.send(new PacketSceneInitFinishRsp(session.getPlayer())); - - // Set state - session.getPlayer().setSceneLoadState(SceneLoadState.INIT); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Info packets + session.send(new PacketServerTimeNotify()); + session.send(new PacketWorldPlayerInfoNotify(session.getPlayer().getWorld())); + session.send(new PacketWorldDataNotify(session.getPlayer().getWorld())); + session.send(new PacketPlayerWorldSceneInfoListNotify()); + session.send(new BasePacket(PacketOpcodes.SceneForceUnlockNotify)); + session.send(new PacketHostPlayerNotify(session.getPlayer().getWorld())); + + session.send(new PacketSceneTimeNotify(session.getPlayer())); + session.send(new PacketPlayerGameTimeNotify(session.getPlayer())); + session.send(new PacketPlayerEnterSceneInfoNotify(session.getPlayer())); + session.send(new PacketSceneAreaWeatherNotify(session.getPlayer())); + session.send(new PacketScenePlayerInfoNotify(session.getPlayer().getWorld())); + session.send(new PacketSceneTeamUpdateNotify(session.getPlayer())); + + session.send(new PacketSyncTeamEntityNotify(session.getPlayer())); + session.send(new PacketSyncScenePlayTeamEntityNotify(session.getPlayer())); + + // Done Packet + session.send(new PacketSceneInitFinishRsp(session.getPlayer())); + + // Set state + session.getPlayer().setSceneLoadState(SceneLoadState.INIT); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneKickPlayerReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneKickPlayerReq.java index 731ead639..f228e4748 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneKickPlayerReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneKickPlayerReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SceneKickPlayerReqOuterClass.SceneKickPlayerReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketSceneKickPlayerRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java index 07191bc7c..8278fa144 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java @@ -3,9 +3,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.data.GameData; import emu.grasscutter.data.binout.ScenePointEntry; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketSceneTransToPointRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSelectWorktopOptionReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSelectWorktopOptionReq.java index 26f586741..15e53e2ae 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSelectWorktopOptionReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSelectWorktopOptionReq.java @@ -3,11 +3,11 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SelectWorktopOptionReqOuterClass.SelectWorktopOptionReq; import emu.grasscutter.scripts.constants.EventType; import emu.grasscutter.scripts.data.ScriptArgs; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketSelectWorktopOptionRsp; @@ -26,8 +26,8 @@ public class HandlerSelectWorktopOptionReq extends PacketHandler { } session.getPlayer().getScene().selectWorktopOptionWith(req); session.getPlayer().getScene().getScriptManager().callEvent( - EventType.EVENT_SELECT_OPTION, - new ScriptArgs(entity.getConfigId(), req.getOptionId()) + EventType.EVENT_SELECT_OPTION, + new ScriptArgs(entity.getConfigId(), req.getOptionId()) ); } finally { // Always send packet diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java index 6c4d86f7e..2218044d9 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java @@ -2,28 +2,28 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.SetEntityClientDataNotify) public class HandlerSetEntityClientDataNotify extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Skip if there is no one to broadcast it too - if (session.getPlayer().getScene().getPlayerCount() <= 1) { - return; - } - - // Make sure packet is a valid proto before replaying it to the other players - SetEntityClientDataNotify notif = SetEntityClientDataNotify.parseFrom(payload); - - BasePacket packet = new BasePacket(PacketOpcodes.SetEntityClientDataNotify, true); - packet.setData(notif); - - session.getPlayer().getScene().broadcastPacket(packet); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Skip if there is no one to broadcast it too + if (session.getPlayer().getScene().getPlayerCount() <= 1) { + return; + } + + // Make sure packet is a valid proto before replaying it to the other players + SetEntityClientDataNotify notif = SetEntityClientDataNotify.parseFrom(payload); + + BasePacket packet = new BasePacket(PacketOpcodes.SetEntityClientDataNotify, true); + packet.setData(notif); + + session.getPlayer().getScene().broadcastPacket(packet); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEquipLockStateReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEquipLockStateReq.java index 01b75ee81..625300caf 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEquipLockStateReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEquipLockStateReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetEquipLockStateReqOuterClass.SetEquipLockStateReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.SetEquipLockStateReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetNameCardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetNameCardReq.java index 158bfc923..d89793f51 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetNameCardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetNameCardReq.java @@ -1,17 +1,17 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetNameCardReqOuterClass.SetNameCardReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.SetNameCardReq) public class HandlerSetNameCardReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - SetNameCardReq req = SetNameCardReq.parseFrom(payload); - - session.getPlayer().setNameCard(req.getNameCardId()); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SetNameCardReq req = SetNameCardReq.parseFrom(payload); + + session.getPlayer().setNameCard(req.getNameCardId()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java index 31f86128a..d2e7cd495 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBirthdayReq.java @@ -11,57 +11,57 @@ import emu.grasscutter.server.packet.send.PacketSetPlayerBirthdayRsp; @Opcodes(PacketOpcodes.SetPlayerBirthdayReq) public class HandlerSetPlayerBirthdayReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - SetPlayerBirthdayReq req = SetPlayerBirthdayReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SetPlayerBirthdayReq req = SetPlayerBirthdayReq.parseFrom(payload); - // RET_BIRTHDAY_CANNOT_BE_SET_TWICE = 7009 - if (session.getPlayer().hasBirthday()) { - session.send(new PacketSetPlayerBirthdayRsp(7009)); - return; - } + // RET_BIRTHDAY_CANNOT_BE_SET_TWICE = 7009 + if (session.getPlayer().hasBirthday()) { + session.send(new PacketSetPlayerBirthdayRsp(7009)); + return; + } - int month = req.getBirthday().getMonth(); - int day = req.getBirthday().getDay(); + int month = req.getBirthday().getMonth(); + int day = req.getBirthday().getDay(); - // RET_BIRTHDAY_FORMAT_ERROR = 7022 - if (!isValidBirthday(month, day)) { - session.send(new PacketSetPlayerBirthdayRsp(7022)); - return; - } + // RET_BIRTHDAY_FORMAT_ERROR = 7022 + if (!isValidBirthday(month, day)) { + session.send(new PacketSetPlayerBirthdayRsp(7022)); + return; + } - // Update birthday value - session.getPlayer().setBirthday(day, month); + // Update birthday value + session.getPlayer().setBirthday(day, month); - // Save birthday month and day - session.getPlayer().save(); - SocialDetail.Builder detail = session.getPlayer().getSocialDetail(); + // Save birthday month and day + session.getPlayer().save(); + SocialDetail.Builder detail = session.getPlayer().getSocialDetail(); - session.send(new PacketSetPlayerBirthdayRsp(session.getPlayer())); - session.send(new PacketGetPlayerSocialDetailRsp(detail)); - } + session.send(new PacketSetPlayerBirthdayRsp(session.getPlayer())); + session.send(new PacketGetPlayerSocialDetailRsp(detail)); + } - private boolean isValidBirthday(int month, int day) { + private boolean isValidBirthday(int month, int day) { - switch (month) { - case 1: - case 3: - case 5: - case 7: - case 8: - case 10: - case 12: - return day > 0 & day <= 31; - case 4: - case 6: - case 9: - case 11: - return day > 0 && day <= 30; - case 2: - return day > 0 & day <= 29; - } + switch (month) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + return day > 0 & day <= 31; + case 4: + case 6: + case 9: + case 11: + return day > 0 && day <= 30; + case 2: + return day > 0 & day <= 29; + } - return false; - } + return false; + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java index f21cbd643..dcd0c1b70 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java @@ -4,23 +4,20 @@ import emu.grasscutter.GameConstants; import emu.grasscutter.Grasscutter; import emu.grasscutter.command.commands.SendMailCommand.MailBuilder; import emu.grasscutter.data.GameData; -import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerBornDataReqOuterClass.SetPlayerBornDataReq; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.server.event.game.PlayerCreationEvent; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.game.GameSession.SessionState; - -import static emu.grasscutter.config.Configuration.*; import java.util.Arrays; +import static emu.grasscutter.config.Configuration.GAME_INFO; + @Opcodes(PacketOpcodes.SetPlayerBornDataReq) public class HandlerSetPlayerBornDataReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerHeadImageReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerHeadImageReq.java index d478dc285..dca919192 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerHeadImageReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerHeadImageReq.java @@ -1,23 +1,23 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerHeadImageReqOuterClass.SetPlayerHeadImageReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketSetPlayerHeadImageRsp; @Opcodes(PacketOpcodes.SetPlayerHeadImageReq) public class HandlerSetPlayerHeadImageReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - SetPlayerHeadImageReq req = SetPlayerHeadImageReq.parseFrom(payload); - - int id = req.getAvatarId(); - - if (session.getPlayer().getAvatars().hasAvatar(id)) { - session.getPlayer().setHeadImage(id); - session.send(new PacketSetPlayerHeadImageRsp(session.getPlayer())); - } - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SetPlayerHeadImageReq req = SetPlayerHeadImageReq.parseFrom(payload); + + int id = req.getAvatarId(); + + if (session.getPlayer().getAvatars().hasAvatar(id)) { + session.getPlayer().setHeadImage(id); + session.send(new PacketSetPlayerHeadImageRsp(session.getPlayer())); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerNameReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerNameReq.java index d7babb6c2..d66a3e639 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerNameReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerNameReq.java @@ -1,24 +1,24 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerNameReqOuterClass.SetPlayerNameReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketSetPlayerNameRsp; @Opcodes(PacketOpcodes.SetPlayerNameReq) public class HandlerSetPlayerNameReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - SetPlayerNameReq req = SetPlayerNameReq.parseFrom(payload); - - if (req.getNickName() != null && req.getNickName().length() > 0) { - session.getPlayer().setNickname(req.getNickName()); - session.send(new PacketSetPlayerNameRsp(session.getPlayer())); - } - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + SetPlayerNameReq req = SetPlayerNameReq.parseFrom(payload); + + if (req.getNickName() != null && req.getNickName().length() > 0) { + session.getPlayer().setNickname(req.getNickName()); + session.send(new PacketSetPlayerNameRsp(session.getPlayer())); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerPropReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerPropReq.java index 7775a237d..57366ef75 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerPropReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerPropReq.java @@ -32,5 +32,4 @@ public class HandlerSetPlayerPropReq extends PacketHandler { } - } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerSignatureReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerSignatureReq.java index a20a78f85..fb3d03181 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerSignatureReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerSignatureReq.java @@ -1,24 +1,24 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerSignatureReqOuterClass.SetPlayerSignatureReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketSetPlayerSignatureRsp; @Opcodes(PacketOpcodes.SetPlayerSignatureReq) public class HandlerSetPlayerSignatureReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template - SetPlayerSignatureReq req = SetPlayerSignatureReq.parseFrom(payload); - - if (req.getSignature() != null && req.getSignature().length() > 0) { - session.getPlayer().setSignature(req.getSignature()); - session.send(new PacketSetPlayerSignatureRsp(session.getPlayer())); - } - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + // Auto template + SetPlayerSignatureReq req = SetPlayerSignatureReq.parseFrom(payload); + + if (req.getSignature() != null && req.getSignature().length() > 0) { + session.getPlayer().setSignature(req.getSignature()); + session.send(new PacketSetPlayerSignatureRsp(session.getPlayer())); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpAvatarTeamReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpAvatarTeamReq.java index eed605c61..3197d8c81 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpAvatarTeamReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpAvatarTeamReq.java @@ -1,19 +1,19 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetUpAvatarTeamReqOuterClass.SetUpAvatarTeamReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.SetUpAvatarTeamReq) public class HandlerSetUpAvatarTeamReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - SetUpAvatarTeamReq req = SetUpAvatarTeamReq.parseFrom(payload); - - session.getPlayer().getTeamManager().setupAvatarTeam(req.getTeamId(), req.getAvatarTeamGuidListList()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SetUpAvatarTeamReq req = SetUpAvatarTeamReq.parseFrom(payload); + + session.getPlayer().getTeamManager().setupAvatarTeam(req.getTeamId(), req.getAvatarTeamGuidListList()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpLunchBoxWidgetReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpLunchBoxWidgetReq.java index a7d3e3c06..917aece7e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpLunchBoxWidgetReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetUpLunchBoxWidgetReq.java @@ -1,19 +1,19 @@ -package emu.grasscutter.server.packet.recv; - -import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.SetUpLunchBoxWidgetReqOuterClass; -import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketSetUpLunchBoxWidgetRsp; - -@Opcodes(PacketOpcodes.SetUpLunchBoxWidgetReq) -public class HandlerSetUpLunchBoxWidgetReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req - = SetUpLunchBoxWidgetReqOuterClass.SetUpLunchBoxWidgetReq.parseFrom(payload); - - session.send(new PacketSetUpLunchBoxWidgetRsp(req.getLunchBoxData())); - } -} +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.SetUpLunchBoxWidgetReqOuterClass; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketSetUpLunchBoxWidgetRsp; + +@Opcodes(PacketOpcodes.SetUpLunchBoxWidgetReq) +public class HandlerSetUpLunchBoxWidgetReq extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req + = SetUpLunchBoxWidgetReqOuterClass.SetUpLunchBoxWidgetReq.parseFrom(payload); + + session.send(new PacketSetUpLunchBoxWidgetRsp(req.getLunchBoxData())); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetWidgetSlotReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetWidgetSlotReq.java index 9b478ff23..a803e1950 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetWidgetSlotReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetWidgetSlotReq.java @@ -24,7 +24,7 @@ public class HandlerSetWidgetSlotReq extends PacketHandler { session.send(new PacketWidgetSlotChangeNotify(WidgetSlotOpOuterClass.WidgetSlotOp.WIDGET_SLOT_OP_DETACH)); //only attaching the widget can set it - if(req.getOp() == WidgetSlotOpOuterClass.WidgetSlotOp.WIDGET_SLOT_OP_ATTACH){ + if (req.getOp() == WidgetSlotOpOuterClass.WidgetSlotOp.WIDGET_SLOT_OP_ATTACH) { // WidgetSlotChangeNotify slot session.send(new PacketWidgetSlotChangeNotify(req.getMaterialId())); } @@ -34,4 +34,3 @@ public class HandlerSetWidgetSlotReq extends PacketHandler { } } - diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeBattlePassRewardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeBattlePassRewardReq.java index 926c08af0..b201f6570 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeBattlePassRewardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeBattlePassRewardReq.java @@ -5,7 +5,6 @@ import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.TakeBattlePassRewardReqOuterClass.TakeBattlePassRewardReq; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketTakeBattlePassRewardRsp; @Opcodes(PacketOpcodes.TakeBattlePassRewardReq) public class HandlerTakeBattlePassRewardReq extends PacketHandler { diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeFurnitureMakeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeFurnitureMakeReq.java index 92eda3669..206179eb2 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeFurnitureMakeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeFurnitureMakeReq.java @@ -8,12 +8,12 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.TakeFurnitureMakeReq) public class HandlerTakeFurnitureMakeReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = TakeFurnitureMakeReqOuterClass.TakeFurnitureMakeReq.parseFrom(payload); - session.getPlayer().getFurnitureManager().take(req.getIndex(), req.getMakeId(), req.getIsFastFinish()); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + var req = TakeFurnitureMakeReqOuterClass.TakeFurnitureMakeReq.parseFrom(payload); + + session.getPlayer().getFurnitureManager().take(req.getIndex(), req.getMakeId(), req.getIsFastFinish()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakePlayerLevelRewardReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakePlayerLevelRewardReq.java index 8701a7479..9d7ddb771 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakePlayerLevelRewardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakePlayerLevelRewardReq.java @@ -1,40 +1,39 @@ -package emu.grasscutter.server.packet.recv; - -import java.util.List; -import java.util.Set; - -import emu.grasscutter.data.GameData; -import emu.grasscutter.data.common.ItemParamData; - -import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.props.ActionReason; -import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.TakePlayerLevelRewardReqOuterClass.TakePlayerLevelRewardReq; -import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketTakePlayerLevelRewardRsp; - -@Opcodes(PacketOpcodes.TakePlayerLevelRewardReq) -public class HandlerTakePlayerLevelRewardReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - Player pl = session.getPlayer(); - synchronized (pl) { - TakePlayerLevelRewardReq req = TakePlayerLevelRewardReq.parseFrom(payload); - int level = req.getLevel(); - Set rewardedLevels = session.getPlayer().getRewardedLevels(); - if (!rewardedLevels.contains(level)) {// No duplicated reward - int rewardId = GameData.getPlayerLevelDataMap().get(level).getRewardId(); - if (rewardId != 0) { - List rewardItems = GameData.getRewardDataMap().get(rewardId).getRewardItemList(); - pl.getInventory().addItemParamDatas(rewardItems, ActionReason.PlayerUpgradeReward); - rewardedLevels.add(level); - pl.setRewardedLevels(rewardedLevels); - pl.save(); - session.send(new PacketTakePlayerLevelRewardRsp(level, rewardId)); - } - } - } - } -} +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.data.GameData; +import emu.grasscutter.data.common.ItemParamData; +import emu.grasscutter.game.player.Player; +import emu.grasscutter.game.props.ActionReason; +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.TakePlayerLevelRewardReqOuterClass.TakePlayerLevelRewardReq; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketTakePlayerLevelRewardRsp; + +import java.util.List; +import java.util.Set; + +@Opcodes(PacketOpcodes.TakePlayerLevelRewardReq) +public class HandlerTakePlayerLevelRewardReq extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + Player pl = session.getPlayer(); + synchronized (pl) { + TakePlayerLevelRewardReq req = TakePlayerLevelRewardReq.parseFrom(payload); + int level = req.getLevel(); + Set rewardedLevels = session.getPlayer().getRewardedLevels(); + if (!rewardedLevels.contains(level)) {// No duplicated reward + int rewardId = GameData.getPlayerLevelDataMap().get(level).getRewardId(); + if (rewardId != 0) { + List rewardItems = GameData.getRewardDataMap().get(rewardId).getRewardItemList(); + pl.getInventory().addItemParamDatas(rewardItems, ActionReason.PlayerUpgradeReward); + rewardedLevels.add(level); + pl.setRewardedLevels(rewardedLevels); + pl.save(); + session.send(new PacketTakePlayerLevelRewardRsp(level, rewardId)); + } + } + } + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeoffEquipReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeoffEquipReq.java index 1160cbeef..cf55da9a1 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeoffEquipReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTakeoffEquipReq.java @@ -1,22 +1,22 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.TakeoffEquipReqOuterClass.TakeoffEquipReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketTakeoffEquipRsp; @Opcodes(PacketOpcodes.TakeoffEquipReq) public class HandlerTakeoffEquipReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - TakeoffEquipReq req = TakeoffEquipReq.parseFrom(payload); - - if (session.getPlayer().getInventory().unequipItem(req.getAvatarGuid(), req.getSlot())) { - session.send(new PacketTakeoffEquipRsp(req.getAvatarGuid(), req.getSlot())); - } - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + TakeoffEquipReq req = TakeoffEquipReq.parseFrom(payload); + + if (session.getPlayer().getInventory().unequipItem(req.getAvatarGuid(), req.getSlot())) { + session.send(new PacketTakeoffEquipRsp(req.getAvatarGuid(), req.getSlot())); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerAllDataReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerAllDataReq.java index 697a7f85c..f2048d8b7 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerAllDataReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerAllDataReq.java @@ -1,8 +1,8 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketTowerAllDataRsp; @@ -12,8 +12,8 @@ public class HandlerTowerAllDataReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { session.send(new PacketTowerAllDataRsp( - session.getServer().getTowerSystem(), - session.getPlayer().getTowerManager() + session.getServer().getTowerSystem(), + session.getPlayer().getTowerManager() )); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerEnterLevelReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerEnterLevelReq.java index 163f101ed..1c4471119 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerEnterLevelReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerEnterLevelReq.java @@ -9,13 +9,13 @@ import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.TowerEnterLevelReq) public class HandlerTowerEnterLevelReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - TowerEnterLevelReq req = TowerEnterLevelReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + TowerEnterLevelReq req = TowerEnterLevelReq.parseFrom(payload); - //session.send(new PacketTowerCurLevelRecordChangeNotify()); - session.getPlayer().getTowerManager().enterLevel(req.getEnterPointId()); + //session.send(new PacketTowerCurLevelRecordChangeNotify()); + session.getPlayer().getTowerManager().enterLevel(req.getEnterPointId()); - //session.send(new PacketTowerLevelStarCondNotify()); - } + //session.send(new PacketTowerLevelStarCondNotify()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerTeamSelectReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerTeamSelectReq.java index 6e6705379..0246ed7ad 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerTeamSelectReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerTowerTeamSelectReq.java @@ -11,16 +11,16 @@ import emu.grasscutter.server.packet.send.PacketTowerTeamSelectRsp; @Opcodes(PacketOpcodes.TowerTeamSelectReq) public class HandlerTowerTeamSelectReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - TowerTeamSelectReq req = TowerTeamSelectReq.parseFrom(payload); + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + TowerTeamSelectReq req = TowerTeamSelectReq.parseFrom(payload); - var towerTeams = req.getTowerTeamListList().stream() - .map(TowerTeamOuterClass.TowerTeam::getAvatarGuidListList) - .toList(); + var towerTeams = req.getTowerTeamListList().stream() + .map(TowerTeamOuterClass.TowerTeam::getAvatarGuidListList) + .toList(); - session.getPlayer().getTowerManager().teamSelect(req.getFloorId(), towerTeams); + session.getPlayer().getTowerManager().teamSelect(req.getFloorId(), towerTeams); - session.send(new PacketTowerTeamSelectRsp()); - } + session.send(new PacketTowerTeamSelectRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java index daa1b1388..a56eb5c07 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnionCmdNotify.java @@ -1,15 +1,15 @@ package emu.grasscutter.server.packet.recv; -import static emu.grasscutter.config.Configuration.GAME_INFO; -import static emu.grasscutter.config.Configuration.SERVER; - +import emu.grasscutter.Grasscutter.ServerDebugMode; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.UnionCmdNotifyOuterClass.UnionCmdNotify; import emu.grasscutter.net.proto.UnionCmdOuterClass.UnionCmd; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.Grasscutter.ServerDebugMode; + +import static emu.grasscutter.config.Configuration.GAME_INFO; +import static emu.grasscutter.config.Configuration.SERVER; @Opcodes(PacketOpcodes.UnionCmdNotify) public class HandlerUnionCmdNotify extends PacketHandler { @@ -21,7 +21,7 @@ public class HandlerUnionCmdNotify extends PacketHandler { byte[] cmdPayload = cmd.getBody().toByteArray(); if (GAME_INFO.logPackets == ServerDebugMode.WHITELIST && SERVER.debugWhitelist.contains(cmd.getMessageId())) { session.logPacket("RECV in Union", cmdOpcode, cmdPayload); - } else if (GAME_INFO.logPackets == ServerDebugMode.BLACKLIST && !SERVER.debugBlacklist.contains(cmd.getMessageId())) { + } else if (GAME_INFO.logPackets == ServerDebugMode.BLACKLIST && !SERVER.debugBlacklist.contains(cmd.getMessageId())) { session.logPacket("RECV in Union", cmdOpcode, cmdPayload); } //debugLevel ALL ignores UnionCmdNotify, so we will also ignore the contained opcodes diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockAvatarTalentReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockAvatarTalentReq.java index 2723ed60f..8ee470fb0 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockAvatarTalentReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockAvatarTalentReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.UnlockAvatarTalentReqOuterClass.UnlockAvatarTalentReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.UnlockAvatarTalentReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockPersonalLineReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockPersonalLineReq.java index 480ebe4fc..3ba034ed4 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockPersonalLineReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockPersonalLineReq.java @@ -11,11 +11,11 @@ import emu.grasscutter.server.packet.send.PacketUnlockPersonalLineRsp; @Opcodes(PacketOpcodes.UnlockPersonalLineReq) public class HandlerUnlockPersonalLineReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { var req = UnlockPersonalLineReqOuterClass.UnlockPersonalLineReq.parseFrom(payload); var data = GameData.getPersonalLineDataMap().get(req.getPersonalLineId()); - if(data == null){ + if (data == null) { return; } @@ -23,6 +23,6 @@ public class HandlerUnlockPersonalLineReq extends PacketHandler { session.getPlayer().useLegendaryKey(1); session.send(new PacketUnlockPersonalLineRsp(data.getId(), 1, data.getChapterId())); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockTransPointReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockTransPointReq.java index 28c6ce4da..2b56e78a8 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockTransPointReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUnlockTransPointReq.java @@ -1,10 +1,10 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.RetcodeOuterClass; import emu.grasscutter.net.proto.UnlockTransPointReqOuterClass.UnlockTransPointReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketUnlockTransPointRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdateAbilityCreatedMovingPlatformNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdateAbilityCreatedMovingPlatformNotify.java index 906485ea6..f67a6cf3a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdateAbilityCreatedMovingPlatformNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdateAbilityCreatedMovingPlatformNotify.java @@ -23,8 +23,10 @@ public class HandlerUpdateAbilityCreatedMovingPlatformNotify extends PacketHandl var scene = ((EntityPlatform) entity).getOwner().getScene(); switch (notify.getOpType()) { - case OP_TYPE_ACTIVATE -> scene.broadcastPacket(new PacketPlatformStartRouteNotify((EntityPlatform) entity, scene)); - case OP_TYPE_DEACTIVATE -> scene.broadcastPacket(new PacketPlatformStopRouteNotify((EntityPlatform) entity, scene)); + case OP_TYPE_ACTIVATE -> + scene.broadcastPacket(new PacketPlatformStartRouteNotify((EntityPlatform) entity, scene)); + case OP_TYPE_DEACTIVATE -> + scene.broadcastPacket(new PacketPlatformStopRouteNotify((EntityPlatform) entity, scene)); } } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdatePlayerShowAvatarListReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdatePlayerShowAvatarListReq.java index d04fb7308..47e88aa12 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdatePlayerShowAvatarListReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdatePlayerShowAvatarListReq.java @@ -1,22 +1,21 @@ -package emu.grasscutter.server.packet.recv; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.UpdatePlayerShowAvatarListReqOuterClass; -import emu.grasscutter.server.game.GameSession; -import emu.grasscutter.server.packet.send.PacketUpdatePlayerShowAvatarListRsp; - -@Opcodes(PacketOpcodes.UpdatePlayerShowAvatarListReq) -public class HandlerUpdatePlayerShowAvatarListReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - UpdatePlayerShowAvatarListReqOuterClass.UpdatePlayerShowAvatarListReq req = UpdatePlayerShowAvatarListReqOuterClass.UpdatePlayerShowAvatarListReq.parseFrom(payload); - - session.getPlayer().setShowAvatars(req.getIsShowAvatar()); - session.getPlayer().setShowAvatarList(req.getShowAvatarIdListList()); - - session.send(new PacketUpdatePlayerShowAvatarListRsp(req.getIsShowAvatar(), req.getShowAvatarIdListList())); - } -} +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.UpdatePlayerShowAvatarListReqOuterClass; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketUpdatePlayerShowAvatarListRsp; + +@Opcodes(PacketOpcodes.UpdatePlayerShowAvatarListReq) +public class HandlerUpdatePlayerShowAvatarListReq extends PacketHandler { + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + UpdatePlayerShowAvatarListReqOuterClass.UpdatePlayerShowAvatarListReq req = UpdatePlayerShowAvatarListReqOuterClass.UpdatePlayerShowAvatarListReq.parseFrom(payload); + + session.getPlayer().setShowAvatars(req.getIsShowAvatar()); + session.getPlayer().setShowAvatarList(req.getShowAvatarIdListList()); + + session.send(new PacketUpdatePlayerShowAvatarListRsp(req.getIsShowAvatar(), req.getShowAvatarIdListList())); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUseItemReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUseItemReq.java index 4d422fe7b..171c2d77c 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerUseItemReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerUseItemReq.java @@ -2,9 +2,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.UseItemReqOuterClass.UseItemReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketUseItemRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerVehicleInteractReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerVehicleInteractReq.java index d45befa89..ba55bbc0f 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerVehicleInteractReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerVehicleInteractReq.java @@ -4,17 +4,16 @@ import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.VehicleInteractReqOuterClass; - import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketVehicleInteractRsp; @Opcodes(PacketOpcodes.VehicleInteractReq) public class HandlerVehicleInteractReq extends PacketHandler { - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - VehicleInteractReqOuterClass.VehicleInteractReq req = VehicleInteractReqOuterClass.VehicleInteractReq.parseFrom(payload); - session.getPlayer().getStaminaManager().handleVehicleInteractReq(session, req.getEntityId(), req.getInteractType()); - session.send(new PacketVehicleInteractRsp(session.getPlayer(), req.getEntityId(), req.getInteractType())); - } + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + VehicleInteractReqOuterClass.VehicleInteractReq req = VehicleInteractReqOuterClass.VehicleInteractReq.parseFrom(payload); + session.getPlayer().getStaminaManager().handleVehicleInteractReq(session, req.getEntityId(), req.getInteractType()); + session.send(new PacketVehicleInteractRsp(session.getPlayer(), req.getEntityId(), req.getInteractType())); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponAwakenReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponAwakenReq.java index 79326554d..56b0b7166 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponAwakenReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponAwakenReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WeaponAwakenReqOuterClass.WeaponAwakenReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.WeaponAwakenReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponPromoteReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponPromoteReq.java index 19fa03fd6..ac631f5fc 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponPromoteReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponPromoteReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WeaponPromoteReqOuterClass.WeaponPromoteReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.WeaponPromoteReq) diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponUpgradeReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponUpgradeReq.java index 4744a2f11..047d0e221 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponUpgradeReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWeaponUpgradeReq.java @@ -1,9 +1,9 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WeaponUpgradeReqOuterClass.WeaponUpgradeReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @Opcodes(PacketOpcodes.WeaponUpgradeReq) @@ -15,10 +15,10 @@ public class HandlerWeaponUpgradeReq extends PacketHandler { // Level up weapon session.getServer().getInventorySystem().upgradeWeapon( - session.getPlayer(), - req.getTargetWeaponGuid(), - req.getFoodWeaponGuidListList(), - req.getItemParamListList() + session.getPlayer(), + req.getTargetWeaponGuid(), + req.getFoodWeaponGuidListList(), + req.getItemParamListList() ); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWearEquipReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWearEquipReq.java index 3907aee89..c6eee8bb3 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWearEquipReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWearEquipReq.java @@ -1,22 +1,22 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WearEquipReqOuterClass.WearEquipReq; -import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketWearEquipRsp; @Opcodes(PacketOpcodes.WearEquipReq) public class HandlerWearEquipReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - WearEquipReq req = WearEquipReq.parseFrom(payload); - - if (session.getPlayer().getInventory().equipItem(req.getAvatarGuid(), req.getEquipGuid())) { - session.send(new PacketWearEquipRsp(req.getAvatarGuid(), req.getEquipGuid())); - } - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + WearEquipReq req = WearEquipReq.parseFrom(payload); + + if (session.getPlayer().getInventory().equipItem(req.getAvatarGuid(), req.getEquipGuid())) { + session.send(new PacketWearEquipRsp(req.getAvatarGuid(), req.getEquipGuid())); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWidgetDoBagReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWidgetDoBagReq.java index 5effda7b9..a9b9d0966 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWidgetDoBagReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWidgetDoBagReq.java @@ -27,7 +27,8 @@ public class HandlerWidgetDoBagReq extends PacketHandler { session.send(new PacketWidgetCoolDownNotify(15, System.currentTimeMillis() + 5000L, true)); } case 220047 -> this.spawnVehicle(session, 70800058, pos, rot); - default -> {} + default -> { + } } session.send(new PacketWidgetDoBagRsp()); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWorldPlayerReviveReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWorldPlayerReviveReq.java index 6872dd270..1b52e695e 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerWorldPlayerReviveReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerWorldPlayerReviveReq.java @@ -1,19 +1,18 @@ package emu.grasscutter.server.packet.recv; import emu.grasscutter.net.packet.Opcodes; -import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketHandler; -import emu.grasscutter.net.proto.WorldPlayerDieNotifyOuterClass; +import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketWorldPlayerReviveRsp; @Opcodes(PacketOpcodes.WorldPlayerReviveReq) public class HandlerWorldPlayerReviveReq extends PacketHandler { - - @Override - public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.getPlayer().getTeamManager().respawnTeam(); - session.send(new PacketWorldPlayerReviveRsp()); - } + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + session.getPlayer().getTeamManager().respawnTeam(); + session.send(new PacketWorldPlayerReviveRsp()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/Packet.java b/src/main/java/emu/grasscutter/server/packet/send/Packet.java index 22f4924a1..89e459375 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/Packet.java +++ b/src/main/java/emu/grasscutter/server/packet/send/Packet.java @@ -4,9 +4,9 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; public class Packet extends BasePacket { - - public Packet() { - super(PacketOpcodes.NONE); - } + public Packet() { + super(PacketOpcodes.NONE); + + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java index e6ce9ee00..0a863cc09 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AbilityChangeNotifyOuterClass.AbilityChangeNotify; public class PacketAbilityChangeNotify extends BasePacket { - - public PacketAbilityChangeNotify(EntityAvatar entity) { - super(PacketOpcodes.AbilityChangeNotify, true); - AbilityChangeNotify proto = AbilityChangeNotify.newBuilder() - .setEntityId(entity.getId()) - .setAbilityControlBlock(entity.getAbilityControlBlock()) - .build(); - - this.setData(proto); - } + public PacketAbilityChangeNotify(EntityAvatar entity) { + super(PacketOpcodes.AbilityChangeNotify, true); + + AbilityChangeNotify proto = AbilityChangeNotify.newBuilder() + .setEntityId(entity.getId()) + .setAbilityControlBlock(entity.getAbilityControlBlock()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityInvocationsNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityInvocationsNotify.java index c674fb9d6..3b97ce10a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityInvocationsNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityInvocationsNotify.java @@ -1,32 +1,32 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AbilityInvocationsNotifyOuterClass.AbilityInvocationsNotify; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; -public class PacketAbilityInvocationsNotify extends BasePacket { - - public PacketAbilityInvocationsNotify(AbilityInvokeEntry entry) { - super(PacketOpcodes.AbilityInvocationsNotify, true); - - AbilityInvocationsNotify proto = AbilityInvocationsNotify.newBuilder() - .addInvokes(entry) - .build(); +import java.util.List; + +public class PacketAbilityInvocationsNotify extends BasePacket { + + public PacketAbilityInvocationsNotify(AbilityInvokeEntry entry) { + super(PacketOpcodes.AbilityInvocationsNotify, true); + + AbilityInvocationsNotify proto = AbilityInvocationsNotify.newBuilder() + .addInvokes(entry) + .build(); + + this.setData(proto); + } + + public PacketAbilityInvocationsNotify(List entries) { + super(PacketOpcodes.AbilityInvocationsNotify, true); + + AbilityInvocationsNotify proto = AbilityInvocationsNotify.newBuilder() + .addAllInvokes(entries) + .build(); + + this.setData(proto); + } - this.setData(proto); - } - - public PacketAbilityInvocationsNotify(List entries) { - super(PacketOpcodes.AbilityInvocationsNotify, true); - - AbilityInvocationsNotify proto = AbilityInvocationsNotify.newBuilder() - .addAllInvokes(entries) - .build(); - - this.setData(proto); - } - } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityInfoNotify.java index cf7342ec1..a11e6ec51 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityInfoNotify.java @@ -7,13 +7,13 @@ import emu.grasscutter.net.proto.ActivityInfoOuterClass; public class PacketActivityInfoNotify extends BasePacket { - public PacketActivityInfoNotify(ActivityInfoOuterClass.ActivityInfo activityInfo) { - super(PacketOpcodes.ActivityInfoNotify); + public PacketActivityInfoNotify(ActivityInfoOuterClass.ActivityInfo activityInfo) { + super(PacketOpcodes.ActivityInfoNotify); var proto = ActivityInfoNotifyOuterClass.ActivityInfoNotify.newBuilder(); proto.setActivityInfo(activityInfo); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityScheduleInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityScheduleInfoNotify.java index f7048ffb3..bdeba61da 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityScheduleInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityScheduleInfoNotify.java @@ -11,10 +11,10 @@ import java.util.Collection; public class PacketActivityScheduleInfoNotify extends BasePacket { - public PacketActivityScheduleInfoNotify(Collection activityConfigItemList) { - super(PacketOpcodes.ActivityScheduleInfoNotify); + public PacketActivityScheduleInfoNotify(Collection activityConfigItemList) { + super(PacketOpcodes.ActivityScheduleInfoNotify); - var proto = ActivityScheduleInfoNotifyOuterClass.ActivityScheduleInfoNotify.newBuilder(); + var proto = ActivityScheduleInfoNotifyOuterClass.ActivityScheduleInfoNotify.newBuilder(); activityConfigItemList.forEach(item -> { proto.addActivityScheduleList(ActivityScheduleInfoOuterClass.ActivityScheduleInfo.newBuilder() @@ -26,6 +26,6 @@ public class PacketActivityScheduleInfoNotify extends BasePacket { .build()); }); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityTakeWatcherRewardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityTakeWatcherRewardRsp.java index 5968198e4..69439045a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityTakeWatcherRewardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityTakeWatcherRewardRsp.java @@ -6,8 +6,8 @@ import emu.grasscutter.net.proto.ActivityTakeWatcherRewardRspOuterClass; public class PacketActivityTakeWatcherRewardRsp extends BasePacket { - public PacketActivityTakeWatcherRewardRsp(int activityId, int watcherId) { - super(PacketOpcodes.ActivityTakeWatcherRewardRsp); + public PacketActivityTakeWatcherRewardRsp(int activityId, int watcherId) { + super(PacketOpcodes.ActivityTakeWatcherRewardRsp); var proto = ActivityTakeWatcherRewardRspOuterClass.ActivityTakeWatcherRewardRsp.newBuilder(); @@ -15,6 +15,6 @@ public class PacketActivityTakeWatcherRewardRsp extends BasePacket { .setWatcherId(watcherId); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityUpdateWatcherNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityUpdateWatcherNotify.java index 68ced92ad..fc0720ca8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketActivityUpdateWatcherNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketActivityUpdateWatcherNotify.java @@ -7,8 +7,8 @@ import emu.grasscutter.net.proto.ActivityUpdateWatcherNotifyOuterClass; public class PacketActivityUpdateWatcherNotify extends BasePacket { - public PacketActivityUpdateWatcherNotify(int activityId, PlayerActivityData.WatcherInfo watcherInfo) { - super(PacketOpcodes.ActivityUpdateWatcherNotify); + public PacketActivityUpdateWatcherNotify(int activityId, PlayerActivityData.WatcherInfo watcherInfo) { + super(PacketOpcodes.ActivityUpdateWatcherNotify); var proto = ActivityUpdateWatcherNotifyOuterClass.ActivityUpdateWatcherNotify.newBuilder(); @@ -16,5 +16,5 @@ public class PacketActivityUpdateWatcherNotify extends BasePacket { .setWatcherInfo(watcherInfo.toProto()); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAddBackupAvatarTeamRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAddBackupAvatarTeamRsp.java index 07a1bbebe..630994149 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAddBackupAvatarTeamRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAddBackupAvatarTeamRsp.java @@ -2,8 +2,8 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.net.proto.AddBackupAvatarTeamRspOuterClass.AddBackupAvatarTeamRsp; +import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; public class PacketAddBackupAvatarTeamRsp extends BasePacket { public PacketAddBackupAvatarTeamRsp(Retcode retcode) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAddQuestContentProgressRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAddQuestContentProgressRsp.java index c803c0464..3221db7b4 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAddQuestContentProgressRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAddQuestContentProgressRsp.java @@ -6,8 +6,8 @@ import emu.grasscutter.net.proto.AddQuestContentProgressRspOuterClass; public class PacketAddQuestContentProgressRsp extends BasePacket { - public PacketAddQuestContentProgressRsp(int contentType) { - super(PacketOpcodes.AddQuestContentProgressRsp); + public PacketAddQuestContentProgressRsp(int contentType) { + super(PacketOpcodes.AddQuestContentProgressRsp); var proto = AddQuestContentProgressRspOuterClass.AddQuestContentProgressRsp.newBuilder(); @@ -15,5 +15,5 @@ public class PacketAddQuestContentProgressRsp extends BasePacket { this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendNotify.java index c71ea4beb..4d8186106 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AskAddFriendNotifyOuterClass.AskAddFriendNotify; public class PacketAskAddFriendNotify extends BasePacket { - - public PacketAskAddFriendNotify(Friendship friendship) { - super(PacketOpcodes.AskAddFriendNotify); - AskAddFriendNotify proto = AskAddFriendNotify.newBuilder() - .setTargetUid(friendship.getFriendId()) - .setTargetFriendBrief(friendship.toProto()) - .build(); - - this.setData(proto); - } + public PacketAskAddFriendNotify(Friendship friendship) { + super(PacketOpcodes.AskAddFriendNotify); + + AskAddFriendNotify proto = AskAddFriendNotify.newBuilder() + .setTargetUid(friendship.getFriendId()) + .setTargetFriendBrief(friendship.toProto()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendRsp.java index 3f258b75a..255de6c68 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAskAddFriendRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AskAddFriendRspOuterClass.AskAddFriendRsp; public class PacketAskAddFriendRsp extends BasePacket { - - public PacketAskAddFriendRsp(int targetUid) { - super(PacketOpcodes.AskAddFriendRsp); - - AskAddFriendRsp proto = AskAddFriendRsp.newBuilder() - .setTargetUid(targetUid) - .build(); - - this.setData(proto); - } + + public PacketAskAddFriendRsp(int targetUid) { + super(PacketOpcodes.AskAddFriendRsp); + + AskAddFriendRsp proto = AskAddFriendRsp.newBuilder() + .setTargetUid(targetUid) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarAddNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarAddNotify.java index 5ee2fb803..f44370de8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarAddNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarAddNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarAddNotifyOuterClass.AvatarAddNotify; public class PacketAvatarAddNotify extends BasePacket { - - public PacketAvatarAddNotify(Avatar avatar, boolean addedToTeam) { - super(PacketOpcodes.AvatarAddNotify); - - AvatarAddNotify proto = AvatarAddNotify.newBuilder() - .setAvatar(avatar.toProto()) - .setIsInTeam(addedToTeam) - .build(); - - this.setData(proto); - } + + public PacketAvatarAddNotify(Avatar avatar, boolean addedToTeam) { + super(PacketOpcodes.AvatarAddNotify); + + AvatarAddNotify proto = AvatarAddNotify.newBuilder() + .setAvatar(avatar.toProto()) + .setIsInTeam(addedToTeam) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeNotify.java index a14be26d1..5b15765fd 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeNotify.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarChangeCostumeNotifyOuterClass.AvatarChangeCostumeNotify; public class PacketAvatarChangeCostumeNotify extends BasePacket { - - public PacketAvatarChangeCostumeNotify(EntityAvatar entity) { - super(PacketOpcodes.AvatarChangeCostumeNotify); - AvatarChangeCostumeNotify proto = AvatarChangeCostumeNotify.newBuilder() - .setEntityInfo(entity.toProto()) - .build(); - - this.setData(proto); - } + public PacketAvatarChangeCostumeNotify(EntityAvatar entity) { + super(PacketOpcodes.AvatarChangeCostumeNotify); + + AvatarChangeCostumeNotify proto = AvatarChangeCostumeNotify.newBuilder() + .setEntityInfo(entity.toProto()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeRsp.java index da5848378..abf40cad6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeCostumeRsp.java @@ -6,25 +6,25 @@ import emu.grasscutter.net.proto.AvatarChangeCostumeRspOuterClass.AvatarChangeCo import emu.grasscutter.net.proto.RetcodeOuterClass; public class PacketAvatarChangeCostumeRsp extends BasePacket { - - public PacketAvatarChangeCostumeRsp(long avatarGuid, int costumeId) { - super(PacketOpcodes.AvatarChangeCostumeRsp); - AvatarChangeCostumeRsp proto = AvatarChangeCostumeRsp.newBuilder() - .setAvatarGuid(avatarGuid) - .setCostumeId(costumeId) - .build(); - - this.setData(proto); - } - - public PacketAvatarChangeCostumeRsp() { - super(PacketOpcodes.AvatarChangeCostumeRsp); + public PacketAvatarChangeCostumeRsp(long avatarGuid, int costumeId) { + super(PacketOpcodes.AvatarChangeCostumeRsp); - AvatarChangeCostumeRsp proto = AvatarChangeCostumeRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); - - this.setData(proto); - } + AvatarChangeCostumeRsp proto = AvatarChangeCostumeRsp.newBuilder() + .setAvatarGuid(avatarGuid) + .setCostumeId(costumeId) + .build(); + + this.setData(proto); + } + + public PacketAvatarChangeCostumeRsp() { + super(PacketOpcodes.AvatarChangeCostumeRsp); + + AvatarChangeCostumeRsp proto = AvatarChangeCostumeRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeElementTypeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeElementTypeRsp.java index fe65f7905..ddd3bc396 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeElementTypeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarChangeElementTypeRsp.java @@ -5,20 +5,20 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarChangeElementTypeRspOuterClass.AvatarChangeElementTypeRsp; public class PacketAvatarChangeElementTypeRsp extends BasePacket { - - public PacketAvatarChangeElementTypeRsp() { - super(PacketOpcodes.AvatarChangeElementTypeRsp); - } - - public PacketAvatarChangeElementTypeRsp(int retcode) { - super(PacketOpcodes.AvatarChangeElementTypeRsp); - - if (retcode > 0) { - AvatarChangeElementTypeRsp proto = AvatarChangeElementTypeRsp.newBuilder() - .setRetcode(retcode) - .build(); - - this.setData(proto); - } - } + + public PacketAvatarChangeElementTypeRsp() { + super(PacketOpcodes.AvatarChangeElementTypeRsp); + } + + public PacketAvatarChangeElementTypeRsp(int retcode) { + super(PacketOpcodes.AvatarChangeElementTypeRsp); + + if (retcode > 0) { + AvatarChangeElementTypeRsp proto = AvatarChangeElementTypeRsp.newBuilder() + .setRetcode(retcode) + .build(); + + this.setData(proto); + } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java index 3ede88f9a..2bf5c4fa6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java @@ -12,10 +12,10 @@ public class PacketAvatarDataNotify extends BasePacket { super(PacketOpcodes.AvatarDataNotify, true); AvatarDataNotify.Builder proto = AvatarDataNotify.newBuilder() - .setCurAvatarTeamId(player.getTeamManager().getCurrentTeamId()) - .setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()) - .addAllOwnedFlycloakList(player.getFlyCloakList()) - .addAllOwnedCostumeList(player.getCostumeList()); + .setCurAvatarTeamId(player.getTeamManager().getCurrentTeamId()) + .setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()) + .addAllOwnedFlycloakList(player.getFlyCloakList()) + .addAllOwnedCostumeList(player.getCostumeList()); player.getAvatars().forEach(avatar -> proto.addAvatarList(avatar.toProto())); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDieAnimationEndRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDieAnimationEndRsp.java index b057ef34d..a118eb395 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDieAnimationEndRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDieAnimationEndRsp.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarDieAnimationEndRspOuterClass.AvatarDieAnimationEndRsp; public class PacketAvatarDieAnimationEndRsp extends BasePacket { - - public PacketAvatarDieAnimationEndRsp(long dieGuid, int skillId) { - super(PacketOpcodes.AvatarDieAnimationEndRsp); - AvatarDieAnimationEndRsp proto = AvatarDieAnimationEndRsp.newBuilder() - .setDieGuid(dieGuid) - .setSkillId(skillId) - .build(); - - this.setData(proto); - } + public PacketAvatarDieAnimationEndRsp(long dieGuid, int skillId) { + super(PacketOpcodes.AvatarDieAnimationEndRsp); + + AvatarDieAnimationEndRsp proto = AvatarDieAnimationEndRsp.newBuilder() + .setDieGuid(dieGuid) + .setSkillId(skillId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarEquipChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarEquipChangeNotify.java index dc00ad75c..7304ccac3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarEquipChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarEquipChangeNotify.java @@ -8,32 +8,32 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarEquipChangeNotifyOuterClass.AvatarEquipChangeNotify; public class PacketAvatarEquipChangeNotify extends BasePacket { - - public PacketAvatarEquipChangeNotify(Avatar avatar, GameItem item) { - super(PacketOpcodes.AvatarEquipChangeNotify); - AvatarEquipChangeNotify.Builder proto = AvatarEquipChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setEquipType(item.getEquipSlot()) - .setItemId(item.getItemId()) - .setEquipGuid(item.getGuid()); - - if (item.getItemData().getEquipType() == EquipType.EQUIP_WEAPON) { - proto.setWeapon(item.createSceneWeaponInfo()); - } else { - proto.setReliquary(item.createSceneReliquaryInfo()); - } + public PacketAvatarEquipChangeNotify(Avatar avatar, GameItem item) { + super(PacketOpcodes.AvatarEquipChangeNotify); - this.setData(proto); - } - - public PacketAvatarEquipChangeNotify(Avatar avatar, EquipType slot) { - super(PacketOpcodes.AvatarEquipChangeNotify); + AvatarEquipChangeNotify.Builder proto = AvatarEquipChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setEquipType(item.getEquipSlot()) + .setItemId(item.getItemId()) + .setEquipGuid(item.getGuid()); - AvatarEquipChangeNotify.Builder proto = AvatarEquipChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setEquipType(slot.getValue()); + if (item.getItemData().getEquipType() == EquipType.EQUIP_WEAPON) { + proto.setWeapon(item.createSceneWeaponInfo()); + } else { + proto.setReliquary(item.createSceneReliquaryInfo()); + } - this.setData(proto); - } + this.setData(proto); + } + + public PacketAvatarEquipChangeNotify(Avatar avatar, EquipType slot) { + super(PacketOpcodes.AvatarEquipChangeNotify); + + AvatarEquipChangeNotify.Builder proto = AvatarEquipChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setEquipType(slot.getValue()); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionAllDataRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionAllDataRsp.java index 6ce17ee5e..5e78da953 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionAllDataRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionAllDataRsp.java @@ -5,14 +5,15 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarExpeditionAllDataRspOuterClass.AvatarExpeditionAllDataRsp; -import java.util.*; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; public class PacketAvatarExpeditionAllDataRsp extends BasePacket { public PacketAvatarExpeditionAllDataRsp(Map expeditionInfo, int expeditionCountLimit) { super(PacketOpcodes.AvatarExpeditionAllDataRsp); - var openExpeditionList = List.of(306,305,304,303,302,301,206,105,204,104,203,103,202,101,102,201,106,205,401,402,403,404,405,406); + var openExpeditionList = List.of(306, 305, 304, 303, 302, 301, 206, 105, 204, 104, 203, 103, 202, 101, 102, 201, 106, 205, 401, 402, 403, 404, 405, 406); this.setData(AvatarExpeditionAllDataRsp.newBuilder() .addAllOpenExpeditionList(openExpeditionList) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionCallBackRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionCallBackRsp.java index 72404c707..3057323bd 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionCallBackRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionCallBackRsp.java @@ -1,12 +1,12 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - import emu.grasscutter.game.expedition.ExpeditionInfo; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarExpeditionCallBackRspOuterClass.AvatarExpeditionCallBackRsp; +import java.util.Map; + public class PacketAvatarExpeditionCallBackRsp extends BasePacket { public PacketAvatarExpeditionCallBackRsp(Map expeditionInfo) { super(PacketOpcodes.AvatarExpeditionCallBackRsp); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionDataNotify.java index 9ee5776ff..35f45cf78 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionDataNotify.java @@ -5,7 +5,7 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarExpeditionDataNotifyOuterClass.AvatarExpeditionDataNotify; -import java.util.*; +import java.util.Map; import java.util.stream.Collectors; public class PacketAvatarExpeditionDataNotify extends BasePacket { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionStartRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionStartRsp.java index dbdae9fdb..cfe127097 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionStartRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarExpeditionStartRsp.java @@ -1,12 +1,12 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - import emu.grasscutter.game.expedition.ExpeditionInfo; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarExpeditionStartRspOuterClass.AvatarExpeditionStartRsp; +import java.util.Map; + public class PacketAvatarExpeditionStartRsp extends BasePacket { public PacketAvatarExpeditionStartRsp(Map expeditionInfo) { super(PacketOpcodes.AvatarExpeditionStartRsp); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterDataNotify.java index 816fec64b..f94d6ae93 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterDataNotify.java @@ -1,49 +1,49 @@ -package emu.grasscutter.server.packet.send; - -import emu.grasscutter.game.avatar.Avatar; -import emu.grasscutter.game.props.FetterState; -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify; -import emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo; -import emu.grasscutter.net.proto.FetterDataOuterClass.FetterData; - -public class PacketAvatarFetterDataNotify extends BasePacket { - - public PacketAvatarFetterDataNotify(Avatar avatar) { - super(PacketOpcodes.AvatarFetterDataNotify); - - int fetterLevel = avatar.getFetterLevel(); - - AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() - .setExpLevel(avatar.getFetterLevel()); - - if (fetterLevel != 10) { - avatarFetter.setExpNumber(avatar.getFetterExp()); - } - - if (avatar.getFetterList() != null) { - for (int i = 0; i < avatar.getFetterList().size(); i++) { - avatarFetter.addFetterList( - FetterData.newBuilder() - .setFetterId(avatar.getFetterList().get(i)) - .setFetterState(FetterState.FINISH.getValue()) - ); - } - } - - int cardId = avatar.getNameCardId(); - - if (avatar.getPlayer().getNameCardList().contains(cardId)) { - avatarFetter.addRewardedFetterLevelList(10); - } - - AvatarFetterInfo avatarFetterInfo = avatarFetter.build(); - - AvatarFetterDataNotify proto = AvatarFetterDataNotify.newBuilder() - .putFetterInfoMap(avatar.getGuid(), avatarFetterInfo) - .build(); - - this.setData(proto); - } -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.game.avatar.Avatar; +import emu.grasscutter.game.props.FetterState; +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify; +import emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo; +import emu.grasscutter.net.proto.FetterDataOuterClass.FetterData; + +public class PacketAvatarFetterDataNotify extends BasePacket { + + public PacketAvatarFetterDataNotify(Avatar avatar) { + super(PacketOpcodes.AvatarFetterDataNotify); + + int fetterLevel = avatar.getFetterLevel(); + + AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() + .setExpLevel(avatar.getFetterLevel()); + + if (fetterLevel != 10) { + avatarFetter.setExpNumber(avatar.getFetterExp()); + } + + if (avatar.getFetterList() != null) { + for (int i = 0; i < avatar.getFetterList().size(); i++) { + avatarFetter.addFetterList( + FetterData.newBuilder() + .setFetterId(avatar.getFetterList().get(i)) + .setFetterState(FetterState.FINISH.getValue()) + ); + } + } + + int cardId = avatar.getNameCardId(); + + if (avatar.getPlayer().getNameCardList().contains(cardId)) { + avatarFetter.addRewardedFetterLevelList(10); + } + + AvatarFetterInfo avatarFetterInfo = avatarFetter.build(); + + AvatarFetterDataNotify proto = AvatarFetterDataNotify.newBuilder() + .putFetterInfoMap(avatar.getGuid(), avatarFetterInfo) + .build(); + + this.setData(proto); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterLevelRewardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterLevelRewardRsp.java index 481cdb620..1dbbbbe97 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterLevelRewardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFetterLevelRewardRsp.java @@ -1,35 +1,35 @@ -package emu.grasscutter.server.packet.send; - -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp; - -public class PacketAvatarFetterLevelRewardRsp extends BasePacket { - - public PacketAvatarFetterLevelRewardRsp(long guid, int fetterLevel, int rewardId) { - super(PacketOpcodes.AvatarFetterLevelRewardRsp); - - AvatarFetterLevelRewardRsp proto = AvatarFetterLevelRewardRsp.newBuilder() - .setAvatarGuid(guid) - .setFetterLevel(fetterLevel) - .setRetcode(0) - .setRewardId(rewardId) - .build(); - - this.setData(proto); - } - - public PacketAvatarFetterLevelRewardRsp(long guid, int fetterLevel) { - super(PacketOpcodes.AvatarFetterLevelRewardRsp); - - AvatarFetterLevelRewardRsp proto = AvatarFetterLevelRewardRsp.newBuilder() - .setAvatarGuid(guid) - .setFetterLevel(fetterLevel) - .setRetcode(1) - .setRewardId(0) - .build(); - - this.setData(proto); - } - -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp; + +public class PacketAvatarFetterLevelRewardRsp extends BasePacket { + + public PacketAvatarFetterLevelRewardRsp(long guid, int fetterLevel, int rewardId) { + super(PacketOpcodes.AvatarFetterLevelRewardRsp); + + AvatarFetterLevelRewardRsp proto = AvatarFetterLevelRewardRsp.newBuilder() + .setAvatarGuid(guid) + .setFetterLevel(fetterLevel) + .setRetcode(0) + .setRewardId(rewardId) + .build(); + + this.setData(proto); + } + + public PacketAvatarFetterLevelRewardRsp(long guid, int fetterLevel) { + super(PacketOpcodes.AvatarFetterLevelRewardRsp); + + AvatarFetterLevelRewardRsp proto = AvatarFetterLevelRewardRsp.newBuilder() + .setAvatarGuid(guid) + .setFetterLevel(fetterLevel) + .setRetcode(1) + .setRewardId(0) + .build(); + + this.setData(proto); + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropNotify.java index 556ba8626..bc7582fca 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarFightPropNotifyOuterClass.AvatarFightPropNotify; public class PacketAvatarFightPropNotify extends BasePacket { - - public PacketAvatarFightPropNotify(Avatar avatar) { - super(PacketOpcodes.AvatarFightPropNotify); - - AvatarFightPropNotify proto = AvatarFightPropNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .putAllFightPropMap(avatar.getFightProperties()) - .build(); - - this.setData(proto); - } + + public PacketAvatarFightPropNotify(Avatar avatar) { + super(PacketOpcodes.AvatarFightPropNotify); + + AvatarFightPropNotify proto = AvatarFightPropNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .putAllFightPropMap(avatar.getFightProperties()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropUpdateNotify.java index 9b9f4e9dd..5a13cba8a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFightPropUpdateNotify.java @@ -7,15 +7,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarFightPropUpdateNotifyOuterClass.AvatarFightPropUpdateNotify; public class PacketAvatarFightPropUpdateNotify extends BasePacket { - - public PacketAvatarFightPropUpdateNotify(Avatar avatar, FightProperty prop) { - super(PacketOpcodes.AvatarFightPropUpdateNotify); - - AvatarFightPropUpdateNotify proto = AvatarFightPropUpdateNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .putFightPropMap(prop.getId(), avatar.getFightProperty(prop)) - .build(); - - this.setData(proto); - } + + public PacketAvatarFightPropUpdateNotify(Avatar avatar, FightProperty prop) { + super(PacketOpcodes.AvatarFightPropUpdateNotify); + + AvatarFightPropUpdateNotify proto = AvatarFightPropUpdateNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .putFightPropMap(prop.getId(), avatar.getFightProperty(prop)) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFlycloakChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFlycloakChangeNotify.java index 23a35c815..dba50ece2 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFlycloakChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarFlycloakChangeNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarFlycloakChangeNotifyOuterClass.AvatarFlycloakChangeNotify; public class PacketAvatarFlycloakChangeNotify extends BasePacket { - - public PacketAvatarFlycloakChangeNotify(Avatar avatar) { - super(PacketOpcodes.AvatarFlycloakChangeNotify); - AvatarFlycloakChangeNotify proto = AvatarFlycloakChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setFlycloakId(avatar.getFlyCloak()) - .build(); + public PacketAvatarFlycloakChangeNotify(Avatar avatar) { + super(PacketOpcodes.AvatarFlycloakChangeNotify); - this.setData(proto); - } + AvatarFlycloakChangeNotify proto = AvatarFlycloakChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setFlycloakId(avatar.getFlyCloak()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainCostumeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainCostumeNotify.java index f8b14cda7..c7da2f9ca 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainCostumeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainCostumeNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarGainCostumeNotifyOuterClass.AvatarGainCostumeNotify; public class PacketAvatarGainCostumeNotify extends BasePacket { - - public PacketAvatarGainCostumeNotify(int costumeId) { - super(PacketOpcodes.AvatarGainCostumeNotify); - AvatarGainCostumeNotify proto = AvatarGainCostumeNotify.newBuilder() - .setCostumeId(costumeId) - .build(); - - this.setData(proto); - } + public PacketAvatarGainCostumeNotify(int costumeId) { + super(PacketOpcodes.AvatarGainCostumeNotify); + + AvatarGainCostumeNotify proto = AvatarGainCostumeNotify.newBuilder() + .setCostumeId(costumeId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainFlycloakNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainFlycloakNotify.java index 88856ad25..82806f360 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainFlycloakNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarGainFlycloakNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarGainFlycloakNotifyOuterClass.AvatarGainFlycloakNotify; public class PacketAvatarGainFlycloakNotify extends BasePacket { - - public PacketAvatarGainFlycloakNotify(int flycloak) { - super(PacketOpcodes.AvatarGainFlycloakNotify); - AvatarGainFlycloakNotify proto = AvatarGainFlycloakNotify.newBuilder() - .setFlycloakId(flycloak) - .build(); - - this.setData(proto); - } + public PacketAvatarGainFlycloakNotify(int flycloak) { + super(PacketOpcodes.AvatarGainFlycloakNotify); + + AvatarGainFlycloakNotify proto = AvatarGainFlycloakNotify.newBuilder() + .setFlycloakId(flycloak) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarLifeStateChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarLifeStateChangeNotify.java index d7258f6fa..0f1458f2b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarLifeStateChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarLifeStateChangeNotify.java @@ -2,61 +2,57 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.entity.GameEntity; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.game.props.LifeState; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarLifeStateChangeNotifyOuterClass.AvatarLifeStateChangeNotify; import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType; -import emu.grasscutter.net.proto.ServerBuffOuterClass; -import emu.grasscutter.net.proto.ServerBuffOuterClass.ServerBuff; - -import java.util.ArrayList; public class PacketAvatarLifeStateChangeNotify extends BasePacket { - - public PacketAvatarLifeStateChangeNotify(Avatar avatar) { - super(PacketOpcodes.AvatarLifeStateChangeNotify); - AvatarLifeStateChangeNotify proto = AvatarLifeStateChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setLifeState(avatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) > 0 ? LifeState.LIFE_ALIVE.getValue() : LifeState.LIFE_DEAD.getValue()) - .build(); - - this.setData(proto); - } - public PacketAvatarLifeStateChangeNotify(Avatar avatar, int attackerId, LifeState lifeState) { - super(PacketOpcodes.AvatarLifeStateChangeNotify); + public PacketAvatarLifeStateChangeNotify(Avatar avatar) { + super(PacketOpcodes.AvatarLifeStateChangeNotify); - AvatarLifeStateChangeNotify proto = AvatarLifeStateChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setLifeState(lifeState.getValue()) - .setMoveReliableSeq(attackerId) - .build(); + AvatarLifeStateChangeNotify proto = AvatarLifeStateChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setLifeState(avatar.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) > 0 ? LifeState.LIFE_ALIVE.getValue() : LifeState.LIFE_DEAD.getValue()) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketAvatarLifeStateChangeNotify(Avatar avatar, LifeState lifeState, PlayerDieType dieType) { - this(avatar, lifeState, null, "", dieType); - } + public PacketAvatarLifeStateChangeNotify(Avatar avatar, int attackerId, LifeState lifeState) { + super(PacketOpcodes.AvatarLifeStateChangeNotify); - public PacketAvatarLifeStateChangeNotify(Avatar avatar, LifeState lifeState, GameEntity sourceEntity, - String attackTag, PlayerDieType dieType) { - super(PacketOpcodes.AvatarLifeStateChangeNotify); + AvatarLifeStateChangeNotify proto = AvatarLifeStateChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setLifeState(lifeState.getValue()) + .setMoveReliableSeq(attackerId) + .build(); - AvatarLifeStateChangeNotify.Builder proto = AvatarLifeStateChangeNotify.newBuilder(); + this.setData(proto); + } - proto.setAvatarGuid(avatar.getGuid()); - proto.setLifeState(lifeState.getValue()); - if (sourceEntity != null) { - proto.setSourceEntityId(sourceEntity.getId()); - } - proto.setDieType(dieType); - proto.setAttackTag((attackTag)); + public PacketAvatarLifeStateChangeNotify(Avatar avatar, LifeState lifeState, PlayerDieType dieType) { + this(avatar, lifeState, null, "", dieType); + } - this.setData(proto.build()); - } + public PacketAvatarLifeStateChangeNotify(Avatar avatar, LifeState lifeState, GameEntity sourceEntity, + String attackTag, PlayerDieType dieType) { + super(PacketOpcodes.AvatarLifeStateChangeNotify); + + AvatarLifeStateChangeNotify.Builder proto = AvatarLifeStateChangeNotify.newBuilder(); + + proto.setAvatarGuid(avatar.getGuid()); + proto.setLifeState(lifeState.getValue()); + if (sourceEntity != null) { + proto.setSourceEntityId(sourceEntity.getId()); + } + proto.setDieType(dieType); + proto.setAttackTag((attackTag)); + + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPromoteRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPromoteRsp.java index 80d7d6ca9..d220c7b2a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPromoteRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPromoteRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarPromoteRspOuterClass.AvatarPromoteRsp; public class PacketAvatarPromoteRsp extends BasePacket { - - public PacketAvatarPromoteRsp(Avatar avatar) { - super(PacketOpcodes.AvatarPromoteRsp); - AvatarPromoteRsp proto = AvatarPromoteRsp.newBuilder() - .setGuid(avatar.getGuid()) - .build(); + public PacketAvatarPromoteRsp(Avatar avatar) { + super(PacketOpcodes.AvatarPromoteRsp); - this.setData(proto); - } + AvatarPromoteRsp proto = AvatarPromoteRsp.newBuilder() + .setGuid(avatar.getGuid()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPropNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPropNotify.java index 3b51c5f03..6fef6e53c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPropNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarPropNotify.java @@ -1,48 +1,48 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarPropNotifyOuterClass.AvatarPropNotify; +import java.util.Map; + public class PacketAvatarPropNotify extends BasePacket { - public PacketAvatarPropNotify(Avatar avatar) { - super(PacketOpcodes.AvatarPropNotify); + public PacketAvatarPropNotify(Avatar avatar) { + super(PacketOpcodes.AvatarPropNotify); - AvatarPropNotify proto = AvatarPropNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .putPropMap(PlayerProperty.PROP_LEVEL.getId(), avatar.getLevel()) - .putPropMap(PlayerProperty.PROP_EXP.getId(), avatar.getExp()) - .putPropMap(PlayerProperty.PROP_BREAK_LEVEL.getId(), avatar.getPromoteLevel()) - .putPropMap(PlayerProperty.PROP_SATIATION_VAL.getId(), avatar.getSatiation()) - .putPropMap(PlayerProperty.PROP_SATIATION_PENALTY_TIME.getId(), avatar.getSatiationPenalty()) - .build(); + AvatarPropNotify proto = AvatarPropNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .putPropMap(PlayerProperty.PROP_LEVEL.getId(), avatar.getLevel()) + .putPropMap(PlayerProperty.PROP_EXP.getId(), avatar.getExp()) + .putPropMap(PlayerProperty.PROP_BREAK_LEVEL.getId(), avatar.getPromoteLevel()) + .putPropMap(PlayerProperty.PROP_SATIATION_VAL.getId(), avatar.getSatiation()) + .putPropMap(PlayerProperty.PROP_SATIATION_PENALTY_TIME.getId(), avatar.getSatiationPenalty()) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketAvatarPropNotify(Avatar avatar, PlayerProperty prop, int value) { - super(PacketOpcodes.AvatarPropNotify); + public PacketAvatarPropNotify(Avatar avatar, PlayerProperty prop, int value) { + super(PacketOpcodes.AvatarPropNotify); - AvatarPropNotify proto = AvatarPropNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .putPropMap(prop.getId(), value) - .build(); + AvatarPropNotify proto = AvatarPropNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .putPropMap(prop.getId(), value) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketAvatarPropNotify(Avatar avatar, Map propMap) { - super(PacketOpcodes.AvatarPropNotify); + public PacketAvatarPropNotify(Avatar avatar, Map propMap) { + super(PacketOpcodes.AvatarPropNotify); - AvatarPropNotify proto = AvatarPropNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .putAllPropMap(propMap) - .build(); + AvatarPropNotify proto = AvatarPropNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .putAllPropMap(propMap) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSatiationDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSatiationDataNotify.java index 0d2261d51..7f5da2ab3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSatiationDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSatiationDataNotify.java @@ -1,48 +1,48 @@ package emu.grasscutter.server.packet.send; +import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.net.proto.AvatarSatiationDataNotifyOuterClass.AvatarSatiationDataNotify; import emu.grasscutter.net.proto.AvatarSatiationDataOuterClass.AvatarSatiationData; public class PacketAvatarSatiationDataNotify extends BasePacket { - public PacketAvatarSatiationDataNotify(Avatar avatar, float finishTime, long penaltyTime) { - super(PacketOpcodes.AvatarSatiationDataNotify); + public PacketAvatarSatiationDataNotify(Avatar avatar, float finishTime, long penaltyTime) { + super(PacketOpcodes.AvatarSatiationDataNotify); - AvatarSatiationData.Builder avatarSatiation = AvatarSatiationData.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setFinishTime(finishTime); + AvatarSatiationData.Builder avatarSatiation = AvatarSatiationData.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setFinishTime(finishTime); - // Penalty for overeating - if (penaltyTime > 0) { - avatarSatiation.setPenaltyFinishTime(penaltyTime); - } + // Penalty for overeating + if (penaltyTime > 0) { + avatarSatiation.setPenaltyFinishTime(penaltyTime); + } - avatarSatiation.build(); + avatarSatiation.build(); - AvatarSatiationDataNotify notify = AvatarSatiationDataNotify.newBuilder() - .addSatiationDataList(0, avatarSatiation) - .build(); + AvatarSatiationDataNotify notify = AvatarSatiationDataNotify.newBuilder() + .addSatiationDataList(0, avatarSatiation) + .build(); - this.setData(notify); - } + this.setData(notify); + } - public PacketAvatarSatiationDataNotify(float time, Avatar avatar) { - super(PacketOpcodes.AvatarSatiationDataNotify); + public PacketAvatarSatiationDataNotify(float time, Avatar avatar) { + super(PacketOpcodes.AvatarSatiationDataNotify); - var avatarSatiation = AvatarSatiationData.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setFinishTime(time + (avatar.getSatiation() / 30f)) - // Penalty time always ends before finish time - .setPenaltyFinishTime(time + (avatar.getSatiationPenalty() / 100f)) - .build(); + var avatarSatiation = AvatarSatiationData.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setFinishTime(time + (avatar.getSatiation() / 30f)) + // Penalty time always ends before finish time + .setPenaltyFinishTime(time + (avatar.getSatiationPenalty() / 100f)) + .build(); - AvatarSatiationDataNotify notify = AvatarSatiationDataNotify.newBuilder() - .addSatiationDataList(0, avatarSatiation) - .build(); + AvatarSatiationDataNotify notify = AvatarSatiationDataNotify.newBuilder() + .addSatiationDataList(0, avatarSatiation) + .build(); - this.setData(notify); - } + this.setData(notify); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillChangeNotify.java index ba260ce6c..9116f13e3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillChangeNotify.java @@ -6,19 +6,19 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarSkillChangeNotifyOuterClass.AvatarSkillChangeNotify; public class PacketAvatarSkillChangeNotify extends BasePacket { - - public PacketAvatarSkillChangeNotify(Avatar avatar, int skillId, int oldLevel, int curLevel) { - super(PacketOpcodes.AvatarSkillChangeNotify); - - AvatarSkillChangeNotify proto = AvatarSkillChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setEntityId(avatar.getEntityId()) - .setSkillDepotId(avatar.getSkillDepotId()) - .setAvatarSkillId(skillId) - .setOldLevel(oldLevel) - .setCurLevel(curLevel) - .build(); - - this.setData(proto); - } + + public PacketAvatarSkillChangeNotify(Avatar avatar, int skillId, int oldLevel, int curLevel) { + super(PacketOpcodes.AvatarSkillChangeNotify); + + AvatarSkillChangeNotify proto = AvatarSkillChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setEntityId(avatar.getEntityId()) + .setSkillDepotId(avatar.getSkillDepotId()) + .setAvatarSkillId(skillId) + .setOldLevel(oldLevel) + .setCurLevel(curLevel) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillDepotChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillDepotChangeNotify.java index 609e137f9..2b787b247 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillDepotChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillDepotChangeNotify.java @@ -6,21 +6,21 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarSkillDepotChangeNotifyOuterClass.AvatarSkillDepotChangeNotify; public class PacketAvatarSkillDepotChangeNotify extends BasePacket { - - public PacketAvatarSkillDepotChangeNotify(Avatar avatar) { - super(PacketOpcodes.AvatarSkillDepotChangeNotify); - - AvatarSkillDepotChangeNotify proto = AvatarSkillDepotChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setEntityId(avatar.getEntityId()) - .setSkillDepotId(avatar.getSkillDepotId()) - .setCoreProudSkillLevel(avatar.getCoreProudSkillLevel()) - .addAllTalentIdList(avatar.getTalentIdList()) - .addAllProudSkillList(avatar.getProudSkillList()) - .putAllSkillLevelMap(avatar.getSkillLevelMap()) - .putAllProudSkillExtraLevelMap(avatar.getProudSkillBonusMap()) - .build(); - - this.setData(proto); - } + + public PacketAvatarSkillDepotChangeNotify(Avatar avatar) { + super(PacketOpcodes.AvatarSkillDepotChangeNotify); + + AvatarSkillDepotChangeNotify proto = AvatarSkillDepotChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setEntityId(avatar.getEntityId()) + .setSkillDepotId(avatar.getSkillDepotId()) + .setCoreProudSkillLevel(avatar.getCoreProudSkillLevel()) + .addAllTalentIdList(avatar.getTalentIdList()) + .addAllProudSkillList(avatar.getProudSkillList()) + .putAllSkillLevelMap(avatar.getSkillLevelMap()) + .putAllProudSkillExtraLevelMap(avatar.getProudSkillBonusMap()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillMaxChargeCountNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillMaxChargeCountNotify.java index 696cb2027..e9091f7d2 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillMaxChargeCountNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillMaxChargeCountNotify.java @@ -6,16 +6,16 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarSkillMaxChargeCountNotifyOuterClass.AvatarSkillMaxChargeCountNotify; public class PacketAvatarSkillMaxChargeCountNotify extends BasePacket { - - public PacketAvatarSkillMaxChargeCountNotify(Avatar avatar, int skillId, int maxCharges) { - super(PacketOpcodes.AvatarSkillMaxChargeCountNotify); - AvatarSkillMaxChargeCountNotify proto = AvatarSkillMaxChargeCountNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setSkillId(skillId) - .setMaxChargeCount(maxCharges) - .build(); - - this.setData(proto); - } + public PacketAvatarSkillMaxChargeCountNotify(Avatar avatar, int skillId, int maxCharges) { + super(PacketOpcodes.AvatarSkillMaxChargeCountNotify); + + AvatarSkillMaxChargeCountNotify proto = AvatarSkillMaxChargeCountNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setSkillId(skillId) + .setMaxChargeCount(maxCharges) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillUpgradeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillUpgradeRsp.java index 22678db64..874cc4ce7 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillUpgradeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSkillUpgradeRsp.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarSkillUpgradeRspOuterClass.AvatarSkillUpgradeRsp; public class PacketAvatarSkillUpgradeRsp extends BasePacket { - - public PacketAvatarSkillUpgradeRsp(Avatar avatar, int skillId, int oldLevel, int newLevel) { - super(PacketOpcodes.AvatarSkillUpgradeRsp); - AvatarSkillUpgradeRsp proto = AvatarSkillUpgradeRsp.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setAvatarSkillId(skillId) - .setOldLevel(oldLevel) - .setCurLevel(newLevel) - .build(); - - this.setData(proto); - } + public PacketAvatarSkillUpgradeRsp(Avatar avatar, int skillId, int oldLevel, int newLevel) { + super(PacketOpcodes.AvatarSkillUpgradeRsp); + + AvatarSkillUpgradeRsp proto = AvatarSkillUpgradeRsp.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setAvatarSkillId(skillId) + .setOldLevel(oldLevel) + .setCurLevel(newLevel) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUnlockTalentNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUnlockTalentNotify.java index baa93bccf..8a924fea5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUnlockTalentNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUnlockTalentNotify.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarUnlockTalentNotifyOuterClass.AvatarUnlockTalentNotify; public class PacketAvatarUnlockTalentNotify extends BasePacket { - - public PacketAvatarUnlockTalentNotify(Avatar avatar, int talentId) { - super(PacketOpcodes.AvatarUnlockTalentNotify); - AvatarUnlockTalentNotify proto = AvatarUnlockTalentNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setEntityId(avatar.getEntityId()) - .setTalentId(talentId) - .setSkillDepotId(avatar.getSkillDepotId()) - .build(); - - this.setData(proto); - } + public PacketAvatarUnlockTalentNotify(Avatar avatar, int talentId) { + super(PacketOpcodes.AvatarUnlockTalentNotify); + + AvatarUnlockTalentNotify proto = AvatarUnlockTalentNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setEntityId(avatar.getEntityId()) + .setTalentId(talentId) + .setSkillDepotId(avatar.getSkillDepotId()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUpgradeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUpgradeRsp.java index 99ac311fd..0522cc06b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUpgradeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarUpgradeRsp.java @@ -1,27 +1,27 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AvatarUpgradeRspOuterClass.AvatarUpgradeRsp; -public class PacketAvatarUpgradeRsp extends BasePacket { - - public PacketAvatarUpgradeRsp(Avatar avatar, int oldLevel, Map oldFightPropMap) { - super(PacketOpcodes.AvatarUpgradeRsp); - - this.buildHeader(0); +import java.util.Map; - AvatarUpgradeRsp proto = AvatarUpgradeRsp.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setOldLevel(oldLevel) - .setCurLevel(avatar.getLevel()) - .putAllOldFightPropMap(oldFightPropMap) - .putAllCurFightPropMap(avatar.getFightProperties()) - .build(); - - this.setData(proto); - } +public class PacketAvatarUpgradeRsp extends BasePacket { + + public PacketAvatarUpgradeRsp(Avatar avatar, int oldLevel, Map oldFightPropMap) { + super(PacketOpcodes.AvatarUpgradeRsp); + + this.buildHeader(0); + + AvatarUpgradeRsp proto = AvatarUpgradeRsp.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setOldLevel(oldLevel) + .setCurLevel(avatar.getLevel()) + .putAllOldFightPropMap(oldFightPropMap) + .putAllCurFightPropMap(avatar.getFightProperties()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarWearFlycloakRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarWearFlycloakRsp.java index 0995e5d18..826c02529 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarWearFlycloakRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarWearFlycloakRsp.java @@ -6,24 +6,24 @@ import emu.grasscutter.net.proto.AvatarWearFlycloakRspOuterClass.AvatarWearFlycl import emu.grasscutter.net.proto.RetcodeOuterClass; public class PacketAvatarWearFlycloakRsp extends BasePacket { - public PacketAvatarWearFlycloakRsp(long avatarGuid, int costumeId) { - super(PacketOpcodes.AvatarWearFlycloakRsp); + public PacketAvatarWearFlycloakRsp(long avatarGuid, int costumeId) { + super(PacketOpcodes.AvatarWearFlycloakRsp); - AvatarWearFlycloakRsp proto = AvatarWearFlycloakRsp.newBuilder() - .setAvatarGuid(avatarGuid) - .setFlycloakId(costumeId) - .build(); - - this.setData(proto); - } - - public PacketAvatarWearFlycloakRsp() { - super(PacketOpcodes.AvatarWearFlycloakRsp); + AvatarWearFlycloakRsp proto = AvatarWearFlycloakRsp.newBuilder() + .setAvatarGuid(avatarGuid) + .setFlycloakId(costumeId) + .build(); - AvatarWearFlycloakRsp proto = AvatarWearFlycloakRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); - - this.setData(proto); - } + this.setData(proto); + } + + public PacketAvatarWearFlycloakRsp() { + super(PacketOpcodes.AvatarWearFlycloakRsp); + + AvatarWearFlycloakRsp proto = AvatarWearFlycloakRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBackMyWorldRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBackMyWorldRsp.java index ef3e962a5..90e02ca73 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketBackMyWorldRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBackMyWorldRsp.java @@ -6,11 +6,11 @@ import emu.grasscutter.net.proto.BackMyWorldRspOuterClass; public class PacketBackMyWorldRsp extends BasePacket { - public PacketBackMyWorldRsp() { - super(PacketOpcodes.BackMyWorldRsp); + public PacketBackMyWorldRsp() { + super(PacketOpcodes.BackMyWorldRsp); - var proto = BackMyWorldRspOuterClass.BackMyWorldRsp.newBuilder(); + var proto = BackMyWorldRspOuterClass.BackMyWorldRsp.newBuilder(); - this.setData(proto.build()); - } + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassAllDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassAllDataNotify.java index 01ab447b7..b33f75be5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassAllDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassAllDataNotify.java @@ -4,34 +4,30 @@ import emu.grasscutter.data.GameData; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.*; import emu.grasscutter.net.proto.BattlePassAllDataNotifyOuterClass.BattlePassAllDataNotify; -import java.util.ArrayList; -import java.util.List; - public class PacketBattlePassAllDataNotify extends BasePacket { public PacketBattlePassAllDataNotify(Player player) { super(PacketOpcodes.BattlePassAllDataNotify); var proto = BattlePassAllDataNotify.newBuilder(); - + proto - .setHaveCurSchedule(true) - .setCurSchedule(player.getBattlePassManager().getScheduleProto()); + .setHaveCurSchedule(true) + .setCurSchedule(player.getBattlePassManager().getScheduleProto()); for (var missionData : GameData.getBattlePassMissionDataMap().values()) { - // Dont send invalid refresh types - if (!missionData.isValidRefreshType()) { - continue; - } - - // Check if player has mission in bp manager. If not, then add an empty proto from the mission data - if (player.getBattlePassManager().hasMission(missionData.getId())) { - proto.addMissionList(player.getBattlePassManager().loadMissionById(missionData.getId()).toProto()); - } else { - proto.addMissionList(missionData.toProto()); - } + // Dont send invalid refresh types + if (!missionData.isValidRefreshType()) { + continue; + } + + // Check if player has mission in bp manager. If not, then add an empty proto from the mission data + if (player.getBattlePassManager().hasMission(missionData.getId())) { + proto.addMissionList(player.getBattlePassManager().loadMissionById(missionData.getId()).toProto()); + } else { + proto.addMissionList(missionData.toProto()); + } } setData(proto.build()); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassCurScheduleUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassCurScheduleUpdateNotify.java index 9e480c121..f4437945b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassCurScheduleUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassCurScheduleUpdateNotify.java @@ -3,23 +3,19 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.*; import emu.grasscutter.net.proto.BattlePassCurScheduleUpdateNotifyOuterClass.BattlePassCurScheduleUpdateNotify; -import java.util.ArrayList; -import java.util.List; - public class PacketBattlePassCurScheduleUpdateNotify extends BasePacket { - + public PacketBattlePassCurScheduleUpdateNotify(Player player) { super(PacketOpcodes.BattlePassCurScheduleUpdateNotify); var proto = BattlePassCurScheduleUpdateNotify.newBuilder(); proto - .setHaveCurSchedule(true) - .setCurSchedule(player.getBattlePassManager().getScheduleProto()) - .build(); + .setHaveCurSchedule(true) + .setCurSchedule(player.getBattlePassManager().getScheduleProto()) + .build(); setData(proto.build()); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassMissionUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassMissionUpdateNotify.java index 0d1404edb..f450108fc 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassMissionUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBattlePassMissionUpdateNotify.java @@ -1,33 +1,33 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; - import emu.grasscutter.game.battlepass.BattlePassMission; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.BattlePassMissionUpdateNotifyOuterClass.BattlePassMissionUpdateNotify; +import java.util.Collection; + public class PacketBattlePassMissionUpdateNotify extends BasePacket { public PacketBattlePassMissionUpdateNotify(BattlePassMission mission) { super(PacketOpcodes.BattlePassMissionUpdateNotify); var proto = BattlePassMissionUpdateNotify.newBuilder() - .addMissionList(mission.toProto()) - .build(); + .addMissionList(mission.toProto()) + .build(); this.setData(proto); } - + public PacketBattlePassMissionUpdateNotify(Collection missions) { super(PacketOpcodes.BattlePassMissionUpdateNotify); var proto = BattlePassMissionUpdateNotify.newBuilder(); missions.forEach(mission -> { - proto.addMissionList(mission.toProto()); + proto.addMissionList(mission.toProto()); }); - + this.setData(proto.build()); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBuyBattlePassLevelRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBuyBattlePassLevelRsp.java index 2649c7e4c..e5026bfbc 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketBuyBattlePassLevelRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBuyBattlePassLevelRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.BuyBattlePassLevelRspOuterClass.BuyBattlePassLevelRsp; public class PacketBuyBattlePassLevelRsp extends BasePacket { - - public PacketBuyBattlePassLevelRsp(int buyLevel) { - super(PacketOpcodes.BuyBattlePassLevelRsp); - - BuyBattlePassLevelRsp proto = BuyBattlePassLevelRsp.newBuilder() - .setBuyLevel(buyLevel) - .build(); - - this.setData(proto); - } + + public PacketBuyBattlePassLevelRsp(int buyLevel) { + super(PacketOpcodes.BuyBattlePassLevelRsp); + + BuyBattlePassLevelRsp proto = BuyBattlePassLevelRsp.newBuilder() + .setBuyLevel(buyLevel) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketBuyGoodsRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketBuyGoodsRsp.java index 2d9a5f597..fc49136af 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketBuyGoodsRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketBuyGoodsRsp.java @@ -10,12 +10,12 @@ public class PacketBuyGoodsRsp extends BasePacket { super(PacketOpcodes.BuyGoodsRsp); BuyGoodsRspOuterClass.BuyGoodsRsp buyGoodsRsp = BuyGoodsRspOuterClass.BuyGoodsRsp.newBuilder() - .setShopType(shopType) - .setBuyCount(boughtNum) - .addGoodsList(ShopGoodsOuterClass.ShopGoods.newBuilder() - .mergeFrom(sg) - .setBoughtNum(boughtNum) - ).build(); + .setShopType(shopType) + .setBuyCount(boughtNum) + .addGoodsList(ShopGoodsOuterClass.ShopGoods.newBuilder() + .mergeFrom(sg) + .setBoughtNum(boughtNum) + ).build(); this.setData(buyGoodsRsp); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCalcWeaponUpgradeReturnItemsRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCalcWeaponUpgradeReturnItemsRsp.java index 8d2bfacfb..d0ca398ab 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCalcWeaponUpgradeReturnItemsRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCalcWeaponUpgradeReturnItemsRsp.java @@ -1,33 +1,33 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CalcWeaponUpgradeReturnItemsRspOuterClass.CalcWeaponUpgradeReturnItemsRsp; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.RetcodeOuterClass; +import java.util.List; + public class PacketCalcWeaponUpgradeReturnItemsRsp extends BasePacket { - - public PacketCalcWeaponUpgradeReturnItemsRsp(long itemGuid, List returnItems) { - super(PacketOpcodes.CalcWeaponUpgradeReturnItemsRsp); - - CalcWeaponUpgradeReturnItemsRsp proto = CalcWeaponUpgradeReturnItemsRsp.newBuilder() - .setTargetWeaponGuid(itemGuid) - .addAllItemParamList(returnItems) - .build(); - - this.setData(proto); - } - - public PacketCalcWeaponUpgradeReturnItemsRsp() { - super(PacketOpcodes.CalcWeaponUpgradeReturnItemsRsp); - - CalcWeaponUpgradeReturnItemsRsp proto = CalcWeaponUpgradeReturnItemsRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); - - this.setData(proto); - } + + public PacketCalcWeaponUpgradeReturnItemsRsp(long itemGuid, List returnItems) { + super(PacketOpcodes.CalcWeaponUpgradeReturnItemsRsp); + + CalcWeaponUpgradeReturnItemsRsp proto = CalcWeaponUpgradeReturnItemsRsp.newBuilder() + .setTargetWeaponGuid(itemGuid) + .addAllItemParamList(returnItems) + .build(); + + this.setData(proto); + } + + public PacketCalcWeaponUpgradeReturnItemsRsp() { + super(PacketOpcodes.CalcWeaponUpgradeReturnItemsRsp); + + CalcWeaponUpgradeReturnItemsRsp proto = CalcWeaponUpgradeReturnItemsRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCanUseSkillNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCanUseSkillNotify.java index f8fe1314a..5e4d26edd 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCanUseSkillNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCanUseSkillNotify.java @@ -10,8 +10,8 @@ public class PacketCanUseSkillNotify extends BasePacket { super(PacketOpcodes.CanUseSkillNotify); CanUseSkillNotifyOuterClass.CanUseSkillNotify proto = CanUseSkillNotifyOuterClass.CanUseSkillNotify.newBuilder() - .setIsCanUseSkill(canUseSkill) - .build(); + .setIsCanUseSkill(canUseSkill) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCardProductRewardNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCardProductRewardNotify.java index 606c77fff..f4fb678b5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCardProductRewardNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCardProductRewardNotify.java @@ -11,10 +11,10 @@ public class PacketCardProductRewardNotify extends BasePacket { super(PacketOpcodes.CardProductRewardNotify); CardProductRewardNotify proto = CardProductRewardNotify.newBuilder() - .setProductId("ys_chn_blessofmoon_tier5") - .setHcoin(90) - .setRemainDays(remainsDay) - .build(); + .setProductId("ys_chn_blessofmoon_tier5") + .setHcoin(90) + .setRemainDays(remainsDay) + .build(); // Hard code Product id keep cool 😎 diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChallengeDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChallengeDataNotify.java index 2a133149d..e1011366a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChallengeDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChallengeDataNotify.java @@ -7,15 +7,15 @@ import emu.grasscutter.net.proto.ChallengeDataNotifyOuterClass.ChallengeDataNoti public class PacketChallengeDataNotify extends BasePacket { - public PacketChallengeDataNotify(WorldChallenge challenge, int index, int value) { - super(PacketOpcodes.ChallengeDataNotify); + public PacketChallengeDataNotify(WorldChallenge challenge, int index, int value) { + super(PacketOpcodes.ChallengeDataNotify); - ChallengeDataNotify proto = ChallengeDataNotify.newBuilder() - .setChallengeIndex(challenge.getChallengeIndex()) - .setParamIndex(index) - .setValue(value) - .build(); - - this.setData(proto); - } + ChallengeDataNotify proto = ChallengeDataNotify.newBuilder() + .setChallengeIndex(challenge.getChallengeIndex()) + .setParamIndex(index) + .setValue(value) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeAvatarRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeAvatarRsp.java index 0fd69fe26..b46b70471 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeAvatarRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeAvatarRsp.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.proto.ChangeAvatarRspOuterClass.ChangeAvatarRsp; import emu.grasscutter.net.proto.RetcodeOuterClass; public class PacketChangeAvatarRsp extends BasePacket { - - public PacketChangeAvatarRsp(long guid) { - super(PacketOpcodes.ChangeAvatarRsp); - ChangeAvatarRsp p = ChangeAvatarRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) - .setCurGuid(guid) - .build(); - - this.setData(p); - } + public PacketChangeAvatarRsp(long guid) { + super(PacketOpcodes.ChangeAvatarRsp); + + ChangeAvatarRsp p = ChangeAvatarRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) + .setCurGuid(guid) + .build(); + + this.setData(p); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeGameTimeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeGameTimeRsp.java index b0b46bde9..eb9527220 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeGameTimeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeGameTimeRsp.java @@ -1,20 +1,19 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.world.World; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeGameTimeRspOuterClass.ChangeGameTimeRsp; public class PacketChangeGameTimeRsp extends BasePacket { - - public PacketChangeGameTimeRsp(Player player) { - super(PacketOpcodes.ChangeGameTimeRsp); - - ChangeGameTimeRsp proto = ChangeGameTimeRsp.newBuilder() - .setCurGameTime(player.getScene().getTime()) - .build(); - - this.setData(proto); - } + + public PacketChangeGameTimeRsp(Player player) { + super(PacketOpcodes.ChangeGameTimeRsp); + + ChangeGameTimeRsp proto = ChangeGameTimeRsp.newBuilder() + .setCurGameTime(player.getScene().getTime()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeMpTeamAvatarRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeMpTeamAvatarRsp.java index f44c3326e..91b792a12 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeMpTeamAvatarRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeMpTeamAvatarRsp.java @@ -7,17 +7,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeMpTeamAvatarRspOuterClass.ChangeMpTeamAvatarRsp; public class PacketChangeMpTeamAvatarRsp extends BasePacket { - - public PacketChangeMpTeamAvatarRsp(Player player, TeamInfo teamInfo) { - super(PacketOpcodes.ChangeMpTeamAvatarRsp); - - ChangeMpTeamAvatarRsp.Builder proto = ChangeMpTeamAvatarRsp.newBuilder() - .setCurAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()); - - for (int avatarId : teamInfo.getAvatars()) { - proto.addAvatarGuidList(player.getAvatars().getAvatarById(avatarId).getGuid()); - } - - this.setData(proto); - } + + public PacketChangeMpTeamAvatarRsp(Player player, TeamInfo teamInfo) { + super(PacketOpcodes.ChangeMpTeamAvatarRsp); + + ChangeMpTeamAvatarRsp.Builder proto = ChangeMpTeamAvatarRsp.newBuilder() + .setCurAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()); + + for (int avatarId : teamInfo.getAvatars()) { + proto.addAvatarGuidList(player.getAvatars().getAvatarById(avatarId).getGuid()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeTeamNameRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeTeamNameRsp.java index a965eb1bb..9d2585137 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChangeTeamNameRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChangeTeamNameRsp.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChangeTeamNameRspOuterClass.ChangeTeamNameRsp; public class PacketChangeTeamNameRsp extends BasePacket { - - public PacketChangeTeamNameRsp(int teamId, String teamName) { - super(PacketOpcodes.ChangeTeamNameRsp); - ChangeTeamNameRsp proto = ChangeTeamNameRsp.newBuilder() - .setTeamId(teamId) - .setTeamName(teamName) - .build(); - - this.setData(proto); - } + public PacketChangeTeamNameRsp(int teamId, String teamName) { + super(PacketOpcodes.ChangeTeamNameRsp); + + ChangeTeamNameRsp proto = ChangeTeamNameRsp.newBuilder() + .setTeamId(teamId) + .setTeamName(teamName) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChapterStateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChapterStateNotify.java index 4d60be2ce..38d8f53d5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChapterStateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChapterStateNotify.java @@ -7,8 +7,8 @@ import emu.grasscutter.net.proto.ChapterStateOuterClass; public class PacketChapterStateNotify extends BasePacket { - public PacketChapterStateNotify(int id, ChapterStateOuterClass.ChapterState state) { - super(PacketOpcodes.ChapterStateNotify); + public PacketChapterStateNotify(int id, ChapterStateOuterClass.ChapterState state) { + super(PacketOpcodes.ChapterStateNotify); var proto = ChapterStateNotifyOuterClass.ChapterStateNotify.newBuilder(); @@ -16,5 +16,5 @@ public class PacketChapterStateNotify extends BasePacket { .setChapterState(state); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketChooseCurAvatarTeamRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketChooseCurAvatarTeamRsp.java index 3eaecdb6d..27319ca9c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketChooseCurAvatarTeamRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketChooseCurAvatarTeamRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChooseCurAvatarTeamRspOuterClass.ChooseCurAvatarTeamRsp; public class PacketChooseCurAvatarTeamRsp extends BasePacket { - - public PacketChooseCurAvatarTeamRsp(int teamId) { - super(PacketOpcodes.ChooseCurAvatarTeamRsp); - ChooseCurAvatarTeamRsp proto = ChooseCurAvatarTeamRsp.newBuilder() - .setCurTeamId(teamId) - .build(); - - this.setData(proto); - } + public PacketChooseCurAvatarTeamRsp(int teamId) { + super(PacketOpcodes.ChooseCurAvatarTeamRsp); + + ChooseCurAvatarTeamRsp proto = ChooseCurAvatarTeamRsp.newBuilder() + .setCurTeamId(teamId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java index 61a682b4e..33cdb6cf8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java @@ -1,29 +1,29 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify; -public class PacketClientAbilityInitFinishNotify extends BasePacket { - - public PacketClientAbilityInitFinishNotify(List entries) { - super(PacketOpcodes.ClientAbilityInitFinishNotify, true); +import java.util.List; - int entityId = 0; - - if (entries.size() > 0) { - AbilityInvokeEntry entry = entries.get(0); - entityId = entry.getEntityId(); - } - - ClientAbilityInitFinishNotify proto = ClientAbilityInitFinishNotify.newBuilder() - .setEntityId(entityId) - .addAllInvokes(entries) - .build(); - - this.setData(proto); - } +public class PacketClientAbilityInitFinishNotify extends BasePacket { + + public PacketClientAbilityInitFinishNotify(List entries) { + super(PacketOpcodes.ClientAbilityInitFinishNotify, true); + + int entityId = 0; + + if (entries.size() > 0) { + AbilityInvokeEntry entry = entries.get(0); + entityId = entry.getEntityId(); + } + + ClientAbilityInitFinishNotify proto = ClientAbilityInitFinishNotify.newBuilder() + .setEntityId(entityId) + .addAllInvokes(entries) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataFullNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataFullNotify.java index 771a0f581..071b3519e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataFullNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataFullNotify.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.Collections; - import emu.grasscutter.data.GameData; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; @@ -9,46 +7,48 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CodexDataFullNotifyOuterClass.CodexDataFullNotify; import emu.grasscutter.net.proto.CodexTypeDataOuterClass.CodexTypeData; +import java.util.Collections; + public class PacketCodexDataFullNotify extends BasePacket { public PacketCodexDataFullNotify(Player player) { super(PacketOpcodes.CodexDataFullNotify, true); //Quests CodexTypeData.Builder questTypeData = CodexTypeData.newBuilder() - .setTypeValue(1); + .setTypeValue(1); //Weapons CodexTypeData.Builder weaponTypeData = CodexTypeData.newBuilder() - .setTypeValue(2); + .setTypeValue(2); //Animals CodexTypeData.Builder animalTypeData = CodexTypeData.newBuilder() - .setTypeValue(3); + .setTypeValue(3); //Materials CodexTypeData.Builder materialTypeData = CodexTypeData.newBuilder() - .setTypeValue(4); + .setTypeValue(4); //Books CodexTypeData.Builder bookTypeData = CodexTypeData.newBuilder() - .setTypeValue(5); + .setTypeValue(5); //Tips CodexTypeData.Builder pushTipsTypeData = CodexTypeData.newBuilder() - .setTypeValue(6); + .setTypeValue(6); //Views CodexTypeData.Builder viewTypeData = CodexTypeData.newBuilder() - .setTypeValue(7); + .setTypeValue(7); //Reliquary CodexTypeData.Builder reliquaryData = CodexTypeData.newBuilder() - .setTypeValue(8); + .setTypeValue(8); player.getQuestManager().forEachMainQuest(mainQuest -> { - if(mainQuest.isFinished()){ + if (mainQuest.isFinished()) { var codexQuest = GameData.getCodexQuestDataIdMap().get(mainQuest.getParentQuestId()); - if(codexQuest != null){ + if (codexQuest != null) { questTypeData.addCodexIdList(codexQuest.getId()).addAllHaveViewedList(Collections.singleton(true)); } } @@ -56,21 +56,21 @@ public class PacketCodexDataFullNotify extends BasePacket { player.getCodex().getUnlockedWeapon().forEach(weapon -> { var codexWeapon = GameData.getCodexWeaponDataIdMap().get(weapon); - if(codexWeapon != null){ + if (codexWeapon != null) { weaponTypeData.addCodexIdList(codexWeapon.getId()).addAllHaveViewedList(Collections.singleton(true)); } }); player.getCodex().getUnlockedAnimal().forEach((animal, amount) -> { var codexAnimal = GameData.getCodexAnimalDataMap().get(animal); - if(codexAnimal != null){ + if (codexAnimal != null) { animalTypeData.addCodexIdList(codexAnimal.getId()).addAllHaveViewedList(Collections.singleton(true)); } }); player.getCodex().getUnlockedMaterial().forEach(material -> { var codexMaterial = GameData.getCodexMaterialDataIdMap().get(material); - if(codexMaterial != null){ + if (codexMaterial != null) { materialTypeData.addCodexIdList(codexMaterial.getId()).addAllHaveViewedList(Collections.singleton(true)); } }); @@ -80,14 +80,14 @@ public class PacketCodexDataFullNotify extends BasePacket { }); CodexDataFullNotify.Builder proto = CodexDataFullNotify.newBuilder() - .addTypeDataList(questTypeData.build()) - .addTypeDataList(weaponTypeData) - .addTypeDataList(animalTypeData) - .addTypeDataList(materialTypeData) - .addTypeDataList(bookTypeData) - .addTypeDataList(pushTipsTypeData.build()) - .addTypeDataList(viewTypeData.build()) - .addTypeDataList(reliquaryData); + .addTypeDataList(questTypeData.build()) + .addTypeDataList(weaponTypeData) + .addTypeDataList(animalTypeData) + .addTypeDataList(materialTypeData) + .addTypeDataList(bookTypeData) + .addTypeDataList(pushTipsTypeData.build()) + .addTypeDataList(viewTypeData.build()) + .addTypeDataList(reliquaryData); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataUpdateNotify.java index e2c0045f7..e287307d1 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCodexDataUpdateNotify.java @@ -10,21 +10,21 @@ public class PacketCodexDataUpdateNotify extends BasePacket { public PacketCodexDataUpdateNotify(GameMainQuest quest) { super(PacketOpcodes.CodexDataUpdateNotify, true); var codexQuest = GameData.getCodexQuestDataIdMap().get(quest.getParentQuestId()); - if(codexQuest != null){ + if (codexQuest != null) { CodexDataUpdateNotify proto = CodexDataUpdateNotify.newBuilder() - .setTypeValue(1) - .setId(codexQuest.getId()) - .build(); + .setTypeValue(1) + .setId(codexQuest.getId()) + .build(); this.setData(proto); } } - public PacketCodexDataUpdateNotify(int typeValue, int codexId){ + public PacketCodexDataUpdateNotify(int typeValue, int codexId) { super(PacketOpcodes.CodexDataUpdateNotify, true); CodexDataUpdateNotify proto = CodexDataUpdateNotify.newBuilder() - .setTypeValue(typeValue) - .setId(codexId) - .build(); + .setTypeValue(typeValue) + .setId(codexId) + .build(); this.setData(proto); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCombatInvocationsNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCombatInvocationsNotify.java index 7e9fba335..5ab6776f6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCombatInvocationsNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCombatInvocationsNotify.java @@ -1,32 +1,32 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CombatInvocationsNotifyOuterClass.CombatInvocationsNotify; import emu.grasscutter.net.proto.CombatInvokeEntryOuterClass.CombatInvokeEntry; +import java.util.List; + public class PacketCombatInvocationsNotify extends BasePacket { - - public PacketCombatInvocationsNotify(CombatInvokeEntry entry) { - super(PacketOpcodes.CombatInvocationsNotify, true); - - CombatInvocationsNotify proto = CombatInvocationsNotify.newBuilder() - .addInvokeList(entry) - .build(); - - this.setData(proto); - } - - public PacketCombatInvocationsNotify(List entries) { - super(PacketOpcodes.CombatInvocationsNotify, true); - - CombatInvocationsNotify proto = CombatInvocationsNotify.newBuilder() - .addAllInvokeList(entries) - .build(); - - this.setData(proto); - } - + + public PacketCombatInvocationsNotify(CombatInvokeEntry entry) { + super(PacketOpcodes.CombatInvocationsNotify, true); + + CombatInvocationsNotify proto = CombatInvocationsNotify.newBuilder() + .addInvokeList(entry) + .build(); + + this.setData(proto); + } + + public PacketCombatInvocationsNotify(List entries) { + super(PacketOpcodes.CombatInvocationsNotify, true); + + CombatInvocationsNotify proto = CombatInvocationsNotify.newBuilder() + .addAllInvokeList(entries) + .build(); + + this.setData(proto); + } + } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCombineDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCombineDataNotify.java index f7e4dabe5..b988c3a61 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCombineDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCombineDataNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CombineDataNotifyOuterClass.CombineDataNotify; public class PacketCombineDataNotify extends BasePacket { - - public PacketCombineDataNotify(Iterable unlockedCombines) { - super(PacketOpcodes.CombineDataNotify); - - CombineDataNotify proto = CombineDataNotify.newBuilder() - .addAllCombineIdList(unlockedCombines) - .build(); - - this.setData(proto); - } + + public PacketCombineDataNotify(Iterable unlockedCombines) { + super(PacketOpcodes.CombineDataNotify); + + CombineDataNotify proto = CombineDataNotify.newBuilder() + .addAllCombineIdList(unlockedCombines) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCombineFormulaDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCombineFormulaDataNotify.java index 747110137..558f54fac 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCombineFormulaDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCombineFormulaDataNotify.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CombineFormulaDataNotifyOuterClass.CombineFormulaDataNotify; public class PacketCombineFormulaDataNotify extends BasePacket { - - public PacketCombineFormulaDataNotify(int combineId) { - super(PacketOpcodes.CombineFormulaDataNotify); - - CombineFormulaDataNotify proto = CombineFormulaDataNotify.newBuilder() - .setCombineId(combineId) - .setIsLocked(false) - .build(); - - this.setData(proto); - } + + public PacketCombineFormulaDataNotify(int combineId) { + super(PacketOpcodes.CombineFormulaDataNotify); + + CombineFormulaDataNotify proto = CombineFormulaDataNotify.newBuilder() + .setCombineId(combineId) + .setIsLocked(false) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCombineRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCombineRsp.java index f552d1ec7..c5fd2b87f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCombineRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCombineRsp.java @@ -13,7 +13,7 @@ public class PacketCombineRsp extends BasePacket { super(PacketOpcodes.CombineRsp); CombineRspOuterClass.CombineRsp proto = CombineRspOuterClass.CombineRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build(); + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build(); this.setData(proto); @@ -23,7 +23,7 @@ public class PacketCombineRsp extends BasePacket { super(PacketOpcodes.CombineRsp); CombineRspOuterClass.CombineRsp proto = CombineRspOuterClass.CombineRsp.newBuilder() - .setRetcode(retcode).build(); + .setRetcode(retcode).build(); this.setData(proto); @@ -39,20 +39,19 @@ public class PacketCombineRsp extends BasePacket { super(PacketOpcodes.CombineRsp); CombineRspOuterClass.CombineRsp proto = CombineRspOuterClass.CombineRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) - .setCombineId(combineReq.getCombineId()) - .setCombineCount(combineReq.getCombineCount()) - .setAvatarGuid(combineReq.getAvatarGuid()) - .addAllCostItemList(costItemList) - .addAllResultItemList(resultItemList) - .addAllTotalRandomItemList(totalRandomItemList) - .addAllTotalReturnItemList(totalReturnItemList) - .addAllTotalExtraItemList(totalExtraItemList) - .build(); + .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) + .setCombineId(combineReq.getCombineId()) + .setCombineCount(combineReq.getCombineCount()) + .setAvatarGuid(combineReq.getAvatarGuid()) + .addAllCostItemList(costItemList) + .addAllResultItemList(resultItemList) + .addAllTotalRandomItemList(totalRandomItemList) + .addAllTotalReturnItemList(totalReturnItemList) + .addAllTotalExtraItemList(totalExtraItemList) + .build(); this.setData(proto); } - } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCompoundDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCompoundDataNotify.java index 7ea44f8ce..f60d6105f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCompoundDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCompoundDataNotify.java @@ -12,7 +12,7 @@ public class PacketCompoundDataNotify extends BasePacket { public PacketCompoundDataNotify(Set unlockedCompounds, List compoundQueueData) { super(PacketOpcodes.CompoundDataNotify); - var proto= CompoundDataNotify.newBuilder() + var proto = CompoundDataNotify.newBuilder() .addAllUnlockCompoundList(unlockedCompounds) .addAllCompoundQueueDataList(compoundQueueData) .build(); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCookDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCookDataNotify.java index 7d0b1f1c7..af85a35b2 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCookDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCookDataNotify.java @@ -1,20 +1,20 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.CookDataNotifyOuterClass.CookDataNotify; import emu.grasscutter.net.proto.CookRecipeDataOuterClass.CookRecipeData; +import java.util.List; + public class PacketCookDataNotify extends BasePacket { public PacketCookDataNotify(List recipes) { super(PacketOpcodes.CookDataNotify); CookDataNotify proto = CookDataNotify.newBuilder() - .addAllRecipeDataList(recipes) - .build(); + .addAllRecipeDataList(recipes) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCookRecipeDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCookRecipeDataNotify.java index 00762d92a..587f4c3f5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCookRecipeDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCookRecipeDataNotify.java @@ -10,9 +10,9 @@ public class PacketCookRecipeDataNotify extends BasePacket { super(PacketOpcodes.CookRecipeDataNotify); CookRecipeDataNotify proto = CookRecipeDataNotify.newBuilder() - .setRecipeData(recipe) - .build(); - + .setRecipeData(recipe) + .build(); + this.setData(proto); } @@ -20,9 +20,9 @@ public class PacketCookRecipeDataNotify extends BasePacket { super(PacketOpcodes.CookRecipeDataNotify); CookRecipeDataNotify proto = CookRecipeDataNotify.newBuilder() - .setRecipeData(CookRecipeData.newBuilder().setRecipeId(recipeId)) - .build(); - + .setRecipeData(CookRecipeData.newBuilder().setRecipeId(recipeId)) + .build(); + this.setData(proto); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketCreateVehicleRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketCreateVehicleRsp.java index ac3a3c4f9..b8dd6a991 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketCreateVehicleRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketCreateVehicleRsp.java @@ -1,16 +1,13 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.entity.EntityVehicle; import emu.grasscutter.game.entity.GameEntity; - +import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; - +import emu.grasscutter.net.proto.CreateVehicleRspOuterClass.CreateVehicleRsp; import emu.grasscutter.net.proto.VehicleInteractTypeOuterClass; import emu.grasscutter.net.proto.VehicleMemberOuterClass.VehicleMember; -import emu.grasscutter.net.proto.CreateVehicleRspOuterClass.CreateVehicleRsp; - import emu.grasscutter.utils.Position; import java.util.List; @@ -23,10 +20,10 @@ public class PacketCreateVehicleRsp extends BasePacket { // Eject vehicle members and Kill previous vehicles if there are any List previousVehicles = player.getScene().getEntities().values().stream() - .filter(entity -> entity instanceof EntityVehicle - && ((EntityVehicle) entity).getGadgetId() == vehicleId - && ((EntityVehicle) entity).getOwner().equals(player)) - .toList(); + .filter(entity -> entity instanceof EntityVehicle + && ((EntityVehicle) entity).getGadgetId() == vehicleId + && ((EntityVehicle) entity).getOwner().equals(player)) + .toList(); previousVehicles.stream().forEach(entity -> { List vehicleMembers = ((EntityVehicle) entity).getVehicleMembers().stream().toList(); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDealAddFriendRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDealAddFriendRsp.java index 9163797f4..9c8ceba15 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDealAddFriendRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDealAddFriendRsp.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.proto.DealAddFriendResultTypeOuterClass.DealAddFriend import emu.grasscutter.net.proto.DealAddFriendRspOuterClass.DealAddFriendRsp; public class PacketDealAddFriendRsp extends BasePacket { - - public PacketDealAddFriendRsp(int targetUid, DealAddFriendResultType result) { - super(PacketOpcodes.DealAddFriendRsp); - DealAddFriendRsp proto = DealAddFriendRsp.newBuilder() - .setTargetUid(targetUid) - .setDealAddFriendResult(result) - .build(); - - this.setData(proto); - } + public PacketDealAddFriendRsp(int targetUid, DealAddFriendResultType result) { + super(PacketOpcodes.DealAddFriendRsp); + + DealAddFriendRsp proto = DealAddFriendRsp.newBuilder() + .setTargetUid(targetUid) + .setDealAddFriendResult(result) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDelBackupAvatarTeamRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDelBackupAvatarTeamRsp.java index 31b3f3cd8..3d4b899d4 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDelBackupAvatarTeamRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDelBackupAvatarTeamRsp.java @@ -2,12 +2,12 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.net.proto.DelBackupAvatarTeamRspOuterClass.DelBackupAvatarTeamRsp; +import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; public class PacketDelBackupAvatarTeamRsp extends BasePacket { public PacketDelBackupAvatarTeamRsp(Retcode retcode, int id) { - super(PacketOpcodes.DelBackupAvatarTeamRsp); + super(PacketOpcodes.DelBackupAvatarTeamRsp); DelBackupAvatarTeamRsp proto = DelBackupAvatarTeamRsp.newBuilder() .setRetcode(retcode.getNumber()) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDelMailRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDelMailRsp.java index 7b618e8d0..447f611de 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDelMailRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDelMailRsp.java @@ -5,18 +5,17 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DelMailRspOuterClass.DelMailRsp; -import java.util.ArrayList; import java.util.List; -public class PacketDelMailRsp extends BasePacket { +public class PacketDelMailRsp extends BasePacket { public PacketDelMailRsp(Player player, List toDeleteIds) { super(PacketOpcodes.DelMailRsp); DelMailRsp proto = DelMailRsp.newBuilder() - .addAllMailIdList(toDeleteIds) - .build(); - + .addAllMailIdList(toDeleteIds) + .build(); + this.setData(proto); } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDelTeamEntityNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDelTeamEntityNotify.java index 23f7570ac..20757d705 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDelTeamEntityNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDelTeamEntityNotify.java @@ -1,32 +1,32 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DelTeamEntityNotifyOuterClass.DelTeamEntityNotify; +import java.util.List; + public class PacketDelTeamEntityNotify extends BasePacket { - - public PacketDelTeamEntityNotify(int sceneId, int teamEntityId) { - super(PacketOpcodes.DelTeamEntityNotify); - DelTeamEntityNotify proto = DelTeamEntityNotify.newBuilder() - .setSceneId(sceneId) - .addDelEntityIdList(teamEntityId) - .build(); - - this.setData(proto); - } - - public PacketDelTeamEntityNotify(int sceneId, List list) { - super(PacketOpcodes.DelTeamEntityNotify); + public PacketDelTeamEntityNotify(int sceneId, int teamEntityId) { + super(PacketOpcodes.DelTeamEntityNotify); - DelTeamEntityNotify proto = DelTeamEntityNotify.newBuilder() - .setSceneId(sceneId) - .addAllDelEntityIdList(list) - .build(); - - this.setData(proto); - } + DelTeamEntityNotify proto = DelTeamEntityNotify.newBuilder() + .setSceneId(sceneId) + .addDelEntityIdList(teamEntityId) + .build(); + + this.setData(proto); + } + + public PacketDelTeamEntityNotify(int sceneId, List list) { + super(PacketOpcodes.DelTeamEntityNotify); + + DelTeamEntityNotify proto = DelTeamEntityNotify.newBuilder() + .setSceneId(sceneId) + .addAllDelEntityIdList(list) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendNotify.java index d56dd639d..34af03339 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DeleteFriendNotifyOuterClass.DeleteFriendNotify; public class PacketDeleteFriendNotify extends BasePacket { - - public PacketDeleteFriendNotify(int targetUid) { - super(PacketOpcodes.DeleteFriendNotify); - DeleteFriendNotify proto = DeleteFriendNotify.newBuilder() - .setTargetUid(targetUid) - .build(); - - this.setData(proto); - } + public PacketDeleteFriendNotify(int targetUid) { + super(PacketOpcodes.DeleteFriendNotify); + + DeleteFriendNotify proto = DeleteFriendNotify.newBuilder() + .setTargetUid(targetUid) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendRsp.java index a4181feec..4e35d95aa 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDeleteFriendRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DeleteFriendRspOuterClass.DeleteFriendRsp; public class PacketDeleteFriendRsp extends BasePacket { - - public PacketDeleteFriendRsp(int targetUid) { - super(PacketOpcodes.DeleteFriendRsp); - DeleteFriendRsp proto = DeleteFriendRsp.newBuilder() - .setTargetUid(targetUid) - .build(); - - this.setData(proto); - } + public PacketDeleteFriendRsp(int targetUid) { + super(PacketOpcodes.DeleteFriendRsp); + + DeleteFriendRsp proto = DeleteFriendRsp.newBuilder() + .setTargetUid(targetUid) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDoGachaRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDoGachaRsp.java index c7f8fc6ec..d06306048 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDoGachaRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDoGachaRsp.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.game.gacha.GachaBanner; import emu.grasscutter.game.gacha.PlayerGachaBannerInfo; @@ -9,60 +7,62 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DoGachaRspOuterClass.DoGachaRsp; import emu.grasscutter.net.proto.GachaItemOuterClass.GachaItem; -import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.net.proto.RetcodeOuterClass; +import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; + +import java.util.List; public class PacketDoGachaRsp extends BasePacket { - - public PacketDoGachaRsp(GachaBanner banner, List list, PlayerGachaBannerInfo gachaInfo) { - super(PacketOpcodes.DoGachaRsp); - ItemParamData costItem = banner.getCost(1); - ItemParamData costItem10 = banner.getCost(10); - int gachaTimesLimit = banner.getGachaTimesLimit(); - int leftGachaTimes = switch(gachaTimesLimit) { - case Integer.MAX_VALUE -> Integer.MAX_VALUE; - default -> Math.max(gachaTimesLimit - gachaInfo.getTotalPulls(), 0); - }; - DoGachaRsp.Builder rsp = DoGachaRsp.newBuilder() - .setGachaType(banner.getGachaType()) - .setGachaScheduleId(banner.getScheduleId()) - .setGachaTimes(list.size()) - .setNewGachaRandom(12345) - .setLeftGachaTimes(leftGachaTimes) - .setGachaTimesLimit(gachaTimesLimit) - .setCostItemId(costItem.getId()) - .setCostItemNum(costItem.getCount()) - .setTenCostItemId(costItem10.getId()) - .setTenCostItemNum(costItem10.getCount()) - .addAllGachaItemList(list); + public PacketDoGachaRsp(GachaBanner banner, List list, PlayerGachaBannerInfo gachaInfo) { + super(PacketOpcodes.DoGachaRsp); - if(banner.hasEpitomized()) { - rsp.setWishItemId(gachaInfo.getWishItemId()) - .setWishProgress(gachaInfo.getFailedChosenItemPulls()) - .setWishMaxProgress(banner.getWishMaxProgress()); - } - - this.setData(rsp.build()); - } + ItemParamData costItem = banner.getCost(1); + ItemParamData costItem10 = banner.getCost(10); + int gachaTimesLimit = banner.getGachaTimesLimit(); + int leftGachaTimes = switch (gachaTimesLimit) { + case Integer.MAX_VALUE -> Integer.MAX_VALUE; + default -> Math.max(gachaTimesLimit - gachaInfo.getTotalPulls(), 0); + }; + DoGachaRsp.Builder rsp = DoGachaRsp.newBuilder() + .setGachaType(banner.getGachaType()) + .setGachaScheduleId(banner.getScheduleId()) + .setGachaTimes(list.size()) + .setNewGachaRandom(12345) + .setLeftGachaTimes(leftGachaTimes) + .setGachaTimesLimit(gachaTimesLimit) + .setCostItemId(costItem.getId()) + .setCostItemNum(costItem.getCount()) + .setTenCostItemId(costItem10.getId()) + .setTenCostItemNum(costItem10.getCount()) + .addAllGachaItemList(list); - public PacketDoGachaRsp() { - super(PacketOpcodes.DoGachaRsp); + if (banner.hasEpitomized()) { + rsp.setWishItemId(gachaInfo.getWishItemId()) + .setWishProgress(gachaInfo.getFailedChosenItemPulls()) + .setWishMaxProgress(banner.getWishMaxProgress()); + } - DoGachaRsp p = DoGachaRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); - - this.setData(p); - } + this.setData(rsp.build()); + } - public PacketDoGachaRsp(Retcode retcode) { - super(PacketOpcodes.DoGachaRsp); + public PacketDoGachaRsp() { + super(PacketOpcodes.DoGachaRsp); - DoGachaRsp p = DoGachaRsp.newBuilder() - .setRetcode(retcode.getNumber()) - .build(); + DoGachaRsp p = DoGachaRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); - this.setData(p); - } + this.setData(p); + } + + public PacketDoGachaRsp(Retcode retcode) { + super(PacketOpcodes.DoGachaRsp); + + DoGachaRsp p = DoGachaRsp.newBuilder() + .setRetcode(retcode.getNumber()) + .build(); + + this.setData(p); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeBeginNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeBeginNotify.java index c02f41119..a50c26bb8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeBeginNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeBeginNotify.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.DungeonChallengeBeginNotifyOuterClass.DungeonChallengeBeginNotify; public class PacketDungeonChallengeBeginNotify extends BasePacket { - - public PacketDungeonChallengeBeginNotify(WorldChallenge challenge) { - super(PacketOpcodes.DungeonChallengeBeginNotify, true); - DungeonChallengeBeginNotify proto = DungeonChallengeBeginNotify.newBuilder() - .setChallengeId(challenge.getChallengeId()) - .setChallengeIndex(challenge.getChallengeIndex()) - .setGroupId(challenge.getGroup().id) - .addAllParamList(challenge.getParamList()) - .build(); + public PacketDungeonChallengeBeginNotify(WorldChallenge challenge) { + super(PacketOpcodes.DungeonChallengeBeginNotify, true); - this.setData(proto); - } + DungeonChallengeBeginNotify proto = DungeonChallengeBeginNotify.newBuilder() + .setChallengeId(challenge.getChallengeId()) + .setChallengeIndex(challenge.getChallengeIndex()) + .setGroupId(challenge.getGroup().id) + .addAllParamList(challenge.getParamList()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeFinishNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeFinishNotify.java index ad1a02b9b..761a4c711 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeFinishNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonChallengeFinishNotify.java @@ -7,15 +7,15 @@ import emu.grasscutter.net.proto.DungeonChallengeFinishNotifyOuterClass.DungeonC public class PacketDungeonChallengeFinishNotify extends BasePacket { - public PacketDungeonChallengeFinishNotify(WorldChallenge challenge) { - super(PacketOpcodes.DungeonChallengeFinishNotify, true); + public PacketDungeonChallengeFinishNotify(WorldChallenge challenge) { + super(PacketOpcodes.DungeonChallengeFinishNotify, true); - DungeonChallengeFinishNotify proto = DungeonChallengeFinishNotify.newBuilder() - .setChallengeIndex(challenge.getChallengeIndex()) - .setIsSuccess(challenge.isSuccess()) - .setChallengeRecordType(2) - .build(); + DungeonChallengeFinishNotify proto = DungeonChallengeFinishNotify.newBuilder() + .setChallengeIndex(challenge.getChallengeIndex()) + .setIsSuccess(challenge.isSuccess()) + .setChallengeRecordType(2) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonEntryInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonEntryInfoRsp.java index 5d7842fe1..2f5106c56 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonEntryInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonEntryInfoRsp.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.Arrays; - import emu.grasscutter.data.common.PointData; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; @@ -10,30 +8,30 @@ import emu.grasscutter.net.proto.DungeonEntryInfoOuterClass.DungeonEntryInfo; import emu.grasscutter.net.proto.DungeonEntryInfoRspOuterClass.DungeonEntryInfoRsp; public class PacketDungeonEntryInfoRsp extends BasePacket { - - public PacketDungeonEntryInfoRsp(Player player, PointData pointData) { - super(PacketOpcodes.DungeonEntryInfoRsp); - DungeonEntryInfoRsp.Builder proto = DungeonEntryInfoRsp.newBuilder() - .setPointId(pointData.getId()); - - if (pointData.getDungeonIds() != null) { - for (int dungeonId : pointData.getDungeonIds()) { - DungeonEntryInfo info = DungeonEntryInfo.newBuilder().setDungeonId(dungeonId).build(); - proto.addDungeonEntryList(info); - } - } + public PacketDungeonEntryInfoRsp(Player player, PointData pointData) { + super(PacketOpcodes.DungeonEntryInfoRsp); - this.setData(proto); - } - - public PacketDungeonEntryInfoRsp() { - super(PacketOpcodes.DungeonEntryInfoRsp); + DungeonEntryInfoRsp.Builder proto = DungeonEntryInfoRsp.newBuilder() + .setPointId(pointData.getId()); - DungeonEntryInfoRsp proto = DungeonEntryInfoRsp.newBuilder() - .setRetcode(1) - .build(); - - this.setData(proto); - } + if (pointData.getDungeonIds() != null) { + for (int dungeonId : pointData.getDungeonIds()) { + DungeonEntryInfo info = DungeonEntryInfo.newBuilder().setDungeonId(dungeonId).build(); + proto.addDungeonEntryList(info); + } + } + + this.setData(proto); + } + + public PacketDungeonEntryInfoRsp() { + super(PacketOpcodes.DungeonEntryInfoRsp); + + DungeonEntryInfoRsp proto = DungeonEntryInfoRsp.newBuilder() + .setRetcode(1) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonSettleNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonSettleNotify.java index bec8b18ab..61b51614f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonSettleNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonSettleNotify.java @@ -8,56 +8,55 @@ import emu.grasscutter.net.proto.ItemParamOuterClass; import emu.grasscutter.net.proto.TowerLevelEndNotifyOuterClass.TowerLevelEndNotify; public class PacketDungeonSettleNotify extends BasePacket { - - public PacketDungeonSettleNotify(WorldChallenge challenge) { - super(PacketOpcodes.DungeonSettleNotify); - DungeonSettleNotify proto = DungeonSettleNotify.newBuilder() - .setDungeonId(challenge.getScene().getDungeonData().getId()) - .setIsSuccess(challenge.isSuccess()) - .setCloseTime(challenge.getScene().getAutoCloseTime()) - .setResult(challenge.isSuccess() ? 1 : 0) - .build(); - - this.setData(proto); - } + public PacketDungeonSettleNotify(WorldChallenge challenge) { + super(PacketOpcodes.DungeonSettleNotify); - public PacketDungeonSettleNotify(WorldChallenge challenge, + DungeonSettleNotify proto = DungeonSettleNotify.newBuilder() + .setDungeonId(challenge.getScene().getDungeonData().getId()) + .setIsSuccess(challenge.isSuccess()) + .setCloseTime(challenge.getScene().getAutoCloseTime()) + .setResult(challenge.isSuccess() ? 1 : 0) + .build(); + + this.setData(proto); + } + + public PacketDungeonSettleNotify(WorldChallenge challenge, boolean canJump, boolean hasNextLevel, int nextFloorId - ) { - super(PacketOpcodes.DungeonSettleNotify); + ) { + super(PacketOpcodes.DungeonSettleNotify); - var continueStatus = TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_NOT_CONTINUE_VALUE; - if(challenge.isSuccess() && canJump){ - continueStatus = hasNextLevel ? TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_ENTER_NEXT_LEVEL_VALUE - : TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_ENTER_NEXT_FLOOR_VALUE; - } + var continueStatus = TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_NOT_CONTINUE_VALUE; + if (challenge.isSuccess() && canJump) { + continueStatus = hasNextLevel ? TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_ENTER_NEXT_LEVEL_VALUE + : TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_ENTER_NEXT_FLOOR_VALUE; + } - var towerLevelEndNotify = TowerLevelEndNotify.newBuilder() - .setIsSuccess(challenge.isSuccess()) - .setContinueState(continueStatus) - .addFinishedStarCondList(1) - .addFinishedStarCondList(2) - .addFinishedStarCondList(3) - .addRewardItemList(ItemParamOuterClass.ItemParam.newBuilder() - .setItemId(201) - .setCount(1000) - .build()) - ; - if(nextFloorId > 0 && canJump){ - towerLevelEndNotify.setNextFloorId(nextFloorId); - } + var towerLevelEndNotify = TowerLevelEndNotify.newBuilder() + .setIsSuccess(challenge.isSuccess()) + .setContinueState(continueStatus) + .addFinishedStarCondList(1) + .addFinishedStarCondList(2) + .addFinishedStarCondList(3) + .addRewardItemList(ItemParamOuterClass.ItemParam.newBuilder() + .setItemId(201) + .setCount(1000) + .build()); + if (nextFloorId > 0 && canJump) { + towerLevelEndNotify.setNextFloorId(nextFloorId); + } - DungeonSettleNotify proto = DungeonSettleNotify.newBuilder() - .setDungeonId(challenge.getScene().getDungeonData().getId()) - .setIsSuccess(challenge.isSuccess()) - .setCloseTime(challenge.getScene().getAutoCloseTime()) - .setResult(challenge.isSuccess() ? 1 : 0) - .setTowerLevelEndNotify(towerLevelEndNotify.build()) - .build(); + DungeonSettleNotify proto = DungeonSettleNotify.newBuilder() + .setDungeonId(challenge.getScene().getDungeonData().getId()) + .setIsSuccess(challenge.isSuccess()) + .setCloseTime(challenge.getScene().getAutoCloseTime()) + .setResult(challenge.isSuccess() ? 1 : 0) + .setTowerLevelEndNotify(towerLevelEndNotify.build()) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonShowReminderNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonShowReminderNotify.java index daf1606f3..c0c612ff8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonShowReminderNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketDungeonShowReminderNotify.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.DungeonShowReminderNotifyOuterClass; public class PacketDungeonShowReminderNotify extends BasePacket { - public PacketDungeonShowReminderNotify(int reminderId) { - super(PacketOpcodes.DungeonShowReminderNotify); + public PacketDungeonShowReminderNotify(int reminderId) { + super(PacketOpcodes.DungeonShowReminderNotify); var proto = DungeonShowReminderNotifyOuterClass.DungeonShowReminderNotify.newBuilder(); proto.setReminderId(reminderId); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneDoneRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneDoneRsp.java index c32f6a922..caf39c462 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneDoneRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneDoneRsp.java @@ -7,13 +7,13 @@ import emu.grasscutter.net.proto.EnterSceneDoneRspOuterClass.EnterSceneDoneRsp; public class PacketEnterSceneDoneRsp extends BasePacket { - public PacketEnterSceneDoneRsp(Player player) { - super(PacketOpcodes.EnterSceneDoneRsp); + public PacketEnterSceneDoneRsp(Player player) { + super(PacketOpcodes.EnterSceneDoneRsp); - EnterSceneDoneRsp p = EnterSceneDoneRsp.newBuilder() - .setEnterSceneToken(player.getEnterSceneToken()) - .build(); - - this.setData(p); - } + EnterSceneDoneRsp p = EnterSceneDoneRsp.newBuilder() + .setEnterSceneToken(player.getEnterSceneToken()) + .build(); + + this.setData(p); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterScenePeerNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterScenePeerNotify.java index c41c40bdd..2ed018b51 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterScenePeerNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterScenePeerNotify.java @@ -7,16 +7,16 @@ import emu.grasscutter.net.proto.EnterScenePeerNotifyOuterClass.EnterScenePeerNo public class PacketEnterScenePeerNotify extends BasePacket { - public PacketEnterScenePeerNotify(Player player) { - super(PacketOpcodes.EnterScenePeerNotify); - - EnterScenePeerNotify proto = EnterScenePeerNotify.newBuilder() - .setDestSceneId(player.getSceneId()) - .setPeerId(player.getPeerId()) - .setHostPeerId(player.getWorld().getHost().getPeerId()) - .setEnterSceneToken(player.getEnterSceneToken()) - .build(); + public PacketEnterScenePeerNotify(Player player) { + super(PacketOpcodes.EnterScenePeerNotify); - this.setData(proto); - } + EnterScenePeerNotify proto = EnterScenePeerNotify.newBuilder() + .setDestSceneId(player.getSceneId()) + .setPeerId(player.getPeerId()) + .setHostPeerId(player.getWorld().getHost().getPeerId()) + .setEnterSceneToken(player.getEnterSceneToken()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneReadyRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneReadyRsp.java index 5dfbc3407..a081d92db 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneReadyRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterSceneReadyRsp.java @@ -7,13 +7,13 @@ import emu.grasscutter.net.proto.EnterSceneReadyRspOuterClass.EnterSceneReadyRsp public class PacketEnterSceneReadyRsp extends BasePacket { - public PacketEnterSceneReadyRsp(Player player) { - super(PacketOpcodes.EnterSceneReadyRsp, 11); - - EnterSceneReadyRsp p = EnterSceneReadyRsp.newBuilder() - .setEnterSceneToken(player.getEnterSceneToken()) - .build(); - - this.setData(p.toByteArray()); - } + public PacketEnterSceneReadyRsp(Player player) { + super(PacketOpcodes.EnterSceneReadyRsp, 11); + + EnterSceneReadyRsp p = EnterSceneReadyRsp.newBuilder() + .setEnterSceneToken(player.getEnterSceneToken()) + .build(); + + this.setData(p.toByteArray()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterWorldAreaRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterWorldAreaRsp.java index 53e57b78a..cbba22a00 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEnterWorldAreaRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEnterWorldAreaRsp.java @@ -7,14 +7,14 @@ import emu.grasscutter.net.proto.EnterWorldAreaRspOuterClass.EnterWorldAreaRsp; public class PacketEnterWorldAreaRsp extends BasePacket { - public PacketEnterWorldAreaRsp(int clientSequence, EnterWorldAreaReq enterWorld) { - super(PacketOpcodes.EnterWorldAreaRsp, clientSequence); - - EnterWorldAreaRsp p = EnterWorldAreaRsp.newBuilder() - .setAreaType(enterWorld.getAreaType()) - .setAreaId(enterWorld.getAreaId()) - .build(); - - this.setData(p.toByteArray()); - } + public PacketEnterWorldAreaRsp(int clientSequence, EnterWorldAreaReq enterWorld) { + super(PacketOpcodes.EnterWorldAreaRsp, clientSequence); + + EnterWorldAreaRsp p = EnterWorldAreaRsp.newBuilder() + .setAreaType(enterWorld.getAreaType()) + .setAreaId(enterWorld.getAreaId()) + .build(); + + this.setData(p.toByteArray()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEntityAiSyncNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEntityAiSyncNotify.java index d78c4016b..a3f093982 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEntityAiSyncNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEntityAiSyncNotify.java @@ -6,16 +6,16 @@ import emu.grasscutter.net.proto.AiSyncInfoOuterClass.AiSyncInfo; import emu.grasscutter.net.proto.EntityAiSyncNotifyOuterClass.EntityAiSyncNotify; public class PacketEntityAiSyncNotify extends BasePacket { - - public PacketEntityAiSyncNotify(EntityAiSyncNotify notify) { - super(PacketOpcodes.EntityAiSyncNotify, true); - - EntityAiSyncNotify.Builder proto = EntityAiSyncNotify.newBuilder(); - - for (int monsterId : notify.getLocalAvatarAlertedMonsterListList()) { - proto.addInfoList(AiSyncInfo.newBuilder().setEntityId(monsterId).setHasPathToTarget(true)); - } - - this.setData(proto); - } + + public PacketEntityAiSyncNotify(EntityAiSyncNotify notify) { + super(PacketOpcodes.EntityAiSyncNotify, true); + + EntityAiSyncNotify.Builder proto = EntityAiSyncNotify.newBuilder(); + + for (int monsterId : notify.getLocalAvatarAlertedMonsterListList()) { + proto.addInfoList(AiSyncInfo.newBuilder().setEntityId(monsterId).setHasPathToTarget(true)); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropChangeReasonNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropChangeReasonNotify.java index 7e930124e..aab41764c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropChangeReasonNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropChangeReasonNotify.java @@ -17,13 +17,13 @@ public class PacketEntityFightPropChangeReasonNotify extends BasePacket { super(PacketOpcodes.EntityFightPropChangeReasonNotify); EntityFightPropChangeReasonNotify.Builder proto = EntityFightPropChangeReasonNotify.newBuilder() - .setEntityId(entity.getId()) - .setPropType(prop.getId()) - .setPropDelta(value) - .setReason(reason) - .setChangeHpReason(changeHpReason); + .setEntityId(entity.getId()) + .setPropType(prop.getId()) + .setPropDelta(value) + .setReason(reason) + .setChangeHpReason(changeHpReason); - for(int p : param){ + for (int p : param) { proto.addParamList(p); } @@ -34,12 +34,12 @@ public class PacketEntityFightPropChangeReasonNotify extends BasePacket { super(PacketOpcodes.EntityFightPropChangeReasonNotify); EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder() - .setEntityId(entity.getId()) - .setPropType(prop.getId()) - .setPropDelta(value) - .setReason(reason) - .setChangeHpReason(changeHpReason) - .build(); + .setEntityId(entity.getId()) + .setPropType(prop.getId()) + .setPropDelta(value) + .setReason(reason) + .setChangeHpReason(changeHpReason) + .build(); this.setData(proto); } @@ -48,11 +48,11 @@ public class PacketEntityFightPropChangeReasonNotify extends BasePacket { super(PacketOpcodes.EntityFightPropChangeReasonNotify); EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder() - .setEntityId(entity.getId()) - .setPropType(prop.getId()) - .setPropDelta(value) - .setReason(reason) - .build(); + .setEntityId(entity.getId()) + .setPropType(prop.getId()) + .setPropDelta(value) + .setReason(reason) + .build(); this.setData(proto); } @@ -61,11 +61,11 @@ public class PacketEntityFightPropChangeReasonNotify extends BasePacket { super(PacketOpcodes.EntityFightPropChangeReasonNotify); EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder() - .setEntityId(entity.getId()) - .setPropType(prop.getId()) - .setPropDelta(value) - .setChangeEnergyReason(reason) - .build(); + .setEntityId(entity.getId()) + .setPropType(prop.getId()) + .setPropDelta(value) + .setChangeEnergyReason(reason) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropUpdateNotify.java index 85c207dde..335e944fa 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEntityFightPropUpdateNotify.java @@ -7,15 +7,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EntityFightPropUpdateNotifyOuterClass.EntityFightPropUpdateNotify; public class PacketEntityFightPropUpdateNotify extends BasePacket { - - public PacketEntityFightPropUpdateNotify(GameEntity entity, FightProperty prop) { - super(PacketOpcodes.EntityFightPropUpdateNotify); - - EntityFightPropUpdateNotify proto = EntityFightPropUpdateNotify.newBuilder() - .setEntityId(entity.getId()) - .putFightPropMap(prop.getId(), entity.getFightProperty(prop)) - .build(); - - this.setData(proto); - } + + public PacketEntityFightPropUpdateNotify(GameEntity entity, FightProperty prop) { + super(PacketOpcodes.EntityFightPropUpdateNotify); + + EntityFightPropUpdateNotify proto = EntityFightPropUpdateNotify.newBuilder() + .setEntityId(entity.getId()) + .putFightPropMap(prop.getId(), entity.getFightProperty(prop)) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java index 5b703aea3..0ecf2fca1 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarLockChairRsp.java @@ -12,11 +12,11 @@ public class PacketEvtAvatarLockChairRsp extends BasePacket { super(PacketOpcodes.EvtAvatarLockChairRsp); EvtAvatarLockChairRsp p = EvtAvatarLockChairRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) - .setEntityId(entityAvatar.getId()) - .setPosition(lockChairReq.getPosition()) - .setChairId(lockChairReq.getChairId()) - .build(); + .setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE) + .setEntityId(entityAvatar.getId()) + .setPosition(lockChairReq.getPosition()) + .setChairId(lockChairReq.getChairId()) + .build(); this.setData(p); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarSitDownNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarSitDownNotify.java index f85bbfbc3..ebb0503df 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarSitDownNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarSitDownNotify.java @@ -10,10 +10,10 @@ public class PacketEvtAvatarSitDownNotify extends BasePacket { super(PacketOpcodes.EvtAvatarSitDownNotify); EvtAvatarSitDownNotify proto = EvtAvatarSitDownNotify.newBuilder() - .setEntityId(notify.getEntityId()) - .setPosition(notify.getPosition()) - .setChairId(notify.getChairId()) - .build(); + .setEntityId(notify.getEntityId()) + .setPosition(notify.getPosition()) + .setChairId(notify.getChairId()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java index da23def9a..23d332335 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtAvatarStandUpNotify.java @@ -10,11 +10,11 @@ public class PacketEvtAvatarStandUpNotify extends BasePacket { super(PacketOpcodes.EvtAvatarStandUpNotify); EvtAvatarStandUpNotify proto = EvtAvatarStandUpNotify.newBuilder() - .setEntityId(notify.getEntityId()) - .setDirection(notify.getDirection()) - .setPerformId(notify.getPerformId()) - .setChairId(notify.getChairId()) - .build(); + .setEntityId(notify.getEntityId()) + .setDirection(notify.getDirection()) + .setPerformId(notify.getPerformId()) + .setChairId(notify.getChairId()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtEntityRenderersChangedNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtEntityRenderersChangedNotify.java index 4df5c4848..b7f821227 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketEvtEntityRenderersChangedNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketEvtEntityRenderersChangedNotify.java @@ -6,9 +6,9 @@ import emu.grasscutter.net.proto.EvtEntityRenderersChangedNotifyOuterClass; public class PacketEvtEntityRenderersChangedNotify extends BasePacket { - public PacketEvtEntityRenderersChangedNotify(EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify req) { - super(PacketOpcodes.EvtEntityRenderersChangedNotify, true); + public PacketEvtEntityRenderersChangedNotify(EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify req) { + super(PacketOpcodes.EvtEntityRenderersChangedNotify, true); this.setData(req); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketFinishedParentQuestUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketFinishedParentQuestUpdateNotify.java index 6fb7d1975..0fb8d0feb 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketFinishedParentQuestUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketFinishedParentQuestUpdateNotify.java @@ -13,8 +13,8 @@ public class PacketFinishedParentQuestUpdateNotify extends BasePacket { super(PacketOpcodes.FinishedParentQuestUpdateNotify); FinishedParentQuestUpdateNotify proto = FinishedParentQuestUpdateNotify.newBuilder() - .addParentQuestList(quest.toProto()) - .build(); + .addParentQuestList(quest.toProto()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeDataNotify.java index e8aa495b5..8b0580397 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeDataNotify.java @@ -1,27 +1,26 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - -import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ForgeDataNotifyOuterClass.ForgeDataNotify; import emu.grasscutter.net.proto.ForgeQueueDataOuterClass.ForgeQueueData; +import java.util.Map; + public class PacketForgeDataNotify extends BasePacket { - - public PacketForgeDataNotify(Iterable unlockedItem, int numQueues, Map queueData) { - super(PacketOpcodes.ForgeDataNotify); - - ForgeDataNotify.Builder builder = ForgeDataNotify.newBuilder() - .addAllForgeIdList(unlockedItem) - .setMaxQueueNum(numQueues); - for (int queueId : queueData.keySet()) { - var data = queueData.get(queueId); - builder.putForgeQueueMap(queueId, data); - } + public PacketForgeDataNotify(Iterable unlockedItem, int numQueues, Map queueData) { + super(PacketOpcodes.ForgeDataNotify); - this.setData(builder.build()); - } + ForgeDataNotify.Builder builder = ForgeDataNotify.newBuilder() + .addAllForgeIdList(unlockedItem) + .setMaxQueueNum(numQueues); + + for (int queueId : queueData.keySet()) { + var data = queueData.get(queueId); + builder.putForgeQueueMap(queueId, data); + } + + this.setData(builder.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeFormulaDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeFormulaDataNotify.java index 46f180280..bb7390fd6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeFormulaDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeFormulaDataNotify.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ForgeFormulaDataNotifyOuterClass.ForgeFormulaDataNotify; public class PacketForgeFormulaDataNotify extends BasePacket { - - public PacketForgeFormulaDataNotify(int itemId) { - super(PacketOpcodes.ForgeFormulaDataNotify); - ForgeFormulaDataNotify proto = ForgeFormulaDataNotify.newBuilder() - .setForgeId(itemId) - .setIsLocked(false) - .build(); - - this.setData(proto); - } + public PacketForgeFormulaDataNotify(int itemId) { + super(PacketOpcodes.ForgeFormulaDataNotify); + + ForgeFormulaDataNotify proto = ForgeFormulaDataNotify.newBuilder() + .setForgeId(itemId) + .setIsLocked(false) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeGetQueueDataRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeGetQueueDataRsp.java index fa24b5ac3..dc35f0e68 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeGetQueueDataRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeGetQueueDataRsp.java @@ -1,27 +1,27 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ForgeGetQueueDataRspOuterClass.ForgeGetQueueDataRsp; import emu.grasscutter.net.proto.ForgeQueueDataOuterClass.ForgeQueueData; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; +import java.util.Map; + public class PacketForgeGetQueueDataRsp extends BasePacket { - - public PacketForgeGetQueueDataRsp(Retcode retcode, int numQueues, Map queueData) { - super(PacketOpcodes.ForgeGetQueueDataRsp); - ForgeGetQueueDataRsp.Builder builder = ForgeGetQueueDataRsp.newBuilder() - .setRetcode(retcode.getNumber()) - .setMaxQueueNum(numQueues); + public PacketForgeGetQueueDataRsp(Retcode retcode, int numQueues, Map queueData) { + super(PacketOpcodes.ForgeGetQueueDataRsp); - for (int queueId : queueData.keySet()) { - var data = queueData.get(queueId); - builder.putForgeQueueMap(queueId, data); - } + ForgeGetQueueDataRsp.Builder builder = ForgeGetQueueDataRsp.newBuilder() + .setRetcode(retcode.getNumber()) + .setMaxQueueNum(numQueues); - this.setData(builder.build()); - } + for (int queueId : queueData.keySet()) { + var data = queueData.get(queueId); + builder.putForgeQueueMap(queueId, data); + } + + this.setData(builder.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueDataNotify.java index 7c7f99fb2..906855c42 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueDataNotify.java @@ -1,26 +1,26 @@ package emu.grasscutter.server.packet.send; -import java.util.List; -import java.util.Map; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ForgeQueueDataNotifyOuterClass.ForgeQueueDataNotify; import emu.grasscutter.net.proto.ForgeQueueDataOuterClass.ForgeQueueData; +import java.util.List; +import java.util.Map; + public class PacketForgeQueueDataNotify extends BasePacket { - - public PacketForgeQueueDataNotify(Map queueData, List removedQueues) { - super(PacketOpcodes.ForgeQueueDataNotify); - - ForgeQueueDataNotify.Builder builder = ForgeQueueDataNotify.newBuilder() - .addAllRemovedForgeQueueList(removedQueues); - for (int queueId : queueData.keySet()) { - var data = queueData.get(queueId); - builder.putForgeQueueMap(queueId, data); - } + public PacketForgeQueueDataNotify(Map queueData, List removedQueues) { + super(PacketOpcodes.ForgeQueueDataNotify); - this.setData(builder.build()); - } + ForgeQueueDataNotify.Builder builder = ForgeQueueDataNotify.newBuilder() + .addAllRemovedForgeQueueList(removedQueues); + + for (int queueId : queueData.keySet()) { + var data = queueData.get(queueId); + builder.putForgeQueueMap(queueId, data); + } + + this.setData(builder.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueManipulateRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueManipulateRsp.java index 0cb2ba710..d5bbb938e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueManipulateRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeQueueManipulateRsp.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; @@ -10,14 +8,16 @@ import emu.grasscutter.net.proto.ForgeQueueManipulateTypeOuterClass.ForgeQueueMa import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; +import java.util.List; + public class PacketForgeQueueManipulateRsp extends BasePacket { public PacketForgeQueueManipulateRsp(Retcode retcode, ForgeQueueManipulateType type, List output, List refund, List extra) { super(PacketOpcodes.ForgeQueueManipulateRsp); ForgeQueueManipulateRsp.Builder builder = ForgeQueueManipulateRsp.newBuilder() - .setRetcode(retcode.getNumber()) - .setManipulateType(type); + .setRetcode(retcode.getNumber()) + .setManipulateType(type); for (GameItem item : output) { ItemParam toAdd = ItemParam.newBuilder() diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeStartRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeStartRsp.java index 08f8ed034..7ff520631 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketForgeStartRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketForgeStartRsp.java @@ -11,8 +11,8 @@ public class PacketForgeStartRsp extends BasePacket { super(PacketOpcodes.ForgeStartRsp); ForgeStartRsp proto = ForgeStartRsp.newBuilder() - .setRetcode(retcode.getNumber()) - .build(); + .setRetcode(retcode.getNumber()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureCurModuleArrangeCountNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureCurModuleArrangeCountNotify.java index b773daf5b..847618a74 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureCurModuleArrangeCountNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureCurModuleArrangeCountNotify.java @@ -3,17 +3,16 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.FurnitureCurModuleArrangeCountNotifyOuterClass; -import emu.grasscutter.net.proto.Uint32PairOuterClass; public class PacketFurnitureCurModuleArrangeCountNotify extends BasePacket { - public PacketFurnitureCurModuleArrangeCountNotify() { - super(PacketOpcodes.FurnitureCurModuleArrangeCountNotify); + public PacketFurnitureCurModuleArrangeCountNotify() { + super(PacketOpcodes.FurnitureCurModuleArrangeCountNotify); - var proto = FurnitureCurModuleArrangeCountNotifyOuterClass.FurnitureCurModuleArrangeCountNotify.newBuilder(); + var proto = FurnitureCurModuleArrangeCountNotifyOuterClass.FurnitureCurModuleArrangeCountNotify.newBuilder(); - // TODO + // TODO - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeRsp.java index 65124d047..0350f5ed5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeRsp.java @@ -9,17 +9,17 @@ import emu.grasscutter.net.proto.FurnitureMakeSlotOuterClass; public class PacketFurnitureMakeRsp extends BasePacket { - public PacketFurnitureMakeRsp(GameHome home) { - super(PacketOpcodes.FurnitureMakeRsp); + public PacketFurnitureMakeRsp(GameHome home) { + super(PacketOpcodes.FurnitureMakeRsp); - var proto = FurnitureMakeRspOuterClass.FurnitureMakeRsp.newBuilder(); + var proto = FurnitureMakeRspOuterClass.FurnitureMakeRsp.newBuilder(); - proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder() - .addAllFurnitureMakeDataList(home.getFurnitureMakeSlotItemList().stream() - .map(FurnitureMakeSlotItem::toProto) - .toList()) - .build()); + proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder() + .addAllFurnitureMakeDataList(home.getFurnitureMakeSlotItemList().stream() + .map(FurnitureMakeSlotItem::toProto) + .toList()) + .build()); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeStartRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeStartRsp.java index 4dd0ddb61..6e3a33b0e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeStartRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketFurnitureMakeStartRsp.java @@ -10,19 +10,19 @@ import java.util.List; public class PacketFurnitureMakeStartRsp extends BasePacket { - public PacketFurnitureMakeStartRsp(int ret, List furnitureMakeData) { - super(PacketOpcodes.FurnitureMakeStartRsp); + public PacketFurnitureMakeStartRsp(int ret, List furnitureMakeData) { + super(PacketOpcodes.FurnitureMakeStartRsp); - var proto = FurnitureMakeStartRspOuterClass.FurnitureMakeStartRsp.newBuilder(); + var proto = FurnitureMakeStartRspOuterClass.FurnitureMakeStartRsp.newBuilder(); - proto.setRetcode(ret); + proto.setRetcode(ret); - if(furnitureMakeData != null){ - proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder() - .addAllFurnitureMakeDataList(furnitureMakeData) - .build()); - } + if (furnitureMakeData != null) { + proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder() + .addAllFurnitureMakeDataList(furnitureMakeData) + .build()); + } - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGachaWishRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGachaWishRsp.java index 713f25caa..8e35f566d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGachaWishRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGachaWishRsp.java @@ -10,12 +10,12 @@ public class PacketGachaWishRsp extends BasePacket { super(PacketOpcodes.GachaWishRsp); GachaWishRsp proto = GachaWishRsp.newBuilder() - .setGachaType(gachaType) - .setGachaScheduleId(scheduleId) - .setWishItemId(itemId) - .setWishProgress(progress) - .setWishMaxProgress(maxProgress) - .build(); + .setGachaType(gachaType) + .setGachaScheduleId(scheduleId) + .setWishItemId(itemId) + .setWishProgress(progress) + .setWishMaxProgress(maxProgress) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetAutoPickDropInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetAutoPickDropInfoNotify.java index 1e0034713..b5fa3f32e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetAutoPickDropInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetAutoPickDropInfoNotify.java @@ -1,22 +1,21 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GadgetAutoPickDropInfoNotifyOuterClass.GadgetAutoPickDropInfoNotify; -import emu.grasscutter.net.proto.GadgetAutoPickDropInfoNotifyOuterClass.GadgetAutoPickDropInfoNotify.Builder; + +import java.util.Collection; public class PacketGadgetAutoPickDropInfoNotify extends BasePacket { - - public PacketGadgetAutoPickDropInfoNotify(Collection items) { - super(PacketOpcodes.GadgetAutoPickDropInfoNotify); - - GadgetAutoPickDropInfoNotify.Builder proto = GadgetAutoPickDropInfoNotify.newBuilder(); - - items.forEach(item -> proto.addItemList(item.toProto())); - - this.setData(proto); - } + + public PacketGadgetAutoPickDropInfoNotify(Collection items) { + super(PacketOpcodes.GadgetAutoPickDropInfoNotify); + + GadgetAutoPickDropInfoNotify.Builder proto = GadgetAutoPickDropInfoNotify.newBuilder(); + + items.forEach(item -> proto.addItemList(item.toProto())); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetInteractRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetInteractRsp.java index f274c35f0..d5b1f5424 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetInteractRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetInteractRsp.java @@ -4,38 +4,37 @@ import emu.grasscutter.game.entity.EntityBaseGadget; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GadgetInteractRspOuterClass.GadgetInteractRsp; -import emu.grasscutter.net.proto.InterOpTypeOuterClass; import emu.grasscutter.net.proto.InterOpTypeOuterClass.InterOpType; import emu.grasscutter.net.proto.InteractTypeOuterClass.InteractType; import emu.grasscutter.net.proto.RetcodeOuterClass; public class PacketGadgetInteractRsp extends BasePacket { - public PacketGadgetInteractRsp(EntityBaseGadget gadget, InteractType interact) { - this(gadget, interact, null); - } - - public PacketGadgetInteractRsp(EntityBaseGadget gadget, InteractType interact, InterOpType opType) { - super(PacketOpcodes.GadgetInteractRsp); + public PacketGadgetInteractRsp(EntityBaseGadget gadget, InteractType interact) { + this(gadget, interact, null); + } - var proto = GadgetInteractRsp.newBuilder() - .setGadgetEntityId(gadget.getId()) - .setInteractType(interact) - .setGadgetId(gadget.getGadgetId()); + public PacketGadgetInteractRsp(EntityBaseGadget gadget, InteractType interact, InterOpType opType) { + super(PacketOpcodes.GadgetInteractRsp); - if (opType != null) { - proto.setOpType(opType); - } - - this.setData(proto.build()); - } - - public PacketGadgetInteractRsp() { - super(PacketOpcodes.GadgetInteractRsp); + var proto = GadgetInteractRsp.newBuilder() + .setGadgetEntityId(gadget.getId()) + .setInteractType(interact) + .setGadgetId(gadget.getGadgetId()); - GadgetInteractRsp proto = GadgetInteractRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); - - this.setData(proto); - } + if (opType != null) { + proto.setOpType(opType); + } + + this.setData(proto.build()); + } + + public PacketGadgetInteractRsp() { + super(PacketOpcodes.GadgetInteractRsp); + + GadgetInteractRsp proto = GadgetInteractRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetStateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetStateNotify.java index e2af45633..e09fea656 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetStateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGadgetStateNotify.java @@ -6,16 +6,16 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GadgetStateNotifyOuterClass.GadgetStateNotify; public class PacketGadgetStateNotify extends BasePacket { - - public PacketGadgetStateNotify(EntityGadget gadget, int newState) { - super(PacketOpcodes.GadgetStateNotify); - - GadgetStateNotify proto = GadgetStateNotify.newBuilder() - .setGadgetEntityId(gadget.getId()) - .setGadgetState(newState) - .setIsEnableInteract(true) - .build(); - - this.setData(proto); - } + + public PacketGadgetStateNotify(EntityGadget gadget, int newState) { + super(PacketOpcodes.GadgetStateNotify); + + GadgetStateNotify proto = GadgetStateNotify.newBuilder() + .setGadgetEntityId(gadget.getId()) + .setGadgetState(newState) + .setIsEnableInteract(true) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetActivityInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetActivityInfoRsp.java index d0172bfcd..13896ebf9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetActivityInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetActivityInfoRsp.java @@ -8,15 +8,15 @@ import emu.grasscutter.net.proto.GetActivityInfoRspOuterClass.GetActivityInfoRsp import java.util.Set; public class PacketGetActivityInfoRsp extends BasePacket { - public PacketGetActivityInfoRsp(Set activityIdList, ActivityManager activityManager) { - super(PacketOpcodes.GetActivityInfoRsp); + public PacketGetActivityInfoRsp(Set activityIdList, ActivityManager activityManager) { + super(PacketOpcodes.GetActivityInfoRsp); - var proto = GetActivityInfoRsp.newBuilder(); + var proto = GetActivityInfoRsp.newBuilder(); activityIdList.stream() .map(activityManager::getInfoProtoByActivityId) .forEach(proto::addActivityInfoList); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllMailRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllMailRsp.java index 82833b947..6658d3c09 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllMailRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllMailRsp.java @@ -1,13 +1,11 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.Grasscutter; import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.EquipParamOuterClass; import emu.grasscutter.net.proto.GetAllMailRspOuterClass.GetAllMailRsp; -import emu.grasscutter.net.proto.ItemParamOuterClass; import emu.grasscutter.net.proto.MailDataOuterClass; import emu.grasscutter.net.proto.MailDataOuterClass.MailData; import emu.grasscutter.net.proto.MailItemOuterClass; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllUnlockNameCardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllUnlockNameCardRsp.java index d1f9393cd..22c093d88 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllUnlockNameCardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetAllUnlockNameCardRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetAllUnlockNameCardRspOuterClass.GetAllUnlockNameCardRsp; public class PacketGetAllUnlockNameCardRsp extends BasePacket { - - public PacketGetAllUnlockNameCardRsp(Player player) { - super(PacketOpcodes.GetAllUnlockNameCardRsp); - - GetAllUnlockNameCardRsp proto = GetAllUnlockNameCardRsp.newBuilder() - .addAllNameCardList(player.getNameCardList()) - .build(); - this.setData(proto); - } + public PacketGetAllUnlockNameCardRsp(Player player) { + super(PacketOpcodes.GetAllUnlockNameCardRsp); + + GetAllUnlockNameCardRsp proto = GetAllUnlockNameCardRsp.newBuilder() + .addAllNameCardList(player.getNameCardList()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetAuthkeyRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetAuthkeyRsp.java index 0e798cd59..a8b603332 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetAuthkeyRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetAuthkeyRsp.java @@ -6,12 +6,12 @@ import emu.grasscutter.net.proto.GetAuthkeyRspOuterClass.GetAuthkeyRsp; import emu.grasscutter.net.proto.RetcodeOuterClass; public class PacketGetAuthkeyRsp extends BasePacket { - - public PacketGetAuthkeyRsp() { - super(PacketOpcodes.GetAuthkeyRsp); - - GetAuthkeyRsp proto = GetAuthkeyRsp.newBuilder().setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build(); - - this.setData(proto); - } + + public PacketGetAuthkeyRsp() { + super(PacketOpcodes.GetAuthkeyRsp); + + GetAuthkeyRsp proto = GetAuthkeyRsp.newBuilder().setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetDailyDungeonEntryInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetDailyDungeonEntryInfoRsp.java index 0cd497786..38b001d31 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetDailyDungeonEntryInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetDailyDungeonEntryInfoRsp.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.DungeonEntryData; import emu.grasscutter.net.packet.BasePacket; @@ -9,16 +8,14 @@ import emu.grasscutter.net.proto.DailyDungeonEntryInfoOuterClass; import emu.grasscutter.net.proto.DungeonEntryInfoOuterClass; import emu.grasscutter.net.proto.GetDailyDungeonEntryInfoRspOuterClass; -import java.util.List; - public class PacketGetDailyDungeonEntryInfoRsp extends BasePacket { public PacketGetDailyDungeonEntryInfoRsp(Integer sceneID) { super(PacketOpcodes.GetDailyDungeonEntryInfoRsp); - var resp= GetDailyDungeonEntryInfoRspOuterClass.GetDailyDungeonEntryInfoRsp.newBuilder(); + var resp = GetDailyDungeonEntryInfoRspOuterClass.GetDailyDungeonEntryInfoRsp.newBuilder(); - for (var info : GameData.getDungeonEntryDataMap().values().parallelStream().filter(d -> d.getSceneId() == sceneID).map(this::getDungonEntryInfo).toList()) + for (var info : GameData.getDungeonEntryDataMap().values().parallelStream().filter(d -> d.getSceneId() == sceneID).map(this::getDungonEntryInfo).toList()) resp.addDailyDungeonInfoList(info); this.setData(resp.build()); @@ -30,7 +27,7 @@ public class PacketGetDailyDungeonEntryInfoRsp extends BasePacket { // TODO DungeonEntryInfoOuterClass.DungeonEntryInfo dungeonEntryInfo - = DungeonEntryInfoOuterClass.DungeonEntryInfo.newBuilder().setDungeonId(130).build(); + = DungeonEntryInfoOuterClass.DungeonEntryInfo.newBuilder().setDungeonId(130).build(); var builder = DailyDungeonEntryInfoOuterClass.DailyDungeonEntryInfo.newBuilder(); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetFriendShowAvatarInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetFriendShowAvatarInfoRsp.java index f9b640659..5edd8ec5d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetFriendShowAvatarInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetFriendShowAvatarInfoRsp.java @@ -1,24 +1,24 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetFriendShowAvatarInfoRspOuterClass.GetFriendShowAvatarInfoRsp; import emu.grasscutter.net.proto.ShowAvatarInfoOuterClass.ShowAvatarInfo; +import java.util.List; + @Opcodes(PacketOpcodes.GetFriendShowAvatarInfoRsp) public class PacketGetFriendShowAvatarInfoRsp extends BasePacket { - public PacketGetFriendShowAvatarInfoRsp(int uid, List showAvatarInfoList) { - super(PacketOpcodes.GetFriendShowAvatarInfoRsp); + public PacketGetFriendShowAvatarInfoRsp(int uid, List showAvatarInfoList) { + super(PacketOpcodes.GetFriendShowAvatarInfoRsp); - GetFriendShowAvatarInfoRsp.Builder p = GetFriendShowAvatarInfoRsp.newBuilder() - .setUid(uid) - .addAllShowAvatarInfoList(showAvatarInfoList); + GetFriendShowAvatarInfoRsp.Builder p = GetFriendShowAvatarInfoRsp.newBuilder() + .setUid(uid) + .addAllShowAvatarInfoList(showAvatarInfoList); - this.setData(p.build()); - } + this.setData(p.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetHomeLevelUpRewardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetHomeLevelUpRewardRsp.java index 979632256..10e110603 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetHomeLevelUpRewardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetHomeLevelUpRewardRsp.java @@ -7,8 +7,8 @@ import emu.grasscutter.net.proto.GetHomeLevelUpRewardRspOuterClass.GetHomeLevelU public class PacketGetHomeLevelUpRewardRsp extends BasePacket { public PacketGetHomeLevelUpRewardRsp(int level, int rewardId) { - super(PacketOpcodes.GetHomeLevelUpRewardRsp); - + super(PacketOpcodes.GetHomeLevelUpRewardRsp); + int retcode = 0; if (rewardId == 0) { @@ -16,10 +16,10 @@ public class PacketGetHomeLevelUpRewardRsp extends BasePacket { } GetHomeLevelUpRewardRsp proto = GetHomeLevelUpRewardRsp.newBuilder() - .setLevel(level) - .setRetcode(retcode) - .build(); + .setLevel(level) + .setRetcode(retcode) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetInvestigationMonsterRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetInvestigationMonsterRsp.java index 47a26e261..2517d66e5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetInvestigationMonsterRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetInvestigationMonsterRsp.java @@ -4,7 +4,6 @@ import emu.grasscutter.game.player.Player; import emu.grasscutter.game.world.WorldDataSystem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.GetActivityInfoRspOuterClass; import emu.grasscutter.net.proto.GetInvestigationMonsterRspOuterClass; import java.util.List; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetMailItemRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetMailItemRsp.java index 0cac39e88..2e94a1f20 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetMailItemRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetMailItemRsp.java @@ -14,7 +14,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PacketGetMailItemRsp extends BasePacket { +public class PacketGetMailItemRsp extends BasePacket { public PacketGetMailItemRsp(Player player, List mailList) { super(PacketOpcodes.GetMailItemRsp); @@ -52,7 +52,7 @@ public class PacketGetMailItemRsp extends BasePacket { modified = true; } } - if(modified) { + if (modified) { player.save(); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetOnlinePlayerListRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetOnlinePlayerListRsp.java index 4ea8a02a5..9f498659d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetOnlinePlayerListRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetOnlinePlayerListRsp.java @@ -4,33 +4,26 @@ import emu.grasscutter.Grasscutter; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.GetOnlinePlayerListReqOuterClass; -import emu.grasscutter.net.proto.GetOnlinePlayerListRspOuterClass.*; -import emu.grasscutter.net.proto.MpSettingTypeOuterClass; -import emu.grasscutter.net.proto.OnlinePlayerInfoOuterClass.OnlinePlayerInfo; -import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; +import emu.grasscutter.net.proto.GetOnlinePlayerListRspOuterClass.GetOnlinePlayerListRsp; -import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.Objects; public class PacketGetOnlinePlayerListRsp extends BasePacket { - public PacketGetOnlinePlayerListRsp(Player session){ + public PacketGetOnlinePlayerListRsp(Player session) { super(PacketOpcodes.GetOnlinePlayerListRsp); - + List players = Grasscutter.getGameServer().getPlayers().values().stream().limit(50).toList(); - + GetOnlinePlayerListRsp.Builder proto = GetOnlinePlayerListRsp.newBuilder(); - + if (players.size() != 0) { - for(Player player : players) { + for (Player player : players) { if (player.getUid() == session.getUid()) continue; - + proto.addPlayerInfoList(player.getOnlinePlayerInfo()); } } - + this.setData(proto); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerAskFriendListRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerAskFriendListRsp.java index 7fc37e280..9f8573008 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerAskFriendListRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerAskFriendListRsp.java @@ -7,19 +7,19 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetPlayerAskFriendListRspOuterClass.GetPlayerAskFriendListRsp; public class PacketGetPlayerAskFriendListRsp extends BasePacket { - - public PacketGetPlayerAskFriendListRsp(Player player) { - super(PacketOpcodes.GetPlayerAskFriendListRsp); - - GetPlayerAskFriendListRsp.Builder proto = GetPlayerAskFriendListRsp.newBuilder(); - for (Friendship friendship : player.getFriendsList().getPendingFriends().values()) { - if (friendship.getAskerId() == player.getUid()) { - continue; - } - proto.addAskFriendList(friendship.toProto()); - } - - this.setData(proto); - } + public PacketGetPlayerAskFriendListRsp(Player player) { + super(PacketOpcodes.GetPlayerAskFriendListRsp); + + GetPlayerAskFriendListRsp.Builder proto = GetPlayerAskFriendListRsp.newBuilder(); + + for (Friendship friendship : player.getFriendsList().getPendingFriends().values()) { + if (friendship.getAskerId() == player.getUid()) { + continue; + } + proto.addAskFriendList(friendship.toProto()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java index 82110ef78..1082d37de 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import static emu.grasscutter.config.Configuration.*; - import emu.grasscutter.GameConstants; import emu.grasscutter.game.friends.Friendship; import emu.grasscutter.game.player.Player; @@ -10,8 +8,10 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.FriendBriefOuterClass.FriendBrief; import emu.grasscutter.net.proto.FriendOnlineStateOuterClass.FriendOnlineState; import emu.grasscutter.net.proto.GetPlayerFriendListRspOuterClass.GetPlayerFriendListRsp; -import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; import emu.grasscutter.net.proto.PlatformTypeOuterClass; +import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; + +import static emu.grasscutter.config.Configuration.GAME_INFO; public class PacketGetPlayerFriendListRsp extends BasePacket { @@ -20,19 +20,19 @@ public class PacketGetPlayerFriendListRsp extends BasePacket { var serverAccount = GAME_INFO.serverAccount; FriendBrief serverFriend = FriendBrief.newBuilder() - .setUid(GameConstants.SERVER_CONSOLE_UID) - .setNickname(serverAccount.nickName) - .setLevel(serverAccount.adventureRank) - .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(serverAccount.avatarId)) - .setWorldLevel(serverAccount.worldLevel) - .setSignature(serverAccount.signature) - .setLastActiveTime((int) (System.currentTimeMillis() / 1000f)) - .setNameCardId(serverAccount.nameCardId) - .setOnlineState(FriendOnlineState.FRIEND_ONLINE_STATE_ONLINE) - .setParam(1) - .setIsGameSource(true) - .setPlatformType(PlatformTypeOuterClass.PlatformType.PLATFORM_TYPE_PC) - .build(); + .setUid(GameConstants.SERVER_CONSOLE_UID) + .setNickname(serverAccount.nickName) + .setLevel(serverAccount.adventureRank) + .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(serverAccount.avatarId)) + .setWorldLevel(serverAccount.worldLevel) + .setSignature(serverAccount.signature) + .setLastActiveTime((int) (System.currentTimeMillis() / 1000f)) + .setNameCardId(serverAccount.nameCardId) + .setOnlineState(FriendOnlineState.FRIEND_ONLINE_STATE_ONLINE) + .setParam(1) + .setIsGameSource(true) + .setPlatformType(PlatformTypeOuterClass.PlatformType.PLATFORM_TYPE_PC) + .build(); GetPlayerFriendListRsp.Builder proto = GetPlayerFriendListRsp.newBuilder().addFriendList(serverFriend); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerSocialDetailRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerSocialDetailRsp.java index 6c36e1729..d5b80045b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerSocialDetailRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerSocialDetailRsp.java @@ -7,18 +7,18 @@ import emu.grasscutter.net.proto.RetcodeOuterClass; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; public class PacketGetPlayerSocialDetailRsp extends BasePacket { - - public PacketGetPlayerSocialDetailRsp(SocialDetail.Builder detail) { - super(PacketOpcodes.GetPlayerSocialDetailRsp); - GetPlayerSocialDetailRsp.Builder proto = GetPlayerSocialDetailRsp.newBuilder(); - - if (detail != null) { - proto.setDetailData(detail); - } else { - proto.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE); - } + public PacketGetPlayerSocialDetailRsp(SocialDetail.Builder detail) { + super(PacketOpcodes.GetPlayerSocialDetailRsp); - this.setData(proto); - } + GetPlayerSocialDetailRsp.Builder proto = GetPlayerSocialDetailRsp.newBuilder(); + + if (detail != null) { + proto.setDetailData(detail); + } else { + proto.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java index 1bfc647fc..ae189930e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java @@ -1,7 +1,6 @@ package emu.grasscutter.server.packet.send; import com.google.protobuf.ByteString; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetPlayerTokenRspOuterClass.GetPlayerTokenRsp; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetSceneAreaRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetSceneAreaRsp.java index 2760a9f05..4c7e52d2f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetSceneAreaRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetSceneAreaRsp.java @@ -14,12 +14,12 @@ public class PacketGetSceneAreaRsp extends BasePacket { this.buildHeader(0); GetSceneAreaRsp p = GetSceneAreaRsp.newBuilder() - .setSceneId(sceneId) - .addAllAreaIdList(player.getUnlockedSceneAreas(sceneId)) - .addCityInfoList(CityInfo.newBuilder().setCityId(1).setLevel(1).build()) - .addCityInfoList(CityInfo.newBuilder().setCityId(2).setLevel(1).build()) - .addCityInfoList(CityInfo.newBuilder().setCityId(3).setLevel(1).build()) - .build(); + .setSceneId(sceneId) + .addAllAreaIdList(player.getUnlockedSceneAreas(sceneId)) + .addCityInfoList(CityInfo.newBuilder().setCityId(1).setLevel(1).build()) + .addCityInfoList(CityInfo.newBuilder().setCityId(2).setLevel(1).build()) + .addCityInfoList(CityInfo.newBuilder().setCityId(3).setLevel(1).build()) + .build(); this.setData(p); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetScenePointRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetScenePointRsp.java index 5b0f5f5b4..9df0581f1 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetScenePointRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetScenePointRsp.java @@ -12,7 +12,7 @@ public class PacketGetScenePointRsp extends BasePacket { super(PacketOpcodes.GetScenePointRsp); GetScenePointRsp.Builder p = GetScenePointRsp.newBuilder() - .setSceneId(sceneId); + .setSceneId(sceneId); if (GameData.getScenePointIdList().size() == 0) { for (int i = 1; i < 1000; i++) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopRsp.java index b52d58004..92fa43db2 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopRsp.java @@ -23,9 +23,9 @@ public class PacketGetShopRsp extends BasePacket { // TODO: CityReputationLevel Shop.Builder shop = Shop.newBuilder() - .setShopType(shopType) - .setCityId(1) //mock - .setCityReputationLevel(10); //mock + .setShopType(shopType) + .setCityId(1) //mock + .setCityReputationLevel(10); //mock ShopSystem manager = Grasscutter.getGameServer().getShopSystem(); if (manager.getShopData().get(shopType) != null) { @@ -33,18 +33,18 @@ public class PacketGetShopRsp extends BasePacket { List goodsList = new ArrayList<>(); for (ShopInfo info : list) { ShopGoods.Builder goods = ShopGoods.newBuilder() - .setGoodsId(info.getGoodsId()) - .setGoodsItem(ItemParamOuterClass.ItemParam.newBuilder().setItemId(info.getGoodsItem().getId()).setCount(info.getGoodsItem().getCount()).build()) - .setScoin(info.getScoin()) - .setHcoin(info.getHcoin()) - .setBuyLimit(info.getBuyLimit()) - .setBeginTime(info.getBeginTime()) - .setEndTime(info.getEndTime()) - .setMinLevel(info.getMinLevel()) - .setMaxLevel(info.getMaxLevel()) - .setMcoin(info.getMcoin()) - .setDisableType(info.getDisableType()) - .setSecondarySheetId(info.getSecondarySheetId()); + .setGoodsId(info.getGoodsId()) + .setGoodsItem(ItemParamOuterClass.ItemParam.newBuilder().setItemId(info.getGoodsItem().getId()).setCount(info.getGoodsItem().getCount()).build()) + .setScoin(info.getScoin()) + .setHcoin(info.getHcoin()) + .setBuyLimit(info.getBuyLimit()) + .setBeginTime(info.getBeginTime()) + .setEndTime(info.getEndTime()) + .setMinLevel(info.getMinLevel()) + .setMaxLevel(info.getMaxLevel()) + .setMcoin(info.getMcoin()) + .setDisableType(info.getDisableType()) + .setSecondarySheetId(info.getSecondarySheetId()); if (info.getCostItemList() != null) { goods.addAllCostItemList(info.getCostItemList().stream().map(x -> ItemParamOuterClass.ItemParam.newBuilder().setItemId(x.getId()).setCount(x.getCount()).build()).collect(Collectors.toList())); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopmallDataRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopmallDataRsp.java index d380c2953..7b42af316 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopmallDataRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetShopmallDataRsp.java @@ -7,16 +7,16 @@ import emu.grasscutter.net.proto.GetShopmallDataRspOuterClass.GetShopmallDataRsp import java.util.List; public class PacketGetShopmallDataRsp extends BasePacket { - - public PacketGetShopmallDataRsp() { - super(PacketOpcodes.GetShopmallDataRsp); - List shop_malls = List.of(900, 1052, 902, 1001, 903); + public PacketGetShopmallDataRsp() { + super(PacketOpcodes.GetShopmallDataRsp); - GetShopmallDataRsp proto = GetShopmallDataRsp.newBuilder() - .addAllShopTypeList(shop_malls) - .build(); + List shop_malls = List.of(900, 1052, 902, 1001, 903); - this.setData(proto); - } + GetShopmallDataRsp proto = GetShopmallDataRsp.newBuilder() + .addAllShopTypeList(shop_malls) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetWidgetSlotRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetWidgetSlotRsp.java index 3c588c5ef..a6e430aa9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetWidgetSlotRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetWidgetSlotRsp.java @@ -15,22 +15,22 @@ public class PacketGetWidgetSlotRsp extends BasePacket { super(PacketOpcodes.GetWidgetSlotRsp); GetWidgetSlotRspOuterClass.GetWidgetSlotRsp.Builder proto = - GetWidgetSlotRspOuterClass.GetWidgetSlotRsp.newBuilder(); + GetWidgetSlotRspOuterClass.GetWidgetSlotRsp.newBuilder(); if (player.getWidgetId() == 0) { // TODO: check this logic later, it was null-checking an int before which made it dead code proto.addAllSlotList(List.of()); } else { proto.addSlotList( - WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() - .setIsActive(true) - .setMaterialId(player.getWidgetId()) - .build() + WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() + .setIsActive(true) + .setMaterialId(player.getWidgetId()) + .build() ); proto.addSlotList( - WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() - .setTag(WidgetSlotTagOuterClass.WidgetSlotTag.WIDGET_SLOT_TAG_ATTACH_AVATAR) - .build() + WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() + .setTag(WidgetSlotTagOuterClass.WidgetSlotTag.WIDGET_SLOT_TAG_ATTACH_AVATAR) + .build() ); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetWorldMpInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetWorldMpInfoRsp.java index 7ab3c88e4..97256d1d8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetWorldMpInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetWorldMpInfoRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.GetWorldMpInfoRspOuterClass.GetWorldMpInfoRsp; public class PacketGetWorldMpInfoRsp extends BasePacket { - - public PacketGetWorldMpInfoRsp(World world) { - super(PacketOpcodes.GetWorldMpInfoRsp); - GetWorldMpInfoRsp proto = GetWorldMpInfoRsp.newBuilder() - .setIsInMpMode(world.isMultiplayer()) - .build(); - - this.setData(proto); - } + public PacketGetWorldMpInfoRsp(World world) { + super(PacketOpcodes.GetWorldMpInfoRsp); + + GetWorldMpInfoRsp proto = GetWorldMpInfoRsp.newBuilder() + .setIsInMpMode(world.isMultiplayer()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGroupSuiteNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGroupSuiteNotify.java index 58adfdf0f..6d1152423 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGroupSuiteNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGroupSuiteNotify.java @@ -11,14 +11,14 @@ import java.util.List; public class PacketGroupSuiteNotify extends BasePacket { - /** - * Real control which npc suite is loaded + /** + * Real control which npc suite is loaded * EntityNPC is useless - */ - public PacketGroupSuiteNotify(List npcBornEntries) { - super(PacketOpcodes.GroupSuiteNotify); + */ + public PacketGroupSuiteNotify(List npcBornEntries) { + super(PacketOpcodes.GroupSuiteNotify); - var proto = GroupSuiteNotifyOuterClass.GroupSuiteNotify.newBuilder(); + var proto = GroupSuiteNotifyOuterClass.GroupSuiteNotify.newBuilder(); npcBornEntries.stream() .filter(x -> x.getGroupId() > 0 && x.getSuiteIdList() != null) @@ -26,9 +26,9 @@ public class PacketGroupSuiteNotify extends BasePacket { proto.putGroupMap(x.getGroupId(), y) )); - this.setData(proto); + this.setData(proto); - } + } public PacketGroupSuiteNotify(int groupId, int suiteId) { super(PacketOpcodes.GroupSuiteNotify); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGroupUnloadNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGroupUnloadNotify.java index d86746680..6923ccdbb 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGroupUnloadNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGroupUnloadNotify.java @@ -8,13 +8,13 @@ import java.util.List; public class PacketGroupUnloadNotify extends BasePacket { - public PacketGroupUnloadNotify(List groupList) { - super(PacketOpcodes.GroupUnloadNotify); + public PacketGroupUnloadNotify(List groupList) { + super(PacketOpcodes.GroupUnloadNotify); var proto = GroupUnloadNotifyOuterClass.GroupUnloadNotify.newBuilder(); proto.addAllGroupList(groupList); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketH5ActivityIdsNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketH5ActivityIdsNotify.java index 128a15133..37546849a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketH5ActivityIdsNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketH5ActivityIdsNotify.java @@ -5,13 +5,13 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.H5ActivityIdsNotifyOuterClass.H5ActivityIdsNotify; public class PacketH5ActivityIdsNotify extends BasePacket { - - public PacketH5ActivityIdsNotify() { - super(PacketOpcodes.H5ActivityIdsNotify); - H5ActivityIdsNotify proto = H5ActivityIdsNotify.newBuilder() - .build(); - - this.setData(proto); - } + public PacketH5ActivityIdsNotify() { + super(PacketOpcodes.H5ActivityIdsNotify); + + H5ActivityIdsNotify proto = H5ActivityIdsNotify.newBuilder() + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeBasicInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeBasicInfoNotify.java index b56a41fed..fe3ef2709 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeBasicInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeBasicInfoNotify.java @@ -5,8 +5,6 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.HomeBasicInfoNotifyOuterClass; import emu.grasscutter.net.proto.HomeBasicInfoOuterClass; -import emu.grasscutter.net.proto.HomeLimitedShopInfoOuterClass; -import emu.grasscutter.net.proto.VectorOuterClass; public class PacketHomeBasicInfoNotify extends BasePacket { @@ -23,15 +21,15 @@ public class PacketHomeBasicInfoNotify extends BasePacket { var homeScene = player.getHome().getHomeSceneItem(sceneId); proto.setBasicInfo(HomeBasicInfoOuterClass.HomeBasicInfo.newBuilder() - .setCurModuleId(player.getCurrentRealmId()) - .setCurRoomSceneId(homeScene.getRoomSceneId()) - .setIsInEditMode(editMode) - .setHomeOwnerUid(player.getUid()) - .setExp(player.getHome().getExp()) - .setLevel(player.getHome().getLevel()) - .setOwnerNickName(player.getNickname()) - // TODO limit shop - .build()); + .setCurModuleId(player.getCurrentRealmId()) + .setCurRoomSceneId(homeScene.getRoomSceneId()) + .setIsInEditMode(editMode) + .setHomeOwnerUid(player.getUid()) + .setExp(player.getHome().getExp()) + .setLevel(player.getHome().getLevel()) + .setOwnerNickName(player.getNickname()) + // TODO limit shop + .build()); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeEditModeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeEditModeRsp.java index 09326aa3e..9a2f91cc4 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeEditModeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeEditModeRsp.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.HomeChangeEditModeRspOuterClass; public class PacketHomeChangeEditModeRsp extends BasePacket { - public PacketHomeChangeEditModeRsp(boolean enterEditMode) { - super(PacketOpcodes.HomeChangeEditModeRsp); + public PacketHomeChangeEditModeRsp(boolean enterEditMode) { + super(PacketOpcodes.HomeChangeEditModeRsp); - var proto = HomeChangeEditModeRspOuterClass.HomeChangeEditModeRsp.newBuilder(); + var proto = HomeChangeEditModeRspOuterClass.HomeChangeEditModeRsp.newBuilder(); - proto.setIsEnterEditMode(enterEditMode); + proto.setIsEnterEditMode(enterEditMode); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java index 0a333411a..c86eaf503 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChangeModuleRsp.java @@ -10,9 +10,9 @@ public class PacketHomeChangeModuleRsp extends BasePacket { super(PacketOpcodes.HomeChangeModuleRsp); HomeChangeModuleRspOuterClass.HomeChangeModuleRsp proto = HomeChangeModuleRspOuterClass.HomeChangeModuleRsp.newBuilder() - .setRetcode(0) - .setTargetModuleId(targetModuleId) - .build(); + .setRetcode(0) + .setTargetModuleId(targetModuleId) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChooseModuleRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChooseModuleRsp.java index e7b3ff1ea..90c5e969a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChooseModuleRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeChooseModuleRsp.java @@ -10,9 +10,9 @@ public class PacketHomeChooseModuleRsp extends BasePacket { super(PacketOpcodes.HomeChooseModuleRsp); HomeChooseModuleRspOuterClass.HomeChooseModuleRsp proto = HomeChooseModuleRspOuterClass.HomeChooseModuleRsp.newBuilder() - .setRetcode(0) - .setModuleId(moduleId) - .build(); + .setRetcode(0) + .setModuleId(moduleId) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeComfortInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeComfortInfoNotify.java index 0b38b836d..9b14022ba 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeComfortInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeComfortInfoNotify.java @@ -25,23 +25,23 @@ public class PacketHomeComfortInfoNotify extends BasePacket { for (int moduleId : player.getRealmList()) { var homeScene = player.getHome().getHomeSceneItem(moduleId + 2000); var blockComfortList = homeScene.getBlockItems().values().stream() - .map(HomeBlockItem::calComfort) - .toList(); + .map(HomeBlockItem::calComfort) + .toList(); var homeRoomScene = player.getHome().getHomeSceneItem(homeScene.getRoomSceneId()); comfortInfoList.add( - HomeModuleComfortInfoOuterClass.HomeModuleComfortInfo.newBuilder() - .setModuleId(moduleId) - .setRoomSceneComfortValue(homeRoomScene.calComfort()) - .addAllWorldSceneBlockComfortValueList(blockComfortList) - .build() + HomeModuleComfortInfoOuterClass.HomeModuleComfortInfo.newBuilder() + .setModuleId(moduleId) + .setRoomSceneComfortValue(homeRoomScene.calComfort()) + .addAllWorldSceneBlockComfortValueList(blockComfortList) + .build() ); } HomeComfortInfoNotifyOuterClass.HomeComfortInfoNotify proto = HomeComfortInfoNotifyOuterClass.HomeComfortInfoNotify - .newBuilder() - .addAllModuleInfoList(comfortInfoList) - .build(); + .newBuilder() + .addAllModuleInfoList(comfortInfoList) + .build(); this.setData(proto); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeGetArrangementInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeGetArrangementInfoRsp.java index b6c8b1d1a..f397b353e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeGetArrangementInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeGetArrangementInfoRsp.java @@ -10,22 +10,22 @@ import java.util.List; public class PacketHomeGetArrangementInfoRsp extends BasePacket { - public PacketHomeGetArrangementInfoRsp(Player player, List sceneIdList) { - super(PacketOpcodes.HomeGetArrangementInfoRsp); + public PacketHomeGetArrangementInfoRsp(Player player, List sceneIdList) { + super(PacketOpcodes.HomeGetArrangementInfoRsp); - var home = player.getHome(); + var home = player.getHome(); - var homeScenes = sceneIdList.stream() - .map(home::getHomeSceneItem) - .map(HomeSceneItem::toProto) - .toList(); + var homeScenes = sceneIdList.stream() + .map(home::getHomeSceneItem) + .map(HomeSceneItem::toProto) + .toList(); - home.save(); + home.save(); - var proto = HomeGetArrangementInfoRspOuterClass.HomeGetArrangementInfoRsp.newBuilder(); + var proto = HomeGetArrangementInfoRspOuterClass.HomeGetArrangementInfoRsp.newBuilder(); - proto.addAllSceneArrangementInfoList(homeScenes); + proto.addAllSceneArrangementInfoList(homeScenes); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java index ab732e93d..c736a9d42 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeMarkPointNotify.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.home.GameHome; import emu.grasscutter.game.home.HomeBlockItem; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; @@ -12,35 +11,35 @@ import java.util.Collection; public class PacketHomeMarkPointNotify extends BasePacket { - public PacketHomeMarkPointNotify(Player player) { - super(PacketOpcodes.HomeMarkPointNotify); + public PacketHomeMarkPointNotify(Player player) { + super(PacketOpcodes.HomeMarkPointNotify); - var proto = HomeMarkPointNotifyOuterClass.HomeMarkPointNotify.newBuilder(); + var proto = HomeMarkPointNotifyOuterClass.HomeMarkPointNotify.newBuilder(); - if(player.getRealmList() == null){ - return; - } - for(var moduleId : player.getRealmList()){ - var homeScene = player.getHome().getHomeSceneItem(moduleId + 2000); + if (player.getRealmList() == null) { + return; + } + for (var moduleId : player.getRealmList()) { + var homeScene = player.getHome().getHomeSceneItem(moduleId + 2000); - var markPointData = HomeMarkPointSceneDataOuterClass.HomeMarkPointSceneData.newBuilder() - .setModuleId(moduleId) - .setSceneId(moduleId + 2000) - .setTeapotSpiritPos(homeScene.getDjinnPos().toProto()); + var markPointData = HomeMarkPointSceneDataOuterClass.HomeMarkPointSceneData.newBuilder() + .setModuleId(moduleId) + .setSceneId(moduleId + 2000) + .setTeapotSpiritPos(homeScene.getDjinnPos().toProto()); - // Now it only supports the teleport point - // TODO add more types - var marks = homeScene.getBlockItems().values().stream() - .map(HomeBlockItem::getDeployFurnitureList) - .flatMap(Collection::stream) - .filter(i -> i.getFurnitureId() == 373501) - .map(x -> x.toMarkPointProto(3)) - .toList(); + // Now it only supports the teleport point + // TODO add more types + var marks = homeScene.getBlockItems().values().stream() + .map(HomeBlockItem::getDeployFurnitureList) + .flatMap(Collection::stream) + .filter(i -> i.getFurnitureId() == 373501) + .map(x -> x.toMarkPointProto(3)) + .toList(); - markPointData.addAllFurnitureList(marks); - proto.addMarkPointDataList(markPointData); - } + markPointData.addAllFurnitureList(marks); + proto.addMarkPointDataList(markPointData); + } - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleSeenRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleSeenRsp.java index 4c1fc51d2..0c6b756e3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleSeenRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleSeenRsp.java @@ -1,20 +1,20 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.HomeModuleSeenRspOuterClass.HomeModuleSeenRsp; +import java.util.List; + public class PacketHomeModuleSeenRsp extends BasePacket { - public PacketHomeModuleSeenRsp(List seen) { - super(PacketOpcodes.HomeModuleSeenRsp); + public PacketHomeModuleSeenRsp(List seen) { + super(PacketOpcodes.HomeModuleSeenRsp); - HomeModuleSeenRsp proto = HomeModuleSeenRsp.newBuilder() - .addAllSeenModuleIdList(seen) - .build(); + HomeModuleSeenRsp proto = HomeModuleSeenRsp.newBuilder() + .addAllSeenModuleIdList(seen) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleUnlockNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleUnlockNotify.java index 0deea2535..e8147270e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleUnlockNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeModuleUnlockNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.HomeModuleUnlockNotifyOuterClass.HomeModuleUnlockNotify; public class PacketHomeModuleUnlockNotify extends BasePacket { - - public PacketHomeModuleUnlockNotify(int targetModuleId) { - super(PacketOpcodes.HomeModuleUnlockNotify); - HomeModuleUnlockNotify proto = HomeModuleUnlockNotify.newBuilder() - .setModuleId(targetModuleId) - .build(); - - this.setData(proto); - } + public PacketHomeModuleUnlockNotify(int targetModuleId) { + super(PacketOpcodes.HomeModuleUnlockNotify); + + HomeModuleUnlockNotify proto = HomeModuleUnlockNotify.newBuilder() + .setModuleId(targetModuleId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceNotify.java index 1982fd9a6..b383cb799 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceNotify.java @@ -14,21 +14,21 @@ public class PacketHomeResourceNotify extends BasePacket { var level = home.getLevel(); HomeResource coin = HomeResource.newBuilder() - .setNextRefreshTime(home.getNextUpdateTime()) - .setStoreLimit(home.getMaxCoin(level)) - .setStoreValue(home.getStoredCoin()) - .build(); + .setNextRefreshTime(home.getNextUpdateTime()) + .setStoreLimit(home.getMaxCoin(level)) + .setStoreValue(home.getStoredCoin()) + .build(); HomeResource fetter = HomeResource.newBuilder() - .setNextRefreshTime(home.getNextUpdateTime()) - .setStoreLimit(home.getMaxFetter(level)) - .setStoreValue(home.getStoredFetterExp()) - .build(); + .setNextRefreshTime(home.getNextUpdateTime()) + .setStoreLimit(home.getMaxFetter(level)) + .setStoreValue(home.getStoredFetterExp()) + .build(); var notify = HomeResourceNotifyOuterClass.HomeResourceNotify.newBuilder() - .setFetterExp(fetter) - .setHomeCoin(coin) - .build(); + .setFetterExp(fetter) + .setHomeCoin(coin) + .build(); this.setData(notify); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeFetterExpRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeFetterExpRsp.java index 5b6fb7d50..d45d27ca9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeFetterExpRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeFetterExpRsp.java @@ -3,8 +3,8 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.HomeResourceTakeFetterExpRspOuterClass; import emu.grasscutter.net.proto.HomeResourceOuterClass.HomeResource; +import emu.grasscutter.net.proto.HomeResourceTakeFetterExpRspOuterClass; public class PacketHomeResourceTakeFetterExpRsp extends BasePacket { public PacketHomeResourceTakeFetterExpRsp(Player player) { @@ -15,14 +15,14 @@ public class PacketHomeResourceTakeFetterExpRsp extends BasePacket { home.takeHomeFetter(player); var fetterExp = HomeResource.newBuilder() - .setNextRefreshTime(home.getNextUpdateTime()) - .setStoreLimit(home.getMaxFetter(home.getLevel())) - .setStoreValue(0) - .build(); + .setNextRefreshTime(home.getNextUpdateTime()) + .setStoreLimit(home.getMaxFetter(home.getLevel())) + .setStoreValue(0) + .build(); var proto = HomeResourceTakeFetterExpRspOuterClass.HomeResourceTakeFetterExpRsp.newBuilder() - .setFetterExp(fetterExp) - .build(); + .setFetterExp(fetterExp) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeHomeCoinRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeHomeCoinRsp.java index 0530400ad..0112d1b29 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeHomeCoinRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeResourceTakeHomeCoinRsp.java @@ -3,8 +3,8 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.HomeResourceTakeHomeCoinRspOuterClass; import emu.grasscutter.net.proto.HomeResourceOuterClass.HomeResource; +import emu.grasscutter.net.proto.HomeResourceTakeHomeCoinRspOuterClass; public class PacketHomeResourceTakeHomeCoinRsp extends BasePacket { public PacketHomeResourceTakeHomeCoinRsp(Player player) { @@ -15,14 +15,14 @@ public class PacketHomeResourceTakeHomeCoinRsp extends BasePacket { home.takeHomeCoin(player); var coin = HomeResource.newBuilder() - .setNextRefreshTime(home.getNextUpdateTime()) - .setStoreLimit(home.getMaxCoin(home.getLevel())) - .setStoreValue(0) - .build(); + .setNextRefreshTime(home.getNextUpdateTime()) + .setStoreLimit(home.getMaxCoin(home.getLevel())) + .setStoreValue(0) + .build(); var proto = HomeResourceTakeHomeCoinRspOuterClass.HomeResourceTakeHomeCoinRsp.newBuilder() - .setHomeCoin(coin) - .build(); + .setHomeCoin(coin) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneInitFinishRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneInitFinishRsp.java index 66b529759..8fd8f1883 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneInitFinishRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneInitFinishRsp.java @@ -2,17 +2,16 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.HomeSceneArrangementInfoOuterClass; import emu.grasscutter.net.proto.HomeSceneInitFinishReqOuterClass; public class PacketHomeSceneInitFinishRsp extends BasePacket { - public PacketHomeSceneInitFinishRsp() { - super(PacketOpcodes.HomeSceneInitFinishRsp); + public PacketHomeSceneInitFinishRsp() { + super(PacketOpcodes.HomeSceneInitFinishRsp); - var proto = HomeSceneInitFinishReqOuterClass.HomeSceneInitFinishReq.newBuilder(); + var proto = HomeSceneInitFinishReqOuterClass.HomeSceneInitFinishReq.newBuilder(); - this.setData(proto); + this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneJumpRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneJumpRsp.java index 01fc95f57..0da6158d6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneJumpRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeSceneJumpRsp.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.HomeSceneJumpRspOuterClass; public class PacketHomeSceneJumpRsp extends BasePacket { - public PacketHomeSceneJumpRsp(boolean enterRoomScene) { - super(PacketOpcodes.HomeSceneJumpRsp); + public PacketHomeSceneJumpRsp(boolean enterRoomScene) { + super(PacketOpcodes.HomeSceneJumpRsp); - var proto = HomeSceneJumpRspOuterClass.HomeSceneJumpRsp.newBuilder(); + var proto = HomeSceneJumpRspOuterClass.HomeSceneJumpRsp.newBuilder(); - proto.setIsEnterRoomScene(enterRoomScene); + proto.setIsEnterRoomScene(enterRoomScene); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeUpdateArrangementInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeUpdateArrangementInfoRsp.java index fac994515..1c508bdd0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHomeUpdateArrangementInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHomeUpdateArrangementInfoRsp.java @@ -5,8 +5,8 @@ import emu.grasscutter.net.packet.PacketOpcodes; public class PacketHomeUpdateArrangementInfoRsp extends BasePacket { - public PacketHomeUpdateArrangementInfoRsp() { - super(PacketOpcodes.HomeUpdateArrangementInfoRsp); + public PacketHomeUpdateArrangementInfoRsp() { + super(PacketOpcodes.HomeUpdateArrangementInfoRsp); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketHostPlayerNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketHostPlayerNotify.java index 48d0f7b9e..d0b65f545 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketHostPlayerNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketHostPlayerNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.HostPlayerNotifyOuterClass.HostPlayerNotify; public class PacketHostPlayerNotify extends BasePacket { - - public PacketHostPlayerNotify(World world) { - super(PacketOpcodes.HostPlayerNotify); - - HostPlayerNotify proto = HostPlayerNotify.newBuilder() - .setHostUid(world.getHost().getUid()) - .setHostPeerId(world.getHost().getPeerId()) - .build(); - - this.setData(proto); - } + + public PacketHostPlayerNotify(World world) { + super(PacketOpcodes.HostPlayerNotify); + + HostPlayerNotify proto = HostPlayerNotify.newBuilder() + .setHostUid(world.getHost().getUid()) + .setHostPeerId(world.getHost().getPeerId()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketItemAddHintNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketItemAddHintNotify.java index 7b0275c50..4ee6ee534 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketItemAddHintNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketItemAddHintNotify.java @@ -1,37 +1,36 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; -import java.util.List; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ItemAddHintNotifyOuterClass.ItemAddHintNotify; -public class PacketItemAddHintNotify extends BasePacket { - - public PacketItemAddHintNotify(GameItem item, ActionReason reason) { - super(PacketOpcodes.ItemAddHintNotify); - - ItemAddHintNotify proto = ItemAddHintNotify.newBuilder() - .addItemList(item.toItemHintProto()) - .setReason(reason.getValue()) - .build(); - - this.setData(proto); - } +import java.util.Collection; - public PacketItemAddHintNotify(Collection items, ActionReason reason) { - super(PacketOpcodes.ItemAddHintNotify); - - ItemAddHintNotify.Builder proto = ItemAddHintNotify.newBuilder() - .setReason(reason.getValue()); - - for (GameItem item : items) { - proto.addItemList(item.toItemHintProto()); - } - - this.setData(proto); - } +public class PacketItemAddHintNotify extends BasePacket { + + public PacketItemAddHintNotify(GameItem item, ActionReason reason) { + super(PacketOpcodes.ItemAddHintNotify); + + ItemAddHintNotify proto = ItemAddHintNotify.newBuilder() + .addItemList(item.toItemHintProto()) + .setReason(reason.getValue()) + .build(); + + this.setData(proto); + } + + public PacketItemAddHintNotify(Collection items, ActionReason reason) { + super(PacketOpcodes.ItemAddHintNotify); + + ItemAddHintNotify.Builder proto = ItemAddHintNotify.newBuilder() + .setReason(reason.getValue()); + + for (GameItem item : items) { + proto.addItemList(item.toItemHintProto()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketLifeStateChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketLifeStateChangeNotify.java index 37545d8ea..f427768dc 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketLifeStateChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketLifeStateChangeNotify.java @@ -8,58 +8,60 @@ import emu.grasscutter.net.proto.LifeStateChangeNotifyOuterClass.LifeStateChange import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType; public class PacketLifeStateChangeNotify extends BasePacket { - public PacketLifeStateChangeNotify(GameEntity target, LifeState lifeState) { - super(PacketOpcodes.LifeStateChangeNotify); + public PacketLifeStateChangeNotify(GameEntity target, LifeState lifeState) { + super(PacketOpcodes.LifeStateChangeNotify); - LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder() - .setEntityId(target.getId()) - .setLifeState(lifeState.getValue()) - .build(); + LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder() + .setEntityId(target.getId()) + .setLifeState(lifeState.getValue()) + .build(); - this.setData(proto); - } - public PacketLifeStateChangeNotify(GameEntity attacker, GameEntity target, LifeState lifeState) { - super(PacketOpcodes.LifeStateChangeNotify); + this.setData(proto); + } - LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder() - .setEntityId(target.getId()) - .setLifeState(lifeState.getValue()) - .setSourceEntityId(attacker.getId()) - .build(); - - this.setData(proto); - } - public PacketLifeStateChangeNotify(int attackerId, GameEntity target, LifeState lifeState) { - super(PacketOpcodes.LifeStateChangeNotify); + public PacketLifeStateChangeNotify(GameEntity attacker, GameEntity target, LifeState lifeState) { + super(PacketOpcodes.LifeStateChangeNotify); - LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder() - .setEntityId(target.getId()) - .setLifeState(lifeState.getValue()) - .setSourceEntityId(attackerId) - .build(); + LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder() + .setEntityId(target.getId()) + .setLifeState(lifeState.getValue()) + .setSourceEntityId(attacker.getId()) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketLifeStateChangeNotify(GameEntity entity, LifeState lifeState, PlayerDieType dieType) { - this(entity, lifeState, null, "", dieType); - } + public PacketLifeStateChangeNotify(int attackerId, GameEntity target, LifeState lifeState) { + super(PacketOpcodes.LifeStateChangeNotify); - public PacketLifeStateChangeNotify(GameEntity entity, LifeState lifeState, GameEntity sourceEntity, - String attackTag, PlayerDieType dieType) { - super(PacketOpcodes.LifeStateChangeNotify); + LifeStateChangeNotify proto = LifeStateChangeNotify.newBuilder() + .setEntityId(target.getId()) + .setLifeState(lifeState.getValue()) + .setSourceEntityId(attackerId) + .build(); - LifeStateChangeNotify.Builder proto = LifeStateChangeNotify.newBuilder(); + this.setData(proto); + } + + public PacketLifeStateChangeNotify(GameEntity entity, LifeState lifeState, PlayerDieType dieType) { + this(entity, lifeState, null, "", dieType); + } + + public PacketLifeStateChangeNotify(GameEntity entity, LifeState lifeState, GameEntity sourceEntity, + String attackTag, PlayerDieType dieType) { + super(PacketOpcodes.LifeStateChangeNotify); + + LifeStateChangeNotify.Builder proto = LifeStateChangeNotify.newBuilder(); - proto.setEntityId(entity.getId()); - proto.setLifeState(lifeState.getValue()); - if (sourceEntity != null) { - proto.setSourceEntityId(sourceEntity.getId()); - } - proto.setAttackTag(attackTag); - proto.setDieType(dieType); + proto.setEntityId(entity.getId()); + proto.setLifeState(lifeState.getValue()); + if (sourceEntity != null) { + proto.setSourceEntityId(sourceEntity.getId()); + } + proto.setAttackTag(attackTag); + proto.setDieType(dieType); - this.setData(proto.build()); - } + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketMailChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketMailChangeNotify.java index aa86a4bd5..b73c9dcec 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketMailChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketMailChangeNotify.java @@ -1,17 +1,15 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.Grasscutter; import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.MailChangeNotifyOuterClass.MailChangeNotify; -import emu.grasscutter.net.proto.MailTextContentOuterClass.MailTextContent; -import emu.grasscutter.net.proto.MailItemOuterClass.MailItem; -import emu.grasscutter.net.proto.MailDataOuterClass.MailData; - import emu.grasscutter.net.proto.EquipParamOuterClass.EquipParam; +import emu.grasscutter.net.proto.MailChangeNotifyOuterClass.MailChangeNotify; +import emu.grasscutter.net.proto.MailDataOuterClass.MailData; +import emu.grasscutter.net.proto.MailItemOuterClass.MailItem; +import emu.grasscutter.net.proto.MailTextContentOuterClass.MailTextContent; import java.util.ArrayList; import java.util.List; @@ -19,7 +17,9 @@ import java.util.List; public class PacketMailChangeNotify extends BasePacket { public PacketMailChangeNotify(Player player, Mail message) { - this (player, new ArrayList() {{add(message);}}); + this(player, new ArrayList() {{ + add(message); + }}); } public PacketMailChangeNotify(Player player, List mailList) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketMarkMapRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketMarkMapRsp.java index 63095bb8e..9a21f3e7e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketMarkMapRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketMarkMapRsp.java @@ -3,10 +3,10 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.managers.mapmark.MapMark; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.MarkMapRspOuterClass.MarkMapRsp; import emu.grasscutter.net.proto.MapMarkPointOuterClass.MapMarkPoint; +import emu.grasscutter.net.proto.MarkMapRspOuterClass.MarkMapRsp; -import java.util.*; +import java.util.Map; public class PacketMarkMapRsp extends BasePacket { @@ -17,7 +17,7 @@ public class PacketMarkMapRsp extends BasePacket { proto.setRetcode(0); if (mapMarks != null) { - for (MapMark mapMark: mapMarks.values()) { + for (MapMark mapMark : mapMarks.values()) { var markPoint = MapMarkPoint.newBuilder(); markPoint.setSceneId(mapMark.getSceneId()); markPoint.setName(mapMark.getName()); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketMarkNewNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketMarkNewNotify.java index 2f40b5410..c38826b26 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketMarkNewNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketMarkNewNotify.java @@ -6,7 +6,6 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.MarkNewNotifyOuterClass.MarkNewNotify; import java.util.ArrayList; -import java.util.List; public class PacketMarkNewNotify extends BasePacket { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java index a37c12505..c53ed8dc2 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java @@ -10,8 +10,8 @@ public class PacketMcoinExchangeHcoinRsp extends BasePacket { super(PacketOpcodes.McoinExchangeHcoinRsp); McoinExchangeHcoinRspOuterClass.McoinExchangeHcoinRsp proto = McoinExchangeHcoinRspOuterClass.McoinExchangeHcoinRsp.newBuilder() - .setRetcode(retCode) - .build(); + .setRetcode(retCode) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameStartRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameStartRsp.java index c1af8ebe2..fedd29dd6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameStartRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameStartRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.proto.MusicGameStartRspOuterClass; public class PacketMusicGameStartRsp extends BasePacket { - public PacketMusicGameStartRsp(int musicBasicId, long musicShareId) { - super(PacketOpcodes.MusicGameStartRsp); + public PacketMusicGameStartRsp(int musicBasicId, long musicShareId) { + super(PacketOpcodes.MusicGameStartRsp); - var proto = MusicGameStartRspOuterClass.MusicGameStartRsp.newBuilder(); + var proto = MusicGameStartRspOuterClass.MusicGameStartRsp.newBuilder(); - proto.setMusicBasicId(musicBasicId) + proto.setMusicBasicId(musicBasicId) .setUgcGuid(musicShareId); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java index f3720a60e..c960c485b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java @@ -9,10 +9,10 @@ public class PacketNpcTalkRsp extends BasePacket { super(PacketOpcodes.NpcTalkRsp); NpcTalkRsp p = NpcTalkRsp.newBuilder() - .setNpcEntityId(npcEntityId) - .setCurTalkId(curTalkId) - .setEntityId(entityId) - .build(); + .setNpcEntityId(npcEntityId) + .setCurTalkId(curTalkId) + .setEntityId(entityId) + .build(); this.setData(p); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateChangeNotify.java index 6355cd41d..33e970f85 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateChangeNotify.java @@ -1,11 +1,11 @@ package emu.grasscutter.server.packet.send; -import java.util.Map; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.OpenStateChangeNotifyOuterClass.OpenStateChangeNotify; +import java.util.Map; + //Sets openState to value public class PacketOpenStateChangeNotify extends BasePacket { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java index 5d9ea0da3..a5b7858cc 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import static emu.grasscutter.config.Configuration.GAME_OPTIONS; - import emu.grasscutter.data.GameData; import emu.grasscutter.data.excels.OpenStateData; import emu.grasscutter.game.player.Player; @@ -10,6 +8,8 @@ import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.OpenStateUpdateNotifyOuterClass.OpenStateUpdateNotify; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + /* Must be sent on login for openStates to work Tells the client to update its openStateMap for the keys sent. value is irrelevant diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPathfindingEnterSceneRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPathfindingEnterSceneRsp.java index 9c96888ea..eb9458f21 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPathfindingEnterSceneRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPathfindingEnterSceneRsp.java @@ -5,7 +5,7 @@ import emu.grasscutter.net.packet.PacketOpcodes; public class PacketPathfindingEnterSceneRsp extends BasePacket { - public PacketPathfindingEnterSceneRsp(int clientSequence) { - super(PacketOpcodes.PathfindingEnterSceneRsp); - } + public PacketPathfindingEnterSceneRsp(int clientSequence) { + super(PacketOpcodes.PathfindingEnterSceneRsp); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalLineAllDataRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalLineAllDataRsp.java index f08fd8fe1..6157e11e9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalLineAllDataRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalLineAllDataRsp.java @@ -8,7 +8,6 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PersonalLineAllDataRspOuterClass; import java.util.Collection; -import java.util.List; import java.util.Map; import java.util.stream.Collectors; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalSceneJumpRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalSceneJumpRsp.java index 59065b5f8..e61d1c7da 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalSceneJumpRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPersonalSceneJumpRsp.java @@ -7,14 +7,14 @@ import emu.grasscutter.utils.Position; public class PacketPersonalSceneJumpRsp extends BasePacket { - public PacketPersonalSceneJumpRsp(int sceneId, Position pos) { - super(PacketOpcodes.PersonalSceneJumpRsp); + public PacketPersonalSceneJumpRsp(int sceneId, Position pos) { + super(PacketOpcodes.PersonalSceneJumpRsp); - PersonalSceneJumpRsp proto = PersonalSceneJumpRsp.newBuilder() - .setDestSceneId(sceneId) - .setDestPos(pos.toProto()) - .build(); - - this.setData(proto); - } + PersonalSceneJumpRsp proto = PersonalSceneJumpRsp.newBuilder() + .setDestSceneId(sceneId) + .setDestPos(pos.toProto()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPingRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPingRsp.java index 735fe855b..c34dc84b3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPingRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPingRsp.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.PingRspOuterClass.PingRsp; public class PacketPingRsp extends BasePacket { - public PacketPingRsp(int clientSeq, int time) { - super(PacketOpcodes.PingRsp, clientSeq); - - PingRsp p = PingRsp.newBuilder() - .setClientTime(time) - .build(); - - this.setData(p.toByteArray()); - } + public PacketPingRsp(int clientSeq, int time) { + super(PacketOpcodes.PingRsp, clientSeq); + + PingRsp p = PingRsp.newBuilder() + .setClientTime(time) + .build(); + + this.setData(p.toByteArray()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpNotify.java index bbf0c03c6..228f48141 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpNotify.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerApplyEnterMpNotifyOuterClass.PlayerApplyEnterMpNotify; public class PacketPlayerApplyEnterMpNotify extends BasePacket { - - public PacketPlayerApplyEnterMpNotify(Player srcPlayer) { - super(PacketOpcodes.PlayerApplyEnterMpNotify); - PlayerApplyEnterMpNotify proto = PlayerApplyEnterMpNotify.newBuilder() - .setSrcPlayerInfo(srcPlayer.getOnlinePlayerInfo()) - .build(); - - this.setData(proto); - } + public PacketPlayerApplyEnterMpNotify(Player srcPlayer) { + super(PacketOpcodes.PlayerApplyEnterMpNotify); + + PlayerApplyEnterMpNotify proto = PlayerApplyEnterMpNotify.newBuilder() + .setSrcPlayerInfo(srcPlayer.getOnlinePlayerInfo()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultNotify.java index b954c57c1..e962d5d9c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultNotify.java @@ -8,29 +8,29 @@ import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass.Player public class PacketPlayerApplyEnterMpResultNotify extends BasePacket { - public PacketPlayerApplyEnterMpResultNotify(Player target, boolean isAgreed, PlayerApplyEnterMpResultNotifyOuterClass.PlayerApplyEnterMpResultNotify.Reason reason) { - super(PacketOpcodes.PlayerApplyEnterMpResultNotify); + public PacketPlayerApplyEnterMpResultNotify(Player target, boolean isAgreed, PlayerApplyEnterMpResultNotifyOuterClass.PlayerApplyEnterMpResultNotify.Reason reason) { + super(PacketOpcodes.PlayerApplyEnterMpResultNotify); - PlayerApplyEnterMpResultNotify proto = PlayerApplyEnterMpResultNotify.newBuilder() - .setTargetUid(target.getUid()) - .setTargetNickname(target.getNickname()) - .setIsAgreed(isAgreed) - .setReason(reason) - .build(); + PlayerApplyEnterMpResultNotify proto = PlayerApplyEnterMpResultNotify.newBuilder() + .setTargetUid(target.getUid()) + .setTargetNickname(target.getNickname()) + .setIsAgreed(isAgreed) + .setReason(reason) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketPlayerApplyEnterMpResultNotify(int targetId, String targetName, boolean isAgreed, PlayerApplyEnterMpResultNotify.Reason reason) { - super(PacketOpcodes.PlayerApplyEnterMpResultNotify); + public PacketPlayerApplyEnterMpResultNotify(int targetId, String targetName, boolean isAgreed, PlayerApplyEnterMpResultNotify.Reason reason) { + super(PacketOpcodes.PlayerApplyEnterMpResultNotify); - PlayerApplyEnterMpResultNotify proto = PlayerApplyEnterMpResultNotify.newBuilder() - .setTargetUid(targetId) - .setTargetNickname(targetName) - .setIsAgreed(isAgreed) - .setReason(reason) - .build(); + PlayerApplyEnterMpResultNotify proto = PlayerApplyEnterMpResultNotify.newBuilder() + .setTargetUid(targetId) + .setTargetNickname(targetName) + .setIsAgreed(isAgreed) + .setReason(reason) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultRsp.java index 94fcb3150..3272540e3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpResultRsp.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerApplyEnterMpResultRspOuterClass.PlayerApplyEnterMpResultRsp; public class PacketPlayerApplyEnterMpResultRsp extends BasePacket { - - public PacketPlayerApplyEnterMpResultRsp(int applyUid, boolean isAgreed) { - super(PacketOpcodes.PlayerApplyEnterMpResultRsp); - PlayerApplyEnterMpResultRsp proto = PlayerApplyEnterMpResultRsp.newBuilder() - .setApplyUid(applyUid) - .setIsAgreed(isAgreed) - .build(); - - this.setData(proto); - } + public PacketPlayerApplyEnterMpResultRsp(int applyUid, boolean isAgreed) { + super(PacketOpcodes.PlayerApplyEnterMpResultRsp); + + PlayerApplyEnterMpResultRsp proto = PlayerApplyEnterMpResultRsp.newBuilder() + .setApplyUid(applyUid) + .setIsAgreed(isAgreed) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpRsp.java index 1dce6f8b5..911f72921 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerApplyEnterMpRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerApplyEnterMpRspOuterClass.PlayerApplyEnterMpRsp; public class PacketPlayerApplyEnterMpRsp extends BasePacket { - - public PacketPlayerApplyEnterMpRsp(int targetUid) { - super(PacketOpcodes.PlayerApplyEnterMpRsp); - - PlayerApplyEnterMpRsp proto = PlayerApplyEnterMpRsp.newBuilder() - .setTargetUid(targetUid) - .build(); - - this.setData(proto); - } + + public PacketPlayerApplyEnterMpRsp(int targetUid) { + super(PacketOpcodes.PlayerApplyEnterMpRsp); + + PlayerApplyEnterMpRsp proto = PlayerApplyEnterMpRsp.newBuilder() + .setTargetUid(targetUid) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatNotify.java index 6c73e4852..e0705a01c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatNotify.java @@ -8,54 +8,54 @@ import emu.grasscutter.net.proto.PlayerChatNotifyOuterClass.PlayerChatNotify; public class PacketPlayerChatNotify extends BasePacket { - public PacketPlayerChatNotify(Player sender, int channelId, String message) { - super(PacketOpcodes.PlayerChatNotify); + public PacketPlayerChatNotify(Player sender, int channelId, String message) { + super(PacketOpcodes.PlayerChatNotify); - ChatInfo info = ChatInfo.newBuilder() - .setTime((int) (System.currentTimeMillis() / 1000)) - .setUid(sender.getUid()) - .setText(message) - .build(); + ChatInfo info = ChatInfo.newBuilder() + .setTime((int) (System.currentTimeMillis() / 1000)) + .setUid(sender.getUid()) + .setText(message) + .build(); - PlayerChatNotify proto = PlayerChatNotify.newBuilder() - .setChannelId(channelId) - .setChatInfo(info) - .build(); + PlayerChatNotify proto = PlayerChatNotify.newBuilder() + .setChannelId(channelId) + .setChatInfo(info) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketPlayerChatNotify(Player sender, int channelId, int emote) { - super(PacketOpcodes.PlayerChatNotify); + public PacketPlayerChatNotify(Player sender, int channelId, int emote) { + super(PacketOpcodes.PlayerChatNotify); - ChatInfo info = ChatInfo.newBuilder() - .setTime((int) (System.currentTimeMillis() / 1000)) - .setUid(sender.getUid()) - .setIcon(emote) - .build(); + ChatInfo info = ChatInfo.newBuilder() + .setTime((int) (System.currentTimeMillis() / 1000)) + .setUid(sender.getUid()) + .setIcon(emote) + .build(); - PlayerChatNotify proto = PlayerChatNotify.newBuilder() - .setChannelId(channelId) - .setChatInfo(info) - .build(); + PlayerChatNotify proto = PlayerChatNotify.newBuilder() + .setChannelId(channelId) + .setChatInfo(info) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketPlayerChatNotify(Player sender, int channelId, ChatInfo.SystemHint systemHint) { - super(PacketOpcodes.PlayerChatNotify); + public PacketPlayerChatNotify(Player sender, int channelId, ChatInfo.SystemHint systemHint) { + super(PacketOpcodes.PlayerChatNotify); - ChatInfo info = ChatInfo.newBuilder() - .setTime((int) (System.currentTimeMillis() / 1000)) - .setUid(sender.getUid()) - .setSystemHint(systemHint) - .build(); + ChatInfo info = ChatInfo.newBuilder() + .setTime((int) (System.currentTimeMillis() / 1000)) + .setUid(sender.getUid()) + .setSystemHint(systemHint) + .build(); - PlayerChatNotify proto = PlayerChatNotify.newBuilder() - .setChannelId(channelId) - .setChatInfo(info) - .build(); + PlayerChatNotify proto = PlayerChatNotify.newBuilder() + .setChannelId(channelId) + .setChatInfo(info) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatRsp.java index 9dbda6c88..abf86cac0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerChatRsp.java @@ -5,12 +5,12 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerChatRspOuterClass.PlayerChatRsp; public class PacketPlayerChatRsp extends BasePacket { - - public PacketPlayerChatRsp() { - super(PacketOpcodes.PlayerChatRsp); - - PlayerChatRsp proto = PlayerChatRsp.newBuilder().build(); - - this.setData(proto); - } + + public PacketPlayerChatRsp() { + super(PacketOpcodes.PlayerChatRsp); + + PlayerChatRsp proto = PlayerChatRsp.newBuilder().build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCompoundMaterialRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCompoundMaterialRsp.java index c3cd4edb6..714b5daa4 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCompoundMaterialRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCompoundMaterialRsp.java @@ -23,6 +23,7 @@ public class PacketPlayerCompoundMaterialRsp extends BasePacket { /** * Builder for failed message. + * * @param retcode error code */ public PacketPlayerCompoundMaterialRsp(int retcode) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookArgsRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookArgsRsp.java index bfdbe3347..684006268 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookArgsRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookArgsRsp.java @@ -5,7 +5,7 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerCookArgsRspOuterClass.PlayerCookArgsRsp; public class PacketPlayerCookArgsRsp extends BasePacket { - + public PacketPlayerCookArgsRsp() { super(PacketOpcodes.PlayerCookArgsRsp); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookRsp.java index 5720e3a5a..64396bf73 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerCookRsp.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; @@ -10,6 +8,8 @@ import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.PlayerCookRspOuterClass.PlayerCookRsp; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; +import java.util.List; + public class PacketPlayerCookRsp extends BasePacket { public PacketPlayerCookRsp(Retcode retcode) { super(PacketOpcodes.PlayerCookRsp); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerDataNotify.java index 81da25821..d31714cc9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerDataNotify.java @@ -7,20 +7,20 @@ import emu.grasscutter.net.proto.PlayerDataNotifyOuterClass.PlayerDataNotify; import emu.grasscutter.net.proto.PropValueOuterClass.PropValue; public class PacketPlayerDataNotify extends BasePacket { - - public PacketPlayerDataNotify(Player player) { - super(PacketOpcodes.PlayerDataNotify, 2); - - PlayerDataNotify.Builder p = PlayerDataNotify.newBuilder() - .setNickName(player.getNickname()) - .setServerTime(System.currentTimeMillis()) - .setIsFirstLoginToday(true) - .setRegionId(player.getRegionId()); - - player.getProperties().forEach((key, value) -> { - p.putPropMap(key, PropValue.newBuilder().setType(key).setIval(value).setVal(value).build()); - }); - this.setData(p.build()); - } + public PacketPlayerDataNotify(Player player) { + super(PacketOpcodes.PlayerDataNotify, 2); + + PlayerDataNotify.Builder p = PlayerDataNotify.newBuilder() + .setNickName(player.getNickname()) + .setServerTime(System.currentTimeMillis()) + .setIsFirstLoginToday(true) + .setRegionId(player.getRegionId()); + + player.getProperties().forEach((key, value) -> { + p.putPropMap(key, PropValue.newBuilder().setType(key).setIval(value).setVal(value).build()); + }); + + this.setData(p.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterDungeonRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterDungeonRsp.java index 913ca109e..cbf7b4838 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterDungeonRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterDungeonRsp.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerEnterDungeonRspOuterClass.PlayerEnterDungeonRsp; public class PacketPlayerEnterDungeonRsp extends BasePacket { - - public PacketPlayerEnterDungeonRsp(int pointId, int dungeonId) { - super(PacketOpcodes.PlayerEnterDungeonRsp); - - PlayerEnterDungeonRsp proto = PlayerEnterDungeonRsp.newBuilder() - .setPointId(pointId) - .setDungeonId(dungeonId) - .build(); - - this.setData(proto); - } + + public PacketPlayerEnterDungeonRsp(int pointId, int dungeonId) { + super(PacketOpcodes.PlayerEnterDungeonRsp); + + PlayerEnterDungeonRsp proto = PlayerEnterDungeonRsp.newBuilder() + .setPointId(pointId) + .setDungeonId(dungeonId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneInfoNotify.java index c0bc5abe1..deb6115b1 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneInfoNotify.java @@ -13,45 +13,45 @@ import emu.grasscutter.net.proto.PlayerEnterSceneInfoNotifyOuterClass.PlayerEnte import emu.grasscutter.net.proto.TeamEnterSceneInfoOuterClass.TeamEnterSceneInfo; public class PacketPlayerEnterSceneInfoNotify extends BasePacket { - - public PacketPlayerEnterSceneInfoNotify(Player player) { - super(PacketOpcodes.PlayerEnterSceneInfoNotify); - - AbilitySyncStateInfo empty = AbilitySyncStateInfo.newBuilder().build(); - PlayerEnterSceneInfoNotify.Builder proto = PlayerEnterSceneInfoNotify.newBuilder() - .setCurAvatarEntityId(player.getTeamManager().getCurrentAvatarEntity().getId()) - .setEnterSceneToken(player.getEnterSceneToken()); - - proto.setTeamEnterInfo( - TeamEnterSceneInfo.newBuilder() - .setTeamEntityId(player.getTeamManager().getEntityId()) // 150995833 - .setTeamAbilityInfo(empty) - .setAbilityControlBlock(AbilityControlBlockOuterClass.AbilityControlBlock.newBuilder().build()) - ); - proto.setMpLevelEntityInfo( - MPLevelEntityInfo.newBuilder() - .setEntityId(player.getWorld().getLevelEntityId()) // 184550274 - .setAuthorityPeerId(player.getWorld().getHostPeerId()) - .setAbilityInfo(empty) - ); - - for (EntityAvatar avatarEntity : player.getTeamManager().getActiveTeam()) { - GameItem weapon = avatarEntity.getAvatar().getWeapon(); - long weaponGuid = weapon != null ? weapon.getGuid() : 0; - - AvatarEnterSceneInfo avatarInfo = AvatarEnterSceneInfo.newBuilder() - .setAvatarGuid(avatarEntity.getAvatar().getGuid()) - .setAvatarEntityId(avatarEntity.getId()) - .setWeaponGuid(weaponGuid) - .setWeaponEntityId(avatarEntity.getWeaponEntityId()) - .setAvatarAbilityInfo(empty) - .setWeaponAbilityInfo(empty) - .build(); - - proto.addAvatarEnterInfo(avatarInfo); - } - - this.setData(proto.build()); - } + public PacketPlayerEnterSceneInfoNotify(Player player) { + super(PacketOpcodes.PlayerEnterSceneInfoNotify); + + AbilitySyncStateInfo empty = AbilitySyncStateInfo.newBuilder().build(); + + PlayerEnterSceneInfoNotify.Builder proto = PlayerEnterSceneInfoNotify.newBuilder() + .setCurAvatarEntityId(player.getTeamManager().getCurrentAvatarEntity().getId()) + .setEnterSceneToken(player.getEnterSceneToken()); + + proto.setTeamEnterInfo( + TeamEnterSceneInfo.newBuilder() + .setTeamEntityId(player.getTeamManager().getEntityId()) // 150995833 + .setTeamAbilityInfo(empty) + .setAbilityControlBlock(AbilityControlBlockOuterClass.AbilityControlBlock.newBuilder().build()) + ); + proto.setMpLevelEntityInfo( + MPLevelEntityInfo.newBuilder() + .setEntityId(player.getWorld().getLevelEntityId()) // 184550274 + .setAuthorityPeerId(player.getWorld().getHostPeerId()) + .setAbilityInfo(empty) + ); + + for (EntityAvatar avatarEntity : player.getTeamManager().getActiveTeam()) { + GameItem weapon = avatarEntity.getAvatar().getWeapon(); + long weaponGuid = weapon != null ? weapon.getGuid() : 0; + + AvatarEnterSceneInfo avatarInfo = AvatarEnterSceneInfo.newBuilder() + .setAvatarGuid(avatarEntity.getAvatar().getGuid()) + .setAvatarEntityId(avatarEntity.getId()) + .setWeaponGuid(weaponGuid) + .setWeaponEntityId(avatarEntity.getWeaponEntityId()) + .setAvatarAbilityInfo(empty) + .setWeaponAbilityInfo(empty) + .build(); + + proto.addAvatarEnterInfo(avatarInfo); + } + + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java index a852d9574..ba387c186 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java @@ -20,17 +20,17 @@ public class PacketPlayerEnterSceneNotify extends BasePacket { player.setEnterSceneToken(Utils.randomRange(1000, 99999)); PlayerEnterSceneNotify.Builder proto = PlayerEnterSceneNotify.newBuilder() - .setSceneId(player.getSceneId()) - .setPos(player.getPosition().toProto()) - .setSceneBeginTime(System.currentTimeMillis()) - .setType(EnterType.ENTER_TYPE_SELF) - .setTargetUid(player.getUid()) - .setEnterSceneToken(player.getEnterSceneToken()) - .setWorldLevel(player.getWorldLevel()) - .setEnterReason(EnterReason.Login.getValue()) - .setIsFirstLoginEnterScene(player.isFirstLoginEnterScene()) - .setWorldType(1) - .setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402); + .setSceneId(player.getSceneId()) + .setPos(player.getPosition().toProto()) + .setSceneBeginTime(System.currentTimeMillis()) + .setType(EnterType.ENTER_TYPE_SELF) + .setTargetUid(player.getUid()) + .setEnterSceneToken(player.getEnterSceneToken()) + .setWorldLevel(player.getWorldLevel()) + .setEnterReason(EnterReason.Login.getValue()) + .setIsFirstLoginEnterScene(player.isFirstLoginEnterScene()) + .setWorldType(1) + .setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402); this.setData(proto); } @@ -44,7 +44,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket { super(PacketOpcodes.PlayerEnterSceneNotify); // Set previous position - if(!(newScene == 3)){ // Hardcoded for now else weird positions will occur + if (!(newScene == 3)) { // Hardcoded for now else weird positions will occur // Don't update position within same scene or teapot } else { // Only used for exiting teapot currently @@ -55,18 +55,18 @@ public class PacketPlayerEnterSceneNotify extends BasePacket { player.setEnterSceneToken(Utils.randomRange(1000, 99999)); PlayerEnterSceneNotify.Builder proto = PlayerEnterSceneNotify.newBuilder() - .setPrevSceneId(player.getSceneId()) - .setPrevPos(player.getPosition().toProto()) - .setSceneId(newScene) - .setPos(newPos.toProto()) - .setSceneBeginTime(System.currentTimeMillis()) - .setType(type) - .setTargetUid(target.getUid()) - .setEnterSceneToken(player.getEnterSceneToken()) - .setWorldLevel(target.getWorld().getWorldLevel()) - .setEnterReason(reason.getValue()) - .setWorldType(1) - .setSceneTransaction(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402); + .setPrevSceneId(player.getSceneId()) + .setPrevPos(player.getPosition().toProto()) + .setSceneId(newScene) + .setPos(newPos.toProto()) + .setSceneBeginTime(System.currentTimeMillis()) + .setType(type) + .setTargetUid(target.getUid()) + .setEnterSceneToken(player.getEnterSceneToken()) + .setWorldLevel(target.getWorld().getWorldLevel()) + .setEnterReason(reason.getValue()) + .setWorldType(1) + .setSceneTransaction(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGameTimeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGameTimeNotify.java index 51bcef3a5..62f8b4576 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGameTimeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGameTimeNotify.java @@ -1,21 +1,20 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.world.World; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerGameTimeNotifyOuterClass.PlayerGameTimeNotify; public class PacketPlayerGameTimeNotify extends BasePacket { - - public PacketPlayerGameTimeNotify(Player player) { - super(PacketOpcodes.PlayerGameTimeNotify); - - PlayerGameTimeNotify proto = PlayerGameTimeNotify.newBuilder() - .setGameTime(player.getScene().getTime()) - .setUid(player.getUid()) - .build(); - - this.setData(proto); - } + + public PacketPlayerGameTimeNotify(Player player) { + super(PacketOpcodes.PlayerGameTimeNotify); + + PlayerGameTimeNotify proto = PlayerGameTimeNotify.newBuilder() + .setGameTime(player.getScene().getTime()) + .setUid(player.getUid()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGetForceQuitBanInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGetForceQuitBanInfoRsp.java index 057f9f005..c079517a5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGetForceQuitBanInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerGetForceQuitBanInfoRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerGetForceQuitBanInfoRspOuterClass.PlayerGetForceQuitBanInfoRsp; public class PacketPlayerGetForceQuitBanInfoRsp extends BasePacket { - - public PacketPlayerGetForceQuitBanInfoRsp(int retcode) { - super(PacketOpcodes.PlayerGetForceQuitBanInfoRsp); - PlayerGetForceQuitBanInfoRsp proto = PlayerGetForceQuitBanInfoRsp.newBuilder() - .setRetcode(retcode) - .build(); - - this.setData(proto); - } + public PacketPlayerGetForceQuitBanInfoRsp(int retcode) { + super(PacketOpcodes.PlayerGetForceQuitBanInfoRsp); + + PlayerGetForceQuitBanInfoRsp proto = PlayerGetForceQuitBanInfoRsp.newBuilder() + .setRetcode(retcode) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerHomeCompInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerHomeCompInfoNotify.java index 0560fe062..e6e4e96bc 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerHomeCompInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerHomeCompInfoNotify.java @@ -17,15 +17,15 @@ public class PacketPlayerHomeCompInfoNotify extends BasePacket { } PlayerHomeCompInfoNotifyOuterClass.PlayerHomeCompInfoNotify proto = PlayerHomeCompInfoNotifyOuterClass.PlayerHomeCompInfoNotify.newBuilder() - .setCompInfo( - PlayerHomeCompInfoOuterClass.PlayerHomeCompInfo.newBuilder() - .addAllUnlockedModuleIdList(player.getRealmList()) - .addAllSeenModuleIdList(player.getSeenRealmList()) - .addAllLevelupRewardGotLevelList(player.getHomeRewardedLevels()) - .setFriendEnterHomeOptionValue(player.getHome().getEnterHomeOption()) - .build() - ) - .build(); + .setCompInfo( + PlayerHomeCompInfoOuterClass.PlayerHomeCompInfo.newBuilder() + .addAllUnlockedModuleIdList(player.getRealmList()) + .addAllSeenModuleIdList(player.getSeenRealmList()) + .addAllLevelupRewardGotLevelList(player.getHomeRewardedLevels()) + .setFriendEnterHomeOptionValue(player.getHome().getEnterHomeOption()) + .build() + ) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLevelRewardUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLevelRewardUpdateNotify.java index 972e507c9..c245168ba 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLevelRewardUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLevelRewardUpdateNotify.java @@ -1,22 +1,22 @@ -package emu.grasscutter.server.packet.send; - -import java.util.Set; - -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.PlayerLevelRewardUpdateNotifyOuterClass.PlayerLevelRewardUpdateNotify; - -public class PacketPlayerLevelRewardUpdateNotify extends BasePacket { - - public PacketPlayerLevelRewardUpdateNotify(Set rewardedLevels) { - super(PacketOpcodes.PlayerLevelRewardUpdateNotify); - - PlayerLevelRewardUpdateNotify.Builder proto = PlayerLevelRewardUpdateNotify.newBuilder(); - - for (Integer level : rewardedLevels) { - proto.addLevelList(level); - } - - this.setData(proto.build()); - } -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.PlayerLevelRewardUpdateNotifyOuterClass.PlayerLevelRewardUpdateNotify; + +import java.util.Set; + +public class PacketPlayerLevelRewardUpdateNotify extends BasePacket { + + public PacketPlayerLevelRewardUpdateNotify(Set rewardedLevels) { + super(PacketOpcodes.PlayerLevelRewardUpdateNotify); + + PlayerLevelRewardUpdateNotify.Builder proto = PlayerLevelRewardUpdateNotify.newBuilder(); + + for (Integer level : rewardedLevels) { + proto.addLevelList(level); + } + + this.setData(proto.build()); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java index 696e8cd2a..112d5d996 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java @@ -11,14 +11,11 @@ import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.http.dispatch.RegionHandler; import emu.grasscutter.utils.Crypto; -import emu.grasscutter.utils.FileUtils; + +import java.util.Objects; import static emu.grasscutter.config.Configuration.*; -import java.io.File; -import java.util.Base64; -import java.util.Objects; - public class PacketPlayerLoginRsp extends BasePacket { private static QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp regionCache; @@ -35,10 +32,10 @@ public class PacketPlayerLoginRsp extends BasePacket { try { // todo: we might want to push custom config to client RegionInfo serverRegion = RegionInfo.newBuilder() - .setGateserverIp(lr(GAME_INFO.accessAddress, GAME_INFO.bindAddress)) - .setGateserverPort(lr(GAME_INFO.accessPort, GAME_INFO.bindPort)) - .setSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) - .build(); + .setGateserverIp(lr(GAME_INFO.accessAddress, GAME_INFO.bindAddress)) + .setGateserverPort(lr(GAME_INFO.accessPort, GAME_INFO.bindPort)) + .setSecretKey(ByteString.copyFrom(Crypto.DISPATCH_SEED)) + .build(); regionCache = QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp.newBuilder().setRegionInfo(serverRegion).build(); } catch (Exception e) { @@ -52,21 +49,21 @@ public class PacketPlayerLoginRsp extends BasePacket { } PlayerLoginRsp p = PlayerLoginRsp.newBuilder() - .setIsUseAbilityHash(true) // true - .setAbilityHashCode(1844674) // 1844674 - .setGameBiz("hk4e_global") - .setClientDataVersion(info.getClientDataVersion()) - .setClientSilenceDataVersion(info.getClientSilenceDataVersion()) - .setClientMd5(info.getClientDataMd5()) - .setClientSilenceMd5(info.getClientSilenceDataMd5()) - .setResVersionConfig(info.getResVersionConfig()) - .setClientVersionSuffix(info.getClientVersionSuffix()) - .setClientSilenceVersionSuffix(info.getClientSilenceVersionSuffix()) - .setIsScOpen(false) - //.setScInfo(ByteString.copyFrom(new byte[] {})) - .setRegisterCps("mihoyo") - .setCountryCode("US") - .build(); + .setIsUseAbilityHash(true) // true + .setAbilityHashCode(1844674) // 1844674 + .setGameBiz("hk4e_global") + .setClientDataVersion(info.getClientDataVersion()) + .setClientSilenceDataVersion(info.getClientSilenceDataVersion()) + .setClientMd5(info.getClientDataMd5()) + .setClientSilenceMd5(info.getClientSilenceDataMd5()) + .setResVersionConfig(info.getResVersionConfig()) + .setClientVersionSuffix(info.getClientVersionSuffix()) + .setClientSilenceVersionSuffix(info.getClientSilenceVersionSuffix()) + .setIsScOpen(false) + //.setScInfo(ByteString.copyFrom(new byte[] {})) + .setRegisterCps("mihoyo") + .setCountryCode("US") + .build(); this.setData(p.toByteArray()); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeNotify.java index 64975ab17..34043e3d4 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeNotify.java @@ -5,7 +5,6 @@ import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerPropChangeNotifyOuterClass.PlayerPropChangeNotify; -import emu.grasscutter.utils.ProtoHelper; public class PacketPlayerPropChangeNotify extends BasePacket { @@ -15,9 +14,9 @@ public class PacketPlayerPropChangeNotify extends BasePacket { this.buildHeader(0); PlayerPropChangeNotify proto = PlayerPropChangeNotify.newBuilder() - .setPropType(prop.getId()) - .setPropDelta(delta) - .build(); + .setPropType(prop.getId()) + .setPropDelta(delta) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeReasonNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeReasonNotify.java index 6ec34028c..9d078b38f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeReasonNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropChangeReasonNotify.java @@ -15,11 +15,11 @@ public class PacketPlayerPropChangeReasonNotify extends BasePacket { this.buildHeader(0); PlayerPropChangeReasonNotify proto = PlayerPropChangeReasonNotify.newBuilder() - .setPropType(prop.getId()) - .setReason(changeReason) - .setOldValue(oldValue) - .setCurValue(newValue) - .build(); + .setPropType(prop.getId()) + .setReason(changeReason) + .setOldValue(oldValue) + .setCurValue(newValue) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropNotify.java index 4cd708045..aff67639f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerPropNotify.java @@ -8,16 +8,16 @@ import emu.grasscutter.net.proto.PlayerPropNotifyOuterClass.PlayerPropNotify; import emu.grasscutter.utils.ProtoHelper; public class PacketPlayerPropNotify extends BasePacket { - - public PacketPlayerPropNotify(Player player, PlayerProperty prop) { - super(PacketOpcodes.PlayerPropNotify); - - this.buildHeader(0); - - PlayerPropNotify proto = PlayerPropNotify.newBuilder() - .putPropMap(prop.getId(), ProtoHelper.newPropValue(prop, player.getProperty(prop))) - .build(); - - this.setData(proto); - } + + public PacketPlayerPropNotify(Player player, PlayerProperty prop) { + super(PacketOpcodes.PlayerPropNotify); + + this.buildHeader(0); + + PlayerPropNotify proto = PlayerPropNotify.newBuilder() + .putPropMap(prop.getId(), ProtoHelper.newPropValue(prop, player.getProperty(prop))) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerSetPauseRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerSetPauseRsp.java index 7f79c629a..844c1496e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerSetPauseRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerSetPauseRsp.java @@ -5,9 +5,9 @@ import emu.grasscutter.net.packet.PacketOpcodes; public class PacketPlayerSetPauseRsp extends BasePacket { - public PacketPlayerSetPauseRsp(int clientSequence) { - super(PacketOpcodes.PlayerSetPauseRsp); - - this.buildHeader(clientSequence); - } + public PacketPlayerSetPauseRsp(int clientSequence) { + super(PacketOpcodes.PlayerSetPauseRsp); + + this.buildHeader(clientSequence); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java index 0445d068a..ba02b8a13 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import static emu.grasscutter.config.Configuration.*; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; @@ -10,6 +8,8 @@ import emu.grasscutter.net.proto.ItemOuterClass.Item; import emu.grasscutter.net.proto.PlayerStoreNotifyOuterClass.PlayerStoreNotify; import emu.grasscutter.net.proto.StoreTypeOuterClass.StoreType; +import static emu.grasscutter.config.Configuration.GAME_OPTIONS; + public class PacketPlayerStoreNotify extends BasePacket { public PacketPlayerStoreNotify(Player player) { @@ -18,8 +18,8 @@ public class PacketPlayerStoreNotify extends BasePacket { this.buildHeader(2); PlayerStoreNotify.Builder p = PlayerStoreNotify.newBuilder() - .setStoreType(StoreType.STORE_TYPE_PACK) - .setWeightLimit(GAME_OPTIONS.inventoryLimits.all); + .setStoreType(StoreType.STORE_TYPE_PACK) + .setWeightLimit(GAME_OPTIONS.inventoryLimits.all); for (GameItem item : player.getInventory()) { Item itemProto = item.toProto(); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerTimeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerTimeNotify.java index 9bd2a1f08..650fe017c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerTimeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerTimeNotify.java @@ -6,16 +6,16 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerTimeNotifyOuterClass.PlayerTimeNotify; public class PacketPlayerTimeNotify extends BasePacket { - - public PacketPlayerTimeNotify(Player player) { - super(PacketOpcodes.PlayerTimeNotify); - PlayerTimeNotify proto = PlayerTimeNotify.newBuilder() - .setIsPaused(player.isPaused()) - .setPlayerTime(player.getClientTime()) - .setServerTime(System.currentTimeMillis()) - .build(); - - this.setData(proto); - } + public PacketPlayerTimeNotify(Player player) { + super(PacketOpcodes.PlayerTimeNotify); + + PlayerTimeNotify proto = PlayerTimeNotify.newBuilder() + .setIsPaused(player.isPaused()) + .setPlayerTime(player.getClientTime()) + .setServerTime(System.currentTimeMillis()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerWorldSceneInfoListNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerWorldSceneInfoListNotify.java index 8b2fc2e31..ce5aed216 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerWorldSceneInfoListNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerWorldSceneInfoListNotify.java @@ -1,85 +1,84 @@ package emu.grasscutter.server.packet.send; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerWorldSceneInfoListNotifyOuterClass.PlayerWorldSceneInfoListNotify; import emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass.PlayerWorldSceneInfo; +import java.util.stream.IntStream; + public class PacketPlayerWorldSceneInfoListNotify extends BasePacket { public PacketPlayerWorldSceneInfoListNotify() { super(PacketOpcodes.PlayerWorldSceneInfoListNotify); // Rename opcode later PlayerWorldSceneInfoListNotify.Builder proto = PlayerWorldSceneInfoListNotify.newBuilder() - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(1) - .setIsLocked(false) - .build() - ) - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(3) - .setIsLocked(false) - .addSceneTagIdList(102) // Jade chamber - .addSceneTagIdList(113) - .addSceneTagIdList(117) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(1) + .setIsLocked(false) + .build() + ) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(3) + .setIsLocked(false) + .addSceneTagIdList(102) // Jade chamber + .addSceneTagIdList(113) + .addSceneTagIdList(117) - // Vanarana (Sumeru tree) - .addSceneTagIdList(1093) // Vana_real - // .addSceneTagIdList(1094) // Vana_dream - // .addSceneTagIdList(1095) // Vana_first - // .addSceneTagIdList(1096) // Vana_festival + // Vanarana (Sumeru tree) + .addSceneTagIdList(1093) // Vana_real + // .addSceneTagIdList(1094) // Vana_dream + // .addSceneTagIdList(1095) // Vana_first + // .addSceneTagIdList(1096) // Vana_festival - // 3.1 event - .addSceneTagIdList(152) - .addSceneTagIdList(153) + // 3.1 event + .addSceneTagIdList(152) + .addSceneTagIdList(153) - // Pyramid - .addSceneTagIdList(1164) // Arena (XMSM_CWLTop) - .addSceneTagIdList(1166) // Pyramid (CWL_Trans_02) + // Pyramid + .addSceneTagIdList(1164) // Arena (XMSM_CWLTop) + .addSceneTagIdList(1166) // Pyramid (CWL_Trans_02) - // Brute force - //.addAllSceneTagIdList(IntStream.range(1150, 1250).boxed().toList()) - .build() - ) - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(4) - .setIsLocked(false) - .addSceneTagIdList(106) - .addSceneTagIdList(109) - .addSceneTagIdList(117) - .build() - ) - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(5) - .setIsLocked(false) - .build() - ) - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(6) - .setIsLocked(false) - .build() - ) - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(7) - .setIsLocked(false) - .build() - ) - .addInfoList( - PlayerWorldSceneInfo.newBuilder() - .setSceneId(9) - .setIsLocked(false) - .addAllSceneTagIdList(IntStream.range(0, 3000).boxed().toList()) - .build() - ); + // Brute force + //.addAllSceneTagIdList(IntStream.range(1150, 1250).boxed().toList()) + .build() + ) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(4) + .setIsLocked(false) + .addSceneTagIdList(106) + .addSceneTagIdList(109) + .addSceneTagIdList(117) + .build() + ) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(5) + .setIsLocked(false) + .build() + ) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(6) + .setIsLocked(false) + .build() + ) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(7) + .setIsLocked(false) + .build() + ) + .addInfoList( + PlayerWorldSceneInfo.newBuilder() + .setSceneId(9) + .setIsLocked(false) + .addAllSceneTagIdList(IntStream.range(0, 3000).boxed().toList()) + .build() + ); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPostEnterSceneRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPostEnterSceneRsp.java index 2bdc30dbc..d220c6480 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPostEnterSceneRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPostEnterSceneRsp.java @@ -7,13 +7,13 @@ import emu.grasscutter.net.proto.PostEnterSceneRspOuterClass.PostEnterSceneRsp; public class PacketPostEnterSceneRsp extends BasePacket { - public PacketPostEnterSceneRsp(Player player) { - super(PacketOpcodes.PostEnterSceneRsp); - - PostEnterSceneRsp p = PostEnterSceneRsp.newBuilder() - .setEnterSceneToken(player.getEnterSceneToken()) - .build(); - - this.setData(p); - } + public PacketPostEnterSceneRsp(Player player) { + super(PacketOpcodes.PostEnterSceneRsp); + + PostEnterSceneRsp p = PostEnterSceneRsp.newBuilder() + .setEnterSceneToken(player.getEnterSceneToken()) + .build(); + + this.setData(p); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPrivateChatNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPrivateChatNotify.java index 56516f6cc..1f50d48f9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPrivateChatNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPrivateChatNotify.java @@ -6,22 +6,22 @@ import emu.grasscutter.net.proto.ChatInfoOuterClass.ChatInfo; import emu.grasscutter.net.proto.PrivateChatNotifyOuterClass.PrivateChatNotify; public class PacketPrivateChatNotify extends BasePacket { - private ChatInfo info; + private final ChatInfo info; public PacketPrivateChatNotify(int senderId, int recvId, String message) { super(PacketOpcodes.PrivateChatNotify); ChatInfo info = ChatInfo.newBuilder() - .setTime((int) (System.currentTimeMillis() / 1000)) - .setUid(senderId) - .setToUid(recvId) - .setText(message) - .build(); + .setTime((int) (System.currentTimeMillis() / 1000)) + .setUid(senderId) + .setToUid(recvId) + .setText(message) + .build(); this.info = info; PrivateChatNotify proto = PrivateChatNotify.newBuilder() - .setChatInfo(info) - .build(); + .setChatInfo(info) + .build(); this.setData(proto); } @@ -30,16 +30,16 @@ public class PacketPrivateChatNotify extends BasePacket { super(PacketOpcodes.PrivateChatNotify); ChatInfo info = ChatInfo.newBuilder() - .setTime((int) (System.currentTimeMillis() / 1000)) - .setUid(senderId) - .setToUid(recvId) - .setIcon(emote) - .build(); + .setTime((int) (System.currentTimeMillis() / 1000)) + .setUid(senderId) + .setToUid(recvId) + .setIcon(emote) + .build(); this.info = info; PrivateChatNotify proto = PrivateChatNotify.newBuilder() - .setChatInfo(info) - .build(); + .setChatInfo(info) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillChangeNotify.java index 0ba63718a..7b5cc8dfc 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillChangeNotify.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ProudSkillChangeNotifyOuterClass.ProudSkillChangeNotify; public class PacketProudSkillChangeNotify extends BasePacket { - - public PacketProudSkillChangeNotify(Avatar avatar) { - super(PacketOpcodes.ProudSkillChangeNotify); - - ProudSkillChangeNotify proto = ProudSkillChangeNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setEntityId(avatar.getEntityId()) - .setSkillDepotId(avatar.getSkillDepotId()) - .addAllProudSkillList(avatar.getProudSkillList()) - .build(); - - this.setData(proto); - } + + public PacketProudSkillChangeNotify(Avatar avatar) { + super(PacketOpcodes.ProudSkillChangeNotify); + + ProudSkillChangeNotify proto = ProudSkillChangeNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setEntityId(avatar.getEntityId()) + .setSkillDepotId(avatar.getSkillDepotId()) + .addAllProudSkillList(avatar.getProudSkillList()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillExtraLevelNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillExtraLevelNotify.java index 2c8ac7867..3dd739f1a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillExtraLevelNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketProudSkillExtraLevelNotify.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ProudSkillExtraLevelNotifyOuterClass.ProudSkillExtraLevelNotify; public class PacketProudSkillExtraLevelNotify extends BasePacket { - - public PacketProudSkillExtraLevelNotify(Avatar avatar, int talentIndex) { - super(PacketOpcodes.ProudSkillExtraLevelNotify); - ProudSkillExtraLevelNotify proto = ProudSkillExtraLevelNotify.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setTalentType(3) // Talent type = 3 - .setTalentIndex(talentIndex) - .setExtraLevel(3) - .build(); - - this.setData(proto); - } + public PacketProudSkillExtraLevelNotify(Avatar avatar, int talentIndex) { + super(PacketOpcodes.ProudSkillExtraLevelNotify); + + ProudSkillExtraLevelNotify proto = ProudSkillExtraLevelNotify.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setTalentType(3) // Talent type = 3 + .setTalentIndex(talentIndex) + .setExtraLevel(3) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPullPrivateChatRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPullPrivateChatRsp.java index 3bdf90f6e..f93899c10 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPullPrivateChatRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPullPrivateChatRsp.java @@ -1,13 +1,13 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChatInfoOuterClass.ChatInfo; import emu.grasscutter.net.proto.PullPrivateChatRspOuterClass.PullPrivateChatRsp; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; +import java.util.List; + public class PacketPullPrivateChatRsp extends BasePacket { public PacketPullPrivateChatRsp(List history) { @@ -17,8 +17,7 @@ public class PacketPullPrivateChatRsp extends BasePacket { if (history == null) { builder.setRetcode(Retcode.RET_FAIL_VALUE); - } - else { + } else { for (var info : history) { builder.addChatInfo(info); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java index c24f20f5a..a56bb2371 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java @@ -1,14 +1,9 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.player.Player; -import emu.grasscutter.GameConstants; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ChatInfoOuterClass.ChatInfo; import emu.grasscutter.net.proto.PullRecentChatRspOuterClass.PullRecentChatRsp; -import emu.grasscutter.utils.Utils; - -import static emu.grasscutter.config.Configuration.*; import java.util.List; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketQueryPathRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketQueryPathRsp.java index c0362cd27..688df460f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketQueryPathRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketQueryPathRsp.java @@ -2,15 +2,15 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.PathStatusTypeOuterClass; import emu.grasscutter.net.proto.QueryPathReqOuterClass; import emu.grasscutter.net.proto.QueryPathRspOuterClass; -import emu.grasscutter.net.proto.PathStatusTypeOuterClass; public class PacketQueryPathRsp extends BasePacket { - public PacketQueryPathRsp(QueryPathReqOuterClass.QueryPathReq req) { - super(PacketOpcodes.QueryPathRsp); + public PacketQueryPathRsp(QueryPathReqOuterClass.QueryPathReq req) { + super(PacketOpcodes.QueryPathRsp); var proto = QueryPathRspOuterClass.QueryPathRsp.newBuilder(); @@ -18,8 +18,8 @@ public class PacketQueryPathRsp extends BasePacket { .addCorners(req.getDestinationPos(0)) .setQueryId(req.getQueryId()) .setQueryStatus(PathStatusTypeOuterClass.PathStatusType.PATH_STATUS_TYPE_SUCC); - //.setQueryStatus(QueryPathRspOuterClass.QueryPathRsp.PathStatusType.PATH_STATUS_TYPE_SUCC); + //.setQueryStatus(QueryPathRspOuterClass.QueryPathRsp.PathStatusType.PATH_STATUS_TYPE_SUCC); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListNotify.java index 12604d015..380a3a789 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListNotify.java @@ -1,8 +1,6 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.quest.GameMainQuest; -import emu.grasscutter.game.quest.QuestManager; import emu.grasscutter.game.quest.enums.QuestState; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListUpdateNotify.java index b4c770418..7e820c574 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestListUpdateNotify.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; @@ -14,8 +13,8 @@ public class PacketQuestListUpdateNotify extends BasePacket { super(PacketOpcodes.QuestListUpdateNotify); QuestListUpdateNotify proto = QuestListUpdateNotify.newBuilder() - .addQuestList(quest.toProto()) - .build(); + .addQuestList(quest.toProto()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestProgressUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestProgressUpdateNotify.java index dfec07bd3..85856e8d7 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestProgressUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestProgressUpdateNotify.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.quest.GameMainQuest; import emu.grasscutter.game.quest.GameQuest; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestUpdateQuestVarRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestUpdateQuestVarRsp.java index 22f672d28..fc788ebed 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketQuestUpdateQuestVarRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketQuestUpdateQuestVarRsp.java @@ -3,7 +3,6 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.QuestUpdateQuestVarReqOuterClass; import emu.grasscutter.net.proto.QuestUpdateQuestVarRspOuterClass; @Opcodes(PacketOpcodes.QuestUpdateQuestVarReq) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryDecomposeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryDecomposeRsp.java index f114dc4f7..66a1c7c6d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryDecomposeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryDecomposeRsp.java @@ -1,30 +1,30 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ReliquaryDecomposeRspOuterClass.ReliquaryDecomposeRsp; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; +import java.util.List; + public class PacketReliquaryDecomposeRsp extends BasePacket { - public PacketReliquaryDecomposeRsp(Retcode retcode) { - super(PacketOpcodes.ReliquaryDecomposeRsp); + public PacketReliquaryDecomposeRsp(Retcode retcode) { + super(PacketOpcodes.ReliquaryDecomposeRsp); - ReliquaryDecomposeRsp proto = ReliquaryDecomposeRsp.newBuilder() - .setRetcode(retcode.getNumber()) - .build(); - - this.setData(proto); - } + ReliquaryDecomposeRsp proto = ReliquaryDecomposeRsp.newBuilder() + .setRetcode(retcode.getNumber()) + .build(); - public PacketReliquaryDecomposeRsp(List output) { - super(PacketOpcodes.ReliquaryDecomposeRsp); + this.setData(proto); + } - ReliquaryDecomposeRsp proto = ReliquaryDecomposeRsp.newBuilder() - .addAllGuidList(output) - .build(); - - this.setData(proto); - } + public PacketReliquaryDecomposeRsp(List output) { + super(PacketOpcodes.ReliquaryDecomposeRsp); + + ReliquaryDecomposeRsp proto = ReliquaryDecomposeRsp.newBuilder() + .addAllGuidList(output) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryUpgradeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryUpgradeRsp.java index 14bd76fa6..266cb9b2b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryUpgradeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketReliquaryUpgradeRsp.java @@ -1,26 +1,26 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ReliquaryUpgradeRspOuterClass.ReliquaryUpgradeRsp; -public class PacketReliquaryUpgradeRsp extends BasePacket { - - public PacketReliquaryUpgradeRsp(GameItem relic, int rate, int oldLevel, List oldAppendPropIdList) { - super(PacketOpcodes.ReliquaryUpgradeRsp); +import java.util.List; - ReliquaryUpgradeRsp proto = ReliquaryUpgradeRsp.newBuilder() - .setTargetReliquaryGuid(relic.getGuid()) - .setOldLevel(oldLevel) - .setCurLevel(relic.getLevel()) - .setPowerUpRate(rate) - .addAllOldAppendPropList(oldAppendPropIdList) - .addAllCurAppendPropList(relic.getAppendPropIdList()) - .build(); - - this.setData(proto); - } +public class PacketReliquaryUpgradeRsp extends BasePacket { + + public PacketReliquaryUpgradeRsp(GameItem relic, int rate, int oldLevel, List oldAppendPropIdList) { + super(PacketOpcodes.ReliquaryUpgradeRsp); + + ReliquaryUpgradeRsp proto = ReliquaryUpgradeRsp.newBuilder() + .setTargetReliquaryGuid(relic.getGuid()) + .setOldLevel(oldLevel) + .setCurLevel(relic.getLevel()) + .setPowerUpRate(rate) + .addAllOldAppendPropList(oldAppendPropIdList) + .addAllCurAppendPropList(relic.getAppendPropIdList()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java index b61c1ab0a..8387edb7d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketResinChangeNotify.java @@ -7,17 +7,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ResinChangeNotifyOuterClass.ResinChangeNotify; public class PacketResinChangeNotify extends BasePacket { - - public PacketResinChangeNotify(Player player) { - super(PacketOpcodes.ResinChangeNotify); - - ResinChangeNotify proto = ResinChangeNotify.newBuilder() - .setCurValue(player.getProperty(PlayerProperty.PROP_PLAYER_RESIN)) - .setNextAddTimestamp(player.getNextResinRefresh()) - .build(); - // ToDo: Add ability to buy resin with primogems, has to be included here. - - this.setData(proto); - } + public PacketResinChangeNotify(Player player) { + super(PacketOpcodes.ResinChangeNotify); + + ResinChangeNotify proto = ResinChangeNotify.newBuilder() + .setCurValue(player.getProperty(PlayerProperty.PROP_PLAYER_RESIN)) + .setNextAddTimestamp(player.getNextResinRefresh()) + .build(); + + // ToDo: Add ability to buy resin with primogems, has to be included here. + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaUnlockNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaUnlockNotify.java index 848190aed..0aa51ce0e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaUnlockNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaUnlockNotify.java @@ -9,8 +9,8 @@ public class PacketSceneAreaUnlockNotify extends BasePacket { super(PacketOpcodes.SceneAreaUnlockNotify); SceneAreaUnlockNotify.Builder p = SceneAreaUnlockNotify.newBuilder() - .setSceneId(sceneId) - .addAreaList(areaId); + .setSceneId(sceneId) + .addAreaList(areaId); this.setData(p); } @@ -19,8 +19,8 @@ public class PacketSceneAreaUnlockNotify extends BasePacket { super(PacketOpcodes.SceneAreaUnlockNotify); SceneAreaUnlockNotify.Builder p = SceneAreaUnlockNotify.newBuilder() - .setSceneId(sceneId) - .addAllAreaList(areaIds); + .setSceneId(sceneId) + .addAllAreaList(areaIds); this.setData(p); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java index b49df5fef..03c2ead20 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java @@ -1,21 +1,20 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.world.World; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SceneAreaWeatherNotifyOuterClass.SceneAreaWeatherNotify; public class PacketSceneAreaWeatherNotify extends BasePacket { - - public PacketSceneAreaWeatherNotify(Player player) { - super(PacketOpcodes.SceneAreaWeatherNotify); - - SceneAreaWeatherNotify proto = SceneAreaWeatherNotify.newBuilder() - .setWeatherAreaId(player.getWeatherId()) - .setClimateType(player.getClimate().getValue()) - .build(); - - this.setData(proto); - } + + public PacketSceneAreaWeatherNotify(Player player) { + super(PacketOpcodes.SceneAreaWeatherNotify); + + SceneAreaWeatherNotify proto = SceneAreaWeatherNotify.newBuilder() + .setWeatherAreaId(player.getWeatherId()) + .setClimateType(player.getClimate().getValue()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityAppearNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityAppearNotify.java index 39bf4cadc..8c8f13a72 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityAppearNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityAppearNotify.java @@ -1,7 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; - import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; @@ -9,41 +7,43 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SceneEntityAppearNotifyOuterClass.SceneEntityAppearNotify; import emu.grasscutter.net.proto.VisionTypeOuterClass.VisionType; +import java.util.Collection; + public class PacketSceneEntityAppearNotify extends BasePacket { - - public PacketSceneEntityAppearNotify(GameEntity entity) { - super(PacketOpcodes.SceneEntityAppearNotify, true); - SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder() - .setAppearType(VisionType.VISION_TYPE_BORN) - .addEntityList(entity.toProto()); + public PacketSceneEntityAppearNotify(GameEntity entity) { + super(PacketOpcodes.SceneEntityAppearNotify, true); - this.setData(proto.build()); - } - - public PacketSceneEntityAppearNotify(GameEntity entity, VisionType vision, int param) { - super(PacketOpcodes.SceneEntityAppearNotify, true); + SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder() + .setAppearType(VisionType.VISION_TYPE_BORN) + .addEntityList(entity.toProto()); - SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder() - .setAppearType(vision) - .setParam(param) - .addEntityList(entity.toProto()); + this.setData(proto.build()); + } - this.setData(proto.build()); - } - - public PacketSceneEntityAppearNotify(Player player) { - this(player.getTeamManager().getCurrentAvatarEntity()); - } + public PacketSceneEntityAppearNotify(GameEntity entity, VisionType vision, int param) { + super(PacketOpcodes.SceneEntityAppearNotify, true); - public PacketSceneEntityAppearNotify(Collection entities, VisionType visionType) { - super(PacketOpcodes.SceneEntityAppearNotify, true); - - SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder() - .setAppearType(visionType); - - entities.forEach(e -> proto.addEntityList(e.toProto())); + SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder() + .setAppearType(vision) + .setParam(param) + .addEntityList(entity.toProto()); - this.setData(proto.build()); - } + this.setData(proto.build()); + } + + public PacketSceneEntityAppearNotify(Player player) { + this(player.getTeamManager().getCurrentAvatarEntity()); + } + + public PacketSceneEntityAppearNotify(Collection entities, VisionType visionType) { + super(PacketOpcodes.SceneEntityAppearNotify, true); + + SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder() + .setAppearType(visionType); + + entities.forEach(e -> proto.addEntityList(e.toProto())); + + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityDisappearNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityDisappearNotify.java index 49b334666..a6c78ce4f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityDisappearNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityDisappearNotify.java @@ -1,35 +1,34 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; -import java.util.List; - import emu.grasscutter.game.entity.GameEntity; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SceneEntityDisappearNotifyOuterClass.SceneEntityDisappearNotify; import emu.grasscutter.net.proto.VisionTypeOuterClass.VisionType; +import java.util.Collection; + public class PacketSceneEntityDisappearNotify extends BasePacket { - - public PacketSceneEntityDisappearNotify(GameEntity entity, VisionType disappearType) { - super(PacketOpcodes.SceneEntityDisappearNotify); - SceneEntityDisappearNotify proto = SceneEntityDisappearNotify.newBuilder() - .setDisappearType(disappearType) - .addEntityList(entity.getId()) - .build(); + public PacketSceneEntityDisappearNotify(GameEntity entity, VisionType disappearType) { + super(PacketOpcodes.SceneEntityDisappearNotify); - this.setData(proto); - } - - public PacketSceneEntityDisappearNotify(Collection entities, VisionType disappearType) { - super(PacketOpcodes.SceneEntityDisappearNotify); + SceneEntityDisappearNotify proto = SceneEntityDisappearNotify.newBuilder() + .setDisappearType(disappearType) + .addEntityList(entity.getId()) + .build(); - SceneEntityDisappearNotify.Builder proto = SceneEntityDisappearNotify.newBuilder() - .setDisappearType(disappearType); - - entities.forEach(e -> proto.addEntityList(e.getId())); + this.setData(proto); + } - this.setData(proto); - } + public PacketSceneEntityDisappearNotify(Collection entities, VisionType disappearType) { + super(PacketOpcodes.SceneEntityDisappearNotify); + + SceneEntityDisappearNotify.Builder proto = SceneEntityDisappearNotify.newBuilder() + .setDisappearType(disappearType); + + entities.forEach(e -> proto.addEntityList(e.getId())); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityMoveNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityMoveNotify.java index 8a64585dd..a89ee244b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityMoveNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneEntityMoveNotify.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.proto.EntityMoveInfoOuterClass.EntityMoveInfo; import emu.grasscutter.net.proto.SceneEntityMoveNotifyOuterClass.SceneEntityMoveNotify; public class PacketSceneEntityMoveNotify extends BasePacket { - - public PacketSceneEntityMoveNotify(EntityMoveInfo moveInfo) { - super(PacketOpcodes.SceneEntityMoveNotify, true); - SceneEntityMoveNotify proto = SceneEntityMoveNotify.newBuilder() - .setMotionInfo(moveInfo.getMotionInfo()) - .setEntityId(moveInfo.getEntityId()) - .setSceneTime(moveInfo.getSceneTime()) - .setReliableSeq(moveInfo.getReliableSeq()) - .build(); - - this.setData(proto); - } + public PacketSceneEntityMoveNotify(EntityMoveInfo moveInfo) { + super(PacketOpcodes.SceneEntityMoveNotify, true); + + SceneEntityMoveNotify proto = SceneEntityMoveNotify.newBuilder() + .setMotionInfo(moveInfo.getMotionInfo()) + .setEntityId(moveInfo.getEntityId()) + .setSceneTime(moveInfo.getSceneTime()) + .setReliableSeq(moveInfo.getReliableSeq()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneInitFinishRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneInitFinishRsp.java index e2751a2c9..f17d95e34 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneInitFinishRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneInitFinishRsp.java @@ -7,11 +7,11 @@ import emu.grasscutter.net.proto.SceneInitFinishRspOuterClass.SceneInitFinishRsp public class PacketSceneInitFinishRsp extends BasePacket { - public PacketSceneInitFinishRsp(Player player) { - super(PacketOpcodes.SceneInitFinishRsp, 11); - - SceneInitFinishRsp p = SceneInitFinishRsp.newBuilder().setEnterSceneToken(player.getEnterSceneToken()).build(); - - this.setData(p.toByteArray()); - } + public PacketSceneInitFinishRsp(Player player) { + super(PacketOpcodes.SceneInitFinishRsp, 11); + + SceneInitFinishRsp p = SceneInitFinishRsp.newBuilder().setEnterSceneToken(player.getEnterSceneToken()).build(); + + this.setData(p.toByteArray()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneKickPlayerRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneKickPlayerRsp.java index 7b15b54d0..d4493a2ef 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneKickPlayerRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneKickPlayerRsp.java @@ -6,24 +6,24 @@ import emu.grasscutter.net.proto.RetcodeOuterClass; import emu.grasscutter.net.proto.SceneKickPlayerRspOuterClass.SceneKickPlayerRsp; public class PacketSceneKickPlayerRsp extends BasePacket { - - public PacketSceneKickPlayerRsp(int targetUid) { - super(PacketOpcodes.SceneKickPlayerRsp); - SceneKickPlayerRsp proto = SceneKickPlayerRsp.newBuilder() - .setTargetUid(targetUid) - .build(); - - this.setData(proto); - } - - public PacketSceneKickPlayerRsp() { - super(PacketOpcodes.SceneKickPlayerRsp); + public PacketSceneKickPlayerRsp(int targetUid) { + super(PacketOpcodes.SceneKickPlayerRsp); - SceneKickPlayerRsp proto = SceneKickPlayerRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); - - this.setData(proto); - } + SceneKickPlayerRsp proto = SceneKickPlayerRsp.newBuilder() + .setTargetUid(targetUid) + .build(); + + this.setData(proto); + } + + public PacketSceneKickPlayerRsp() { + super(PacketOpcodes.SceneKickPlayerRsp); + + SceneKickPlayerRsp proto = SceneKickPlayerRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerInfoNotify.java index 469a26cff..8e04a8a1d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerInfoNotify.java @@ -8,26 +8,26 @@ import emu.grasscutter.net.proto.ScenePlayerInfoNotifyOuterClass.ScenePlayerInfo import emu.grasscutter.net.proto.ScenePlayerInfoOuterClass.ScenePlayerInfo; public class PacketScenePlayerInfoNotify extends BasePacket { - - public PacketScenePlayerInfoNotify(World world) { - super(PacketOpcodes.ScenePlayerInfoNotify); - ScenePlayerInfoNotify.Builder proto = ScenePlayerInfoNotify.newBuilder(); - - for (int i = 0; i < world.getPlayers().size(); i++) { - Player p = world.getPlayers().get(i); + public PacketScenePlayerInfoNotify(World world) { + super(PacketOpcodes.ScenePlayerInfoNotify); - ScenePlayerInfo pInfo = ScenePlayerInfo.newBuilder() - .setUid(p.getUid()) - .setPeerId(p.getPeerId()) - .setName(p.getNickname()) - .setSceneId(p.getSceneId()) - .setOnlinePlayerInfo(p.getOnlinePlayerInfo()) - .build(); - - proto.addPlayerInfoList(pInfo); - } - - this.setData(proto.build()); - } + ScenePlayerInfoNotify.Builder proto = ScenePlayerInfoNotify.newBuilder(); + + for (int i = 0; i < world.getPlayers().size(); i++) { + Player p = world.getPlayers().get(i); + + ScenePlayerInfo pInfo = ScenePlayerInfo.newBuilder() + .setUid(p.getUid()) + .setPeerId(p.getPeerId()) + .setName(p.getNickname()) + .setSceneId(p.getSceneId()) + .setOnlinePlayerInfo(p.getOnlinePlayerInfo()) + .build(); + + proto.addPlayerInfoList(pInfo); + } + + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java index 427e94573..c9f7e5c33 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java @@ -7,17 +7,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ScenePlayerLocationNotifyOuterClass.ScenePlayerLocationNotify; public class PacketScenePlayerLocationNotify extends BasePacket { - - public PacketScenePlayerLocationNotify(Scene scene) { - super(PacketOpcodes.ScenePlayerLocationNotify); - - ScenePlayerLocationNotify.Builder proto = ScenePlayerLocationNotify.newBuilder() - .setSceneId(scene.getId()); - - for (Player p : scene.getPlayers()) { - proto.addPlayerLocList(p.getPlayerLocationInfo()); - } - - this.setData(proto); - } + + public PacketScenePlayerLocationNotify(Scene scene) { + super(PacketOpcodes.ScenePlayerLocationNotify); + + ScenePlayerLocationNotify.Builder proto = ScenePlayerLocationNotify.newBuilder() + .setSceneId(scene.getId()); + + for (Player p : scene.getPlayers()) { + proto.addPlayerLocList(p.getPlayerLocationInfo()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePointUnlockNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePointUnlockNotify.java index 3d91c620c..41a9e8b0a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePointUnlockNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePointUnlockNotify.java @@ -9,9 +9,9 @@ public class PacketScenePointUnlockNotify extends BasePacket { super(PacketOpcodes.ScenePointUnlockNotify); ScenePointUnlockNotify.Builder p = ScenePointUnlockNotify.newBuilder() - .setSceneId(sceneId) - .addPointList(pointId) - .addUnhidePointList(pointId); + .setSceneId(sceneId) + .addPointList(pointId) + .addUnhidePointList(pointId); this.setData(p); } @@ -20,9 +20,9 @@ public class PacketScenePointUnlockNotify extends BasePacket { super(PacketOpcodes.ScenePointUnlockNotify); ScenePointUnlockNotify.Builder p = ScenePointUnlockNotify.newBuilder() - .setSceneId(sceneId) - .addAllPointList(pointIds) - .addAllUnhidePointList(pointIds); + .setSceneId(sceneId) + .addAllPointList(pointIds) + .addAllUnhidePointList(pointIds); this.setData(p); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTeamUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTeamUpdateNotify.java index ec3fea082..fe2b22127 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTeamUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTeamUpdateNotify.java @@ -9,38 +9,38 @@ import emu.grasscutter.net.proto.SceneTeamAvatarOuterClass.SceneTeamAvatar; import emu.grasscutter.net.proto.SceneTeamUpdateNotifyOuterClass.SceneTeamUpdateNotify; public class PacketSceneTeamUpdateNotify extends BasePacket { - - public PacketSceneTeamUpdateNotify(Player player) { - super(PacketOpcodes.SceneTeamUpdateNotify); - SceneTeamUpdateNotify.Builder proto = SceneTeamUpdateNotify.newBuilder() - .setIsInMp(player.getWorld().isMultiplayer()); - - for (Player p : player.getWorld().getPlayers()) { - for (EntityAvatar entityAvatar : p.getTeamManager().getActiveTeam()) { - SceneTeamAvatar.Builder avatarProto = SceneTeamAvatar.newBuilder() - .setPlayerUid(p.getUid()) - .setAvatarGuid(entityAvatar.getAvatar().getGuid()) - .setSceneId(p.getSceneId()) - .setEntityId(entityAvatar.getId()) - .setSceneEntityInfo(entityAvatar.toProto()) - .setWeaponGuid(entityAvatar.getAvatar().getWeapon().getGuid()) - .setWeaponEntityId(entityAvatar.getWeaponEntityId()) - .setIsPlayerCurAvatar(p.getTeamManager().getCurrentAvatarEntity() == entityAvatar) - .setIsOnScene(p.getTeamManager().getCurrentAvatarEntity() == entityAvatar) - .setAvatarAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setWeaponAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .setAbilityControlBlock(entityAvatar.getAbilityControlBlock()); - - if (player.getWorld().isMultiplayer()) { - avatarProto.setAvatarInfo(entityAvatar.getAvatar().toProto()); - avatarProto.setSceneAvatarInfo(entityAvatar.getSceneAvatarInfo()); // why mihoyo... - } - - proto.addSceneTeamAvatarList(avatarProto); - } - } - - this.setData(proto); - } + public PacketSceneTeamUpdateNotify(Player player) { + super(PacketOpcodes.SceneTeamUpdateNotify); + + SceneTeamUpdateNotify.Builder proto = SceneTeamUpdateNotify.newBuilder() + .setIsInMp(player.getWorld().isMultiplayer()); + + for (Player p : player.getWorld().getPlayers()) { + for (EntityAvatar entityAvatar : p.getTeamManager().getActiveTeam()) { + SceneTeamAvatar.Builder avatarProto = SceneTeamAvatar.newBuilder() + .setPlayerUid(p.getUid()) + .setAvatarGuid(entityAvatar.getAvatar().getGuid()) + .setSceneId(p.getSceneId()) + .setEntityId(entityAvatar.getId()) + .setSceneEntityInfo(entityAvatar.toProto()) + .setWeaponGuid(entityAvatar.getAvatar().getWeapon().getGuid()) + .setWeaponEntityId(entityAvatar.getWeaponEntityId()) + .setIsPlayerCurAvatar(p.getTeamManager().getCurrentAvatarEntity() == entityAvatar) + .setIsOnScene(p.getTeamManager().getCurrentAvatarEntity() == entityAvatar) + .setAvatarAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setWeaponAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .setAbilityControlBlock(entityAvatar.getAbilityControlBlock()); + + if (player.getWorld().isMultiplayer()) { + avatarProto.setAvatarInfo(entityAvatar.getAvatar().toProto()); + avatarProto.setSceneAvatarInfo(entityAvatar.getSceneAvatarInfo()); // why mihoyo... + } + + proto.addSceneTeamAvatarList(avatarProto); + } + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTimeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTimeNotify.java index 9f9a02a26..bb232f658 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTimeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTimeNotify.java @@ -11,10 +11,10 @@ public class PacketSceneTimeNotify extends BasePacket { super(PacketOpcodes.SceneTimeNotify); SceneTimeNotify proto = SceneTimeNotify.newBuilder() - .setIsPaused(player.isPaused()) - .setSceneId(player.getSceneId()) - .setSceneTime(player.getScene().getSceneTime()) - .build(); + .setIsPaused(player.isPaused()) + .setSceneId(player.getSceneId()) + .setSceneTime(player.getScene().getSceneTime()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java index 17350c628..7a8e11a71 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java @@ -1,35 +1,32 @@ -package emu.grasscutter.server.packet.send; - -import emu.grasscutter.data.GameData; -import emu.grasscutter.data.binout.ScenePointEntry; -import emu.grasscutter.game.player.Player; -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.RetcodeOuterClass; -import emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp; -import emu.grasscutter.utils.Position; - -public class PacketSceneTransToPointRsp extends BasePacket { - - public PacketSceneTransToPointRsp(Player player, int pointId, int sceneId) { - super(PacketOpcodes.SceneTransToPointRsp); - - SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder() - .setRetcode(0) - .setPointId(pointId) - .setSceneId(sceneId) - .build(); - - this.setData(proto); - } - - public PacketSceneTransToPointRsp() { - super(PacketOpcodes.SceneTransToPointRsp); - - SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) // Internal server error - .build(); - - this.setData(proto); - } -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.game.player.Player; +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.RetcodeOuterClass; +import emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp; + +public class PacketSceneTransToPointRsp extends BasePacket { + + public PacketSceneTransToPointRsp(Player player, int pointId, int sceneId) { + super(PacketOpcodes.SceneTransToPointRsp); + + SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder() + .setRetcode(0) + .setPointId(pointId) + .setSceneId(sceneId) + .build(); + + this.setData(proto); + } + + public PacketSceneTransToPointRsp() { + super(PacketOpcodes.SceneTransToPointRsp); + + SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder() + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) // Internal server error + .build(); + + this.setData(proto); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSelectWorktopOptionRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSelectWorktopOptionRsp.java index 72d77e583..367a779d0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSelectWorktopOptionRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSelectWorktopOptionRsp.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SelectWorktopOptionRspOuterClass.SelectWorktopOptionRsp; public class PacketSelectWorktopOptionRsp extends BasePacket { - - public PacketSelectWorktopOptionRsp(int entityId, int optionId) { - super(PacketOpcodes.SelectWorktopOptionRsp); - - SelectWorktopOptionRsp proto = SelectWorktopOptionRsp.newBuilder() - .setGadgetEntityId(entityId) - .setOptionId(optionId) - .build(); - - this.setData(proto); - } + + public PacketSelectWorktopOptionRsp(int entityId, int optionId) { + super(PacketOpcodes.SelectWorktopOptionRsp); + + SelectWorktopOptionRsp proto = SelectWorktopOptionRsp.newBuilder() + .setGadgetEntityId(entityId) + .setOptionId(optionId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceNotify.java index 9d00efa8a..bd707c652 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceNotify.java @@ -20,8 +20,8 @@ public class PacketServerAnnounceNotify extends BasePacket { this.setData(proto); } - public PacketServerAnnounceNotify(String msg, int configId) { - super(PacketOpcodes.ServerAnnounceNotify); + public PacketServerAnnounceNotify(String msg, int configId) { + super(PacketOpcodes.ServerAnnounceNotify); var proto = ServerAnnounceNotifyOuterClass.ServerAnnounceNotify.newBuilder(); @@ -34,5 +34,5 @@ public class PacketServerAnnounceNotify extends BasePacket { .build()); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceRevokeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceRevokeNotify.java index c3303a81f..70eb64c32 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceRevokeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketServerAnnounceRevokeNotify.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.ServerAnnounceRevokeNotifyOuterClass; public class PacketServerAnnounceRevokeNotify extends BasePacket { - public PacketServerAnnounceRevokeNotify(int tplId) { - super(PacketOpcodes.ServerAnnounceRevokeNotify); + public PacketServerAnnounceRevokeNotify(int tplId) { + super(PacketOpcodes.ServerAnnounceRevokeNotify); var proto = ServerAnnounceRevokeNotifyOuterClass.ServerAnnounceRevokeNotify.newBuilder(); proto.addConfigIdList(tplId); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketServerBuffChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketServerBuffChangeNotify.java index 1bb04f907..0281469b5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketServerBuffChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketServerBuffChangeNotify.java @@ -1,8 +1,5 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; -import java.util.stream.Stream; - import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.PlayerBuffManager.PlayerBuff; import emu.grasscutter.net.packet.BasePacket; @@ -10,6 +7,9 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ServerBuffChangeNotifyOuterClass.ServerBuffChangeNotify; import emu.grasscutter.net.proto.ServerBuffChangeNotifyOuterClass.ServerBuffChangeNotify.ServerBuffChangeType; +import java.util.Collection; +import java.util.stream.Stream; + public class PacketServerBuffChangeNotify extends BasePacket { public PacketServerBuffChangeNotify(Player player, ServerBuffChangeType changeType, PlayerBuff buff) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketServerCondMeetQuestListUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketServerCondMeetQuestListUpdateNotify.java index 014e4aae3..87b36abe0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketServerCondMeetQuestListUpdateNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketServerCondMeetQuestListUpdateNotify.java @@ -7,7 +7,6 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ServerCondMeetQuestListUpdateNotifyOuterClass.ServerCondMeetQuestListUpdateNotify; import java.util.List; -import java.util.Set; public class PacketServerCondMeetQuestListUpdateNotify extends BasePacket { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketServerTimeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketServerTimeNotify.java index 7086873e4..0233d4b17 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketServerTimeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketServerTimeNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ServerTimeNotifyOuterClass.ServerTimeNotify; public class PacketServerTimeNotify extends BasePacket { - - public PacketServerTimeNotify() { - super(PacketOpcodes.ServerTimeNotify); - ServerTimeNotify proto = ServerTimeNotify.newBuilder() - .setServerTime(System.currentTimeMillis()) - .build(); - - this.setData(proto); - } + public PacketServerTimeNotify() { + super(PacketOpcodes.ServerTimeNotify); + + ServerTimeNotify proto = ServerTimeNotify.newBuilder() + .setServerTime(System.currentTimeMillis()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetBattlePassViewedRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetBattlePassViewedRsp.java index 08abf4951..b7161049f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetBattlePassViewedRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetBattlePassViewedRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetBattlePassViewedRspOuterClass.SetBattlePassViewedRsp; public class PacketSetBattlePassViewedRsp extends BasePacket { - - public PacketSetBattlePassViewedRsp(int scheduleId) { - super(PacketOpcodes.SetBattlePassViewedRsp); - - SetBattlePassViewedRsp proto = SetBattlePassViewedRsp.newBuilder() - .setScheduleId(scheduleId) - .build(); - - this.setData(proto); - } + + public PacketSetBattlePassViewedRsp(int scheduleId) { + super(PacketOpcodes.SetBattlePassViewedRsp); + + SetBattlePassViewedRsp proto = SetBattlePassViewedRsp.newBuilder() + .setScheduleId(scheduleId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetEquipLockStateRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetEquipLockStateRsp.java index 612cd9d07..f78c9e868 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetEquipLockStateRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetEquipLockStateRsp.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetEquipLockStateRspOuterClass.SetEquipLockStateRsp; public class PacketSetEquipLockStateRsp extends BasePacket { - - public PacketSetEquipLockStateRsp(GameItem equip) { - super(PacketOpcodes.SetEquipLockStateRsp); - - this.buildHeader(0); - SetEquipLockStateRsp proto = SetEquipLockStateRsp.newBuilder() - .setTargetEquipGuid(equip.getGuid()) - .setIsLocked(equip.isLocked()) - .build(); - - this.setData(proto); - } + public PacketSetEquipLockStateRsp(GameItem equip) { + super(PacketOpcodes.SetEquipLockStateRsp); + + this.buildHeader(0); + + SetEquipLockStateRsp proto = SetEquipLockStateRsp.newBuilder() + .setTargetEquipGuid(equip.getGuid()) + .setIsLocked(equip.isLocked()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetNameCardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetNameCardRsp.java index efc50f023..5930f3594 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetNameCardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetNameCardRsp.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetNameCardRspOuterClass.SetNameCardRsp; public class PacketSetNameCardRsp extends BasePacket { - - public PacketSetNameCardRsp(int nameCardId) { - super(PacketOpcodes.SetNameCardRsp); - - SetNameCardRsp proto = SetNameCardRsp.newBuilder() - .setNameCardId(nameCardId) - .build(); - - this.setData(proto); - } + + public PacketSetNameCardRsp(int nameCardId) { + super(PacketOpcodes.SetNameCardRsp); + + SetNameCardRsp proto = SetNameCardRsp.newBuilder() + .setNameCardId(nameCardId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java index 6c875af56..d4ce659a5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerBirthdayRsp.java @@ -4,27 +4,26 @@ import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp; -import emu.grasscutter.net.proto.SetPlayerBornDataReqOuterClass; public class PacketSetPlayerBirthdayRsp extends BasePacket { - public PacketSetPlayerBirthdayRsp(int retCode) { - super(PacketOpcodes.SetPlayerBirthdayRsp); + public PacketSetPlayerBirthdayRsp(int retCode) { + super(PacketOpcodes.SetPlayerBirthdayRsp); - SetPlayerBirthdayRsp proto = SetPlayerBirthdayRsp.newBuilder() - .setRetcode(retCode) - .build(); + SetPlayerBirthdayRsp proto = SetPlayerBirthdayRsp.newBuilder() + .setRetcode(retCode) + .build(); - this.setData(proto); - } + this.setData(proto); + } - public PacketSetPlayerBirthdayRsp(Player player) { - super(PacketOpcodes.SetPlayerBirthdayRsp); + public PacketSetPlayerBirthdayRsp(Player player) { + super(PacketOpcodes.SetPlayerBirthdayRsp); - SetPlayerBirthdayRsp proto = SetPlayerBirthdayRsp.newBuilder() - .setBirthday(player.getBirthday().toProto()) - .build(); + SetPlayerBirthdayRsp proto = SetPlayerBirthdayRsp.newBuilder() + .setBirthday(player.getBirthday().toProto()) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerHeadImageRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerHeadImageRsp.java index 4cbfd4b46..671bcd0ce 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerHeadImageRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerHeadImageRsp.java @@ -7,14 +7,14 @@ import emu.grasscutter.net.proto.ProfilePictureOuterClass.ProfilePicture; import emu.grasscutter.net.proto.SetPlayerHeadImageRspOuterClass.SetPlayerHeadImageRsp; public class PacketSetPlayerHeadImageRsp extends BasePacket { - - public PacketSetPlayerHeadImageRsp(Player player) { - super(PacketOpcodes.SetPlayerHeadImageRsp); - - SetPlayerHeadImageRsp proto = SetPlayerHeadImageRsp.newBuilder() - .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(player.getHeadImage())) - .build(); - - this.setData(proto); - } + + public PacketSetPlayerHeadImageRsp(Player player) { + super(PacketOpcodes.SetPlayerHeadImageRsp); + + SetPlayerHeadImageRsp proto = SetPlayerHeadImageRsp.newBuilder() + .setProfilePicture(ProfilePicture.newBuilder().setAvatarId(player.getHeadImage())) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerNameRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerNameRsp.java index 935957f70..be5ddd96b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerNameRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerNameRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerNameRspOuterClass.SetPlayerNameRsp; public class PacketSetPlayerNameRsp extends BasePacket { - - public PacketSetPlayerNameRsp(Player player) { - super(PacketOpcodes.SetPlayerNameRsp); - SetPlayerNameRsp proto = SetPlayerNameRsp.newBuilder() - .setNickName(player.getNickname()) - .build(); - - this.setData(proto); - } + public PacketSetPlayerNameRsp(Player player) { + super(PacketOpcodes.SetPlayerNameRsp); + + SetPlayerNameRsp proto = SetPlayerNameRsp.newBuilder() + .setNickName(player.getNickname()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerPropRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerPropRsp.java index 9ce77c915..6bdb75514 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerPropRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerPropRsp.java @@ -1,19 +1,17 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerPropRspOuterClass; -import emu.grasscutter.net.proto.SetPlayerPropRspOuterClass.SetPlayerPropRsp; public class PacketSetPlayerPropRsp extends BasePacket { - public PacketSetPlayerPropRsp(int retCode) { - super(PacketOpcodes.SetPlayerPropRsp); - SetPlayerPropRspOuterClass.SetPlayerPropRsp.Builder proto = SetPlayerPropRspOuterClass.SetPlayerPropRsp.newBuilder(); - if (retCode != 0) { - proto.setRetcode(retCode); - } - this.setData(proto.build()); - } + public PacketSetPlayerPropRsp(int retCode) { + super(PacketOpcodes.SetPlayerPropRsp); + SetPlayerPropRspOuterClass.SetPlayerPropRsp.Builder proto = SetPlayerPropRspOuterClass.SetPlayerPropRsp.newBuilder(); + if (retCode != 0) { + proto.setRetcode(retCode); + } + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerSignatureRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerSignatureRsp.java index 9a4361b83..43c582136 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerSignatureRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetPlayerSignatureRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetPlayerSignatureRspOuterClass.SetPlayerSignatureRsp; public class PacketSetPlayerSignatureRsp extends BasePacket { - - public PacketSetPlayerSignatureRsp(Player player) { - super(PacketOpcodes.SetPlayerSignatureRsp); - SetPlayerSignatureRsp proto = SetPlayerSignatureRsp.newBuilder() - .setSignature(player.getSignature()) - .build(); - - this.setData(proto); - } + public PacketSetPlayerSignatureRsp(Player player) { + super(PacketOpcodes.SetPlayerSignatureRsp); + + SetPlayerSignatureRsp proto = SetPlayerSignatureRsp.newBuilder() + .setSignature(player.getSignature()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpAvatarTeamRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpAvatarTeamRsp.java index 66d484248..212c0fa05 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpAvatarTeamRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpAvatarTeamRsp.java @@ -7,18 +7,18 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SetUpAvatarTeamRspOuterClass.SetUpAvatarTeamRsp; public class PacketSetUpAvatarTeamRsp extends BasePacket { - - public PacketSetUpAvatarTeamRsp(Player player, int teamId, TeamInfo teamInfo) { - super(PacketOpcodes.SetUpAvatarTeamRsp); - SetUpAvatarTeamRsp.Builder proto = SetUpAvatarTeamRsp.newBuilder() - .setTeamId(teamId) - .setCurAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()); - - for (int avatarId : teamInfo.getAvatars()) { - proto.addAvatarTeamGuidList(player.getAvatars().getAvatarById(avatarId).getGuid()); - } - - this.setData(proto); - } + public PacketSetUpAvatarTeamRsp(Player player, int teamId, TeamInfo teamInfo) { + super(PacketOpcodes.SetUpAvatarTeamRsp); + + SetUpAvatarTeamRsp.Builder proto = SetUpAvatarTeamRsp.newBuilder() + .setTeamId(teamId) + .setCurAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()); + + for (int avatarId : teamInfo.getAvatars()) { + proto.addAvatarTeamGuidList(player.getAvatars().getAvatarById(avatarId).getGuid()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpLunchBoxWidgetRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpLunchBoxWidgetRsp.java index c282aae5e..6c6bd22a7 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpLunchBoxWidgetRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetUpLunchBoxWidgetRsp.java @@ -1,18 +1,18 @@ -package emu.grasscutter.server.packet.send; - -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.LunchBoxDataOuterClass; -import emu.grasscutter.net.proto.SetUpLunchBoxWidgetRspOuterClass; - -public class PacketSetUpLunchBoxWidgetRsp extends BasePacket { - - public PacketSetUpLunchBoxWidgetRsp(LunchBoxDataOuterClass.LunchBoxData lunchBoxData) { - super(PacketOpcodes.SetUpLunchBoxWidgetRsp); - var rsp - = SetUpLunchBoxWidgetRspOuterClass.SetUpLunchBoxWidgetRsp.newBuilder(); - rsp.setLunchBoxData(lunchBoxData); - - setData(rsp.build()); - } -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.LunchBoxDataOuterClass; +import emu.grasscutter.net.proto.SetUpLunchBoxWidgetRspOuterClass; + +public class PacketSetUpLunchBoxWidgetRsp extends BasePacket { + + public PacketSetUpLunchBoxWidgetRsp(LunchBoxDataOuterClass.LunchBoxData lunchBoxData) { + super(PacketOpcodes.SetUpLunchBoxWidgetRsp); + var rsp + = SetUpLunchBoxWidgetRspOuterClass.SetUpLunchBoxWidgetRsp.newBuilder(); + rsp.setLunchBoxData(lunchBoxData); + + setData(rsp.build()); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSetWidgetSlotRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSetWidgetSlotRsp.java index 0f81afa85..d20efcad0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSetWidgetSlotRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSetWidgetSlotRsp.java @@ -10,8 +10,8 @@ public class PacketSetWidgetSlotRsp extends BasePacket { super(PacketOpcodes.SetWidgetSlotRsp); SetWidgetSlotRspOuterClass.SetWidgetSlotRsp proto = SetWidgetSlotRspOuterClass.SetWidgetSlotRsp.newBuilder() - .setMaterialId(materialId) - .build(); + .setMaterialId(materialId) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemChangeNotify.java index 4ad82c1b4..997005347 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemChangeNotify.java @@ -1,37 +1,37 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.StoreItemChangeNotifyOuterClass.StoreItemChangeNotify; import emu.grasscutter.net.proto.StoreTypeOuterClass.StoreType; -public class PacketStoreItemChangeNotify extends BasePacket { - - private PacketStoreItemChangeNotify() { - super(PacketOpcodes.StoreItemChangeNotify); - } - - public PacketStoreItemChangeNotify(GameItem item) { - this(); - - StoreItemChangeNotify.Builder proto = StoreItemChangeNotify.newBuilder() - .setStoreType(StoreType.STORE_TYPE_PACK) - .addItemList(item.toProto()); - - this.setData(proto); - } - - public PacketStoreItemChangeNotify(Collection items) { - this(); +import java.util.Collection; - StoreItemChangeNotify.Builder proto = StoreItemChangeNotify.newBuilder() - .setStoreType(StoreType.STORE_TYPE_PACK); - - items.forEach(item -> proto.addItemList(item.toProto())); - - this.setData(proto); - } +public class PacketStoreItemChangeNotify extends BasePacket { + + private PacketStoreItemChangeNotify() { + super(PacketOpcodes.StoreItemChangeNotify); + } + + public PacketStoreItemChangeNotify(GameItem item) { + this(); + + StoreItemChangeNotify.Builder proto = StoreItemChangeNotify.newBuilder() + .setStoreType(StoreType.STORE_TYPE_PACK) + .addItemList(item.toProto()); + + this.setData(proto); + } + + public PacketStoreItemChangeNotify(Collection items) { + this(); + + StoreItemChangeNotify.Builder proto = StoreItemChangeNotify.newBuilder() + .setStoreType(StoreType.STORE_TYPE_PACK); + + items.forEach(item -> proto.addItemList(item.toProto())); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemDelNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemDelNotify.java index 04a62ebf4..2915f7153 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemDelNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreItemDelNotify.java @@ -1,37 +1,37 @@ package emu.grasscutter.server.packet.send; -import java.util.Collection; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.StoreItemDelNotifyOuterClass.StoreItemDelNotify; import emu.grasscutter.net.proto.StoreTypeOuterClass.StoreType; -public class PacketStoreItemDelNotify extends BasePacket { - - private PacketStoreItemDelNotify() { - super(PacketOpcodes.StoreItemDelNotify); - } - - public PacketStoreItemDelNotify(GameItem item) { - this(); - - StoreItemDelNotify.Builder proto = StoreItemDelNotify.newBuilder() - .setStoreType(StoreType.STORE_TYPE_PACK) - .addGuidList(item.getGuid()); - - this.setData(proto); - } - - public PacketStoreItemDelNotify(Collection items) { - this(); +import java.util.Collection; - StoreItemDelNotify.Builder proto = StoreItemDelNotify.newBuilder() - .setStoreType(StoreType.STORE_TYPE_PACK); - - items.stream().forEach(item -> proto.addGuidList(item.getGuid())); - - this.setData(proto); - } +public class PacketStoreItemDelNotify extends BasePacket { + + private PacketStoreItemDelNotify() { + super(PacketOpcodes.StoreItemDelNotify); + } + + public PacketStoreItemDelNotify(GameItem item) { + this(); + + StoreItemDelNotify.Builder proto = StoreItemDelNotify.newBuilder() + .setStoreType(StoreType.STORE_TYPE_PACK) + .addGuidList(item.getGuid()); + + this.setData(proto); + } + + public PacketStoreItemDelNotify(Collection items) { + this(); + + StoreItemDelNotify.Builder proto = StoreItemDelNotify.newBuilder() + .setStoreType(StoreType.STORE_TYPE_PACK); + + items.stream().forEach(item -> proto.addGuidList(item.getGuid())); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java index 98cdde1b7..b980d6214 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java @@ -1,25 +1,25 @@ package emu.grasscutter.server.packet.send; -import static emu.grasscutter.config.Configuration.*; - import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.StoreTypeOuterClass.StoreType; import emu.grasscutter.net.proto.StoreWeightLimitNotifyOuterClass.StoreWeightLimitNotify; +import static emu.grasscutter.config.Configuration.INVENTORY_LIMITS; + public class PacketStoreWeightLimitNotify extends BasePacket { public PacketStoreWeightLimitNotify() { super(PacketOpcodes.StoreWeightLimitNotify); StoreWeightLimitNotify p = StoreWeightLimitNotify.newBuilder() - .setStoreType(StoreType.STORE_TYPE_PACK) - .setWeightLimit(INVENTORY_LIMITS.all) - .setWeaponCountLimit(INVENTORY_LIMITS.weapons) - .setReliquaryCountLimit(INVENTORY_LIMITS.relics) - .setMaterialCountLimit(INVENTORY_LIMITS.materials) - .setFurnitureCountLimit(INVENTORY_LIMITS.furniture) - .build(); + .setStoreType(StoreType.STORE_TYPE_PACK) + .setWeightLimit(INVENTORY_LIMITS.all) + .setWeaponCountLimit(INVENTORY_LIMITS.weapons) + .setReliquaryCountLimit(INVENTORY_LIMITS.relics) + .setMaterialCountLimit(INVENTORY_LIMITS.materials) + .setFurnitureCountLimit(INVENTORY_LIMITS.furniture) + .build(); this.setData(p); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSyncScenePlayTeamEntityNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSyncScenePlayTeamEntityNotify.java index c50b7c0a8..2a4147909 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSyncScenePlayTeamEntityNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSyncScenePlayTeamEntityNotify.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.SyncScenePlayTeamEntityNotifyOuterClass.SyncScenePlayTeamEntityNotify; public class PacketSyncScenePlayTeamEntityNotify extends BasePacket { - - public PacketSyncScenePlayTeamEntityNotify(Player player) { - super(PacketOpcodes.SyncScenePlayTeamEntityNotify); - SyncScenePlayTeamEntityNotify proto = SyncScenePlayTeamEntityNotify.newBuilder() - .setSceneId(player.getSceneId()) - .build(); - - this.setData(proto); - } + public PacketSyncScenePlayTeamEntityNotify(Player player) { + super(PacketOpcodes.SyncScenePlayTeamEntityNotify); + + SyncScenePlayTeamEntityNotify proto = SyncScenePlayTeamEntityNotify.newBuilder() + .setSceneId(player.getSceneId()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSyncTeamEntityNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSyncTeamEntityNotify.java index ebb38df13..f24a9b6af 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSyncTeamEntityNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSyncTeamEntityNotify.java @@ -8,31 +8,31 @@ import emu.grasscutter.net.proto.SyncTeamEntityNotifyOuterClass.SyncTeamEntityNo import emu.grasscutter.net.proto.TeamEntityInfoOuterClass.TeamEntityInfo; public class PacketSyncTeamEntityNotify extends BasePacket { - - public PacketSyncTeamEntityNotify(Player player) { - super(PacketOpcodes.SyncTeamEntityNotify); - - SyncTeamEntityNotify.Builder proto = SyncTeamEntityNotify.newBuilder() - .setSceneId(player.getSceneId()); - - if (player.getWorld().isMultiplayer()) { - for (Player p : player.getWorld().getPlayers()) { - // Skip if same player - if (player == p) { - continue; - } - - // Set info - TeamEntityInfo info = TeamEntityInfo.newBuilder() - .setTeamEntityId(p.getTeamManager().getEntityId()) - .setAuthorityPeerId(p.getPeerId()) - .setTeamAbilityInfo(AbilitySyncStateInfo.newBuilder()) - .build(); - - proto.addTeamEntityInfoList(info); - } - } - this.setData(proto); - } + public PacketSyncTeamEntityNotify(Player player) { + super(PacketOpcodes.SyncTeamEntityNotify); + + SyncTeamEntityNotify.Builder proto = SyncTeamEntityNotify.newBuilder() + .setSceneId(player.getSceneId()); + + if (player.getWorld().isMultiplayer()) { + for (Player p : player.getWorld().getPlayers()) { + // Skip if same player + if (player == p) { + continue; + } + + // Set info + TeamEntityInfo info = TeamEntityInfo.newBuilder() + .setTeamEntityId(p.getTeamManager().getEntityId()) + .setAuthorityPeerId(p.getPeerId()) + .setTeamAbilityInfo(AbilitySyncStateInfo.newBuilder()) + .build(); + + proto.addTeamEntityInfoList(info); + } + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeAchievementRewardReq.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeAchievementRewardReq.java index 0045e0a26..02f879622 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeAchievementRewardReq.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeAchievementRewardReq.java @@ -5,9 +5,6 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.TakeAchievementRewardReqOuterClass.TakeAchievementRewardReq; import emu.grasscutter.server.game.GameSession; -import java.util.ArrayList; -import java.util.List; - public class PacketTakeAchievementRewardReq extends BasePacket { public PacketTakeAchievementRewardReq(GameSession session) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassMissionPointRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassMissionPointRsp.java index 35d551d6a..faeefd7de 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassMissionPointRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassMissionPointRsp.java @@ -2,9 +2,6 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.TakeBattlePassMissionPointRspOuterClass; - -import java.util.List; public class PacketTakeBattlePassMissionPointRsp extends BasePacket { public PacketTakeBattlePassMissionPointRsp() { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassRewardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassRewardRsp.java index 81a579d6c..2c2df0137 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassRewardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeBattlePassRewardRsp.java @@ -1,13 +1,11 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.BattlePassRewardTakeOptionOuterClass.BattlePassRewardTakeOption; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.TakeBattlePassRewardRspOuterClass.TakeBattlePassRewardRsp; -import emu.grasscutter.server.game.GameSession; import java.util.List; @@ -16,11 +14,11 @@ public class PacketTakeBattlePassRewardRsp extends BasePacket { super(PacketOpcodes.TakeBattlePassRewardRsp); var proto = TakeBattlePassRewardRsp.newBuilder() - .addAllTakeOptionList(takeOptionList); - + .addAllTakeOptionList(takeOptionList); + if (rewardItems != null) { - for (var item : rewardItems) { - proto.addItemList(ItemParam.newBuilder().setItemId(item.getItemId()).setCount(item.getCount())); + for (var item : rewardItems) { + proto.addItemList(ItemParam.newBuilder().setItemId(item.getItemId()).setCount(item.getCount())); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeFurnitureMakeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeFurnitureMakeRsp.java index 18cc49832..27b1a3c6b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeFurnitureMakeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeFurnitureMakeRsp.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.data.common.ItemParamData; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.FurnitureMakeDataOuterClass; @@ -12,27 +11,27 @@ import java.util.List; public class PacketTakeFurnitureMakeRsp extends BasePacket { - public PacketTakeFurnitureMakeRsp(int ret, - int makeId, - List output, - List others) { - super(PacketOpcodes.TakeFurnitureMakeRsp); + public PacketTakeFurnitureMakeRsp(int ret, + int makeId, + List output, + List others) { + super(PacketOpcodes.TakeFurnitureMakeRsp); - var proto = TakeFurnitureMakeRspOuterClass.TakeFurnitureMakeRsp.newBuilder(); + var proto = TakeFurnitureMakeRspOuterClass.TakeFurnitureMakeRsp.newBuilder(); - proto.setRetcode(ret) - .setMakeId(makeId); + proto.setRetcode(ret) + .setMakeId(makeId); - if(output != null){ - proto.addAllOutputItemList(output); - } + if (output != null) { + proto.addAllOutputItemList(output); + } - if(others != null){ - proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder() - .addAllFurnitureMakeDataList(others) - .build()); - } + if (others != null) { + proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder() + .addAllFurnitureMakeDataList(others) + .build()); + } - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTakePlayerLevelRewardRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTakePlayerLevelRewardRsp.java index c944a18d8..685f315b6 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTakePlayerLevelRewardRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTakePlayerLevelRewardRsp.java @@ -1,26 +1,26 @@ -package emu.grasscutter.server.packet.send; - -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.TakePlayerLevelRewardRspOuterClass.TakePlayerLevelRewardRsp; - -public class PacketTakePlayerLevelRewardRsp extends BasePacket { - - public PacketTakePlayerLevelRewardRsp(int level, int rewardId) { - super(PacketOpcodes.TakePlayerLevelRewardRsp); - - int retcode = 0; - - if (rewardId == 0) { - retcode = 1; - } - - TakePlayerLevelRewardRsp proto = TakePlayerLevelRewardRsp.newBuilder() - .setLevel(level) - .setRewardId(rewardId) - .setRetcode(retcode) - .build(); - - this.setData(proto); - } -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.TakePlayerLevelRewardRspOuterClass.TakePlayerLevelRewardRsp; + +public class PacketTakePlayerLevelRewardRsp extends BasePacket { + + public PacketTakePlayerLevelRewardRsp(int level, int rewardId) { + super(PacketOpcodes.TakePlayerLevelRewardRsp); + + int retcode = 0; + + if (rewardId == 0) { + retcode = 1; + } + + TakePlayerLevelRewardRsp proto = TakePlayerLevelRewardRsp.newBuilder() + .setLevel(level) + .setRewardId(rewardId) + .setRetcode(retcode) + .build(); + + this.setData(proto); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeoffEquipRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeoffEquipRsp.java index 45297b29f..f2562ed9c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTakeoffEquipRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTakeoffEquipRsp.java @@ -5,15 +5,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.TakeoffEquipRspOuterClass.TakeoffEquipRsp; public class PacketTakeoffEquipRsp extends BasePacket { - - public PacketTakeoffEquipRsp(long avatarGuid, int slot) { - super(PacketOpcodes.TakeoffEquipRsp); - TakeoffEquipRsp proto = TakeoffEquipRsp.newBuilder() - .setAvatarGuid(avatarGuid) - .setSlot(slot) - .build(); - - this.setData(proto); - } + public PacketTakeoffEquipRsp(long avatarGuid, int slot) { + super(PacketOpcodes.TakeoffEquipRsp); + + TakeoffEquipRsp proto = TakeoffEquipRsp.newBuilder() + .setAvatarGuid(avatarGuid) + .setSlot(slot) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerAllDataRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerAllDataRsp.java index 18424f95e..9d098e35f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerAllDataRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerAllDataRsp.java @@ -21,43 +21,43 @@ public class PacketTowerAllDataRsp extends BasePacket { super(PacketOpcodes.TowerAllDataRsp); var recordList = towerManager.getRecordMap().values().stream() - .map(rec -> TowerFloorRecord.newBuilder() - .setFloorId(rec.getFloorId()) - .setFloorStarRewardProgress(rec.getFloorStarRewardProgress()) - .putAllPassedLevelMap(rec.getPassedLevelMap()) - .addAllPassedLevelRecordList(buildFromPassedLevelMap(rec.getPassedLevelMap())) - .build() - ) - .toList(); + .map(rec -> TowerFloorRecord.newBuilder() + .setFloorId(rec.getFloorId()) + .setFloorStarRewardProgress(rec.getFloorStarRewardProgress()) + .putAllPassedLevelMap(rec.getPassedLevelMap()) + .addAllPassedLevelRecordList(buildFromPassedLevelMap(rec.getPassedLevelMap())) + .build() + ) + .toList(); var openTimeMap = towerScheduleManager.getScheduleFloors().stream() - .collect(Collectors.toMap(x -> x, - y -> DateHelper.getUnixTime(towerScheduleManager.getTowerScheduleConfig() - .getScheduleStartTime())) - ); + .collect(Collectors.toMap(x -> x, + y -> DateHelper.getUnixTime(towerScheduleManager.getTowerScheduleConfig() + .getScheduleStartTime())) + ); TowerAllDataRsp proto = TowerAllDataRsp.newBuilder() - .setTowerScheduleId(towerScheduleManager.getCurrentTowerScheduleData().getScheduleId()) - .addAllTowerFloorRecordList(recordList) - .setCurLevelRecord(TowerCurLevelRecord.newBuilder().setIsEmpty(true)) - .setScheduleStartTime(DateHelper.getUnixTime(towerScheduleManager.getTowerScheduleConfig() - .getScheduleStartTime())) - .setNextScheduleChangeTime(DateHelper.getUnixTime(towerScheduleManager.getTowerScheduleConfig() - .getNextScheduleChangeTime())) - .putAllFloorOpenTimeMap(openTimeMap) - .setIsFinishedEntranceFloor(towerManager.canEnterScheduleFloor()) - .build(); + .setTowerScheduleId(towerScheduleManager.getCurrentTowerScheduleData().getScheduleId()) + .addAllTowerFloorRecordList(recordList) + .setCurLevelRecord(TowerCurLevelRecord.newBuilder().setIsEmpty(true)) + .setScheduleStartTime(DateHelper.getUnixTime(towerScheduleManager.getTowerScheduleConfig() + .getScheduleStartTime())) + .setNextScheduleChangeTime(DateHelper.getUnixTime(towerScheduleManager.getTowerScheduleConfig() + .getNextScheduleChangeTime())) + .putAllFloorOpenTimeMap(openTimeMap) + .setIsFinishedEntranceFloor(towerManager.canEnterScheduleFloor()) + .build(); this.setData(proto); } private List buildFromPassedLevelMap(Map map) { return map.entrySet().stream() - .map(item -> TowerLevelRecordOuterClass.TowerLevelRecord.newBuilder() - .setLevelId(item.getKey()) - .addAllSatisfiedCondList(IntStream.range(1, item.getValue() + 1).boxed().toList()) - .build()) - .toList(); + .map(item -> TowerLevelRecordOuterClass.TowerLevelRecord.newBuilder() + .setLevelId(item.getKey()) + .addAllSatisfiedCondList(IntStream.range(1, item.getValue() + 1).boxed().toList()) + .build()) + .toList(); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerCurLevelRecordChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerCurLevelRecordChangeNotify.java index 1f8b462cd..133e41785 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerCurLevelRecordChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerCurLevelRecordChangeNotify.java @@ -7,17 +7,17 @@ import emu.grasscutter.net.proto.TowerCurLevelRecordOuterClass.TowerCurLevelReco public class PacketTowerCurLevelRecordChangeNotify extends BasePacket { - public PacketTowerCurLevelRecordChangeNotify(int curFloorId, int curLevelIndex) { - super(PacketOpcodes.TowerCurLevelRecordChangeNotify); + public PacketTowerCurLevelRecordChangeNotify(int curFloorId, int curLevelIndex) { + super(PacketOpcodes.TowerCurLevelRecordChangeNotify); - TowerCurLevelRecordChangeNotify proto = TowerCurLevelRecordChangeNotify.newBuilder() - .setCurLevelRecord(TowerCurLevelRecord.newBuilder() - .setCurFloorId(curFloorId) - .setCurLevelIndex(curLevelIndex) - // TODO team info - .build()) - .build(); + TowerCurLevelRecordChangeNotify proto = TowerCurLevelRecordChangeNotify.newBuilder() + .setCurLevelRecord(TowerCurLevelRecord.newBuilder() + .setCurFloorId(curFloorId) + .setCurLevelIndex(curLevelIndex) + // TODO team info + .build()) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerEnterLevelRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerEnterLevelRsp.java index ebb8fb2b2..a7314cead 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerEnterLevelRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerEnterLevelRsp.java @@ -6,17 +6,17 @@ import emu.grasscutter.net.proto.TowerEnterLevelRspOuterClass.TowerEnterLevelRsp public class PacketTowerEnterLevelRsp extends BasePacket { - public PacketTowerEnterLevelRsp(int floorId, int levelIndex) { - super(PacketOpcodes.TowerEnterLevelRsp); + public PacketTowerEnterLevelRsp(int floorId, int levelIndex) { + super(PacketOpcodes.TowerEnterLevelRsp); - TowerEnterLevelRsp proto = TowerEnterLevelRsp.newBuilder() - .setFloorId(floorId) - .setLevelIndex(levelIndex) - .addTowerBuffIdList(4) - .addTowerBuffIdList(28) - .addTowerBuffIdList(18) - .build(); - - this.setData(proto); - } + TowerEnterLevelRsp proto = TowerEnterLevelRsp.newBuilder() + .setFloorId(floorId) + .setLevelIndex(levelIndex) + .addTowerBuffIdList(4) + .addTowerBuffIdList(28) + .addTowerBuffIdList(18) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerFloorRecordChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerFloorRecordChangeNotify.java index 5ab091901..10db0cf9a 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerFloorRecordChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerFloorRecordChangeNotify.java @@ -8,23 +8,23 @@ import emu.grasscutter.net.proto.TowerLevelRecordOuterClass.TowerLevelRecord; public class PacketTowerFloorRecordChangeNotify extends BasePacket { - public PacketTowerFloorRecordChangeNotify(int floorId, int stars, boolean canEnterScheduleFloor) { - super(PacketOpcodes.TowerFloorRecordChangeNotify); + public PacketTowerFloorRecordChangeNotify(int floorId, int stars, boolean canEnterScheduleFloor) { + super(PacketOpcodes.TowerFloorRecordChangeNotify); - TowerFloorRecordChangeNotify proto = TowerFloorRecordChangeNotify.newBuilder() - .addTowerFloorRecordList(TowerFloorRecord.newBuilder() - .setFloorId(floorId) - .setFloorStarRewardProgress(stars) - .addPassedLevelRecordList(TowerLevelRecord.newBuilder() - .setLevelId(1) - .addSatisfiedCondList(1) - .addSatisfiedCondList(2) - .addSatisfiedCondList(3) - .build()) - .build()) - .setIsFinishedEntranceFloor(canEnterScheduleFloor) - .build(); - - this.setData(proto); - } + TowerFloorRecordChangeNotify proto = TowerFloorRecordChangeNotify.newBuilder() + .addTowerFloorRecordList(TowerFloorRecord.newBuilder() + .setFloorId(floorId) + .setFloorStarRewardProgress(stars) + .addPassedLevelRecordList(TowerLevelRecord.newBuilder() + .setLevelId(1) + .addSatisfiedCondList(1) + .addSatisfiedCondList(2) + .addSatisfiedCondList(3) + .build()) + .build()) + .setIsFinishedEntranceFloor(canEnterScheduleFloor) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerLevelStarCondNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerLevelStarCondNotify.java index 543c447ec..dd37292e7 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerLevelStarCondNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerLevelStarCondNotify.java @@ -7,26 +7,26 @@ import emu.grasscutter.net.proto.TowerLevelStarCondNotifyOuterClass.TowerLevelSt public class PacketTowerLevelStarCondNotify extends BasePacket { - public PacketTowerLevelStarCondNotify(int floorId, int levelIndex) { - super(PacketOpcodes.TowerLevelStarCondNotify); + public PacketTowerLevelStarCondNotify(int floorId, int levelIndex) { + super(PacketOpcodes.TowerLevelStarCondNotify); - TowerLevelStarCondNotify proto = TowerLevelStarCondNotify.newBuilder() - .setFloorId(floorId) - .setLevelIndex(levelIndex) - .addCondDataList(TowerLevelStarCondData.newBuilder() - //.setCondValue(1) - .build() - ) - .addCondDataList(TowerLevelStarCondData.newBuilder() - //.setCondValue(2) - .build() - ) - .addCondDataList(TowerLevelStarCondData.newBuilder() - //.setCondValue(3) - .build() - ) - .build(); + TowerLevelStarCondNotify proto = TowerLevelStarCondNotify.newBuilder() + .setFloorId(floorId) + .setLevelIndex(levelIndex) + .addCondDataList(TowerLevelStarCondData.newBuilder() + //.setCondValue(1) + .build() + ) + .addCondDataList(TowerLevelStarCondData.newBuilder() + //.setCondValue(2) + .build() + ) + .addCondDataList(TowerLevelStarCondData.newBuilder() + //.setCondValue(3) + .build() + ) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerMiddleLevelChangeTeamNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerMiddleLevelChangeTeamNotify.java index f778c68aa..d6c08ef1f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerMiddleLevelChangeTeamNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerMiddleLevelChangeTeamNotify.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.TowerMiddleLevelChangeTeamNotifyOuterClass; public class PacketTowerMiddleLevelChangeTeamNotify extends BasePacket { - public PacketTowerMiddleLevelChangeTeamNotify() { - super(PacketOpcodes.TowerMiddleLevelChangeTeamNotify); + public PacketTowerMiddleLevelChangeTeamNotify() { + super(PacketOpcodes.TowerMiddleLevelChangeTeamNotify); - TowerMiddleLevelChangeTeamNotifyOuterClass.TowerMiddleLevelChangeTeamNotify proto = - TowerMiddleLevelChangeTeamNotifyOuterClass.TowerMiddleLevelChangeTeamNotify.newBuilder() - .build(); - - this.setData(proto); - } + TowerMiddleLevelChangeTeamNotifyOuterClass.TowerMiddleLevelChangeTeamNotify proto = + TowerMiddleLevelChangeTeamNotifyOuterClass.TowerMiddleLevelChangeTeamNotify.newBuilder() + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerTeamSelectRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerTeamSelectRsp.java index 445b707cd..49bf824db 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTowerTeamSelectRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTowerTeamSelectRsp.java @@ -6,12 +6,12 @@ import emu.grasscutter.net.proto.TowerTeamSelectRspOuterClass.TowerTeamSelectRsp public class PacketTowerTeamSelectRsp extends BasePacket { - public PacketTowerTeamSelectRsp() { - super(PacketOpcodes.TowerTeamSelectRsp); + public PacketTowerTeamSelectRsp() { + super(PacketOpcodes.TowerTeamSelectRsp); - TowerTeamSelectRsp proto = TowerTeamSelectRsp.newBuilder() - .build(); - - this.setData(proto); - } + TowerTeamSelectRsp proto = TowerTeamSelectRsp.newBuilder() + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketTryEnterHomeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketTryEnterHomeRsp.java index e6b3b2a86..2aca6630d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketTryEnterHomeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketTryEnterHomeRsp.java @@ -11,8 +11,8 @@ public class PacketTryEnterHomeRsp extends BasePacket { super(PacketOpcodes.TryEnterHomeRsp); TryEnterHomeRspOuterClass.TryEnterHomeRsp proto = TryEnterHomeRspOuterClass.TryEnterHomeRsp.newBuilder() - .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) - .build(); + .setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) + .build(); this.setData(proto); } @@ -21,9 +21,9 @@ public class PacketTryEnterHomeRsp extends BasePacket { super(PacketOpcodes.TryEnterHomeRsp); TryEnterHomeRspOuterClass.TryEnterHomeRsp proto = TryEnterHomeRspOuterClass.TryEnterHomeRsp.newBuilder() - .setRetcode(0) - .setTargetUid(uid) - .build(); + .setRetcode(0) + .setTargetUid(uid) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockAvatarTalentRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockAvatarTalentRsp.java index b980b9c89..d8c613cc9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockAvatarTalentRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockAvatarTalentRsp.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.UnlockAvatarTalentRspOuterClass.UnlockAvatarTalentRsp; public class PacketUnlockAvatarTalentRsp extends BasePacket { - - public PacketUnlockAvatarTalentRsp(Avatar avatar, int talentId) { - super(PacketOpcodes.UnlockAvatarTalentRsp); - UnlockAvatarTalentRsp proto = UnlockAvatarTalentRsp.newBuilder() - .setAvatarGuid(avatar.getGuid()) - .setTalentId(talentId) - .build(); - - this.setData(proto); - } + public PacketUnlockAvatarTalentRsp(Avatar avatar, int talentId) { + super(PacketOpcodes.UnlockAvatarTalentRsp); + + UnlockAvatarTalentRsp proto = UnlockAvatarTalentRsp.newBuilder() + .setAvatarGuid(avatar.getGuid()) + .setTalentId(talentId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockNameCardNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockNameCardNotify.java index 4bb2aec7a..c631d169d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockNameCardNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockNameCardNotify.java @@ -5,14 +5,14 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.UnlockNameCardNotifyOuterClass.UnlockNameCardNotify; public class PacketUnlockNameCardNotify extends BasePacket { - - public PacketUnlockNameCardNotify(int nameCard) { - super(PacketOpcodes.UnlockNameCardNotify); - UnlockNameCardNotify proto = UnlockNameCardNotify.newBuilder() - .setNameCardId(nameCard) - .build(); - - this.setData(proto); - } + public PacketUnlockNameCardNotify(int nameCard) { + super(PacketOpcodes.UnlockNameCardNotify); + + UnlockNameCardNotify proto = UnlockNameCardNotify.newBuilder() + .setNameCardId(nameCard) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockPersonalLineRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockPersonalLineRsp.java index e25523e87..9128d6f09 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockPersonalLineRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockPersonalLineRsp.java @@ -6,8 +6,8 @@ import emu.grasscutter.net.proto.UnlockPersonalLineRspOuterClass; public class PacketUnlockPersonalLineRsp extends BasePacket { - public PacketUnlockPersonalLineRsp(int id, int level, int chapterId) { - super(PacketOpcodes.UnlockPersonalLineRsp); + public PacketUnlockPersonalLineRsp(int id, int level, int chapterId) { + super(PacketOpcodes.UnlockPersonalLineRsp); var proto = UnlockPersonalLineRspOuterClass.UnlockPersonalLineRsp.newBuilder(); @@ -16,5 +16,5 @@ public class PacketUnlockPersonalLineRsp extends BasePacket { .setChapterId(chapterId); this.setData(proto); - } + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockTransPointRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockTransPointRsp.java index dacd20d81..8a07fd1c0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockTransPointRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockTransPointRsp.java @@ -1,6 +1,5 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.avatar.Avatar; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; @@ -11,8 +10,8 @@ public class PacketUnlockTransPointRsp extends BasePacket { super(PacketOpcodes.UnlockTransPointRsp); UnlockTransPointRsp proto = UnlockTransPointRsp.newBuilder() - .setRetcode(retcode.getNumber()) - .build(); + .setRetcode(retcode.getNumber()) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureFormulaDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureFormulaDataNotify.java index 3ca0468c6..5e6a3e4e8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureFormulaDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureFormulaDataNotify.java @@ -8,14 +8,14 @@ import java.util.Set; public class PacketUnlockedFurnitureFormulaDataNotify extends BasePacket { - public PacketUnlockedFurnitureFormulaDataNotify(Set unlockList) { - super(PacketOpcodes.UnlockedFurnitureFormulaDataNotify); + public PacketUnlockedFurnitureFormulaDataNotify(Set unlockList) { + super(PacketOpcodes.UnlockedFurnitureFormulaDataNotify); - var proto = UnlockedFurnitureFormulaDataNotifyOuterClass.UnlockedFurnitureFormulaDataNotify.newBuilder(); + var proto = UnlockedFurnitureFormulaDataNotifyOuterClass.UnlockedFurnitureFormulaDataNotify.newBuilder(); - proto.addAllFurnitureIdList(unlockList); - proto.setIsAll(true); + proto.addAllFurnitureIdList(unlockList); + proto.setIsAll(true); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureSuiteDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureSuiteDataNotify.java index 9d6b33209..496b8b853 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureSuiteDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUnlockedFurnitureSuiteDataNotify.java @@ -8,14 +8,14 @@ import java.util.Set; public class PacketUnlockedFurnitureSuiteDataNotify extends BasePacket { - public PacketUnlockedFurnitureSuiteDataNotify(Set unlockList) { - super(PacketOpcodes.UnlockedFurnitureSuiteDataNotify); + public PacketUnlockedFurnitureSuiteDataNotify(Set unlockList) { + super(PacketOpcodes.UnlockedFurnitureSuiteDataNotify); - var proto = UnlockedFurnitureSuiteDataNotifyOuterClass.UnlockedFurnitureSuiteDataNotify.newBuilder(); + var proto = UnlockedFurnitureSuiteDataNotifyOuterClass.UnlockedFurnitureSuiteDataNotify.newBuilder(); - proto.addAllFurnitureSuiteIdList(unlockList); - proto.setIsAll(true); + proto.addAllFurnitureSuiteIdList(unlockList); + proto.setIsAll(true); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUpdatePlayerShowAvatarListRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUpdatePlayerShowAvatarListRsp.java index 1785c9f45..1e698db25 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUpdatePlayerShowAvatarListRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUpdatePlayerShowAvatarListRsp.java @@ -1,22 +1,22 @@ -package emu.grasscutter.server.packet.send; - -import emu.grasscutter.net.packet.BasePacket; -import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.UpdatePlayerShowAvatarListRspOuterClass.UpdatePlayerShowAvatarListRsp; - -import java.util.List; - -public class PacketUpdatePlayerShowAvatarListRsp extends BasePacket { - - public PacketUpdatePlayerShowAvatarListRsp(boolean isShowAvatar, List avatarIds) { - super(PacketOpcodes.UpdatePlayerShowAvatarListRsp); - - UpdatePlayerShowAvatarListRsp proto = UpdatePlayerShowAvatarListRsp.newBuilder() - .setIsShowAvatar(isShowAvatar) - .addAllShowAvatarIdList(avatarIds) - .setRetcode(0) - .build(); - - this.setData(proto); - } -} +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.UpdatePlayerShowAvatarListRspOuterClass.UpdatePlayerShowAvatarListRsp; + +import java.util.List; + +public class PacketUpdatePlayerShowAvatarListRsp extends BasePacket { + + public PacketUpdatePlayerShowAvatarListRsp(boolean isShowAvatar, List avatarIds) { + super(PacketOpcodes.UpdatePlayerShowAvatarListRsp); + + UpdatePlayerShowAvatarListRsp proto = UpdatePlayerShowAvatarListRsp.newBuilder() + .setIsShowAvatar(isShowAvatar) + .addAllShowAvatarIdList(avatarIds) + .setRetcode(0) + .build(); + + this.setData(proto); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketUseItemRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketUseItemRsp.java index f6722bf56..04c3ba2cd 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketUseItemRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketUseItemRsp.java @@ -7,24 +7,24 @@ import emu.grasscutter.net.proto.RetcodeOuterClass; import emu.grasscutter.net.proto.UseItemRspOuterClass.UseItemRsp; public class PacketUseItemRsp extends BasePacket { - - public PacketUseItemRsp(long targetGuid, GameItem useItem) { - super(PacketOpcodes.UseItemRsp); - - UseItemRsp proto = UseItemRsp.newBuilder() - .setTargetGuid(targetGuid) - .setItemId(useItem.getItemId()) - .setGuid(useItem.getGuid()) - .build(); - - this.setData(proto); - } - - public PacketUseItemRsp() { - super(PacketOpcodes.UseItemRsp); - - UseItemRsp proto = UseItemRsp.newBuilder().setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build(); - - this.setData(proto); - } + + public PacketUseItemRsp(long targetGuid, GameItem useItem) { + super(PacketOpcodes.UseItemRsp); + + UseItemRsp proto = UseItemRsp.newBuilder() + .setTargetGuid(targetGuid) + .setItemId(useItem.getItemId()) + .setGuid(useItem.getGuid()) + .build(); + + this.setData(proto); + } + + public PacketUseItemRsp() { + super(PacketOpcodes.UseItemRsp); + + UseItemRsp proto = UseItemRsp.newBuilder().setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleInteractRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleInteractRsp.java index d6863cc4e..7cc3cc93c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleInteractRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleInteractRsp.java @@ -1,67 +1,67 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.Grasscutter; import emu.grasscutter.game.entity.EntityVehicle; -import emu.grasscutter.game.player.Player; import emu.grasscutter.game.entity.GameEntity; - +import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; -import emu.grasscutter.net.proto.VehicleInteractTypeOuterClass.VehicleInteractType; import emu.grasscutter.net.proto.VehicleInteractRspOuterClass.VehicleInteractRsp; +import emu.grasscutter.net.proto.VehicleInteractTypeOuterClass.VehicleInteractType; import emu.grasscutter.net.proto.VehicleMemberOuterClass.VehicleMember; public class PacketVehicleInteractRsp extends BasePacket { - public PacketVehicleInteractRsp(Player player, int entityId, VehicleInteractType interactType) { - super(PacketOpcodes.VehicleInteractRsp); - VehicleInteractRsp.Builder proto = VehicleInteractRsp.newBuilder(); + public PacketVehicleInteractRsp(Player player, int entityId, VehicleInteractType interactType) { + super(PacketOpcodes.VehicleInteractRsp); + VehicleInteractRsp.Builder proto = VehicleInteractRsp.newBuilder(); - GameEntity vehicle = player.getScene().getEntityById(entityId); + GameEntity vehicle = player.getScene().getEntityById(entityId); - if(vehicle instanceof EntityVehicle) { - proto.setEntityId(vehicle.getId()); + if (vehicle instanceof EntityVehicle) { + proto.setEntityId(vehicle.getId()); - VehicleMember vehicleMember = VehicleMember.newBuilder() - .setUid(player.getUid()) - .setAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()) - .build(); + VehicleMember vehicleMember = VehicleMember.newBuilder() + .setUid(player.getUid()) + .setAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()) + .build(); - proto.setInteractType(interactType); - proto.setMember(vehicleMember); + proto.setInteractType(interactType); + proto.setMember(vehicleMember); - switch(interactType){ - case VEHICLE_INTERACT_TYPE_IN -> { - ((EntityVehicle) vehicle).getVehicleMembers().add(vehicleMember); - } - case VEHICLE_INTERACT_TYPE_OUT -> { - ((EntityVehicle) vehicle).getVehicleMembers().remove(vehicleMember); - } - default -> {} - } - } - this.setData(proto.build()); - } + switch (interactType) { + case VEHICLE_INTERACT_TYPE_IN -> { + ((EntityVehicle) vehicle).getVehicleMembers().add(vehicleMember); + } + case VEHICLE_INTERACT_TYPE_OUT -> { + ((EntityVehicle) vehicle).getVehicleMembers().remove(vehicleMember); + } + default -> { + } + } + } + this.setData(proto.build()); + } - public PacketVehicleInteractRsp(EntityVehicle vehicle, VehicleMember vehicleMember, VehicleInteractType interactType) { - super(PacketOpcodes.VehicleInteractRsp); - VehicleInteractRsp.Builder proto = VehicleInteractRsp.newBuilder(); + public PacketVehicleInteractRsp(EntityVehicle vehicle, VehicleMember vehicleMember, VehicleInteractType interactType) { + super(PacketOpcodes.VehicleInteractRsp); + VehicleInteractRsp.Builder proto = VehicleInteractRsp.newBuilder(); - if(vehicle != null) { - proto.setEntityId(vehicle.getId()); - proto.setInteractType(interactType); - proto.setMember(vehicleMember); + if (vehicle != null) { + proto.setEntityId(vehicle.getId()); + proto.setInteractType(interactType); + proto.setMember(vehicleMember); - switch(interactType){ - case VEHICLE_INTERACT_TYPE_IN -> { - vehicle.getVehicleMembers().add(vehicleMember); - } - case VEHICLE_INTERACT_TYPE_OUT -> { - vehicle.getVehicleMembers().remove(vehicleMember); - } - default -> {} - } - } - this.setData(proto.build()); - } + switch (interactType) { + case VEHICLE_INTERACT_TYPE_IN -> { + vehicle.getVehicleMembers().add(vehicleMember); + } + case VEHICLE_INTERACT_TYPE_OUT -> { + vehicle.getVehicleMembers().remove(vehicleMember); + } + default -> { + } + } + } + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleStaminaNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleStaminaNotify.java index 0a6a315e3..1510b1cc9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleStaminaNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketVehicleStaminaNotify.java @@ -6,13 +6,13 @@ import emu.grasscutter.net.proto.VehicleStaminaNotifyOuterClass.VehicleStaminaNo public class PacketVehicleStaminaNotify extends BasePacket { - public PacketVehicleStaminaNotify(int vehicleId, float newStamina) { - super(PacketOpcodes.VehicleStaminaNotify); - VehicleStaminaNotify.Builder proto = VehicleStaminaNotify.newBuilder(); + public PacketVehicleStaminaNotify(int vehicleId, float newStamina) { + super(PacketOpcodes.VehicleStaminaNotify); + VehicleStaminaNotify.Builder proto = VehicleStaminaNotify.newBuilder(); - proto.setEntityId(vehicleId); - proto.setCurStamina(newStamina); + proto.setEntityId(vehicleId); + proto.setCurStamina(newStamina); - this.setData(proto.build()); - } + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponAwakenRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponAwakenRsp.java index 77a4e21ed..e8557fb0d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponAwakenRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponAwakenRsp.java @@ -7,23 +7,23 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WeaponAwakenRspOuterClass.WeaponAwakenRsp; public class PacketWeaponAwakenRsp extends BasePacket { - - public PacketWeaponAwakenRsp(Avatar avatar, GameItem item, GameItem feedWeapon, int oldRefineLevel) { - super(PacketOpcodes.WeaponAwakenRsp); - WeaponAwakenRsp.Builder proto = WeaponAwakenRsp.newBuilder() - .setTargetWeaponGuid(item.getGuid()) - .setTargetWeaponAwakenLevel(item.getRefinement()); - - for (int affixId : item.getAffixes()) { - proto.putOldAffixLevelMap(affixId, oldRefineLevel); - proto.putCurAffixLevelMap(affixId, item.getRefinement()); - } - - if (avatar != null) { - proto.setAvatarGuid(avatar.getGuid()); - } - - this.setData(proto); - } + public PacketWeaponAwakenRsp(Avatar avatar, GameItem item, GameItem feedWeapon, int oldRefineLevel) { + super(PacketOpcodes.WeaponAwakenRsp); + + WeaponAwakenRsp.Builder proto = WeaponAwakenRsp.newBuilder() + .setTargetWeaponGuid(item.getGuid()) + .setTargetWeaponAwakenLevel(item.getRefinement()); + + for (int affixId : item.getAffixes()) { + proto.putOldAffixLevelMap(affixId, oldRefineLevel); + proto.putCurAffixLevelMap(affixId, item.getRefinement()); + } + + if (avatar != null) { + proto.setAvatarGuid(avatar.getGuid()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponPromoteRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponPromoteRsp.java index 02f02eab7..6bc17fdca 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponPromoteRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponPromoteRsp.java @@ -6,16 +6,16 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WeaponPromoteRspOuterClass.WeaponPromoteRsp; public class PacketWeaponPromoteRsp extends BasePacket { - - public PacketWeaponPromoteRsp(GameItem item, int oldPromoteLevel) { - super(PacketOpcodes.WeaponPromoteRsp); - WeaponPromoteRsp proto = WeaponPromoteRsp.newBuilder() - .setTargetWeaponGuid(item.getGuid()) - .setCurPromoteLevel(item.getPromoteLevel()) - .setOldPromoteLevel(oldPromoteLevel) - .build(); - - this.setData(proto); - } + public PacketWeaponPromoteRsp(GameItem item, int oldPromoteLevel) { + super(PacketOpcodes.WeaponPromoteRsp); + + WeaponPromoteRsp proto = WeaponPromoteRsp.newBuilder() + .setTargetWeaponGuid(item.getGuid()) + .setCurPromoteLevel(item.getPromoteLevel()) + .setOldPromoteLevel(oldPromoteLevel) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponUpgradeRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponUpgradeRsp.java index 2e0505d0e..5cd301177 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponUpgradeRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWeaponUpgradeRsp.java @@ -1,25 +1,25 @@ package emu.grasscutter.server.packet.send; -import java.util.List; - import emu.grasscutter.game.inventory.GameItem; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.WeaponUpgradeRspOuterClass.WeaponUpgradeRsp; +import java.util.List; + public class PacketWeaponUpgradeRsp extends BasePacket { - - public PacketWeaponUpgradeRsp(GameItem item, int oldLevel, List leftoverOres) { - super(PacketOpcodes.WeaponUpgradeRsp); - - WeaponUpgradeRsp proto = WeaponUpgradeRsp.newBuilder() - .setTargetWeaponGuid(item.getGuid()) - .setCurLevel(item.getLevel()) - .setOldLevel(oldLevel) - .addAllItemParamList(leftoverOres) - .build(); - - this.setData(proto); - } + + public PacketWeaponUpgradeRsp(GameItem item, int oldLevel, List leftoverOres) { + super(PacketOpcodes.WeaponUpgradeRsp); + + WeaponUpgradeRsp proto = WeaponUpgradeRsp.newBuilder() + .setTargetWeaponGuid(item.getGuid()) + .setCurLevel(item.getLevel()) + .setOldLevel(oldLevel) + .addAllItemParamList(leftoverOres) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWearEquipRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWearEquipRsp.java index 090e6f7bd..0a208716f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWearEquipRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWearEquipRsp.java @@ -6,14 +6,14 @@ import emu.grasscutter.net.proto.WearEquipRspOuterClass.WearEquipRsp; public class PacketWearEquipRsp extends BasePacket { - public PacketWearEquipRsp(long avatarGuid, long equipGuid) { - super(PacketOpcodes.WearEquipRsp); + public PacketWearEquipRsp(long avatarGuid, long equipGuid) { + super(PacketOpcodes.WearEquipRsp); - WearEquipRsp proto = WearEquipRsp.newBuilder() - .setAvatarGuid(avatarGuid) - .setEquipGuid(equipGuid) - .build(); + WearEquipRsp proto = WearEquipRsp.newBuilder() + .setAvatarGuid(avatarGuid) + .setEquipGuid(equipGuid) + .build(); - this.setData(proto); - } + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetCoolDownNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetCoolDownNotify.java index a73187020..7042236cd 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetCoolDownNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetCoolDownNotify.java @@ -11,14 +11,14 @@ public class PacketWidgetCoolDownNotify extends BasePacket { super(PacketOpcodes.WidgetCoolDownNotify); WidgetCoolDownNotifyOuterClass.WidgetCoolDownNotify proto = WidgetCoolDownNotifyOuterClass.WidgetCoolDownNotify.newBuilder() - .addGroupCoolDownDataList( - WidgetCoolDownDataOuterClass.WidgetCoolDownData.newBuilder() - .setId(id) - .setCoolDownTime(coolDownTime) - .setIsSuccess(isSuccess) - .build() - ) - .build(); + .addGroupCoolDownDataList( + WidgetCoolDownDataOuterClass.WidgetCoolDownData.newBuilder() + .setId(id) + .setCoolDownTime(coolDownTime) + .setIsSuccess(isSuccess) + .build() + ) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetDoBagRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetDoBagRsp.java index 7ce5065ea..e48ad8602 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetDoBagRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetDoBagRsp.java @@ -10,9 +10,9 @@ public class PacketWidgetDoBagRsp extends BasePacket { super(PacketOpcodes.WidgetDoBagRsp); WidgetDoBagRspOuterClass.WidgetDoBagRsp proto = WidgetDoBagRspOuterClass.WidgetDoBagRsp.newBuilder() - .setMaterialId(materialId) - .setRetcode(0) - .build(); + .setMaterialId(materialId) + .setRetcode(0) + .build(); this.setData(proto); } @@ -21,7 +21,7 @@ public class PacketWidgetDoBagRsp extends BasePacket { super(PacketOpcodes.WidgetDoBagRsp); WidgetDoBagRspOuterClass.WidgetDoBagRsp proto = WidgetDoBagRspOuterClass.WidgetDoBagRsp.newBuilder() - .build(); + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetGadgetDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetGadgetDataNotify.java index b8c777b85..88a66a981 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetGadgetDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetGadgetDataNotify.java @@ -9,33 +9,33 @@ import java.io.IOException; import java.util.List; public class PacketWidgetGadgetDataNotify extends BasePacket { - + public PacketWidgetGadgetDataNotify(int gadgetId, List gadgetEntityIdList) throws IOException { super(PacketOpcodes.WidgetGadgetDataNotify); WidgetGadgetDataNotifyOuterClass.WidgetGadgetDataNotify proto = WidgetGadgetDataNotifyOuterClass.WidgetGadgetDataNotify.newBuilder() - .setWidgetGadgetData( - WidgetGadgetDataOuterClass.WidgetGadgetData.newBuilder() - .setGadgetId(gadgetId) - .addAllGadgetEntityIdList(gadgetEntityIdList) - .build() - ) - .build(); + .setWidgetGadgetData( + WidgetGadgetDataOuterClass.WidgetGadgetData.newBuilder() + .setGadgetId(gadgetId) + .addAllGadgetEntityIdList(gadgetEntityIdList) + .build() + ) + .build(); this.setData(proto); } - + public PacketWidgetGadgetDataNotify(int gadgetId, int gadgetEntityIdList) throws IOException { super(PacketOpcodes.WidgetGadgetDataNotify); WidgetGadgetDataNotifyOuterClass.WidgetGadgetDataNotify proto = WidgetGadgetDataNotifyOuterClass.WidgetGadgetDataNotify.newBuilder() - .setWidgetGadgetData( - WidgetGadgetDataOuterClass.WidgetGadgetData.newBuilder() - .setGadgetId(gadgetId) - .addGadgetEntityIdList(gadgetEntityIdList) - .build() - ) - .build(); + .setWidgetGadgetData( + WidgetGadgetDataOuterClass.WidgetGadgetData.newBuilder() + .setGadgetId(gadgetId) + .addGadgetEntityIdList(gadgetEntityIdList) + .build() + ) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetSlotChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetSlotChangeNotify.java index ab0ace7eb..a2fef29b9 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetSlotChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWidgetSlotChangeNotify.java @@ -18,13 +18,13 @@ public class PacketWidgetSlotChangeNotify extends BasePacket { super(PacketOpcodes.WidgetSlotChangeNotify); WidgetSlotChangeNotifyOuterClass.WidgetSlotChangeNotify proto = WidgetSlotChangeNotifyOuterClass.WidgetSlotChangeNotify.newBuilder() - .setOp(op) - .setSlot( - WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() - .setIsActive(true) - .build() - ) - .build(); + .setOp(op) + .setSlot( + WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() + .setIsActive(true) + .build() + ) + .build(); this.setData(proto); } @@ -33,13 +33,13 @@ public class PacketWidgetSlotChangeNotify extends BasePacket { super(PacketOpcodes.WidgetSlotChangeNotify); WidgetSlotChangeNotifyOuterClass.WidgetSlotChangeNotify proto = WidgetSlotChangeNotifyOuterClass.WidgetSlotChangeNotify.newBuilder() - .setSlot( - WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() - .setIsActive(true) - .setMaterialId(materialId) - .build() - ) - .build(); + .setSlot( + WidgetSlotDataOuterClass.WidgetSlotData.newBuilder() + .setIsActive(true) + .setMaterialId(materialId) + .build() + ) + .build(); this.setData(proto); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorktopOptionNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorktopOptionNotify.java index ade64cf09..c2e032b0c 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorktopOptionNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorktopOptionNotify.java @@ -7,17 +7,17 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WorktopOptionNotifyOuterClass.WorktopOptionNotify; public class PacketWorktopOptionNotify extends BasePacket { - - public PacketWorktopOptionNotify(EntityGadget gadget) { - super(PacketOpcodes.WorktopOptionNotify); - - WorktopOptionNotify.Builder proto = WorktopOptionNotify.newBuilder() - .setGadgetEntityId(gadget.getId()); - - if (gadget.getContent() instanceof GadgetWorktop worktop) { - proto.addAllOptionList(worktop.getWorktopOptions()); - } - - this.setData(proto); - } + + public PacketWorktopOptionNotify(EntityGadget gadget) { + super(PacketOpcodes.WorktopOptionNotify); + + WorktopOptionNotify.Builder proto = WorktopOptionNotify.newBuilder() + .setGadgetEntityId(gadget.getId()); + + if (gadget.getContent() instanceof GadgetWorktop worktop) { + proto.addAllOptionList(worktop.getWorktopOptions()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldDataNotify.java index 159ca42a1..f05aa2937 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldDataNotify.java @@ -7,18 +7,18 @@ import emu.grasscutter.net.proto.PropValueOuterClass.PropValue; import emu.grasscutter.net.proto.WorldDataNotifyOuterClass.WorldDataNotify; public class PacketWorldDataNotify extends BasePacket { - - public PacketWorldDataNotify(World world) { - super(PacketOpcodes.WorldDataNotify); - - int worldLevel = world.getWorldLevel(); - int isMp = world.isMultiplayer() ? 1 : 0; - WorldDataNotify proto = WorldDataNotify.newBuilder() - .putWorldPropMap(1, PropValue.newBuilder().setType(1).setIval(worldLevel).setVal(worldLevel).build()) - .putWorldPropMap(2, PropValue.newBuilder().setType(2).setIval(isMp).setVal(isMp).build()) - .build(); + public PacketWorldDataNotify(World world) { + super(PacketOpcodes.WorldDataNotify); - this.setData(proto); - } + int worldLevel = world.getWorldLevel(); + int isMp = world.isMultiplayer() ? 1 : 0; + + WorldDataNotify proto = WorldDataNotify.newBuilder() + .putWorldPropMap(1, PropValue.newBuilder().setType(1).setIval(worldLevel).setVal(worldLevel).build()) + .putWorldPropMap(2, PropValue.newBuilder().setType(2).setIval(isMp).setVal(isMp).build()) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerDieNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerDieNotify.java index 4f9c839d9..aeead50ea 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerDieNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerDieNotify.java @@ -6,15 +6,15 @@ import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType; import emu.grasscutter.net.proto.WorldPlayerDieNotifyOuterClass.WorldPlayerDieNotify; public class PacketWorldPlayerDieNotify extends BasePacket { - - public PacketWorldPlayerDieNotify(PlayerDieType playerDieType, int killerId) { - super(PacketOpcodes.WorldPlayerDieNotify); - WorldPlayerDieNotify proto = WorldPlayerDieNotify.newBuilder() - .setDieType(playerDieType) - .setMonsterId(killerId) - .build(); - - this.setData(proto); - } + public PacketWorldPlayerDieNotify(PlayerDieType playerDieType, int killerId) { + super(PacketOpcodes.WorldPlayerDieNotify); + + WorldPlayerDieNotify proto = WorldPlayerDieNotify.newBuilder() + .setDieType(playerDieType) + .setMonsterId(killerId) + .build(); + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerInfoNotify.java index 64fef4f3e..a1e44e8b3 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerInfoNotify.java @@ -7,19 +7,19 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WorldPlayerInfoNotifyOuterClass.WorldPlayerInfoNotify; public class PacketWorldPlayerInfoNotify extends BasePacket { - - public PacketWorldPlayerInfoNotify(World world) { - super(PacketOpcodes.WorldPlayerInfoNotify); - - WorldPlayerInfoNotify.Builder proto = WorldPlayerInfoNotify.newBuilder(); - - for (int i = 0; i < world.getPlayers().size(); i++) { - Player p = world.getPlayers().get(i); - - proto.addPlayerInfoList(p.getOnlinePlayerInfo()); - proto.addPlayerUidList(p.getUid()); - } - - this.setData(proto.build()); - } + + public PacketWorldPlayerInfoNotify(World world) { + super(PacketOpcodes.WorldPlayerInfoNotify); + + WorldPlayerInfoNotify.Builder proto = WorldPlayerInfoNotify.newBuilder(); + + for (int i = 0; i < world.getPlayers().size(); i++) { + Player p = world.getPlayers().get(i); + + proto.addPlayerInfoList(p.getOnlinePlayerInfo()); + proto.addPlayerUidList(p.getUid()); + } + + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java index 0b6d3521c..25d8b673f 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java @@ -7,16 +7,16 @@ import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify; public class PacketWorldPlayerLocationNotify extends BasePacket { - - public PacketWorldPlayerLocationNotify(World world) { - super(PacketOpcodes.WorldPlayerLocationNotify); - WorldPlayerLocationNotify.Builder proto = WorldPlayerLocationNotify.newBuilder(); - - for (Player p : world.getPlayers()) { - proto.addPlayerWorldLocList(p.getWorldPlayerLocationInfo()); - } - - this.setData(proto); - } + public PacketWorldPlayerLocationNotify(World world) { + super(PacketOpcodes.WorldPlayerLocationNotify); + + WorldPlayerLocationNotify.Builder proto = WorldPlayerLocationNotify.newBuilder(); + + for (Player p : world.getPlayers()) { + proto.addPlayerWorldLocList(p.getWorldPlayerLocationInfo()); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerRTTNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerRTTNotify.java index 0ba3234d7..238b80f8b 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerRTTNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerRTTNotify.java @@ -8,20 +8,20 @@ import emu.grasscutter.net.proto.PlayerRTTInfoOuterClass.PlayerRTTInfo; import emu.grasscutter.net.proto.WorldPlayerRTTNotifyOuterClass.WorldPlayerRTTNotify; public class PacketWorldPlayerRTTNotify extends BasePacket { - - public PacketWorldPlayerRTTNotify(World world) { - super(PacketOpcodes.WorldPlayerRTTNotify); - - WorldPlayerRTTNotify.Builder proto = WorldPlayerRTTNotify.newBuilder(); - - for (Player player : world.getPlayers()) { - proto.addPlayerRttList( - PlayerRTTInfo.newBuilder() - .setUid(player.getUid()) - .setRtt(10) // TODO - put player ping here - ); - } - - this.setData(proto); - } + + public PacketWorldPlayerRTTNotify(World world) { + super(PacketOpcodes.WorldPlayerRTTNotify); + + WorldPlayerRTTNotify.Builder proto = WorldPlayerRTTNotify.newBuilder(); + + for (Player player : world.getPlayers()) { + proto.addPlayerRttList( + PlayerRTTInfo.newBuilder() + .setUid(player.getUid()) + .setRtt(10) // TODO - put player ping here + ); + } + + this.setData(proto); + } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerReviveRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerReviveRsp.java index ff93d2b00..4c57f3f13 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerReviveRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerReviveRsp.java @@ -1,18 +1,16 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.game.player.Player; -import emu.grasscutter.game.world.World; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.WorldPlayerReviveRspOuterClass.WorldPlayerReviveRsp; public class PacketWorldPlayerReviveRsp extends BasePacket { - public PacketWorldPlayerReviveRsp() { - super(PacketOpcodes.WorldPlayerReviveRsp); + public PacketWorldPlayerReviveRsp() { + super(PacketOpcodes.WorldPlayerReviveRsp); - WorldPlayerReviveRsp.Builder proto = WorldPlayerReviveRsp.newBuilder(); - - this.setData(proto.build()); - } + WorldPlayerReviveRsp.Builder proto = WorldPlayerReviveRsp.newBuilder(); + + this.setData(proto.build()); + } } diff --git a/src/main/java/emu/grasscutter/server/scheduler/AsyncServerTask.java b/src/main/java/emu/grasscutter/server/scheduler/AsyncServerTask.java index b44e614a4..c4149de6e 100644 --- a/src/main/java/emu/grasscutter/server/scheduler/AsyncServerTask.java +++ b/src/main/java/emu/grasscutter/server/scheduler/AsyncServerTask.java @@ -11,19 +11,23 @@ public final class AsyncServerTask implements Runnable { /* The runnable to run. */ private final Runnable task; /* This ID is assigned by the scheduler. */ - @Getter private final int taskId; + @Getter + private final int taskId; /* The result callback to run. */ - @Nullable private final Runnable callback; + @Nullable + private final Runnable callback; /* Has the task already been started? */ private boolean started = false; /* Has the task finished execution? */ private boolean finished = false; /* The result produced in the async task. */ - @Nullable private Object result = null; + @Nullable + private Object result = null; /** * For tasks without a callback. + * * @param task The task to run. */ public AsyncServerTask(Runnable task, int taskId) { @@ -32,7 +36,8 @@ public final class AsyncServerTask implements Runnable { /** * For tasks with a callback. - * @param task The task to run. + * + * @param task The task to run. * @param callback The task to run after the task is complete. */ public AsyncServerTask(Runnable task, @Nullable Runnable callback, int taskId) { @@ -43,6 +48,7 @@ public final class AsyncServerTask implements Runnable { /** * Returns the state of the task. + * * @return True if the task has been started, false otherwise. */ public boolean hasStarted() { @@ -51,6 +57,7 @@ public final class AsyncServerTask implements Runnable { /** * Returns the state of the task. + * * @return True if the task has finished execution, false otherwise. */ public boolean isFinished() { @@ -60,7 +67,8 @@ public final class AsyncServerTask implements Runnable { /** * Runs the task. */ - @Override public void run() { + @Override + public void run() { // Declare the task as started. this.started = true; @@ -76,23 +84,26 @@ public final class AsyncServerTask implements Runnable { */ public void complete() { // Run the callback. - if(this.callback != null) + if (this.callback != null) this.callback.run(); } + /** + * Returns the set result of the async task. + * + * @return The result, or null if it has not been set. + */ + @Nullable + public Object getResult() { + return this.result; + } + /** * Sets the result of the async task. + * * @param result The result of the async task. */ public void setResult(@Nullable Object result) { this.result = result; } - - /** - * Returns the set result of the async task. - * @return The result, or null if it has not been set. - */ - @Nullable public Object getResult() { - return this.result; - } } diff --git a/src/main/java/emu/grasscutter/server/scheduler/ServerTask.java b/src/main/java/emu/grasscutter/server/scheduler/ServerTask.java index 0b80547b8..60a63dba7 100644 --- a/src/main/java/emu/grasscutter/server/scheduler/ServerTask.java +++ b/src/main/java/emu/grasscutter/server/scheduler/ServerTask.java @@ -1,7 +1,7 @@ package emu.grasscutter.server.scheduler; import emu.grasscutter.Grasscutter; -import lombok.*; +import lombok.Getter; /** * This class works the same as a runnable, except with more information. @@ -10,11 +10,16 @@ public final class ServerTask implements Runnable { /* The runnable to run. */ private final Runnable runnable; /* This ID is assigned by the scheduler. */ - @Getter private final int taskId; + @Getter + private final int taskId; /* The period at which the task should be run. */ /* The delay between the first execute. */ private final int period, delay; - + /* The amount of times the task has been run. */ + @Getter + private int ticks = 0; + /* Should the check consider delay? */ + private boolean considerDelay = true; public ServerTask(Runnable runnable, int taskId, int period, int delay) { this.runnable = runnable; this.taskId = taskId; @@ -22,11 +27,6 @@ public final class ServerTask implements Runnable { this.delay = delay; } - /* The amount of times the task has been run. */ - @Getter private int ticks = 0; - /* Should the check consider delay? */ - private boolean considerDelay = true; - /** * Cancels the task from running the next time. */ @@ -36,19 +36,21 @@ public final class ServerTask implements Runnable { /** * Checks if the task should run at the current tick. + * * @return True if the task should run, false otherwise. */ public boolean shouldRun() { - if(this.delay != -1 && this.considerDelay) { + if (this.delay != -1 && this.considerDelay) { this.considerDelay = false; return this.ticks == this.delay; - } else if(this.period != -1) + } else if (this.period != -1) return this.ticks % this.period == 0; else return true; } /** * Checks if the task should be canceled. + * * @return True if the task should be canceled, false otherwise. */ public boolean shouldCancel() { @@ -58,10 +60,11 @@ public final class ServerTask implements Runnable { /** * Runs the task. */ - @Override public void run() { + @Override + public void run() { // Run the runnable. this.runnable.run(); // Increase tick count. this.ticks++; } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/server/scheduler/ServerTaskScheduler.java b/src/main/java/emu/grasscutter/server/scheduler/ServerTaskScheduler.java index f9bac4439..d8fae5bae 100644 --- a/src/main/java/emu/grasscutter/server/scheduler/ServerTaskScheduler.java +++ b/src/main/java/emu/grasscutter/server/scheduler/ServerTaskScheduler.java @@ -5,7 +5,7 @@ import java.util.concurrent.ConcurrentHashMap; /** * A class to manage all time-based tasks scheduled on the server. * This handles both synchronous and asynchronous tasks. - * + *

* Developers note: A server tick is ONE REAL-TIME SECOND. */ public final class ServerTaskScheduler { @@ -26,11 +26,11 @@ public final class ServerTaskScheduler { */ public void runTasks() { // Skip if there are no tasks. - if(this.tasks.size() == 0) + if (this.tasks.size() == 0) return; // Run all tasks. - for(ServerTask task : this.tasks.values()) { + for (ServerTask task : this.tasks.values()) { // Check if the task should run. if (task.shouldRun()) { // Run the task. @@ -45,13 +45,13 @@ public final class ServerTaskScheduler { } // Run all async tasks. - for(AsyncServerTask task : this.asyncTasks.values()) { - if(!task.hasStarted()) { + for (AsyncServerTask task : this.asyncTasks.values()) { + if (!task.hasStarted()) { // Create a thread for the task. Thread thread = new Thread(task); // Start the thread. thread.start(); - } else if(task.isFinished()) { + } else if (task.isFinished()) { // Cancel the task. this.asyncTasks.remove(task.getTaskId()); // Run the task's callback. @@ -62,6 +62,7 @@ public final class ServerTaskScheduler { /** * Gets a task from the scheduler. + * * @param taskId The ID of the task to get. * @return The task, or null if it does not exist. */ @@ -71,6 +72,7 @@ public final class ServerTaskScheduler { /** * Gets an async task from the scheduler. + * * @param taskId The ID of the task to get. * @return The task, or null if it does not exist. */ @@ -80,6 +82,7 @@ public final class ServerTaskScheduler { /** * Removes a task from the scheduler. + * * @param taskId The ID of the task to remove. */ public void cancelTask(int taskId) { @@ -89,6 +92,7 @@ public final class ServerTaskScheduler { /** * Schedules a task to be run on a separate thread. * The task runs on the next server tick. + * * @param runnable The runnable to run. * @return The ID of the task. */ @@ -103,6 +107,7 @@ public final class ServerTaskScheduler { /** * Schedules a task to be run on the next server tick. + * * @param runnable The runnable to run. * @return The ID of the task. */ @@ -112,8 +117,9 @@ public final class ServerTaskScheduler { /** * Schedules a task to be run after the amount of ticks has passed. + * * @param runnable The runnable to run. - * @param delay The amount of ticks to wait before running. + * @param delay The amount of ticks to wait before running. * @return The ID of the task. */ public int scheduleDelayedTask(Runnable runnable, int delay) { @@ -122,8 +128,9 @@ public final class ServerTaskScheduler { /** * Schedules a task to be run every amount of ticks. + * * @param runnable The runnable to run. - * @param period The amount of ticks to wait before running again. + * @param period The amount of ticks to wait before running again. * @return The ID of the task. */ public int scheduleRepeatingTask(Runnable runnable, int period) { @@ -132,9 +139,10 @@ public final class ServerTaskScheduler { /** * Schedules a task to be run after the amount of ticks has passed. + * * @param runnable The runnable to run. - * @param period The amount of ticks to wait before running again. - * @param delay The amount of ticks to wait before running the first time. + * @param period The amount of ticks to wait before running again. + * @param delay The amount of ticks to wait before running the first time. * @return The ID of the task. */ public int scheduleDelayedRepeatingTask(Runnable runnable, int period, int delay) { @@ -145,4 +153,4 @@ public final class ServerTaskScheduler { // Return the task ID. return taskId; } -} \ No newline at end of file +} diff --git a/src/main/java/emu/grasscutter/task/Task.java b/src/main/java/emu/grasscutter/task/Task.java index 2c930c0e3..5dc2e6555 100644 --- a/src/main/java/emu/grasscutter/task/Task.java +++ b/src/main/java/emu/grasscutter/task/Task.java @@ -1,32 +1,36 @@ -package emu.grasscutter.task; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - - -/* -* So what is cron expression? -The format of a Cron expression is as follows. -Second Minute Hour Day Month Week Year -Seconds: 0-59 -Minute: 0-59 -hour: 0-23 -Day: 1-31 -Month: 1-12 -Week: 1-7 (0-6 sometimes) -Year: Specify your own - -If you want to express every second or every minute or something like that, use the * symbol in that position; -if you want to express more than one such as every 15 minutes and every 30 minutes, you can write:`15, 30`. - -For the rest of the wildcard characters, please Google them yourself -*/ - -@Retention(RetentionPolicy.RUNTIME) -public @interface Task { - String taskName() default "NO_NAME"; - String taskCronExpression() default "0 0 0 0 0 ?"; - String triggerName() default "NO_NAME"; - boolean executeImmediatelyAfterReset() default false; - boolean executeImmediately() default false; -} +package emu.grasscutter.task; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + + +/* +* So what is cron expression? +The format of a Cron expression is as follows. +Second Minute Hour Day Month Week Year +Seconds: 0-59 +Minute: 0-59 +hour: 0-23 +Day: 1-31 +Month: 1-12 +Week: 1-7 (0-6 sometimes) +Year: Specify your own + +If you want to express every second or every minute or something like that, use the * symbol in that position; +if you want to express more than one such as every 15 minutes and every 30 minutes, you can write:`15, 30`. + +For the rest of the wildcard characters, please Google them yourself +*/ + +@Retention(RetentionPolicy.RUNTIME) +public @interface Task { + String taskName() default "NO_NAME"; + + String taskCronExpression() default "0 0 0 0 0 ?"; + + String triggerName() default "NO_NAME"; + + boolean executeImmediatelyAfterReset() default false; + + boolean executeImmediately() default false; +} diff --git a/src/main/java/emu/grasscutter/task/TaskHandler.java b/src/main/java/emu/grasscutter/task/TaskHandler.java index bf2b9850a..e60a81fa6 100644 --- a/src/main/java/emu/grasscutter/task/TaskHandler.java +++ b/src/main/java/emu/grasscutter/task/TaskHandler.java @@ -1,14 +1,16 @@ -package emu.grasscutter.task; - -import org.quartz.*; - -@PersistJobDataAfterExecution -public abstract class TaskHandler implements Job { - public void restartExecute() throws JobExecutionException { - execute(null); - } - - public abstract void onEnable(); - - public abstract void onDisable(); -} +package emu.grasscutter.task; + +import org.quartz.Job; +import org.quartz.JobExecutionException; +import org.quartz.PersistJobDataAfterExecution; + +@PersistJobDataAfterExecution +public abstract class TaskHandler implements Job { + public void restartExecute() throws JobExecutionException { + execute(null); + } + + public abstract void onEnable(); + + public abstract void onDisable(); +} diff --git a/src/main/java/emu/grasscutter/task/TaskMap.java b/src/main/java/emu/grasscutter/task/TaskMap.java index 99201d981..75e23f05a 100644 --- a/src/main/java/emu/grasscutter/task/TaskMap.java +++ b/src/main/java/emu/grasscutter/task/TaskMap.java @@ -1,7 +1,6 @@ package emu.grasscutter.task; import emu.grasscutter.Grasscutter; - import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.reflections.Reflections; @@ -110,14 +109,14 @@ public final class TaskMap { try { Scheduler scheduler = schedulerFactory.getScheduler(); JobDetail job = JobBuilder - .newJob(task.getClass()) - .withIdentity(taskName) - .build(); + .newJob(task.getClass()) + .withIdentity(taskName) + .build(); Trigger convTrigger = TriggerBuilder.newTrigger() - .withIdentity(annotation.triggerName()) - .withSchedule(CronScheduleBuilder.cronSchedule(annotation.taskCronExpression())) - .build(); + .withIdentity(annotation.triggerName()) + .withSchedule(CronScheduleBuilder.cronSchedule(annotation.taskCronExpression())) + .build(); scheduler.scheduleJob(job, convTrigger); diff --git a/src/main/java/emu/grasscutter/task/tasks/AnnouncementTask.java b/src/main/java/emu/grasscutter/task/tasks/AnnouncementTask.java index a8d99698e..c8741c571 100644 --- a/src/main/java/emu/grasscutter/task/tasks/AnnouncementTask.java +++ b/src/main/java/emu/grasscutter/task/tasks/AnnouncementTask.java @@ -16,6 +16,7 @@ import java.util.stream.Collectors; public final class AnnouncementTask extends TaskHandler { static Map intervalMap = new ConcurrentHashMap<>(); + @Override public void onEnable() { Grasscutter.getLogger().debug("[Task] Announcement task enabled."); @@ -35,7 +36,7 @@ public final class AnnouncementTask extends TaskHandler { .filter(i -> current.before(i.getEndTime())) .collect(Collectors.toMap(AnnouncementSystem.AnnounceConfigItem::getTemplateId, y -> y)); - announceConfigItems.values().forEach(i -> intervalMap.compute(i.getTemplateId(), (k,v) -> v == null ? 1 : v + 1)); + announceConfigItems.values().forEach(i -> intervalMap.compute(i.getTemplateId(), (k, v) -> v == null ? 1 : v + 1)); var toSend = intervalMap.entrySet().stream() .filter(i -> announceConfigItems.containsKey(i.getKey())) diff --git a/src/main/java/emu/grasscutter/task/tasks/MoonCard.java b/src/main/java/emu/grasscutter/task/tasks/MoonCard.java index 2d51151c1..b9fb176be 100644 --- a/src/main/java/emu/grasscutter/task/tasks/MoonCard.java +++ b/src/main/java/emu/grasscutter/task/tasks/MoonCard.java @@ -1,34 +1,33 @@ -package emu.grasscutter.task.tasks; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.task.Task; -import emu.grasscutter.task.TaskHandler; - -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -@Task(taskName = "MoonCard", taskCronExpression = "0 0 0 * * ?", triggerName = "MoonCardTrigger") -// taskCronExpression: Fixed time period: 0:0:0 every day (twenty-four hour system) -public final class MoonCard extends TaskHandler { - - @Override - public void onEnable() { - Grasscutter.getLogger().debug("[Task] MoonCard task enabled."); - } - - @Override - public void onDisable() { - Grasscutter.getLogger().debug("[Task] MoonCard task disabled."); - } - - @Override - public synchronized void execute(JobExecutionContext context) throws JobExecutionException { - Grasscutter.getGameServer().getPlayers().forEach((uid, player) -> { - if (player.isOnline()) { - if (player.inMoonCard()) { - player.getTodayMoonCard(); - } - } - }); - } -} +package emu.grasscutter.task.tasks; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.task.Task; +import emu.grasscutter.task.TaskHandler; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +@Task(taskName = "MoonCard", taskCronExpression = "0 0 0 * * ?", triggerName = "MoonCardTrigger") +// taskCronExpression: Fixed time period: 0:0:0 every day (twenty-four hour system) +public final class MoonCard extends TaskHandler { + + @Override + public void onEnable() { + Grasscutter.getLogger().debug("[Task] MoonCard task enabled."); + } + + @Override + public void onDisable() { + Grasscutter.getLogger().debug("[Task] MoonCard task disabled."); + } + + @Override + public synchronized void execute(JobExecutionContext context) throws JobExecutionException { + Grasscutter.getGameServer().getPlayers().forEach((uid, player) -> { + if (player.isOnline()) { + if (player.inMoonCard()) { + player.getTodayMoonCard(); + } + } + }); + } +} diff --git a/src/main/java/emu/grasscutter/tools/Dumpers.java b/src/main/java/emu/grasscutter/tools/Dumpers.java index ac77f01ab..75df3b17e 100644 --- a/src/main/java/emu/grasscutter/tools/Dumpers.java +++ b/src/main/java/emu/grasscutter/tools/Dumpers.java @@ -1,9 +1,5 @@ package emu.grasscutter.tools; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp; import emu.grasscutter.net.proto.GetShopRspOuterClass.GetShopRsp; diff --git a/src/main/java/emu/grasscutter/tools/Tools.java b/src/main/java/emu/grasscutter/tools/Tools.java index 0eb555159..2bb6e4167 100644 --- a/src/main/java/emu/grasscutter/tools/Tools.java +++ b/src/main/java/emu/grasscutter/tools/Tools.java @@ -1,10 +1,22 @@ package emu.grasscutter.tools; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; +import emu.grasscutter.GameConstants; +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.command.CommandMap; +import emu.grasscutter.data.GameData; +import emu.grasscutter.data.ResourceLoader; +import emu.grasscutter.data.excels.AchievementData; +import emu.grasscutter.data.excels.AvatarData; +import emu.grasscutter.data.excels.ItemData; +import emu.grasscutter.game.inventory.MaterialType; +import emu.grasscutter.utils.Language; +import emu.grasscutter.utils.Language.TextStrings; +import it.unimi.dsi.fastutil.ints.Int2IntRBTreeMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap; +import lombok.val; + +import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -16,27 +28,13 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.LongStream; -import emu.grasscutter.GameConstants; -import emu.grasscutter.Grasscutter; -import emu.grasscutter.command.CommandHandler; -import emu.grasscutter.command.CommandMap; -import emu.grasscutter.data.GameData; -import emu.grasscutter.data.ResourceLoader; -import emu.grasscutter.data.excels.AchievementData; -import emu.grasscutter.data.excels.AvatarData; -import emu.grasscutter.data.excels.ItemData; -import emu.grasscutter.utils.Language; -import emu.grasscutter.utils.Language.TextStrings; -import it.unimi.dsi.fastutil.ints.Int2IntRBTreeMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap; -import lombok.val; - import static emu.grasscutter.utils.FileUtils.getResourcePath; import static emu.grasscutter.utils.Language.getTextMapKey; public final class Tools { /** * This generates the GM handbooks with a message by default. + * * @throws Exception If an error occurs while generating the handbooks. */ public static void createGmHandbooks() throws Exception { @@ -45,6 +43,7 @@ public final class Tools { /** * Generates a GM handbook for each language. + * * @param message Should a message be printed to the console? * @throws Exception If an error occurs while generating the handbooks. */ @@ -52,7 +51,7 @@ public final class Tools { val languages = Language.TextStrings.getLanguages(); ResourceLoader.loadAll(); - val mainQuestTitles = new Int2IntRBTreeMap(GameData.getMainQuestDataMap().int2ObjectEntrySet().stream().collect(Collectors.toMap(e -> (int) e.getIntKey(), e -> (int) e.getValue().getTitleTextMapHash()))); + val mainQuestTitles = new Int2IntRBTreeMap(GameData.getMainQuestDataMap().int2ObjectEntrySet().stream().collect(Collectors.toMap(e -> e.getIntKey(), e -> (int) e.getValue().getTitleTextMapHash()))); // val questDescs = new Int2IntRBTreeMap(GameData.getQuestDataMap().int2ObjectEntrySet().stream().collect(Collectors.toMap(e -> (int) e.getIntKey(), e -> (int) e.getValue().getDescTextMapHash()))); val avatarDataMap = new Int2ObjectRBTreeMap<>(GameData.getAvatarDataMap()); @@ -70,17 +69,20 @@ public final class Tools { void newLine(String line) { handbookBuilders.forEach(b -> b.append(line + "\n")); } + void newSection(String title) { newLine("\n\n// " + title); } + void newTranslatedLine(String template, TextStrings... textstrings) { for (int i = 0; i < TextStrings.NUM_LANGUAGES; i++) { String s = template; for (int j = 0; j < textstrings.length; j++) - s = s.replace("{"+j+"}", textstrings[j].strings[i]); + s = s.replace("{" + j + "}", textstrings[j].strings[i]); handbookBuilders.get(i).append(s + "\n"); } } + void newTranslatedLine(String template, long... hashes) { newTranslatedLine(template, LongStream.of(hashes).mapToObj(hash -> getTextMapKey(hash)).toArray(TextStrings[]::new)); } @@ -93,7 +95,7 @@ public final class Tools { // Commands h.newSection("Commands"); final List cmdList = CommandMap.getInstance().getHandlersAsList(); - final String padCmdLabel = "%" + cmdList.stream().map(CommandHandler::getLabel).map(String::length).max(Integer::compare).get().toString() + "s : "; + final String padCmdLabel = "%" + cmdList.stream().map(CommandHandler::getLabel).map(String::length).max(Integer::compare).get() + "s : "; for (CommandHandler cmd : cmdList) { final String label = padCmdLabel.formatted(cmd.getLabel()); final String descKey = cmd.getDescriptionKey(); @@ -111,24 +113,21 @@ public final class Tools { val itemPre = getPad.apply(itemDataMap); itemDataMap.forEach((id, data) -> { val name = getTextMapKey(data.getNameTextMapHash()); - switch (data.getMaterialType()) { - case MATERIAL_BGM: - val bgmName = Optional.ofNullable(data.getItemUse()) - .map(u -> u.get(0)) - .map(u -> u.getUseParam()) - .filter(u -> u.length > 0) - .map(u -> Integer.parseInt(u[0])) - .map(bgmId -> GameData.getHomeWorldBgmDataMap().get(bgmId)) - .map(bgm -> bgm.getBgmNameTextMapHash()) - .map(hash -> getTextMapKey(hash)); - if (bgmName.isPresent()) { - h.newTranslatedLine(itemPre.formatted(id) + "{0} - {1}", name, bgmName.get()); - return; - } // Fall-through - default: - h.newTranslatedLine(itemPre.formatted(id) + "{0}", name); + if (Objects.requireNonNull(data.getMaterialType()) == MaterialType.MATERIAL_BGM) { + val bgmName = Optional.ofNullable(data.getItemUse()) + .map(u -> u.get(0)) + .map(u -> u.getUseParam()) + .filter(u -> u.length > 0) + .map(u -> Integer.parseInt(u[0])) + .map(bgmId -> GameData.getHomeWorldBgmDataMap().get(bgmId)) + .map(bgm -> bgm.getBgmNameTextMapHash()) + .map(hash -> getTextMapKey(hash)); + if (bgmName.isPresent()) { + h.newTranslatedLine(itemPre.formatted(id) + "{0} - {1}", name, bgmName.get()); return; + } // Fall-through } + h.newTranslatedLine(itemPre.formatted(id) + "{0}", name); }); // Monsters h.newSection("Monsters"); @@ -158,7 +157,7 @@ public final class Tools { // Write txt files for (int i = 0; i < TextStrings.NUM_LANGUAGES; i++) { - File GMHandbookOutputpath=new File("./GM Handbook"); + File GMHandbookOutputpath = new File("./GM Handbook"); GMHandbookOutputpath.mkdir(); final String fileName = "./GM Handbook/GM Handbook - %s.txt".formatted(TextStrings.ARR_LANGUAGES[i]); try (PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8), false)) { @@ -295,10 +294,11 @@ public final class Tools { StringBuilder stagedMessage = new StringBuilder(); stagedMessage.append("The following languages mappings are available, please select one: [default: EN] \n"); - StringBuilder groupedLangList = new StringBuilder(">\t"); String input; + StringBuilder groupedLangList = new StringBuilder(">\t"); + String input; int groupedLangCount = 0; - for (String availableLanguage: availableLangList) { + for (String availableLanguage : availableLangList) { groupedLangCount++; groupedLangList.append(availableLanguage).append("\t"); @@ -320,6 +320,7 @@ public final class Tools { return input.toUpperCase(); } - Grasscutter.getLogger().info("Invalid option. Will use EN (English) as fallback."); return "EN"; + Grasscutter.getLogger().info("Invalid option. Will use EN (English) as fallback."); + return "EN"; } } diff --git a/src/main/java/emu/grasscutter/utils/Crypto.java b/src/main/java/emu/grasscutter/utils/Crypto.java index f0da36ea6..d483dd4a5 100644 --- a/src/main/java/emu/grasscutter/utils/Crypto.java +++ b/src/main/java/emu/grasscutter/utils/Crypto.java @@ -1,6 +1,7 @@ package emu.grasscutter.utils; -import java.io.File; +import emu.grasscutter.Grasscutter; + import java.nio.file.Path; import java.security.KeyFactory; import java.security.PrivateKey; @@ -8,12 +9,10 @@ import java.security.PublicKey; import java.security.SecureRandom; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; -import java.util.Map; import java.util.HashMap; +import java.util.Map; import java.util.regex.Pattern; -import emu.grasscutter.Grasscutter; - public final class Crypto { private static final SecureRandom secureRandom = new SecureRandom(); @@ -45,8 +44,7 @@ public final class Crypto { var m = pattern.matcher(path.getFileName().toString()); - if (m.matches()) - { + if (m.matches()) { var key = KeyFactory.getInstance("RSA") .generatePublic(new X509EncodedKeySpec(FileUtils.read(path))); @@ -54,8 +52,7 @@ public final class Crypto { } } } - } - catch (Exception e) { + } catch (Exception e) { Grasscutter.getLogger().error("An error occurred while loading keys.", e); } } diff --git a/src/main/java/emu/grasscutter/utils/DateHelper.java b/src/main/java/emu/grasscutter/utils/DateHelper.java index 1f1393760..f78eec584 100644 --- a/src/main/java/emu/grasscutter/utils/DateHelper.java +++ b/src/main/java/emu/grasscutter/utils/DateHelper.java @@ -1,20 +1,20 @@ -package emu.grasscutter.utils; - -import java.util.Calendar; -import java.util.Date; - -public final class DateHelper { - public static Date onlyYearMonthDay(Date now) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(now); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - return calendar.getTime(); - } - - public static int getUnixTime(Date localDateTime){ - return (int)(localDateTime.getTime() / 1000L); - } -} +package emu.grasscutter.utils; + +import java.util.Calendar; +import java.util.Date; + +public final class DateHelper { + public static Date onlyYearMonthDay(Date now) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(now); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + return calendar.getTime(); + } + + public static int getUnixTime(Date localDateTime) { + return (int) (localDateTime.getTime() / 1000L); + } +} diff --git a/src/main/java/emu/grasscutter/utils/FileUtils.java b/src/main/java/emu/grasscutter/utils/FileUtils.java index 75d54fc3b..78bbabe7f 100644 --- a/src/main/java/emu/grasscutter/utils/FileUtils.java +++ b/src/main/java/emu/grasscutter/utils/FileUtils.java @@ -8,7 +8,10 @@ import java.io.IOException; import java.io.InputStream; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; -import java.nio.file.*; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -21,6 +24,8 @@ public final class FileUtils { private static final Path PLUGINS_PATH = Path.of(Grasscutter.config.folderStructure.plugins); private static final Path RESOURCES_PATH; private static final Path SCRIPTS_PATH; + private static final String[] TSJ_JSON_TSV = {"tsj", "json", "tsv"}; + static { FileSystem fs = null; Path path = null; @@ -36,7 +41,7 @@ public final class FileUtils { path = Path.of(uri); // Can access directly break; default: - Grasscutter.getLogger().error("Invalid URI scheme for class resources: "+uri.getScheme()); + Grasscutter.getLogger().error("Invalid URI scheme for class resources: " + uri.getScheme()); break; } } catch (URISyntaxException | IOException e) { @@ -44,7 +49,7 @@ public final class FileUtils { Grasscutter.getLogger().error("Failed to load jar?!"); } finally { DATA_DEFAULT_PATH = path; - Grasscutter.getLogger().debug("Setting path for default data: "+path.toAbsolutePath()); + Grasscutter.getLogger().debug("Setting path for default data: " + path.toAbsolutePath()); } // Setup Resources path @@ -62,16 +67,16 @@ public final class FileUtils { if (fs != null) { var root = fs.getPath(""); try (Stream pathStream = Files.find(root, 3, (p, a) -> { - var filename = p.getFileName(); - if (filename == null) return false; - return filename.toString().equals("ExcelBinOutput"); + var filename = p.getFileName(); + if (filename == null) return false; + return filename.toString().equals("ExcelBinOutput"); })) { var excelBinOutput = pathStream.findFirst(); if (excelBinOutput.isPresent()) { path = excelBinOutput.get().getParent(); if (path == null) path = root; - Grasscutter.getLogger().debug("Resources will be loaded from \"" + resources + "/" + path.toString() + "\""); + Grasscutter.getLogger().debug("Resources will be loaded from \"" + resources + "/" + path + "\""); } else { Grasscutter.getLogger().error("Failed to find ExcelBinOutput in resources zip \"" + resources + "\""); } @@ -86,13 +91,15 @@ public final class FileUtils { SCRIPTS_PATH = (scripts.startsWith("resources:")) ? RESOURCES_PATH.resolve(scripts.substring("resources:".length())) : Path.of(scripts); - }; + } - private static final String[] TSJ_JSON_TSV = {"tsj", "json", "tsv"}; + /* Apply after initialization. */ private static final Path[] DATA_PATHS = {DATA_USER_PATH, DATA_DEFAULT_PATH}; + public static Path getDataPathTsjJsonTsv(String filename) { return getDataPathTsjJsonTsv(filename, true); } + public static Path getDataPathTsjJsonTsv(String filename, boolean fallback) { val name = getFilenameWithoutExtension(filename); for (val data_path : DATA_PATHS) { @@ -204,6 +211,7 @@ public final class FileUtils { public static String getFilenameWithoutPath(String filename) { return getFilenameWithoutExtension(filename); } + public static String getFilenameWithoutExtension(String filename) { int i = filename.lastIndexOf("."); return (i < 0) ? filename : filename.substring(0, i); @@ -212,21 +220,21 @@ public final class FileUtils { public static String getFileExtension(Path path) { val filename = path.toString(); int i = filename.lastIndexOf("."); - return (i < 0) ? "" : filename.substring(i+1); + return (i < 0) ? "" : filename.substring(i + 1); } public static List getPathsFromResource(String folder) throws URISyntaxException { try { // file walks JAR return Files.walk(Path.of(Grasscutter.class.getResource(folder).toURI())) - .filter(Files::isRegularFile) - .collect(Collectors.toList()); + .filter(Files::isRegularFile) + .collect(Collectors.toList()); } catch (IOException e) { // Eclipse puts resources in its bin folder try { return Files.walk(Path.of(System.getProperty("user.dir"), folder)) - .filter(Files::isRegularFile) - .collect(Collectors.toList()); + .filter(Files::isRegularFile) + .collect(Collectors.toList()); } catch (IOException ignored) { return null; } diff --git a/src/main/java/emu/grasscutter/utils/JlineLogbackAppender.java b/src/main/java/emu/grasscutter/utils/JlineLogbackAppender.java index 9b2dc3f20..2d066dcd3 100644 --- a/src/main/java/emu/grasscutter/utils/JlineLogbackAppender.java +++ b/src/main/java/emu/grasscutter/utils/JlineLogbackAppender.java @@ -3,7 +3,6 @@ package emu.grasscutter.utils; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.ConsoleAppender; import emu.grasscutter.Grasscutter; -import org.jline.reader.LineReader; import java.util.Arrays; @@ -14,7 +13,7 @@ public class JlineLogbackAppender extends ConsoleAppender { return; } Arrays.stream( - new String(encoder.encode(eventObject)).split("\n\r") + new String(encoder.encode(eventObject)).split("\n\r") ).forEach(Grasscutter.getConsole()::printAbove); } } diff --git a/src/main/java/emu/grasscutter/utils/JsonAdapters.java b/src/main/java/emu/grasscutter/utils/JsonAdapters.java index 5ffb55aba..457c8315e 100644 --- a/src/main/java/emu/grasscutter/utils/JsonAdapters.java +++ b/src/main/java/emu/grasscutter/utils/JsonAdapters.java @@ -1,10 +1,5 @@ package emu.grasscutter.utils; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; - import com.google.gson.Gson; import com.google.gson.TypeAdapter; import com.google.gson.TypeAdapterFactory; @@ -12,16 +7,17 @@ import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; - import emu.grasscutter.data.common.DynamicFloat; import it.unimi.dsi.fastutil.floats.FloatArrayList; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import lombok.val; -import static com.google.gson.stream.JsonToken.BEGIN_ARRAY; -import static com.google.gson.stream.JsonToken.BEGIN_OBJECT; -import static emu.grasscutter.utils.JsonUtils.gson; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Objects; public class JsonAdapters { static class DynamicFloatAdapter extends TypeAdapter { @@ -42,7 +38,8 @@ public class JsonAdapters { case STRING -> new DynamicFloat.StackOp(reader.nextString()); case NUMBER -> new DynamicFloat.StackOp((float) reader.nextDouble()); case BOOLEAN -> new DynamicFloat.StackOp(reader.nextBoolean()); - default -> throw new IOException("Invalid DynamicFloat definition - " + reader.peek().name()); + default -> + throw new IOException("Invalid DynamicFloat definition - " + reader.peek().name()); }); } reader.endArray(); @@ -53,24 +50,24 @@ public class JsonAdapters { } @Override - public void write(JsonWriter writer, DynamicFloat f) {}; + public void write(JsonWriter writer, DynamicFloat f) { + } + } static class IntListAdapter extends TypeAdapter { @Override public IntList read(JsonReader reader) throws IOException { - switch (reader.peek()) { - case BEGIN_ARRAY: - reader.beginArray(); - val i = new IntArrayList(); - while (reader.hasNext()) - i.add(reader.nextInt()); - reader.endArray(); - i.trim(); // We might have a ton of these from resources and almost all of them immutable, don't overprovision! - return i; - default: - throw new IOException("Invalid IntList definition - " + reader.peek().name()); + if (Objects.requireNonNull(reader.peek()) == JsonToken.BEGIN_ARRAY) { + reader.beginArray(); + val i = new IntArrayList(); + while (reader.hasNext()) + i.add(reader.nextInt()); + reader.endArray(); + i.trim(); // We might have a ton of these from resources and almost all of them immutable, don't overprovision! + return i; } + throw new IOException("Invalid IntList definition - " + reader.peek().name()); } @Override @@ -79,7 +76,8 @@ public class JsonAdapters { for (val i : l) // .forEach() doesn't appreciate exceptions writer.value(i); writer.endArray(); - }; + } + } static class PositionAdapter extends TypeAdapter { @@ -121,7 +119,8 @@ public class JsonAdapters { writer.value(i.getY()); writer.value(i.getZ()); writer.endArray(); - }; + } + } static class EnumTypeAdapterFactory implements TypeAdapterFactory { @@ -139,7 +138,10 @@ public class JsonAdapters { // If the enum also has a numeric value, map those to the constants too // System.out.println("Looking for enum value field"); for (Field f : enumClass.getDeclaredFields()) { - if (switch (f.getName()) {case "value", "id" -> true; default -> false;}) { + if (switch (f.getName()) { + case "value", "id" -> true; + default -> false; + }) { // System.out.println("Enum value field found - " + f.getName()); boolean acc = f.isAccessible(); f.setAccessible(true); @@ -165,6 +167,7 @@ public class JsonAdapters { throw new IOException("Invalid Enum definition - " + reader.peek().name()); } } + public void write(JsonWriter writer, T value) throws IOException { writer.value(value.toString()); } diff --git a/src/main/java/emu/grasscutter/utils/JsonUtils.java b/src/main/java/emu/grasscutter/utils/JsonUtils.java index a5f3edb63..a7bc65e62 100644 --- a/src/main/java/emu/grasscutter/utils/JsonUtils.java +++ b/src/main/java/emu/grasscutter/utils/JsonUtils.java @@ -1,5 +1,17 @@ package emu.grasscutter.utils; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonSyntaxException; +import com.google.gson.reflect.TypeToken; +import emu.grasscutter.data.common.DynamicFloat; +import emu.grasscutter.utils.JsonAdapters.DynamicFloatAdapter; +import emu.grasscutter.utils.JsonAdapters.EnumTypeAdapterFactory; +import emu.grasscutter.utils.JsonAdapters.IntListAdapter; +import emu.grasscutter.utils.JsonAdapters.PositionAdapter; +import it.unimi.dsi.fastutil.ints.IntList; + import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; @@ -11,17 +23,6 @@ import java.nio.file.Path; import java.util.List; import java.util.Map; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonSyntaxException; -import com.google.gson.reflect.TypeToken; - -import emu.grasscutter.data.common.DynamicFloat; -import emu.grasscutter.utils.JsonAdapters.*; - -import it.unimi.dsi.fastutil.ints.IntList; - public final class JsonUtils { static final Gson gson = new GsonBuilder() .setPrettyPrinting() @@ -76,18 +77,18 @@ public final class JsonUtils { } } - public static Map loadToMap(Reader fileReader, Class keyType, Class valueType) throws IOException { + public static Map loadToMap(Reader fileReader, Class keyType, Class valueType) throws IOException { return gson.fromJson(fileReader, TypeToken.getParameterized(Map.class, keyType, valueType).getType()); } @Deprecated(forRemoval = true) - public static Map loadToMap(String filename, Class keyType, Class valueType) throws IOException { + public static Map loadToMap(String filename, Class keyType, Class valueType) throws IOException { try (InputStreamReader fileReader = new InputStreamReader(new FileInputStream(Utils.toFilePath(filename)), StandardCharsets.UTF_8)) { return loadToMap(fileReader, keyType, valueType); } } - public static Map loadToMap(Path filename, Class keyType, Class valueType) throws IOException { + public static Map loadToMap(Path filename, Class keyType, Class valueType) throws IOException { try (var fileReader = Files.newBufferedReader(filename, StandardCharsets.UTF_8)) { return loadToMap(fileReader, keyType, valueType); } @@ -95,6 +96,7 @@ public final class JsonUtils { /** * Safely JSON decodes a given string. + * * @param jsonData The JSON-encoded data. * @return JSON decoded data, or null if an exception occurred. */ diff --git a/src/main/java/emu/grasscutter/utils/Language.java b/src/main/java/emu/grasscutter/utils/Language.java index 798f7cd37..f92bdc090 100644 --- a/src/main/java/emu/grasscutter/utils/Language.java +++ b/src/main/java/emu/grasscutter/utils/Language.java @@ -15,41 +15,52 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.EqualsAndHashCode; -import static emu.grasscutter.config.Configuration.*; -import static emu.grasscutter.utils.FileUtils.getResourcePath; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.Serializable; +import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.IntStream; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; + +import static emu.grasscutter.config.Configuration.FALLBACK_LANGUAGE; +import static emu.grasscutter.utils.FileUtils.getResourcePath; public final class Language { private static final Map cachedLanguages = new ConcurrentHashMap<>(); - + private static final int TEXTMAP_CACHE_VERSION = 0x9CCACE04; + private static final Pattern textMapKeyValueRegex = Pattern.compile("\"(\\d+)\": \"(.+)\""); + private static final Path TEXTMAP_CACHE_PATH = Path.of(Utils.toFilePath("cache/TextMapCache.bin")); + private static boolean scannedTextmaps = false; // Ensure that we don't infinitely rescan on cache misses that don't exist + private static Int2ObjectMap textMapStrings; private final String languageCode; private final Map translations = new ConcurrentHashMap<>(); - private static boolean scannedTextmaps = false; // Ensure that we don't infinitely rescan on cache misses that don't exist + + /** + * Reads a file and creates a language instance. + */ + private Language(LanguageStreamDescription description) { + languageCode = description.getLanguageCode(); + + try { + var object = JsonUtils.decode(Utils.readFromInputStream(description.getLanguageFile()), JsonObject.class); + object.entrySet().forEach(entry -> putFlattenedKey(translations, entry.getKey(), entry.getValue())); + } catch (Exception exception) { + Grasscutter.getLogger().warn("Failed to load language file: " + description.getLanguageCode(), exception); + } + } /** * Creates a language instance from a code. + * * @param langCode The language code. * @return A language instance. */ @@ -76,7 +87,8 @@ public final class Language { /** * Returns the translated value from the key while substituting arguments. - * @param key The key of the translated value to return. + * + * @param key The key of the translated value to return. * @param args The arguments to substitute. * @return A translated value with arguments substituted. */ @@ -86,7 +98,8 @@ public final class Language { for (int i = 0; i < args.length; i++) { args[i] = switch (args[i].getClass().getSimpleName()) { case "String" -> args[i]; - case "TextStrings" -> ((TextStrings) args[i]).get(0).replace("\\\\n", "\\n"); // TODO: Change this to server language + case "TextStrings" -> + ((TextStrings) args[i]).get(0).replace("\\\\n", "\\n"); // TODO: Change this to server language default -> args[i].toString(); }; } @@ -101,9 +114,10 @@ public final class Language { /** * Returns the translated value from the key while substituting arguments. + * * @param player Target player - * @param key The key of the translated value to return. - * @param args The arguments to substitute. + * @param key The key of the translated value to return. + * @param args The arguments to substitute. * @return A translated value with arguments substituted. */ public static String translate(Player player, String key, Object... args) { @@ -117,7 +131,8 @@ public final class Language { for (int i = 0; i < args.length; i++) { args[i] = switch (args[i].getClass().getSimpleName()) { case "String" -> args[i]; - case "TextStrings" -> ((TextStrings) args[i]).getGC(langCode).replace("\\\\n", "\n"); // Note that we don't unescape \n for server console + case "TextStrings" -> + ((TextStrings) args[i]).getGC(langCode).replace("\\\\n", "\n"); // Note that we don't unescape \n for server console default -> args[i].toString(); }; } @@ -130,21 +145,15 @@ public final class Language { } } - /** - * get language code - */ - public String getLanguageCode() { - return languageCode; - } - /** * Recursive helper function to flatten a Json tree * Converts input like {"foo": {"bar": "baz"}} to {"foo.bar": "baz"} - * @param map The map to insert the keys into - * @param key The flattened key of the current element + * + * @param map The map to insert the keys into + * @param key The flattened key of the current element * @param element The current element */ - private static void putFlattenedKey(Map map, String key, JsonElement element) { + private static void putFlattenedKey(Map map, String key, JsonElement element) { if (element.isJsonObject()) { element.getAsJsonObject().entrySet().forEach(entry -> { String keyPrefix = key.isEmpty() ? "" : key + "."; @@ -155,23 +164,10 @@ public final class Language { } } - /** - * Reads a file and creates a language instance. - */ - private Language(LanguageStreamDescription description) { - languageCode = description.getLanguageCode(); - - try { - var object = JsonUtils.decode(Utils.readFromInputStream(description.getLanguageFile()), JsonObject.class); - object.entrySet().forEach(entry -> putFlattenedKey(translations, entry.getKey(), entry.getValue())); - } catch (Exception exception) { - Grasscutter.getLogger().warn("Failed to load language file: " + description.getLanguageCode(), exception); - } - } - /** * create a LanguageStreamDescription - * @param languageCode The name of the language code. + * + * @param languageCode The name of the language code. * @param fallbackLanguageCode The name of the fallback language code. */ private static LanguageStreamDescription getLanguageFileDescription(String languageCode, String fallbackLanguageCode) { @@ -207,8 +203,164 @@ public final class Language { return new LanguageStreamDescription(actualLanguageCode, file); } + private static Int2ObjectMap loadTextMapFile(String language, IntSet nameHashes) { + Int2ObjectMap output = new Int2ObjectOpenHashMap<>(); + try (BufferedReader file = Files.newBufferedReader(getResourcePath("TextMap/TextMap" + language + ".json"), StandardCharsets.UTF_8)) { + Matcher matcher = textMapKeyValueRegex.matcher(""); + return new Int2ObjectOpenHashMap<>( + file.lines() + .sequential() + .map(matcher::reset) // Side effects, but it's faster than making a new one + .filter(Matcher::find) + .filter(m -> nameHashes.contains((int) Long.parseLong(m.group(1)))) // TODO: Cache this parse somehow + .collect(Collectors.toMap( + m -> (int) Long.parseLong(m.group(1)), + m -> m.group(2).replace("\\\"", "\"")))); + } catch (Exception e) { + Grasscutter.getLogger().error("Error loading textmap: " + language); + Grasscutter.getLogger().error(e.toString()); + } + return output; + } + + private static Int2ObjectMap loadTextMapFiles(IntSet nameHashes) { + Map> mapLanguageMaps = // Separate step to process the textmaps in parallel + TextStrings.LIST_LANGUAGES.parallelStream().collect( + Collectors.toConcurrentMap(s -> TextStrings.MAP_LANGUAGES.getInt(s), s -> loadTextMapFile(s, nameHashes))); + List> languageMaps = + IntStream.range(0, TextStrings.NUM_LANGUAGES) + .mapToObj(i -> mapLanguageMaps.get(i)) + .collect(Collectors.toList()); + + Map canonicalTextStrings = new HashMap<>(); + return new Int2ObjectOpenHashMap( + nameHashes + .intStream() + .boxed() + .collect(Collectors.toMap(key -> key, key -> { + TextStrings t = new TextStrings( + IntStream.range(0, TextStrings.NUM_LANGUAGES) + .mapToObj(i -> languageMaps.get(i).get((int) key)) + .collect(Collectors.toList()), key); + return canonicalTextStrings.computeIfAbsent(t, x -> t); + })) + ); + } + + @SuppressWarnings("unchecked") + private static Int2ObjectMap loadTextMapsCache() throws Exception { + try (ObjectInputStream file = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(TEXTMAP_CACHE_PATH), 0x100000))) { + final int fileVersion = file.readInt(); + if (fileVersion != TEXTMAP_CACHE_VERSION) + throw new Exception("Invalid cache version"); + return (Int2ObjectMap) file.readObject(); + } + } + + private static void saveTextMapsCache(Int2ObjectMap input) throws IOException { + try { + Files.createDirectory(Path.of("cache")); + } catch (FileAlreadyExistsException ignored) { + } + try (ObjectOutputStream file = new ObjectOutputStream(new BufferedOutputStream(Files.newOutputStream(TEXTMAP_CACHE_PATH, StandardOpenOption.CREATE), 0x100000))) { + file.writeInt(TEXTMAP_CACHE_VERSION); + file.writeObject(input); + } + } + + @Deprecated(forRemoval = true) + public static Int2ObjectMap getTextMapStrings() { + if (textMapStrings == null) + loadTextMaps(); + return textMapStrings; + } + + public static TextStrings getTextMapKey(int key) { + if ((textMapStrings == null) || (!scannedTextmaps && !textMapStrings.containsKey(key))) + loadTextMaps(); + return textMapStrings.get(key); + } + + public static TextStrings getTextMapKey(long hash) { + return getTextMapKey((int) hash); + } + + public static void loadTextMaps() { + // Check system timestamps on cache and resources + try { + long cacheModified = Files.getLastModifiedTime(TEXTMAP_CACHE_PATH).toMillis(); + + long textmapsModified = Files.list(getResourcePath("TextMap")) + .filter(path -> path.toString().endsWith(".json")) + .map(path -> { + try { + return Files.getLastModifiedTime(path).toMillis(); + } catch (Exception ignored) { + Grasscutter.getLogger().debug("Exception while checking modified time: ", path); + return Long.MAX_VALUE; // Don't use cache, something has gone wrong + } + }) + .max(Long::compare) + .get(); + + Grasscutter.getLogger().debug("Cache modified %d, textmap modified %d".formatted(cacheModified, textmapsModified)); + if (textmapsModified < cacheModified) { + // Try loading from cache + Grasscutter.getLogger().info("Loading cached 'TextMaps'..."); + textMapStrings = loadTextMapsCache(); + return; + } + } catch (Exception e) { + Grasscutter.getLogger().debug("Exception while checking cache: ", e); + } + + // Regenerate cache + Grasscutter.getLogger().debug("Generating TextMaps cache"); + ResourceLoader.loadAll(); + IntSet usedHashes = new IntOpenHashSet(); + GameData.getAchievementDataMap().values().stream() + .filter(AchievementData::isUsed) + .forEach(a -> { + usedHashes.add((int) a.getTitleTextMapHash()); + usedHashes.add((int) a.getDescTextMapHash()); + }); + GameData.getAvatarDataMap().forEach((k, v) -> usedHashes.add((int) v.getNameTextMapHash())); + GameData.getAvatarSkillDataMap().forEach((k, v) -> { + usedHashes.add((int) v.getNameTextMapHash()); + usedHashes.add((int) v.getDescTextMapHash()); + }); + GameData.getItemDataMap().forEach((k, v) -> usedHashes.add((int) v.getNameTextMapHash())); + GameData.getHomeWorldBgmDataMap().forEach((k, v) -> usedHashes.add((int) v.getBgmNameTextMapHash())); + GameData.getMonsterDataMap().forEach((k, v) -> usedHashes.add((int) v.getNameTextMapHash())); + GameData.getMainQuestDataMap().forEach((k, v) -> usedHashes.add((int) v.getTitleTextMapHash())); + GameData.getQuestDataMap().forEach((k, v) -> usedHashes.add((int) v.getDescTextMapHash())); + // Incidental strings + usedHashes.add((int) 4233146695L); // Character + usedHashes.add((int) 4231343903L); // Weapon + usedHashes.add((int) 332935371L); // Standard Wish + usedHashes.add((int) 2272170627L); // Character Event Wish + usedHashes.add((int) 3352513147L); // Character Event Wish-2 + usedHashes.add((int) 2864268523L); // Weapon Event Wish + + textMapStrings = loadTextMapFiles(usedHashes); + scannedTextmaps = true; + try { + saveTextMapsCache(textMapStrings); + } catch (IOException e) { + Grasscutter.getLogger().error("Failed to save TextMap cache: ", e); + } + } + + /** + * get language code + */ + public String getLanguageCode() { + return languageCode; + } + /** * Returns the value (as a string) from a nested key. + * * @param key The key to look for. * @return The value (as a string) from a nested key. */ @@ -243,8 +395,8 @@ public final class Language { } } - private static final int TEXTMAP_CACHE_VERSION = 0x9CCACE04; - @EqualsAndHashCode public static class TextStrings implements Serializable { + @EqualsAndHashCode + public static class TextStrings implements Serializable { public static final String[] ARR_LANGUAGES = {"EN", "CHS", "CHT", "JP", "KR", "DE", "ES", "FR", "ID", "PT", "RU", "TH", "VI"}; public static final String[] ARR_GC_LANGUAGES = {"en-US", "zh-CN", "zh-TW", "ja-JP", "ko-KR", "en-US", "es-ES", "fr-FR", "en-US", "en-US", "ru-RU", "en-US", "en-US"}; // TODO: Update the placeholder en-US entries if we ever add GC translations for the missing client languages public static final int NUM_LANGUAGES = ARR_LANGUAGES.length; @@ -252,21 +404,22 @@ public final class Language { public static final Object2IntMap MAP_LANGUAGES = // Map "EN": 0, "CHS": 1, ..., "VI": 12 new Object2IntOpenHashMap<>( IntStream.range(0, ARR_LANGUAGES.length) - .boxed() - .collect(Collectors.toMap(i -> ARR_LANGUAGES[i], i -> i))); + .boxed() + .collect(Collectors.toMap(i -> ARR_LANGUAGES[i], i -> i))); public static final Object2IntMap MAP_GC_LANGUAGES = // Map "en-US": 0, "zh-CN": 1, ... new Object2IntOpenHashMap<>( IntStream.range(0, ARR_GC_LANGUAGES.length) - .boxed() - .collect(Collectors.toMap(i -> ARR_GC_LANGUAGES[i], i -> i, (i1, i2) -> i1))); // Have to handle duplicates referring back to the first + .boxed() + .collect(Collectors.toMap(i -> ARR_GC_LANGUAGES[i], i -> i, (i1, i2) -> i1))); // Have to handle duplicates referring back to the first public String[] strings = new String[ARR_LANGUAGES.length]; - public TextStrings() {}; + public TextStrings() { + } public TextStrings(String init) { for (int i = 0; i < NUM_LANGUAGES; i++) this.strings[i] = init; - }; + } public TextStrings(List strings, int key) { // Some hashes don't have strings for some languages :( @@ -310,156 +463,4 @@ public final class Language { return true; } } - - private static final Pattern textMapKeyValueRegex = Pattern.compile("\"(\\d+)\": \"(.+)\""); - - private static Int2ObjectMap loadTextMapFile(String language, IntSet nameHashes) { - Int2ObjectMap output = new Int2ObjectOpenHashMap<>(); - try (BufferedReader file = Files.newBufferedReader(getResourcePath("TextMap/TextMap"+language+".json"), StandardCharsets.UTF_8)) { - Matcher matcher = textMapKeyValueRegex.matcher(""); - return new Int2ObjectOpenHashMap<>( - file.lines() - .sequential() - .map(matcher::reset) // Side effects, but it's faster than making a new one - .filter(Matcher::find) - .filter(m -> nameHashes.contains((int) Long.parseLong(m.group(1)))) // TODO: Cache this parse somehow - .collect(Collectors.toMap( - m -> (int) Long.parseLong(m.group(1)), - m -> m.group(2).replace("\\\"", "\"")))); - } catch (Exception e) { - Grasscutter.getLogger().error("Error loading textmap: " + language); - Grasscutter.getLogger().error(e.toString()); - } - return output; - } - - private static Int2ObjectMap loadTextMapFiles(IntSet nameHashes) { - Map> mapLanguageMaps = // Separate step to process the textmaps in parallel - TextStrings.LIST_LANGUAGES.parallelStream().collect( - Collectors.toConcurrentMap(s -> TextStrings.MAP_LANGUAGES.getInt(s), s -> loadTextMapFile(s, nameHashes))); - List> languageMaps = - IntStream.range(0, TextStrings.NUM_LANGUAGES) - .mapToObj(i -> mapLanguageMaps.get(i)) - .collect(Collectors.toList()); - - Map canonicalTextStrings = new HashMap<>(); - return new Int2ObjectOpenHashMap( - nameHashes - .intStream() - .boxed() - .collect(Collectors.toMap(key -> key, key -> { - TextStrings t = new TextStrings( - IntStream.range(0, TextStrings.NUM_LANGUAGES) - .mapToObj(i -> languageMaps.get(i).get((int) key)) - .collect(Collectors.toList()), (int) key); - return canonicalTextStrings.computeIfAbsent(t, x -> t); - })) - ); - } - - @SuppressWarnings("unchecked") - private static Int2ObjectMap loadTextMapsCache() throws Exception { - try (ObjectInputStream file = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(TEXTMAP_CACHE_PATH), 0x100000))) { - final int fileVersion = file.readInt(); - if (fileVersion != TEXTMAP_CACHE_VERSION) - throw new Exception("Invalid cache version"); - return (Int2ObjectMap) file.readObject(); - } - } - - private static void saveTextMapsCache(Int2ObjectMap input) throws IOException { - try { - Files.createDirectory(Path.of("cache")); - } catch (FileAlreadyExistsException ignored) {}; - try (ObjectOutputStream file = new ObjectOutputStream(new BufferedOutputStream(Files.newOutputStream(TEXTMAP_CACHE_PATH, StandardOpenOption.CREATE), 0x100000))) { - file.writeInt(TEXTMAP_CACHE_VERSION); - file.writeObject(input); - } - } - - private static Int2ObjectMap textMapStrings; - private static final Path TEXTMAP_CACHE_PATH = Path.of(Utils.toFilePath("cache/TextMapCache.bin")); - - @Deprecated(forRemoval = true) - public static Int2ObjectMap getTextMapStrings() { - if (textMapStrings == null) - loadTextMaps(); - return textMapStrings; - } - - public static TextStrings getTextMapKey(int key) { - if ((textMapStrings == null) || (!scannedTextmaps && !textMapStrings.containsKey(key))) - loadTextMaps(); - return textMapStrings.get(key); - } - - public static TextStrings getTextMapKey(long hash) { - return getTextMapKey((int) hash); - } - - public static void loadTextMaps() { - // Check system timestamps on cache and resources - try { - long cacheModified = Files.getLastModifiedTime(TEXTMAP_CACHE_PATH).toMillis(); - - long textmapsModified = Files.list(getResourcePath("TextMap")) - .filter(path -> path.toString().endsWith(".json")) - .map(path -> { - try { - return Files.getLastModifiedTime(path).toMillis(); - } catch (Exception ignored) { - Grasscutter.getLogger().debug("Exception while checking modified time: ", path); - return Long.MAX_VALUE; // Don't use cache, something has gone wrong - } - }) - .max(Long::compare) - .get(); - - Grasscutter.getLogger().debug("Cache modified %d, textmap modified %d".formatted(cacheModified, textmapsModified)); - if (textmapsModified < cacheModified) { - // Try loading from cache - Grasscutter.getLogger().info("Loading cached 'TextMaps'..."); - textMapStrings = loadTextMapsCache(); - return; - } - } catch (Exception e) { - Grasscutter.getLogger().debug("Exception while checking cache: ", e); - }; - - // Regenerate cache - Grasscutter.getLogger().debug("Generating TextMaps cache"); - ResourceLoader.loadAll(); - IntSet usedHashes = new IntOpenHashSet(); - GameData.getAchievementDataMap().values().stream() - .filter(AchievementData::isUsed) - .forEach(a -> { - usedHashes.add((int) a.getTitleTextMapHash()); - usedHashes.add((int) a.getDescTextMapHash()); - }); - GameData.getAvatarDataMap().forEach((k, v) -> usedHashes.add((int) v.getNameTextMapHash())); - GameData.getAvatarSkillDataMap().forEach((k, v) -> { - usedHashes.add((int) v.getNameTextMapHash()); - usedHashes.add((int) v.getDescTextMapHash()); - }); - GameData.getItemDataMap().forEach((k, v) -> usedHashes.add((int) v.getNameTextMapHash())); - GameData.getHomeWorldBgmDataMap().forEach((k, v) -> usedHashes.add((int) v.getBgmNameTextMapHash())); - GameData.getMonsterDataMap().forEach((k, v) -> usedHashes.add((int) v.getNameTextMapHash())); - GameData.getMainQuestDataMap().forEach((k, v) -> usedHashes.add((int) v.getTitleTextMapHash())); - GameData.getQuestDataMap().forEach((k, v) -> usedHashes.add((int) v.getDescTextMapHash())); - // Incidental strings - usedHashes.add((int) 4233146695L); // Character - usedHashes.add((int) 4231343903L); // Weapon - usedHashes.add((int) 332935371L); // Standard Wish - usedHashes.add((int) 2272170627L); // Character Event Wish - usedHashes.add((int) 3352513147L); // Character Event Wish-2 - usedHashes.add((int) 2864268523L); // Weapon Event Wish - - textMapStrings = loadTextMapFiles(usedHashes); - scannedTextmaps = true; - try { - saveTextMapsCache(textMapStrings); - } catch (IOException e) { - Grasscutter.getLogger().error("Failed to save TextMap cache: ", e); - }; - } } diff --git a/src/main/java/emu/grasscutter/utils/Location.java b/src/main/java/emu/grasscutter/utils/Location.java index c6d4a3460..c3811ff68 100644 --- a/src/main/java/emu/grasscutter/utils/Location.java +++ b/src/main/java/emu/grasscutter/utils/Location.java @@ -8,7 +8,9 @@ import lombok.Setter; @Entity public class Location extends Position { - @Transient @Getter @Setter + @Transient + @Getter + @Setter private Scene scene; public Location(Scene scene, Position position) { diff --git a/src/main/java/emu/grasscutter/utils/MessageHandler.java b/src/main/java/emu/grasscutter/utils/MessageHandler.java index 470707f99..19c795731 100644 --- a/src/main/java/emu/grasscutter/utils/MessageHandler.java +++ b/src/main/java/emu/grasscutter/utils/MessageHandler.java @@ -3,19 +3,19 @@ package emu.grasscutter.utils; public class MessageHandler { private String message; - public MessageHandler(){ + public MessageHandler() { this.message = ""; } - public void append(String message){ + public void append(String message) { this.message += message + "\r\n\r\n"; } - public String getMessage(){ + public String getMessage() { return this.message; } - public void setMessage(String message){ + public void setMessage(String message) { this.message = message; } } diff --git a/src/main/java/emu/grasscutter/utils/Position.java b/src/main/java/emu/grasscutter/utils/Position.java index d9571a05a..17d6bcaed 100644 --- a/src/main/java/emu/grasscutter/utils/Position.java +++ b/src/main/java/emu/grasscutter/utils/Position.java @@ -1,29 +1,36 @@ package emu.grasscutter.utils; -import java.io.Serializable; -import java.util.List; - -import com.google.gson.annotations.SerializedName; import com.github.davidmoten.rtreemulti.geometry.Point; +import com.google.gson.annotations.SerializedName; import dev.morphia.annotations.Entity; import emu.grasscutter.net.proto.VectorOuterClass.Vector; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.List; + @Entity public class Position implements Serializable { private static final long serialVersionUID = -2001232313615923575L; - @SerializedName(value="x", alternate={"_x", "X"}) - @Getter @Setter private float x; + @SerializedName(value = "x", alternate = {"_x", "X"}) + @Getter + @Setter + private float x; - @SerializedName(value="y", alternate={"_y", "Y"}) - @Getter @Setter private float y; + @SerializedName(value = "y", alternate = {"_y", "Y"}) + @Getter + @Setter + private float y; - @SerializedName(value="z", alternate={"_z", "Z"}) - @Getter @Setter private float z; + @SerializedName(value = "z", alternate = {"_z", "Z"}) + @Getter + @Setter + private float z; - public Position() {} + public Position() { + } public Position(float x, float y) { set(x, y); @@ -117,8 +124,9 @@ public class Position implements Serializable { return this; } - /** In radians - * */ + /** + * In radians + */ public Position translate(float dist, float angle) { this.x += dist * Math.sin(angle); this.y += dist * Math.cos(angle); @@ -135,10 +143,10 @@ public class Position implements Serializable { } public double computeDistance(Position b) { - double detX = getX()-b.getX(); - double detY = getY()-b.getY(); - double detZ = getZ()-b.getZ(); - return Math.sqrt(detX*detX+detY*detY+detZ*detZ); + double detX = getX() - b.getX(); + double detY = getY() - b.getY(); + double detZ = getZ() - b.getZ(); + return Math.sqrt(detX * detX + detY * detY + detZ * detZ); } public Position nearby2d(float range) { @@ -147,6 +155,7 @@ public class Position implements Serializable { position.x += Utils.randomFloatRange(-range, range); return position; } + public Position translateWithDegrees(float dist, float angle) { angle = (float) Math.toRadians(angle); this.x += dist * Math.sin(angle); @@ -171,16 +180,18 @@ public class Position implements Serializable { .setZ(this.getZ()) .build(); } + public Point toPoint() { - return Point.create(x,y,z); + return Point.create(x, y, z); } /** * To XYZ array for Spatial Index */ public double[] toDoubleArray() { - return new double[]{ x, y, z}; + return new double[]{x, y, z}; } + /** * To XZ array for Spatial Index (Blocks) */ diff --git a/src/main/java/emu/grasscutter/utils/ProtoHelper.java b/src/main/java/emu/grasscutter/utils/ProtoHelper.java index a6b59dc85..9a79161fd 100644 --- a/src/main/java/emu/grasscutter/utils/ProtoHelper.java +++ b/src/main/java/emu/grasscutter/utils/ProtoHelper.java @@ -4,7 +4,7 @@ import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.net.proto.PropValueOuterClass.PropValue; public final class ProtoHelper { - public static PropValue newPropValue(PlayerProperty key, int value) { - return PropValue.newBuilder().setType(key.getId()).setIval(value).setVal(value).build(); - } + public static PropValue newPropValue(PlayerProperty key, int value) { + return PropValue.newBuilder().setType(key.getId()).setIval(value).setVal(value).build(); + } } diff --git a/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java b/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java index f528b3e96..7ee833b3c 100644 --- a/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java +++ b/src/main/java/emu/grasscutter/utils/ServerLogEventAppender.java @@ -3,12 +3,8 @@ package emu.grasscutter.utils; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.encoder.Encoder; -import ch.qos.logback.core.spi.DeferredProcessingAware; -import ch.qos.logback.core.status.ErrorStatus; import emu.grasscutter.server.event.internal.ServerLogEvent; -import emu.grasscutter.server.event.types.ServerEvent; -import java.io.IOException; import java.nio.charset.StandardCharsets; public class ServerLogEventAppender extends AppenderBase { diff --git a/src/main/java/emu/grasscutter/utils/SparseSet.java b/src/main/java/emu/grasscutter/utils/SparseSet.java index b4913b5f5..64119498b 100644 --- a/src/main/java/emu/grasscutter/utils/SparseSet.java +++ b/src/main/java/emu/grasscutter/utils/SparseSet.java @@ -6,30 +6,8 @@ import java.util.Set; import java.util.TreeSet; public final class SparseSet { - /* - * A convenience class for constructing integer sets out of large ranges - * Designed to be fed literal strings from this project only - - * can and will throw exceptions to tell you to fix your code if you feed it garbage. :) - */ - private static class Range { - private final int min, max; - - public Range(int min, int max) { - if (min > max) { - throw new IllegalArgumentException("Range passed minimum higher than maximum - " + Integer.toString(min) + " > " + Integer.toString(max)); - } - this.min = min; - this.max = max; - } - - public boolean check(int value) { - return value >= this.min && value <= this.max; - } - } - private final List rangeEntries; private final Set denseEntries; - public SparseSet(String csv) { this.rangeEntries = new ArrayList<>(); this.denseEntries = new TreeSet<>(); @@ -44,7 +22,7 @@ public final class SparseSet { this.rangeEntries.add(new Range(Integer.parseInt(tokens[0]), Integer.parseInt(tokens[1]))); break; default: - throw new IllegalArgumentException("Invalid token passed to SparseSet initializer - " + token + " (split length " + Integer.toString(tokens.length) + ")"); + throw new IllegalArgumentException("Invalid token passed to SparseSet initializer - " + token + " (split length " + tokens.length + ")"); } } } @@ -57,4 +35,25 @@ public final class SparseSet { } return this.denseEntries.contains(i); } -} \ No newline at end of file + + /* + * A convenience class for constructing integer sets out of large ranges + * Designed to be fed literal strings from this project only - + * can and will throw exceptions to tell you to fix your code if you feed it garbage. :) + */ + private static class Range { + private final int min, max; + + public Range(int min, int max) { + if (min > max) { + throw new IllegalArgumentException("Range passed minimum higher than maximum - " + min + " > " + max); + } + this.min = min; + this.max = max; + } + + public boolean check(int value) { + return value >= this.min && value <= this.max; + } + } +} diff --git a/src/main/java/emu/grasscutter/utils/StartupArguments.java b/src/main/java/emu/grasscutter/utils/StartupArguments.java index 90fff0436..4d4abb4e9 100644 --- a/src/main/java/emu/grasscutter/utils/StartupArguments.java +++ b/src/main/java/emu/grasscutter/utils/StartupArguments.java @@ -17,34 +17,40 @@ import static emu.grasscutter.config.Configuration.*; * A parser for start-up arguments. */ public final class StartupArguments { - private StartupArguments() { - // This class is not meant to be instantiated. - } - /* A map of parameter -> argument handler. */ private static final Map> argumentHandlers = Map.of( "-dumppacketids", parameter -> { - PacketOpcodesUtils.dumpPacketIds(); return true; + PacketOpcodesUtils.dumpPacketIds(); + return true; }, "-version", StartupArguments::printVersion, "-debug", StartupArguments::enableDebug, "-lang", parameter -> { - Grasscutter.setPreferredLanguage(parameter); return false; - },"-game", parameter -> { - Grasscutter.setRunModeOverride(ServerRunMode.GAME_ONLY); return false; - },"-dispatch", parameter -> { - Grasscutter.setRunModeOverride(ServerRunMode.DISPATCH_ONLY); return false; + Grasscutter.setPreferredLanguage(parameter); + return false; + }, "-game", parameter -> { + Grasscutter.setRunModeOverride(ServerRunMode.GAME_ONLY); + return false; + }, "-dispatch", parameter -> { + Grasscutter.setRunModeOverride(ServerRunMode.DISPATCH_ONLY); + return false; }, // Aliases. "-v", StartupArguments::printVersion, "-debugall", parameter -> { - StartupArguments.enableDebug("all"); return false; + StartupArguments.enableDebug("all"); + return false; } ); + private StartupArguments() { + // This class is not meant to be instantiated. + } + /** * Parses the provided start-up arguments. + * * @param args The application start-up arguments. * @return If the application should exit. */ @@ -68,15 +74,18 @@ public final class StartupArguments { /** * Prints the server version. + * * @param parameter Additional parameters. * @return True to exit early. */ private static boolean printVersion(String parameter) { - System.out.println("Grasscutter version: " + BuildConfig.VERSION + "-" + BuildConfig.GIT_HASH); return true; + System.out.println("Grasscutter version: " + BuildConfig.VERSION + "-" + BuildConfig.GIT_HASH); + return true; } /** * Enables debug logging. + * * @param parameter Additional parameters. * @return False to continue execution. */ diff --git a/src/main/java/emu/grasscutter/utils/TsvUtils.java b/src/main/java/emu/grasscutter/utils/TsvUtils.java index 05198371a..691422388 100644 --- a/src/main/java/emu/grasscutter/utils/TsvUtils.java +++ b/src/main/java/emu/grasscutter/utils/TsvUtils.java @@ -1,34 +1,7 @@ package emu.grasscutter.utils; -import java.io.IOException; -import java.lang.reflect.Array; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.TreeMap; -import java.util.function.Function; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonNull; -import com.google.gson.JsonObject; -import com.google.gson.JsonPrimitive; +import com.google.gson.*; import com.google.gson.annotations.SerializedName; - import emu.grasscutter.Grasscutter; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap; @@ -36,6 +9,17 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; import lombok.val; +import java.io.IOException; +import java.lang.reflect.*; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.util.*; +import java.util.function.Function; +import java.util.stream.IntStream; +import java.util.stream.Stream; + import static emu.grasscutter.utils.Utils.nonRegexSplit; // Throughout this file, commented System.out.println debug log calls are left in. @@ -59,7 +43,8 @@ public class TsvUtils { private static final Function parseString = value -> value; private static final Function parseInt = value -> (int) Double.parseDouble(value); //Integer::parseInt; private static final Function parseLong = value -> (long) Double.parseDouble(value); //Long::parseLong; - private static Map> primitiveTypeParsers = Map.ofEntries( + private static final Map, Function> enumTypeParsers = new HashMap<>(); + private static final Map> primitiveTypeParsers = Map.ofEntries( Map.entry(String.class, parseString), Map.entry(Integer.class, parseInt), Map.entry(int.class, parseInt), @@ -73,17 +58,20 @@ public class TsvUtils { Map.entry(boolean.class, Boolean::parseBoolean) ); private static final Map> typeParsers = new HashMap<>(primitiveTypeParsers); + private static final Map, Map> cachedClassFieldMaps = new HashMap<>(); @SuppressWarnings("unchecked") private static T parsePrimitive(Class type, String string) { if (string == null || string.isEmpty()) return (T) defaultValues.get(type); return (T) primitiveTypeParsers.get(type).apply(string); } + // This is more expensive than parsing as the correct types, but it is more tolerant of mismatched data like ints with .0 private static double parseNumber(String string) { if (string == null || string.isEmpty()) return 0d; return Double.parseDouble(string); } + @SuppressWarnings("unchecked") private static T parseEnum(Class enumType, String string) { if (string == null || string.isEmpty()) return null; @@ -99,8 +87,8 @@ public class TsvUtils { } } - private static final Map, Function> enumTypeParsers = new HashMap<>(); - @SuppressWarnings("deprecated") // Field::isAccessible is deprecated because it doesn't do what people think it does. It does what we want it to, however. + @SuppressWarnings("deprecated") + // Field::isAccessible is deprecated because it doesn't do what people think it does. It does what we want it to, however. private static Function makeEnumTypeParser(Class enumClass) { if (!enumClass.isEnum()) { // System.out.println("Called makeEnumTypeParser with non-enum enumClass "+enumClass); @@ -116,7 +104,10 @@ public class TsvUtils { // If the enum also has a numeric value, map those to the constants too // System.out.println("Looking for enum value field"); for (Field f : enumClass.getDeclaredFields()) { - if (switch (f.getName()) {case "value", "id" -> true; default -> false;}) { + if (switch (f.getName()) { + case "value", "id" -> true; + default -> false; + }) { // System.out.println("Enum value field found - " + f.getName()); boolean acc = f.isAccessible(); f.setAccessible(true); @@ -132,6 +123,7 @@ public class TsvUtils { } return map::get; } + private static synchronized Function getEnumTypeParser(Class enumType) { if (enumType == null) { // System.out.println("Called getEnumTypeParser with null enumType"); @@ -146,8 +138,9 @@ public class TsvUtils { } private static Type class2Type(Class classType) { - return (Type) classType.getGenericSuperclass(); + return classType.getGenericSuperclass(); } + private static Class type2Class(Type type) { if (type instanceof Class) { return (Class) type; @@ -158,29 +151,6 @@ public class TsvUtils { } } - // A helper object that contains a Field and the function to parse a String to create the value for the Field. - private static class FieldParser { - public final Field field; - public final Type type; - public final Class classType; - public final Function parser; - - FieldParser(Field field) { - this.field = field; - this.type = field.getGenericType(); // returns specialized type info e.g. java.util.List - this.classType = field.getType(); - this.parser = getTypeParser(this.type); - } - - public Object parse(String token) { - return this.parser.apply(token); - } - - public void parse(Object obj, String token) throws IllegalAccessException { - this.field.set(obj, this.parser.apply(token)); - } - } - private static Map makeClassFieldMap(Class classType) { val fieldMap = new HashMap(); for (Field field : classType.getDeclaredFields()) { @@ -200,205 +170,10 @@ public class TsvUtils { return fieldMap; } - private static Map, Map> cachedClassFieldMaps = new HashMap<>(); private static synchronized Map getClassFieldMap(Class classType) { return cachedClassFieldMaps.computeIfAbsent(classType, TsvUtils::makeClassFieldMap); } - private static class StringTree { - public final Map children = new TreeMap<>(); - - public void addPath(String path) { - if (path.isEmpty()) return; - - val firstDot = path.indexOf('.'); - val fieldPath = (firstDot < 0) ? path : path.substring(0, firstDot); - val remainder = (firstDot < 0) ? "" : path.substring(firstDot+1); - this.children.computeIfAbsent(fieldPath, k -> new StringTree()).addPath(remainder); - } - } - - @SuppressWarnings("unchecked") - private static class StringValueTree { - public final SortedMap children = new TreeMap<>(); - public final Int2ObjectSortedMap arrayChildren = new Int2ObjectRBTreeMap<>(); - public String value; - - public StringValueTree(StringTree from) { - from.children.forEach((k,v) -> { - try { - this.arrayChildren.put(Integer.parseInt(k), new StringValueTree(v)); - } catch (NumberFormatException e) { - this.children.put(k, new StringValueTree(v)); - } - }); - } - - public void setValue(String path, String value) { - if (path.isEmpty()) { - this.value = value; - return; - } - - val firstDot = path.indexOf('.'); - val fieldPath = (firstDot < 0) ? path : path.substring(0, firstDot); - val remainder = (firstDot < 0) ? "" : path.substring(firstDot+1); - try { - this.arrayChildren.get(Integer.parseInt(fieldPath)).setValue(remainder, value); - } catch (NumberFormatException e) { - this.children.get(fieldPath).setValue(remainder, value); - } - } - - public JsonElement toJson() { - // Determine if this is an object, an array, or a value - if (this.value != null) { // - return new JsonPrimitive(this.value); - } - if (!this.arrayChildren.isEmpty()) { - val arr = new JsonArray(this.arrayChildren.lastIntKey()+1); - arrayChildren.forEach((k,v) -> arr.set(k, v.toJson())); - return arr; - } else if (this.children.isEmpty()) { - return JsonNull.INSTANCE; - } else { - val obj = new JsonObject(); - children.forEach((k,v) -> { - val j = v.toJson(); - if (j != JsonNull.INSTANCE) - obj.add(k, v.toJson()); - }); - return obj; - } - } - - public T toClass(Class classType, Type type) { - // System.out.println("toClass called with Class: "+classType+" \tType: "+type); - if (type == null) - type = class2Type(classType); - - if (primitiveTypeParsers.containsKey(classType)) { - return parsePrimitive(classType, this.value); - } else if (classType.isEnum()) { - return parseEnum(classType, this.value); - } else if (classType.isArray()) { - return this.toArray(classType); - } else if (List.class.isAssignableFrom(classType)) { - // if (type instanceof ParameterizedType) - val elementType = ((ParameterizedType) type).getActualTypeArguments()[0]; - return (T) this.toList(type2Class(elementType), elementType); - } else if (Map.class.isAssignableFrom(classType)) { - // System.out.println("Class: "+classType+" \tClassTypeParams: "+Arrays.toString(classType.getTypeParameters())+" \tType: "+type+" \tTypeArguments: "+Arrays.toString(((ParameterizedType) type).getActualTypeArguments())); - // if (type instanceof ParameterizedType) - val keyType = ((ParameterizedType) type).getActualTypeArguments()[0]; - val valueType = ((ParameterizedType) type).getActualTypeArguments()[1]; - return (T) this.toMap(type2Class(keyType), type2Class(valueType), valueType); - } else { - return this.toObj(classType, type); - } - } - - private T toObj(Class objClass, Type objType) { - try { - // val obj = objClass.getDeclaredConstructor().newInstance(); - val obj = newObj(objClass); - val fieldMap = getClassFieldMap(objClass); - this.children.forEach((name, tree) -> { - val field = fieldMap.get(name); - if (field == null) return; - try { - if (primitiveTypes.contains(field.type)) { - if ((tree.value != null) && !tree.value.isEmpty()) - field.parse(obj, tree.value); - } else { - val value = tree.toClass(field.classType, field.type); - // System.out.println("Setting field "+name+" to "+value); - field.field.set(obj, value); - // field.field.set(obj, tree.toClass(field.classType, field.type)); - } - } catch (Exception e) { - // System.out.println("Exception while setting field "+name+" for class "+objClass+" - "+e); - Grasscutter.getLogger().error("Exception while setting field "+name+" ("+field.classType+")"+" for class "+objClass+" - ",e); - } - }); - return obj; - } catch (Exception e) { - // System.out.println("Exception while creating object of class "+objClass+" - "+e); - Grasscutter.getLogger().error("Exception while creating object of class "+objClass+" - ",e); - return null; - } - } - - public T toArray(Class classType) { - // Primitives don't play so nice with generics, so we handle all of them individually. - val containedClass = classType.getComponentType(); - // val arraySize = this.arrayChildren.size(); // Assume dense 0-indexed - val arraySize = this.arrayChildren.lastIntKey()+1; // Could be sparse! - // System.out.println("toArray called with Class: "+classType+" \tContains: "+containedClass+" \tof size: "+arraySize); - if (containedClass == int.class) { - val output = new int[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (int) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == long.class) { - val output = new long[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (long) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == float.class) { - val output = new float[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (float) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == double.class) { - val output = new double[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (double) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == byte.class) { - val output = new byte[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (byte) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == char.class) { - val output = new char[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (char) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == short.class) { - val output = new short[arraySize]; - this.arrayChildren.forEach((idx, tree) -> output[idx] = (short) parseNumber(tree.value)); - return (T) output; - } else if (containedClass == boolean.class) { - val output = new boolean[arraySize]; - this.arrayChildren.forEach((idx, tree) -> { - val value = ((tree.value == null) || tree.value.isEmpty()) ? false : Boolean.parseBoolean(tree.value); - output[idx] = value; - }); - return (T) output; - } else { - val output = Array.newInstance(containedClass, arraySize); - this.arrayChildren.forEach((idx, tree) -> ((Object[]) output)[idx] = tree.toClass(containedClass, null)); - return (T) output; - } - } - - private List toList(Class valueClass, Type valueType) { - val arraySize = this.arrayChildren.lastIntKey()+1; // Could be sparse! - // System.out.println("toList called with valueClass: "+valueClass+" \tvalueType: "+valueType+" \tof size: "+arraySize); - val list = new ArrayList(arraySize); - // Safe sparse version - for (int i = 0; i < arraySize; i++) - list.add(null); - this.arrayChildren.forEach((idx, tree) -> list.set(idx, tree.toClass(valueClass, valueType))); - return list; - } - - private Map toMap(Class keyClass, Class valueClass, Type valueType) { - val map = new HashMap(); - val keyParser = getTypeParser(keyClass); - this.children.forEach((key, tree) -> { - if ((key != null) && !key.isEmpty()) - map.put((K) keyParser.apply(key), tree.toClass(valueClass, valueType)); - }); - return map; - } - } - // Flat tab-separated value tables. // Arrays are represented as arrayName.0, arrayName.1, etc. columns. // Maps/POJOs are represented as objName.fieldOneName, objName.fieldTwoName, etc. columns. @@ -416,7 +191,7 @@ public class TsvUtils { headerNames.forEach(stringTree::addPath); return fileReader.lines().parallel().map(line -> { - // return fileReader.lines().map(line -> { + // return fileReader.lines().map(line -> { // System.out.println("Processing line of "+filename+" - "+line); val tokens = nonRegexSplit(line, '\t'); val m = Math.min(tokens.size(), columns); @@ -432,10 +207,10 @@ public class TsvUtils { // return JsonUtils.decode(tree.toJson(), classType); return tree.toClass(classType, null); } catch (Exception e) { - Grasscutter.getLogger().warn("Error deserializing an instance of class "+classType.getCanonicalName()); - Grasscutter.getLogger().warn("At token #"+t+" of #"+m); - Grasscutter.getLogger().warn("Header names are: "+headerNames.toString()); - Grasscutter.getLogger().warn("Tokens are: "+tokens.toString()); + Grasscutter.getLogger().warn("Error deserializing an instance of class " + classType.getCanonicalName()); + Grasscutter.getLogger().warn("At token #" + t + " of #" + m); + Grasscutter.getLogger().warn("Header names are: " + headerNames); + Grasscutter.getLogger().warn("Tokens are: " + tokens); Grasscutter.getLogger().warn("Stacktrace is: ", e); // System.out.println("Error deserializing an instance of class "+classType.getCanonicalName()); // System.out.println("At token #"+t+" of #"+m); @@ -447,7 +222,7 @@ public class TsvUtils { } }).toList(); } catch (Exception e) { - Grasscutter.getLogger().error("Error loading file '"+filename+"' - Stacktrace is: ", e); + Grasscutter.getLogger().error("Error loading file '" + filename + "' - Stacktrace is: ", e); return null; } } @@ -480,28 +255,26 @@ public class TsvUtils { } return obj; } catch (Exception e) { - Grasscutter.getLogger().warn("Error deserializing an instance of class "+classType.getCanonicalName()); - Grasscutter.getLogger().warn("At token #"+t+" of #"+m); - Grasscutter.getLogger().warn("Header names are: "+headerNames.toString()); - Grasscutter.getLogger().warn("Tokens are: "+tokens.toString()); + Grasscutter.getLogger().warn("Error deserializing an instance of class " + classType.getCanonicalName()); + Grasscutter.getLogger().warn("At token #" + t + " of #" + m); + Grasscutter.getLogger().warn("Header names are: " + headerNames); + Grasscutter.getLogger().warn("Tokens are: " + tokens); Grasscutter.getLogger().warn("Stacktrace is: ", e); return null; } }).toList(); } catch (NoSuchFileException e) { - Grasscutter.getLogger().error("Error loading file '"+filename+"' - File does not exist. You are missing resources. Note that this file may exist in JSON, TSV, or TSJ format, any of which are suitable."); + Grasscutter.getLogger().error("Error loading file '" + filename + "' - File does not exist. You are missing resources. Note that this file may exist in JSON, TSV, or TSJ format, any of which are suitable."); return null; } catch (IOException e) { - Grasscutter.getLogger().error("Error loading file '"+filename+"' - Stacktrace is: ", e); + Grasscutter.getLogger().error("Error loading file '" + filename + "' - Stacktrace is: ", e); return null; } catch (NoSuchMethodException e) { - Grasscutter.getLogger().error("Error loading file '"+filename+"' - Class is missing NoArgsConstructor"); + Grasscutter.getLogger().error("Error loading file '" + filename + "' - Class is missing NoArgsConstructor"); return null; } } - - // ----------------------------------------------------------------- // Everything below here is for the AllArgsConstructor TSJ parser // ----------------------------------------------------------------- @@ -521,7 +294,7 @@ public class TsvUtils { public static List> loadTsjsToListsConstructor(Class classType, Path... filenames) throws Exception { val pair = getAllArgsConstructor(classType); if (pair == null) { - Grasscutter.getLogger().error("No AllArgsContructor found for class: "+classType); + Grasscutter.getLogger().error("No AllArgsContructor found for class: " + classType); return null; } val constructor = pair.left(); @@ -576,25 +349,242 @@ public class TsvUtils { args[argIndex] = argParsers.get(argIndex).apply(token); } } - return (T) constructor.newInstance(args); + return constructor.newInstance(args); } catch (Exception e) { - Grasscutter.getLogger().warn("Error deserializing an instance of class "+classType.getCanonicalName()+" : "+constructor.getName()); - Grasscutter.getLogger().warn("At token #"+t+" of #"+m); - Grasscutter.getLogger().warn("Arg names are: "+Arrays.toString(conArgNames)); - Grasscutter.getLogger().warn("Arg types are: "+Arrays.toString(argTypes)); - Grasscutter.getLogger().warn("Default Args are: "+Arrays.toString(defaultArgs)); - Grasscutter.getLogger().warn("Args are: "+Arrays.toString(args)); - Grasscutter.getLogger().warn("Header names are: "+headerNames.toString()); - Grasscutter.getLogger().warn("Header types are: "+IntStream.of(argPositions).mapToObj(i -> (i >= 0) ? argTypes[i] : null).toList()); - Grasscutter.getLogger().warn("Tokens are: "+tokens.toString()); + Grasscutter.getLogger().warn("Error deserializing an instance of class " + classType.getCanonicalName() + " : " + constructor.getName()); + Grasscutter.getLogger().warn("At token #" + t + " of #" + m); + Grasscutter.getLogger().warn("Arg names are: " + Arrays.toString(conArgNames)); + Grasscutter.getLogger().warn("Arg types are: " + Arrays.toString(argTypes)); + Grasscutter.getLogger().warn("Default Args are: " + Arrays.toString(defaultArgs)); + Grasscutter.getLogger().warn("Args are: " + Arrays.toString(args)); + Grasscutter.getLogger().warn("Header names are: " + headerNames); + Grasscutter.getLogger().warn("Header types are: " + IntStream.of(argPositions).mapToObj(i -> (i >= 0) ? argTypes[i] : null).toList()); + Grasscutter.getLogger().warn("Tokens are: " + tokens); Grasscutter.getLogger().warn("Stacktrace is: ", e); return null; } }).toList(); } catch (IOException e) { - Grasscutter.getLogger().error("Error loading file '"+filename+"' - Stacktrace is: ", e); + Grasscutter.getLogger().error("Error loading file '" + filename + "' - Stacktrace is: ", e); return null; } }).toList(); } + + // A helper object that contains a Field and the function to parse a String to create the value for the Field. + private static class FieldParser { + public final Field field; + public final Type type; + public final Class classType; + public final Function parser; + + FieldParser(Field field) { + this.field = field; + this.type = field.getGenericType(); // returns specialized type info e.g. java.util.List + this.classType = field.getType(); + this.parser = getTypeParser(this.type); + } + + public Object parse(String token) { + return this.parser.apply(token); + } + + public void parse(Object obj, String token) throws IllegalAccessException { + this.field.set(obj, this.parser.apply(token)); + } + } + + private static class StringTree { + public final Map children = new TreeMap<>(); + + public void addPath(String path) { + if (path.isEmpty()) return; + + val firstDot = path.indexOf('.'); + val fieldPath = (firstDot < 0) ? path : path.substring(0, firstDot); + val remainder = (firstDot < 0) ? "" : path.substring(firstDot + 1); + this.children.computeIfAbsent(fieldPath, k -> new StringTree()).addPath(remainder); + } + } + + @SuppressWarnings("unchecked") + private static class StringValueTree { + public final SortedMap children = new TreeMap<>(); + public final Int2ObjectSortedMap arrayChildren = new Int2ObjectRBTreeMap<>(); + public String value; + + public StringValueTree(StringTree from) { + from.children.forEach((k, v) -> { + try { + this.arrayChildren.put(Integer.parseInt(k), new StringValueTree(v)); + } catch (NumberFormatException e) { + this.children.put(k, new StringValueTree(v)); + } + }); + } + + public void setValue(String path, String value) { + if (path.isEmpty()) { + this.value = value; + return; + } + + val firstDot = path.indexOf('.'); + val fieldPath = (firstDot < 0) ? path : path.substring(0, firstDot); + val remainder = (firstDot < 0) ? "" : path.substring(firstDot + 1); + try { + this.arrayChildren.get(Integer.parseInt(fieldPath)).setValue(remainder, value); + } catch (NumberFormatException e) { + this.children.get(fieldPath).setValue(remainder, value); + } + } + + public JsonElement toJson() { + // Determine if this is an object, an array, or a value + if (this.value != null) { // + return new JsonPrimitive(this.value); + } + if (!this.arrayChildren.isEmpty()) { + val arr = new JsonArray(this.arrayChildren.lastIntKey() + 1); + arrayChildren.forEach((k, v) -> arr.set(k, v.toJson())); + return arr; + } else if (this.children.isEmpty()) { + return JsonNull.INSTANCE; + } else { + val obj = new JsonObject(); + children.forEach((k, v) -> { + val j = v.toJson(); + if (j != JsonNull.INSTANCE) + obj.add(k, v.toJson()); + }); + return obj; + } + } + + public T toClass(Class classType, Type type) { + // System.out.println("toClass called with Class: "+classType+" \tType: "+type); + if (type == null) + type = class2Type(classType); + + if (primitiveTypeParsers.containsKey(classType)) { + return parsePrimitive(classType, this.value); + } else if (classType.isEnum()) { + return parseEnum(classType, this.value); + } else if (classType.isArray()) { + return this.toArray(classType); + } else if (List.class.isAssignableFrom(classType)) { + // if (type instanceof ParameterizedType) + val elementType = ((ParameterizedType) type).getActualTypeArguments()[0]; + return (T) this.toList(type2Class(elementType), elementType); + } else if (Map.class.isAssignableFrom(classType)) { + // System.out.println("Class: "+classType+" \tClassTypeParams: "+Arrays.toString(classType.getTypeParameters())+" \tType: "+type+" \tTypeArguments: "+Arrays.toString(((ParameterizedType) type).getActualTypeArguments())); + // if (type instanceof ParameterizedType) + val keyType = ((ParameterizedType) type).getActualTypeArguments()[0]; + val valueType = ((ParameterizedType) type).getActualTypeArguments()[1]; + return (T) this.toMap(type2Class(keyType), type2Class(valueType), valueType); + } else { + return this.toObj(classType, type); + } + } + + private T toObj(Class objClass, Type objType) { + try { + // val obj = objClass.getDeclaredConstructor().newInstance(); + val obj = newObj(objClass); + val fieldMap = getClassFieldMap(objClass); + this.children.forEach((name, tree) -> { + val field = fieldMap.get(name); + if (field == null) return; + try { + if (primitiveTypes.contains(field.type)) { + if ((tree.value != null) && !tree.value.isEmpty()) + field.parse(obj, tree.value); + } else { + val value = tree.toClass(field.classType, field.type); + // System.out.println("Setting field "+name+" to "+value); + field.field.set(obj, value); + // field.field.set(obj, tree.toClass(field.classType, field.type)); + } + } catch (Exception e) { + // System.out.println("Exception while setting field "+name+" for class "+objClass+" - "+e); + Grasscutter.getLogger().error("Exception while setting field " + name + " (" + field.classType + ")" + " for class " + objClass + " - ", e); + } + }); + return obj; + } catch (Exception e) { + // System.out.println("Exception while creating object of class "+objClass+" - "+e); + Grasscutter.getLogger().error("Exception while creating object of class " + objClass + " - ", e); + return null; + } + } + + public T toArray(Class classType) { + // Primitives don't play so nice with generics, so we handle all of them individually. + val containedClass = classType.getComponentType(); + // val arraySize = this.arrayChildren.size(); // Assume dense 0-indexed + val arraySize = this.arrayChildren.lastIntKey() + 1; // Could be sparse! + // System.out.println("toArray called with Class: "+classType+" \tContains: "+containedClass+" \tof size: "+arraySize); + if (containedClass == int.class) { + val output = new int[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = (int) parseNumber(tree.value)); + return (T) output; + } else if (containedClass == long.class) { + val output = new long[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = (long) parseNumber(tree.value)); + return (T) output; + } else if (containedClass == float.class) { + val output = new float[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = (float) parseNumber(tree.value)); + return (T) output; + } else if (containedClass == double.class) { + val output = new double[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = parseNumber(tree.value)); + return (T) output; + } else if (containedClass == byte.class) { + val output = new byte[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = (byte) parseNumber(tree.value)); + return (T) output; + } else if (containedClass == char.class) { + val output = new char[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = (char) parseNumber(tree.value)); + return (T) output; + } else if (containedClass == short.class) { + val output = new short[arraySize]; + this.arrayChildren.forEach((idx, tree) -> output[idx] = (short) parseNumber(tree.value)); + return (T) output; + } else if (containedClass == boolean.class) { + val output = new boolean[arraySize]; + this.arrayChildren.forEach((idx, tree) -> { + val value = (tree.value != null) && !tree.value.isEmpty() && Boolean.parseBoolean(tree.value); + output[idx] = value; + }); + return (T) output; + } else { + val output = Array.newInstance(containedClass, arraySize); + this.arrayChildren.forEach((idx, tree) -> ((Object[]) output)[idx] = tree.toClass(containedClass, null)); + return (T) output; + } + } + + private List toList(Class valueClass, Type valueType) { + val arraySize = this.arrayChildren.lastIntKey() + 1; // Could be sparse! + // System.out.println("toList called with valueClass: "+valueClass+" \tvalueType: "+valueType+" \tof size: "+arraySize); + val list = new ArrayList(arraySize); + // Safe sparse version + for (int i = 0; i < arraySize; i++) + list.add(null); + this.arrayChildren.forEach((idx, tree) -> list.set(idx, tree.toClass(valueClass, valueType))); + return list; + } + + private Map toMap(Class keyClass, Class valueClass, Type valueType) { + val map = new HashMap(); + val keyParser = getTypeParser(keyClass); + this.children.forEach((key, tree) -> { + if ((key != null) && !key.isEmpty()) + map.put((K) keyParser.apply(key), tree.toClass(valueClass, valueType)); + }); + return map; + } + } } diff --git a/src/main/java/emu/grasscutter/utils/Utils.java b/src/main/java/emu/grasscutter/utils/Utils.java index 088c60778..b804893d9 100644 --- a/src/main/java/emu/grasscutter/utils/Utils.java +++ b/src/main/java/emu/grasscutter/utils/Utils.java @@ -1,14 +1,5 @@ package emu.grasscutter.utils; -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; -import java.time.*; -import java.time.temporal.TemporalAdjusters; -import java.util.*; -import java.util.concurrent.ThreadLocalRandom; - import emu.grasscutter.Grasscutter; import emu.grasscutter.config.ConfigContainer; import emu.grasscutter.data.DataLoader; @@ -17,10 +8,20 @@ import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; - import org.slf4j.Logger; import javax.annotation.Nullable; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.time.DayOfWeek; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.concurrent.ThreadLocalRandom; import static emu.grasscutter.utils.FileUtils.getResourcePath; import static emu.grasscutter.utils.Language.translate; @@ -28,6 +29,7 @@ import static emu.grasscutter.utils.Language.translate; @SuppressWarnings({"UnusedReturnValue", "BooleanMethodIsAlwaysInverted"}) public final class Utils { public static final Random random = new Random(); + private static final char[] HEX_ARRAY = "0123456789abcdef".toCharArray(); public static int randomRange(int min, int max) { return random.nextInt(max - min + 1) + min; @@ -75,7 +77,6 @@ public final class Utils { b.release(); } - private static final char[] HEX_ARRAY = "0123456789abcdef".toCharArray(); public static String bytesToHex(byte[] bytes) { if (bytes == null) return ""; char[] hexChars = new char[bytes.length * 2]; @@ -108,6 +109,7 @@ public final class Utils { /** * Creates a string with the path to a file. + * * @param path The path to the file. * @return A path using the operating system's file separator. */ @@ -117,6 +119,7 @@ public final class Utils { /** * Checks if a file exists on the file system. + * * @param path The path to the file. * @return True if the file exists, false otherwise. */ @@ -126,6 +129,7 @@ public final class Utils { /** * Creates a folder on the file system. + * * @param path The path to the folder. * @return True if the folder was created, false otherwise. */ @@ -135,7 +139,8 @@ public final class Utils { /** * Copies a file from the archive's resources to the file system. - * @param resource The path to the resource. + * + * @param resource The path to the resource. * @param destination The path to copy the resource to. * @return True if the file was copied, false otherwise. */ @@ -156,6 +161,7 @@ public final class Utils { /** * Logs an object to the console. + * * @param object The object to log. */ public static void logObject(Object object) { @@ -176,7 +182,8 @@ public final class Utils { if (!Files.exists(getResourcePath(""))) { logger.info(translate("messages.status.create_resources")); logger.info(translate("messages.status.resources_error")); - createFolder(config.folderStructure.resources); exit = true; + createFolder(config.folderStructure.resources); + exit = true; } // Check for BinOutput + ExcelBinOutput. @@ -198,11 +205,12 @@ public final class Utils { /** * Gets the timestamp of the next hour. + * * @return The timestamp in UNIX seconds. */ public static int getNextTimestampOfThisHour(int hour, String timeZone, int param) { ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(timeZone)); - for (int i = 0; i < param; i ++) { + for (int i = 0; i < param; i++) { if (zonedDateTime.getHour() < hour) { zonedDateTime = zonedDateTime.withHour(hour).withMinute(0).withSecond(0); } else { @@ -214,6 +222,7 @@ public final class Utils { /** * Gets the timestamp of the next hour in a week. + * * @return The timestamp in UNIX seconds. */ public static int getNextTimestampOfThisHourInNextWeek(int hour, String timeZone, int param) { @@ -230,6 +239,7 @@ public final class Utils { /** * Gets the timestamp of the next hour in a month. + * * @return The timestamp in UNIX seconds. */ public static int getNextTimestampOfThisHourInNextMonth(int hour, String timeZone, int param) { @@ -246,6 +256,7 @@ public final class Utils { /** * Retrieves a string from an input stream. + * * @param stream The input stream. * @return The string. */ @@ -254,19 +265,23 @@ public final class Utils { StringBuilder stringBuilder = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) { - String line; while ((line = reader.readLine()) != null) { + String line; + while ((line = reader.readLine()) != null) { stringBuilder.append(line); - } stream.close(); + } + stream.close(); } catch (IOException e) { Grasscutter.getLogger().warn("Failed to read from input stream."); } catch (NullPointerException ignored) { return "empty"; - } return stringBuilder.toString(); + } + return stringBuilder.toString(); } /** * Performs a linear interpolation using a table of fixed points to create an effective piecewise f(x) = y function. - * @param x The x value. + * + * @param x The x value. * @param xyArray Array of points in [[x0,y0], ... [xN, yN]] format * @return f(x) = y */ @@ -274,22 +289,22 @@ public final class Utils { try { if (x <= xyArray[0][0]) { // Clamp to first point return xyArray[0][1]; - } else if (x >= xyArray[xyArray.length-1][0]) { // Clamp to last point - return xyArray[xyArray.length-1][1]; + } else if (x >= xyArray[xyArray.length - 1][0]) { // Clamp to last point + return xyArray[xyArray.length - 1][1]; } // At this point we're guaranteed to have two lerp points, and pity be somewhere between them. - for (int i=0; i < xyArray.length-1; i++) { - if (x == xyArray[i+1][0]) { - return xyArray[i+1][1]; + for (int i = 0; i < xyArray.length - 1; i++) { + if (x == xyArray[i + 1][0]) { + return xyArray[i + 1][1]; } - if (x < xyArray[i+1][0]) { + if (x < xyArray[i + 1][0]) { // We are between [i] and [i+1], interpolation time! // Using floats would be slightly cleaner but we can just as easily use ints if we're careful with order of operations. int position = x - xyArray[i][0]; - int fullDist = xyArray[i+1][0] - xyArray[i][0]; + int fullDist = xyArray[i + 1][0] - xyArray[i][0]; int prevValue = xyArray[i][1]; - int fullDelta = xyArray[i+1][1] - prevValue; - return prevValue + ( (position * fullDelta) / fullDist ); + int fullDelta = xyArray[i + 1][1] - prevValue; + return prevValue + ((position * fullDelta) / fullDist); } } } catch (IndexOutOfBoundsException e) { @@ -300,7 +315,8 @@ public final class Utils { /** * Checks if an int is in an int[] - * @param key int to look for + * + * @param key int to look for * @param array int[] to look in * @return key in array */ @@ -315,7 +331,8 @@ public final class Utils { /** * Return a copy of minuend without any elements found in subtrahend. - * @param minuend The array we want elements from + * + * @param minuend The array we want elements from * @param subtrahend The array whose elements we don't want * @return The array with only the elements we want, in the order that minuend had them */ @@ -331,6 +348,7 @@ public final class Utils { /** * Gets the language code from a given locale. + * * @param locale A locale. * @return A string in the format of 'XX-XX'. */ @@ -340,6 +358,7 @@ public final class Utils { /** * Base64 encodes a given byte array. + * * @param toEncode An array of bytes. * @return A base64 encoded string. */ @@ -349,6 +368,7 @@ public final class Utils { /** * Base64 decodes a given string. + * * @param toDecode A base64 encoded string. * @return An array of bytes. */ diff --git a/src/main/java/emu/grasscutter/utils/WeightedList.java b/src/main/java/emu/grasscutter/utils/WeightedList.java index 6c3e32220..f6a2e257c 100644 --- a/src/main/java/emu/grasscutter/utils/WeightedList.java +++ b/src/main/java/emu/grasscutter/utils/WeightedList.java @@ -9,7 +9,7 @@ public class WeightedList { private double total = 0; public WeightedList() { - + } public WeightedList add(double weight, E result) { @@ -24,7 +24,7 @@ public class WeightedList { return map.higherEntry(value).getValue(); } - public int size() { - return map.size(); - } -} \ No newline at end of file + public int size() { + return map.size(); + } +} diff --git a/src/main/resources/defaults/data/ActivityConfig.json b/src/main/resources/defaults/data/ActivityConfig.json index 6291aea43..2e5eb12f6 100644 --- a/src/main/resources/defaults/data/ActivityConfig.json +++ b/src/main/resources/defaults/data/ActivityConfig.json @@ -1,21 +1,21 @@ [ - { - "activityId" : 5072, - "activityType" : 2202, - "scheduleId": 5072001, - "meetCondList" : [ - 5072001, - 5072002, - 5072003, - 5072004, - 5072005, - 5072006, - 5072007, - 5072008, - 5072009, - 5072013 - ], - "beginTime" : "2022-05-01T00:00:00+08:00", - "endTime" : "2023-05-01T00:00:00+08:00" - } -] \ No newline at end of file + { + "activityId": 5072, + "activityType": 2202, + "scheduleId": 5072001, + "meetCondList": [ + 5072001, + 5072002, + 5072003, + 5072004, + 5072005, + 5072006, + 5072007, + 5072008, + 5072009, + 5072013 + ], + "beginTime": "2022-05-01T00:00:00+08:00", + "endTime": "2023-05-01T00:00:00+08:00" + } +] diff --git a/src/main/resources/defaults/data/Announcement.json b/src/main/resources/defaults/data/Announcement.json index 271311c46..84713119a 100644 --- a/src/main/resources/defaults/data/Announcement.json +++ b/src/main/resources/defaults/data/Announcement.json @@ -1,22 +1,22 @@ [ { - "templateId" : 1, - "type" : "CENTER", - "frequency" : 1, + "templateId": 1, + "type": "CENTER", + "frequency": 1, "content": "Welcome to Grasscutter PS!", "beginTime": "2022-06-01T00:00:00+08:00", "endTime": "2022-06-01T00:08:00+08:00", - "tick" : false, + "tick": false, "interval": 1 }, { - "templateId" : 2, - "type" : "COUNTDOWN", - "frequency" : 1, + "templateId": 2, + "type": "COUNTDOWN", + "frequency": 1, "content": "Welcome to Grasscutter PS!", "beginTime": "2022-06-01T00:00:00+08:00", "endTime": "2022-06-01T00:08:00+08:00", - "tick" : false, + "tick": false, "interval": 1 } ] diff --git a/src/main/resources/defaults/data/BlossomConfig.json b/src/main/resources/defaults/data/BlossomConfig.json index 2e99de1ad..52ab5204a 100644 --- a/src/main/resources/defaults/data/BlossomConfig.json +++ b/src/main/resources/defaults/data/BlossomConfig.json @@ -1,8 +1,225 @@ { "monsterFightingVolume": 100, "monsterIdsPerDifficulty": { - "0": [21010101, 20010101, 20010201, 20010202, 20010301, 20010401, 20010403, 20010501, 20010601, 20010604, 20010701, 20010702, 20010801, 20010802, 20010901, 20010902, 20010904, 20011001, 20011101, 20011103, 20011601, 20011701, 20011801, 20011901, 20050201, 20050202, 20050203, 20050301, 20050302, 20050401, 20050402, 20050403, 20050501, 20050502, 20050601, 20050602, 20050603, 20050701, 20050702, 20050703, 20050801, 20050802, 20050901, 21010201, 21010301, 21010401, 21010402, 21010501, 21010502, 21010601, 21010603, 21010701, 21010901, 21010902, 21011001, 21011002, 21011201, 21011301, 21011302, 21011401, 21011403, 21011501, 21011601, 21011602, 20011201, 20011202, 20011301, 20011304, 20011401, 20011501, 20011502, 25010101, 25010102, 25010103, 25010104, 25010105, 25010106, 25010201, 25010203, 25010204, 25010205, 25010206, 25010207, 25010208, 25010701, 25020101, 25020102, 25020201, 25020204, 25030101, 25030102, 25030103, 25030201, 25030301, 25040101, 25040102, 25040103, 25050101, 25050201, 25050301, 25050401, 25050402, 25050501, 25050502, 25060101, 25060102, 25070101, 25070201, 25070202, 21010102, 20010302, 20010402, 20010502, 20010602, 20010703, 20010803, 20010903, 20011002, 20011102, 21010302, 21010702, 21011202, 21011402, 20011203, 20011302, 20011402, 20011503, 21030102, 21030202, 21030302, 21030403, 21030502, 21030602], - "1": [21020101, 21020201, 21020202, 21020301, 21020601, 21020701, 21020703, 21030101, 21030103, 21030201, 21030203, 21030301, 21030303, 21030304, 21030401, 21030402, 21030501, 21030601, 21030603, 25010301, 25010302, 25010401, 25010501, 25010601, 26010101, 26010102, 26010201, 26010301, 21020102, 21020203, 21020702, 21020302, 21020602], - "2": [21020401, 21020501, 21020801, 20020101, 20070101, 22010101, 22010102, 22010103, 22010104, 22010201, 22010202, 22010203, 22010204, 22010301, 22010302, 22010303, 22010304, 22010401, 22010403, 22010404, 24010101, 24010201, 23010101, 23010201, 23010301, 23010401, 23010501, 23010601, 23020101, 23020102, 23030101, 23030102, 23040101, 23040102, 23050101, 20060101, 20060201, 20060301, 20060401, 20060501, 20060601, 21020402, 21020502, 21020802, 22010105, 22010205, 22010305, 22010402] + "0": [ + 21010101, + 20010101, + 20010201, + 20010202, + 20010301, + 20010401, + 20010403, + 20010501, + 20010601, + 20010604, + 20010701, + 20010702, + 20010801, + 20010802, + 20010901, + 20010902, + 20010904, + 20011001, + 20011101, + 20011103, + 20011601, + 20011701, + 20011801, + 20011901, + 20050201, + 20050202, + 20050203, + 20050301, + 20050302, + 20050401, + 20050402, + 20050403, + 20050501, + 20050502, + 20050601, + 20050602, + 20050603, + 20050701, + 20050702, + 20050703, + 20050801, + 20050802, + 20050901, + 21010201, + 21010301, + 21010401, + 21010402, + 21010501, + 21010502, + 21010601, + 21010603, + 21010701, + 21010901, + 21010902, + 21011001, + 21011002, + 21011201, + 21011301, + 21011302, + 21011401, + 21011403, + 21011501, + 21011601, + 21011602, + 20011201, + 20011202, + 20011301, + 20011304, + 20011401, + 20011501, + 20011502, + 25010101, + 25010102, + 25010103, + 25010104, + 25010105, + 25010106, + 25010201, + 25010203, + 25010204, + 25010205, + 25010206, + 25010207, + 25010208, + 25010701, + 25020101, + 25020102, + 25020201, + 25020204, + 25030101, + 25030102, + 25030103, + 25030201, + 25030301, + 25040101, + 25040102, + 25040103, + 25050101, + 25050201, + 25050301, + 25050401, + 25050402, + 25050501, + 25050502, + 25060101, + 25060102, + 25070101, + 25070201, + 25070202, + 21010102, + 20010302, + 20010402, + 20010502, + 20010602, + 20010703, + 20010803, + 20010903, + 20011002, + 20011102, + 21010302, + 21010702, + 21011202, + 21011402, + 20011203, + 20011302, + 20011402, + 20011503, + 21030102, + 21030202, + 21030302, + 21030403, + 21030502, + 21030602 + ], + "1": [ + 21020101, + 21020201, + 21020202, + 21020301, + 21020601, + 21020701, + 21020703, + 21030101, + 21030103, + 21030201, + 21030203, + 21030301, + 21030303, + 21030304, + 21030401, + 21030402, + 21030501, + 21030601, + 21030603, + 25010301, + 25010302, + 25010401, + 25010501, + 25010601, + 26010101, + 26010102, + 26010201, + 26010301, + 21020102, + 21020203, + 21020702, + 21020302, + 21020602 + ], + "2": [ + 21020401, + 21020501, + 21020801, + 20020101, + 20070101, + 22010101, + 22010102, + 22010103, + 22010104, + 22010201, + 22010202, + 22010203, + 22010204, + 22010301, + 22010302, + 22010303, + 22010304, + 22010401, + 22010403, + 22010404, + 24010101, + 24010201, + 23010101, + 23010201, + 23010301, + 23010401, + 23010501, + 23010601, + 23020101, + 23020102, + 23030101, + 23030102, + 23040101, + 23040102, + 23050101, + 20060101, + 20060201, + 20060301, + 20060401, + 20060501, + 20060601, + 21020402, + 21020502, + 21020802, + 22010105, + 22010205, + 22010305, + 22010402 + ] } } diff --git a/src/main/resources/defaults/data/ChestReward.json b/src/main/resources/defaults/data/ChestReward.json index 4fe186a4a..cf54b1793 100644 --- a/src/main/resources/defaults/data/ChestReward.json +++ b/src/main/resources/defaults/data/ChestReward.json @@ -1,6 +1,6 @@ [ { - "objNames" : [ + "objNames": [ "SceneObj_Chest_Default_Lv1", "SceneObj_Chest_Locked_Lv1", "SceneObj_Chest_Bramble_Lv1", @@ -9,130 +9,130 @@ "SceneObj_EssenceChest_Default_Lv1", "SceneObj_EssenceChest_Locked_Lv1" ], - "advExp" : 10, - "resin" : 0, - "mora" : 257, - "sigil" : 1, - "content" : [ + "advExp": 10, + "resin": 0, + "mora": 257, + "sigil": 1, + "content": [ { - "itemId" : 104011, + "itemId": 104011, "count": 3 }, { - "itemId" : 104001, + "itemId": 104001, "count": 1 } ], "randomCount": 4, "randomContent": [ { - "itemId" : 11101, + "itemId": 11101, "count": 1 }, { - "itemId" : 11201, + "itemId": 11201, "count": 1 }, { - "itemId" : 12101, + "itemId": 12101, "count": 1 }, { - "itemId" : 12201, + "itemId": 12201, "count": 1 }, { - "itemId" : 13101, + "itemId": 13101, "count": 1 }, { - "itemId" : 13201, + "itemId": 13201, "count": 1 }, { - "itemId" : 14101, + "itemId": 14101, "count": 1 }, { - "itemId" : 14201, + "itemId": 14201, "count": 1 }, { - "itemId" : 15101, + "itemId": 15101, "count": 1 }, { - "itemId" : 15201, + "itemId": 15201, "count": 1 } ] }, { - "objNames" : [ + "objNames": [ "SceneObj_Chest_Default_Lv2", "SceneObj_Chest_Locked_Lv2", "SceneObj_Chest_Bramble_Lv2", "SceneObj_Chest_Frozen_Lv2" ], - "advExp" : 20, - "resin" : 2, - "mora" : 756, - "sigil" : 2, - "content" : [ + "advExp": 20, + "resin": 2, + "mora": 756, + "sigil": 2, + "content": [ { - "itemId" : 104012, + "itemId": 104012, "count": 3 }, { - "itemId" : 104002, + "itemId": 104002, "count": 1 } ], "randomCount": 4, "randomContent": [ { - "itemId" : 11201, + "itemId": 11201, "count": 1 }, { - "itemId" : 11301, + "itemId": 11301, "count": 1 }, { - "itemId" : 12201, + "itemId": 12201, "count": 1 }, { - "itemId" : 12301, + "itemId": 12301, "count": 1 }, { - "itemId" : 13201, + "itemId": 13201, "count": 1 }, { - "itemId" : 13301, + "itemId": 13301, "count": 1 }, { - "itemId" : 14201, + "itemId": 14201, "count": 1 }, { - "itemId" : 14301, + "itemId": 14301, "count": 1 }, { - "itemId" : 15201, + "itemId": 15201, "count": 1 }, { - "itemId" : 15301, + "itemId": 15301, "count": 1 } ] }, - { + { "objNames": [ "SceneObj_Chest_Default_Lv3", "SceneObj_Chest_Locked_Lv3", diff --git a/src/main/resources/defaults/data/Drop.json b/src/main/resources/defaults/data/Drop.json index aecf5d12f..42fa99237 100644 --- a/src/main/resources/defaults/data/Drop.json +++ b/src/main/resources/defaults/data/Drop.json @@ -1,44 +1,484 @@ [ - {"monsterId":28040101,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040102,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040103,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040104,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040105,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040106,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040107,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28040108,"dropDataList":[{"itemId":100084,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020301,"dropDataList":[{"itemId":100061,"minCount":2,"maxCount":2,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020302,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020101,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020102,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020103,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020104,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020105,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020106,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020701,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020702,"dropDataList":[{"itemId":100061,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020303,"dropDataList":[{"itemId":100094,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28020304,"dropDataList":[{"itemId":100094,"minCount":2,"maxCount":3,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030401,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030402,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030403,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030404,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030405,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030406,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030407,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030408,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030409,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030301,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030302,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030303,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030304,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030305,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030306,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030307,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030308,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030309,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030310,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, - {"monsterId":28030311,"dropDataList":[{"itemId":100064,"minCount":1,"maxCount":1,"minWeight":0,"maxWeight":10000}]}, + { + "monsterId": 28040101, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040102, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040103, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040104, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040105, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040106, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040107, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28040108, + "dropDataList": [ + { + "itemId": 100084, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020301, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 2, + "maxCount": 2, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020302, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020101, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020102, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020103, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020104, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020105, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020106, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020701, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020702, + "dropDataList": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020303, + "dropDataList": [ + { + "itemId": 100094, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28020304, + "dropDataList": [ + { + "itemId": 100094, + "minCount": 2, + "maxCount": 3, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030401, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030402, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030403, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030404, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030405, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030406, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030407, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030408, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030409, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030301, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030302, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030303, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030304, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030305, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030306, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030307, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030308, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030309, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030310, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, + { + "monsterId": 28030311, + "dropDataList": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1, + "minWeight": 0, + "maxWeight": 10000 + } + ] + }, { "monsterId": 21010101, "dropDataList": [ @@ -9747,4 +10187,4 @@ } ] } -] \ No newline at end of file +] diff --git a/src/main/resources/defaults/data/DungeonDrop.json b/src/main/resources/defaults/data/DungeonDrop.json index a0cba4fc0..6b3141545 100644 --- a/src/main/resources/defaults/data/DungeonDrop.json +++ b/src/main/resources/defaults/data/DungeonDrop.json @@ -1,4514 +1,10357 @@ [ - { - "dungeonId": 5100, - "comment": "Domain of Guyun 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Artifacts", - "counts": [5], - "items": [61240, 61241, 61220, 61221, 61250, 61251, 61210, 61211, 61230, 61231] - }, - { - "comment": "3-star Artifacts", - "counts": [2, 3], - "probabilities": [85, 15], - "items": [61341, 61342, 61321, 61322, 61351, 61352, 61311, 61312, 61331, 61332, 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332] - } - ] - }, - { - "dungeonId": 5101, - "comment": "Domain of Guyun 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1700], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Artifacts", - "counts": [2, 3], - "items": [61240, 61241, 61220, 61221, 61250, 61251, 61210, 61211, 61230, 61231] - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [20, 80], - "items": [ - 61341, 61342, 61321, 61322, 61351, 61352, 61311, 61312, 61331, 61332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - } - ] - }, - { - "dungeonId": 5102, - "comment": "Domain of Guyun 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 61341, 61342, 61321, 61322, 61351, 61352, 61311, 61312, 61331, 61332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 88442, 88443, 88422, 88423, 88452, 88453, 88412, 88413, 88432, 88433, - 89442, 89443, 89422, 89423, 89452, 89453, 89412, 89413, 89432, 89433 - ] - } - ] - }, - { - "dungeonId": 5103, - "comment": "Domain of Guyun 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 61341, 61342, 61321, 61322, 61351, 61352, 61311, 61312, 61331, 61332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 88442, 88443, 88422, 88423, 88452, 88453, 88412, 88413, 88432, 88433, - 89442, 89443, 89422, 89423, 89452, 89453, 89412, 89413, 89432, 89433 - ] - } - ] - }, - { - "dungeonId": 5104, - "comment": "Domain of Guyun 5", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 61341, 61342, 61321, 61322, 61351, 61352, 61311, 61312, 61331, 61332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 88442, 88443, 88422, 88423, 88452, 88453, 88412, 88413, 88432, 88433, - 89442, 89443, 89422, 89423, 89452, 89453, 89412, 89413, 89432, 89433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 88543, 88544, 88523, 88524, 88553, 88554, 88513, 88514, 88533, 88534, - 89543, 89544, 89523, 89524, 89553, 89554, 89513, 89514, 89533, 89534 - ] - } - ] - }, - { - "dungeonId": 5105, - "comment": "Domain of Guyun 6", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 61341, 61342, 61321, 61322, 61351, 61352, 61311, 61312, 61331, 61332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 88442, 88443, 88422, 88423, 88452, 88453, 88412, 88413, 88432, 88433, - 89442, 89443, 89422, 89423, 89452, 89453, 89412, 89413, 89432, 89433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 88543, 88544, 88523, 88524, 88553, 88554, 88513, 88514, 88533, 88534, - 89543, 89544, 89523, 89524, 89553, 89554, 89513, 89514, 89533, 89534 - ] - } - ] - }, - { - "dungeonId": 5014, - "comment": "Ridge Watch 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 91442, 91443, 91422, 91423, 91452, 91453, 91412, 91413, 91432, 91433, - 92442, 92443, 92422, 92423, 92452, 92453, 92412, 92413, 92432, 92433 - ] - } - ] - }, - { - "dungeonId": 5015, - "comment": "Ridge Watch 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 91442, 91443, 91422, 91423, 91452, 91453, 91412, 91413, 91432, 91433, - 92442, 92443, 92422, 92423, 92452, 92453, 92412, 92413, 92432, 92433 - ] - } - ] - }, - { - "dungeonId": 5016, - "comment": "Ridge Watch 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 91442, 91443, 91422, 91423, 91452, 91453, 91412, 91413, 91432, 91433, - 92442, 92443, 92422, 92423, 92452, 92453, 92412, 92413, 92432, 92433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 91543, 91544, 91523, 91524, 91553, 91554, 91513, 91514, 91533, 91534, - 92543, 92544, 92523, 92524, 92553, 92554, 92513, 92514, 92533, 92534 - ] - } - ] - }, - { - "dungeonId": 5017, - "comment": "Ridge Watch 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 91442, 91443, 91422, 91423, 91452, 91453, 91412, 91413, 91432, 91433, - 92442, 92443, 92422, 92423, 92452, 92453, 92412, 92413, 92432, 92433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 91543, 91544, 91523, 91524, 91553, 91554, 91513, 91514, 91533, 91534, - 92543, 92544, 92523, 92524, 92553, 92554, 92513, 92514, 92533, 92534 - ] - } - ] - }, - { - "dungeonId": 5112, - "comment": "Clear Pool and Mountain Caverns 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332, - 62341, 62342, 62321, 62322, 62351, 62352, 62311, 62312, 62331, 62332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 62442, 62443, 62422, 62423, 62452, 62453, 62412, 62413, 62432, 62433, - 81442, 81443, 81422, 81423, 81452, 81453, 81412, 81413, 81432, 81433, - 82442, 82443, 82422, 82423, 82452, 82453, 82412, 82413, 82432, 82433 - ] - } - ] - }, - { - "dungeonId": 5113, - "comment": "Clear Pool and Mountain Caverns 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332, - 62341, 62342, 62321, 62322, 62351, 62352, 62311, 62312, 62331, 62332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 62442, 62443, 62422, 62423, 62452, 62453, 62412, 62413, 62432, 62433, - 81442, 81443, 81422, 81423, 81452, 81453, 81412, 81413, 81432, 81433, - 82442, 82443, 82422, 82423, 82452, 82453, 82412, 82413, 82432, 82433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 81543, 81544, 81523, 81524, 81553, 81554, 81513, 81514, 81533, 81534, - 82543, 82544, 82523, 82524, 82553, 82554, 82513, 82514, 82533, 82534 - ] - } - ] - }, - { - "dungeonId": 5114, - "comment": "Clear Pool and Mountain Caverns 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332, - 62341, 62342, 62321, 62322, 62351, 62352, 62311, 62312, 62331, 62332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 62442, 62443, 62422, 62423, 62452, 62453, 62412, 62413, 62432, 62433, - 81442, 81443, 81422, 81423, 81452, 81453, 81412, 81413, 81432, 81433, - 82442, 82443, 82422, 82423, 82452, 82453, 82412, 82413, 82432, 82433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 81543, 81544, 81523, 81524, 81553, 81554, 81513, 81514, 81533, 81534, - 82543, 82544, 82523, 82524, 82553, 82554, 82513, 82514, 82533, 82534 - ] - } - ] - }, - { - "dungeonId": 5001, - "comment": "Midsummer Courtyard 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Artifacts", - "counts": [5], - "items": [60240, 60241, 60220, 60221, 60250, 60251, 60210, 60211, 60230, 60231] - }, - { - "comment": "3-star Artifacts", - "counts": [2, 3], - "probabilities": [85, 15], - "items": [ - 60341, 60342, 60321, 60322, 60351, 60352, 60311, 60312, 60331, 60332, - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332 - ] - } - ] - }, - { - "dungeonId": 5002, - "comment": "Midsummer Courtyard 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1700], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Artifacts", - "counts": [2, 3], - "items": [60240, 60241, 60220, 60221, 60250, 60251, 60210, 60211, 60230, 60231] - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [20, 80], - "items": [ - 60341, 60342, 60321, 60322, 60351, 60352, 60311, 60312, 60331, 60332, - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332 - ] - } - ] - }, - { - "dungeonId": 5003, - "comment": "Midsummer Courtyard 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 60341, 60342, 60321, 60322, 60351, 60352, 60311, 60312, 60331, 60332, - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 72442, 72443, 72422, 72423, 72452, 72453, 72412, 72413, 72432, 72433, - 79442, 79443, 79422, 79423, 79452, 79453, 79412, 79413, 79432, 79433 - ] - } - ] - }, - { - "dungeonId": 5004, - "comment": "Midsummer Courtyard 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 60341, 60342, 60321, 60322, 60351, 60352, 60311, 60312, 60331, 60332, - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 72442, 72443, 72422, 72423, 72452, 72453, 72412, 72413, 72432, 72433, - 79442, 79443, 79422, 79423, 79452, 79453, 79412, 79413, 79432, 79433 - ] - } - ] - }, - { - "dungeonId": 5005, - "comment": "Midsummer Courtyard 5", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 60341, 60342, 60321, 60322, 60351, 60352, 60311, 60312, 60331, 60332, - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 72442, 72443, 72422, 72423, 72452, 72453, 72412, 72413, 72432, 72433, - 79442, 79443, 79422, 79423, 79452, 79453, 79412, 79413, 79432, 79433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 72543, 72544, 72523, 72524, 72553, 72554, 72513, 72514, 72533, 72534, - 79543, 79544, 79523, 79524, 79553, 79554, 79513, 79514, 79533, 79534 - ] - } - ] - }, - { - "dungeonId": 5006, - "comment": "Midsummer Courtyard 6", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 60341, 60342, 60321, 60322, 60351, 60352, 60311, 60312, 60331, 60332, - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 72442, 72443, 72422, 72423, 72452, 72453, 72412, 72413, 72432, 72433, - 79442, 79443, 79422, 79423, 79452, 79453, 79412, 79413, 79432, 79433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 72543, 72544, 72523, 72524, 72553, 72554, 72513, 72514, 72533, 72534, - 79543, 79544, 79523, 79524, 79553, 79554, 79513, 79514, 79533, 79534 - ] - } - ] - }, - { - "dungeonId": 5200, - "comment": "Momiji-Dyed Court 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 93442, 93443, 93422, 93423, 93452, 93453, 93412, 93413, 93432, 93433, - 94442, 94443, 94422, 94423, 94452, 94453, 94412, 94413, 94432, 94433 - ] - } - ] - }, - { - "dungeonId": 5201, - "comment": "Momiji-Dyed Court 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 93442, 93443, 93422, 93423, 93452, 93453, 93412, 93413, 93432, 93433, - 94442, 94443, 94422, 94423, 94452, 94453, 94412, 94413, 94432, 94433 - ] - } - ] - }, - { - "dungeonId": 5202, - "comment": "Momiji-Dyed Court 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 93442, 93443, 93422, 93423, 93452, 93453, 93412, 93413, 93432, 93433, - 94442, 94443, 94422, 94423, 94452, 94453, 94412, 94413, 94432, 94433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 93543, 93544, 93523, 93524, 93553, 93554, 93513, 93514, 93533, 93534, - 94543, 94544, 94523, 94524, 94553, 94554, 94513, 94514, 94533, 94534 - ] - } - ] - }, - { - "dungeonId": 5203, - "comment": "Momiji-Dyed Court 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 51341, 51342, 51321, 51322, 51351, 51352, 51311, 51312, 51331, 51332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 51442, 51443, 51422, 51423, 51452, 51453, 51412, 51413, 51432, 51433, - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 93442, 93443, 93422, 93423, 93452, 93453, 93412, 93413, 93432, 93433, - 94442, 94443, 94422, 94423, 94452, 94453, 94412, 94413, 94432, 94433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 93543, 93544, 93523, 93524, 93553, 93554, 93513, 93514, 93533, 93534, - 94543, 94544, 94523, 94524, 94553, 94554, 94513, 94514, 94533, 94534 - ] - } - ] - }, - { - "dungeonId": 5204, - "comment": "Slumbering Court 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 95442, 95443, 95422, 95423, 95452, 95453, 95412, 95413, 95432, 95433, - 96442, 96443, 96422, 96423, 96452, 96453, 96412, 96413, 96432, 96433 - ] - } - ] - }, - { - "dungeonId": 5205, - "comment": "Slumbering Court 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 95442, 95443, 95422, 95423, 95452, 95453, 95412, 95413, 95432, 95433, - 96442, 96443, 96422, 96423, 96452, 96453, 96412, 96413, 96432, 96433 - ] - } - ] - }, - { - "dungeonId": 5206, - "comment": "Slumbering Court 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 95442, 95443, 95422, 95423, 95452, 95453, 95412, 95413, 95432, 95433, - 96442, 96443, 96422, 96423, 96452, 96453, 96412, 96413, 96432, 96433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 95543, 95544, 95523, 95524, 95553, 95554, 95513, 95514, 95533, 95534, - 96543, 96544, 96523, 96524, 96553, 96554, 96513, 96514, 96533, 96534 - ] - } - ] - }, - { - "dungeonId": 5207, - "comment": "Slumbering Court 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 52341, 52342, 52321, 52322, 52351, 52352, 52311, 52312, 52331, 52332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 52442, 52443, 52422, 52423, 52452, 52453, 52412, 52413, 52432, 52433, - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 95442, 95443, 95422, 95423, 95452, 95453, 95412, 95413, 95432, 95433, - 96442, 96443, 96422, 96423, 96452, 96453, 96412, 96413, 96432, 96433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 95543, 95544, 95523, 95524, 95553, 95554, 95513, 95514, 95533, 95534, - 96543, 96544, 96523, 96524, 96553, 96554, 96513, 96514, 96533, 96534 - ] - } - ] - }, - { - "dungeonId": 5125, - "comment": "The Lost Valley 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 97442, 97443, 97422, 97423, 97452, 97453, 97412, 97413, 97432, 97433, - 98442, 98443, 98422, 98423, 98452, 98453, 98412, 98413, 98432, 98433 - ] - } - ] - }, - { - "dungeonId": 5126, - "comment": "The Lost Valley 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 97442, 97443, 97422, 97423, 97452, 97453, 97412, 97413, 97432, 97433, - 98442, 98443, 98422, 98423, 98452, 98453, 98412, 98413, 98432, 98433 - ] - } - ] - }, - { - "dungeonId": 5127, - "comment": "The Lost Valley 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 97442, 97443, 97422, 97423, 97452, 97453, 97412, 97413, 97432, 97433, - 98442, 98443, 98422, 98423, 98452, 98453, 98412, 98413, 98432, 98433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 97543, 97544, 97523, 97524, 97553, 97554, 97513, 97514, 97533, 97534, - 98543, 98544, 98523, 98524, 98553, 98554, 98513, 98514, 98533, 98534 - ] - } - ] - }, - { - "dungeonId": 5128, - "comment": "The Lost Valley 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 97442, 97443, 97422, 97423, 97452, 97453, 97412, 97413, 97432, 97433, - 98442, 98443, 98422, 98423, 98452, 98453, 98412, 98413, 98432, 98433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 97543, 97544, 97523, 97524, 97553, 97554, 97513, 97514, 97533, 97534, - 98543, 98544, 98523, 98524, 98553, 98554, 98513, 98514, 98533, 98534 - ] - } - ] - }, - { - "dungeonId": 5008, - "comment": "Valley of Remembrance 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1700], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Artifacts", - "counts": [2, 3], - "items": [63240, 63241, 63220, 63221, 63250, 63251, 63210, 63211, 63230, 63231] - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [20, 80], - "items": [ - 63341, 63342, 63321, 63322, 63351, 63352, 63311, 63312, 63331, 63332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - } - ] - }, - { - "dungeonId": 5009, - "comment": "Valley of Remembrance 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 63341, 63342, 63321, 63322, 63351, 63352, 63311, 63312, 63331, 63332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 76442, 76443, 76422, 76423, 76452, 76453, 76412, 76413, 76432, 76433, - 74442, 74443, 74422, 74423, 74452, 74453, 74412, 74413, 74432, 74433 - ] - } - ] - }, - { - "dungeonId": 5010, - "comment": "Valley of Remembrance 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 63341, 63342, 63321, 63322, 63351, 63352, 63311, 63312, 63331, 63332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 76442, 76443, 76422, 76423, 76452, 76453, 76412, 76413, 76432, 76433, - 74442, 74443, 74422, 74423, 74452, 74453, 74412, 74413, 74432, 74433 - ] - } - ] - }, - { - "dungeonId": 5011, - "comment": "Valley of Remembrance 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 63341, 63342, 63321, 63322, 63351, 63352, 63311, 63312, 63331, 63332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 76442, 76443, 76422, 76423, 76452, 76453, 76412, 76413, 76432, 76433, - 74442, 74443, 74422, 74423, 74452, 74453, 74412, 74413, 74432, 74433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 76543, 76544, 76523, 76524, 76553, 76554, 76513, 76514, 76533, 76534, - 74543, 74544, 74523, 74524, 74553, 74554, 74513, 74514, 74533, 74534 - ] - } - ] - }, - { - "dungeonId": 5012, - "comment": "Valley of Remembrance 5", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 63341, 63342, 63321, 63322, 63351, 63352, 63311, 63312, 63331, 63332, - 54341, 54342, 54321, 54322, 54351, 54352, 54311, 54312, 54331, 54332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 54442, 54443, 54422, 54423, 54452, 54453, 54412, 54413, 54432, 54433, - 76442, 76443, 76422, 76423, 76452, 76453, 76412, 76413, 76432, 76433, - 74442, 74443, 74422, 74423, 74452, 74453, 74412, 74413, 74432, 74433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 76543, 76544, 76523, 76524, 76553, 76554, 76513, 76514, 76533, 76534, - 74543, 74544, 74523, 74524, 74553, 74554, 74513, 74514, 74533, 74534 - ] - } - ] - }, - { - "dungeonId": 5120, - "comment": "Peak of Vindagnyr 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 71442, 71443, 71422, 71423, 71452, 71453, 71412, 71413, 71432, 71433, - 90442, 90443, 90422, 90423, 90452, 90453, 90412, 90413, 90432, 90433 - ] - } - ] - }, - { - "dungeonId": 5121, - "comment": "Peak of Vindagnyr 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 71442, 71443, 71422, 71423, 71452, 71453, 71412, 71413, 71432, 71433, - 90442, 90443, 90422, 90423, 90452, 90453, 90412, 90413, 90432, 90433 - ] - } - ] - }, - { - "dungeonId": 5122, - "comment": "Peak of Vindagnyr 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 71442, 71443, 71422, 71423, 71452, 71453, 71412, 71413, 71432, 71433, - 90442, 90443, 90422, 90423, 90452, 90453, 90412, 90413, 90432, 90433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 71543, 71544, 71523, 71524, 71553, 71554, 71513, 71514, 71533, 71534, - 90543, 90544, 90523, 90524, 90553, 90554, 90513, 90514, 90533, 90534 - ] - } - ] - }, - { - "dungeonId": 5123, - "comment": "Peak of Vindagnyr 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 58341, 58342, 58321, 58322, 58351, 58352, 58311, 58312, 58331, 58332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 58442, 58443, 58422, 58423, 58452, 58453, 58412, 58413, 58432, 58433, - 71442, 71443, 71422, 71423, 71452, 71453, 71412, 71413, 71432, 71433, - 90442, 90443, 90422, 90423, 90452, 90453, 90412, 90413, 90432, 90433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 71543, 71544, 71523, 71524, 71553, 71554, 71513, 71514, 71533, 71534, - 90543, 90544, 90523, 90524, 90553, 90554, 90513, 90514, 90533, 90534 - ] - } - ] - }, - { - "dungeonId": 5107, - "comment": "Hidden Palace of Zhou Formula 1", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [6, 7], - "probabilities": [60, 40], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [0, 2], - "probabilities": [20, 70, 10], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 80442, 80443, 80422, 80423, 80452, 80453, 80412, 80413, 80432, 80433, - 73442, 73443, 73422, 73423, 73452, 73453, 73412, 73413, 73432, 73433 - ] - } - ] - }, - { - "dungeonId": 5108, - "comment": "Hidden Palace of Zhou Formula 2", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2025], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [5, 6], - "probabilities": [20, 80], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [60, 40], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 80442, 80443, 80422, 80423, 80452, 80453, 80412, 80413, 80432, 80433, - 73442, 73443, 73422, 73423, 73452, 73453, 73412, 73413, 73432, 73433 - ] - } - ] - }, - { - "dungeonId": 5109, - "comment": "Hidden Palace of Zhou Formula 3", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [4, 5], - "probabilities": [2, 98], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 80442, 80443, 80422, 80423, 80452, 80453, 80412, 80413, 80432, 80433, - 73442, 73443, 73422, 73423, 73452, 73453, 73412, 73413, 73432, 73433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [0, 1], - "probabilities": [60, 40], - "items": [ - 80543, 80544, 80523, 80524, 80553, 80554, 80513, 80514, 80533, 80534, - 73543, 73544, 73523, 73524, 73553, 73554, 73513, 73514, 73533, 73534 - ] - } - ] - }, - { - "dungeonId": 5110, - "comment": "Hidden Palace of Zhou Formula 4", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2525], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "3-star Artifacts", - "counts": [3, 4], - "probabilities": [50, 50], - "items": [ - 53341, 53342, 53321, 53322, 53351, 53352, 53311, 53312, 53331, 53332, - 56341, 56342, 56321, 56322, 56351, 56352, 56311, 56312, 56331, 56332 - ] - }, - { - "comment": "4-star Artifacts", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [ - 53442, 53443, 53422, 53423, 53452, 53453, 53412, 53413, 53432, 53433, - 56442, 56443, 56422, 56423, 56452, 56453, 56412, 56413, 56432, 56433, - 80442, 80443, 80422, 80423, 80452, 80453, 80412, 80413, 80432, 80433, - 73442, 73443, 73422, 73423, 73452, 73453, 73412, 73413, 73432, 73433 - ] - }, - { - "comment": "5-star Artifacts", - "counts": [1, 2], - "probabilities": [90, 10], - "items": [ - 80543, 80544, 80523, 80524, 80553, 80554, 80513, 80514, 80533, 80534, - 73543, 73544, 73523, 73524, 73553, 73554, 73513, 73514, 73533, 73534 - ] - } - ] - }, - { - "dungeonId": 4210, - "comment": "Forsaken Rift 1: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104301] - } - ] - }, - { - "dungeonId": 4211, - "comment": "Forsaken Rift 2: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104301] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104302] - } - ] - }, - { - "dungeonId": 4212, - "comment": "Forsaken Rift 3: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104301] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104302] - } - ] - }, - { - "dungeonId": 4213, - "comment": "Forsaken Rift 4: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104301] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104302] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104303] - } - ] - }, - { - "dungeonId": 4220, - "comment": "Forsaken Rift 1: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104304] - } - ] - }, - { - "dungeonId": 4221, - "comment": "Forsaken Rift 2: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104304] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104305] - } - ] - }, - { - "dungeonId": 4222, - "comment": "Forsaken Rift 3: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104304] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104305] - } - ] - }, - { - "dungeonId": 4223, - "comment": "Forsaken Rift 4: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104304] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104305] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104306] - } - ] - }, - { - "dungeonId": 4230, - "comment": "Forsaken Rift 1: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104307] - } - ] - }, - { - "dungeonId": 4231, - "comment": "Forsaken Rift 2: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104307] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104308] - } - ] - }, - { - "dungeonId": 4232, - "comment": "Forsaken Rift 3: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104307] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104308] - } - ] - }, - { - "dungeonId": 4233, - "comment": "Forsaken Rift 4: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104307] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104308] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104309] - } - ] - }, - { - "dungeonId": 4400, - "comment": "Violet Court 1: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104320] - } - ] - }, - { - "dungeonId": 4401, - "comment": "Violet Court 2: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104320] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104321] - } - ] - }, - { - "dungeonId": 4402, - "comment": "Violet Court 3: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104320] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104321] - } - ] - }, - { - "dungeonId": 4403, - "comment": "Violet Court 4: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104320] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104321] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104322] - } - ] - }, - { - "dungeonId": 4410, - "comment": "Violet Court 1: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104323] - } - ] - }, - { - "dungeonId": 4411, - "comment": "Violet Court 2: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104323] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104324] - } - ] - }, - { - "dungeonId": 4412, - "comment": "Violet Court 3: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104323] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104324] - } - ] - }, - { - "dungeonId": 4413, - "comment": "Violet Court 4: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104323] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104324] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104325] - } - ] - }, - { - "dungeonId": 4420, - "comment": "Violet Court 1: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104326] - } - ] - }, - { - "dungeonId": 4421, - "comment": "Violet Court 2: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104326] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104327] - } - ] - }, - { - "dungeonId": 4422, - "comment": "Violet Court 3: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104326] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104327] - } - ] - }, - { - "dungeonId": 4423, - "comment": "Violet Court 4: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104326] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104327] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104328] - } - ] - }, - { - "dungeonId": 5254, - "comment": "Taishan Mansion 1: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104310] - } - ] - }, - { - "dungeonId": 5255, - "comment": "Taishan Mansion 2: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104310] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104311] - } - ] - }, - { - "dungeonId": 5256, - "comment": "Taishan Mansion 3: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104310] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104311] - } - ] - }, - { - "dungeonId": 5257, - "comment": "Taishan Mansion 4: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104310] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104311] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104312] - } - ] - }, - { - "dungeonId": 5258, - "comment": "Taishan Mansion 1: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104313] - } - ] - }, - { - "dungeonId": 5259, - "comment": "Taishan Mansion 2: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104313] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104314] - } - ] - }, - { - "dungeonId": 5260, - "comment": "Taishan Mansion 3: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104313] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104314] - } - ] - }, - { - "dungeonId": 5261, - "comment": "Taishan Mansion 4: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104313] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104314] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104315] - } - ] - }, - { - "dungeonId": 5262, - "comment": "Taishan Mansion 1: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1575], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [3, 4], - "probabilities": [80, 20], - "items": [104316] - } - ] - }, - { - "dungeonId": 5263, - "comment": "Taishan Mansion 2: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1800], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [50, 50], - "items": [104316] - }, - { - "comment": "3-star Books", - "counts": [1], - "items": [104317] - } - ] - }, - { - "dungeonId": 5264, - "comment": "Taishan Mansion 3: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2050], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [1, 2], - "probabilities": [20, 80], - "items": [104316] - }, - { - "comment": "3-star Books", - "counts": [2], - "items": [104317] - } - ] - }, - { - "dungeonId": 5265, - "comment": "Taishan Mansion 4: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2375], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Books", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [104316] - }, - { - "comment": "3-star Books", - "counts": [0, 3], - "probabilities": [1, 14, 80, 5], - "items": [104317] - }, - { - "comment": "4-star Books", - "counts": [0, 3], - "probabilities": [80, 15, 4, 1], - "items": [104318] - } - ] - }, - { - "dungeonId": 4310, - "comment": "Cecilia Garden 1: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114001] - } - ] - }, - { - "dungeonId": 4311, - "comment": "Cecilia Garden 2: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114001] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114002] - } - ] - }, - { - "dungeonId": 4312, - "comment": "Cecilia Garden 3: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114001] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114002] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114003] - } - ] - }, - { - "dungeonId": 4313, - "comment": "Cecilia Garden 4: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114001] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114002] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114003] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114004] - } - ] - }, - { - "dungeonId": 4320, - "comment": "Cecilia Garden 1: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114005] - } - ] - }, - { - "dungeonId": 4321, - "comment": "Cecilia Garden 2: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114005] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114006] - } - ] - }, - { - "dungeonId": 4322, - "comment": "Cecilia Garden 3: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114005] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114006] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114007] - } - ] - }, - { - "dungeonId": 4323, - "comment": "Cecilia Garden 4: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114005] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114006] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114007] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114008] - } - ] - }, - { - "dungeonId": 4330, - "comment": "Cecilia Garden 1: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114009] - } - ] - }, - { - "dungeonId": 4331, - "comment": "Cecilia Garden 2: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114009] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114010] - } - ] - }, - { - "dungeonId": 4332, - "comment": "Cecilia Garden 3: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114009] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114010] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114011] - } - ] - }, - { - "dungeonId": 4333, - "comment": "Cecilia Garden 4: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114009] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114010] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114011] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114012] - } - ] - }, - { - "dungeonId": 4340, - "comment": "Court of Flowing Sands 1: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114025] - } - ] - }, - { - "dungeonId": 4341, - "comment": "Court of Flowing Sands 2: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114025] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114026] - } - ] - }, - { - "dungeonId": 4342, - "comment": "Court of Flowing Sands 3: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114025] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114026] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114027] - } - ] - }, - { - "dungeonId": 4343, - "comment": "Court of Flowing Sands 4: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114025] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114026] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114027] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114028] - } - ] - }, - { - "dungeonId": 4350, - "comment": "Court of Flowing Sands 1: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114029] - } - ] - }, - { - "dungeonId": 4351, - "comment": "Court of Flowing Sands 2: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114029] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114030] - } - ] - }, - { - "dungeonId": 4352, - "comment": "Court of Flowing Sands 3: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114029] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114030] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114031] - } - ] - }, - { - "dungeonId": 4353, - "comment": "Court of Flowing Sands 4: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114029] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114030] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114031] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114032] - } - ] - }, - { - "dungeonId": 4360, - "comment": "Court of Flowing Sands 1: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114033] - } - ] - }, - { - "dungeonId": 4361, - "comment": "Court of Flowing Sands 2: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114033] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114034] - } - ] - }, - { - "dungeonId": 4362, - "comment": "Court of Flowing Sands 3: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114033] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114034] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114035] - } - ] - }, - { - "dungeonId": 4363, - "comment": "Court of Flowing Sands 4: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114033] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114034] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114035] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114036] - } - ] - }, - { - "dungeonId": 5214, - "comment": "Hidden Palace of Lianshan Formula 1: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114013] - } - ] - }, - { - "dungeonId": 5215, - "comment": "Hidden Palace of Lianshan Formula 2: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114013] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114014] - } - ] - }, - { - "dungeonId": 5216, - "comment": "Hidden Palace of Lianshan Formula 3: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114013] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114014] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114015] - } - ] - }, - { - "dungeonId": 5217, - "comment": "Hidden Palace of Lianshan Formula 4: Monday/Thursday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114013] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114014] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114015] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114016] - } - ] - }, - { - "dungeonId": 5218, - "comment": "Hidden Palace of Lianshan Formula 1: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114017] - } - ] - }, - { - "dungeonId": 5219, - "comment": "Hidden Palace of Lianshan Formula 2: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114017] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114018] - } - ] - }, - { - "dungeonId": 5220, - "comment": "Hidden Palace of Lianshan Formula 3: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114017] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114018] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114019] - } - ] - }, - { - "dungeonId": 5221, - "comment": "Hidden Palace of Lianshan Formula 4: Tuesday/Friday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114017] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114018] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114019] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114020] - } - ] - }, - { - "dungeonId": 5222, - "comment": "Hidden Palace of Lianshan Formula 1: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1125], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [10], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [4, 6], - "probabilities": [20, 60, 30], - "items": [114021] - } - ] - }, - { - "dungeonId": 5223, - "comment": "Hidden Palace of Lianshan Formula 2: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1550], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114021] - }, - { - "comment": "3-star Weapon Material", - "counts": [2], - "items": [114022] - } - ] - }, - { - "dungeonId": 5224, - "comment": "Hidden Palace of Lianshan Formula 3: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [1850], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [15], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114021] - }, - { - "comment": "3-star Weapon Material", - "counts": [2, 3], - "probabilities": [20, 80], - "items": [114022] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114023] - } - ] - }, - { - "dungeonId": 5225, - "comment": "Hidden Palace of Lianshan Formula 4: Wednesday/Saturday", - "drops": [ - { - "comment": "AR exp", - "counts": [100], - "items": [102] - }, - { - "comment": "Mora", - "counts": [2200], - "items": [202] - }, - { - "comment": "Friendship exp", - "counts": [20], - "items": [105], - "mpDouble": true - }, - { - "comment": "2-star Weapon Material", - "counts": [2, 3], - "probabilities": [80, 20], - "items": [114021] - }, - { - "comment": "3-star Weapon Material", - "counts": [0, 4], - "probabilities": [5, 45, 40, 5, 5], - "items": [114022] - }, - { - "comment": "4-star Weapon Material", - "counts": [0, 4], - "probabilities": [40, 40, 15, 4, 1], - "items": [114023] - }, - { - "comment": "5-star Weapon Material", - "counts": [0, 2], - "probabilities": [80, 15, 5], - "items": [114024] - } - ] - } -] \ No newline at end of file + { + "dungeonId": 5100, + "comment": "Domain of Guyun 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Artifacts", + "counts": [ + 5 + ], + "items": [ + 61240, + 61241, + 61220, + 61221, + 61250, + 61251, + 61210, + 61211, + 61230, + 61231 + ] + }, + { + "comment": "3-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 85, + 15 + ], + "items": [ + 61341, + 61342, + 61321, + 61322, + 61351, + 61352, + 61311, + 61312, + 61331, + 61332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + } + ] + }, + { + "dungeonId": 5101, + "comment": "Domain of Guyun 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1700 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Artifacts", + "counts": [ + 2, + 3 + ], + "items": [ + 61240, + 61241, + 61220, + 61221, + 61250, + 61251, + 61210, + 61211, + 61230, + 61231 + ] + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 61341, + 61342, + 61321, + 61322, + 61351, + 61352, + 61311, + 61312, + 61331, + 61332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + } + ] + }, + { + "dungeonId": 5102, + "comment": "Domain of Guyun 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 61341, + 61342, + 61321, + 61322, + 61351, + 61352, + 61311, + 61312, + 61331, + 61332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 88442, + 88443, + 88422, + 88423, + 88452, + 88453, + 88412, + 88413, + 88432, + 88433, + 89442, + 89443, + 89422, + 89423, + 89452, + 89453, + 89412, + 89413, + 89432, + 89433 + ] + } + ] + }, + { + "dungeonId": 5103, + "comment": "Domain of Guyun 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 61341, + 61342, + 61321, + 61322, + 61351, + 61352, + 61311, + 61312, + 61331, + 61332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 88442, + 88443, + 88422, + 88423, + 88452, + 88453, + 88412, + 88413, + 88432, + 88433, + 89442, + 89443, + 89422, + 89423, + 89452, + 89453, + 89412, + 89413, + 89432, + 89433 + ] + } + ] + }, + { + "dungeonId": 5104, + "comment": "Domain of Guyun 5", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 61341, + 61342, + 61321, + 61322, + 61351, + 61352, + 61311, + 61312, + 61331, + 61332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 88442, + 88443, + 88422, + 88423, + 88452, + 88453, + 88412, + 88413, + 88432, + 88433, + 89442, + 89443, + 89422, + 89423, + 89452, + 89453, + 89412, + 89413, + 89432, + 89433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 88543, + 88544, + 88523, + 88524, + 88553, + 88554, + 88513, + 88514, + 88533, + 88534, + 89543, + 89544, + 89523, + 89524, + 89553, + 89554, + 89513, + 89514, + 89533, + 89534 + ] + } + ] + }, + { + "dungeonId": 5105, + "comment": "Domain of Guyun 6", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 61341, + 61342, + 61321, + 61322, + 61351, + 61352, + 61311, + 61312, + 61331, + 61332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 88442, + 88443, + 88422, + 88423, + 88452, + 88453, + 88412, + 88413, + 88432, + 88433, + 89442, + 89443, + 89422, + 89423, + 89452, + 89453, + 89412, + 89413, + 89432, + 89433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 88543, + 88544, + 88523, + 88524, + 88553, + 88554, + 88513, + 88514, + 88533, + 88534, + 89543, + 89544, + 89523, + 89524, + 89553, + 89554, + 89513, + 89514, + 89533, + 89534 + ] + } + ] + }, + { + "dungeonId": 5014, + "comment": "Ridge Watch 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 91442, + 91443, + 91422, + 91423, + 91452, + 91453, + 91412, + 91413, + 91432, + 91433, + 92442, + 92443, + 92422, + 92423, + 92452, + 92453, + 92412, + 92413, + 92432, + 92433 + ] + } + ] + }, + { + "dungeonId": 5015, + "comment": "Ridge Watch 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 91442, + 91443, + 91422, + 91423, + 91452, + 91453, + 91412, + 91413, + 91432, + 91433, + 92442, + 92443, + 92422, + 92423, + 92452, + 92453, + 92412, + 92413, + 92432, + 92433 + ] + } + ] + }, + { + "dungeonId": 5016, + "comment": "Ridge Watch 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 91442, + 91443, + 91422, + 91423, + 91452, + 91453, + 91412, + 91413, + 91432, + 91433, + 92442, + 92443, + 92422, + 92423, + 92452, + 92453, + 92412, + 92413, + 92432, + 92433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 91543, + 91544, + 91523, + 91524, + 91553, + 91554, + 91513, + 91514, + 91533, + 91534, + 92543, + 92544, + 92523, + 92524, + 92553, + 92554, + 92513, + 92514, + 92533, + 92534 + ] + } + ] + }, + { + "dungeonId": 5017, + "comment": "Ridge Watch 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 91442, + 91443, + 91422, + 91423, + 91452, + 91453, + 91412, + 91413, + 91432, + 91433, + 92442, + 92443, + 92422, + 92423, + 92452, + 92453, + 92412, + 92413, + 92432, + 92433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 91543, + 91544, + 91523, + 91524, + 91553, + 91554, + 91513, + 91514, + 91533, + 91534, + 92543, + 92544, + 92523, + 92524, + 92553, + 92554, + 92513, + 92514, + 92533, + 92534 + ] + } + ] + }, + { + "dungeonId": 5112, + "comment": "Clear Pool and Mountain Caverns 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332, + 62341, + 62342, + 62321, + 62322, + 62351, + 62352, + 62311, + 62312, + 62331, + 62332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 62442, + 62443, + 62422, + 62423, + 62452, + 62453, + 62412, + 62413, + 62432, + 62433, + 81442, + 81443, + 81422, + 81423, + 81452, + 81453, + 81412, + 81413, + 81432, + 81433, + 82442, + 82443, + 82422, + 82423, + 82452, + 82453, + 82412, + 82413, + 82432, + 82433 + ] + } + ] + }, + { + "dungeonId": 5113, + "comment": "Clear Pool and Mountain Caverns 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332, + 62341, + 62342, + 62321, + 62322, + 62351, + 62352, + 62311, + 62312, + 62331, + 62332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 62442, + 62443, + 62422, + 62423, + 62452, + 62453, + 62412, + 62413, + 62432, + 62433, + 81442, + 81443, + 81422, + 81423, + 81452, + 81453, + 81412, + 81413, + 81432, + 81433, + 82442, + 82443, + 82422, + 82423, + 82452, + 82453, + 82412, + 82413, + 82432, + 82433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 81543, + 81544, + 81523, + 81524, + 81553, + 81554, + 81513, + 81514, + 81533, + 81534, + 82543, + 82544, + 82523, + 82524, + 82553, + 82554, + 82513, + 82514, + 82533, + 82534 + ] + } + ] + }, + { + "dungeonId": 5114, + "comment": "Clear Pool and Mountain Caverns 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332, + 62341, + 62342, + 62321, + 62322, + 62351, + 62352, + 62311, + 62312, + 62331, + 62332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 62442, + 62443, + 62422, + 62423, + 62452, + 62453, + 62412, + 62413, + 62432, + 62433, + 81442, + 81443, + 81422, + 81423, + 81452, + 81453, + 81412, + 81413, + 81432, + 81433, + 82442, + 82443, + 82422, + 82423, + 82452, + 82453, + 82412, + 82413, + 82432, + 82433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 81543, + 81544, + 81523, + 81524, + 81553, + 81554, + 81513, + 81514, + 81533, + 81534, + 82543, + 82544, + 82523, + 82524, + 82553, + 82554, + 82513, + 82514, + 82533, + 82534 + ] + } + ] + }, + { + "dungeonId": 5001, + "comment": "Midsummer Courtyard 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Artifacts", + "counts": [ + 5 + ], + "items": [ + 60240, + 60241, + 60220, + 60221, + 60250, + 60251, + 60210, + 60211, + 60230, + 60231 + ] + }, + { + "comment": "3-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 85, + 15 + ], + "items": [ + 60341, + 60342, + 60321, + 60322, + 60351, + 60352, + 60311, + 60312, + 60331, + 60332, + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332 + ] + } + ] + }, + { + "dungeonId": 5002, + "comment": "Midsummer Courtyard 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1700 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Artifacts", + "counts": [ + 2, + 3 + ], + "items": [ + 60240, + 60241, + 60220, + 60221, + 60250, + 60251, + 60210, + 60211, + 60230, + 60231 + ] + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 60341, + 60342, + 60321, + 60322, + 60351, + 60352, + 60311, + 60312, + 60331, + 60332, + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332 + ] + } + ] + }, + { + "dungeonId": 5003, + "comment": "Midsummer Courtyard 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 60341, + 60342, + 60321, + 60322, + 60351, + 60352, + 60311, + 60312, + 60331, + 60332, + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 72442, + 72443, + 72422, + 72423, + 72452, + 72453, + 72412, + 72413, + 72432, + 72433, + 79442, + 79443, + 79422, + 79423, + 79452, + 79453, + 79412, + 79413, + 79432, + 79433 + ] + } + ] + }, + { + "dungeonId": 5004, + "comment": "Midsummer Courtyard 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 60341, + 60342, + 60321, + 60322, + 60351, + 60352, + 60311, + 60312, + 60331, + 60332, + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 72442, + 72443, + 72422, + 72423, + 72452, + 72453, + 72412, + 72413, + 72432, + 72433, + 79442, + 79443, + 79422, + 79423, + 79452, + 79453, + 79412, + 79413, + 79432, + 79433 + ] + } + ] + }, + { + "dungeonId": 5005, + "comment": "Midsummer Courtyard 5", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 60341, + 60342, + 60321, + 60322, + 60351, + 60352, + 60311, + 60312, + 60331, + 60332, + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 72442, + 72443, + 72422, + 72423, + 72452, + 72453, + 72412, + 72413, + 72432, + 72433, + 79442, + 79443, + 79422, + 79423, + 79452, + 79453, + 79412, + 79413, + 79432, + 79433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 72543, + 72544, + 72523, + 72524, + 72553, + 72554, + 72513, + 72514, + 72533, + 72534, + 79543, + 79544, + 79523, + 79524, + 79553, + 79554, + 79513, + 79514, + 79533, + 79534 + ] + } + ] + }, + { + "dungeonId": 5006, + "comment": "Midsummer Courtyard 6", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 60341, + 60342, + 60321, + 60322, + 60351, + 60352, + 60311, + 60312, + 60331, + 60332, + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 72442, + 72443, + 72422, + 72423, + 72452, + 72453, + 72412, + 72413, + 72432, + 72433, + 79442, + 79443, + 79422, + 79423, + 79452, + 79453, + 79412, + 79413, + 79432, + 79433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 72543, + 72544, + 72523, + 72524, + 72553, + 72554, + 72513, + 72514, + 72533, + 72534, + 79543, + 79544, + 79523, + 79524, + 79553, + 79554, + 79513, + 79514, + 79533, + 79534 + ] + } + ] + }, + { + "dungeonId": 5200, + "comment": "Momiji-Dyed Court 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 93442, + 93443, + 93422, + 93423, + 93452, + 93453, + 93412, + 93413, + 93432, + 93433, + 94442, + 94443, + 94422, + 94423, + 94452, + 94453, + 94412, + 94413, + 94432, + 94433 + ] + } + ] + }, + { + "dungeonId": 5201, + "comment": "Momiji-Dyed Court 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 93442, + 93443, + 93422, + 93423, + 93452, + 93453, + 93412, + 93413, + 93432, + 93433, + 94442, + 94443, + 94422, + 94423, + 94452, + 94453, + 94412, + 94413, + 94432, + 94433 + ] + } + ] + }, + { + "dungeonId": 5202, + "comment": "Momiji-Dyed Court 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 93442, + 93443, + 93422, + 93423, + 93452, + 93453, + 93412, + 93413, + 93432, + 93433, + 94442, + 94443, + 94422, + 94423, + 94452, + 94453, + 94412, + 94413, + 94432, + 94433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 93543, + 93544, + 93523, + 93524, + 93553, + 93554, + 93513, + 93514, + 93533, + 93534, + 94543, + 94544, + 94523, + 94524, + 94553, + 94554, + 94513, + 94514, + 94533, + 94534 + ] + } + ] + }, + { + "dungeonId": 5203, + "comment": "Momiji-Dyed Court 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 51341, + 51342, + 51321, + 51322, + 51351, + 51352, + 51311, + 51312, + 51331, + 51332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 51442, + 51443, + 51422, + 51423, + 51452, + 51453, + 51412, + 51413, + 51432, + 51433, + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 93442, + 93443, + 93422, + 93423, + 93452, + 93453, + 93412, + 93413, + 93432, + 93433, + 94442, + 94443, + 94422, + 94423, + 94452, + 94453, + 94412, + 94413, + 94432, + 94433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 93543, + 93544, + 93523, + 93524, + 93553, + 93554, + 93513, + 93514, + 93533, + 93534, + 94543, + 94544, + 94523, + 94524, + 94553, + 94554, + 94513, + 94514, + 94533, + 94534 + ] + } + ] + }, + { + "dungeonId": 5204, + "comment": "Slumbering Court 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 95442, + 95443, + 95422, + 95423, + 95452, + 95453, + 95412, + 95413, + 95432, + 95433, + 96442, + 96443, + 96422, + 96423, + 96452, + 96453, + 96412, + 96413, + 96432, + 96433 + ] + } + ] + }, + { + "dungeonId": 5205, + "comment": "Slumbering Court 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 95442, + 95443, + 95422, + 95423, + 95452, + 95453, + 95412, + 95413, + 95432, + 95433, + 96442, + 96443, + 96422, + 96423, + 96452, + 96453, + 96412, + 96413, + 96432, + 96433 + ] + } + ] + }, + { + "dungeonId": 5206, + "comment": "Slumbering Court 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 95442, + 95443, + 95422, + 95423, + 95452, + 95453, + 95412, + 95413, + 95432, + 95433, + 96442, + 96443, + 96422, + 96423, + 96452, + 96453, + 96412, + 96413, + 96432, + 96433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 95543, + 95544, + 95523, + 95524, + 95553, + 95554, + 95513, + 95514, + 95533, + 95534, + 96543, + 96544, + 96523, + 96524, + 96553, + 96554, + 96513, + 96514, + 96533, + 96534 + ] + } + ] + }, + { + "dungeonId": 5207, + "comment": "Slumbering Court 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 52341, + 52342, + 52321, + 52322, + 52351, + 52352, + 52311, + 52312, + 52331, + 52332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 52442, + 52443, + 52422, + 52423, + 52452, + 52453, + 52412, + 52413, + 52432, + 52433, + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 95442, + 95443, + 95422, + 95423, + 95452, + 95453, + 95412, + 95413, + 95432, + 95433, + 96442, + 96443, + 96422, + 96423, + 96452, + 96453, + 96412, + 96413, + 96432, + 96433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 95543, + 95544, + 95523, + 95524, + 95553, + 95554, + 95513, + 95514, + 95533, + 95534, + 96543, + 96544, + 96523, + 96524, + 96553, + 96554, + 96513, + 96514, + 96533, + 96534 + ] + } + ] + }, + { + "dungeonId": 5125, + "comment": "The Lost Valley 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 97442, + 97443, + 97422, + 97423, + 97452, + 97453, + 97412, + 97413, + 97432, + 97433, + 98442, + 98443, + 98422, + 98423, + 98452, + 98453, + 98412, + 98413, + 98432, + 98433 + ] + } + ] + }, + { + "dungeonId": 5126, + "comment": "The Lost Valley 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 97442, + 97443, + 97422, + 97423, + 97452, + 97453, + 97412, + 97413, + 97432, + 97433, + 98442, + 98443, + 98422, + 98423, + 98452, + 98453, + 98412, + 98413, + 98432, + 98433 + ] + } + ] + }, + { + "dungeonId": 5127, + "comment": "The Lost Valley 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 97442, + 97443, + 97422, + 97423, + 97452, + 97453, + 97412, + 97413, + 97432, + 97433, + 98442, + 98443, + 98422, + 98423, + 98452, + 98453, + 98412, + 98413, + 98432, + 98433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 97543, + 97544, + 97523, + 97524, + 97553, + 97554, + 97513, + 97514, + 97533, + 97534, + 98543, + 98544, + 98523, + 98524, + 98553, + 98554, + 98513, + 98514, + 98533, + 98534 + ] + } + ] + }, + { + "dungeonId": 5128, + "comment": "The Lost Valley 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 97442, + 97443, + 97422, + 97423, + 97452, + 97453, + 97412, + 97413, + 97432, + 97433, + 98442, + 98443, + 98422, + 98423, + 98452, + 98453, + 98412, + 98413, + 98432, + 98433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 97543, + 97544, + 97523, + 97524, + 97553, + 97554, + 97513, + 97514, + 97533, + 97534, + 98543, + 98544, + 98523, + 98524, + 98553, + 98554, + 98513, + 98514, + 98533, + 98534 + ] + } + ] + }, + { + "dungeonId": 5008, + "comment": "Valley of Remembrance 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1700 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Artifacts", + "counts": [ + 2, + 3 + ], + "items": [ + 63240, + 63241, + 63220, + 63221, + 63250, + 63251, + 63210, + 63211, + 63230, + 63231 + ] + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 63341, + 63342, + 63321, + 63322, + 63351, + 63352, + 63311, + 63312, + 63331, + 63332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + } + ] + }, + { + "dungeonId": 5009, + "comment": "Valley of Remembrance 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 63341, + 63342, + 63321, + 63322, + 63351, + 63352, + 63311, + 63312, + 63331, + 63332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 76442, + 76443, + 76422, + 76423, + 76452, + 76453, + 76412, + 76413, + 76432, + 76433, + 74442, + 74443, + 74422, + 74423, + 74452, + 74453, + 74412, + 74413, + 74432, + 74433 + ] + } + ] + }, + { + "dungeonId": 5010, + "comment": "Valley of Remembrance 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 63341, + 63342, + 63321, + 63322, + 63351, + 63352, + 63311, + 63312, + 63331, + 63332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 76442, + 76443, + 76422, + 76423, + 76452, + 76453, + 76412, + 76413, + 76432, + 76433, + 74442, + 74443, + 74422, + 74423, + 74452, + 74453, + 74412, + 74413, + 74432, + 74433 + ] + } + ] + }, + { + "dungeonId": 5011, + "comment": "Valley of Remembrance 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 63341, + 63342, + 63321, + 63322, + 63351, + 63352, + 63311, + 63312, + 63331, + 63332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 76442, + 76443, + 76422, + 76423, + 76452, + 76453, + 76412, + 76413, + 76432, + 76433, + 74442, + 74443, + 74422, + 74423, + 74452, + 74453, + 74412, + 74413, + 74432, + 74433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 76543, + 76544, + 76523, + 76524, + 76553, + 76554, + 76513, + 76514, + 76533, + 76534, + 74543, + 74544, + 74523, + 74524, + 74553, + 74554, + 74513, + 74514, + 74533, + 74534 + ] + } + ] + }, + { + "dungeonId": 5012, + "comment": "Valley of Remembrance 5", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 63341, + 63342, + 63321, + 63322, + 63351, + 63352, + 63311, + 63312, + 63331, + 63332, + 54341, + 54342, + 54321, + 54322, + 54351, + 54352, + 54311, + 54312, + 54331, + 54332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 54442, + 54443, + 54422, + 54423, + 54452, + 54453, + 54412, + 54413, + 54432, + 54433, + 76442, + 76443, + 76422, + 76423, + 76452, + 76453, + 76412, + 76413, + 76432, + 76433, + 74442, + 74443, + 74422, + 74423, + 74452, + 74453, + 74412, + 74413, + 74432, + 74433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 76543, + 76544, + 76523, + 76524, + 76553, + 76554, + 76513, + 76514, + 76533, + 76534, + 74543, + 74544, + 74523, + 74524, + 74553, + 74554, + 74513, + 74514, + 74533, + 74534 + ] + } + ] + }, + { + "dungeonId": 5120, + "comment": "Peak of Vindagnyr 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 71442, + 71443, + 71422, + 71423, + 71452, + 71453, + 71412, + 71413, + 71432, + 71433, + 90442, + 90443, + 90422, + 90423, + 90452, + 90453, + 90412, + 90413, + 90432, + 90433 + ] + } + ] + }, + { + "dungeonId": 5121, + "comment": "Peak of Vindagnyr 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 71442, + 71443, + 71422, + 71423, + 71452, + 71453, + 71412, + 71413, + 71432, + 71433, + 90442, + 90443, + 90422, + 90423, + 90452, + 90453, + 90412, + 90413, + 90432, + 90433 + ] + } + ] + }, + { + "dungeonId": 5122, + "comment": "Peak of Vindagnyr 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 71442, + 71443, + 71422, + 71423, + 71452, + 71453, + 71412, + 71413, + 71432, + 71433, + 90442, + 90443, + 90422, + 90423, + 90452, + 90453, + 90412, + 90413, + 90432, + 90433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 71543, + 71544, + 71523, + 71524, + 71553, + 71554, + 71513, + 71514, + 71533, + 71534, + 90543, + 90544, + 90523, + 90524, + 90553, + 90554, + 90513, + 90514, + 90533, + 90534 + ] + } + ] + }, + { + "dungeonId": 5123, + "comment": "Peak of Vindagnyr 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 58341, + 58342, + 58321, + 58322, + 58351, + 58352, + 58311, + 58312, + 58331, + 58332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 58442, + 58443, + 58422, + 58423, + 58452, + 58453, + 58412, + 58413, + 58432, + 58433, + 71442, + 71443, + 71422, + 71423, + 71452, + 71453, + 71412, + 71413, + 71432, + 71433, + 90442, + 90443, + 90422, + 90423, + 90452, + 90453, + 90412, + 90413, + 90432, + 90433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 71543, + 71544, + 71523, + 71524, + 71553, + 71554, + 71513, + 71514, + 71533, + 71534, + 90543, + 90544, + 90523, + 90524, + 90553, + 90554, + 90513, + 90514, + 90533, + 90534 + ] + } + ] + }, + { + "dungeonId": 5107, + "comment": "Hidden Palace of Zhou Formula 1", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 6, + 7 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 20, + 70, + 10 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 80442, + 80443, + 80422, + 80423, + 80452, + 80453, + 80412, + 80413, + 80432, + 80433, + 73442, + 73443, + 73422, + 73423, + 73452, + 73453, + 73412, + 73413, + 73432, + 73433 + ] + } + ] + }, + { + "dungeonId": 5108, + "comment": "Hidden Palace of Zhou Formula 2", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2025 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 5, + 6 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 80442, + 80443, + 80422, + 80423, + 80452, + 80453, + 80412, + 80413, + 80432, + 80433, + 73442, + 73443, + 73422, + 73423, + 73452, + 73453, + 73412, + 73413, + 73432, + 73433 + ] + } + ] + }, + { + "dungeonId": 5109, + "comment": "Hidden Palace of Zhou Formula 3", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 4, + 5 + ], + "probabilities": [ + 2, + 98 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 80442, + 80443, + 80422, + 80423, + 80452, + 80453, + 80412, + 80413, + 80432, + 80433, + 73442, + 73443, + 73422, + 73423, + 73452, + 73453, + 73412, + 73413, + 73432, + 73433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 0, + 1 + ], + "probabilities": [ + 60, + 40 + ], + "items": [ + 80543, + 80544, + 80523, + 80524, + 80553, + 80554, + 80513, + 80514, + 80533, + 80534, + 73543, + 73544, + 73523, + 73524, + 73553, + 73554, + 73513, + 73514, + 73533, + 73534 + ] + } + ] + }, + { + "dungeonId": 5110, + "comment": "Hidden Palace of Zhou Formula 4", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2525 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "3-star Artifacts", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 53341, + 53342, + 53321, + 53322, + 53351, + 53352, + 53311, + 53312, + 53331, + 53332, + 56341, + 56342, + 56321, + 56322, + 56351, + 56352, + 56311, + 56312, + 56331, + 56332 + ] + }, + { + "comment": "4-star Artifacts", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 53442, + 53443, + 53422, + 53423, + 53452, + 53453, + 53412, + 53413, + 53432, + 53433, + 56442, + 56443, + 56422, + 56423, + 56452, + 56453, + 56412, + 56413, + 56432, + 56433, + 80442, + 80443, + 80422, + 80423, + 80452, + 80453, + 80412, + 80413, + 80432, + 80433, + 73442, + 73443, + 73422, + 73423, + 73452, + 73453, + 73412, + 73413, + 73432, + 73433 + ] + }, + { + "comment": "5-star Artifacts", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 90, + 10 + ], + "items": [ + 80543, + 80544, + 80523, + 80524, + 80553, + 80554, + 80513, + 80514, + 80533, + 80534, + 73543, + 73544, + 73523, + 73524, + 73553, + 73554, + 73513, + 73514, + 73533, + 73534 + ] + } + ] + }, + { + "dungeonId": 4210, + "comment": "Forsaken Rift 1: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104301 + ] + } + ] + }, + { + "dungeonId": 4211, + "comment": "Forsaken Rift 2: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104301 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104302 + ] + } + ] + }, + { + "dungeonId": 4212, + "comment": "Forsaken Rift 3: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104301 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104302 + ] + } + ] + }, + { + "dungeonId": 4213, + "comment": "Forsaken Rift 4: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104301 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104302 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104303 + ] + } + ] + }, + { + "dungeonId": 4220, + "comment": "Forsaken Rift 1: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104304 + ] + } + ] + }, + { + "dungeonId": 4221, + "comment": "Forsaken Rift 2: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104304 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104305 + ] + } + ] + }, + { + "dungeonId": 4222, + "comment": "Forsaken Rift 3: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104304 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104305 + ] + } + ] + }, + { + "dungeonId": 4223, + "comment": "Forsaken Rift 4: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104304 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104305 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104306 + ] + } + ] + }, + { + "dungeonId": 4230, + "comment": "Forsaken Rift 1: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104307 + ] + } + ] + }, + { + "dungeonId": 4231, + "comment": "Forsaken Rift 2: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104307 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104308 + ] + } + ] + }, + { + "dungeonId": 4232, + "comment": "Forsaken Rift 3: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104307 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104308 + ] + } + ] + }, + { + "dungeonId": 4233, + "comment": "Forsaken Rift 4: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104307 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104308 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104309 + ] + } + ] + }, + { + "dungeonId": 4400, + "comment": "Violet Court 1: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104320 + ] + } + ] + }, + { + "dungeonId": 4401, + "comment": "Violet Court 2: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104320 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104321 + ] + } + ] + }, + { + "dungeonId": 4402, + "comment": "Violet Court 3: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104320 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104321 + ] + } + ] + }, + { + "dungeonId": 4403, + "comment": "Violet Court 4: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104320 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104321 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104322 + ] + } + ] + }, + { + "dungeonId": 4410, + "comment": "Violet Court 1: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104323 + ] + } + ] + }, + { + "dungeonId": 4411, + "comment": "Violet Court 2: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104323 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104324 + ] + } + ] + }, + { + "dungeonId": 4412, + "comment": "Violet Court 3: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104323 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104324 + ] + } + ] + }, + { + "dungeonId": 4413, + "comment": "Violet Court 4: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104323 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104324 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104325 + ] + } + ] + }, + { + "dungeonId": 4420, + "comment": "Violet Court 1: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104326 + ] + } + ] + }, + { + "dungeonId": 4421, + "comment": "Violet Court 2: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104326 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104327 + ] + } + ] + }, + { + "dungeonId": 4422, + "comment": "Violet Court 3: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104326 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104327 + ] + } + ] + }, + { + "dungeonId": 4423, + "comment": "Violet Court 4: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104326 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104327 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104328 + ] + } + ] + }, + { + "dungeonId": 5254, + "comment": "Taishan Mansion 1: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104310 + ] + } + ] + }, + { + "dungeonId": 5255, + "comment": "Taishan Mansion 2: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104310 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104311 + ] + } + ] + }, + { + "dungeonId": 5256, + "comment": "Taishan Mansion 3: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104310 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104311 + ] + } + ] + }, + { + "dungeonId": 5257, + "comment": "Taishan Mansion 4: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104310 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104311 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104312 + ] + } + ] + }, + { + "dungeonId": 5258, + "comment": "Taishan Mansion 1: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104313 + ] + } + ] + }, + { + "dungeonId": 5259, + "comment": "Taishan Mansion 2: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104313 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104314 + ] + } + ] + }, + { + "dungeonId": 5260, + "comment": "Taishan Mansion 3: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104313 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104314 + ] + } + ] + }, + { + "dungeonId": 5261, + "comment": "Taishan Mansion 4: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104313 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104314 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104315 + ] + } + ] + }, + { + "dungeonId": 5262, + "comment": "Taishan Mansion 1: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1575 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 3, + 4 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104316 + ] + } + ] + }, + { + "dungeonId": 5263, + "comment": "Taishan Mansion 2: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1800 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 50, + 50 + ], + "items": [ + 104316 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 1 + ], + "items": [ + 104317 + ] + } + ] + }, + { + "dungeonId": 5264, + "comment": "Taishan Mansion 3: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2050 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 1, + 2 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 104316 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 2 + ], + "items": [ + 104317 + ] + } + ] + }, + { + "dungeonId": 5265, + "comment": "Taishan Mansion 4: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2375 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Books", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 104316 + ] + }, + { + "comment": "3-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 1, + 14, + 80, + 5 + ], + "items": [ + 104317 + ] + }, + { + "comment": "4-star Books", + "counts": [ + 0, + 3 + ], + "probabilities": [ + 80, + 15, + 4, + 1 + ], + "items": [ + 104318 + ] + } + ] + }, + { + "dungeonId": 4310, + "comment": "Cecilia Garden 1: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114001 + ] + } + ] + }, + { + "dungeonId": 4311, + "comment": "Cecilia Garden 2: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114001 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114002 + ] + } + ] + }, + { + "dungeonId": 4312, + "comment": "Cecilia Garden 3: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114001 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114002 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114003 + ] + } + ] + }, + { + "dungeonId": 4313, + "comment": "Cecilia Garden 4: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114001 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114002 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114003 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114004 + ] + } + ] + }, + { + "dungeonId": 4320, + "comment": "Cecilia Garden 1: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114005 + ] + } + ] + }, + { + "dungeonId": 4321, + "comment": "Cecilia Garden 2: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114005 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114006 + ] + } + ] + }, + { + "dungeonId": 4322, + "comment": "Cecilia Garden 3: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114005 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114006 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114007 + ] + } + ] + }, + { + "dungeonId": 4323, + "comment": "Cecilia Garden 4: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114005 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114006 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114007 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114008 + ] + } + ] + }, + { + "dungeonId": 4330, + "comment": "Cecilia Garden 1: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114009 + ] + } + ] + }, + { + "dungeonId": 4331, + "comment": "Cecilia Garden 2: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114009 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114010 + ] + } + ] + }, + { + "dungeonId": 4332, + "comment": "Cecilia Garden 3: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114009 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114010 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114011 + ] + } + ] + }, + { + "dungeonId": 4333, + "comment": "Cecilia Garden 4: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114009 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114010 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114011 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114012 + ] + } + ] + }, + { + "dungeonId": 4340, + "comment": "Court of Flowing Sands 1: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114025 + ] + } + ] + }, + { + "dungeonId": 4341, + "comment": "Court of Flowing Sands 2: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114025 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114026 + ] + } + ] + }, + { + "dungeonId": 4342, + "comment": "Court of Flowing Sands 3: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114025 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114026 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114027 + ] + } + ] + }, + { + "dungeonId": 4343, + "comment": "Court of Flowing Sands 4: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114025 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114026 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114027 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114028 + ] + } + ] + }, + { + "dungeonId": 4350, + "comment": "Court of Flowing Sands 1: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114029 + ] + } + ] + }, + { + "dungeonId": 4351, + "comment": "Court of Flowing Sands 2: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114029 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114030 + ] + } + ] + }, + { + "dungeonId": 4352, + "comment": "Court of Flowing Sands 3: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114029 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114030 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114031 + ] + } + ] + }, + { + "dungeonId": 4353, + "comment": "Court of Flowing Sands 4: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114029 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114030 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114031 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114032 + ] + } + ] + }, + { + "dungeonId": 4360, + "comment": "Court of Flowing Sands 1: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114033 + ] + } + ] + }, + { + "dungeonId": 4361, + "comment": "Court of Flowing Sands 2: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114033 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114034 + ] + } + ] + }, + { + "dungeonId": 4362, + "comment": "Court of Flowing Sands 3: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114033 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114034 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114035 + ] + } + ] + }, + { + "dungeonId": 4363, + "comment": "Court of Flowing Sands 4: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114033 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114034 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114035 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114036 + ] + } + ] + }, + { + "dungeonId": 5214, + "comment": "Hidden Palace of Lianshan Formula 1: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114013 + ] + } + ] + }, + { + "dungeonId": 5215, + "comment": "Hidden Palace of Lianshan Formula 2: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114013 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114014 + ] + } + ] + }, + { + "dungeonId": 5216, + "comment": "Hidden Palace of Lianshan Formula 3: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114013 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114014 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114015 + ] + } + ] + }, + { + "dungeonId": 5217, + "comment": "Hidden Palace of Lianshan Formula 4: Monday/Thursday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114013 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114014 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114015 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114016 + ] + } + ] + }, + { + "dungeonId": 5218, + "comment": "Hidden Palace of Lianshan Formula 1: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114017 + ] + } + ] + }, + { + "dungeonId": 5219, + "comment": "Hidden Palace of Lianshan Formula 2: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114017 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114018 + ] + } + ] + }, + { + "dungeonId": 5220, + "comment": "Hidden Palace of Lianshan Formula 3: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114017 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114018 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114019 + ] + } + ] + }, + { + "dungeonId": 5221, + "comment": "Hidden Palace of Lianshan Formula 4: Tuesday/Friday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114017 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114018 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114019 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114020 + ] + } + ] + }, + { + "dungeonId": 5222, + "comment": "Hidden Palace of Lianshan Formula 1: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1125 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 10 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 4, + 6 + ], + "probabilities": [ + 20, + 60, + 30 + ], + "items": [ + 114021 + ] + } + ] + }, + { + "dungeonId": 5223, + "comment": "Hidden Palace of Lianshan Formula 2: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1550 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114021 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2 + ], + "items": [ + 114022 + ] + } + ] + }, + { + "dungeonId": 5224, + "comment": "Hidden Palace of Lianshan Formula 3: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 1850 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 15 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114021 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 20, + 80 + ], + "items": [ + 114022 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114023 + ] + } + ] + }, + { + "dungeonId": 5225, + "comment": "Hidden Palace of Lianshan Formula 4: Wednesday/Saturday", + "drops": [ + { + "comment": "AR exp", + "counts": [ + 100 + ], + "items": [ + 102 + ] + }, + { + "comment": "Mora", + "counts": [ + 2200 + ], + "items": [ + 202 + ] + }, + { + "comment": "Friendship exp", + "counts": [ + 20 + ], + "items": [ + 105 + ], + "mpDouble": true + }, + { + "comment": "2-star Weapon Material", + "counts": [ + 2, + 3 + ], + "probabilities": [ + 80, + 20 + ], + "items": [ + 114021 + ] + }, + { + "comment": "3-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 5, + 45, + 40, + 5, + 5 + ], + "items": [ + 114022 + ] + }, + { + "comment": "4-star Weapon Material", + "counts": [ + 0, + 4 + ], + "probabilities": [ + 40, + 40, + 15, + 4, + 1 + ], + "items": [ + 114023 + ] + }, + { + "comment": "5-star Weapon Material", + "counts": [ + 0, + 2 + ], + "probabilities": [ + 80, + 15, + 5 + ], + "items": [ + 114024 + ] + } + ] + } +] diff --git a/src/main/resources/defaults/data/EnergyDrop.json b/src/main/resources/defaults/data/EnergyDrop.json index 6cd7e8d85..a98b41552 100644 --- a/src/main/resources/defaults/data/EnergyDrop.json +++ b/src/main/resources/defaults/data/EnergyDrop.json @@ -1,185 +1,265 @@ [ - { - "dropId": 22010010, - "dropList": [ - { "ballId": 2024, "count": 1 } - ] - }, - { - "dropId": 22010030, - "dropList": [ - { "ballId": 2008, "count": 1 } - ] - }, - { - "dropId": 22010050, - "dropList": [ - { "ballId": 2024, "count": 3 }, - { "ballId": 2008, "count": 1 } - ] - }, - { - "dropId": 22010013, - "dropList": [ - { "ballId": 2019, "count": 1 } - ] - }, - { - "dropId": 22010033, - "dropList": [ - { "ballId": 2003, "count": 1 } - ] - }, - { - "dropId": 22010015, - "dropList": [ - { "ballId": 2021, "count": 1 } - ] - }, - { - "dropId": 22010035, - "dropList": [ - { "ballId": 2005, "count": 1 } - ] - }, - { - "dropId": 22010034, - "dropList": [ - { "ballId": 2004, "count": 1 } - ] - }, - { - "dropId": 22010037, - "dropList": [ - { "ballId": 2007, "count": 1 } - ] - }, - { - "dropId": 22010032, - "dropList": [ - { "ballId": 2002, "count": 1 } - ] - }, - { - "dropId": 22010022, - "dropList": [ - { "ballId": 2018, "count": 1 } - ] - }, - { - "dropId": 22010036, - "dropList": [ - { "ballId": 2006, "count": 1 } - ] - }, - { - "dropId": 22010026, - "dropList": [ - { "ballId": 2022, "count": 1 } - ] - }, - { - "dropId": 22010031, - "dropList": [ - { "ballId": 2001, "count": 1 } - ] - }, - - { - "dropId": 22010014, - "dropList": [ - { "ballId": 2020, "count": 1 } - ] - }, - { - "dropId": 22010016, - "dropList": [ - { "ballId": 2022, "count": 1 } - ] - }, - { - "dropId": 22010012, - "dropList": [ - { "ballId": 2018, "count": 1 } - ] - }, - { - "dropId": 22010024, - "dropList": [ - { "ballId": 2004, "count": 1 } - ] - }, - { - "dropId": 22010011, - "dropList": [ - { "ballId": 2017, "count": 1 } - ] - }, - { - "dropId": 22010017, - "dropList": [ - { "ballId": 2023, "count": 1 } - ] - }, - { - "dropId": 22010021, - "dropList": [ - { "ballId": 2017, "count": 1 } - ] - }, - { - "dropId": 22010027, - "dropList": [ - { "ballId": 2007, "count": 1 } - ] - }, - { - "dropId": 22010040, - "dropList": [ - { "ballId": 2024, "count": 1 }, - { "ballId": 2008, "count": 1 } - ] - }, - { - "dropId": 22010025, - "dropList": [ - { "ballId": 2021, "count": 2 } - ] - }, - { - "dropId": 22010020, - "dropList": [ - { "ballId": 2024, "count": 1 } - ] - }, - { - "dropId": 22003100, - "dropList": [ - ] - }, - { - "dropId": 22001000, - "dropList": [ - ] - }, - { - "dropId": 22000100, - "dropList": [ - ] - }, - { - "dropId": 22003000, - "dropList": [ - ] - }, - { - "dropId": 22001100, - "dropList": [ - ] - }, - { - "dropId": 22000000, - "dropList": [ - ] - } -] \ No newline at end of file + { + "dropId": 22010010, + "dropList": [ + { + "ballId": 2024, + "count": 1 + } + ] + }, + { + "dropId": 22010030, + "dropList": [ + { + "ballId": 2008, + "count": 1 + } + ] + }, + { + "dropId": 22010050, + "dropList": [ + { + "ballId": 2024, + "count": 3 + }, + { + "ballId": 2008, + "count": 1 + } + ] + }, + { + "dropId": 22010013, + "dropList": [ + { + "ballId": 2019, + "count": 1 + } + ] + }, + { + "dropId": 22010033, + "dropList": [ + { + "ballId": 2003, + "count": 1 + } + ] + }, + { + "dropId": 22010015, + "dropList": [ + { + "ballId": 2021, + "count": 1 + } + ] + }, + { + "dropId": 22010035, + "dropList": [ + { + "ballId": 2005, + "count": 1 + } + ] + }, + { + "dropId": 22010034, + "dropList": [ + { + "ballId": 2004, + "count": 1 + } + ] + }, + { + "dropId": 22010037, + "dropList": [ + { + "ballId": 2007, + "count": 1 + } + ] + }, + { + "dropId": 22010032, + "dropList": [ + { + "ballId": 2002, + "count": 1 + } + ] + }, + { + "dropId": 22010022, + "dropList": [ + { + "ballId": 2018, + "count": 1 + } + ] + }, + { + "dropId": 22010036, + "dropList": [ + { + "ballId": 2006, + "count": 1 + } + ] + }, + { + "dropId": 22010026, + "dropList": [ + { + "ballId": 2022, + "count": 1 + } + ] + }, + { + "dropId": 22010031, + "dropList": [ + { + "ballId": 2001, + "count": 1 + } + ] + }, + { + "dropId": 22010014, + "dropList": [ + { + "ballId": 2020, + "count": 1 + } + ] + }, + { + "dropId": 22010016, + "dropList": [ + { + "ballId": 2022, + "count": 1 + } + ] + }, + { + "dropId": 22010012, + "dropList": [ + { + "ballId": 2018, + "count": 1 + } + ] + }, + { + "dropId": 22010024, + "dropList": [ + { + "ballId": 2004, + "count": 1 + } + ] + }, + { + "dropId": 22010011, + "dropList": [ + { + "ballId": 2017, + "count": 1 + } + ] + }, + { + "dropId": 22010017, + "dropList": [ + { + "ballId": 2023, + "count": 1 + } + ] + }, + { + "dropId": 22010021, + "dropList": [ + { + "ballId": 2017, + "count": 1 + } + ] + }, + { + "dropId": 22010027, + "dropList": [ + { + "ballId": 2007, + "count": 1 + } + ] + }, + { + "dropId": 22010040, + "dropList": [ + { + "ballId": 2024, + "count": 1 + }, + { + "ballId": 2008, + "count": 1 + } + ] + }, + { + "dropId": 22010025, + "dropList": [ + { + "ballId": 2021, + "count": 2 + } + ] + }, + { + "dropId": 22010020, + "dropList": [ + { + "ballId": 2024, + "count": 1 + } + ] + }, + { + "dropId": 22003100, + "dropList": [ + ] + }, + { + "dropId": 22001000, + "dropList": [ + ] + }, + { + "dropId": 22000100, + "dropList": [ + ] + }, + { + "dropId": 22003000, + "dropList": [ + ] + }, + { + "dropId": 22001100, + "dropList": [ + ] + }, + { + "dropId": 22000000, + "dropList": [ + ] + } +] diff --git a/src/main/resources/defaults/data/ExpeditionReward.json b/src/main/resources/defaults/data/ExpeditionReward.json index b7c5db45d..090370655 100644 --- a/src/main/resources/defaults/data/ExpeditionReward.json +++ b/src/main/resources/defaults/data/ExpeditionReward.json @@ -1,1072 +1,1124 @@ [ - { - "expId": 101, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101001, - "minCount": 4, - "maxCount": 5 - }, { - "itemId": 101002, - "minCount": 2, - "maxCount": 3 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 6, - "maxCount": 7 - }, { - "itemId": 101003, - "minCount": 1, - "maxCount": 2 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 6, - "maxCount": 7 - }, { - "itemId": 101003, - "minCount": 2, - "maxCount": 3 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 3, - "maxCount": 4 - }, { - "itemId": 101003, - "minCount": 7, - "maxCount": 8 - } - ] - } - ] - }, - { - "expId": 102, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100064, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100064, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100064, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100064, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 103, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101001, - "minCount": 4, - "maxCount": 5 - }, { - "itemId": 101002, - "minCount": 2, - "maxCount": 3 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 6, - "maxCount": 7 - }, { - "itemId": 101003, - "minCount": 1, - "maxCount": 2 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 6, - "maxCount": 7 - }, { - "itemId": 101003, - "minCount": 2, - "maxCount": 3 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 3, - "maxCount": 4 - }, { - "itemId": 101003, - "minCount": 7, - "maxCount": 8 - } - ] - } - ] - }, - { - "expId": 104, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100062, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100062, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100062, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100062, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 105, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100013, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100013, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100013, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100013, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 106, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 625, - "maxCount": 625 - } - ] - }, - { - "hourTime": 8, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 1575, - "maxCount": 1575 - } - ] - }, - { - "hourTime": 12, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 2500, - "maxCount": 2500 - } - ] - }, - { - "hourTime": 20, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 5000, - "maxCount": 5000 - } - ] - } - ] - }, - { - "expId": 201, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 625, - "maxCount": 625 - } - ] - }, - { - "hourTime": 8, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 1575, - "maxCount": 1575 - } - ] - }, - { - "hourTime": 12, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 2500, - "maxCount": 2500 - } - ] - }, - { - "hourTime": 20, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 5000, - "maxCount": 5000 - } - ] - } - ] - }, - { - "expId": 202, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100063, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100063, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100063, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100063, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 203, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101001, - "minCount": 4, - "maxCount": 5 - }, { - "itemId": 101002, - "minCount": 2, - "maxCount": 3 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 6, - "maxCount": 7 - }, { - "itemId": 101003, - "minCount": 1, - "maxCount": 2 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 6, - "maxCount": 7 - }, { - "itemId": 101003, - "minCount": 2, - "maxCount": 3 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 101002, - "minCount": 3, - "maxCount": 4 - }, { - "itemId": 101003, - "minCount": 7, - "maxCount": 8 - } - ] - } - ] - }, - { - "expId": 204, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100013, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100013, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100013, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100013, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 205, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 625, - "maxCount": 625 - } - ] - }, - { - "hourTime": 8, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 1575, - "maxCount": 1575 - } - ] - }, - { - "hourTime": 12, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 2500, - "maxCount": 2500 - } - ] - }, - { - "hourTime": 20, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 5000, - "maxCount": 5000 - } - ] - } - ] - }, - { - "expId": 206, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100063, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100063, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100063, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100026, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100063, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 301, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 625, - "maxCount": 625 - } - ] - }, - { - "hourTime": 8, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 1575, - "maxCount": 1575 - } - ] - }, - { - "hourTime": 12, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 2500, - "maxCount": 2500 - } - ] - }, - { - "hourTime": 20, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 5000, - "maxCount": 5000 - } - ] - } - ] - }, - { - "expId": 302, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 101211, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 101211, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 101211, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100014, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 101211, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 303, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100002, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100002, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100002, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100012, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100002, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 304, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 625, - "maxCount": 625 - } - ] - }, - { - "hourTime": 8, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 1575, - "maxCount": 1575 - } - ] - }, - { - "hourTime": 12, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 2500, - "maxCount": 2500 - } - ] - }, - { - "hourTime": 20, - "expeditionRewardData": [ - { - "itemId": 202, - "minCount": 5000, - "maxCount": 5000 - } - ] - } - ] - }, - { - "expId": 305, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100064, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 101210, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100064, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 101210, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100064, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 101210, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100064, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 101210, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - }, - { - "expId": 306, - "expeditionRewardDataList": [ - { - "hourTime": 4, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 1, - "maxCount": 1 - }, { - "itemId": 100062, - "minCount": 1, - "maxCount": 1 - } - ] - }, - { - "hourTime": 8, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 2, - "maxCount": 4 - }, { - "itemId": 100062, - "minCount": 2, - "maxCount": 4 - } - ] - }, - { - "hourTime": 12, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 4, - "maxCount": 6 - }, { - "itemId": 100062, - "minCount": 4, - "maxCount": 6 - } - ] - }, - { - "hourTime": 20, - "rewardMora": 0, - "expeditionRewardData": [ - { - "itemId": 100061, - "minCount": 8, - "maxCount": 12 - }, { - "itemId": 100062, - "minCount": 8, - "maxCount": 12 - } - ] - } - ] - } -] \ No newline at end of file + { + "expId": 101, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101001, + "minCount": 4, + "maxCount": 5 + }, + { + "itemId": 101002, + "minCount": 2, + "maxCount": 3 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 6, + "maxCount": 7 + }, + { + "itemId": 101003, + "minCount": 1, + "maxCount": 2 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 6, + "maxCount": 7 + }, + { + "itemId": 101003, + "minCount": 2, + "maxCount": 3 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 3, + "maxCount": 4 + }, + { + "itemId": 101003, + "minCount": 7, + "maxCount": 8 + } + ] + } + ] + }, + { + "expId": 102, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100064, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100064, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100064, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 103, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101001, + "minCount": 4, + "maxCount": 5 + }, + { + "itemId": 101002, + "minCount": 2, + "maxCount": 3 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 6, + "maxCount": 7 + }, + { + "itemId": 101003, + "minCount": 1, + "maxCount": 2 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 6, + "maxCount": 7 + }, + { + "itemId": 101003, + "minCount": 2, + "maxCount": 3 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 3, + "maxCount": 4 + }, + { + "itemId": 101003, + "minCount": 7, + "maxCount": 8 + } + ] + } + ] + }, + { + "expId": 104, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100062, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100062, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100062, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100062, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 105, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100013, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100013, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100013, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100013, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 106, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 625, + "maxCount": 625 + } + ] + }, + { + "hourTime": 8, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 1575, + "maxCount": 1575 + } + ] + }, + { + "hourTime": 12, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 2500, + "maxCount": 2500 + } + ] + }, + { + "hourTime": 20, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 5000, + "maxCount": 5000 + } + ] + } + ] + }, + { + "expId": 201, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 625, + "maxCount": 625 + } + ] + }, + { + "hourTime": 8, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 1575, + "maxCount": 1575 + } + ] + }, + { + "hourTime": 12, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 2500, + "maxCount": 2500 + } + ] + }, + { + "hourTime": 20, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 5000, + "maxCount": 5000 + } + ] + } + ] + }, + { + "expId": 202, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100063, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100063, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100063, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100063, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 203, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101001, + "minCount": 4, + "maxCount": 5 + }, + { + "itemId": 101002, + "minCount": 2, + "maxCount": 3 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 6, + "maxCount": 7 + }, + { + "itemId": 101003, + "minCount": 1, + "maxCount": 2 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 6, + "maxCount": 7 + }, + { + "itemId": 101003, + "minCount": 2, + "maxCount": 3 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 101002, + "minCount": 3, + "maxCount": 4 + }, + { + "itemId": 101003, + "minCount": 7, + "maxCount": 8 + } + ] + } + ] + }, + { + "expId": 204, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100013, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100013, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100013, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100013, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 205, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 625, + "maxCount": 625 + } + ] + }, + { + "hourTime": 8, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 1575, + "maxCount": 1575 + } + ] + }, + { + "hourTime": 12, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 2500, + "maxCount": 2500 + } + ] + }, + { + "hourTime": 20, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 5000, + "maxCount": 5000 + } + ] + } + ] + }, + { + "expId": 206, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100063, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100063, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100063, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100026, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100063, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 301, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 625, + "maxCount": 625 + } + ] + }, + { + "hourTime": 8, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 1575, + "maxCount": 1575 + } + ] + }, + { + "hourTime": 12, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 2500, + "maxCount": 2500 + } + ] + }, + { + "hourTime": 20, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 5000, + "maxCount": 5000 + } + ] + } + ] + }, + { + "expId": 302, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 101211, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 101211, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 101211, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100014, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 101211, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 303, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100002, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100002, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100002, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100012, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100002, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 304, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 625, + "maxCount": 625 + } + ] + }, + { + "hourTime": 8, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 1575, + "maxCount": 1575 + } + ] + }, + { + "hourTime": 12, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 2500, + "maxCount": 2500 + } + ] + }, + { + "hourTime": 20, + "expeditionRewardData": [ + { + "itemId": 202, + "minCount": 5000, + "maxCount": 5000 + } + ] + } + ] + }, + { + "expId": 305, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100064, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 101210, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100064, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 101210, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100064, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 101210, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100064, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 101210, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + }, + { + "expId": 306, + "expeditionRewardDataList": [ + { + "hourTime": 4, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 1, + "maxCount": 1 + }, + { + "itemId": 100062, + "minCount": 1, + "maxCount": 1 + } + ] + }, + { + "hourTime": 8, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 2, + "maxCount": 4 + }, + { + "itemId": 100062, + "minCount": 2, + "maxCount": 4 + } + ] + }, + { + "hourTime": 12, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 4, + "maxCount": 6 + }, + { + "itemId": 100062, + "minCount": 4, + "maxCount": 6 + } + ] + }, + { + "hourTime": 20, + "rewardMora": 0, + "expeditionRewardData": [ + { + "itemId": 100061, + "minCount": 8, + "maxCount": 12 + }, + { + "itemId": 100062, + "minCount": 8, + "maxCount": 12 + } + ] + } + ] + } +] diff --git a/src/main/resources/defaults/data/ReliquaryDecompose.json b/src/main/resources/defaults/data/ReliquaryDecompose.json index 5277ba9bc..040141d71 100644 --- a/src/main/resources/defaults/data/ReliquaryDecompose.json +++ b/src/main/resources/defaults/data/ReliquaryDecompose.json @@ -1,58 +1,212 @@ [ - { - "configId": 1, - "items": [75513, 75514, 75523, 75524, 75533, 75534, 75543, 75544, 75553, 75554] - }, - { - "configId": 2, - "items": [77513, 77514, 77523, 77524, 77533, 77534, 77543, 77544, 77553, 77554] - }, - { - "configId": 3, - "items": [82513, 82514, 82523, 82524, 82533, 82534, 82543, 82544, 82553, 82554] - }, - { - "configId": 4, - "items": [81513, 81514, 81523, 81524, 81533, 81534, 81543, 81544, 81553, 81554] - }, - { - "configId": 5, - "items": [ 79513, 79514, 79523, 79524, 79533, 79534, 79543, 79544, 79553, 79554 ] - }, - { - "configId": 6, - "items": [ 72513, 72514, 72523, 72524, 72533, 72534, 72543, 72544, 72553, 72554 ] - }, - { - "configId": 7, - "items": [ 76513, 76514, 76523, 76524, 76533, 76534, 76543, 76544, 76553, 76554 ] - }, - { - "configId": 8, - "items": [ 74513, 74514, 74523, 74524, 74533, 74534, 74543, 74544, 74553, 74554 ] - }, - { - "configId": 9, - "items": [ 88513, 88514, 88523, 88524, 88533, 88534, 88543, 88544, 88553, 88554 ] - }, - { - "configId": 10, - "items": [ 89513, 89514, 89523, 89524, 89533, 89534, 89543, 89544, 89553, 89554 ] - }, - { - "configId": 11, - "items": [ 80513, 80514, 80523, 80524, 80533, 80534, 80543, 80544, 80553, 80554 ] - }, - { - "configId": 12, - "items": [ 73513, 73514, 73523, 73524, 73533, 73534, 73543, 73544, 73553, 73554 ] - }, - { - "configId": 13, - "items": [ 71513, 71514, 71523, 71524, 71533, 71534, 71543, 71544, 71553, 71554 ] - }, - { - "configId": 14, - "items": [ 90513, 90514, 90523, 90524, 90533, 90534, 90543, 90544, 90553, 90554 ] - } + { + "configId": 1, + "items": [ + 75513, + 75514, + 75523, + 75524, + 75533, + 75534, + 75543, + 75544, + 75553, + 75554 + ] + }, + { + "configId": 2, + "items": [ + 77513, + 77514, + 77523, + 77524, + 77533, + 77534, + 77543, + 77544, + 77553, + 77554 + ] + }, + { + "configId": 3, + "items": [ + 82513, + 82514, + 82523, + 82524, + 82533, + 82534, + 82543, + 82544, + 82553, + 82554 + ] + }, + { + "configId": 4, + "items": [ + 81513, + 81514, + 81523, + 81524, + 81533, + 81534, + 81543, + 81544, + 81553, + 81554 + ] + }, + { + "configId": 5, + "items": [ + 79513, + 79514, + 79523, + 79524, + 79533, + 79534, + 79543, + 79544, + 79553, + 79554 + ] + }, + { + "configId": 6, + "items": [ + 72513, + 72514, + 72523, + 72524, + 72533, + 72534, + 72543, + 72544, + 72553, + 72554 + ] + }, + { + "configId": 7, + "items": [ + 76513, + 76514, + 76523, + 76524, + 76533, + 76534, + 76543, + 76544, + 76553, + 76554 + ] + }, + { + "configId": 8, + "items": [ + 74513, + 74514, + 74523, + 74524, + 74533, + 74534, + 74543, + 74544, + 74553, + 74554 + ] + }, + { + "configId": 9, + "items": [ + 88513, + 88514, + 88523, + 88524, + 88533, + 88534, + 88543, + 88544, + 88553, + 88554 + ] + }, + { + "configId": 10, + "items": [ + 89513, + 89514, + 89523, + 89524, + 89533, + 89534, + 89543, + 89544, + 89553, + 89554 + ] + }, + { + "configId": 11, + "items": [ + 80513, + 80514, + 80523, + 80524, + 80533, + 80534, + 80543, + 80544, + 80553, + 80554 + ] + }, + { + "configId": 12, + "items": [ + 73513, + 73514, + 73523, + 73524, + 73533, + 73534, + 73543, + 73544, + 73553, + 73554 + ] + }, + { + "configId": 13, + "items": [ + 71513, + 71514, + 71523, + 71524, + 71533, + 71534, + 71543, + 71544, + 71553, + 71554 + ] + }, + { + "configId": 14, + "items": [ + 90513, + 90514, + 90523, + 90524, + 90533, + 90534, + 90543, + 90544, + 90553, + 90554 + ] + } ] diff --git a/src/main/resources/defaults/data/ShopChest.v2.json b/src/main/resources/defaults/data/ShopChest.v2.json index 2b258f62f..2424d9b27 100644 --- a/src/main/resources/defaults/data/ShopChest.v2.json +++ b/src/main/resources/defaults/data/ShopChest.v2.json @@ -1,16 +1,15 @@ { - "212000002":"", - "1000100":"", - "7000600":"", - "7000700":"", - "7000800":"", - "7000900":"", - "7001000":"", - "7001100":"", - "7001200":"", - "7001300":"", - "7001400":"", - + "212000002": "", + "1000100": "", + "7000600": "", + "7000700": "", + "7000800": "", + "7000900": "", + "7001000": "", + "7001100": "", + "7001200": "", + "7001300": "", + "7001400": "", "23010000": "104002:80,104012:40", "23010001": "104003:50,104013:25,107009:1,202:50000", "23010100": "104002:40,202:30000", diff --git a/src/main/resources/defaults/data/SkillParticleGeneration.json b/src/main/resources/defaults/data/SkillParticleGeneration.json index 42520e11a..6982845ed 100644 --- a/src/main/resources/defaults/data/SkillParticleGeneration.json +++ b/src/main/resources/defaults/data/SkillParticleGeneration.json @@ -1,556 +1,556 @@ [ - { - "avatarId": 10000002, - "amountList": [ - { - "value": 4, - "chance": 50 - }, - { - "value": 5, - "chance": 50 - } - ] - }, - { - "avatarId": 10000003, - "amountList": [ - { - "value": 2, - "chance": 33 - }, - { - "value": 3, - "chance": 67 - } - ] - }, - { - "avatarId": 10000005, - "amountList": [ - { - "value": 3, - "chance": 67 - }, - { - "value": 4, - "chance": 33 - } - ] - }, - { - "avatarId": 10000006, - "amountList": [ - { - "value": 5, - "chance": 100 - } - ] - }, - { - "avatarId": 10000007, - "amountList": [ - { - "value": 3, - "chance": 67 - }, - { - "value": 4, - "chance": 33 - } - ] - }, - { - "avatarId": 10000014, - "amountList": [ - { - "value": 0, - "chance": 100 - } - ] - }, - { - "avatarId": 10000015, - "amountList": [ - { - "value": 2, - "chance": 33 - }, - { - "value": 3, - "chance": 67 - } - ] - }, - { - "avatarId": 10000016, - "amountList": [ - { - "value": 1, - "chance": 33 - }, - { - "value": 2, - "chance": 67 - } - ] - }, - { - "avatarId": 10000020, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000021, - "amountList": [ - { - "value": 4, - "chance": 100 - } - ] - }, - { - "avatarId": 10000022, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000023, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000024, - "amountList": [ - { - "value": 2, - "chance": 100 - } - ] - }, - { - "avatarId": 10000025, - "amountList": [ - { - "value": 5, - "chance": 100 - } - ] - }, - { - "avatarId": 10000026, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000027, - "amountList": [ - { - "value": 3, - "chance": 33 - }, - { - "value": 4, - "chance": 67 - } - ] - }, - { - "avatarId": 10000029, - "amountList": [ - { - "value": 4, - "chance": 100 - } - ] - }, - { - "avatarId": 10000030, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000031, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000032, - "amountList": [ - { - "value": 2, - "chance": 75 - }, - { - "value": 3, - "chance": 25 - } - ] - }, - { - "avatarId": 10000033, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000034, - "amountList": [ - { - "value": 0, - "chance": 100 - } - ] - }, - { - "avatarId": 10000035, - "amountList": [ - { - "value": 0, - "chance": 100 - } - ] - }, - { - "avatarId": 10000036, - "amountList": [ - { - "value": 4, - "chance": 100 - } - ] - }, - { - "avatarId": 10000037, - "amountList": [ - { - "value": 2, - "chance": 100 - } - ] - }, - { - "avatarId": 10000038, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000039, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000041, - "amountList": [ - { - "value": 3, - "chance": 67 - }, - { - "value": 4, - "chance": 33 - } - ] - }, - { - "avatarId": 10000042, - "amountList": [ - { - "value": 2, - "chance": 50 - }, - { - "value": 3, - "chance": 50 - } - ] - }, - { - "avatarId": 10000043, - "amountList": [ - { - "value": 4, - "chance": 100 - } - ] - }, - { - "avatarId": 10000044, - "amountList": [ - { - "value": 4, - "chance": 100 - } - ] - }, - { - "avatarId": 10000045, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000046, - "amountList": [ - { - "value": 2, - "chance": 50 - }, - { - "value": 3, - "chance": 50 - } - ] - }, - { - "avatarId": 10000047, - "amountList": [ - { - "value": 3, - "chance": 50 - }, - { - "value": 4, - "chance": 50 - } - ] - }, - { - "avatarId": 10000048, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000049, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000050, - "amountList": [ - { - "value": 3, - "chance": 50 - }, - { - "value": 4, - "chance": 50 - } - ] - }, - { - "avatarId": 10000051, - "amountList": [ - { - "value": 1, - "chance": 50 - }, - { - "value": 2, - "chance": 50 - } - ] - }, - { - "avatarId": 10000052, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000053, - "amountList": [ - { - "value": 2, - "chance": 100 - } - ] - }, - { - "avatarId": 10000054, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000055, - "amountList": [ - { - "value": 2, - "chance": 100 - } - ] - }, - { - "avatarId": 10000056, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000057, - "amountList": [ - { - "value": 3, - "chance": 50 - }, - { - "value": 4, - "chance": 50 - } - ] - }, - { - "avatarId": 10000058, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000060, - "amountList": [ - { - "value": 4, - "chance": 100 - } - ] - }, - { - "avatarId": 10000062, - "amountList": [ - { - "value": 5, - "chance": 100 - } - ] - }, - { - "avatarId": 10000063, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000064, - "amountList": [ - { - "value": 2, - "chance": 100 - } - ] - }, - { - "avatarId": 10000065, - "amountList": [ - { - "value": 1, - "chance": 100 - } - ] - }, - { - "avatarId": 10000066, - "amountList": [ - { - "value": 1, - "chance": 50 - }, - { - "value": 2, - "chance": 50 - } - ] - }, - { - "avatarId": 10000067, - "amountList": [ - { - "value": 3, - "chance": 100 - } - ] - }, - { - "avatarId": 10000068, - "amountList": [ - { - "value": 2, - "chance": 100 - } - ] - }, - { - "avatarId": 10000069, - "amountList": [ - { - "value": 3, - "chance": 50 - }, - { - "value": 4, - "chance": 50 - } - ] - } + { + "avatarId": 10000002, + "amountList": [ + { + "value": 4, + "chance": 50 + }, + { + "value": 5, + "chance": 50 + } + ] + }, + { + "avatarId": 10000003, + "amountList": [ + { + "value": 2, + "chance": 33 + }, + { + "value": 3, + "chance": 67 + } + ] + }, + { + "avatarId": 10000005, + "amountList": [ + { + "value": 3, + "chance": 67 + }, + { + "value": 4, + "chance": 33 + } + ] + }, + { + "avatarId": 10000006, + "amountList": [ + { + "value": 5, + "chance": 100 + } + ] + }, + { + "avatarId": 10000007, + "amountList": [ + { + "value": 3, + "chance": 67 + }, + { + "value": 4, + "chance": 33 + } + ] + }, + { + "avatarId": 10000014, + "amountList": [ + { + "value": 0, + "chance": 100 + } + ] + }, + { + "avatarId": 10000015, + "amountList": [ + { + "value": 2, + "chance": 33 + }, + { + "value": 3, + "chance": 67 + } + ] + }, + { + "avatarId": 10000016, + "amountList": [ + { + "value": 1, + "chance": 33 + }, + { + "value": 2, + "chance": 67 + } + ] + }, + { + "avatarId": 10000020, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000021, + "amountList": [ + { + "value": 4, + "chance": 100 + } + ] + }, + { + "avatarId": 10000022, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000023, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000024, + "amountList": [ + { + "value": 2, + "chance": 100 + } + ] + }, + { + "avatarId": 10000025, + "amountList": [ + { + "value": 5, + "chance": 100 + } + ] + }, + { + "avatarId": 10000026, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000027, + "amountList": [ + { + "value": 3, + "chance": 33 + }, + { + "value": 4, + "chance": 67 + } + ] + }, + { + "avatarId": 10000029, + "amountList": [ + { + "value": 4, + "chance": 100 + } + ] + }, + { + "avatarId": 10000030, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000031, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000032, + "amountList": [ + { + "value": 2, + "chance": 75 + }, + { + "value": 3, + "chance": 25 + } + ] + }, + { + "avatarId": 10000033, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000034, + "amountList": [ + { + "value": 0, + "chance": 100 + } + ] + }, + { + "avatarId": 10000035, + "amountList": [ + { + "value": 0, + "chance": 100 + } + ] + }, + { + "avatarId": 10000036, + "amountList": [ + { + "value": 4, + "chance": 100 + } + ] + }, + { + "avatarId": 10000037, + "amountList": [ + { + "value": 2, + "chance": 100 + } + ] + }, + { + "avatarId": 10000038, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000039, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000041, + "amountList": [ + { + "value": 3, + "chance": 67 + }, + { + "value": 4, + "chance": 33 + } + ] + }, + { + "avatarId": 10000042, + "amountList": [ + { + "value": 2, + "chance": 50 + }, + { + "value": 3, + "chance": 50 + } + ] + }, + { + "avatarId": 10000043, + "amountList": [ + { + "value": 4, + "chance": 100 + } + ] + }, + { + "avatarId": 10000044, + "amountList": [ + { + "value": 4, + "chance": 100 + } + ] + }, + { + "avatarId": 10000045, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000046, + "amountList": [ + { + "value": 2, + "chance": 50 + }, + { + "value": 3, + "chance": 50 + } + ] + }, + { + "avatarId": 10000047, + "amountList": [ + { + "value": 3, + "chance": 50 + }, + { + "value": 4, + "chance": 50 + } + ] + }, + { + "avatarId": 10000048, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000049, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000050, + "amountList": [ + { + "value": 3, + "chance": 50 + }, + { + "value": 4, + "chance": 50 + } + ] + }, + { + "avatarId": 10000051, + "amountList": [ + { + "value": 1, + "chance": 50 + }, + { + "value": 2, + "chance": 50 + } + ] + }, + { + "avatarId": 10000052, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000053, + "amountList": [ + { + "value": 2, + "chance": 100 + } + ] + }, + { + "avatarId": 10000054, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000055, + "amountList": [ + { + "value": 2, + "chance": 100 + } + ] + }, + { + "avatarId": 10000056, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000057, + "amountList": [ + { + "value": 3, + "chance": 50 + }, + { + "value": 4, + "chance": 50 + } + ] + }, + { + "avatarId": 10000058, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000060, + "amountList": [ + { + "value": 4, + "chance": 100 + } + ] + }, + { + "avatarId": 10000062, + "amountList": [ + { + "value": 5, + "chance": 100 + } + ] + }, + { + "avatarId": 10000063, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000064, + "amountList": [ + { + "value": 2, + "chance": 100 + } + ] + }, + { + "avatarId": 10000065, + "amountList": [ + { + "value": 1, + "chance": 100 + } + ] + }, + { + "avatarId": 10000066, + "amountList": [ + { + "value": 1, + "chance": 50 + }, + { + "value": 2, + "chance": 50 + } + ] + }, + { + "avatarId": 10000067, + "amountList": [ + { + "value": 3, + "chance": 100 + } + ] + }, + { + "avatarId": 10000068, + "amountList": [ + { + "value": 2, + "chance": 100 + } + ] + }, + { + "avatarId": 10000069, + "amountList": [ + { + "value": 3, + "chance": 50 + }, + { + "value": 4, + "chance": 50 + } + ] + } ] diff --git a/src/main/resources/defaults/data/TowerSchedule.json b/src/main/resources/defaults/data/TowerSchedule.json index cf8b2fe04..2ebd68df5 100644 --- a/src/main/resources/defaults/data/TowerSchedule.json +++ b/src/main/resources/defaults/data/TowerSchedule.json @@ -1,5 +1,5 @@ { - "scheduleId" : 45, - "scheduleStartTime" : "2022-06-01T00:00:00+08:00", - "nextScheduleChangeTime" : "2030-06-30T00:00:00+08:00" + "scheduleId": 45, + "scheduleStartTime": "2022-06-01T00:00:00+08:00", + "nextScheduleChangeTime": "2030-06-30T00:00:00+08:00" } diff --git a/src/main/resources/defaults/data/documentation/handbook.html b/src/main/resources/defaults/data/documentation/handbook.html index 6a77d3806..a4601b120 100644 --- a/src/main/resources/defaults/data/documentation/handbook.html +++ b/src/main/resources/defaults/data/documentation/handbook.html @@ -1,162 +1,162 @@ - - - - - - GM Handbook + table th, table td { + text-align: left; + padding: 0 8px; + } + + GM Handbook

-
-

{{TITLE}}

+
+

{{TITLE}}

-

{{TITLE_COMMANDS}}

-
- - - - - - - - {{COMMANDS_TABLE}} -
{{HEADER_COMMAND}}{{HEADER_DESCRIPTION}}
+

{{TITLE_COMMANDS}}

+
+ + + + + + + + {{COMMANDS_TABLE}} +
{{HEADER_COMMAND}}{{HEADER_DESCRIPTION}}
-

{{TITLE_AVATARS}}

-
- - - - - - - - {{AVATARS_TABLE}} -
{{HEADER_ID}}{{HEADER_AVATAR}}
+

{{TITLE_AVATARS}}

+
+ + + + + + + + {{AVATARS_TABLE}} +
{{HEADER_ID}}{{HEADER_AVATAR}}
-

{{TITLE_ITEMS}}

-
- - - - - - - - {{ITEMS_TABLE}} -
{{HEADER_ID}}{{HEADER_ITEM}}
+

{{TITLE_ITEMS}}

+
+ + + + + + + + {{ITEMS_TABLE}} +
{{HEADER_ID}}{{HEADER_ITEM}}
-

{{TITLE_SCENES}}

-
- - - - - - - - {{SCENES_TABLE}} -
{{HEADER_ID}}{{HEADER_SCENE}}
+

{{TITLE_SCENES}}

+
+ + + + + + + + {{SCENES_TABLE}} +
{{HEADER_ID}}{{HEADER_SCENE}}
-

{{TITLE_MONSTERS}}

-
- - - - - - - - {{MONSTERS_TABLE}} -
{{HEADER_ID}}{{HEADER_MONSTER}}
-
+

{{TITLE_MONSTERS}}

+
+ + + + + + + + {{MONSTERS_TABLE}} +
{{HEADER_ID}}{{HEADER_MONSTER}}
+
-
diff --git a/src/main/resources/defaults/data/documentation/index.html b/src/main/resources/defaults/data/documentation/index.html index f89dbe258..7035c99c0 100644 --- a/src/main/resources/defaults/data/documentation/index.html +++ b/src/main/resources/defaults/data/documentation/index.html @@ -1,106 +1,106 @@ - - - - - - Documentation + table th, table td { + text-align: left; + padding: 0 8px; + } + + Documentation
-
-
diff --git a/src/main/resources/defaults/data/gacha/details.html b/src/main/resources/defaults/data/gacha/details.html index 85443d532..7dcc8cba3 100644 --- a/src/main/resources/defaults/data/gacha/details.html +++ b/src/main/resources/defaults/data/gacha/details.html @@ -1,121 +1,140 @@ - - - - - - - Banner Details - - - -
-
-

{{TITLE}}

- -

{{AVAILABLE_FIVE_STARS}}

-
-
    -
+ p { + font-weight: 300; + } -

{{AVAILABLE_FOUR_STARS}}

-
-
    -
+ a, a:hover { + text-decoration: none !important; + color: #626976; + } -

{{AVAILABLE_THREE_STARS}}

-
-
    -
-
-
-
-
- - + var lang = "{{LANGUAGE}}".toLowerCase(); + + function getNameForId(itemId) { + if (mappings[lang] != null && mappings[lang][itemId] != null) { + return mappings[lang][itemId][0]; + } else if (mappings["en-us"] != null && mappings["en-us"][itemId] != null) { + return mappings["en-us"][itemId][0]; + } + + return itemId.toString(); + } + + fiveStarList = document.getElementById("5-star-list"); + fourStarList = document.getElementById("4-star-list"); + threeStarList = document.getElementById("3-star-list"); + + fiveStarItems.forEach(element => { + var entry = document.createElement("li"); + entry.innerHTML = getNameForId(element); + fiveStarList.appendChild(entry); + }); + fourStarItems.forEach(element => { + var entry = document.createElement("li"); + entry.innerHTML = getNameForId(element); + fourStarList.appendChild(entry); + }); + threeStarItems.forEach(element => { + var entry = document.createElement("li"); + entry.innerHTML = getNameForId(element); + threeStarList.appendChild(entry); + }); + + diff --git a/src/main/resources/defaults/data/gacha/records.html b/src/main/resources/defaults/data/gacha/records.html index ad2466e9c..55b4e7fd1 100644 --- a/src/main/resources/defaults/data/gacha/records.html +++ b/src/main/resources/defaults/data/gacha/records.html @@ -1,175 +1,195 @@ - - - - - - - Gacha Records - - - - - - - -
-
-

{{TITLE}}

- - - - - - - - - -
{{DATE}}{{ITEM}}
- -
+ a, a:hover { + text-decoration: none !important; + color: #626976; + } + + .content { + padding: 3rem 0; + } + + .container { + color: #626976; + position: relative; + } + + h2 { + font-size: 20px; + } + + .custom-table { + min-width: 900px; + } + + .custom-table thead tr, .custom-table thead th { + padding-bottom: 30px; + color: #000; + } + + .custom-table tbody th, .custom-table tbody td { + color: #777; + font-weight: 400; + padding-bottom: 20px; + padding-top: 20px; + font-weight: 300; + border: none; + } + + .yellow { + color: rgb(255, 162, 0); + } + + .blue { + color: rgb(75, 107, 251); + } + + .purple { + color: rgb(242, 40, 242); + } + + Gacha Records + + + + + + + +
+
+

{{TITLE}}

+ + + + + + + + + +
{{DATE}}{{ITEM}}
+ -
- +
- + (function () { + var container = document.getElementById("container"); + records.forEach(element => { + var e = document.createElement("tr"); - + e.innerHTML = "" + (new Date(element.time).toLocaleString(lang)) + "" + itemMapper(element.item) + ""; + container.appendChild(e); + }); + + // setup pagenation buttons + var page = parseInt(new window.URLSearchParams(window.location.search).get("p")); + if (!page) { + page = 0; + } + document.getElementById("curpage").innerText = page + 1; + var href = new URL(window.location); + href.searchParams.set("p", page - 1); + document.getElementById("prev").href = href.toString(); + href.searchParams.set("p", page + 1); + document.getElementById("next").href = href.toString(); + if (page <= 0) { + document.getElementById("prev").style.display = "none"; + } + if (page >= maxPage - 1) { + document.getElementById("next").style.display = "none"; + } + + // setup gacha type info + var gachaType = new window.URLSearchParams(window.location.search).get("gachaType"); + if (mappings[lang] != null && mappings[lang][gachaType] != null) { + var gachaString = mappings[lang][gachaType]; + } else { + var gachaString = mappings['default'][gachaType]; + if (gachaString == null) { + gachaString = gachaType; + } + } + document.getElementById("gacha-type").innerText = gachaString; + })(); + + + diff --git a/src/main/resources/languages/en-US.json b/src/main/resources/languages/en-US.json index 6cb8bdfb8..30eb77a6b 100644 --- a/src/main/resources/languages/en-US.json +++ b/src/main/resources/languages/en-US.json @@ -400,19 +400,19 @@ } }, "plugin": { - "directory_failed": "Failed to create plugins directory: ", - "unable_to_load": "Unable to load plugin.", - "invalid_config": "Plugin %s has an invalid config file.", - "invalid_main_class": "Plugin %s has an invalid main class.", - "missing_config": "Plugin %s lacks a valid config file.", - "failed_to_load_plugin": "Failed to load plugin: %s", - "failed_to_load": "Failed to load a plugin.", - "failed_to_load_dependencies": "Failed to load plugins with dependencies.", - "loading_plugin": "Loading plugin: %s", - "failed_add_id": "Failed to add plugin identifier: %s", - "enabling_plugin": "Enabling plugin: %s", - "enabling_failed": "Failed to enable plugin: %s", - "disabling_plugin": "Disabling plugin: %s", - "disabling_failed": "Failed to disable plugin: %s" + "directory_failed": "Failed to create plugins directory: ", + "unable_to_load": "Unable to load plugin.", + "invalid_config": "Plugin %s has an invalid config file.", + "invalid_main_class": "Plugin %s has an invalid main class.", + "missing_config": "Plugin %s lacks a valid config file.", + "failed_to_load_plugin": "Failed to load plugin: %s", + "failed_to_load": "Failed to load a plugin.", + "failed_to_load_dependencies": "Failed to load plugins with dependencies.", + "loading_plugin": "Loading plugin: %s", + "failed_add_id": "Failed to add plugin identifier: %s", + "enabling_plugin": "Enabling plugin: %s", + "enabling_failed": "Failed to enable plugin: %s", + "disabling_plugin": "Disabling plugin: %s", + "disabling_failed": "Failed to disable plugin: %s" } } diff --git a/src/main/resources/languages/it-IT.json b/src/main/resources/languages/it-IT.json index db2af6c09..9f2d15666 100644 --- a/src/main/resources/languages/it-IT.json +++ b/src/main/resources/languages/it-IT.json @@ -80,19 +80,19 @@ "set_to": "%s impostato su %s.", "set_for_to": "%s per %s impostato su %s.", "invalid": { - "amount": "Importo non valido.", - "artifactId": "ID artefatto non valido.", - "avatarId": "ID avatar non valido.", - "avatarLevel": "Livello avatar non valido.", - "entityId": "ID entità non valido.", - "itemId": "ID articolo non valido.", - "itemLevel": "ItemLevel non valido.", - "itemRefinement": "Raffinamento articolo non valido.", - "statValue": "Valore statistica non valido.", - "value_between": "Valore non valido: %s deve essere compreso tra %s e %s.", - "playerId": "ID giocatore non valido.", - "uid": "UID non valido.", - "id": "ID non valido." + "amount": "Importo non valido.", + "artifactId": "ID artefatto non valido.", + "avatarId": "ID avatar non valido.", + "avatarLevel": "Livello avatar non valido.", + "entityId": "ID entità non valido.", + "itemId": "ID articolo non valido.", + "itemLevel": "ItemLevel non valido.", + "itemRefinement": "Raffinamento articolo non valido.", + "statValue": "Valore statistica non valido.", + "value_between": "Valore non valido: %s deve essere compreso tra %s e %s.", + "playerId": "ID giocatore non valido.", + "uid": "UID non valido.", + "id": "ID non valido." } }, "execution": { @@ -154,7 +154,8 @@ "displays": "Display cancellati per %s.", "virtuals": "Virtuali cancellate per %s.", "everything": "Cancellato tutto per %s.", - "description": "Elimina gli oggetti sbloccati non equipaggiati dal tuo inventario. Il valore predefinito è 4* livello 1 raffinamento 1 o inferiore, ma può essere impostato su un livello superiore." }, + "description": "Elimina gli oggetti sbloccati non equipaggiati dal tuo inventario. Il valore predefinito è 4* livello 1 raffinamento 1 o inferiore, ma può essere impostato su un livello superiore." + }, "coop": { "success": "Convocato %s nel mondo di %s.", "description": "Forza qualcuno a unirsi al mondo degli altri. Se nessuno viene preso di mira, ti manda comunque in modalità cooperativa." @@ -174,7 +175,7 @@ "given_avatar": "Dato %s con livello da %s a %s.", "giveall_success": "Ha dato tutti gli oggetti con successo.", "description": "Dà un oggetto a te o al giocatore specificato. Può anche dare tutte le armi, avatar e/o materiali, e può costruire artefatti personalizzati." - }, + }, "heal": { "success": "Tutti i personaggi sono stati curati.", "description": "Guarisci tutti i personaggi della tua squadra attuale." @@ -268,35 +269,35 @@ "error": "ERRORE: fase di costruzione %s non valida. Controlla lo stacktrace della console.", "description": "Invia posta all'utente specificato. L'utilizzo di questo comando cambia in base al suo stato di composizione" }, - "sendMessage": { - "success": "Messaggio inviato.", - "description": "Invia un messaggio a un giocatore come server. Se usato senza target, invia a tutti i giocatori sul server." - }, - "setConst": { - "range_error": "Il livello della costellazione deve essere compreso tra 0 e 6.", - "level_error": "Livello costellazione non valido.", - "fail": "Impossibile impostare la costellazione.", - "failed_success": "Le costellazioni per %s sono state impostate su %s. Ricarica la scena per vedere le modifiche.", - "success": "Le costellazioni per %s sono state impostate su %s.", - "successall": "Le costellazioni per tutti i personaggi sono state impostate su %s.", - "description": "Imposta il livello di costellazione per il tuo attuale personaggio attivo" - }, - "setFetterLevel": { - "range_error": "Il livello di restrizione deve essere compreso tra 0 e 10.", - "success": "Livello di restrizione impostato su %s.", - "level_error": "Livello restrizione non valido.", - "description": "Imposta il tuo livello di restrizione per il tuo attuale personaggio attivo" - }, - "setProp": { - "description": "Imposta le proprietà dell'intero account. Cose come godmode possono essere abilitate in questo modo, oltre a cambiare cose come il pavimento dell'abisso sbloccato e il progresso del pass battaglia.\n\tValori per (senza distinzione tra maiuscole e minuscole): GodMode | UnlimitedStamina | UnlimitedEnergy | TowerLevel | WorldLevel | BPLevel | SetOpenState | UnsetOpenState | UnlockMap\n\t(cont.) vedi PlayerProperty enum per altri possibili valori, nella forma PROP_MAX_SPRING_VOLUME -> max_spring_volume" - }, - "setStats": { - "description": "Imposta la proprietà di combattimento per il tuo personaggio attivo corrente\n\tValori per : hp | maxhp | def | atk | em | er | crate | cdmg | cdr | heal | heali | shield | defi\n\t(cont.) Elemental DMG Bonus: epyro | ecryo | ehydro | egeo | edendro | eelectro | ephys\n\t(cont.) Elemental RES: respyro | rescryo | reshydro | resgeo | resdendro | reselectro | resphys", - "locked_to": "%s bloccato su %s.", - "locked_for_to": "%s per %s bloccato su %s.", - "unlocked": "%s sbloccato.", - "unlocked_for": "%s per %s sbloccato." - }, + "sendMessage": { + "success": "Messaggio inviato.", + "description": "Invia un messaggio a un giocatore come server. Se usato senza target, invia a tutti i giocatori sul server." + }, + "setConst": { + "range_error": "Il livello della costellazione deve essere compreso tra 0 e 6.", + "level_error": "Livello costellazione non valido.", + "fail": "Impossibile impostare la costellazione.", + "failed_success": "Le costellazioni per %s sono state impostate su %s. Ricarica la scena per vedere le modifiche.", + "success": "Le costellazioni per %s sono state impostate su %s.", + "successall": "Le costellazioni per tutti i personaggi sono state impostate su %s.", + "description": "Imposta il livello di costellazione per il tuo attuale personaggio attivo" + }, + "setFetterLevel": { + "range_error": "Il livello di restrizione deve essere compreso tra 0 e 10.", + "success": "Livello di restrizione impostato su %s.", + "level_error": "Livello restrizione non valido.", + "description": "Imposta il tuo livello di restrizione per il tuo attuale personaggio attivo" + }, + "setProp": { + "description": "Imposta le proprietà dell'intero account. Cose come godmode possono essere abilitate in questo modo, oltre a cambiare cose come il pavimento dell'abisso sbloccato e il progresso del pass battaglia.\n\tValori per (senza distinzione tra maiuscole e minuscole): GodMode | UnlimitedStamina | UnlimitedEnergy | TowerLevel | WorldLevel | BPLevel | SetOpenState | UnsetOpenState | UnlockMap\n\t(cont.) vedi PlayerProperty enum per altri possibili valori, nella forma PROP_MAX_SPRING_VOLUME -> max_spring_volume" + }, + "setStats": { + "description": "Imposta la proprietà di combattimento per il tuo personaggio attivo corrente\n\tValori per : hp | maxhp | def | atk | em | er | crate | cdmg | cdr | heal | heali | shield | defi\n\t(cont.) Elemental DMG Bonus: epyro | ecryo | ehydro | egeo | edendro | eelectro | ephys\n\t(cont.) Elemental RES: respyro | rescryo | reshydro | resgeo | resdendro | reselectro | resphys", + "locked_to": "%s bloccato su %s.", + "locked_for_to": "%s per %s bloccato su %s.", + "unlocked": "%s sbloccato.", + "unlocked_for": "%s per %s sbloccato." + }, "spawn": { "success": "Evocati %s di %s.", "limit_reached": "Limite di evocazione della scena raggiunto. Generazione invece di %s entità.", @@ -399,19 +400,19 @@ } }, "plugin": { - "directory_failed": "Impossibile creare la directory dei plugin: ", - "unable_to_load": "Impossibile caricare il plug-in.", - "invalid_config": "Il plug-in %s ha un file di configurazione non valido.", - "invalid_main_class": "Il plug-in %s ha una classe principale non valida.", - "missing_config": "Il plug-in %s non ha un file di configurazione valido.", - "failed_to_load_plugin": "Impossibile caricare il plug-in: %s", - "failed_to_load": "Impossibile caricare un plug-in.", - "failed_to_load_dependencies": "Impossibile caricare i plugin con le dipendenze.", - "loading_plugin": "Caricamento plug-in: %s", - "failed_add_id": "Impossibile aggiungere l'identificatore del plug-in: %s", - "enabling_plugin": "Abilitazione plug-in: %s", - "enabling_failed": "Impossibile abilitare il plug-in: %s", - "disabling_plugin": "Disabilitazione plug-in: %s", - "disabling_failed": "Impossibile disabilitare il plug-in: %s" + "directory_failed": "Impossibile creare la directory dei plugin: ", + "unable_to_load": "Impossibile caricare il plug-in.", + "invalid_config": "Il plug-in %s ha un file di configurazione non valido.", + "invalid_main_class": "Il plug-in %s ha una classe principale non valida.", + "missing_config": "Il plug-in %s non ha un file di configurazione valido.", + "failed_to_load_plugin": "Impossibile caricare il plug-in: %s", + "failed_to_load": "Impossibile caricare un plug-in.", + "failed_to_load_dependencies": "Impossibile caricare i plugin con le dipendenze.", + "loading_plugin": "Caricamento plug-in: %s", + "failed_add_id": "Impossibile aggiungere l'identificatore del plug-in: %s", + "enabling_plugin": "Abilitazione plug-in: %s", + "enabling_failed": "Impossibile abilitare il plug-in: %s", + "disabling_plugin": "Disabilitazione plug-in: %s", + "disabling_failed": "Impossibile disabilitare il plug-in: %s" } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 7a917c6cf..ca6d90ca9 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,5 +1,5 @@ - + @@ -24,16 +24,16 @@ - - - - + + + + - + - - - + + +