Changeset 348 (379) Scripts, Refactor, Misc The scripts stuff has been made due to external compiler taking huge time to compile, prior to JDK8. Scripts - Drop the external compiler, leading to -8mo RAM usage at startup and 2 libs drop. Server starts in 14sec instead of 1min+. - All scripts are moved inside core side ; scripts HTMs are moved into data/htm folder. - scripts.cfg is replaced by scripts.xml ; it is moved to data/xml. - Drop the possibility to load/reload/bypass scripts (drop associated configs && admincommands). - Addition of ScheduledQuest, which will be used later for tasks rework / events. - L2AttackableAiScript avoids to check NpcTemplate (- 6000+ .get()). Refactor - Rename old Util.Util to HexUtil, and move to commons.lang. - Creation of package commons.math, move MathUtil && PrimeFinder inside. - Move MinionList to gameserver.model. Misc - Fix a Config related to packets debug, ty RooT. - Fix a ConcurrentException on RecipeShopManageList, and add another exploit check. - Fix checkPvpSkill, ty Versus. - Fix a double flag addition on siege flag spawn, ty Versus. - Use ConcurrentSkipListMap for subclasses and cubics (concurrent AND ordered). - Add a single method on NpcTable, which allows to drop 4 "single used" methods. PS: Due to the huge refactor (thousands files are moved), the pack will be exceptionnally fully shared, to give you idea about how it is organized now. It's also probably easier to copy-paste folders && packages directly rather than using the diff patch (which is 19mo, 350k lines long).
Changeset 349 (389) Scripts, RandomAnimationTaskManager, L2Attackable, Misc Scripts - Addition of Q414, Q416, Q639 - ty roko91, DarthVader (and me for the Q639 rewrite ;p). RandomAnimationTaskManager - Drop RandomAnimationTask stored variable on L2Npc (pointless). - Creation of RandomAnimationTaskManager, a single task holding NPCs social animation behavior. Avoids to create one task per NPC every 10-40sec ; with a single player online, it's ~120 saved tasks every 10-40sec on a random farm area. L2Attackable - cleanup (variables / overriden methods / big methods / get && setters). - getHateList() doesn't generate new List objects. - _attackByList rework - No lazy initialization. Avoids volatile/synchronized stuff. - Use concurrency to avoid issues. - Better OOP approach (moved from L2Character to L2Attackable). - Fix the following performance issue : Dying L2Character(s) generate HashSet for nothing (as getAttackByList().clear() calls the lazy initialization on doDie). - As a Set doesn't allow double values, drop .contains() check on addAttackerToAttackByList. Misc - Fix an issue with mail system. - Revert previous commit regarding static DateFormat ; it can lead to misformatting. - Put Logger on L2Object level, drop others post-L2Object loggers. - Drop cw_reload admincommand (redundant with //reload cw) && misc cleanup about //reload (help, combobox, etc). - Addition of 2 missing NPC templates (2 quest monsters). Rename npcId 32008 "Gremory" for easier tracking. - ItemId 8056 Key of Splendor Room isn't considered as a quest item anymore.