diff --git a/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java b/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java index 488cca1e6..f9580ef7d 100644 --- a/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java +++ b/src/main/java/emu/grasscutter/data/excels/ReliquaryLevelData.java @@ -5,13 +5,15 @@ import java.util.List; import emu.grasscutter.data.GameResource; import emu.grasscutter.data.ResourceType; import emu.grasscutter.game.props.FightProperty; +import it.unimi.dsi.fastutil.ints.Int2FloatMap; +import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @ResourceType(name = "ReliquaryLevelExcelConfigData.json") public class ReliquaryLevelData extends GameResource { private int id; - private Int2ObjectMap propMap; + private Int2FloatMap propMap; private int rank; private int level; @@ -40,15 +42,15 @@ public class ReliquaryLevelData extends GameResource { } public float getPropValue(int id) { - return propMap.get(id); + return propMap.getOrDefault(id, 0f); } @Override public void onLoad() { this.id = (rank << 8) + this.getLevel(); - this.propMap = new Int2ObjectOpenHashMap<>(); + this.propMap = new Int2FloatOpenHashMap(); for (RelicLevelProperty p : addProps) { - this.propMap.put(FightProperty.getPropByName(p.getPropType()).getId(), (Float) p.getValue()); + this.propMap.put(FightProperty.getPropByName(p.getPropType()).getId(), p.getValue()); } } 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 1184d5b17..62aad5da8 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryPathReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerQueryPathReq.java @@ -4,6 +4,7 @@ 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.proto.QueryPathReqOuterClass.QueryPathReq; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketQueryPathRsp; @@ -12,12 +13,15 @@ public class HandlerQueryPathReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - var req = QueryPathReqOuterClass.QueryPathReq.parseFrom(payload); + var req = QueryPathReq.parseFrom(payload); /** * It is not the actual work */ - session.send(new PacketQueryPathRsp(req)); + + if (req.getDestinationPosList().size() > 0) { + session.send(new PacketQueryPathRsp(req)); + } } } diff --git a/src/main/java/emu/grasscutter/tools/Tools.java b/src/main/java/emu/grasscutter/tools/Tools.java index 1a1ac2196..f6d425ee2 100644 --- a/src/main/java/emu/grasscutter/tools/Tools.java +++ b/src/main/java/emu/grasscutter/tools/Tools.java @@ -159,7 +159,9 @@ final class ToolsWithLanguageOption { for (Integer id : list) { QuestData data = GameData.getQuestDataMap().get(id); MainQuestData mainQuest = GameData.getMainQuestDataMap().get(data.getMainId()); - writer.println(data.getId() + " : " + map.get(mainQuest.getTitleTextMapHash()) + " - " + map.get(data.getDescTextMapHash())); + if (mainQuest != null) { + writer.println(data.getId() + " : " + map.get(mainQuest.getTitleTextMapHash()) + " - " + map.get(data.getDescTextMapHash())); + } } writer.println();