From aef227ea6c9d1b793266e6a69103bf6d7cb169e8 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 23 Aug 2019 11:44:27 +0000 Subject: [PATCH] Updated StatsSet to match newer branches. --- .../game/data/scripts/ai/bosses/Antharas.java | 26 +- .../game/data/scripts/ai/bosses/Baium.java | 14 +- .../game/data/scripts/ai/bosses/Core.java | 2 +- .../data/scripts/ai/bosses/Frintezza.java | 2 +- .../game/data/scripts/ai/bosses/Orfen.java | 6 +- .../game/data/scripts/ai/bosses/QueenAnt.java | 6 +- .../game/data/scripts/ai/bosses/Valakas.java | 6 +- .../data/scripts/ai/bosses/VanHalter.java | 2 +- .../game/data/scripts/ai/bosses/Zaken.java | 14 +- .../Q211_TrialOfTheChallenger.java | 2 +- .../Q212_TrialOfDuty/Q212_TrialOfDuty.java | 2 +- .../Q213_TrialOfTheSeeker.java | 2 +- .../Q214_TrialOfTheScholar.java | 2 +- .../Q215_TrialOfThePilgrim.java | 2 +- .../Q216_TrialOfTheGuildsman.java | 2 +- .../Q217_TestimonyOfTrust.java | 2 +- .../Q218_TestimonyOfLife.java | 2 +- .../Q219_TestimonyOfFate.java | 2 +- .../Q220_TestimonyOfGlory.java | 2 +- .../Q221_TestimonyOfProsperity.java | 2 +- .../Q222_TestOfTheDuelist.java | 2 +- .../Q223_TestOfTheChampion.java | 2 +- .../Q224_TestOfSagittarius.java | 2 +- .../Q225_TestOfTheSearcher.java | 2 +- .../Q226_TestOfTheHealer.java | 2 +- .../Q227_TestOfTheReformer.java | 2 +- .../Q228_TestOfMagus/Q228_TestOfMagus.java | 2 +- .../Q229_TestOfWitchcraft.java | 2 +- .../Q230_TestOfTheSummoner.java | 2 +- .../Q231_TestOfTheMaestro.java | 2 +- .../Q232_TestOfTheLord.java | 2 +- .../Q233_TestOfTheWarSpirit.java | 2 +- .../org/l2jmobius/commons/util/TimeUtil.java | 125 +++ .../org/l2jmobius/gameserver/GameServer.java | 8 +- .../gameserver/datatables/csv/DoorTable.java | 2 +- .../gameserver/datatables/csv/HennaTable.java | 2 +- .../datatables/sql/CharTemplateTable.java | 2 +- .../datatables/sql/HelperBuffTable.java | 2 +- .../gameserver/datatables/sql/NpcTable.java | 6 +- .../gameserver/engines/DocumentBase.java | 2 +- .../gameserver/engines/DocumentItem.java | 4 +- .../gameserver/engines/DocumentSkill.java | 2 +- .../gameserver/engines/ItemDataHolder.java | 2 +- .../gameserver/engines/SkillDataHolder.java | 2 +- .../instancemanager/BoatManager.java | 2 +- .../instancemanager/DatatablesManager.java | 8 +- .../GlobalVariablesManager.java | 22 +- .../instancemanager/GrandBossManager.java | 2 +- .../instancemanager/PetitionManager.java | 4 +- .../instancemanager/RaidBossSpawnManager.java | 8 +- .../gameserver/model/ChanceCondition.java | 3 +- .../gameserver/model/NpcWalkerNode.java | 12 +- .../org/l2jmobius/gameserver/model/Skill.java | 127 ++- .../l2jmobius/gameserver/model/StatsSet.java | 978 ++++++++++++++++++ .../gameserver/model/actor/Creature.java | 2 +- .../actor/instance/FestivalGuideInstance.java | 8 +- .../model/actor/instance/PlayerInstance.java | 26 +- .../gameserver/model/entity/Hero.java | 18 +- .../model/entity/olympiad/Olympiad.java | 50 +- .../model/entity/olympiad/OlympiadGame.java | 22 +- .../model/entity/sevensigns/SevenSigns.java | 40 +- .../entity/sevensigns/SevenSignsFestival.java | 18 +- .../model/interfaces/IDeletable.java | 25 + .../model/interfaces/IParserAdvUtils.java | 48 + .../model/interfaces/IParserUtils.java | 47 + .../model/variables/AbstractVariables.java | 36 +- .../model/variables/AccountVariables.java | 23 + .../model/variables/PlayerVariables.java | 23 + .../network/clientpackets/EnterWorld.java | 17 +- .../clientpackets/RequestBypassToServer.java | 4 +- .../clientpackets/RequestDropItem.java | 4 +- .../network/clientpackets/RequestGmList.java | 4 +- .../clientpackets/RequestPetition.java | 4 +- .../clientpackets/RequestPetitionCancel.java | 4 +- .../clientpackets/SendBypassBuildCmd.java | 4 +- .../gameserver/network/serverpackets/Die.java | 4 +- .../network/serverpackets/ExHeroList.java | 10 +- .../network/serverpackets/SSQStatus.java | 2 +- .../skills/handlers/SkillCharge.java | 2 +- .../skills/handlers/SkillChargeDmg.java | 4 +- .../skills/handlers/SkillChargeEffect.java | 4 +- .../skills/handlers/SkillCreateItem.java | 16 +- .../skills/handlers/SkillDefault.java | 2 +- .../skills/handlers/SkillDrain.java | 4 +- .../skills/handlers/SkillElemental.java | 10 +- .../gameserver/skills/handlers/SkillSeed.java | 2 +- .../skills/handlers/SkillSignet.java | 6 +- .../skills/handlers/SkillSignetCasttime.java | 6 +- .../skills/handlers/SkillSummon.java | 24 +- .../gameserver/templates/HelperBuff.java | 10 +- .../gameserver/templates/StatsSet.java | 641 ------------ .../templates/creatures/CreatureTemplate.java | 110 +- .../templates/creatures/NpcTemplate.java | 26 +- .../templates/creatures/PlayerTemplate.java | 18 +- .../gameserver/templates/item/Armor.java | 16 +- .../gameserver/templates/item/EtcItem.java | 2 +- .../gameserver/templates/item/Henna.java | 22 +- .../gameserver/templates/item/Item.java | 28 +- .../gameserver/templates/item/Weapon.java | 44 +- .../gameserver/util/IllegalPlayerAction.java | 32 +- .../org/l2jmobius/gameserver/util/Util.java | 61 +- .../l2jmobius/telnet/GameStatusThread.java | 21 +- .../org/l2jmobius/commons/util/TimeUtil.java | 125 +++ .../GlobalVariablesManager.java | 22 +- .../l2jmobius/gameserver/model/StatsSet.java | 211 +++- .../model/interfaces/IParserAdvUtils.java | 4 + .../model/interfaces/IParserUtils.java | 4 + .../model/variables/AbstractVariables.java | 49 +- .../model/variables/AccountVariables.java | 23 + .../model/variables/NpcVariables.java | 6 + .../model/variables/PlayerVariables.java | 23 + 111 files changed, 2271 insertions(+), 1199 deletions(-) create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/TimeUtil.java create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/StatsSet.java create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IDeletable.java create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java create mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java delete mode 100644 L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/StatsSet.java create mode 100644 L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/util/TimeUtil.java diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java index 1ba619a1a8..f827ce6358 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Antharas.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; @@ -46,7 +47,6 @@ import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; /** @@ -259,12 +259,12 @@ public class Antharas extends Quest } else if (status == FIGHTING) { - final int loc_x = info.getInteger("loc_x"); - final int loc_y = info.getInteger("loc_y"); - final int loc_z = info.getInteger("loc_z"); - final int heading = info.getInteger("heading"); - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int loc_x = info.getInt("loc_x"); + final int loc_y = info.getInt("loc_y"); + final int loc_z = info.getInt("loc_z"); + final int heading = info.getInt("heading"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); _antharas = (GrandBossInstance) addSpawn(ANTHARASOLDID, loc_x, loc_y, loc_z, heading, false, 0); GrandBossManager.getInstance().addBoss(_antharas); _antharas.setCurrentHpMp(hp, mp); @@ -312,12 +312,12 @@ public class Antharas extends Quest if ((antharasId != 0) && (status == FIGHTING)) { final StatsSet info = GrandBossManager.getInstance().getStatsSet(antharasId); - final int loc_x = info.getInteger("loc_x"); - final int loc_y = info.getInteger("loc_y"); - final int loc_z = info.getInteger("loc_z"); - final int heading = info.getInteger("heading"); - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int loc_x = info.getInt("loc_x"); + final int loc_y = info.getInt("loc_y"); + final int loc_z = info.getInt("loc_z"); + final int heading = info.getInt("heading"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); _antharas = (GrandBossInstance) addSpawn(antharasId, loc_x, loc_y, loc_z, heading, false, 0); GrandBossManager.getInstance().addBoss(_antharas); _antharas.setCurrentHpMp(hp, mp); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java index 7590bb748b..2b6a479cc8 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java @@ -33,6 +33,7 @@ import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; @@ -48,7 +49,6 @@ import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.util.Util; /** @@ -139,12 +139,12 @@ public class Baium extends Quest } else if (status == AWAKE) { - final int loc_x = info.getInteger("loc_x"); - final int loc_y = info.getInteger("loc_y"); - final int loc_z = info.getInteger("loc_z"); - final int heading = info.getInteger("heading"); - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int loc_x = info.getInt("loc_x"); + final int loc_y = info.getInt("loc_y"); + final int loc_z = info.getInt("loc_z"); + final int heading = info.getInt("heading"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); final GrandBossInstance baium = (GrandBossInstance) addSpawn(LIVE_BAIUM, loc_x, loc_y, loc_z, heading, false, 0); if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) { diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java index 376bd30800..bfb965b79c 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java @@ -26,6 +26,7 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Attackable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -34,7 +35,6 @@ import org.l2jmobius.gameserver.model.entity.Announcements; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.templates.StatsSet; /** * Core AI diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Frintezza.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Frintezza.java index 750bfb2a3a..48d6810431 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Frintezza.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Frintezza.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Attackable; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; @@ -47,7 +48,6 @@ import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; /** * Frintezza AI diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java index 26261394af..bee28c6d3a 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java @@ -21,13 +21,13 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.entity.Announcements; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.templates.StatsSet; /** * @author Shyla @@ -94,8 +94,8 @@ public class Orfen extends Quest final int loc_y = 17368; final int loc_z = -5412; final int heading = 0; - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); _orfen = (GrandBossInstance) addSpawn(ORFEN, loc_x, loc_y, loc_z, heading, false, 0); if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) { diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java index aa34dd4a4a..c10b58bd74 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java @@ -24,6 +24,7 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Attackable; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; @@ -34,7 +35,6 @@ import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.zone.type.BossZone; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; -import org.l2jmobius.gameserver.templates.StatsSet; public class QueenAnt extends Quest { @@ -121,8 +121,8 @@ public class QueenAnt extends Quest /* * int loc_x = info.getInteger("loc_x"); int loc_y = info.getInteger("loc_y"); int loc_z = info.getInteger("loc_z"); int heading = info.getInteger("heading"); */ - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); final GrandBossInstance queen = (GrandBossInstance) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) { diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java index 3fb33f8500..0516e23b0f 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Valakas.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; @@ -40,7 +41,6 @@ import org.l2jmobius.gameserver.model.zone.type.BossZone; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.SocialAction; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.util.Util; /** @@ -122,8 +122,8 @@ public class Valakas extends Quest final int loc_z = -1595; final int heading = 0; - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); final GrandBossInstance valakas = (GrandBossInstance) addSpawn(VALAKAS, loc_x, loc_y, loc_z, heading, false, 0); GrandBossManager.getInstance().addBoss(valakas); final NpcInstance _valakas = valakas; diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java index cb1e1f776c..3b40097487 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java @@ -41,6 +41,7 @@ import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -49,7 +50,6 @@ import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.spawn.Spawn; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.SpecialCamera; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; /** diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java index 15564b5ca7..ad75be13a8 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Zaken.java @@ -28,6 +28,7 @@ import org.l2jmobius.gameserver.datatables.csv.DoorTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Attackable; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; @@ -36,7 +37,6 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.zone.type.BossZone; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; -import org.l2jmobius.gameserver.templates.StatsSet; /** * Zaken AI @@ -185,12 +185,12 @@ public class Zaken extends Quest } else { - final int loc_x = info.getInteger("loc_x"); - final int loc_y = info.getInteger("loc_y"); - final int loc_z = info.getInteger("loc_z"); - final int heading = info.getInteger("heading"); - final int hp = info.getInteger("currentHP"); - final int mp = info.getInteger("currentMP"); + final int loc_x = info.getInt("loc_x"); + final int loc_y = info.getInt("loc_y"); + final int loc_z = info.getInt("loc_z"); + final int heading = info.getInt("heading"); + final int hp = info.getInt("currentHP"); + final int mp = info.getInt("currentMP"); final GrandBossInstance zaken = (GrandBossInstance) addSpawn(ZAKEN, loc_x, loc_y, loc_z, heading, false, 0); zaken.setCurrentHpMp(hp, mp); spawnBoss(zaken); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q211_TrialOfTheChallenger/Q211_TrialOfTheChallenger.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q211_TrialOfTheChallenger/Q211_TrialOfTheChallenger.java index 5097f0b2da..448fc7f544 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q211_TrialOfTheChallenger/Q211_TrialOfTheChallenger.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q211_TrialOfTheChallenger/Q211_TrialOfTheChallenger.java @@ -89,7 +89,7 @@ public class Q211_TrialOfTheChallenger extends Quest st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); - if (!player.getVariables().getBool("secondClassChange35", false)) + if (!player.getVariables().getBoolean("secondClassChange35", false)) { htmltext = "30644-05a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q212_TrialOfDuty/Q212_TrialOfDuty.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q212_TrialOfDuty/Q212_TrialOfDuty.java index 14c3a5bf78..e82ae71114 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q212_TrialOfDuty/Q212_TrialOfDuty.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q212_TrialOfDuty/Q212_TrialOfDuty.java @@ -85,7 +85,7 @@ public class Q212_TrialOfDuty extends Quest st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); - if (!player.getVariables().getBool("secondClassChange35", false)) + if (!player.getVariables().getBoolean("secondClassChange35", false)) { htmltext = "30109-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q213_TrialOfTheSeeker/Q213_TrialOfTheSeeker.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q213_TrialOfTheSeeker/Q213_TrialOfTheSeeker.java index 3b3ad6d6fb..d1826119a2 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q213_TrialOfTheSeeker/Q213_TrialOfTheSeeker.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q213_TrialOfTheSeeker/Q213_TrialOfTheSeeker.java @@ -107,7 +107,7 @@ public class Q213_TrialOfTheSeeker extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(DUFNER_LETTER, 1); - if (!player.getVariables().getBool("secondClassChange35", false)) + if (!player.getVariables().getBoolean("secondClassChange35", false)) { htmltext = "30106-05a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q214_TrialOfTheScholar/Q214_TrialOfTheScholar.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q214_TrialOfTheScholar/Q214_TrialOfTheScholar.java index 8b30893180..5f9ff0433c 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q214_TrialOfTheScholar/Q214_TrialOfTheScholar.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q214_TrialOfTheScholar/Q214_TrialOfTheScholar.java @@ -135,7 +135,7 @@ public class Q214_TrialOfTheScholar extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(MIRIEN_SIGIL_1, 1); - if (!player.getVariables().getBool("secondClassChange35", false)) + if (!player.getVariables().getBoolean("secondClassChange35", false)) { htmltext = "30461-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q215_TrialOfThePilgrim/Q215_TrialOfThePilgrim.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q215_TrialOfThePilgrim/Q215_TrialOfThePilgrim.java index 2f23bb0df1..729a08acde 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q215_TrialOfThePilgrim/Q215_TrialOfThePilgrim.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q215_TrialOfThePilgrim/Q215_TrialOfThePilgrim.java @@ -93,7 +93,7 @@ public class Q215_TrialOfThePilgrim extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(VOUCHER_OF_TRIAL, 1); - if (!player.getVariables().getBool("secondClassChange35", false)) + if (!player.getVariables().getBoolean("secondClassChange35", false)) { htmltext = "30648-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q216_TrialOfTheGuildsman/Q216_TrialOfTheGuildsman.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q216_TrialOfTheGuildsman/Q216_TrialOfTheGuildsman.java index b33f58f994..3cb636404d 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q216_TrialOfTheGuildsman/Q216_TrialOfTheGuildsman.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q216_TrialOfTheGuildsman/Q216_TrialOfTheGuildsman.java @@ -110,7 +110,7 @@ public class Q216_TrialOfTheGuildsman extends Quest st.takeItems(57, 2000); st.giveItems(VALKON_RECOMMENDATION, 1); - if (!player.getVariables().getBool("secondClassChange35", false)) + if (!player.getVariables().getBoolean("secondClassChange35", false)) { htmltext = "30103-06d.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_35.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q217_TestimonyOfTrust/Q217_TestimonyOfTrust.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q217_TestimonyOfTrust/Q217_TestimonyOfTrust.java index 104e606010..a8510100b5 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q217_TestimonyOfTrust/Q217_TestimonyOfTrust.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q217_TestimonyOfTrust/Q217_TestimonyOfTrust.java @@ -123,7 +123,7 @@ public class Q217_TestimonyOfTrust extends Quest st.giveItems(LETTER_TO_ELF, 1); st.giveItems(LETTER_TO_DARK_ELF, 1); - if (!player.getVariables().getBool("secondClassChange37", false)) + if (!player.getVariables().getBoolean("secondClassChange37", false)) { htmltext = "30191-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q218_TestimonyOfLife/Q218_TestimonyOfLife.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q218_TestimonyOfLife/Q218_TestimonyOfLife.java index 1e53204b71..1eb5309a67 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q218_TestimonyOfLife/Q218_TestimonyOfLife.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q218_TestimonyOfLife/Q218_TestimonyOfLife.java @@ -108,7 +108,7 @@ public class Q218_TestimonyOfLife extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(CARDIEN_LETTER, 1); - if (!player.getVariables().getBool("secondClassChange37", false)) + if (!player.getVariables().getBoolean("secondClassChange37", false)) { htmltext = "30460-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q219_TestimonyOfFate/Q219_TestimonyOfFate.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q219_TestimonyOfFate/Q219_TestimonyOfFate.java index 599ca5eaa4..721f2553bc 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q219_TestimonyOfFate/Q219_TestimonyOfFate.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q219_TestimonyOfFate/Q219_TestimonyOfFate.java @@ -138,7 +138,7 @@ public class Q219_TestimonyOfFate extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(KAIRA_LETTER, 1); - if (!player.getVariables().getBool("secondClassChange37", false)) + if (!player.getVariables().getBoolean("secondClassChange37", false)) { htmltext = "30476-05a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q220_TestimonyOfGlory/Q220_TestimonyOfGlory.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q220_TestimonyOfGlory/Q220_TestimonyOfGlory.java index 5117cc1474..d394fa394b 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q220_TestimonyOfGlory/Q220_TestimonyOfGlory.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q220_TestimonyOfGlory/Q220_TestimonyOfGlory.java @@ -136,7 +136,7 @@ public class Q220_TestimonyOfGlory extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(VOKIAN_ORDER_1, 1); - if (!player.getVariables().getBool("secondClassChange37", false)) + if (!player.getVariables().getBoolean("secondClassChange37", false)) { htmltext = "30514-05a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q221_TestimonyOfProsperity/Q221_TestimonyOfProsperity.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q221_TestimonyOfProsperity/Q221_TestimonyOfProsperity.java index f387432838..a6ee2269a4 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q221_TestimonyOfProsperity/Q221_TestimonyOfProsperity.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q221_TestimonyOfProsperity/Q221_TestimonyOfProsperity.java @@ -140,7 +140,7 @@ public class Q221_TestimonyOfProsperity extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(RING_OF_TESTIMONY_1, 1); - if (!player.getVariables().getBool("secondClassChange37", false)) + if (!player.getVariables().getBoolean("secondClassChange37", false)) { htmltext = "30104-04e.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_37.get(player.getRace().ordinal())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q222_TestOfTheDuelist/Q222_TestOfTheDuelist.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q222_TestOfTheDuelist/Q222_TestOfTheDuelist.java index bb58a201a0..101646c604 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q222_TestOfTheDuelist/Q222_TestOfTheDuelist.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q222_TestOfTheDuelist/Q222_TestOfTheDuelist.java @@ -114,7 +114,7 @@ public class Q222_TestOfTheDuelist extends Quest st.giveItems(ORDER_OREN, 1); st.giveItems(ORDER_ADEN, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30623-07a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q223_TestOfTheChampion/Q223_TestOfTheChampion.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q223_TestOfTheChampion/Q223_TestOfTheChampion.java index a91bf696c4..92d146a7e4 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q223_TestOfTheChampion/Q223_TestOfTheChampion.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q223_TestOfTheChampion/Q223_TestOfTheChampion.java @@ -103,7 +103,7 @@ public class Q223_TestOfTheChampion extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(ASCALON_LETTER_1, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30624-06a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q224_TestOfSagittarius/Q224_TestOfSagittarius.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q224_TestOfSagittarius/Q224_TestOfSagittarius.java index 2b10dfd522..8b4f061d20 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q224_TestOfSagittarius/Q224_TestOfSagittarius.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q224_TestOfSagittarius/Q224_TestOfSagittarius.java @@ -112,7 +112,7 @@ public class Q224_TestOfSagittarius extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(BERNARD_INTRODUCTION, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30702-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q225_TestOfTheSearcher/Q225_TestOfTheSearcher.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q225_TestOfTheSearcher/Q225_TestOfTheSearcher.java index c1d502198d..9b9a36fd27 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q225_TestOfTheSearcher/Q225_TestOfTheSearcher.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q225_TestOfTheSearcher/Q225_TestOfTheSearcher.java @@ -108,7 +108,7 @@ public class Q225_TestOfTheSearcher extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(LUTHER_LETTER, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30690-05a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q226_TestOfTheHealer/Q226_TestOfTheHealer.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q226_TestOfTheHealer/Q226_TestOfTheHealer.java index 970e071578..e4496f348e 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q226_TestOfTheHealer/Q226_TestOfTheHealer.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q226_TestOfTheHealer/Q226_TestOfTheHealer.java @@ -99,7 +99,7 @@ public class Q226_TestOfTheHealer extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(REPORT_OF_PERRIN, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30473-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q227_TestOfTheReformer/Q227_TestOfTheReformer.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q227_TestOfTheReformer/Q227_TestOfTheReformer.java index e8e90cdfed..1dbbcbc680 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q227_TestOfTheReformer/Q227_TestOfTheReformer.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q227_TestOfTheReformer/Q227_TestOfTheReformer.java @@ -122,7 +122,7 @@ public class Q227_TestOfTheReformer extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(BOOK_OF_REFORM, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30118-04b.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q228_TestOfMagus/Q228_TestOfMagus.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q228_TestOfMagus/Q228_TestOfMagus.java index 6dde6d5515..a2003f7476 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q228_TestOfMagus/Q228_TestOfMagus.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q228_TestOfMagus/Q228_TestOfMagus.java @@ -111,7 +111,7 @@ public class Q228_TestOfMagus extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(RUKAL_LETTER, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30629-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q229_TestOfWitchcraft/Q229_TestOfWitchcraft.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q229_TestOfWitchcraft/Q229_TestOfWitchcraft.java index d49fea9d1e..01b1476311 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q229_TestOfWitchcraft/Q229_TestOfWitchcraft.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q229_TestOfWitchcraft/Q229_TestOfWitchcraft.java @@ -125,7 +125,7 @@ public class Q229_TestOfWitchcraft extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(ORIM_DIAGRAM, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30630-08a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q230_TestOfTheSummoner/Q230_TestOfTheSummoner.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q230_TestOfTheSummoner/Q230_TestOfTheSummoner.java index b1fd601ae7..17567ad31c 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q230_TestOfTheSummoner/Q230_TestOfTheSummoner.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q230_TestOfTheSummoner/Q230_TestOfTheSummoner.java @@ -202,7 +202,7 @@ public class Q230_TestOfTheSummoner extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(GALATEA_LETTER, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30634-08a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q231_TestOfTheMaestro/Q231_TestOfTheMaestro.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q231_TestOfTheMaestro/Q231_TestOfTheMaestro.java index 02834fe199..01440faf8a 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q231_TestOfTheMaestro/Q231_TestOfTheMaestro.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q231_TestOfTheMaestro/Q231_TestOfTheMaestro.java @@ -96,7 +96,7 @@ public class Q231_TestOfTheMaestro extends Quest st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30531-04a.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q232_TestOfTheLord/Q232_TestOfTheLord.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q232_TestOfTheLord/Q232_TestOfTheLord.java index 1755dbf714..3bce208e02 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q232_TestOfTheLord/Q232_TestOfTheLord.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q232_TestOfTheLord/Q232_TestOfTheLord.java @@ -105,7 +105,7 @@ public class Q232_TestOfTheLord extends Quest st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(ORDEAL_NECKLACE, 1); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30565-05b.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q233_TestOfTheWarSpirit/Q233_TestOfTheWarSpirit.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q233_TestOfTheWarSpirit/Q233_TestOfTheWarSpirit.java index 4baa5133b8..a858161e23 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q233_TestOfTheWarSpirit/Q233_TestOfTheWarSpirit.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/quests/Q233_TestOfTheWarSpirit/Q233_TestOfTheWarSpirit.java @@ -120,7 +120,7 @@ public class Q233_TestOfTheWarSpirit extends Quest st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); - if (!player.getVariables().getBool("secondClassChange39", false)) + if (!player.getVariables().getBoolean("secondClassChange39", false)) { htmltext = "30510-05e.htm"; st.giveItems(DIMENSIONAL_DIAMOND, DF_REWARD_39.get(player.getClassId().getId())); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/TimeUtil.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/TimeUtil.java new file mode 100644 index 0000000000..031ebb5363 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/commons/util/TimeUtil.java @@ -0,0 +1,125 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; + +/** + * @author UnAfraid + */ +public class TimeUtil +{ + private static int findIndexOfNonDigit(CharSequence text) + { + for (int i = 0; i < text.length(); i++) + { + if (Character.isDigit(text.charAt(i))) + { + continue; + } + return i; + } + return -1; + } + + /** + * Parses patterns like: + * + * @param datePattern + * @return {@link Duration} object converted by the date pattern specified. + * @throws IllegalStateException when malformed pattern specified. + */ + public static Duration parseDuration(String datePattern) + { + final int index = findIndexOfNonDigit(datePattern); + if (index == -1) + { + throw new IllegalStateException("Incorrect time format given: " + datePattern); + } + try + { + final int val = Integer.parseInt(datePattern.substring(0, index)); + final String type = datePattern.substring(index); + final ChronoUnit unit; + switch (type.toLowerCase()) + { + case "sec": + case "secs": + { + unit = ChronoUnit.SECONDS; + break; + } + case "min": + case "mins": + { + unit = ChronoUnit.MINUTES; + break; + } + case "hour": + case "hours": + { + unit = ChronoUnit.HOURS; + break; + } + case "day": + case "days": + { + unit = ChronoUnit.DAYS; + break; + } + case "week": + case "weeks": + { + unit = ChronoUnit.WEEKS; + break; + } + case "month": + case "months": + { + unit = ChronoUnit.MONTHS; + break; + } + case "year": + case "years": + { + unit = ChronoUnit.YEARS; + break; + } + default: + { + unit = ChronoUnit.valueOf(type); + if (unit == null) + { + throw new IllegalStateException("Incorrect format: " + type + " !!"); + } + } + } + return Duration.of(val, unit); + } + catch (Exception e) + { + throw new IllegalStateException("Incorrect time format given: " + datePattern + " val: " + datePattern.substring(0, index)); + } + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java index a668e292e5..a4086507d3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/GameServer.java @@ -41,7 +41,6 @@ import org.l2jmobius.gameserver.cache.CrestCache; import org.l2jmobius.gameserver.cache.HtmCache; import org.l2jmobius.gameserver.communitybbs.Manager.ForumsBBSManager; import org.l2jmobius.gameserver.datatables.BufferTable; -import org.l2jmobius.gameserver.datatables.GmListTable; import org.l2jmobius.gameserver.datatables.HeroSkillTable; import org.l2jmobius.gameserver.datatables.NobleSkillTable; import org.l2jmobius.gameserver.datatables.OfflineTradeTable; @@ -55,8 +54,6 @@ import org.l2jmobius.gameserver.datatables.csv.NpcWalkerRoutesTable; import org.l2jmobius.gameserver.datatables.csv.RecipeTable; import org.l2jmobius.gameserver.datatables.csv.StaticObjects; import org.l2jmobius.gameserver.datatables.csv.SummonItemsData; -import org.l2jmobius.gameserver.datatables.sql.AccessLevels; -import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights; import org.l2jmobius.gameserver.datatables.sql.ArmorSetsTable; import org.l2jmobius.gameserver.datatables.sql.CharNameTable; import org.l2jmobius.gameserver.datatables.sql.CharTemplateTable; @@ -71,6 +68,7 @@ import org.l2jmobius.gameserver.datatables.sql.SkillSpellbookTable; import org.l2jmobius.gameserver.datatables.sql.SkillTreeTable; import org.l2jmobius.gameserver.datatables.sql.SpawnTable; import org.l2jmobius.gameserver.datatables.sql.TeleportLocationTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.datatables.xml.AugmentationData; import org.l2jmobius.gameserver.datatables.xml.ExperienceData; import org.l2jmobius.gameserver.datatables.xml.FenceData; @@ -387,9 +385,7 @@ public class GameServer Hero.getInstance(); Util.printSection("Access Levels"); - AccessLevels.getInstance(); - AdminCommandAccessRights.getInstance(); - GmListTable.getInstance(); + AdminData.getInstance(); Util.printSection("Handlers"); ItemHandler.getInstance(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/DoorTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/DoorTable.java index 67340022bc..db33567bff 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/DoorTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/DoorTable.java @@ -31,9 +31,9 @@ import org.l2jmobius.Config; import org.l2jmobius.gameserver.idfactory.IdFactory; import org.l2jmobius.gameserver.instancemanager.ClanHallManager; import org.l2jmobius.gameserver.model.Location; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.DoorInstance; import org.l2jmobius.gameserver.model.entity.ClanHall; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.CreatureTemplate; public class DoorTable diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/HennaTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/HennaTable.java index 1ff7ace91a..44b6431d29 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/HennaTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/csv/HennaTable.java @@ -28,7 +28,7 @@ import java.util.StringTokenizer; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.templates.item.Henna; /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/CharTemplateTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/CharTemplateTable.java index bdeb3f55be..cc69674b3f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/CharTemplateTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/CharTemplateTable.java @@ -25,8 +25,8 @@ import java.util.Map; import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.base.ClassId; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.PlayerTemplate; /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/HelperBuffTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/HelperBuffTable.java index 9ecb9ad098..117303f09c 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/HelperBuffTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/HelperBuffTable.java @@ -25,8 +25,8 @@ import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.datatables.csv.HennaTable; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.templates.HelperBuff; -import org.l2jmobius.gameserver.templates.StatsSet; /** * This class represents the Newbie Helper Buff list. Author: Ayor diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/NpcTable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/NpcTable.java index 293156dc64..7a3a9194ec 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/NpcTable.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/sql/NpcTable.java @@ -33,10 +33,10 @@ import org.l2jmobius.gameserver.model.DropCategory; import org.l2jmobius.gameserver.model.DropData; import org.l2jmobius.gameserver.model.MinionData; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.base.ClassId; import org.l2jmobius.gameserver.skills.BaseStats; import org.l2jmobius.gameserver.skills.Stats; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; /** @@ -623,7 +623,7 @@ public class NpcTable String name = ""; String values = ""; - final NpcTemplate old = getTemplate(npc.getInteger("npcId")); + final NpcTemplate old = getTemplate(npc.getInt("npcId")); for (Object obj : set.keySet()) { @@ -649,7 +649,7 @@ public class NpcTable { statement = con.prepareStatement("UPDATE npc SET " + values + " WHERE id = ?"); } - statement.setInt(1, npc.getInteger("npcId")); + statement.setInt(1, npc.getInt("npcId")); statement.execute(); statement.close(); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentBase.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentBase.java index 3f5c99f8e4..cfbe8dba81 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentBase.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentBase.java @@ -34,6 +34,7 @@ import org.l2jmobius.Config; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillType; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.base.Race; import org.l2jmobius.gameserver.skills.Env; @@ -71,7 +72,6 @@ import org.l2jmobius.gameserver.skills.funcs.Lambda; import org.l2jmobius.gameserver.skills.funcs.LambdaCalc; import org.l2jmobius.gameserver.skills.funcs.LambdaConst; import org.l2jmobius.gameserver.skills.funcs.LambdaStats; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.item.ArmorType; import org.l2jmobius.gameserver.templates.item.Item; import org.l2jmobius.gameserver.templates.item.Weapon; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentItem.java index c37f8bf16e..1f1bf2d2d5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentItem.java @@ -26,7 +26,7 @@ import java.util.logging.Level; import org.w3c.dom.Document; import org.w3c.dom.Node; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.templates.item.Armor; import org.l2jmobius.gameserver.templates.item.ArmorType; import org.l2jmobius.gameserver.templates.item.EtcItem; @@ -408,7 +408,7 @@ final class DocumentItem extends DocumentBase } else { - throw new Error("Unknown item type for " + _currentItem.set.getInteger("item_id") + " " + _currentItem.type); + throw new Error("Unknown item type for " + _currentItem.set.getInt("item_id") + " " + _currentItem.type); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentSkill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentSkill.java index 52ec4a141d..2f892ca2eb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentSkill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/DocumentSkill.java @@ -26,8 +26,8 @@ import org.w3c.dom.Node; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillType; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.skills.conditions.Condition; -import org.l2jmobius.gameserver.templates.StatsSet; /** * @author mkizub diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/ItemDataHolder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/ItemDataHolder.java index ef6eace0d6..1a6e6994da 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/ItemDataHolder.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/ItemDataHolder.java @@ -16,7 +16,7 @@ */ package org.l2jmobius.gameserver.engines; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.templates.item.Item; /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/SkillDataHolder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/SkillDataHolder.java index 08895e463c..08abbe51c8 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/SkillDataHolder.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/engines/SkillDataHolder.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.gameserver.model.Skill; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; /** * @author Mobius diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/BoatManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/BoatManager.java index c0d69faa9a..a3145d564e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/BoatManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/BoatManager.java @@ -28,8 +28,8 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.idfactory.IdFactory; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.BoatInstance; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.CreatureTemplate; public class BoatManager diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DatatablesManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DatatablesManager.java index c2683cfd77..4676049abd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DatatablesManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/DatatablesManager.java @@ -16,11 +16,9 @@ */ package org.l2jmobius.gameserver.instancemanager; -import org.l2jmobius.gameserver.datatables.GmListTable; -import org.l2jmobius.gameserver.datatables.sql.AccessLevels; -import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights; import org.l2jmobius.gameserver.datatables.sql.ClanTable; import org.l2jmobius.gameserver.datatables.sql.HelperBuffTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.datatables.xml.AugmentationData; import org.l2jmobius.gameserver.datatables.xml.ExperienceData; @@ -28,9 +26,7 @@ public class DatatablesManager { public static void reloadAll() { - AccessLevels.reload(); - AdminCommandAccessRights.reload(); - GmListTable.reload(); + AdminData.getInstance().load(); AugmentationData.reload(); ClanTable.reload(); HelperBuffTable.reload(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java index c9175e1a3d..50a4f21226 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java @@ -61,14 +61,14 @@ public class GlobalVariablesManager extends AbstractVariables } catch (SQLException e) { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore global variables"); + LOGGER.warning(getClass().getSimpleName() + ": Couldn't restore global variables."); return false; } finally { compareAndSetChanges(true, false); } - LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + getSet().size() + " variables."); + LOGGER.info(getClass().getSimpleName() + ": Loaded " + getSet().size() + " variables."); return true; } @@ -106,7 +106,23 @@ public class GlobalVariablesManager extends AbstractVariables { compareAndSetChanges(true, false); } - LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Stored " + getSet().size() + " variables."); + LOGGER.info(getClass().getSimpleName() + ": Stored " + getSet().size() + " variables."); + return true; + } + + @Override + public boolean deleteMe() + { + try (Connection con = DatabaseFactory.getConnection(); + Statement del = con.createStatement()) + { + del.execute(DELETE_QUERY); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete global variables to database.", e); + return false; + } return true; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GrandBossManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GrandBossManager.java index ca3dfc099e..ef05110afa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GrandBossManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/GrandBossManager.java @@ -29,11 +29,11 @@ import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.datatables.sql.NpcTable; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.GrandBossInstance; import org.l2jmobius.gameserver.model.zone.type.BossZone; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java index 13b968c96c..0c4ea08a10 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/PetitionManager.java @@ -25,7 +25,7 @@ import java.util.Map; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.GmListTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.idfactory.IdFactory; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -592,7 +592,7 @@ public class PetitionManager // Notify all GMs that a new petition has been submitted. String msgContent = petitioner.getName() + " has submitted a new petition."; // (ID: " + newPetitionId + ")."; - GmListTable.broadcastToGMs(new CreatureSay(petitioner.getObjectId(), 17, "Petition System", msgContent)); + AdminData.broadcastToGMs(new CreatureSay(petitioner.getObjectId(), 17, "Petition System", msgContent)); return newPetitionId; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java index e3a86c5e78..ba3733bdbd 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java @@ -31,15 +31,15 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.datatables.GmListTable; import org.l2jmobius.gameserver.datatables.sql.NpcTable; import org.l2jmobius.gameserver.datatables.sql.SpawnTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.enums.RaidBossStatus; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.RaidBossInstance; import org.l2jmobius.gameserver.model.entity.Announcements; import org.l2jmobius.gameserver.model.spawn.Spawn; import org.l2jmobius.gameserver.skills.Stats; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; /** @@ -150,7 +150,7 @@ public class RaidBossSpawnManager _storedInfo.put(bossId, info); - GmListTable.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName() + "."); + AdminData.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName() + "."); if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) { Announcements.getInstance().announceToAll("Raid boss " + raidboss.getName() + " spawned in world."); @@ -509,7 +509,7 @@ public class RaidBossSpawnManager _storedInfo.put(raidboss.getNpcId(), info); - GmListTable.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName()); + AdminData.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName()); _bosses.put(raidboss.getNpcId(), raidboss); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ChanceCondition.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ChanceCondition.java index de5e8fe833..d8a561e6f7 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ChanceCondition.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/ChanceCondition.java @@ -17,7 +17,6 @@ package org.l2jmobius.gameserver.model; import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.templates.StatsSet; /** * @author kombat @@ -95,7 +94,7 @@ public class ChanceCondition try { final TriggerType trigger = set.getEnum("chanceType", TriggerType.class); - final int chance = set.getInteger("activationChance", 0); + final int chance = set.getInt("activationChance", 0); if ((trigger != null) && (chance > 0)) { return new ChanceCondition(trigger, chance); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/NpcWalkerNode.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/NpcWalkerNode.java index b8b98bec0f..9c4dc64705 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/NpcWalkerNode.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/NpcWalkerNode.java @@ -16,8 +16,6 @@ */ package org.l2jmobius.gameserver.model; -import org.l2jmobius.gameserver.templates.StatsSet; - /** * @author Rayan RPG * @since 927 @@ -139,12 +137,12 @@ public class NpcWalkerNode */ public NpcWalkerNode(StatsSet set) { - _npcId = set.getInteger("npc_id"); + _npcId = set.getInt("npc_id"); _movePoint = set.getString("move_point"); _chatText = set.getString("chatText"); - _moveX = set.getInteger("move_x"); - _moveX = set.getInteger("move_y"); - _moveX = set.getInteger("move_z"); - _delay = set.getInteger("delay"); + _moveX = set.getInt("move_x"); + _moveX = set.getInt("move_y"); + _moveX = set.getInt("move_z"); + _delay = set.getInt("delay"); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java index f3dddd61f2..f261cfba97 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/Skill.java @@ -72,7 +72,6 @@ import org.l2jmobius.gameserver.skills.handlers.SkillSeed; import org.l2jmobius.gameserver.skills.handlers.SkillSignet; import org.l2jmobius.gameserver.skills.handlers.SkillSignetCasttime; import org.l2jmobius.gameserver.skills.handlers.SkillSummon; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.util.Util; public abstract class Skill @@ -515,84 +514,84 @@ public abstract class Skill protected Skill(StatsSet set) { - _id = set.getInteger("skill_id", 0); - _level = set.getInteger("level", 1); + _id = set.getInt("skill_id", 0); + _level = set.getInt("level", 1); - _advancedFlag = set.getBool("advancedFlag", false); - _advancedMultiplier = set.getInteger("advancedMultiplier", 1); + _advancedFlag = set.getBoolean("advancedFlag", false); + _advancedMultiplier = set.getInt("advancedMultiplier", 1); - _displayId = set.getInteger("displayId", _id); + _displayId = set.getInt("displayId", _id); _name = set.getString("name"); _operateType = set.getEnum("operateType", SkillOpType.class); - _magic = set.getBool("isMagic", false); - _staticReuse = set.getBool("staticReuse", false); - _staticHitTime = set.getBool("staticHitTime", false); - _ispotion = set.getBool("isPotion", false); - _mpConsume = set.getInteger("mpConsume", 0); - _mpInitialConsume = set.getInteger("mpInitialConsume", 0); - _hpConsume = set.getInteger("hpConsume", 0); - _itemConsume = set.getInteger("itemConsumeCount", 0); - _itemConsumeId = set.getInteger("itemConsumeId", 0); - _itemConsumeOT = set.getInteger("itemConsumeCountOT", 0); - _itemConsumeIdOT = set.getInteger("itemConsumeIdOT", 0); - _itemConsumeTime = set.getInteger("itemConsumeTime", 0); - _itemConsumeSteps = set.getInteger("itemConsumeSteps", 0); - _summonTotalLifeTime = set.getInteger("summonTotalLifeTime", 1200000); // 20 minutes default - _summonTimeLostIdle = set.getInteger("summonTimeLostIdle", 0); - _summonTimeLostActive = set.getInteger("summonTimeLostActive", 0); + _magic = set.getBoolean("isMagic", false); + _staticReuse = set.getBoolean("staticReuse", false); + _staticHitTime = set.getBoolean("staticHitTime", false); + _ispotion = set.getBoolean("isPotion", false); + _mpConsume = set.getInt("mpConsume", 0); + _mpInitialConsume = set.getInt("mpInitialConsume", 0); + _hpConsume = set.getInt("hpConsume", 0); + _itemConsume = set.getInt("itemConsumeCount", 0); + _itemConsumeId = set.getInt("itemConsumeId", 0); + _itemConsumeOT = set.getInt("itemConsumeCountOT", 0); + _itemConsumeIdOT = set.getInt("itemConsumeIdOT", 0); + _itemConsumeTime = set.getInt("itemConsumeTime", 0); + _itemConsumeSteps = set.getInt("itemConsumeSteps", 0); + _summonTotalLifeTime = set.getInt("summonTotalLifeTime", 1200000); // 20 minutes default + _summonTimeLostIdle = set.getInt("summonTimeLostIdle", 0); + _summonTimeLostActive = set.getInt("summonTimeLostActive", 0); - _castRange = set.getInteger("castRange", 0); - _effectRange = set.getInteger("effectRange", -1); + _castRange = set.getInt("castRange", 0); + _effectRange = set.getInt("effectRange", -1); - _hitTime = set.getInteger("hitTime", 0); - _coolTime = set.getInteger("coolTime", 0); + _hitTime = set.getInt("hitTime", 0); + _coolTime = set.getInt("coolTime", 0); // _skillInterruptTime = set.getInteger("hitTime", _hitTime / 2); - _reuseDelay = set.getInteger("reuseDelay", 0); - _buffDuration = set.getInteger("buffDuration", 0); + _reuseDelay = set.getInt("reuseDelay", 0); + _buffDuration = set.getInt("buffDuration", 0); - _skillRadius = set.getInteger("skillRadius", 80); + _skillRadius = set.getInt("skillRadius", 80); _targetType = set.getEnum("target", SkillTargetType.class); _power = set.getFloat("power", 0.f); - _effectPoints = set.getInteger("effectPoints", 0); + _effectPoints = set.getInt("effectPoints", 0); _negateSkillTypes = set.getString("negateSkillTypes", "").split(" "); _negateEffectTypes = set.getString("negateEffectTypes", "").split(" "); _negatePower = set.getFloat("negatePower", 0.f); - _negateId = set.getInteger("negateId", 0); - _magicLevel = set.getInteger("magicLvl", SkillTreeTable.getInstance().getMinSkillLevel(_id, _level)); - _levelDepend = set.getInteger("lvlDepend", 0); + _negateId = set.getInt("negateId", 0); + _magicLevel = set.getInt("magicLvl", SkillTreeTable.getInstance().getMinSkillLevel(_id, _level)); + _levelDepend = set.getInt("lvlDepend", 0); _stat = set.getEnum("stat", Stats.class, null); _skillType = set.getEnum("skillType", SkillType.class); _effectType = set.getEnum("effectType", SkillType.class, null); - _effectPower = set.getInteger("effectPower", 0); - _effectId = set.getInteger("effectId", 0); - _effectLvl = set.getInteger("effectLevel", 0); + _effectPower = set.getInt("effectPower", 0); + _effectId = set.getInt("effectId", 0); + _effectLvl = set.getInt("effectLevel", 0); - _element = set.getInteger("element", 0); + _element = set.getInt("element", 0); _saveVs = set.getEnum("saveVs", BaseStats.class, null); - _condition = set.getInteger("condition", 0); - _conditionValue = set.getInteger("conditionValue", 0); - _overhit = set.getBool("overHit", false); - _isSuicideAttack = set.getBool("isSuicideAttack", false); - _weaponsAllowed = set.getInteger("weaponsAllowed", 0); - _armorsAllowed = set.getInteger("armorsAllowed", 0); + _condition = set.getInt("condition", 0); + _conditionValue = set.getInt("conditionValue", 0); + _overhit = set.getBoolean("overHit", false); + _isSuicideAttack = set.getBoolean("isSuicideAttack", false); + _weaponsAllowed = set.getInt("weaponsAllowed", 0); + _armorsAllowed = set.getInt("armorsAllowed", 0); - _addCrossLearn = set.getInteger("addCrossLearn", 1000); + _addCrossLearn = set.getInt("addCrossLearn", 1000); _mulCrossLearn = set.getFloat("mulCrossLearn", 2.f); _mulCrossLearnRace = set.getFloat("mulCrossLearnRace", 2.f); _mulCrossLearnProf = set.getFloat("mulCrossLearnProf", 3.f); - _minPledgeClass = set.getInteger("minPledgeClass", 0); - _isOffensive = set.getBool("offensive", isSkillTypeOffensive()); - _numCharges = set.getInteger("num_charges", 0); - _triggeredId = set.getInteger("triggeredId", 0); - _triggeredLevel = set.getInteger("triggeredLevel", 0); + _minPledgeClass = set.getInt("minPledgeClass", 0); + _isOffensive = set.getBoolean("offensive", isSkillTypeOffensive()); + _numCharges = set.getInt("num_charges", 0); + _triggeredId = set.getInt("triggeredId", 0); + _triggeredLevel = set.getInt("triggeredLevel", 0); - _bestowed = set.getBool("bestowed", false); + _bestowed = set.getBoolean("bestowed", false); - _targetConsume = set.getInteger("targetConsumeCount", 0); - _targetConsumeId = set.getInteger("targetConsumeId", 0); + _targetConsume = set.getInt("targetConsumeCount", 0); + _targetConsumeId = set.getInt("targetConsumeId", 0); if (_operateType == SkillOpType.OP_CHANCE) { @@ -601,22 +600,22 @@ public abstract class Skill _isHeroSkill = HeroSkillTable.isHeroSkill(_id); - _baseCritRate = set.getInteger("baseCritRate", (_skillType == SkillType.PDAM) || (_skillType == SkillType.BLOW) ? 0 : -1); - _lethalEffect1 = set.getInteger("lethal1", 0); - _lethalEffect2 = set.getInteger("lethal2", 0); + _baseCritRate = set.getInt("baseCritRate", (_skillType == SkillType.PDAM) || (_skillType == SkillType.BLOW) ? 0 : -1); + _lethalEffect1 = set.getInt("lethal1", 0); + _lethalEffect2 = set.getInt("lethal2", 0); - _directHpDmg = set.getBool("dmgDirectlyToHp", false); - _isDance = set.getBool("isDance", false); - _nextDanceCost = set.getInteger("nextDanceCost", 0); + _directHpDmg = set.getBoolean("dmgDirectlyToHp", false); + _isDance = set.getBoolean("isDance", false); + _nextDanceCost = set.getInt("nextDanceCost", 0); _sSBoost = set.getFloat("SSBoost", 0.f); - _aggroPoints = set.getInteger("aggroPoints", 0); + _aggroPoints = set.getInt("aggroPoints", 0); _pvpMulti = set.getFloat("pvpMulti", 1.f); - _nextActionIsAttack = set.getBool("nextActionAttack", false); + _nextActionIsAttack = set.getBoolean("nextActionAttack", false); - _minChance = set.getInteger("minChance", 1); - _maxChance = set.getInteger("maxChance", 99); + _minChance = set.getInt("minChance", 1); + _maxChance = set.getInt("maxChance", 99); String canLearn = set.getString("canLearn", null); if (canLearn == null) @@ -665,9 +664,9 @@ public abstract class Skill } } - _singleEffect = set.getBool("singleEffect", false); + _singleEffect = set.getBoolean("singleEffect", false); - _isDebuff = set.getBool("isDebuff", false); + _isDebuff = set.getBoolean("isDebuff", false); } public abstract void useSkill(Creature caster, WorldObject[] targets); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/StatsSet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/StatsSet.java new file mode 100644 index 0000000000..f1667e3582 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/StatsSet.java @@ -0,0 +1,978 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +import org.l2jmobius.commons.util.TimeUtil; +import org.l2jmobius.gameserver.model.interfaces.IParserAdvUtils; +import org.l2jmobius.gameserver.skills.holders.SkillHolder; +import org.l2jmobius.gameserver.util.Util; + +/** + * This class is meant to hold a set of (key,value) pairs.
+ * They are stored as object but can be retrieved in any type wanted. As long as cast is available.
+ * @author mkizub + */ +public class StatsSet implements IParserAdvUtils +{ + private static final Logger LOGGER = Logger.getLogger(StatsSet.class.getName()); + /** Static empty immutable map, used to avoid multiple null checks over the source. */ + public static final StatsSet EMPTY_STATSET = new StatsSet(Collections.emptyMap()); + + private final Map _set; + + public StatsSet() + { + this(ConcurrentHashMap::new); + } + + public StatsSet(Supplier> mapFactory) + { + this(mapFactory.get()); + } + + public StatsSet(Map map) + { + _set = map; + } + + /** + * Returns the set of values + * @return HashMap + */ + public Map getSet() + { + return _set; + } + + /** + * Add a set of couple values in the current set + * @param newSet : StatsSet pointing out the list of couples to add in the current set + */ + public void merge(StatsSet newSet) + { + _set.putAll(newSet.getSet()); + } + + /** + * Verifies if the stat set is empty. + * @return {@code true} if the stat set is empty, {@code false} otherwise + */ + public boolean isEmpty() + { + return _set.isEmpty(); + } + + /** + * Return the boolean value associated with key. + * @param key : String designating the key in the set + * @return boolean : value associated to the key + * @throws IllegalArgumentException : If value is not set or value is not boolean + */ + @Override + public boolean getBoolean(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Boolean value required, but not specified"); + } + if (val instanceof Boolean) + { + return ((Boolean) val).booleanValue(); + } + try + { + return Boolean.parseBoolean((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Boolean value required, but found: " + val); + } + } + + /** + * Return the boolean value associated with key.
+ * If no value is associated with key, or type of value is wrong, returns defaultValue. + * @param key : String designating the key in the entry set + * @return boolean : value associated to the key + */ + @Override + public boolean getBoolean(String key, boolean defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Boolean) + { + return ((Boolean) val).booleanValue(); + } + try + { + return Boolean.parseBoolean((String) val); + } + catch (Exception e) + { + return defaultValue; + } + } + + @Override + public byte getByte(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Byte value required, but not specified"); + } + if (val instanceof Number) + { + return ((Number) val).byteValue(); + } + try + { + return Byte.parseByte((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Byte value required, but found: " + val); + } + } + + @Override + public byte getByte(String key, byte defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Number) + { + return ((Number) val).byteValue(); + } + try + { + return Byte.parseByte((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Byte value required, but found: " + val); + } + } + + public short increaseByte(String key, byte increaseWith) + { + final byte newValue = (byte) (getByte(key) + increaseWith); + set(key, newValue); + return newValue; + } + + public short increaseByte(String key, byte defaultValue, byte increaseWith) + { + final byte newValue = (byte) (getByte(key, defaultValue) + increaseWith); + set(key, newValue); + return newValue; + } + + public byte[] getByteArray(String key, String splitOn) + { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Byte value required, but not specified"); + } + if (val instanceof Number) + { + return new byte[] + { + ((Number) val).byteValue() + }; + } + int c = 0; + final String[] vals = ((String) val).split(splitOn); + final byte[] result = new byte[vals.length]; + for (String v : vals) + { + try + { + result[c++] = Byte.parseByte(v); + } + catch (Exception e) + { + throw new IllegalArgumentException("Byte value required, but found: " + val); + } + } + return result; + } + + public List getByteList(String key, String splitOn) + { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); + final List result = new ArrayList<>(); + for (Byte i : getByteArray(key, splitOn)) + { + result.add(i); + } + return result; + } + + @Override + public short getShort(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Short value required, but not specified"); + } + if (val instanceof Number) + { + return ((Number) val).shortValue(); + } + try + { + return Short.parseShort((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Short value required, but found: " + val); + } + } + + @Override + public short getShort(String key, short defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Number) + { + return ((Number) val).shortValue(); + } + try + { + return Short.parseShort((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Short value required, but found: " + val); + } + } + + public short increaseShort(String key, short increaseWith) + { + final short newValue = (short) (getShort(key) + increaseWith); + set(key, newValue); + return newValue; + } + + public short increaseShort(String key, short defaultValue, short increaseWith) + { + final short newValue = (short) (getShort(key, defaultValue) + increaseWith); + set(key, newValue); + return newValue; + } + + @Override + public int getInt(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Integer value required, but not specified: " + key + "!"); + } + + if (val instanceof Number) + { + return ((Number) val).intValue(); + } + + try + { + return Integer.parseInt((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Integer value required, but found: " + val + "!"); + } + } + + @Override + public int getInt(String key, int defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Number) + { + return ((Number) val).intValue(); + } + try + { + return Integer.parseInt((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Integer value required, but found: " + val); + } + } + + public int increaseInt(String key, int increaseWith) + { + final int newValue = getInt(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public int increaseInt(String key, int defaultValue, int increaseWith) + { + final int newValue = getInt(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + + public int[] getIntArray(String key, String splitOn) + { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Integer value required, but not specified"); + } + if (val instanceof Number) + { + return new int[] + { + ((Number) val).intValue() + }; + } + int c = 0; + final String[] vals = ((String) val).split(splitOn); + final int[] result = new int[vals.length]; + for (String v : vals) + { + try + { + result[c++] = Integer.parseInt(v); + } + catch (Exception e) + { + throw new IllegalArgumentException("Integer value required, but found: " + val); + } + } + return result; + } + + public List getIntegerList(String key, String splitOn) + { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); + final List result = new ArrayList<>(); + for (int i : getIntArray(key, splitOn)) + { + result.add(i); + } + return result; + } + + @Override + public long getLong(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Long value required, but not specified"); + } + if (val instanceof Number) + { + return ((Number) val).longValue(); + } + try + { + return Long.parseLong((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Long value required, but found: " + val); + } + } + + @Override + public long getLong(String key, long defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Number) + { + return ((Number) val).longValue(); + } + try + { + return Long.parseLong((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Long value required, but found: " + val); + } + } + + public long increaseLong(String key, long increaseWith) + { + final long newValue = getLong(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public long increaseLong(String key, long defaultValue, long increaseWith) + { + final long newValue = getLong(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + + @Override + public float getFloat(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Float value required, but not specified"); + } + if (val instanceof Number) + { + return ((Number) val).floatValue(); + } + try + { + return Float.parseFloat((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Float value required, but found: " + val); + } + } + + @Override + public float getFloat(String key, float defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Number) + { + return ((Number) val).floatValue(); + } + try + { + return Float.parseFloat((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Float value required, but found: " + val); + } + } + + public float increaseFloat(String key, float increaseWith) + { + final float newValue = getFloat(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public float increaseFloat(String key, float defaultValue, float increaseWith) + { + final float newValue = getFloat(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + + @Override + public double getDouble(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Double value required, but not specified"); + } + if (val instanceof Number) + { + return ((Number) val).doubleValue(); + } + try + { + return Double.parseDouble((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Double value required, but found: " + val); + } + } + + @Override + public double getDouble(String key, double defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (val instanceof Number) + { + return ((Number) val).doubleValue(); + } + try + { + return Double.parseDouble((String) val); + } + catch (Exception e) + { + throw new IllegalArgumentException("Double value required, but found: " + val); + } + } + + public double increaseDouble(String key, double increaseWith) + { + final double newValue = getDouble(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public double increaseDouble(String key, double defaultValue, double increaseWith) + { + final double newValue = getDouble(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + + @Override + public String getString(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("String value required, but not specified"); + } + return String.valueOf(val); + } + + @Override + public String getString(String key, String defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + return String.valueOf(val); + } + + @Override + public Duration getDuration(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("String value required, but not specified"); + } + return TimeUtil.parseDuration(String.valueOf(val)); + } + + @Override + public Duration getDuration(String key, Duration defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + return TimeUtil.parseDuration(String.valueOf(val)); + } + + @Override + @SuppressWarnings("unchecked") + public > T getEnum(String key, Class enumClass) + { + Objects.requireNonNull(key); + Objects.requireNonNull(enumClass); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but not specified"); + } + if (enumClass.isInstance(val)) + { + return (T) val; + } + try + { + return Enum.valueOf(enumClass, String.valueOf(val)); + } + catch (Exception e) + { + throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but found: " + val); + } + } + + @Override + @SuppressWarnings("unchecked") + public > T getEnum(String key, Class enumClass, T defaultValue) + { + Objects.requireNonNull(key); + Objects.requireNonNull(enumClass); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + if (enumClass.isInstance(val)) + { + return (T) val; + } + try + { + return Enum.valueOf(enumClass, String.valueOf(val)); + } + catch (Exception e) + { + throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but found: " + val); + } + } + + @SuppressWarnings("unchecked") + public A getObject(String name, Class type) + { + Objects.requireNonNull(name); + Objects.requireNonNull(type); + final Object obj = _set.get(name); + if ((obj == null) || !type.isAssignableFrom(obj.getClass())) + { + return null; + } + + return (A) obj; + } + + @SuppressWarnings("unchecked") + public A getObject(String name, Class type, A defaultValue) + { + Objects.requireNonNull(name); + Objects.requireNonNull(type); + final Object obj = _set.get(name); + if ((obj == null) || !type.isAssignableFrom(obj.getClass())) + { + return defaultValue; + } + + return (A) obj; + } + + public SkillHolder getSkillHolder(String key) + { + Objects.requireNonNull(key); + final Object obj = _set.get(key); + if ((obj == null) || !(obj instanceof SkillHolder)) + { + return null; + } + + return (SkillHolder) obj; + } + + public Location getLocation(String key) + { + Objects.requireNonNull(key); + final Object obj = _set.get(key); + if ((obj == null) || !(obj instanceof Location)) + { + return null; + } + return (Location) obj; + } + + @SuppressWarnings("unchecked") + public List getList(String key, Class clazz) + { + Objects.requireNonNull(key); + Objects.requireNonNull(clazz); + final Object obj = _set.get(key); + if ((obj == null) || !(obj instanceof List)) + { + return null; + } + + final List originalList = (List) obj; + if (!originalList.isEmpty() && !originalList.stream().allMatch(clazz::isInstance)) + { + if (clazz.getSuperclass() == Enum.class) + { + throw new IllegalAccessError("Please use getEnumList if you want to get list of Enums!"); + } + + // Attempt to convert the list + final List convertedList = convertList(originalList, clazz); + if (convertedList == null) + { + LOGGER.log(Level.WARNING, "getList(\"" + key + "\", " + clazz.getSimpleName() + ") requested with wrong generic type: " + obj.getClass().getGenericInterfaces()[0] + "!", new ClassNotFoundException()); + return null; + } + + // Overwrite the existing list with proper generic type + _set.put(key, convertedList); + return convertedList; + } + return (List) obj; + } + + public List getList(String key, Class clazz, List defaultValue) + { + final List list = getList(key, clazz); + return list == null ? defaultValue : list; + } + + @SuppressWarnings("unchecked") + public > List getEnumList(String key, Class clazz) + { + final Object obj = _set.get(key); + if ((obj == null) || !(obj instanceof List)) + { + return null; + } + + final List originalList = (List) obj; + if (!originalList.isEmpty() && (obj.getClass().getGenericInterfaces()[0] != clazz) && originalList.stream().allMatch(name -> Util.isEnum(name.toString(), clazz))) + { + final List convertedList = originalList.stream().map(Object::toString).map(name -> Enum.valueOf(clazz, name)).map(clazz::cast).collect(Collectors.toList()); + + // Overwrite the existing list with proper generic type + _set.put(key, convertedList); + return convertedList; + } + return (List) obj; + } + + /** + * @param + * @param originalList + * @param clazz + * @return + */ + private List convertList(List originalList, Class clazz) + { + if (clazz == Integer.class) + { + if (originalList.stream().map(Object::toString).allMatch(Util::isInteger)) + { + return originalList.stream().map(Object::toString).map(Integer::valueOf).map(clazz::cast).collect(Collectors.toList()); + } + } + else if (clazz == Float.class) + { + if (originalList.stream().map(Object::toString).allMatch(Util::isFloat)) + { + return originalList.stream().map(Object::toString).map(Float::valueOf).map(clazz::cast).collect(Collectors.toList()); + } + } + else if (clazz == Double.class) + { + if (originalList.stream().map(Object::toString).allMatch(Util::isDouble)) + { + return originalList.stream().map(Object::toString).map(Double::valueOf).map(clazz::cast).collect(Collectors.toList()); + } + } + return null; + } + + @SuppressWarnings("unchecked") + public Map getMap(String key, Class keyClass, Class valueClass) + { + final Object obj = _set.get(key); + if ((obj == null) || !(obj instanceof Map)) + { + return null; + } + + final Map originalList = (Map) obj; + if (!originalList.isEmpty()) + { + if ((!originalList.keySet().stream().allMatch(keyClass::isInstance)) || (!originalList.values().stream().allMatch(valueClass::isInstance))) + { + LOGGER.log(Level.WARNING, "getMap(\"" + key + "\", " + keyClass.getSimpleName() + ", " + valueClass.getSimpleName() + ") requested with wrong generic type: " + obj.getClass().getGenericInterfaces()[0] + "!", new ClassNotFoundException()); + } + } + return (Map) obj; + } + + public StatsSet set(String name, Object value) + { + if (value == null) + { + return this; + } + _set.put(name, value); + return this; + } + + public StatsSet set(String key, boolean value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, byte value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, short value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, int value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, long value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, float value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, double value) + { + _set.put(key, value); + return this; + } + + public StatsSet set(String key, String value) + { + if (value == null) + { + return this; + } + _set.put(key, value); + return this; + } + + public StatsSet set(String key, Enum value) + { + if (value == null) + { + return this; + } + _set.put(key, value); + return this; + } + + /** + * Safe version of "set". Expected values are within [min, max[
+ * Add the int hold in param "value" for the key "name". + * @param name : String designating the key in the set + * @param value : int corresponding to the value associated with the key + * @param min + * @param max + * @param reference + */ + public synchronized void safeSet(String name, int value, int min, int max, String reference) + { + assert ((min > max) || ((value >= min) && (value < max))); + + if ((min <= max) && ((value < min) || (value >= max))) + { + LOGGER.info("[StatsSet][safeSet] Incorrect value: " + value + "for: " + name + "Ref: " + reference); + } + + set(name, value); + } + + public static StatsSet valueOf(String key, Object value) + { + final StatsSet set = new StatsSet(); + set.set(key, value); + return set; + } + + public void remove(String key) + { + _set.remove(key); + } + + public boolean contains(String name) + { + return _set.containsKey(name); + } + + @Override + public String toString() + { + return "StatsSet{_set=" + _set + '}'; + } +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8387b4779a..3c68819494 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillTargetType; import org.l2jmobius.gameserver.model.Skill.SkillType; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldRegion; @@ -131,7 +132,6 @@ import org.l2jmobius.gameserver.skills.Stats; import org.l2jmobius.gameserver.skills.effects.EffectCharge; import org.l2jmobius.gameserver.skills.funcs.Func; import org.l2jmobius.gameserver.skills.holders.ISkillsHolder; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.CreatureTemplate; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; import org.l2jmobius.gameserver.templates.item.Weapon; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FestivalGuideInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FestivalGuideInstance.java index 2ff8d9e59d..7ae0988007 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FestivalGuideInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/FestivalGuideInstance.java @@ -21,13 +21,13 @@ import java.util.List; import org.l2jmobius.Config; import org.l2jmobius.gameserver.model.Party; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSigns; import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSignsFestival; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; /** @@ -324,13 +324,13 @@ public class FestivalGuideInstance extends FolkInstance final StatsSet dawnData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DAWN, _festivalType); final StatsSet duskData = SevenSignsFestival.getInstance().getHighestScoreData(SevenSigns.CABAL_DUSK, _festivalType); final StatsSet overallData = SevenSignsFestival.getInstance().getOverallHighestScoreData(_festivalType); - final int dawnScore = dawnData.getInteger("score"); - final int duskScore = duskData.getInteger("score"); + final int dawnScore = dawnData.getInt("score"); + final int duskScore = duskData.getInt("score"); int overallScore = 0; // If no data is returned, assume there is no record, or all scores are 0. if (overallData != null) { - overallScore = overallData.getInteger("score"); + overallScore = overallData.getInt("score"); } strBuffer.append(SevenSignsFestival.getFestivalName(_festivalType) + " festival.
"); if (dawnScore > 0) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 4bb3095903..425f7baad2 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -50,7 +50,6 @@ import org.l2jmobius.gameserver.cache.WarehouseCacheManager; import org.l2jmobius.gameserver.communitybbs.BB.Forum; import org.l2jmobius.gameserver.communitybbs.Manager.ForumsBBSManager; import org.l2jmobius.gameserver.datatables.AccessLevel; -import org.l2jmobius.gameserver.datatables.GmListTable; import org.l2jmobius.gameserver.datatables.HeroSkillTable; import org.l2jmobius.gameserver.datatables.NobleSkillTable; import org.l2jmobius.gameserver.datatables.SkillTable; @@ -58,12 +57,11 @@ import org.l2jmobius.gameserver.datatables.csv.FishTable; import org.l2jmobius.gameserver.datatables.csv.HennaTable; import org.l2jmobius.gameserver.datatables.csv.MapRegionTable; import org.l2jmobius.gameserver.datatables.csv.RecipeTable; -import org.l2jmobius.gameserver.datatables.sql.AccessLevels; -import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights; import org.l2jmobius.gameserver.datatables.sql.CharTemplateTable; import org.l2jmobius.gameserver.datatables.sql.ClanTable; import org.l2jmobius.gameserver.datatables.sql.NpcTable; import org.l2jmobius.gameserver.datatables.sql.SkillTreeTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.datatables.xml.ExperienceData; import org.l2jmobius.gameserver.datatables.xml.ItemTable; import org.l2jmobius.gameserver.geoengine.GeoEngine; @@ -8614,11 +8612,11 @@ public class PlayerInstance extends Playable if (level == Config.MASTERACCESS_LEVEL) { LOGGER.warning("Access level " + level + " set for character " + getName() + "! Just a warning ;)"); - _accessLevel = AccessLevels.getInstance()._masterAccessLevel; + _accessLevel = AdminData.getInstance()._masterAccessLevel; } else if (level == Config.USERACCESS_LEVEL) { - _accessLevel = AccessLevels.getInstance()._userAccessLevel; + _accessLevel = AdminData.getInstance()._userAccessLevel; } else { @@ -8626,19 +8624,19 @@ public class PlayerInstance extends Playable { LOGGER.warning("Access level " + level + " set for character " + getName() + "! Just a warning ;)"); } - AccessLevel accessLevel = AccessLevels.getInstance().getAccessLevel(level); + AccessLevel accessLevel = AdminData.getInstance().getAccessLevel(level); if (accessLevel == null) { if (level < 0) { - AccessLevels.getInstance().addBanAccessLevel(level); - _accessLevel = AccessLevels.getInstance().getAccessLevel(level); + AdminData.getInstance().addBanAccessLevel(level); + _accessLevel = AdminData.getInstance().getAccessLevel(level); } else { LOGGER.warning("Tried to set unregistered access level " + level + " to character " + getName() + ". Setting access level without privileges!"); - _accessLevel = AccessLevels.getInstance()._userAccessLevel; + _accessLevel = AdminData.getInstance()._userAccessLevel; } } else @@ -8647,7 +8645,7 @@ public class PlayerInstance extends Playable } } - if (_accessLevel != AccessLevels.getInstance()._userAccessLevel) + if (_accessLevel != AdminData.getInstance()._userAccessLevel) { if (getAccessLevel().useNameColor()) { @@ -8679,7 +8677,7 @@ public class PlayerInstance extends Playable { if (Config.EVERYBODY_HAS_ADMIN_RIGHTS) { - return AccessLevels.getInstance()._masterAccessLevel; + return AdminData.getInstance()._masterAccessLevel; } else if (_accessLevel == null) { @@ -15050,7 +15048,7 @@ public class PlayerInstance extends Playable { try { - GmListTable.getInstance().deleteGm(this); + AdminData.getInstance().deleteGm(this); } catch (Throwable t) { @@ -17920,11 +17918,11 @@ public class PlayerInstance extends Playable setTarget(null); sendPacket(new ExOlympiadMode(0, this)); teleToLocation(_obsX, _obsY, _obsZ, true); - if (!AdminCommandAccessRights.getInstance().hasAccess("admin_invis", getAccessLevel())) + if (!AdminData.getInstance().hasAccess("admin_invis", getAccessLevel())) { getAppearance().setVisible(); } - if (!AdminCommandAccessRights.getInstance().hasAccess("admin_invul", getAccessLevel())) + if (!AdminData.getInstance().hasAccess("admin_invul", getAccessLevel())) { setIsInvul(false); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/Hero.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/Hero.java index 0f8aafee10..f0f27c7395 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/Hero.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/Hero.java @@ -28,6 +28,7 @@ import java.util.logging.Logger; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.datatables.sql.ClanTable; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -38,7 +39,6 @@ import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.UserInfo; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.item.Item; /** @@ -320,11 +320,11 @@ public class Hero final Map heroes = new HashMap<>(); for (StatsSet hero : newHeroes) { - final int charId = hero.getInteger(Olympiad.CHAR_ID); + final int charId = hero.getInt(Olympiad.CHAR_ID); if ((_completeHeroes != null) && _completeHeroes.containsKey(charId)) { final StatsSet oldHero = _completeHeroes.get(charId); - final int count = oldHero.getInteger(COUNT); + final int count = oldHero.getInt(COUNT); oldHero.set(COUNT, count + 1); oldHero.set(PLAYED, 1); heroes.put(charId, oldHero); @@ -333,7 +333,7 @@ public class Hero { final StatsSet newHero = new StatsSet(); newHero.set(Olympiad.CHAR_NAME, hero.getString(Olympiad.CHAR_NAME)); - newHero.set(Olympiad.CLASS_ID, hero.getInteger(Olympiad.CLASS_ID)); + newHero.set(Olympiad.CLASS_ID, hero.getInt(Olympiad.CLASS_ID)); newHero.set(COUNT, 1); newHero.set(PLAYED, 1); heroes.put(charId, newHero); @@ -424,9 +424,9 @@ public class Hero statement = con.prepareStatement(INSERT_HERO); statement.setInt(1, heroId); statement.setString(2, hero.getString(Olympiad.CHAR_NAME)); - statement.setInt(3, hero.getInteger(Olympiad.CLASS_ID)); - statement.setInt(4, hero.getInteger(COUNT)); - statement.setInt(5, hero.getInteger(PLAYED)); + statement.setInt(3, hero.getInt(Olympiad.CLASS_ID)); + statement.setInt(4, hero.getInt(COUNT)); + statement.setInt(5, hero.getInt(PLAYED)); statement.execute(); statement2 = con.prepareStatement(GET_CLAN_ALLY); statement2.setInt(1, heroId); @@ -463,8 +463,8 @@ public class Hero else { statement = con.prepareStatement(UPDATE_HERO); - statement.setInt(1, hero.getInteger(COUNT)); - statement.setInt(2, hero.getInteger(PLAYED)); + statement.setInt(1, hero.getInt(COUNT)); + statement.setInt(2, hero.getInt(PLAYED)); statement.setInt(3, heroId); statement.execute(); } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/Olympiad.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/Olympiad.java index 177938bdef..098660b91d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/Olympiad.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/Olympiad.java @@ -44,6 +44,7 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.instancemanager.OlympiadStadiaManager; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.entity.Announcements; @@ -52,7 +53,6 @@ import org.l2jmobius.gameserver.model.spawn.Spawn; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; public class Olympiad { @@ -1006,7 +1006,7 @@ public class Olympiad for (Integer nobleId : _nobles.keySet()) { final StatsSet nobleInfo = _nobles.get(nobleId); - int currentPoints = nobleInfo.getInteger(POINTS); + int currentPoints = nobleInfo.getInt(POINTS); currentPoints += WEEKLY_POINTS; nobleInfo.set(POINTS, currentPoints); @@ -1138,14 +1138,14 @@ public class Olympiad } final int charId = nobleId; - final int classId = nobleInfo.getInteger(CLASS_ID); + final int classId = nobleInfo.getInt(CLASS_ID); final String charName = nobleInfo.getString(CHAR_NAME); - final int points = nobleInfo.getInteger(POINTS); - final int compDone = nobleInfo.getInteger(COMP_DONE); - final int compWon = nobleInfo.getInteger(COMP_WON); - final int compLost = nobleInfo.getInteger(COMP_LOST); - final int compDrawn = nobleInfo.getInteger(COMP_DRAWN); - final boolean toSave = nobleInfo.getBool("to_save"); + final int points = nobleInfo.getInt(POINTS); + final int compDone = nobleInfo.getInt(COMP_DONE); + final int compWon = nobleInfo.getInt(COMP_WON); + final int compLost = nobleInfo.getInt(COMP_LOST); + final int compDrawn = nobleInfo.getInt(COMP_DRAWN); + final boolean toSave = nobleInfo.getBoolean("to_save"); if (toSave) { @@ -1200,11 +1200,11 @@ public class Olympiad } final int charId = nobleId; - final int points = nobleInfo.getInteger(POINTS); - final int compDone = nobleInfo.getInteger(COMP_DONE); - final int compWon = nobleInfo.getInteger(COMP_WON); - final int compLost = nobleInfo.getInteger(COMP_LOST); - final int compDrawn = nobleInfo.getInteger(COMP_DRAWN); + final int points = nobleInfo.getInt(POINTS); + final int compDone = nobleInfo.getInt(COMP_DONE); + final int compWon = nobleInfo.getInt(COMP_WON); + final int compLost = nobleInfo.getInt(COMP_LOST); + final int compDrawn = nobleInfo.getInt(COMP_DRAWN); statement = con.prepareStatement(OLYMPIAD_UPDATE_OLD_NOBLES); statement.setInt(1, points); @@ -1310,10 +1310,10 @@ public class Olympiad } final int charId = nobleId; - final int classId = nobleInfo.getInteger(CLASS_ID); + final int classId = nobleInfo.getInt(CLASS_ID); final String charName = nobleInfo.getString(CHAR_NAME); - final int points = nobleInfo.getInteger(POINTS); - final int compDone = nobleInfo.getInteger(COMP_DONE); + final int points = nobleInfo.getInt(POINTS); + final int compDone = nobleInfo.getInt(COMP_DONE); logResult(charName, "", Double.valueOf(charId), Double.valueOf(classId), compDone, points, "noble-charId-classId-compdone-points", 0, ""); } @@ -1395,10 +1395,10 @@ public class Olympiad for (StatsSet hero : _heroesToBe) { - final int charId = hero.getInteger(CHAR_ID); + final int charId = hero.getInt(CHAR_ID); final StatsSet noble = _nobles.get(charId); - int currentPoints = noble.getInteger(POINTS); + int currentPoints = noble.getInt(POINTS); currentPoints += Config.ALT_OLY_HERO_POINTS; noble.set(POINTS, currentPoints); @@ -1420,7 +1420,7 @@ public class Olympiad { return 0; } - int points = noble.getInteger(POINTS); + int points = noble.getInt(POINTS); if (points <= Config.ALT_OLY_MIN_POINT_FOR_EXCH) { return 0; @@ -1444,7 +1444,7 @@ public class Olympiad { return 0; } - int points = noble.getInteger(POINTS); + int points = noble.getInt(POINTS); if (points <= Config.ALT_OLY_MIN_POINT_FOR_EXCH) { return 0; @@ -1489,7 +1489,7 @@ public class Olympiad { return 0; } - final int points = noble.getInteger(POINTS); + final int points = noble.getInt(POINTS); return points; } @@ -1506,7 +1506,7 @@ public class Olympiad { return 0; } - final int points = noble.getInteger(COMP_DONE); + final int points = noble.getInt(COMP_DONE); return points; } @@ -1523,7 +1523,7 @@ public class Olympiad { return 0; } - final int points = noble.getInteger(COMP_WON); + final int points = noble.getInt(COMP_WON); return points; } @@ -1540,7 +1540,7 @@ public class Olympiad { return 0; } - final int points = noble.getInteger(COMP_LOST); + final int points = noble.getInt(COMP_LOST); return points; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/OlympiadGame.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/OlympiadGame.java index f1eaa319bc..95e5988755 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/OlympiadGame.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/olympiad/OlympiadGame.java @@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.datatables.HeroSkillTable; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.CubicInstance; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; @@ -45,7 +46,6 @@ import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadUserInfo; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; /** * @author GodKratos @@ -652,17 +652,17 @@ class OlympiadGame final StatsSet playerOneStat = Olympiad.getNobleStats(_playerOne.getObjectId()); final StatsSet playerTwoStat = Olympiad.getNobleStats(_playerTwo.getObjectId()); - final int playerOnePlayed = playerOneStat.getInteger(COMP_DONE); - final int playerTwoPlayed = playerTwoStat.getInteger(COMP_DONE); - final int playerOneWon = playerOneStat.getInteger(COMP_WON); - final int playerTwoWon = playerTwoStat.getInteger(COMP_WON); - final int playerOneLost = playerOneStat.getInteger(COMP_LOST); - final int playerTwoLost = playerTwoStat.getInteger(COMP_LOST); - final int playerOneDrawn = playerOneStat.getInteger(COMP_DRAWN); - final int playerTwoDrawn = playerTwoStat.getInteger(COMP_DRAWN); + final int playerOnePlayed = playerOneStat.getInt(COMP_DONE); + final int playerTwoPlayed = playerTwoStat.getInt(COMP_DONE); + final int playerOneWon = playerOneStat.getInt(COMP_WON); + final int playerTwoWon = playerTwoStat.getInt(COMP_WON); + final int playerOneLost = playerOneStat.getInt(COMP_LOST); + final int playerTwoLost = playerTwoStat.getInt(COMP_LOST); + final int playerOneDrawn = playerOneStat.getInt(COMP_DRAWN); + final int playerTwoDrawn = playerTwoStat.getInt(COMP_DRAWN); - final int playerOnePoints = playerOneStat.getInteger(POINTS); - final int playerTwoPoints = playerTwoStat.getInteger(POINTS); + final int playerOnePoints = playerOneStat.getInt(POINTS); + final int playerTwoPoints = playerTwoStat.getInt(POINTS); final int pointDiff = Math.min(playerOnePoints, playerTwoPoints) / _div; // Check for if a player defaulted before battle started diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSigns.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSigns.java index 7f4b5c67c8..267bbd569d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSigns.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSigns.java @@ -31,6 +31,7 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.datatables.csv.MapRegionTable; import org.l2jmobius.gameserver.handler.AutoChatHandler; import org.l2jmobius.gameserver.instancemanager.CastleManager; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.spawn.AutoSpawn; @@ -38,7 +39,6 @@ import org.l2jmobius.gameserver.model.spawn.AutoSpawn.AutoSpawnInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SignsSky; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; /** * Seven Signs Engine TODO: - Implementation of the Seal of Strife for sieges. @@ -796,9 +796,9 @@ public class SevenSigns StatsSet currPlayer = getPlayerData(player); - stoneCount += currPlayer.getInteger("red_stones"); - stoneCount += currPlayer.getInteger("green_stones"); - stoneCount += currPlayer.getInteger("blue_stones"); + stoneCount += currPlayer.getInt("red_stones"); + stoneCount += currPlayer.getInt("green_stones"); + stoneCount += currPlayer.getInt("blue_stones"); return stoneCount; } @@ -817,7 +817,7 @@ public class SevenSigns final StatsSet currPlayer = getPlayerData(player); - return currPlayer.getInteger("contribution_score"); + return currPlayer.getInt("contribution_score"); } /** @@ -832,7 +832,7 @@ public class SevenSigns return 0; } - return _signsPlayerData.get(player.getObjectId()).getInteger("ancient_adena_amount"); + return _signsPlayerData.get(player.getObjectId()).getInt("ancient_adena_amount"); } /** @@ -847,7 +847,7 @@ public class SevenSigns return SEAL_NULL; } - return getPlayerData(player).getInteger("seal"); + return getPlayerData(player).getInt("seal"); } /** @@ -968,7 +968,7 @@ public class SevenSigns { if (player != null) { - if (sevenDat.getInteger("char_obj_id") != player.getObjectId()) + if (sevenDat.getInt("char_obj_id") != player.getObjectId()) { continue; } @@ -976,13 +976,13 @@ public class SevenSigns statement = con.prepareStatement("UPDATE seven_signs SET cabal=?, seal=?, red_stones=?, green_stones=?, blue_stones=?, ancient_adena_amount=?, contribution_score=? WHERE char_obj_id=?"); statement.setString(1, sevenDat.getString("cabal")); - statement.setInt(2, sevenDat.getInteger("seal")); - statement.setInt(3, sevenDat.getInteger("red_stones")); - statement.setInt(4, sevenDat.getInteger("green_stones")); - statement.setInt(5, sevenDat.getInteger("blue_stones")); + statement.setInt(2, sevenDat.getInt("seal")); + statement.setInt(3, sevenDat.getInt("red_stones")); + statement.setInt(4, sevenDat.getInt("green_stones")); + statement.setInt(5, sevenDat.getInt("blue_stones")); statement.setDouble(6, sevenDat.getDouble("ancient_adena_amount")); statement.setDouble(7, sevenDat.getDouble("contribution_score")); - statement.setInt(8, sevenDat.getInteger("char_obj_id")); + statement.setInt(8, sevenDat.getInt("char_obj_id")); statement.execute(); statement.close(); @@ -1044,7 +1044,7 @@ public class SevenSigns // Reset each player's contribution data as well as seal and cabal. for (StatsSet sevenDat : _signsPlayerData.values()) { - final int charObjId = sevenDat.getInteger("char_obj_id"); + final int charObjId = sevenDat.getInt("char_obj_id"); // Reset the player's cabal and seal information sevenDat.set("cabal", ""); @@ -1142,7 +1142,7 @@ public class SevenSigns public int getAncientAdenaReward(PlayerInstance player, boolean removeReward) { StatsSet currPlayer = getPlayerData(player); - final int rewardAmount = currPlayer.getInteger("ancient_adena_amount"); + final int rewardAmount = currPlayer.getInt("ancient_adena_amount"); currPlayer.set("red_stones", 0); currPlayer.set("green_stones", 0); @@ -1171,17 +1171,17 @@ public class SevenSigns StatsSet currPlayer = getPlayerData(player); final int contribScore = calcContributionScore(blueCount, greenCount, redCount); - final int totalAncientAdena = currPlayer.getInteger("ancient_adena_amount") + calcAncientAdenaReward(blueCount, greenCount, redCount); - final int totalContribScore = currPlayer.getInteger("contribution_score") + contribScore; + final int totalAncientAdena = currPlayer.getInt("ancient_adena_amount") + calcAncientAdenaReward(blueCount, greenCount, redCount); + final int totalContribScore = currPlayer.getInt("contribution_score") + contribScore; if (totalContribScore > Config.ALT_MAXIMUM_PLAYER_CONTRIB) { return -1; } - currPlayer.set("red_stones", currPlayer.getInteger("red_stones") + redCount); - currPlayer.set("green_stones", currPlayer.getInteger("green_stones") + greenCount); - currPlayer.set("blue_stones", currPlayer.getInteger("blue_stones") + blueCount); + currPlayer.set("red_stones", currPlayer.getInt("red_stones") + redCount); + currPlayer.set("green_stones", currPlayer.getInt("green_stones") + greenCount); + currPlayer.set("blue_stones", currPlayer.getInt("blue_stones") + blueCount); currPlayer.set("ancient_adena_amount", totalAncientAdena); currPlayer.set("contribution_score", totalContribScore); _signsPlayerData.put(player.getObjectId(), currPlayer); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSignsFestival.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSignsFestival.java index ca913dad9f..979c7ea918 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSignsFestival.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/entity/sevensigns/SevenSignsFestival.java @@ -39,6 +39,7 @@ import org.l2jmobius.gameserver.datatables.sql.SpawnTable; import org.l2jmobius.gameserver.datatables.xml.ExperienceData; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Party; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.instance.FestivalMonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; @@ -52,7 +53,6 @@ import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; import org.l2jmobius.gameserver.util.Util; @@ -3404,14 +3404,14 @@ public class SevenSignsFestival implements SpawnListener { for (StatsSet festivalDat : currCycleData.values()) { - final int festivalCycle = festivalDat.getInteger("cycle"); - final int festivalId = festivalDat.getInteger("festivalId"); + final int festivalCycle = festivalDat.getInt("cycle"); + final int festivalId = festivalDat.getInt("festivalId"); String cabal = festivalDat.getString("cabal"); // Try to update an existing record. statement = con.prepareStatement("UPDATE seven_signs_festival SET date=?, score=?, members=? WHERE cycle=? AND cabal=? AND festivalId=?"); statement.setLong(1, Long.valueOf(festivalDat.getString("date"))); - statement.setInt(2, festivalDat.getInteger("score")); + statement.setInt(2, festivalDat.getInt("score")); statement.setString(3, festivalDat.getString("members")); statement.setInt(4, festivalCycle); statement.setString(5, cabal); @@ -3431,7 +3431,7 @@ public class SevenSignsFestival implements SpawnListener statement.setString(2, cabal); statement.setInt(3, festivalCycle); statement.setLong(4, Long.valueOf(festivalDat.getString("date"))); - statement.setInt(5, festivalDat.getInteger("score")); + statement.setInt(5, festivalDat.getInt("score")); statement.setString(6, festivalDat.getString("members")); statement.execute(); statement.close(); @@ -3929,7 +3929,7 @@ public class SevenSignsFestival implements SpawnListener */ public int getHighestScore(int oracle, int festivalId) { - return getHighestScoreData(oracle, festivalId).getInteger("score"); + return getHighestScoreData(oracle, festivalId).getInt("score"); } /** @@ -3978,8 +3978,8 @@ public class SevenSignsFestival implements SpawnListener { for (StatsSet currFestData : currCycleData.values()) { - final int currFestID = currFestData.getInteger("festivalId"); - final int festivalScore = currFestData.getInteger("score"); + final int currFestID = currFestData.getInt("festivalId"); + final int festivalScore = currFestData.getInt("score"); if (currFestID != festivalId) { @@ -4161,7 +4161,7 @@ public class SevenSignsFestival implements SpawnListener { if (festivalData.getString("members").contains(playerName)) { - final int festivalId = festivalData.getInteger("festivalId"); + final int festivalId = festivalData.getInt("festivalId"); final int numPartyMembers = festivalData.getString("members").split(",").length; final int totalAccumBonus = _accumulatedBonuses.get(festivalId); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IDeletable.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IDeletable.java new file mode 100644 index 0000000000..22e6b4f508 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IDeletable.java @@ -0,0 +1,25 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.interfaces; + +/** + * @author UnAfraid + */ +public interface IDeletable +{ + boolean deleteMe(); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java new file mode 100644 index 0000000000..67d0dd0afb --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java @@ -0,0 +1,48 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.interfaces; + +import java.time.Duration; + +/** + * More advanced interface for parsers.
+ * Allows usage of get methods without fall back value.
+ * @author xban1x + */ +public interface IParserAdvUtils extends IParserUtils +{ + + boolean getBoolean(String key); + + byte getByte(String key); + + short getShort(String key); + + int getInt(String key); + + long getLong(String key); + + float getFloat(String key); + + double getDouble(String key); + + String getString(String key); + + Duration getDuration(String key); + + > T getEnum(String key, Class clazz); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java new file mode 100644 index 0000000000..b4cd357115 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java @@ -0,0 +1,47 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.interfaces; + +import java.time.Duration; + +/** + * Simple interface for parser, enforces of a fall back value.
+ * More suitable for developers not sure about their data.
+ * @author xban1x + */ +public interface IParserUtils +{ + boolean getBoolean(String key, boolean defaultValue); + + byte getByte(String key, byte defaultValue); + + short getShort(String key, short defaultValue); + + int getInt(String key, int defaultValue); + + long getLong(String key, long defaultValue); + + float getFloat(String key, float defaultValue); + + double getDouble(String key, double defaultValue); + + String getString(String key, String defaultValue); + + Duration getDuration(String key, Duration defaultValue); + + > T getEnum(String key, Class clazz, T defaultValue); +} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java index 841aa5f713..3350f2a3a6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java @@ -16,63 +16,70 @@ */ package org.l2jmobius.gameserver.model.variables; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; +import org.l2jmobius.gameserver.model.StatsSet; +import org.l2jmobius.gameserver.model.interfaces.IDeletable; import org.l2jmobius.gameserver.model.interfaces.IRestorable; import org.l2jmobius.gameserver.model.interfaces.IStorable; -import org.l2jmobius.gameserver.templates.StatsSet; /** * @author UnAfraid */ -public abstract class AbstractVariables extends StatsSet implements IRestorable, IStorable +public abstract class AbstractVariables extends StatsSet implements IRestorable, IStorable, IDeletable { private final AtomicBoolean _hasChanges = new AtomicBoolean(false); + public AbstractVariables() + { + super(new ConcurrentHashMap<>()); + } + /** * Overriding following methods to prevent from doing useless database operations if there is no changes since player's login. */ @Override - public void set(String name, boolean value) + public StatsSet set(String name, boolean value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, double value) + public StatsSet set(String name, double value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, Enum value) + public StatsSet set(String name, Enum value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, int value) + public StatsSet set(String name, int value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, long value) + public StatsSet set(String name, long value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, String value) + public StatsSet set(String name, String value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } /** @@ -108,6 +115,7 @@ public abstract class AbstractVariables extends StatsSet implements IRestorable, * Removes variable * @param name */ + @Override public void remove(String name) { _hasChanges.compareAndSet(false, true); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java index 8e5a1adc38..fc36c5f076 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java @@ -116,4 +116,27 @@ public class AccountVariables extends AbstractVariables } return true; } + + @Override + public boolean deleteMe() + { + try (Connection con = DatabaseFactory.getConnection()) + { + // Clear previous entries. + try (PreparedStatement st = con.prepareStatement(DELETE_QUERY)) + { + st.setString(1, _accountName); + st.execute(); + } + + // Clear all entries + getSet().clear(); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _accountName, e); + return false; + } + return true; + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java index 07ef4d9dfe..75692d7407 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java @@ -119,6 +119,29 @@ public class PlayerVariables extends AbstractVariables return true; } + @Override + public boolean deleteMe() + { + try (Connection con = DatabaseFactory.getConnection()) + { + // Clear previous entries. + try (PreparedStatement st = con.prepareStatement(DELETE_QUERY)) + { + st.setInt(1, _objectId); + st.execute(); + } + + // Clear all entries + getSet().clear(); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); + return false; + } + return true; + } + public PlayerInstance getPlayer() { return World.getInstance().getPlayer(_objectId); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 05d6c8fdf3..05fe7c7bd6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -31,10 +31,9 @@ import org.l2jmobius.commons.crypt.nProtect; import org.l2jmobius.commons.crypt.nProtect.RestrictionType; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.communitybbs.Manager.MailBBSManager; -import org.l2jmobius.gameserver.datatables.GmListTable; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.datatables.csv.MapRegionTable; -import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.handler.custom.CustomWorldHandler; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.ClanHallManager; @@ -588,7 +587,7 @@ public class EnterWorld extends GameClientPacket { gmStartupProcess: { - if (Config.GM_STARTUP_BUILDER_HIDE && AdminCommandAccessRights.getInstance().hasAccess("admin_hide", player.getAccessLevel())) + if (Config.GM_STARTUP_BUILDER_HIDE && AdminData.getInstance().hasAccess("admin_hide", player.getAccessLevel())) { player.setInRefusalMode(true); player.setIsInvul(true); @@ -602,28 +601,28 @@ public class EnterWorld extends GameClientPacket break gmStartupProcess; } - if (Config.GM_STARTUP_INVULNERABLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invul", player.getAccessLevel())) + if (Config.GM_STARTUP_INVULNERABLE && AdminData.getInstance().hasAccess("admin_invul", player.getAccessLevel())) { player.setIsInvul(true); } - if (Config.GM_STARTUP_INVISIBLE && AdminCommandAccessRights.getInstance().hasAccess("admin_invisible", player.getAccessLevel())) + if (Config.GM_STARTUP_INVISIBLE && AdminData.getInstance().hasAccess("admin_invisible", player.getAccessLevel())) { player.getAppearance().setInvisible(); } - if (Config.GM_STARTUP_SILENCE && AdminCommandAccessRights.getInstance().hasAccess("admin_silence", player.getAccessLevel())) + if (Config.GM_STARTUP_SILENCE && AdminData.getInstance().hasAccess("admin_silence", player.getAccessLevel())) { player.setInRefusalMode(true); } - if (Config.GM_STARTUP_AUTO_LIST && AdminCommandAccessRights.getInstance().hasAccess("admin_gmliston", player.getAccessLevel())) + if (Config.GM_STARTUP_AUTO_LIST && AdminData.getInstance().hasAccess("admin_gmliston", player.getAccessLevel())) { - GmListTable.getInstance().addGm(player, false); + AdminData.getInstance().addGm(player, false); } else { - GmListTable.getInstance().addGm(player, true); + AdminData.getInstance().addGm(player, true); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java index ecfcf40263..621d0a874e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestBypassToServer.java @@ -21,7 +21,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.communitybbs.CommunityBoard; -import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.handler.custom.CustomBypassHandler; @@ -97,7 +97,7 @@ public class RequestBypassToServer extends GameClientPacket return; } - if (!AdminCommandAccessRights.getInstance().hasAccess(command, player.getAccessLevel())) + if (!AdminData.getInstance().hasAccess(command, player.getAccessLevel())) { player.sendMessage("You don't have the access right to use this command!"); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java index 462228e522..891543d9af 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestDropItem.java @@ -19,7 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.GmListTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.CursedWeaponsManager; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -221,7 +221,7 @@ public class RequestDropItem extends GameClientPacket { final String msg = "Character (" + player.getName() + ") has dropped (" + dropedItem.getCount() + ")adena at (" + _x + "," + _y + "," + _z + ")"; LOGGER.warning(msg); - GmListTable.broadcastMessageToGMs(msg); + AdminData.broadcastMessageToGMs(msg); } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java index 67d7138ddb..c958121a65 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGmList.java @@ -16,7 +16,7 @@ */ package org.l2jmobius.gameserver.network.clientpackets; -import org.l2jmobius.gameserver.datatables.GmListTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; /** * This class handles RequestGmLista packet triggered by /gmlist command @@ -36,6 +36,6 @@ public class RequestGmList extends GameClientPacket return; } - GmListTable.getInstance().sendListToPlayer(getClient().getPlayer()); + AdminData.getInstance().sendListToPlayer(getClient().getPlayer()); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java index e889fd4b9f..e124003538 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetition.java @@ -17,7 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.GmListTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -48,7 +48,7 @@ public class RequestPetition extends GameClientPacket return; } - if (!GmListTable.getInstance().isGmOnline(false)) + if (!AdminData.getInstance().isGmOnline(false)) { player.sendPacket(SystemMessageId.NO_GM_PROVIDING_SERVICE_NOW); return; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java index 5c1c0d9f75..f8afd2a928 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestPetitionCancel.java @@ -17,7 +17,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.GmListTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -70,7 +70,7 @@ public class RequestPetitionCancel extends GameClientPacket // Notify all GMs that the player's pending petition has been cancelled. final String msgContent = player.getName() + " has canceled a pending petition."; - GmListTable.broadcastToGMs(new CreatureSay(player.getObjectId(), 17, "Petition System", msgContent)); + AdminData.broadcastToGMs(new CreatureSay(player.getObjectId(), 17, "Petition System", msgContent)); } else { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java index a884d26197..84c728b76d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/SendBypassBuildCmd.java @@ -19,7 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.sql.AdminCommandAccessRights; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.handler.AdminCommandHandler; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -52,7 +52,7 @@ public class SendBypassBuildCmd extends GameClientPacket } // Checks The Access and notify requester if requester access it not allowed for that command - if (!AdminCommandAccessRights.getInstance().hasAccess(_command, player.getAccessLevel())) + if (!AdminData.getInstance().hasAccess(_command, player.getAccessLevel())) { player.sendMessage("You don't have the access right to use this command!"); LOGGER.warning("Character " + player.getName() + " tried to use admin command " + _command + ", but doesn't have access to it!"); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java index 9167334fff..a5d14abcf6 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/Die.java @@ -17,7 +17,7 @@ package org.l2jmobius.gameserver.network.serverpackets; import org.l2jmobius.gameserver.datatables.AccessLevel; -import org.l2jmobius.gameserver.datatables.sql.AccessLevels; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; import org.l2jmobius.gameserver.model.SiegeClan; @@ -40,7 +40,7 @@ public class Die extends GameServerPacket private final boolean _fake; private boolean _sweepable; private boolean _canTeleport; - private AccessLevel _access = AccessLevels.getInstance()._userAccessLevel; + private AccessLevel _access = AdminData.getInstance()._userAccessLevel; private org.l2jmobius.gameserver.model.clan.Clan _clan; Creature _creature; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java index 56866d604f..f7a4ddaca9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/ExHeroList.java @@ -18,9 +18,9 @@ package org.l2jmobius.gameserver.network.serverpackets; import java.util.Map; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.entity.Hero; import org.l2jmobius.gameserver.model.entity.olympiad.Olympiad; -import org.l2jmobius.gameserver.templates.StatsSet; /** * Format: (ch) d [SdSdSdd] d: size [ S: hero name d: hero class ID S: hero clan name d: hero clan crest id S: hero ally name d: hero Ally id d: count ] @@ -50,12 +50,12 @@ public class ExHeroList extends GameServerPacket { final StatsSet hero = _heroList.get(heroId); writeS(hero.getString(Olympiad.CHAR_NAME)); - writeD(hero.getInteger(Olympiad.CLASS_ID)); + writeD(hero.getInt(Olympiad.CLASS_ID)); writeS(hero.getString(Hero.CLAN_NAME, "")); - writeD(hero.getInteger(Hero.CLAN_CREST, 0)); + writeD(hero.getInt(Hero.CLAN_CREST, 0)); writeS(hero.getString(Hero.ALLY_NAME, "")); - writeD(hero.getInteger(Hero.ALLY_CREST, 0)); - writeD(hero.getInteger(Hero.COUNT)); + writeD(hero.getInt(Hero.ALLY_CREST, 0)); + writeD(hero.getInt(Hero.COUNT)); } } } \ No newline at end of file diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java index 5271396e90..753f55f8cb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/serverpackets/SSQStatus.java @@ -16,11 +16,11 @@ */ package org.l2jmobius.gameserver.network.serverpackets; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSigns; import org.l2jmobius.gameserver.model.entity.sevensigns.SevenSignsFestival; import org.l2jmobius.gameserver.network.SystemMessageId; -import org.l2jmobius.gameserver.templates.StatsSet; /** * Seven Signs Record Update packet type id 0xf5 format: c cc (Page Num = 1 -> 4, period) 1: [ddd cc dd ddd c ddd c] 2: [hc [cd (dc (S))] 3: [ccc (cccc)] 4: [(cchh)] diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCharge.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCharge.java index 44190379f5..5c244a22d0 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCharge.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCharge.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -24,7 +25,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.EtcStatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.skills.effects.EffectCharge; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillCharge extends Skill { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeDmg.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeDmg.java index 397e12b140..473b333286 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeDmg.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeDmg.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; @@ -28,7 +29,6 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.skills.BaseStats; import org.l2jmobius.gameserver.skills.Formulas; import org.l2jmobius.gameserver.skills.effects.EffectCharge; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.item.WeaponType; public class SkillChargeDmg extends Skill @@ -39,7 +39,7 @@ public class SkillChargeDmg extends Skill public SkillChargeDmg(StatsSet set) { super(set); - chargeSkillId = set.getInteger("charge_skill_id"); + chargeSkillId = set.getInt("charge_skill_id"); } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeEffect.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeEffect.java index d9b6edf101..81dabd0613 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeEffect.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillChargeEffect.java @@ -17,6 +17,7 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; @@ -24,7 +25,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.EtcStatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.skills.effects.EffectCharge; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillChargeEffect extends Skill { @@ -33,7 +33,7 @@ public class SkillChargeEffect extends Skill public SkillChargeEffect(StatsSet set) { super(set); - chargeSkillId = set.getInteger("charge_skill_id"); + chargeSkillId = set.getInt("charge_skill_id"); } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCreateItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCreateItem.java index f3795bc293..654c666395 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCreateItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillCreateItem.java @@ -16,9 +16,12 @@ */ package org.l2jmobius.gameserver.skills.handlers; +import java.util.List; + import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.idfactory.IdFactory; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; @@ -26,23 +29,22 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; /** * @author Nemesiss */ public class SkillCreateItem extends Skill { - private final int[] _createItemId; + private final List _createItemId; private final int _createItemCount; private final int _randomCount; public SkillCreateItem(StatsSet set) { super(set); - _createItemId = set.getIntegerArray("create_item_id"); - _createItemCount = set.getInteger("create_item_count", 0); - _randomCount = set.getInteger("random_count", 1); + _createItemId = set.getList("create_item_id", Integer.class); + _createItemCount = set.getInt("create_item_count", 0); + _randomCount = set.getInt("random_count", 1); } @Override @@ -61,8 +63,8 @@ public class SkillCreateItem extends Skill if (creature instanceof PlayerInstance) { final int count = _createItemCount * (Rnd.get(_randomCount) + 1); - final int rndid = Rnd.get(_createItemId.length); - giveItems(player, _createItemId[rndid], count); + final int rndId = Rnd.get(_createItemId.size()); + giveItems(player, _createItemId.get(rndId), count); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDefault.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDefault.java index eab7ff9bad..1aaba68567 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDefault.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDefault.java @@ -17,12 +17,12 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillDefault extends Skill { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDrain.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDrain.java index d83254a130..9f609918d3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDrain.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillDrain.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.CubicInstance; @@ -27,7 +28,6 @@ import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.skills.Formulas; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillDrain extends Skill { @@ -40,7 +40,7 @@ public class SkillDrain extends Skill super(set); _absorbPart = set.getFloat("absorbPart", 0.f); - _absorbAbs = set.getInteger("absorbAbs", 0); + _absorbAbs = set.getInt("absorbAbs", 0); } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillElemental.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillElemental.java index 4ef0d51ae3..836a343728 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillElemental.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillElemental.java @@ -18,12 +18,12 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.skills.Formulas; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillElemental extends Skill { @@ -35,11 +35,11 @@ public class SkillElemental extends Skill super(set); _seeds = new int[3]; - _seeds[0] = set.getInteger("seed1", 0); - _seeds[1] = set.getInteger("seed2", 0); - _seeds[2] = set.getInteger("seed3", 0); + _seeds[0] = set.getInt("seed1", 0); + _seeds[1] = set.getInt("seed2", 0); + _seeds[2] = set.getInt("seed3", 0); - if (set.getInteger("seed_any", 0) == 1) + if (set.getInt("seed_any", 0) == 1) { _seedAny = true; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSeed.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSeed.java index 0d36035c43..94473378fe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSeed.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSeed.java @@ -18,10 +18,10 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.skills.effects.EffectSeed; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillSeed extends Skill { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignet.java index 583ee03f41..60a60b117e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignet.java @@ -20,12 +20,12 @@ import org.l2jmobius.gameserver.datatables.sql.NpcTable; import org.l2jmobius.gameserver.idfactory.IdFactory; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.EffectPointInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; public class SkillSignet extends Skill @@ -36,8 +36,8 @@ public class SkillSignet extends Skill public SkillSignet(StatsSet set) { super(set); - _effectNpcId = set.getInteger("effectNpcId", -1); - effectId = set.getInteger("effectId", -1); + _effectNpcId = set.getInt("effectNpcId", -1); + effectId = set.getInt("effectId", -1); } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignetCasttime.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignetCasttime.java index 2e339d9013..a1a372acee 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignetCasttime.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSignetCasttime.java @@ -17,9 +17,9 @@ package org.l2jmobius.gameserver.skills.handlers; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; -import org.l2jmobius.gameserver.templates.StatsSet; public class SkillSignetCasttime extends Skill { @@ -29,8 +29,8 @@ public class SkillSignetCasttime extends Skill public SkillSignetCasttime(StatsSet set) { super(set); - _effectNpcId = set.getInteger("effectNpcId", -1); - effectId = set.getInteger("effectId", -1); + _effectNpcId = set.getInt("effectNpcId", -1); + effectId = set.getInt("effectId", -1); } @Override diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSummon.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSummon.java index 6a518f4f56..5e5a6a235b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSummon.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/skills/handlers/SkillSummon.java @@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.datatables.sql.NpcTable; import org.l2jmobius.gameserver.datatables.xml.ExperienceData; import org.l2jmobius.gameserver.idfactory.IdFactory; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.actor.Creature; @@ -32,7 +33,6 @@ import org.l2jmobius.gameserver.model.actor.instance.SummonInstance; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.PetInfo; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; public class SkillSummon extends Skill @@ -56,21 +56,21 @@ public class SkillSummon extends Skill { super(set); - _npcId = set.getInteger("npcId", 0); // default for undescribed skills + _npcId = set.getInt("npcId", 0); // default for undescribed skills _expPenalty = set.getFloat("expPenalty", 0.f); - _isCubic = set.getBool("isCubic", false); + _isCubic = set.getBoolean("isCubic", false); - _activationtime = set.getInteger("activationtime", 8); - _activationchance = set.getInteger("activationchance", 30); + _activationtime = set.getInt("activationtime", 8); + _activationchance = set.getInt("activationchance", 30); - _summonTotalLifeTime = set.getInteger("summonTotalLifeTime", 1200000); // 20 minutes default - _summonTimeLostIdle = set.getInteger("summonTimeLostIdle", 0); - _summonTimeLostActive = set.getInteger("summonTimeLostActive", 0); + _summonTotalLifeTime = set.getInt("summonTotalLifeTime", 1200000); // 20 minutes default + _summonTimeLostIdle = set.getInt("summonTimeLostIdle", 0); + _summonTimeLostActive = set.getInt("summonTimeLostActive", 0); - _itemConsumeOT = set.getInteger("itemConsumeCountOT", 0); - _itemConsumeIdOT = set.getInteger("itemConsumeIdOT", 0); - _itemConsumeTime = set.getInteger("itemConsumeTime", 0); - _itemConsumeSteps = set.getInteger("itemConsumeSteps", 0); + _itemConsumeOT = set.getInt("itemConsumeCountOT", 0); + _itemConsumeIdOT = set.getInt("itemConsumeIdOT", 0); + _itemConsumeTime = set.getInt("itemConsumeTime", 0); + _itemConsumeSteps = set.getInt("itemConsumeSteps", 0); } public boolean checkCondition(Creature creature) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/HelperBuff.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/HelperBuff.java index dafe48af3f..c3e966c69d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/HelperBuff.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/HelperBuff.java @@ -16,6 +16,8 @@ */ package org.l2jmobius.gameserver.templates; +import org.l2jmobius.gameserver.model.StatsSet; + /** * This class represents a Newbie Helper Buff Author: Ayor */ @@ -46,10 +48,10 @@ public class HelperBuff */ public HelperBuff(StatsSet set) { - _lowerLevel = set.getInteger("lowerLevel"); - _upperLevel = set.getInteger("upperLevel"); - _skillID = set.getInteger("skillID"); - _skillLevel = set.getInteger("skillLevel"); + _lowerLevel = set.getInt("lowerLevel"); + _upperLevel = set.getInt("upperLevel"); + _skillID = set.getInt("skillID"); + _skillLevel = set.getInt("skillLevel"); if ("false".equals(set.getString("isMagicClass"))) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/StatsSet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/StatsSet.java deleted file mode 100644 index b88f386f9c..0000000000 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/StatsSet.java +++ /dev/null @@ -1,641 +0,0 @@ -/* - * This file is part of the L2J Mobius project. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.l2jmobius.gameserver.templates; - -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Logger; - -/** - * @author mkizub
- * This class is used in order to have a set of couples (key,value).
- * Methods deployed are accessors to the set (add/get value from its key) and addition of a whole set in the current one. - */ -public class StatsSet -{ - private final Logger LOGGER = Logger.getLogger(StatsSet.class.getName()); - private final Map _set = new HashMap<>(); - - /** - * Returns the set of values - * @return HashMap - */ - public Map getSet() - { - return _set; - } - - /** - * Add a set of couple values in the current set - * @param newSet : StatsSet pointing out the list of couples to add in the current set - */ - public synchronized void add(StatsSet newSet) - { - final Map newMap = newSet.getSet(); - for (String key : newMap.keySet()) - { - final Object value = newMap.get(key); - _set.put(key, value); - } - } - - /** - * Return the boolean associated to the key put in parameter ("name") - * @param name : String designating the key in the set - * @return boolean : value associated to the key - */ - public synchronized boolean getBool(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Boolean value required, but not specified"); - } - if (val instanceof Boolean) - { - return ((Boolean) val).booleanValue(); - } - try - { - return Boolean.parseBoolean((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Boolean value required, but found: " + val); - } - } - - /** - * Return the boolean associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : boolean designating the default value if value associated with the key is null - * @return boolean : value of the key - */ - public synchronized boolean getBool(String name, boolean deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Boolean) - { - return ((Boolean) val).booleanValue(); - } - try - { - return Boolean.parseBoolean((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Boolean value required, but found: " + val); - } - } - - /** - * Returns the int associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : byte designating the default value if value associated with the key is null - * @return byte : value associated to the key - */ - public synchronized byte getByte(String name, byte deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Number) - { - return ((Number) val).byteValue(); - } - try - { - return Byte.parseByte((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Byte value required, but found: " + val); - } - } - - /** - * Returns the byte associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return byte : value associated to the key - */ - public synchronized byte getByte(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Byte value required, but not specified"); - } - if (val instanceof Number) - { - return ((Number) val).byteValue(); - } - try - { - return Byte.parseByte((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Byte value required, but found: " + val); - } - } - - /** - * Returns the short associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : short designating the default value if value associated with the key is null - * @return short : value associated to the key - */ - public synchronized short getShort(String name, short deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Number) - { - return ((Number) val).shortValue(); - } - try - { - return Short.parseShort((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Short value required, but found: " + val); - } - } - - /** - * Returns the short associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return short : value associated to the key - */ - public synchronized short getShort(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Short value required, but not specified"); - } - if (val instanceof Number) - { - return ((Number) val).shortValue(); - } - try - { - return Short.parseShort((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Short value required, but found: " + val); - } - } - - /** - * Returns the int associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return int : value associated to the key - */ - public synchronized int getInteger(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Integer value required, but not specified"); - } - if (val instanceof Number) - { - return ((Number) val).intValue(); - } - try - { - return Integer.parseInt((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Integer value required, but found: " + val); - } - } - - /** - * Returns the int associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : int designating the default value if value associated with the key is null - * @return int : value associated to the key - */ - public synchronized int getInteger(String name, int deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Number) - { - return ((Number) val).intValue(); - } - try - { - return Integer.parseInt((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Integer value required, but found: " + val); - } - } - - /** - * Returns the int[] associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @return int[] : value associated to the key - */ - public synchronized int[] getIntegerArray(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new RuntimeException(); - } - if (val instanceof Number) - { - final int[] result = - { - ((Number) val).intValue() - }; - return result; - } - int c = 0; - final String[] vals = ((String) val).split(";"); - final int[] result = new int[vals.length]; - for (String v : vals) - { - try - { - result[c] = Integer.parseInt(v); - c++; - } - catch (Exception e) - { - throw new IllegalArgumentException("Integer value required, but found: " + val); - } - } - return result; - } - - /** - * Returns the long associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return long : value associated to the key - */ - public synchronized long getLong(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new RuntimeException(); - } - if (val instanceof Number) - { - return ((Number) val).longValue(); - } - try - { - return Long.parseLong((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Integer value required, but found: " + val); - } - } - - /** - * Returns the long associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : long designating the default value if value associated with the key is null - * @return long : value associated to the key - */ - public synchronized long getLong(String name, int deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Number) - { - return ((Number) val).longValue(); - } - try - { - return Long.parseLong((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Integer value required, but found: " + val); - } - } - - /** - * Returns the float associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return float : value associated to the key - */ - public synchronized float getFloat(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Float value required, but not specified"); - } - if (val instanceof Number) - { - return ((Number) val).floatValue(); - } - try - { - return (float) Double.parseDouble((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Float value required, but found: " + val); - } - } - - /** - * Returns the float associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : float designating the default value if value associated with the key is null - * @return float : value associated to the key - */ - public synchronized float getFloat(String name, float deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Number) - { - return ((Number) val).floatValue(); - } - try - { - return (float) Double.parseDouble((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Float value required, but found: " + val); - } - } - - /** - * Returns the double associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return double : value associated to the key - */ - public synchronized double getDouble(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Float value required, but not specified"); - } - if (val instanceof Number) - { - return ((Number) val).doubleValue(); - } - try - { - return Double.parseDouble((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Float value required, but found: " + val); - } - } - - /** - * Returns the double associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : float designating the default value if value associated with the key is null - * @return double : value associated to the key - */ - public synchronized double getDouble(String name, float deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (val instanceof Number) - { - return ((Number) val).doubleValue(); - } - try - { - return Double.parseDouble((String) val); - } - catch (Exception e) - { - throw new IllegalArgumentException("Float value required, but found: " + val); - } - } - - /** - * Returns the String associated to the key put in parameter ("name"). - * @param name : String designating the key in the set - * @return String : value associated to the key - */ - public synchronized String getString(String name) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("String value required, but not specified"); - } - return String.valueOf(val); - } - - /** - * Returns the String associated to the key put in parameter ("name"). If the value associated to the key is null, this method returns the value of the parameter deflt. - * @param name : String designating the key in the set - * @param deflt : String designating the default value if value associated with the key is null - * @return String : value associated to the key - */ - public synchronized String getString(String name, String deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - return String.valueOf(val); - } - - /** - * Returns an enumeration of <T> from the set - * @param : Class of the enumeration returned - * @param name : String designating the key in the set - * @param enumClass : Class designating the class of the value associated with the key in the set - * @return Enum - */ - @SuppressWarnings("unchecked") - public synchronized > T getEnum(String name, Class enumClass) - { - final Object val = _set.get(name); - if (val == null) - { - throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + " required, but not specified"); - } - if (enumClass.isInstance(val)) - { - return (T) val; - } - try - { - return Enum.valueOf(enumClass, String.valueOf(val)); - } - catch (Exception e) - { - throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + "required, but found: " + val); - } - } - - /** - * Returns an enumeration of <T> from the set. If the enumeration is empty, the method returns the value of the parameter "deflt". - * @param : Class of the enumeration returned - * @param name : String designating the key in the set - * @param enumClass : Class designating the class of the value associated with the key in the set - * @param deflt : designating the value by default - * @return Enum - */ - @SuppressWarnings("unchecked") - public synchronized > T getEnum(String name, Class enumClass, T deflt) - { - final Object val = _set.get(name); - if (val == null) - { - return deflt; - } - if (enumClass.isInstance(val)) - { - return (T) val; - } - try - { - return Enum.valueOf(enumClass, String.valueOf(val)); - } - catch (Exception e) - { - throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + "required, but found: " + val); - } - } - - /** - * Add the String hold in param "value" for the key "name" - * @param name : String designating the key in the set - * @param value : String corresponding to the value associated with the key - */ - public synchronized void set(String name, String value) - { - _set.put(name, value); - } - - /** - * Add the boolean hold in param "value" for the key "name" - * @param name : String designating the key in the set - * @param value : boolean corresponding to the value associated with the key - */ - public synchronized void set(String name, boolean value) - { - _set.put(name, value); - } - - /** - * Add the int hold in param "value" for the key "name" - * @param name : String designating the key in the set - * @param value : int corresponding to the value associated with the key - */ - public synchronized void set(String name, int value) - { - _set.put(name, value); - } - - /** - * Add the double hold in param "value" for the key "name" - * @param name : String designating the key in the set - * @param value : double corresponding to the value associated with the key - */ - public synchronized void set(String name, double value) - { - _set.put(name, value); - } - - /** - * Add the long hold in param "value" for the key "name" - * @param name : String designating the key in the set - * @param value : double corresponding to the value associated with the key - */ - public synchronized void set(String name, long value) - { - _set.put(name, value); - } - - /** - * Add the Enum hold in param "value" for the key "name" - * @param name : String designating the key in the set - * @param value : Enum corresponding to the value associated with the key - */ - public synchronized void set(String name, Enum value) - { - _set.put(name, value); - } - - /** - * Safe version of "set". Expected values are within [min, max[
- * Add the int hold in param "value" for the key "name". - * @param name : String designating the key in the set - * @param value : int corresponding to the value associated with the key - * @param min - * @param max - * @param reference - */ - public synchronized void safeSet(String name, int value, int min, int max, String reference) - { - assert ((min > max) || ((value >= min) && (value < max))); - - if ((min <= max) && ((value < min) || (value >= max))) - { - LOGGER.info("[StatsSet][safeSet] Incorrect value: " + value + "for: " + name + "Ref: " + reference); - } - - set(name, value); - } - - @Override - public String toString() - { - return "StatsSet [_set=" + _set + "]"; - } -} diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/CreatureTemplate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/CreatureTemplate.java index fc850ef45e..6136b85601 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/CreatureTemplate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/CreatureTemplate.java @@ -16,7 +16,7 @@ */ package org.l2jmobius.gameserver.templates.creatures; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; /** * @version $Revision: 1.2.4.6 $ $Date: 2005/04/02 15:57:51 $ @@ -99,72 +99,72 @@ public class CreatureTemplate public CreatureTemplate(StatsSet set) { // Base stats - baseSTR = set.getInteger("baseSTR"); - baseCON = set.getInteger("baseCON"); - baseDEX = set.getInteger("baseDEX"); - baseINT = set.getInteger("baseINT"); - baseWIT = set.getInteger("baseWIT"); - baseMEN = set.getInteger("baseMEN"); + baseSTR = set.getInt("baseSTR"); + baseCON = set.getInt("baseCON"); + baseDEX = set.getInt("baseDEX"); + baseINT = set.getInt("baseINT"); + baseWIT = set.getInt("baseWIT"); + baseMEN = set.getInt("baseMEN"); baseHpMax = set.getFloat("baseHpMax"); baseCpMax = set.getFloat("baseCpMax"); baseMpMax = set.getFloat("baseMpMax"); baseHpReg = set.getFloat("baseHpReg"); baseMpReg = set.getFloat("baseMpReg"); - basePAtk = set.getInteger("basePAtk"); - baseMAtk = set.getInteger("baseMAtk"); - basePDef = set.getInteger("basePDef"); - baseMDef = set.getInteger("baseMDef"); - basePAtkSpd = set.getInteger("basePAtkSpd"); - baseMAtkSpd = set.getInteger("baseMAtkSpd"); + basePAtk = set.getInt("basePAtk"); + baseMAtk = set.getInt("baseMAtk"); + basePDef = set.getInt("basePDef"); + baseMDef = set.getInt("baseMDef"); + basePAtkSpd = set.getInt("basePAtkSpd"); + baseMAtkSpd = set.getInt("baseMAtkSpd"); baseMReuseRate = set.getFloat("baseMReuseDelay", 1.f); - baseShldDef = set.getInteger("baseShldDef"); - baseAtkRange = set.getInteger("baseAtkRange"); - baseShldRate = set.getInteger("baseShldRate"); - baseCritRate = set.getInteger("baseCritRate"); - baseMCritRate = set.getInteger("baseMCritRate", 5); - baseWalkSpd = set.getInteger("baseWalkSpd"); - baseRunSpd = set.getInteger("baseRunSpd"); + baseShldDef = set.getInt("baseShldDef"); + baseAtkRange = set.getInt("baseAtkRange"); + baseShldRate = set.getInt("baseShldRate"); + baseCritRate = set.getInt("baseCritRate"); + baseMCritRate = set.getInt("baseMCritRate", 5); + baseWalkSpd = set.getInt("baseWalkSpd"); + baseRunSpd = set.getInt("baseRunSpd"); // SpecialStats - baseBreath = set.getInteger("baseBreath", 100); - baseAggression = set.getInteger("baseAggression", 0); - baseBleed = set.getInteger("baseBleed", 0); - basePoison = set.getInteger("basePoison", 0); - baseStun = set.getInteger("baseStun", 0); - baseRoot = set.getInteger("baseRoot", 0); - baseMovement = set.getInteger("baseMovement", 0); - baseConfusion = set.getInteger("baseConfusion", 0); - baseSleep = set.getInteger("baseSleep", 0); - baseFire = set.getInteger("baseFire", 0); - baseWind = set.getInteger("baseWind", 0); - baseWater = set.getInteger("baseWater", 0); - baseEarth = set.getInteger("baseEarth", 0); - baseHoly = set.getInteger("baseHoly", 0); - baseDark = set.getInteger("baseDark", 0); - baseAggressionVuln = set.getInteger("baseAaggressionVuln", 1); - baseBleedVuln = set.getInteger("baseBleedVuln", 1); - basePoisonVuln = set.getInteger("basePoisonVuln", 1); - baseStunVuln = set.getInteger("baseStunVuln", 1); - baseRootVuln = set.getInteger("baseRootVuln", 1); - baseMovementVuln = set.getInteger("baseMovementVuln", 1); - baseConfusionVuln = set.getInteger("baseConfusionVuln", 1); - baseSleepVuln = set.getInteger("baseSleepVuln", 1); - baseFireVuln = set.getInteger("baseFireVuln", 1); - baseWindVuln = set.getInteger("baseWindVuln", 1); - baseWaterVuln = set.getInteger("baseWaterVuln", 1); - baseEarthVuln = set.getInteger("baseEarthVuln", 1); - baseHolyVuln = set.getInteger("baseHolyVuln", 1); - baseDarkVuln = set.getInteger("baseDarkVuln", 1); - baseCritVuln = set.getInteger("baseCritVuln", 1); + baseBreath = set.getInt("baseBreath", 100); + baseAggression = set.getInt("baseAggression", 0); + baseBleed = set.getInt("baseBleed", 0); + basePoison = set.getInt("basePoison", 0); + baseStun = set.getInt("baseStun", 0); + baseRoot = set.getInt("baseRoot", 0); + baseMovement = set.getInt("baseMovement", 0); + baseConfusion = set.getInt("baseConfusion", 0); + baseSleep = set.getInt("baseSleep", 0); + baseFire = set.getInt("baseFire", 0); + baseWind = set.getInt("baseWind", 0); + baseWater = set.getInt("baseWater", 0); + baseEarth = set.getInt("baseEarth", 0); + baseHoly = set.getInt("baseHoly", 0); + baseDark = set.getInt("baseDark", 0); + baseAggressionVuln = set.getInt("baseAaggressionVuln", 1); + baseBleedVuln = set.getInt("baseBleedVuln", 1); + basePoisonVuln = set.getInt("basePoisonVuln", 1); + baseStunVuln = set.getInt("baseStunVuln", 1); + baseRootVuln = set.getInt("baseRootVuln", 1); + baseMovementVuln = set.getInt("baseMovementVuln", 1); + baseConfusionVuln = set.getInt("baseConfusionVuln", 1); + baseSleepVuln = set.getInt("baseSleepVuln", 1); + baseFireVuln = set.getInt("baseFireVuln", 1); + baseWindVuln = set.getInt("baseWindVuln", 1); + baseWaterVuln = set.getInt("baseWaterVuln", 1); + baseEarthVuln = set.getInt("baseEarthVuln", 1); + baseHolyVuln = set.getInt("baseHolyVuln", 1); + baseDarkVuln = set.getInt("baseDarkVuln", 1); + baseCritVuln = set.getInt("baseCritVuln", 1); - isUndead = set.getInteger("isUndead", 0) == 1; + isUndead = set.getInt("isUndead", 0) == 1; // C4 Stats - baseMpConsumeRate = set.getInteger("baseMpConsumeRate", 0); - baseHpConsumeRate = set.getInteger("baseHpConsumeRate", 0); + baseMpConsumeRate = set.getInt("baseMpConsumeRate", 0); + baseHpConsumeRate = set.getInt("baseHpConsumeRate", 0); // Geometry - collisionRadius = set.getInteger("collision_radius"); - collisionHeight = set.getInteger("collision_height"); + collisionRadius = set.getInt("collision_radius"); + collisionHeight = set.getInt("collision_height"); } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/NpcTemplate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/NpcTemplate.java index fd49ddab14..7909d21582 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/NpcTemplate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/NpcTemplate.java @@ -26,10 +26,10 @@ import org.l2jmobius.gameserver.model.DropCategory; import org.l2jmobius.gameserver.model.DropData; import org.l2jmobius.gameserver.model.MinionData; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.base.ClassId; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.skills.Stats; -import org.l2jmobius.gameserver.templates.StatsSet; /** * This cl contains all generic data of a Spawn object.
@@ -134,21 +134,21 @@ public class NpcTemplate extends CreatureTemplate public NpcTemplate(StatsSet set, boolean custom) { super(set); - npcId = set.getInteger("npcId"); - idTemplate = set.getInteger("idTemplate"); + npcId = set.getInt("npcId"); + idTemplate = set.getInt("idTemplate"); type = set.getString("type"); name = set.getString("name"); - serverSideName = set.getBool("serverSideName"); + serverSideName = set.getBoolean("serverSideName"); title = set.getString("title"); - serverSideTitle = set.getBool("serverSideTitle"); + serverSideTitle = set.getBoolean("serverSideTitle"); sex = set.getString("sex"); level = set.getByte("level"); - rewardExp = set.getInteger("rewardExp"); - rewardSp = set.getInteger("rewardSp"); - aggroRange = set.getInteger("aggroRange"); - rhand = set.getInteger("rhand"); - lhand = set.getInteger("lhand"); - armor = set.getInteger("armor"); + rewardExp = set.getInt("rewardExp"); + rewardSp = set.getInt("rewardSp"); + aggroRange = set.getInt("aggroRange"); + rhand = set.getInt("rhand"); + lhand = set.getInt("lhand"); + armor = set.getInt("armor"); final String f = set.getString("factionId", null); if (f == null) { @@ -158,8 +158,8 @@ public class NpcTemplate extends CreatureTemplate { factionId = f.intern(); } - factionRange = set.getInteger("factionRange", 0); - absorbLevel = set.getInteger("absorb_level", 0); + factionRange = set.getInt("factionRange", 0); + absorbLevel = set.getInt("absorb_level", 0); absorbType = AbsorbCrystalType.valueOf(set.getString("absorb_type")); _npcStatsSet = set; _custom = custom; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/PlayerTemplate.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/PlayerTemplate.java index 33b4792ad0..93a07fd553 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/PlayerTemplate.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/creatures/PlayerTemplate.java @@ -20,9 +20,9 @@ import java.util.ArrayList; import java.util.List; import org.l2jmobius.gameserver.datatables.xml.ItemTable; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.base.ClassId; import org.l2jmobius.gameserver.model.base.Race; -import org.l2jmobius.gameserver.templates.StatsSet; import org.l2jmobius.gameserver.templates.item.Item; /** @@ -55,17 +55,17 @@ public class PlayerTemplate extends CreatureTemplate public PlayerTemplate(StatsSet set) { super(set); - classId = ClassId.values()[set.getInteger("classId")]; - race = Race.values()[set.getInteger("raceId")]; + classId = ClassId.values()[set.getInt("classId")]; + race = Race.values()[set.getInt("raceId")]; className = set.getString("className"); - _currentCollisionRadius = set.getInteger("collision_radius"); - _currentCollisionHeight = set.getInteger("collision_height"); + _currentCollisionRadius = set.getInt("collision_radius"); + _currentCollisionHeight = set.getInt("collision_height"); - spawnX = set.getInteger("spawnX"); - spawnY = set.getInteger("spawnY"); - spawnZ = set.getInteger("spawnZ"); + spawnX = set.getInt("spawnX"); + spawnY = set.getInt("spawnY"); + spawnZ = set.getInt("spawnZ"); - classBaseLevel = set.getInteger("classBaseLevel"); + classBaseLevel = set.getInt("classBaseLevel"); lvlHpAdd = set.getFloat("lvlHpAdd"); lvlHpMod = set.getFloat("lvlHpMod"); lvlCpAdd = set.getFloat("lvlCpAdd"); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Armor.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Armor.java index 9b220f437f..d9ab77ced4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Armor.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Armor.java @@ -21,12 +21,12 @@ import java.util.List; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; import org.l2jmobius.gameserver.skills.Env; import org.l2jmobius.gameserver.skills.funcs.Func; import org.l2jmobius.gameserver.skills.funcs.FuncTemplate; -import org.l2jmobius.gameserver.templates.StatsSet; /** * This class is dedicated to the management of armors. @@ -55,14 +55,14 @@ public class Armor extends Item public Armor(ArmorType type, StatsSet set) { super(type, set); - _avoidModifier = set.getInteger("avoid_modify"); - _pDef = set.getInteger("p_def"); - _mDef = set.getInteger("m_def"); - _mpBonus = set.getInteger("mp_bonus", 0); - _hpBonus = set.getInteger("hp_bonus", 0); + _avoidModifier = set.getInt("avoid_modify"); + _pDef = set.getInt("p_def"); + _mDef = set.getInt("m_def"); + _mpBonus = set.getInt("mp_bonus", 0); + _hpBonus = set.getInt("hp_bonus", 0); - final int sId = set.getInteger("item_skill_id"); - final int sLv = set.getInteger("item_skill_lvl"); + final int sId = set.getInt("item_skill_id"); + final int sLv = set.getInt("item_skill_lvl"); if ((sId > 0) && (sLv > 0)) { _itemSkill = SkillTable.getInstance().getInfo(sId, sLv); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/EtcItem.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/EtcItem.java index cfa63127b8..a7a12f629a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/EtcItem.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/EtcItem.java @@ -16,7 +16,7 @@ */ package org.l2jmobius.gameserver.templates.item; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; /** * This class is dedicated to the management of EtcItem. diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Henna.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Henna.java index ffcab60917..37671c6417 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Henna.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Henna.java @@ -16,7 +16,7 @@ */ package org.l2jmobius.gameserver.templates.item; -import org.l2jmobius.gameserver.templates.StatsSet; +import org.l2jmobius.gameserver.model.StatsSet; public class Henna { @@ -34,17 +34,17 @@ public class Henna public Henna(StatsSet set) { - symbolId = set.getInteger("symbol_id"); + symbolId = set.getInt("symbol_id"); symbolName = ""; // set.getString("symbol_name"); - dye = set.getInteger("dye"); - price = set.getInteger("price"); - amount = set.getInteger("amount"); - statINT = set.getInteger("stat_INT"); - statSTR = set.getInteger("stat_STR"); - statCON = set.getInteger("stat_CON"); - statMEM = set.getInteger("stat_MEM"); - statDEX = set.getInteger("stat_DEX"); - statWIT = set.getInteger("stat_WIT"); + dye = set.getInt("dye"); + price = set.getInt("price"); + amount = set.getInt("amount"); + statINT = set.getInt("stat_INT"); + statSTR = set.getInt("stat_STR"); + statCON = set.getInt("stat_CON"); + statMEM = set.getInt("stat_MEM"); + statDEX = set.getInt("stat_DEX"); + statWIT = set.getInt("stat_WIT"); } public int getSymbolId() diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Item.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Item.java index 3c02a6f1cc..4c3d62ddc3 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Item.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Item.java @@ -22,13 +22,13 @@ import java.util.List; import org.l2jmobius.Config; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; import org.l2jmobius.gameserver.skills.Env; import org.l2jmobius.gameserver.skills.effects.EffectTemplate; import org.l2jmobius.gameserver.skills.funcs.Func; import org.l2jmobius.gameserver.skills.funcs.FuncTemplate; -import org.l2jmobius.gameserver.templates.StatsSet; /** * This class contains all informations concerning the item (weapon, armor, etc).
@@ -163,13 +163,13 @@ public abstract class Item protected Item(Enum type, StatsSet set) { _type = type; - _itemId = set.getInteger("item_id"); + _itemId = set.getInt("item_id"); _name = set.getString("name"); - _type1 = set.getInteger("type1"); // needed for item list (inventory) - _type2 = set.getInteger("type2"); // different lists for armor, weapon, etc - _weight = set.getInteger("weight"); - _crystallizable = set.getBool("crystallizable"); - _stackable = set.getBool("stackable", false); + _type1 = set.getInt("type1"); // needed for item list (inventory) + _type2 = set.getInt("type2"); // different lists for armor, weapon, etc + _weight = set.getInt("weight"); + _crystallizable = set.getBoolean("crystallizable"); + _stackable = set.getBoolean("stackable", false); switch (set.getString("crystal_type", "")) { case "d": @@ -203,7 +203,7 @@ public abstract class Item break; } } - _duration = set.getInteger("duration"); + _duration = set.getInt("duration"); switch (set.getString("bodypart", "")) { case "chest": @@ -330,12 +330,12 @@ public abstract class Item } } - _referencePrice = set.getInteger("price"); - _crystalCount = set.getInteger("crystal_count", 0); - _sellable = set.getBool("sellable", true); - _dropable = set.getBool("dropable", true); - _destroyable = set.getBool("destroyable", true); - _tradeable = set.getBool("tradeable", true); + _referencePrice = set.getInt("price"); + _crystalCount = set.getInt("crystal_count", 0); + _sellable = set.getBoolean("sellable", true); + _dropable = set.getBoolean("dropable", true); + _destroyable = set.getBoolean("destroyable", true); + _tradeable = set.getBoolean("tradeable", true); } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Weapon.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Weapon.java index e01cf6177e..693b17a8f9 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Weapon.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/templates/item/Weapon.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.handler.SkillHandler; import org.l2jmobius.gameserver.model.Effect; import org.l2jmobius.gameserver.model.Skill; import org.l2jmobius.gameserver.model.Skill.SkillType; +import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; import org.l2jmobius.gameserver.model.actor.instance.NpcInstance; @@ -35,7 +36,6 @@ import org.l2jmobius.gameserver.skills.Env; import org.l2jmobius.gameserver.skills.conditions.ConditionGameChance; import org.l2jmobius.gameserver.skills.funcs.Func; import org.l2jmobius.gameserver.skills.funcs.FuncTemplate; -import org.l2jmobius.gameserver.templates.StatsSet; /** * This class is dedicated to the management of weapons. @@ -82,37 +82,37 @@ public class Weapon extends Item public Weapon(WeaponType type, StatsSet set) { super(type, set); - _soulShotCount = set.getInteger("soulshots"); - _spiritShotCount = set.getInteger("spiritshots"); - _pDam = set.getInteger("p_dam"); - _rndDam = set.getInteger("rnd_dam"); - _critical = set.getInteger("critical"); + _soulShotCount = set.getInt("soulshots"); + _spiritShotCount = set.getInt("spiritshots"); + _pDam = set.getInt("p_dam"); + _rndDam = set.getInt("rnd_dam"); + _critical = set.getInt("critical"); _hitModifier = set.getDouble("hit_modify"); - _avoidModifier = set.getInteger("avoid_modify"); - _shieldDef = set.getInteger("shield_def"); + _avoidModifier = set.getInt("avoid_modify"); + _shieldDef = set.getInt("shield_def"); _shieldDefRate = set.getDouble("shield_def_rate"); - _atkSpeed = set.getInteger("atk_speed"); - _atkReuse = set.getInteger("atk_reuse", type == WeaponType.BOW ? 1500 : 0); - _mpConsume = set.getInteger("mp_consume"); - _mDam = set.getInteger("m_dam"); + _atkSpeed = set.getInt("atk_speed"); + _atkReuse = set.getInt("atk_reuse", type == WeaponType.BOW ? 1500 : 0); + _mpConsume = set.getInt("mp_consume"); + _mDam = set.getInt("m_dam"); - int sId = set.getInteger("item_skill_id"); - int sLv = set.getInteger("item_skill_lvl"); + int sId = set.getInt("item_skill_id"); + int sLv = set.getInt("item_skill_lvl"); if ((sId > 0) && (sLv > 0)) { _itemSkill = SkillTable.getInstance().getInfo(sId, sLv); } - sId = set.getInteger("enchant4_skill_id"); - sLv = set.getInteger("enchant4_skill_lvl"); + sId = set.getInt("enchant4_skill_id"); + sLv = set.getInt("enchant4_skill_lvl"); if ((sId > 0) && (sLv > 0)) { _enchant4Skill = SkillTable.getInstance().getInfo(sId, sLv); } - sId = set.getInteger("onCast_skill_id"); - sLv = set.getInteger("onCast_skill_lvl"); - int sCh = set.getInteger("onCast_skill_chance"); + sId = set.getInt("onCast_skill_id"); + sLv = set.getInt("onCast_skill_lvl"); + int sCh = set.getInt("onCast_skill_chance"); if ((sId > 0) && (sLv > 0) && (sCh > 0)) { final Skill skill = SkillTable.getInstance().getInfo(sId, sLv); @@ -120,9 +120,9 @@ public class Weapon extends Item attachOnCast(skill); } - sId = set.getInteger("onCrit_skill_id"); - sLv = set.getInteger("onCrit_skill_lvl"); - sCh = set.getInteger("onCrit_skill_chance"); + sId = set.getInt("onCrit_skill_id"); + sLv = set.getInt("onCrit_skill_lvl"); + sCh = set.getInt("onCrit_skill_chance"); if ((sId > 0) && (sLv > 0) && (sCh > 0)) { final Skill skill = SkillTable.getInstance().getInfo(sId, sLv); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/IllegalPlayerAction.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/IllegalPlayerAction.java index cbc57a1f69..a0300b2a3d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/IllegalPlayerAction.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/IllegalPlayerAction.java @@ -21,7 +21,7 @@ import java.util.logging.LogRecord; import java.util.logging.Logger; import org.l2jmobius.Config; -import org.l2jmobius.gameserver.datatables.GmListTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; /** @@ -48,23 +48,23 @@ public class IllegalPlayerAction implements Runnable switch (punishment) { - case PUNISH_KICK: + case PUNISH_KICK: { _actor.sendMessage("You will be kicked for illegal action, GM informed."); - break; + break; } - case PUNISH_KICKBAN: + case PUNISH_KICKBAN: { _actor.setAccessLevel(-100); _actor.setAccountAccesslevel(-100); _actor.sendMessage("You are banned for illegal action, GM informed."); - break; + break; } - case PUNISH_JAIL: + case PUNISH_JAIL: { _actor.sendMessage("Illegal action performed!"); _actor.sendMessage("You will be teleported to GM Consultation Service area and jailed."); - break; + break; } } } @@ -81,28 +81,28 @@ public class IllegalPlayerAction implements Runnable }); _logAudit.log(record); - GmListTable.broadcastMessageToGMs(_message); + AdminData.broadcastMessageToGMs(_message); switch (_punishment) { - case PUNISH_BROADCAST: + case PUNISH_BROADCAST: { - return; + return; } - case PUNISH_KICK: + case PUNISH_KICK: { _actor.logout(true); - break; + break; } - case PUNISH_KICKBAN: + case PUNISH_KICKBAN: { _actor.logout(true); - break; + break; } - case PUNISH_JAIL: + case PUNISH_JAIL: { _actor.setPunishLevel(PlayerInstance.PunishLevel.JAIL, Config.DEFAULT_PUNISH_PARAM); - break; + break; } } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Util.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Util.java index 0e3b88d2c2..c5180237ae 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Util.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Util.java @@ -166,8 +166,8 @@ public class Util // Micht: Removed this because UNUSED /* * public static boolean checkIfInRange(int range, int x1, int y1, int x2, int y2) { return checkIfInRange(range, x1, y1, 0, x2, y2, 0, false); } public static boolean checkIfInRange(int range, int x1, int y1, int z1, int x2, int y2, int z2, boolean includeZAxis) { if (includeZAxis) { return - * ((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) + (z1 - z2)*(z1 - z2)) <= range * range; } else { return ((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)) <= range * range; } } public static boolean checkIfInRange(int range, WorldObject obj1, WorldObject obj2, boolean includeZAxis) { if (obj1 == null || obj2 - * == null) return false; return checkIfInRange(range, obj1.getPosition().getX(), obj1.getPosition().getY(), obj1.getPosition().getZ(), obj2.getPosition().getX(), obj2.getPosition().getY(), obj2.getPosition().getZ(), includeZAxis); } + * ((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) + (z1 - z2)*(z1 - z2)) <= range * range; } else { return ((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)) <= range * range; } } public static boolean checkIfInRange(int range, WorldObject obj1, WorldObject obj2, boolean includeZAxis) { if (obj1 == null || + * obj2 == null) return false; return checkIfInRange(range, obj1.getPosition().getX(), obj1.getPosition().getY(), obj1.getPosition().getZ(), obj2.getPosition().getX(), obj2.getPosition().getY(), obj2.getPosition().getZ(), includeZAxis); } */ public static boolean checkIfInRange(int range, WorldObject obj1, WorldObject obj2, boolean includeZAxis) { @@ -274,21 +274,6 @@ public class Util return Math.round(val * exponent) / exponent; } - public static boolean isAlphaNumeric(String text) - { - boolean result = true; - final char[] chars = text.toCharArray(); - for (char aChar : chars) - { - if (!Character.isLetterOrDigit(aChar)) - { - result = false; - break; - } - } - return result; - } - /** * Return amount of adena formatted with "," delimiter * @param amount @@ -503,6 +488,48 @@ public class Util } } + /** + * @param + * @param name - the text to check + * @param enumType + * @return {@code true} if {@code text} is enum, {@code false} otherwise + */ + public static > boolean isEnum(String name, Class enumType) + { + if ((name == null) || name.isEmpty()) + { + return false; + } + try + { + return Enum.valueOf(enumType, name) != null; + } + catch (Exception e) + { + return false; + } + } + + /** + * @param text - the text to check + * @return {@code true} if {@code text} contains only letters and/or numbers, {@code false} otherwise + */ + public static boolean isAlphaNumeric(String text) + { + if ((text == null) || text.isEmpty()) + { + return false; + } + for (char c : text.toCharArray()) + { + if (!Character.isLetterOrDigit(c)) + { + return false; + } + } + return true; + } + /** * Replaces most invalid characters for the given string with an underscore. * @param str the string that may contain invalid characters diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java index 73ac50f65f..a905201ef4 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/telnet/GameStatusThread.java @@ -49,11 +49,11 @@ import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.Shutdown; import org.l2jmobius.gameserver.cache.HtmCache; -import org.l2jmobius.gameserver.datatables.GmListTable; import org.l2jmobius.gameserver.datatables.SkillTable; import org.l2jmobius.gameserver.datatables.sql.NpcTable; import org.l2jmobius.gameserver.datatables.sql.SpawnTable; import org.l2jmobius.gameserver.datatables.sql.TeleportLocationTable; +import org.l2jmobius.gameserver.datatables.xml.AdminData; import org.l2jmobius.gameserver.datatables.xml.ItemTable; import org.l2jmobius.gameserver.datatables.xml.ZoneData; import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager; @@ -358,8 +358,8 @@ public class GameStatusThread extends Thread { _usrCommand = _usrCommand.substring(7); final CreatureSay cs = new CreatureSay(0, Say2.ALLIANCE, "Telnet GM Broadcast from " + _cSocket.getInetAddress().getHostAddress(), _usrCommand); - GmListTable.broadcastToGMs(cs); - _print.println("Your Message Has Been Sent To " + getOnlineGMS() + " GM(s)."); + AdminData.broadcastToGMs(cs); + _print.println("Your Message Has Been Sent To " + getOnlineGMs() + " GM(s)."); } catch (StringIndexOutOfBoundsException e) { @@ -371,7 +371,7 @@ public class GameStatusThread extends Thread int igm = 0; String gmList = ""; - for (String player : GmListTable.getInstance().getAllGmNames(true)) + for (String player : AdminData.getInstance().getAllGmNames(true)) { gmList = gmList + ", " + player; igm++; @@ -382,10 +382,6 @@ public class GameStatusThread extends Thread _print.println(gmList); } } - /* - * else if (_usrCommand.startsWith("unblock")) { try { _usrCommand = _usrCommand.substring(8); if (LoginServer.getInstance().unblockIp(_usrCommand)) { LOGGER.warning("IP removed via TELNET by host: " + _csocket.getInetAddress().getHostAddress()); _print.println("The IP " + - * _usrCommand + " has been removed from the hack protection list!"); } else { _print.println("IP not found in hack protection list..."); } //TODO: with packet } catch (StringIndexOutOfBoundsException e) { _print.println("Please Enter the IP to Unblock!"); } } - */ else if (_usrCommand.startsWith("kick")) { try @@ -446,7 +442,8 @@ public class GameStatusThread extends Thread _print.println("OK! - Shutdown/Restart Aborted."); } else if (_usrCommand.equals("quit")) - { /* Do Nothing :p - Just here to save us from the "Command Not Understood" Text */ + { + /* Do Nothing :p - Just here to save us from the "Command Not Understood" Text */ } else if (_usrCommand.startsWith("give")) { @@ -978,9 +975,9 @@ public class GameStatusThread extends Thread } } - private int getOnlineGMS() + private int getOnlineGMs() { - return GmListTable.getInstance().getAllGms(true).size(); + return AdminData.getInstance().getAllGms(true).size(); } private String getUptime(int time) @@ -1104,7 +1101,7 @@ public class GameStatusThread extends Thread sb.append("\r\n +.......... Creature: " + charCount); sb.append("\r\n ---> Ingame Time: " + gameTime()); sb.append("\r\n ---> Server Uptime: " + getUptime(_uptime)); - sb.append("\r\n ---> GM Count: " + getOnlineGMS()); + sb.append("\r\n ---> GM Count: " + getOnlineGMs()); sb.append("\r\n ---> Threads: " + Thread.activeCount()); sb.append("\r\n RAM Used: " + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1048576)); // 1024 * 1024 = 1048576 sb.append("\r\n"); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/util/TimeUtil.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/util/TimeUtil.java new file mode 100644 index 0000000000..031ebb5363 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/commons/util/TimeUtil.java @@ -0,0 +1,125 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.commons.util; + +import java.time.Duration; +import java.time.temporal.ChronoUnit; + +/** + * @author UnAfraid + */ +public class TimeUtil +{ + private static int findIndexOfNonDigit(CharSequence text) + { + for (int i = 0; i < text.length(); i++) + { + if (Character.isDigit(text.charAt(i))) + { + continue; + } + return i; + } + return -1; + } + + /** + * Parses patterns like: + *
    + *
  • 1min or 10mins
  • + *
  • 1day or 10days
  • + *
  • 1week or 4weeks
  • + *
  • 1month or 12months
  • + *
  • 1year or 5years
  • + *
+ * @param datePattern + * @return {@link Duration} object converted by the date pattern specified. + * @throws IllegalStateException when malformed pattern specified. + */ + public static Duration parseDuration(String datePattern) + { + final int index = findIndexOfNonDigit(datePattern); + if (index == -1) + { + throw new IllegalStateException("Incorrect time format given: " + datePattern); + } + try + { + final int val = Integer.parseInt(datePattern.substring(0, index)); + final String type = datePattern.substring(index); + final ChronoUnit unit; + switch (type.toLowerCase()) + { + case "sec": + case "secs": + { + unit = ChronoUnit.SECONDS; + break; + } + case "min": + case "mins": + { + unit = ChronoUnit.MINUTES; + break; + } + case "hour": + case "hours": + { + unit = ChronoUnit.HOURS; + break; + } + case "day": + case "days": + { + unit = ChronoUnit.DAYS; + break; + } + case "week": + case "weeks": + { + unit = ChronoUnit.WEEKS; + break; + } + case "month": + case "months": + { + unit = ChronoUnit.MONTHS; + break; + } + case "year": + case "years": + { + unit = ChronoUnit.YEARS; + break; + } + default: + { + unit = ChronoUnit.valueOf(type); + if (unit == null) + { + throw new IllegalStateException("Incorrect format: " + type + " !!"); + } + } + } + return Duration.of(val, unit); + } + catch (Exception e) + { + throw new IllegalStateException("Incorrect time format given: " + datePattern + " val: " + datePattern.substring(0, index)); + } + } +} diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java index c9175e1a3d..50a4f21226 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/GlobalVariablesManager.java @@ -61,14 +61,14 @@ public class GlobalVariablesManager extends AbstractVariables } catch (SQLException e) { - LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore global variables"); + LOGGER.warning(getClass().getSimpleName() + ": Couldn't restore global variables."); return false; } finally { compareAndSetChanges(true, false); } - LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded " + getSet().size() + " variables."); + LOGGER.info(getClass().getSimpleName() + ": Loaded " + getSet().size() + " variables."); return true; } @@ -106,7 +106,23 @@ public class GlobalVariablesManager extends AbstractVariables { compareAndSetChanges(true, false); } - LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Stored " + getSet().size() + " variables."); + LOGGER.info(getClass().getSimpleName() + ": Stored " + getSet().size() + " variables."); + return true; + } + + @Override + public boolean deleteMe() + { + try (Connection con = DatabaseFactory.getConnection(); + Statement del = con.createStatement()) + { + del.execute(DELETE_QUERY); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete global variables to database.", e); + return false; + } return true; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/StatsSet.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/StatsSet.java index bf1619ebe0..c90132551f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/StatsSet.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/StatsSet.java @@ -16,15 +16,19 @@ */ package org.l2jmobius.gameserver.model; +import java.time.Duration; import java.util.ArrayList; import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Supplier; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; +import org.l2jmobius.commons.util.TimeUtil; import org.l2jmobius.gameserver.model.holders.MinionHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.interfaces.IParserAdvUtils; @@ -39,13 +43,18 @@ public class StatsSet implements IParserAdvUtils { private static final Logger LOGGER = Logger.getLogger(StatsSet.class.getName()); /** Static empty immutable map, used to avoid multiple null checks over the source. */ - public static final StatsSet EMPTY_STATSET = new StatsSet(Collections. emptyMap()); + public static final StatsSet EMPTY_STATSET = new StatsSet(Collections.emptyMap()); private final Map _set; public StatsSet() { - this(new LinkedHashMap<>()); + this(ConcurrentHashMap::new); + } + + public StatsSet(Supplier> mapFactory) + { + this(mapFactory.get()); } public StatsSet(Map map) @@ -66,7 +75,7 @@ public class StatsSet implements IParserAdvUtils * Add a set of couple values in the current set * @param newSet : StatsSet pointing out the list of couples to add in the current set */ - public void add(StatsSet newSet) + public void merge(StatsSet newSet) { _set.putAll(newSet.getSet()); } @@ -89,6 +98,7 @@ public class StatsSet implements IParserAdvUtils @Override public boolean getBoolean(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -117,6 +127,7 @@ public class StatsSet implements IParserAdvUtils @Override public boolean getBoolean(String key, boolean defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -139,6 +150,7 @@ public class StatsSet implements IParserAdvUtils @Override public byte getByte(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -161,6 +173,7 @@ public class StatsSet implements IParserAdvUtils @Override public byte getByte(String key, byte defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -180,8 +193,24 @@ public class StatsSet implements IParserAdvUtils } } + public short increaseByte(String key, byte increaseWith) + { + final byte newValue = (byte) (getByte(key) + increaseWith); + set(key, newValue); + return newValue; + } + + public short increaseByte(String key, byte defaultValue, byte increaseWith) + { + final byte newValue = (byte) (getByte(key, defaultValue) + increaseWith); + set(key, newValue); + return newValue; + } + public byte[] getByteArray(String key, String splitOn) { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); final Object val = _set.get(key); if (val == null) { @@ -213,6 +242,8 @@ public class StatsSet implements IParserAdvUtils public List getByteList(String key, String splitOn) { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); final List result = new ArrayList<>(); for (Byte i : getByteArray(key, splitOn)) { @@ -224,6 +255,7 @@ public class StatsSet implements IParserAdvUtils @Override public short getShort(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -246,6 +278,7 @@ public class StatsSet implements IParserAdvUtils @Override public short getShort(String key, short defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -265,9 +298,24 @@ public class StatsSet implements IParserAdvUtils } } + public short increaseShort(String key, short increaseWith) + { + final short newValue = (short) (getShort(key) + increaseWith); + set(key, newValue); + return newValue; + } + + public short increaseShort(String key, short defaultValue, short increaseWith) + { + final short newValue = (short) (getShort(key, defaultValue) + increaseWith); + set(key, newValue); + return newValue; + } + @Override public int getInt(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -292,6 +340,7 @@ public class StatsSet implements IParserAdvUtils @Override public int getInt(String key, int defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -311,8 +360,24 @@ public class StatsSet implements IParserAdvUtils } } + public int increaseInt(String key, int increaseWith) + { + final int newValue = getInt(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public int increaseInt(String key, int defaultValue, int increaseWith) + { + final int newValue = getInt(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + public int[] getIntArray(String key, String splitOn) { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); final Object val = _set.get(key); if (val == null) { @@ -344,6 +409,8 @@ public class StatsSet implements IParserAdvUtils public List getIntegerList(String key, String splitOn) { + Objects.requireNonNull(key); + Objects.requireNonNull(splitOn); final List result = new ArrayList<>(); for (int i : getIntArray(key, splitOn)) { @@ -355,6 +422,7 @@ public class StatsSet implements IParserAdvUtils @Override public long getLong(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -377,6 +445,7 @@ public class StatsSet implements IParserAdvUtils @Override public long getLong(String key, long defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -396,9 +465,24 @@ public class StatsSet implements IParserAdvUtils } } + public long increaseLong(String key, long increaseWith) + { + final long newValue = getLong(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public long increaseLong(String key, long defaultValue, long increaseWith) + { + final long newValue = getLong(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + @Override public float getFloat(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -421,6 +505,7 @@ public class StatsSet implements IParserAdvUtils @Override public float getFloat(String key, float defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -440,9 +525,24 @@ public class StatsSet implements IParserAdvUtils } } + public float increaseFloat(String key, float increaseWith) + { + final float newValue = getFloat(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public float increaseFloat(String key, float defaultValue, float increaseWith) + { + final float newValue = getFloat(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + @Override public double getDouble(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -465,6 +565,7 @@ public class StatsSet implements IParserAdvUtils @Override public double getDouble(String key, double defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -484,9 +585,24 @@ public class StatsSet implements IParserAdvUtils } } + public double increaseDouble(String key, double increaseWith) + { + final double newValue = getDouble(key) + increaseWith; + set(key, newValue); + return newValue; + } + + public double increaseDouble(String key, double defaultValue, double increaseWith) + { + final double newValue = getDouble(key, defaultValue) + increaseWith; + set(key, newValue); + return newValue; + } + @Override public String getString(String key) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -498,6 +614,7 @@ public class StatsSet implements IParserAdvUtils @Override public String getString(String key, String defaultValue) { + Objects.requireNonNull(key); final Object val = _set.get(key); if (val == null) { @@ -506,10 +623,36 @@ public class StatsSet implements IParserAdvUtils return String.valueOf(val); } + @Override + public Duration getDuration(String key) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + throw new IllegalArgumentException("String value required, but not specified"); + } + return TimeUtil.parseDuration(String.valueOf(val)); + } + + @Override + public Duration getDuration(String key, Duration defaultValue) + { + Objects.requireNonNull(key); + final Object val = _set.get(key); + if (val == null) + { + return defaultValue; + } + return TimeUtil.parseDuration(String.valueOf(val)); + } + @Override @SuppressWarnings("unchecked") public > T getEnum(String key, Class enumClass) { + Objects.requireNonNull(key); + Objects.requireNonNull(enumClass); final Object val = _set.get(key); if (val == null) { @@ -533,6 +676,8 @@ public class StatsSet implements IParserAdvUtils @SuppressWarnings("unchecked") public > T getEnum(String key, Class enumClass, T defaultValue) { + Objects.requireNonNull(key); + Objects.requireNonNull(enumClass); final Object val = _set.get(key); if (val == null) { @@ -555,6 +700,8 @@ public class StatsSet implements IParserAdvUtils @SuppressWarnings("unchecked") public A getObject(String name, Class type) { + Objects.requireNonNull(name); + Objects.requireNonNull(type); final Object obj = _set.get(name); if ((obj == null) || !type.isAssignableFrom(obj.getClass())) { @@ -567,6 +714,8 @@ public class StatsSet implements IParserAdvUtils @SuppressWarnings("unchecked") public A getObject(String name, Class type, A defaultValue) { + Objects.requireNonNull(name); + Objects.requireNonNull(type); final Object obj = _set.get(name); if ((obj == null) || !type.isAssignableFrom(obj.getClass())) { @@ -578,6 +727,7 @@ public class StatsSet implements IParserAdvUtils public SkillHolder getSkillHolder(String key) { + Objects.requireNonNull(key); final Object obj = _set.get(key); if ((obj == null) || !(obj instanceof SkillHolder)) { @@ -589,6 +739,7 @@ public class StatsSet implements IParserAdvUtils public Location getLocation(String key) { + Objects.requireNonNull(key); final Object obj = _set.get(key); if ((obj == null) || !(obj instanceof Location)) { @@ -600,6 +751,7 @@ public class StatsSet implements IParserAdvUtils @SuppressWarnings("unchecked") public List getMinionList(String key) { + Objects.requireNonNull(key); final Object obj = _set.get(key); if ((obj == null) || !(obj instanceof List)) { @@ -612,6 +764,8 @@ public class StatsSet implements IParserAdvUtils @SuppressWarnings("unchecked") public List getList(String key, Class clazz) { + Objects.requireNonNull(key); + Objects.requireNonNull(clazz); final Object obj = _set.get(key); if ((obj == null) || !(obj instanceof List)) { @@ -720,54 +874,83 @@ public class StatsSet implements IParserAdvUtils return (Map) obj; } - public void set(String name, Object value) + public StatsSet set(String name, Object value) { + if (value == null) + { + return this; + } _set.put(name, value); + return this; } - public void set(String key, boolean value) + public StatsSet set(String key, boolean value) { _set.put(key, value); + return this; } - public void set(String key, byte value) + public StatsSet set(String key, byte value) { _set.put(key, value); + return this; } - public void set(String key, short value) + public StatsSet set(String key, short value) { _set.put(key, value); + return this; } - public void set(String key, int value) + public StatsSet set(String key, int value) { _set.put(key, value); + return this; } - public void set(String key, long value) + public StatsSet set(String key, long value) { _set.put(key, value); + return this; } - public void set(String key, float value) + public StatsSet set(String key, float value) { _set.put(key, value); + return this; } - public void set(String key, double value) + public StatsSet set(String key, double value) { _set.put(key, value); + return this; } - public void set(String key, String value) + public StatsSet set(String key, String value) { + if (value == null) + { + return this; + } _set.put(key, value); + return this; } - public void set(String key, Enum value) + public StatsSet set(String key, Enum value) { + if (value == null) + { + return this; + } _set.put(key, value); + return this; + } + + public static StatsSet valueOf(String key, Object value) + { + final StatsSet set = new StatsSet(); + set.set(key, value); + return set; } public void remove(String key) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java index 83fa0daca6..23e8587be6 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserAdvUtils.java @@ -16,6 +16,8 @@ */ package org.l2jmobius.gameserver.model.interfaces; +import java.time.Duration; + /** * More advanced interface for parsers.
* Allows usage of get methods without fall back value.
@@ -40,5 +42,7 @@ public interface IParserAdvUtils extends IParserUtils String getString(String key); + Duration getDuration(String key); + > T getEnum(String key, Class clazz); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java index cfa9e6f194..4400433204 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/interfaces/IParserUtils.java @@ -16,6 +16,8 @@ */ package org.l2jmobius.gameserver.model.interfaces; +import java.time.Duration; + /** * Simple interface for parser, enforces of a fall back value.
* More suitable for developers not sure about their data.
@@ -39,5 +41,7 @@ public interface IParserUtils String getString(String key, String defaultValue); + Duration getDuration(String key, Duration defaultValue); + > T getEnum(String key, Class clazz, T defaultValue); } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java index a1e431383b..cc5bb04b47 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AbstractVariables.java @@ -16,63 +16,86 @@ */ package org.l2jmobius.gameserver.model.variables; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; import org.l2jmobius.gameserver.model.StatsSet; +import org.l2jmobius.gameserver.model.interfaces.IDeletable; import org.l2jmobius.gameserver.model.interfaces.IRestorable; import org.l2jmobius.gameserver.model.interfaces.IStorable; /** * @author UnAfraid */ -public abstract class AbstractVariables extends StatsSet implements IRestorable, IStorable +public abstract class AbstractVariables extends StatsSet implements IRestorable, IStorable, IDeletable { private final AtomicBoolean _hasChanges = new AtomicBoolean(false); + public AbstractVariables() + { + super(new ConcurrentHashMap<>()); + } + /** * Overriding following methods to prevent from doing useless database operations if there is no changes since player's login. */ @Override - public void set(String name, boolean value) + public StatsSet set(String name, boolean value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, double value) + public StatsSet set(String name, double value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, Enum value) + public StatsSet set(String name, Enum value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, int value) + public StatsSet set(String name, int value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, long value) + public StatsSet set(String name, long value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); } @Override - public void set(String name, String value) + public StatsSet set(String name, String value) { _hasChanges.compareAndSet(false, true); - super.set(name, value); + return super.set(name, value); + } + + /** + * Put's entry to the variables and marks as changed if required (Useful when restoring to do not save them again). + * @param name + * @param value + * @param markAsChanged + * @return + */ + public StatsSet set(String name, String value, boolean markAsChanged) + { + if (markAsChanged) + { + _hasChanges.compareAndSet(false, true); + } + return super.set(name, value); } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java index 8e5a1adc38..fc36c5f076 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java @@ -116,4 +116,27 @@ public class AccountVariables extends AbstractVariables } return true; } + + @Override + public boolean deleteMe() + { + try (Connection con = DatabaseFactory.getConnection()) + { + // Clear previous entries. + try (PreparedStatement st = con.prepareStatement(DELETE_QUERY)) + { + st.setString(1, _accountName); + st.execute(); + } + + // Clear all entries + getSet().clear(); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _accountName, e); + return false; + } + return true; + } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/NpcVariables.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/NpcVariables.java index 0c4d122bf9..90f62fd22f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/NpcVariables.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/NpcVariables.java @@ -43,6 +43,12 @@ public class NpcVariables extends AbstractVariables return true; } + @Override + public boolean deleteMe() + { + return true; + } + /** * Gets the stored player. * @param name the name of the variable diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java index 07ef4d9dfe..75692d7407 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/variables/PlayerVariables.java @@ -119,6 +119,29 @@ public class PlayerVariables extends AbstractVariables return true; } + @Override + public boolean deleteMe() + { + try (Connection con = DatabaseFactory.getConnection()) + { + // Clear previous entries. + try (PreparedStatement st = con.prepareStatement(DELETE_QUERY)) + { + st.setInt(1, _objectId); + st.execute(); + } + + // Clear all entries + getSet().clear(); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); + return false; + } + return true; + } + public PlayerInstance getPlayer() { return World.getInstance().getPlayer(_objectId);