diff --git a/src/main/java/emu/grasscutter/GameConstants.java b/src/main/java/emu/grasscutter/GameConstants.java index 4741f81c4..16b938cb8 100644 --- a/src/main/java/emu/grasscutter/GameConstants.java +++ b/src/main/java/emu/grasscutter/GameConstants.java @@ -1,35 +1,48 @@ -package emu.grasscutter; - -import emu.grasscutter.utils.Position; -import emu.grasscutter.utils.Utils; -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", - "Avatar_Freeze_Duration_Reducer", - "Avatar_Attack_ReviveEnergy", - "Avatar_Component_Initializer", - "Avatar_FallAnthem_Achievement_Listener" - }; - 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"; -} +package emu.grasscutter; + +import emu.grasscutter.utils.Position; +import emu.grasscutter.utils.SparseSet; +import emu.grasscutter.utils.Utils; +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", + "Avatar_Freeze_Duration_Reducer", + "Avatar_Attack_ReviveEnergy", + "Avatar_Component_Initializer", + "Avatar_FallAnthem_Achievement_Listener" + }; + public static final SparseSet ILLEGAL_WEAPONS = new SparseSet(""" + 10000-10008, 11411, 11506-11508, 12505, 12506, 12508, 12509, + 13503, 13506, 14411, 14503, 14505, 14508, 15504-15506 + """); + public static final SparseSet ILLEGAL_RELICS = new SparseSet(""" + 20001, 23300-23340, 23383-23385, 78310-78554, 99310-99554 + """); + public static final SparseSet ILLEGAL_ITEMS = new SparseSet(""" + 100086, 100087, 100100-101000, 101106-101110, 101306, 101500-104000, + 105001, 105004, 106000-107000, 107011, 108000, 109000-110000, + 115000-130000, 200200-200899, 220050, 220054 + """); + 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/command/commands/GiveCommand.java b/src/main/java/emu/grasscutter/command/commands/GiveCommand.java index 6e597bc20..a0720e0c1 100644 --- a/src/main/java/emu/grasscutter/command/commands/GiveCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/GiveCommand.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.function.BiConsumer; import java.util.regex.Pattern; +import static emu.grasscutter.GameConstants.*; import static emu.grasscutter.command.CommandHelpers.*; @Command( @@ -42,18 +43,6 @@ public final class GiveCommand implements CommandHandler { Map.entry(constellationRegex, GiveItemParameters::setConstellation), Map.entry(skillLevelRegex, GiveItemParameters::setSkillLevel) ); - private static final SparseSet illegalWeaponIds = new SparseSet(""" - 10000-10008, 11411, 11506-11508, 12505, 12506, 12508, 12509, - 13503, 13506, 14411, 14503, 14505, 14508, 15504-15506 - """); - private static final SparseSet illegalRelicIds = new SparseSet(""" - 20001, 23300-23340, 23383-23385, 78310-78554, 99310-99554 - """); - private static final SparseSet illegalItemIds = new SparseSet(""" - 100086, 100087, 100100-101000, 101106-101110, 101306, 101500-104000, - 105001, 105004, 106000-107000, 107011, 108000, 109000-110000, - 115000-130000, 200200-200899, 220050, 220054 - """); private static Avatar makeAvatar(GiveItemParameters param) { return makeAvatar(param.avatarData, param.lvl, Avatar.getMinPromoteLevel(param.lvl), param.constellation, param.skillLevel); @@ -231,7 +220,7 @@ public final class GiveCommand implements CommandHandler { for (ItemData itemdata : GameData.getItemDataMap().values()) { int id = itemdata.getId(); if (id < 100_000) continue; // Nothing meaningful below this - if (illegalItemIds.contains(id)) continue; + if (ILLEGAL_ITEMS.contains(id)) continue; if (itemdata.isEquip()) continue; GameItem item = new GameItem(itemdata); @@ -251,7 +240,7 @@ public final class GiveCommand implements CommandHandler { for (ItemData itemdata : GameData.getItemDataMap().values()) { int id = itemdata.getId(); if (id < 11100 || id > 16000) continue; // All extant weapons are within this range - if (illegalWeaponIds.contains(id)) continue; + if (ILLEGAL_WEAPONS.contains(id)) continue; if (!itemdata.isEquip()) continue; if (itemdata.getItemType() != ItemType.ITEM_WEAPON) continue; @@ -333,7 +322,7 @@ public final class GiveCommand implements CommandHandler { if (param.lvl < 0) param.lvl = 0; if (param.lvl > 20) param.lvl = 20; param.lvl += 1; - if (illegalRelicIds.contains(param.id)) + if (ILLEGAL_RELICS.contains(param.id)) CommandHandler.sendTranslatedMessage(sender, "commands.give.illegal_relic"); } else { // Suitable for Avatars and Weapons