From 2324ae7f9ecc19509366798f2ba181056868ae48 Mon Sep 17 00:00:00 2001 From: P0nk Date: Wed, 17 Jul 2024 18:11:50 +0200 Subject: [PATCH] Refactor BanishInfo - make it a record --- src/main/java/client/Character.java | 9 +++--- .../handlers/MobBanishPlayerHandler.java | 7 +++-- .../channel/handlers/MoveLifeHandler.java | 2 +- .../channel/handlers/TakeDamageHandler.java | 2 +- src/main/java/server/life/BanishInfo.java | 9 ++++++ src/main/java/server/life/LifeFactory.java | 30 +++---------------- src/main/java/server/life/Monster.java | 1 - src/main/java/server/life/MonsterStats.java | 1 - .../tools/mapletools/MonsterStatFetcher.java | 7 +++-- 9 files changed, 29 insertions(+), 39 deletions(-) create mode 100644 src/main/java/server/life/BanishInfo.java diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 8e41772a39..9962b5c822 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -116,6 +116,7 @@ import server.events.Events; import server.events.RescueGaga; import server.events.gm.Fitness; import server.events.gm.Ola; +import server.life.BanishInfo; import server.life.MobSkill; import server.life.MobSkillFactory; import server.life.MobSkillId; @@ -1353,13 +1354,13 @@ public class Character extends AbstractCharacterObject { } } - public void changeMapBanish(int mapid, String portal, String msg) { - if (msg != null) { - dropMessage(5, msg); + public void changeMapBanish(BanishInfo banishInfo) { + if (banishInfo.msg() != null) { + dropMessage(5, banishInfo.msg()); } MapleMap map_ = getWarpMap(mapid); - Portal portal_ = map_.getPortal(portal); + Portal portal_ = map_.getPortal(banishInfo.portal()); changeMap(map_, portal_ != null ? portal_ : map_.getRandomPlayerSpawnpoint()); } diff --git a/src/main/java/net/server/channel/handlers/MobBanishPlayerHandler.java b/src/main/java/net/server/channel/handlers/MobBanishPlayerHandler.java index fe53ae11e4..1b084e59bf 100644 --- a/src/main/java/net/server/channel/handlers/MobBanishPlayerHandler.java +++ b/src/main/java/net/server/channel/handlers/MobBanishPlayerHandler.java @@ -23,7 +23,7 @@ import client.Character; import client.Client; import net.AbstractPacketHandler; import net.packet.InPacket; -import server.life.LifeFactory.BanishInfo; +import server.life.BanishInfo; import server.life.Monster; public final class MobBanishPlayerHandler extends AbstractPacketHandler { @@ -39,8 +39,9 @@ public final class MobBanishPlayerHandler extends AbstractPacketHandler { } BanishInfo banishInfo = mob.getBanish(); - if (banishInfo != null) { - chr.changeMapBanish(banishInfo.getMap(), banishInfo.getPortal(), banishInfo.getMsg()); + if (banishInfo == null) { + return; } + chr.changeMapBanish(banishInfo); } } diff --git a/src/main/java/net/server/channel/handlers/MoveLifeHandler.java b/src/main/java/net/server/channel/handlers/MoveLifeHandler.java index 34ec1daad7..fd327edfa0 100644 --- a/src/main/java/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/main/java/net/server/channel/handlers/MoveLifeHandler.java @@ -173,7 +173,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { if (banishPlayers != null) { for (Character chr : banishPlayers) { - chr.changeMapBanish(monster.getBanish().getMap(), monster.getBanish().getPortal(), monster.getBanish().getMsg()); + chr.changeMapBanish(monster.getBanish()); } } } diff --git a/src/main/java/net/server/channel/handlers/TakeDamageHandler.java b/src/main/java/net/server/channel/handlers/TakeDamageHandler.java index 234f56eb0c..5207307bfb 100644 --- a/src/main/java/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/TakeDamageHandler.java @@ -289,7 +289,7 @@ public final class TakeDamageHandler extends AbstractPacketHandler { } for (Character player : banishPlayers) { // chill, if this list ever gets non-empty an attacker does exist, trust me :) - player.changeMapBanish(attacker.getBanish().getMap(), attacker.getBanish().getPortal(), attacker.getBanish().getMsg()); + player.changeMapBanish(attacker.getBanish()); } } } diff --git a/src/main/java/server/life/BanishInfo.java b/src/main/java/server/life/BanishInfo.java new file mode 100644 index 0000000000..4f6cf388fd --- /dev/null +++ b/src/main/java/server/life/BanishInfo.java @@ -0,0 +1,9 @@ +package server.life; + +import java.util.Objects; + +public record BanishInfo(int map, String portal, String msg) { + public BanishInfo { + Objects.requireNonNull(portal, "BanishInfo portal"); + } +} diff --git a/src/main/java/server/life/LifeFactory.java b/src/main/java/server/life/LifeFactory.java index 04e6cabe2a..e280b314d3 100644 --- a/src/main/java/server/life/LifeFactory.java +++ b/src/main/java/server/life/LifeFactory.java @@ -231,7 +231,10 @@ public class LifeFactory { Data banishData = monsterInfoData.getChildByPath("ban"); if (banishData != null) { - stats.setBanishInfo(new BanishInfo(DataTool.getString("banMsg", banishData), DataTool.getInt("banMap/0/field", banishData, -1), DataTool.getString("banMap/0/portal", banishData, "sp"))); + int map = DataTool.getInt("banMap/0/field", banishData, -1); + String portal = DataTool.getString("banMap/0/portal", banishData, "sp"); + String msg = DataTool.getString("banMsg", banishData); + stats.setBanishInfo(new BanishInfo(map, portal, msg)); } int noFlip = DataTool.getInt("noFlip", monsterInfoData, 0); @@ -296,31 +299,6 @@ public class LifeFactory { return DataTool.getString(nid + "/d0", npcStringData, "(...)"); } - public static class BanishInfo { - - private final int map; - private final String portal; - private final String msg; - - public BanishInfo(String msg, int map, String portal) { - this.msg = msg; - this.map = map; - this.portal = portal; - } - - public int getMap() { - return map; - } - - public String getPortal() { - return portal; - } - - public String getMsg() { - return msg; - } - } - public static class loseItem { private final int id; diff --git a/src/main/java/server/life/Monster.java b/src/main/java/server/life/Monster.java index 71f9b66c45..ea3beb85dd 100644 --- a/src/main/java/server/life/Monster.java +++ b/src/main/java/server/life/Monster.java @@ -56,7 +56,6 @@ import org.slf4j.LoggerFactory; import scripting.event.EventInstanceManager; import server.StatEffect; import server.TimerManager; -import server.life.LifeFactory.BanishInfo; import server.loot.LootManager; import server.maps.AbstractAnimatedMapObject; import server.maps.MapObjectType; diff --git a/src/main/java/server/life/MonsterStats.java b/src/main/java/server/life/MonsterStats.java index 5c091fd76d..5d18ab8910 100644 --- a/src/main/java/server/life/MonsterStats.java +++ b/src/main/java/server/life/MonsterStats.java @@ -21,7 +21,6 @@ */ package server.life; -import server.life.LifeFactory.BanishInfo; import server.life.LifeFactory.loseItem; import server.life.LifeFactory.selfDestruction; import tools.Pair; diff --git a/src/main/java/tools/mapletools/MonsterStatFetcher.java b/src/main/java/tools/mapletools/MonsterStatFetcher.java index 38033757b8..9026e39532 100644 --- a/src/main/java/tools/mapletools/MonsterStatFetcher.java +++ b/src/main/java/tools/mapletools/MonsterStatFetcher.java @@ -8,9 +8,9 @@ import provider.DataProviderFactory; import provider.DataTool; import provider.wz.DataType; import provider.wz.WZFiles; +import server.life.BanishInfo; import server.life.Element; import server.life.ElementalEffectiveness; -import server.life.LifeFactory.BanishInfo; import server.life.LifeFactory.loseItem; import server.life.LifeFactory.selfDestruction; import server.life.MobSkillId; @@ -134,7 +134,10 @@ public class MonsterStatFetcher { } Data banishData = monsterInfoData.getChildByPath("ban"); if (banishData != null) { - stats.setBanishInfo(new BanishInfo(DataTool.getString("banMsg", banishData), DataTool.getInt("banMap/0/field", banishData, -1), DataTool.getString("banMap/0/portal", banishData, "sp"))); + int map = DataTool.getInt("banMap/0/field", banishData, -1); + String portal = DataTool.getString("banMap/0/portal", banishData, "sp"); + String msg = DataTool.getString("banMsg", banishData); + stats.setBanishInfo(new BanishInfo(map, portal, msg)); } monsterStats.put(mid, stats);