From 47bc652eedc43a236e4990b9be32a6b5ceccd5aa Mon Sep 17 00:00:00 2001 From: Ryan <2804894-ryannathans@users.noreply.gitlab.com> Date: Tue, 11 Jan 2022 09:36:57 +0000 Subject: [PATCH] Fix stability issues and a various assortment of other bugs --- CHANGELOG | 24 +- .../java/core/cache/def/impl/CS2Mapping.java | 30 +- .../core/cache/def/impl/NPCDefinition.java | 15 +- .../def/impl/RenderAnimationDefinition.java | 40 +- .../cache/def/impl/SceneryDefinition.java | 57 +- .../core/cache/def/impl/VarbitDefinition.java | 13 +- .../game/container/impl/BankContainer.java | 6 +- .../content/activity/ActivityManager.java | 6 +- .../game/content/activity/CutscenePlugin.java | 6 +- .../barrows/BarrowsActivityPlugin.java | 4 +- .../bountyhunter/BHOptionHandler.java | 6 +- .../activity/bountyhunter/BountyEntry.java | 10 +- .../bountyhunter/BountyHunterActivity.java | 36 +- .../bountyhunter/BountyLocateSpell.java | 4 +- .../clanwars/ClanWarsActivityPlugin.java | 6 +- .../game/content/activity/duel/DuelArea.java | 4 +- .../activity/duel/DuelComponentPlugin.java | 4 +- .../gnomecopter/GnomeCopterActivity.java | 6 +- .../activity/gwd/GodWarsMinionNPC.java | 4 +- .../content/activity/gwd/GodwarsBossNPC.java | 12 +- .../activity/gwd/GodwarsEntranceHandler.java | 6 +- .../content/activity/gwd/GodwarsMapzone.java | 12 +- .../activity/magearena/KolodionDialogue.java | 8 +- .../activity/magearena/KolodionNPC.java | 4 +- .../activity/magearena/KolodionSession.java | 4 +- .../activity/magearena/LundailDialogue.java | 4 +- .../activity/magearena/MageArenaPlugin.java | 8 +- .../activity/magearena/MageArenaZone.java | 4 +- .../mta/EntranceGuardianDialogue.java | 4 +- .../game/content/activity/mta/MTAShop.java | 6 +- .../activity/mta/TelekineticGrabSpell.java | 4 +- .../activity/mta/impl/AlchemistZone.java | 6 +- .../activity/mta/impl/EnchantingZone.java | 8 +- .../activity/mta/impl/GraveyardZone.java | 4 +- .../activity/mta/impl/TelekineticZone.java | 4 +- .../activity/partyroom/BalloonManager.java | 16 +- .../activity/partyroom/PartyRoomPlugin.java | 4 +- .../activity/pestcontrol/PCObjectHandler.java | 10 +- .../PestControlActivityPlugin.java | 7 +- .../pestcontrol/monsters/PCBrawlerNPC.java | 14 + .../pestcontrol/monsters/PCRavagerNPC.java | 8 +- .../pestcontrol/monsters/PCShifterNPC.java | 4 +- .../pestcontrol/monsters/PCSpinnerNPC.java | 4 +- .../pestcontrol/monsters/PCSplatterNPC.java | 4 +- .../activity/puropuro/ImpDefenderNPC.java | 6 +- .../activity/puropuro/PuroPuroPlugin.java | 12 +- .../pyramidplunder/PyramidPlunderNPC.java | 10 +- .../stronghold/StrongHoldSecurityPlugin.java | 68 +- .../playersafety/GuardDialoguePlugin.java | 8 +- .../tzhaar/TzhaarFightCavesPlugin.java | 6 +- .../tzhaar/TzhaarFightPitsPlugin.java | 6 +- .../wguild/animator/AnimationRoom.java | 4 +- .../activity/wguild/barrel/BarrelRoom.java | 6 +- .../wguild/catapult/CatapultRoom.java | 6 +- .../wguild/cyclopes/CyclopesRoom.java | 4 +- .../activity/wguild/dummy/DummyRoom.java | 6 +- .../activity/wguild/shot/ShotPutRoom.java | 6 +- .../effects/SetAttributeEffect.java | 4 +- .../content/cutscene/DBRCutscenePlugin.java | 6 +- .../content/cutscene/GECutscenePlugin.java | 10 +- .../game/content/cutscene/JulietDialogue.java | 6 +- .../game/content/cutscene/OrganCutScene.java | 6 +- .../content/cutscene/RJCutscenePlugin.java | 6 +- .../game/content/dialogue/AablaDialogue.java | 4 +- .../dialogue/CaptainBentleyDialogue.java | 4 +- .../game/content/dialogue/DonieDialogue.java | 4 +- .../game/content/dialogue/DoricDialogue.java | 4 +- .../dialogue/FaladorSquireDialogue.java | 4 +- .../dialogue/GertrudesCatDialogue.java | 4 +- .../dialogue/GnomeSpiritTreeDialogue.java | 4 +- .../content/dialogue/GrandExchangeTutor.java | 4 +- .../dialogue/IgnatiusVulcanDialogue.java | 6 +- .../InformationclerkMuseumDialogue.java | 4 +- .../dialogue/KittenInteractDialogue.java | 4 +- .../dialogue/LokarSearunnerDialogue.java | 4 +- .../dialogue/LumbridgeGuideDialogue.java | 6 +- .../dialogue/MithrilSeedsDialogue.java | 4 +- .../content/dialogue/MithrilSeedsPlugin.java | 6 +- .../dialogue/PartyPeteDialoguePlugin.java | 4 +- .../content/dialogue/PrinceAliDialogue.java | 6 +- .../dialogue/ProfessorOddensteinPlugin.java | 4 +- .../content/dialogue/ResearcherDialogue.java | 4 +- .../content/dialogue/RugMerchantDialogue.java | 6 +- .../content/dialogue/ShantayDialogue.java | 4 +- .../game/content/dialogue/ShantayGuard.java | 4 +- .../content/dialogue/SilkMerchantPlugin.java | 4 +- .../content/dialogue/SorcceresDialouge.java | 4 +- .../content/dialogue/TownCrierDialogue.java | 28 +- .../content/dialogue/TraibornDialogue.java | 4 +- .../dialogue/book/SecurityBookPlugin.java | 6 +- .../content/global/EnchantedJewellery.java | 4 +- .../core/game/content/global/GodType.java | 4 +- .../global/action/ClimbActionHandler.java | 8 +- .../global/action/DigSpadeHandler.java | 4 +- .../global/action/DoorActionHandler.java | 6 +- .../global/action/DropItemHandler.java | 6 +- .../core/game/content/global/shop/Shop.kt | 4 +- .../global/travel/ship/ShipCharter.java | 4 +- .../shootingstar/ScoreboardHandler.java | 4 +- .../shootingstar/ScoreboardManager.java | 5 +- .../game/content/holiday/HolidayItem.java | 4 +- .../holiday/christmas/ChristmasEvent.java | 8 +- .../holiday/easter/BasketofEggsEvent.java | 16 +- .../holiday/halloween/DeathMansionEvent.java | 32 +- .../BKFortressPlugin.java | 6 +- .../free/demonslayer/DemonSlayerCutscene.java | 6 +- .../free/demonslayer/GypsyArisDialogue.java | 6 +- .../free/demonslayer/SirPyrsinDialogue.java | 4 +- .../free/demonslayer/TraibornDialogue.java | 4 +- .../quest/free/dragonslayer/DragonSlayer.java | 4 +- .../dragonslayer/DragonSlayerCutscene.java | 16 +- .../quest/free/dragonslayer/ElvargNPC.java | 6 +- .../goblindiplomacy/GDiplomacyCutscene.java | 4 +- .../GoblinDiplomacyPlugin.java | 6 +- .../princealirescue/LadyKeliDialogue.java | 6 +- .../free/princealirescue/LadyKeliNPC.java | 4 +- .../PrinceAliRescuePlugin.java | 4 +- .../therestlessghost/RestlessGhostPlugin.java | 6 +- .../animalmagnetism/AliceHusbandDialogue.java | 14 +- .../AnimalMagnetismPlugin.java | 4 +- .../members/animalmagnetism/AvaDialogue.java | 8 +- .../dwarfcannon/DwarfCannonPlugin.java | 6 +- .../fishingcontest/FenceInteraction.java | 4 +- .../FishingContestCutscene.java | 12 +- .../members/lostcity/LostCityPlugin.java | 4 +- .../merlinscrystal/MerlinCrystalPlugin.java | 4 +- .../members/merlinscrystal/SirMordredNPC.java | 4 +- .../rovingelves/RovingElvesPlugin.java | 4 +- .../members/sheepherder/HerderSheepNPC.java | 8 +- .../sheepherder/ProdActionHandler.java | 5 +- .../sheepherder/SheepPoisonHandler.java | 5 +- .../members/thetouristrap/AnaDialogue.java | 4 +- .../thetouristrap/DesertGuardDialogue.java | 12 +- .../thetouristrap/MaleSlaveDialogue.java | 4 +- .../members/thetouristrap/MineSlaveNPC.java | 8 +- .../members/thetouristrap/MiningCampZone.java | 6 +- .../members/thetouristrap/TouristTrap.java | 4 +- .../thetouristrap/TouristTrapPlugin.java | 36 +- .../waterfallquest/HadleyDialogue.java | 4 +- .../whatliesbelow/WLBelowCutscene.java | 14 +- .../members/whatliesbelow/WLBelowPlugin.java | 4 +- .../quest/members/witchshouse/MouseNPC.java | 6 +- .../members/witchshouse/NoraTHaggNPC.java | 4 +- .../witchshouse/WitchsExperimentNPC.java | 4 +- .../miniquest/barcrawl/BarcrawlDialogue.java | 4 +- .../miniquest/barcrawl/BarcrawlType.java | 4 +- .../LTRDragonFightCutscene.java | 6 +- .../tutorialisland/CharacterDesign.java | 13 +- .../FinancialAdvisorDialogue.java | 4 +- .../tutorialisland/RSGuideDialogue.java | 22 +- .../TutorialCompletionDialogue.java | 15 +- .../tutorialisland/TutorialSession.java | 6 +- .../tutorialisland/TutorialStage.java | 12 +- .../core/game/content/ttrail/ClueLevel.java | 4 +- .../game/content/zone/ChaosTunnelZone.java | 8 +- .../core/game/content/zone/DesertZone.java | 10 +- .../core/game/content/zone/IcePathZone.java | 4 +- .../game/content/zone/WildernessAreaZone.java | 10 +- .../content/zone/YanilleAgilityDungeon.java | 4 +- .../zone/rellekka/JarvaldDialogue.java | 4 +- .../zone/wbisland/WaterBirthDungeonZone.java | 14 +- .../core/game/interaction/Interaction.java | 4 +- .../interaction/city/DraynorManorPlugin.java | 6 +- .../interaction/city/DraynorNodePlugin.java | 4 +- .../interaction/city/FaladorNodePlugin.java | 4 +- .../city/GnomeStrongholdPlugin.java | 6 +- .../interaction/city/HamHideoutPlugin.java | 8 +- .../city/KaramajaOptionPlugin.java | 4 +- .../interaction/city/LumbridgeNodePlugin.java | 4 +- .../interaction/city/PortSarimPlugin.java | 6 +- .../interaction/city/TrollheimPlugin.java | 4 +- .../interaction/city/VarrockNodePlugin.java | 4 +- .../interaction/city/WizardTowerPlugin.java | 6 +- .../inter/ClanInterfacePlugin.java | 26 +- .../interaction/inter/CombatTabInterface.java | 6 +- .../interaction/inter/EquipmentInterface.java | 12 +- .../game/interaction/inter/GameInterface.java | 10 +- .../inter/GrandExchangeInterface.java | 6 +- .../interaction/inter/LogoutInterface.java | 6 +- .../interaction/inter/MagicBookInterface.java | 4 +- .../interaction/inter/SkillTabInterface.java | 6 +- .../item/DragonfireShieldPlugin.java | 4 +- .../interaction/item/FaladorShieldPlugin.java | 4 +- .../game/interaction/item/GodBookPlugin.java | 5 + .../interaction/item/MorphItemPlugin.java | 8 +- .../game/interaction/item/PharoahSceptre.java | 4 +- .../item/withnpc/GertrudeCatUsePlugin.java | 106 +++ .../item/withnpc/LadyKeliRopePlugin.java | 57 ++ .../item/withobject/EctophialFillPlugin.java | 4 +- .../withobject/HairdresserCheesePlugin.java | 4 +- .../item/withobject/PoisonFountainPlugin.java | 4 +- .../item/withobject/TutorialItemHandler.java | 4 +- .../interaction/npc/BurthorpeTrainNPC.java | 6 +- .../npc/CanafisWereWolfPlugin.java | 4 +- .../interaction/npc/SheepShearPlugin.java | 4 +- .../SorceressApprenticeDialogue.java | 4 +- .../interaction/object/BankingPlugin.java | 6 +- .../interaction/object/BarrowsBoatPlugin.java | 4 +- .../interaction/object/BeehivePlugin.java | 4 +- .../interaction/object/BrokenCartBypass.java | 4 +- .../object/DropPartyLeverOptionPlugin.java | 8 +- .../object/ErnestTheChickenPlugin.java | 6 +- .../object/FieldPickingPlugin.java | 8 +- .../object/GrandExchangeShortcut.java | 6 +- .../object/KalphiteEntranceHandler.java | 4 +- .../object/LumbridgeBasementPlugin.java | 6 +- .../interaction/object/ProspectOrePlugin.java | 6 +- .../interaction/object/PyreSitePlugin.java | 4 +- .../object/ThievingGuidePlugin.java | 6 +- .../object/WildernessLeverPlugin.java | 4 +- .../object/WildernessObeliskPlugin.java | 4 +- .../interaction/object/dmc/DMCHandler.java | 6 +- .../object/sorceress/GardenObjectsPlugin.kt | 13 +- .../player/LoginValidationPlugin.java | 4 +- .../java/core/game/node/entity/Entity.java | 22 +- .../game/node/entity/combat/DeathTask.java | 6 +- .../node/entity/combat/ImpactHandler.java | 8 +- .../entity/combat/equipment/BoltEffect.java | 6 +- .../handlers/DragonfireSwingHandler.java | 6 +- .../special/ChainhitSpecialHandler.java | 8 +- .../special/QuickSmashSpecialHandler.java | 4 +- .../special/SnapshotSpecialHandler.java | 4 +- .../node/entity/combat/spell/BindSpell.java | 4 +- .../node/entity/combat/spell/IceSpells.java | 4 +- .../entity/combat/spell/MiasmicSpells.java | 6 +- .../core/game/node/entity/impl/Animator.java | 8 +- .../game/node/entity/impl/ForceMovement.java | 6 +- .../game/node/entity/impl/PulseManager.java | 6 +- .../game/node/entity/lock/ActionLocks.java | 4 +- .../java/core/game/node/entity/lock/Lock.java | 10 +- .../java/core/game/node/entity/npc/NPC.java | 28 +- .../entity/npc/agg/AggressiveBehavior.java | 6 +- .../entity/npc/agg/AggressiveHandler.java | 6 +- .../node/entity/npc/bosses/GiantMoleNPC.java | 6 +- .../entity/npc/bosses/KalphiteQueenNPC.java | 4 +- .../npc/bosses/corp/CorporealBeastNPC.java | 6 +- .../npc/bosses/corp/DarkEnergyCoreNPC.java | 4 +- .../city/pollnivneach/AliTheCamelHandler.java | 4 +- .../npc/city/sophanem/WallShortcut.java | 4 +- .../varrock/VarrockEastBartenderDialogue.java | 4 +- .../node/entity/npc/familiar/BeaverNPC.java | 6 +- .../node/entity/npc/familiar/BunyipNPC.java | 6 +- .../npc/familiar/CockatriceFamiliarNPC.java | 4 +- .../entity/npc/familiar/DesertWyrmNPC.java | 4 +- .../entity/npc/familiar/DreadfowlNPC.java | 6 +- .../entity/npc/familiar/ForgeRegentNPC.java | 4 +- .../node/entity/npc/familiar/FruitBatNPC.java | 8 +- .../npc/familiar/GiantChinchompaNPC.java | 4 +- .../node/entity/npc/familiar/IbisNPC.java | 4 +- .../node/entity/npc/familiar/MacawNPC.java | 8 +- .../npc/familiar/MinotaurFamiliarNPC.java | 4 +- .../node/entity/npc/familiar/PyreLordNPC.java | 4 +- .../npc/familiar/SpiritKalphiteNPC.java | 4 +- .../entity/npc/familiar/SpiritSpiderNPC.java | 8 +- .../entity/npc/familiar/SpiritWolfNPC.java | 4 +- .../entity/npc/familiar/ThornySnailNPC.java | 4 +- .../entity/npc/familiar/VoidFamiliarNPC.java | 8 +- .../node/entity/npc/other/ArmourSuitNPC.java | 4 +- .../game/node/entity/npc/other/BorkNPC.java | 18 +- .../node/entity/npc/other/DraynorTreeNPC.java | 6 +- .../entity/npc/other/ElementalWizardNPC.java | 4 +- .../node/entity/npc/other/FishingNPC.java | 8 +- .../node/entity/npc/other/GraveStoneNPC.java | 12 +- .../entity/npc/other/LumberKittenNPC.java | 14 +- .../npc/other/SorceressElementalNPC.java | 4 +- .../quest/pirates_treasure/GardenerNPC.java | 4 +- .../npc/revenant/RevenantCombatHandler.java | 4 +- .../node/entity/npc/revenant/RevenantNPC.java | 10 +- .../core/game/node/entity/player/Player.java | 68 +- .../player/info/login/LoginConfiguration.java | 27 +- .../player/info/portal/PlayerSQLManager.java | 4 + .../entity/player/link/BankPinManager.java | 10 +- .../player/link/ConfigurationManager.java | 6 +- .../entity/player/link/PacketDispatch.java | 4 +- .../node/entity/player/link/Settings.java | 4 +- .../entity/player/link/TeleportManager.java | 4 +- .../node/entity/player/link/emote/Emotes.java | 4 +- .../player/link/grave/GraveManager.java | 7 +- .../entity/player/link/music/MusicPlayer.java | 5 +- .../entity/player/link/prayer/Prayer.java | 4 +- .../player/link/request/RequestManager.java | 8 +- .../link/request/assist/AssistSession.java | 4 +- .../link/request/trade/TradeContainer.java | 10 +- .../entity/player/link/spawn/SpawnData.java | 10 +- .../node/entity/skill/SkillRestoration.java | 10 +- .../core/game/node/entity/skill/Skills.java | 6 +- .../entity/skill/agility/AgilityHandler.java | 14 +- .../skill/agility/brimhaven/BladeTrap.java | 4 +- .../agility/brimhaven/BrimhavenArena.java | 8 +- .../agility/brimhaven/BrimhavenCourse.java | 18 +- .../skill/agility/brimhaven/DartTrap.java | 4 +- .../skill/agility/brimhaven/FloorSpikes.java | 4 +- .../skill/agility/brimhaven/PressurePad.java | 4 +- .../agility/brimhaven/SpinningBlades.java | 4 +- .../agility/pyramid/AgilityPyramidCourse.java | 10 +- .../skill/agility/pyramid/MovingBlockNPC.java | 14 +- .../skill/agility/pyramid/RollingBlock.java | 6 +- .../shortcuts/FaladorGrapplePlugin.java | 4 +- .../agility/shortcuts/FenceJumpShortcut.java | 4 +- .../agility/shortcuts/KaramjaGrapple.java | 4 +- .../agility/shortcuts/MonkeyBarShortcut.java | 4 +- .../agility/shortcuts/StileShortcut.java | 4 +- .../shortcuts/StrangeFloorShortcut.java | 6 +- .../agility/shortcuts/TunnelShortcut.java | 4 +- .../agility/shortcuts/WaterOrbGrapple.java | 4 +- .../agility/shortcuts/YanilleGrapple.java | 4 +- .../construction/ConstructionGuideBook.java | 4 +- .../skill/construction/HouseManager.java | 4 +- .../decoration/FireplacePlugin.java | 4 +- .../decoration/StaircasePlugin.java | 6 +- .../questhall/MountedGloryPlugin.java | 4 +- .../npc/HouseServantDialogue.java | 6 +- .../skill/cooking/WineFermentPlugin.java | 4 +- .../skill/firemaking/FireMakingPulse.java | 6 +- .../skill/gather/GatheringSkillPulse.java | 4 +- .../node/entity/skill/hunter/HunterNPC.java | 4 +- .../skill/hunter/ImpetuousImpulses.java | 4 +- .../node/entity/skill/hunter/ImplingNPC.java | 10 +- .../node/entity/skill/hunter/TrapHook.java | 4 +- .../node/entity/skill/hunter/TrapSetting.java | 8 +- .../node/entity/skill/hunter/TrapWrapper.java | 10 +- .../entity/skill/hunter/bnet/BNetPulse.java | 8 +- .../hunter/falconry/FalconryCatchPulse.java | 4 +- .../skill/magic/HouseTeleportPlugin.java | 4 +- .../node/entity/skill/magic/MagicSpell.java | 10 +- .../magic/ancient/AncientTeleportPlugin.java | 4 +- .../entity/skill/magic/lunar/DreamSpell.java | 4 +- .../skill/magic/lunar/MagicImbueSpell.java | 6 +- .../skill/magic/lunar/SpellbookSwapSpell.java | 4 +- .../skill/magic/lunar/VengeanceSpell.java | 4 +- .../skill/prayer/BoneBuryingOptionPlugin.java | 8 +- .../runecrafting/MysteriousRuinPlugin.java | 4 +- .../skill/runecrafting/RuneCraftPulse.java | 4 +- .../runecrafting/RunecraftingPlugin.java | 4 +- .../node/entity/skill/slayer/BansheeNPC.java | 4 +- .../skill/slayer/FishingExplosivePlugin.java | 4 +- .../entity/skill/slayer/NechryaelNPC.java | 10 +- .../skill/slayer/SlayerMasterDialogue.java | 4 +- .../skill/slayer/dungeon/AncientCavern.java | 8 +- .../slayer/dungeon/FremennikDungeon.java | 4 +- .../slayer/dungeon/LumbridgeDungeon.java | 4 +- .../skill/slayer/dungeon/SmokeDungeon.java | 8 +- .../skill/smithing/FurnaceOptionPlugin.java | 4 +- .../summoning/SummoningTrainingRoom.java | 14 +- .../skill/summoning/familiar/Familiar.java | 8 +- .../skill/summoning/familiar/Forager.java | 6 +- .../summoning/familiar/RemoteViewer.java | 6 +- .../skill/thieving/StallThiefPulse.java | 8 +- .../skill/thieving/ThievableChestPlugin.java | 8 +- .../game/node/entity/state/StatePulse.java | 4 +- .../entity/state/impl/FireResistantPulse.java | 4 +- .../entity/state/impl/FrozenStatePulse.java | 6 +- .../entity/state/impl/MiasmicStatePulse.java | 6 +- .../java/core/game/node/item/GroundItem.java | 10 +- .../game/node/item/GroundItemManager.java | 4 +- .../game/node/scenery/SceneryBuilder.java | 14 +- .../java/core/game/system/SystemManager.java | 7 +- .../core/game/system/SystemTermination.java | 6 +- .../java/core/game/system/SystemUpdate.java | 6 +- .../core/game/system/command/CommandSet.java | 4 +- .../game/system/communication/ClanEntry.java | 4 +- .../system/communication/ClanRepository.java | 29 +- .../communication/CommunicationInfo.java | 157 +++- .../mysql/impl/HighscoreSQLHandler.java | 6 +- .../core/game/system/task/LogoutTask.java | 10 +- .../java/core/game/system/task/NodeTask.java | 4 +- .../main/java/core/game/world/map/Region.java | 6 +- .../core/game/world/map/zone/ZoneBuilder.java | 9 +- .../core/game/world/map/zone/ZoneMonitor.java | 2 +- .../game/world/map/zone/impl/DarkZone.java | 4 +- .../world/map/zone/impl/WildernessZone.java | 8 +- .../game/world/objectparser/ObjectParser.java | 4 +- .../src/main/java/core/gui/ConsoleFrame.java | 168 +++++ Server/src/main/java/core/gui/ConsoleTab.java | 44 ++ .../core/gui/component/ConsoleLogger.java | 68 ++ .../java/core/gui/component/PlayerViewer.java | 270 +++++++ .../java/core/gui/tab/GrandExchangeTab.java | 191 +++++ .../src/main/java/core/gui/tab/PlayerTab.java | 187 +++++ .../main/java/core/gui/tab/StatisticsTab.java | 669 ++++++++++++++++++ .../main/java/core/gui/tab/UtilityTab.java | 600 ++++++++++++++++ Server/src/main/java/core/net/IoSession.java | 4 +- Server/src/main/java/core/net/NioReactor.java | 148 ++++ .../core/net/{ms => amsc}/MSEventHandler.java | 26 +- .../net/{ms => amsc}/MSPacketRepository.java | 45 +- .../{ms => amsc}/ManagementServerState.java | 2 +- .../java/core/net/amsc/WorldCommunicator.java | 235 ++++++ .../net/{ms => amsc}/WorldStatistics.java | 2 +- .../java/core/net/event/GameReadEvent.java | 4 +- .../main/java/core/net/event/MSReadEvent.java | 2 +- .../core/net/event/RegistryReadEvent.java | 44 +- .../core/net/event/RegistryWriteEvent.java | 16 +- .../java/core/net/lobby/WorldDefinition.java | 4 +- .../main/java/core/net/lobby/WorldList.java | 4 +- .../net/packet/in/ActionButtonPacket.java | 4 +- .../java/core/net/packet/in/ChatPacket.java | 13 +- .../net/packet/in/ChatSettingsPacket.java | 7 +- .../core/net/packet/in/ClanPacketHandler.java | 41 +- .../core/net/packet/in/CommandPacket.java | 8 +- .../net/packet/in/InterfaceUseOnPacket.java | 10 +- .../core/net/packet/out/ContactPackets.java | 4 +- .../core/net/registry/AccountRegister.java | 4 +- .../ai/lumbridge/LumbridgeBotHandler.java | 4 +- .../java/rs09/game/ai/pvp/PVPAIPActions.java | 6 +- .../game/ai/resource/ResourceAIPActions.java | 4 +- .../game/ai/resource/ResourceAIPManager.java | 8 +- Server/src/main/kotlin/api/ContentAPI.kt | 8 +- Server/src/main/kotlin/gui/ServerMonitor.kt | 6 +- Server/src/main/kotlin/rs09/Server.kt | 257 +++---- Server/src/main/kotlin/rs09/ServerState.kt | 8 - .../rs09/game/ai/general/GeneralBotCreator.kt | 10 +- .../kotlin/rs09/game/ai/general/ScriptAPI.kt | 8 +- .../ai/general/scriptrepository/Adventurer.kt | 5 +- .../scriptrepository/LobsterCatcher.kt | 4 +- .../minigamebots/pestcontrol/CombatState.kt | 5 +- .../pestcontrol/CombatStateIntermediate.kt | 5 +- .../rs09/game/ai/pvmbots/PvMBotsBuilder.kt | 4 +- .../activity/allfiredup/AFUBeaconHandler.kt | 8 +- .../content/activity/allfiredup/AFUSession.kt | 4 +- .../blastfurnace/BlastFurnaceListeners.kt | 52 +- .../fishingtrawler/FishingTrawlerActivity.kt | 18 +- .../fishingtrawler/FishingTrawlerSession.kt | 6 +- .../content/activity/fog/ReggieDialogue.kt | 5 +- .../gnomecooking/GCRewardTokenHandler.kt | 4 +- .../gnomecooking/battas/GnomeBattaCooker.kt | 4 +- .../gnomecooking/bowls/GnomeBowlCooker.kt | 4 +- .../gnomecooking/cocktails/CocktailCooker.kt | 4 +- .../crunchies/GnomeCrunchyCooker.kt | 4 +- .../activity/pyramidplunder/PlunderSession.kt | 4 +- .../activity/vinesweeper/Vinesweeper.kt | 17 +- .../game/content/ame/RandomEventManager.kt | 12 +- .../rs09/game/content/ame/RandomEventNPC.kt | 2 + .../dialogue/AluftGianneSnrDialogue.kt | 4 +- .../content/global/action/EquipHandler.kt | 2 + .../content/global/action/PickupHandler.kt | 4 +- .../content/global/travel/EssenceTeleport.kt | 4 +- .../worldevents/holiday/easter/EasterEvent.kt | 10 +- .../holiday/halloween/SimpleHalloweenEvent.kt | 9 +- .../holiday/halloween/TrickOrTreatHandler.kt | 4 +- .../worldevents/penguinhns/LarryHandler.kt | 1 + .../worldevents/penguinhns/PenguinHNSEvent.kt | 8 +- .../penguinhns/PenguinSpyingHandler.kt | 10 +- .../shootingstar/ShootingStarEvent.kt | 6 +- .../shootingstar/ShootingStarMiningPulse.kt | 4 +- .../quest/free/dragonslayer/NedDialogue.kt | 2 +- .../familycrest/PerfectGoldSmeltingHandler.kt | 2 +- .../HunterTalismanListener.kt | 2 +- .../thefremenniktrials/ManniDialogue.kt | 5 +- .../TFTInteractionListeners.kt | 6 +- .../quest/members/thelosttribe/CaveZone.kt | 4 +- .../members/thelosttribe/GoblinFollower.kt | 4 +- .../members/thelosttribe/LostTribeCutscene.kt | 2 +- .../members/thelosttribe/PickaxeOnRubble.kt | 4 +- .../members/thelosttribe/PickpocketSigmund.kt | 4 +- .../zone/keldagrim/DwarvenBoatmanDialogue.kt | 4 +- .../zone/keldagrim/KeldagrimCartMethods.kt | 6 +- .../bonegrinder/BoneGrinderListener.kt | 2 +- .../main/kotlin/rs09/game/ge/OfferManager.kt | 4 + .../CorporealBeastWarningInterface.kt | 6 +- .../rs09/game/interaction/QCRepository.kt | 11 +- .../interaction/inter/FairyRingInterface.kt | 4 +- .../interaction/inter/MainGameInterface.kt | 2 +- .../interaction/item/GrandSeedPodHandler.kt | 11 +- .../interaction/item/withnpc/GCItemOnCat.kt | 2 +- .../interaction/object/GutanothChestPlugin.kt | 4 +- .../interaction/object/JungleBushHandler.kt | 4 +- .../interaction/player/PeltOptionPlugin.kt | 6 +- .../dungeons/brimhaven/BrimhavenUtils.kt | 4 +- .../game/node/entity/combat/CombatPulse.kt | 10 +- .../combat/handlers/RangeSwingHandler.kt | 6 +- .../entity/player/info/login/LoginParser.kt | 16 +- .../player/info/login/PlayerSaveParser.kt | 7 +- .../skill/agility/BarbarianOutpostCourse.kt | 8 +- .../skill/agility/GnomeStrongholdCourse.kt | 6 +- .../entity/skill/agility/WildernessCourse.kt | 14 +- .../agility/shortcuts/BasaltRockShortcut.kt | 4 +- .../skill/agility/shortcuts/PipeShortcut.kt | 4 +- .../skill/construction/EstateAgentDialogue.kt | 2 +- .../decoration/study/LecternPlugin.kt | 4 +- .../decoration/study/TelescopePlugin.kt | 2 +- .../skill/gather/fishing/FishingPulse.kt | 3 +- .../skill/hunter/pitfall/HunterPitfall.kt | 10 +- .../skill/hunter/tracking/HunterTracking.kt | 4 +- .../node/entity/skill/magic/SpellListener.kt | 6 +- .../skill/runecrafting/abyss/AbyssPlugin.kt | 14 +- .../skill/skillcapeperks/SkillcapePerks.kt | 6 +- .../game/node/entity/state/newsys/State.kt | 2 +- .../state/newsys/states/DiseasedState.kt | 4 +- .../newsys/states/GodspellChargedState.kt | 10 +- .../kotlin/rs09/game/system/SystemLogger.kt | 11 +- .../rs09/game/system/command/Command.kt | 4 +- .../system/command/oldsys/AIPCommandPlugin.kt | 4 +- .../system/command/oldsys/VisualCommand.kt | 14 +- .../command/sets/AnimationCommandSet.kt | 4 +- .../system/command/sets/BottingCommandSet.kt | 6 +- .../game/system/command/sets/FunCommandSet.kt | 5 +- .../command/sets/ModerationCommandSet.kt | 4 +- .../game/system/config/GroundSpawnLoader.kt | 4 +- .../game/system/config/ServerConfigParser.kt | 10 +- .../{WorldSettings.kt => GameSettings.kt} | 6 +- .../main/kotlin/rs09/game/world/GameWorld.kt | 185 +++++ .../kotlin/rs09/game/world/ImmerseWorld.kt | 2 +- .../src/main/kotlin/rs09/game/world/World.kt | 155 ---- .../rs09/game/world/callback/CallbackHub.kt | 1 + .../world/repository/DisconnectionQueue.kt | 6 +- .../rs09/game/world/update/NPCRenderer.kt | 4 +- .../kotlin/rs09/net/event/LoginReadEvent.kt | 8 +- .../kotlin/rs09/net/ms/ManagementServer.kt | 177 ----- .../kotlin/rs09/net/ms/ManagementState.kt | 8 - .../rs09/net/packet/PacketWriteQueue.kt | 3 +- .../net/packet/in/QuickChatPacketHandler.kt | 4 +- .../kotlin/rs09/worker/MajorUpdateWorker.kt | 135 ++++ .../src/main/kotlin/rs09/worker/WorldClock.kt | 86 --- 512 files changed, 5297 insertions(+), 2193 deletions(-) create mode 100644 Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java create mode 100644 Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java create mode 100644 Server/src/main/java/core/gui/ConsoleFrame.java create mode 100644 Server/src/main/java/core/gui/ConsoleTab.java create mode 100644 Server/src/main/java/core/gui/component/ConsoleLogger.java create mode 100644 Server/src/main/java/core/gui/component/PlayerViewer.java create mode 100644 Server/src/main/java/core/gui/tab/GrandExchangeTab.java create mode 100644 Server/src/main/java/core/gui/tab/PlayerTab.java create mode 100644 Server/src/main/java/core/gui/tab/StatisticsTab.java create mode 100644 Server/src/main/java/core/gui/tab/UtilityTab.java create mode 100644 Server/src/main/java/core/net/NioReactor.java rename Server/src/main/java/core/net/{ms => amsc}/MSEventHandler.java (56%) rename Server/src/main/java/core/net/{ms => amsc}/MSPacketRepository.java (94%) rename Server/src/main/java/core/net/{ms => amsc}/ManagementServerState.java (98%) create mode 100644 Server/src/main/java/core/net/amsc/WorldCommunicator.java rename Server/src/main/java/core/net/{ms => amsc}/WorldStatistics.java (96%) delete mode 100644 Server/src/main/kotlin/rs09/ServerState.kt rename Server/src/main/kotlin/rs09/game/world/{WorldSettings.kt => GameSettings.kt} (98%) create mode 100644 Server/src/main/kotlin/rs09/game/world/GameWorld.kt delete mode 100644 Server/src/main/kotlin/rs09/game/world/World.kt delete mode 100644 Server/src/main/kotlin/rs09/net/ms/ManagementServer.kt delete mode 100644 Server/src/main/kotlin/rs09/net/ms/ManagementState.kt create mode 100644 Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt delete mode 100644 Server/src/main/kotlin/rs09/worker/WorldClock.kt diff --git a/CHANGELOG b/CHANGELOG index 015ae1056..4d0a7c458 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -92,13 +92,17 @@ - Corrected special attack for the enhanced excalibur - Corrected damage calculations for Ruby Bolts (e) special effect < --- ABOVE Released January 1st, 2022 https://gitlab.com/2009scape/2009scape/-/tags/Jan-1-2022 ---- > -- Set magic dart base xp to 30 (authenticity fix) -- Removed range strength and prayer bonus from god armour (authenticity fix) -- Can now pickpocket women in ardy (npc ID 25) -- Can now travel on free charter boats without having money in inventory -- Emerald and diamond bracelet enchants no longer produce noted items -- Prevent furnace temperature from going negative and deduplicate bar handling. -- Fix player saves for players who used coal on the conveyer belt before bf-fixes. -- Fix Edgeville canoe -> wilderness pond. -- Fix Edgeville Dungeon Wilderness gate getting stuck. -- Fishing guild is able to be entered with a fishing skill boost. \ No newline at end of file +- Set magic dart base xp to 30 (authenticity fix) - ryannathans +- Removed range strength and prayer bonus from god armour (authenticity fix) - ryannathans +- Can now pickpocket women in ardy (npc ID 25) - ryannathans +- Can now travel on free charter boats without having money in inventory - ryannathans +- Emerald and diamond bracelet enchants no longer produce noted items - ryannathans +- Prevent Blast Furnace temperature from going negative and deduplicate bar handling - aweinstock +- Fix player saves for players who used coal on the conveyor belt before bf-fixes - aweinstock +- Fix Edgeville canoe -> wilderness pond - downthecrop +- Fix Edgeville Dungeon Wilderness gate getting stuck - downthecrop +- Fishing guild is able to be entered with a fishing skill boost - downthecrop +- Carefully revert some of the core changes introduced after Dec 15 release, this should resolve current stability issues - ceikry/ryannathans +- Fix incorrect message when trying to repair blast furnace without a hammer - ryannathans +- Fix Pest Control bots and a number of other potential issues with various bot functionalities - ryannathans +- Fix adventure bots pooling/stuck in Lumbridge after death - ryannathans diff --git a/Server/src/main/java/core/cache/def/impl/CS2Mapping.java b/Server/src/main/java/core/cache/def/impl/CS2Mapping.java index b0f8ddafc..cc1914b50 100644 --- a/Server/src/main/java/core/cache/def/impl/CS2Mapping.java +++ b/Server/src/main/java/core/cache/def/impl/CS2Mapping.java @@ -1,6 +1,7 @@ package core.cache.def.impl; import java.io.BufferedWriter; +import java.io.FileWriter; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; @@ -9,7 +10,7 @@ import java.util.Map; import core.cache.Cache; import core.cache.misc.buffer.ByteBufferUtils; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * The CS2 mapping. @@ -65,6 +66,33 @@ public final class CS2Mapping { this.scriptId = scriptId; } + /** + * The main method. + * @param args The arguments cast on runtime. + * @throws Throwable When an exception occurs. + */ + public static void main(String... args) throws Throwable { + GameWorld.prompt(false); + BufferedWriter bw = Files.newBufferedWriter(Paths.get("./cs2.txt")); + for (int i = 0; i < 10000; i++) { + CS2Mapping mapping = forId(i); + if (mapping == null) { + continue; + } + if (mapping.map == null) { + continue; + } + bw.append("ScriptAPI - " + i + " ["); + for (int index : mapping.map.keySet()) { + bw.append(mapping.map.get(index) + ": " + index + " "); + } + bw.append("]"); + bw.newLine(); + } + bw.flush(); + bw.close(); + } + /** * Gets the mapping for the given script id. * @param scriptId The script id. diff --git a/Server/src/main/java/core/cache/def/impl/NPCDefinition.java b/Server/src/main/java/core/cache/def/impl/NPCDefinition.java index df0594c6b..e2105888f 100644 --- a/Server/src/main/java/core/cache/def/impl/NPCDefinition.java +++ b/Server/src/main/java/core/cache/def/impl/NPCDefinition.java @@ -11,7 +11,7 @@ import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.tools.StringUtils; import rs09.game.system.config.NPCConfigParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; import java.util.HashMap; @@ -212,6 +212,19 @@ public final class NPCDefinition extends Definition { return def; } + public static void main(String... args) throws Throwable { + GameWorld.prompt(false); + System.out.println("Roar: " + NPCDefinition.forId(2329).standAnimation); + // for (int i = 0; i < 11000; i++) { + // ItemDefinition def = ItemDefinition.forId(i); + // if (def.getMaleWornModelId1() >= 1250 && def.getMaleWornModelId1() <= + // 1550) { + // System.out.println(def.getName() + " " + i + ": " + + // def.getMaleWornModelId1()); + // } + // } + } + /** * Gets the child object definitions. * @param player The player to get it for. diff --git a/Server/src/main/java/core/cache/def/impl/RenderAnimationDefinition.java b/Server/src/main/java/core/cache/def/impl/RenderAnimationDefinition.java index c8f19e76d..08d1c97bc 100644 --- a/Server/src/main/java/core/cache/def/impl/RenderAnimationDefinition.java +++ b/Server/src/main/java/core/cache/def/impl/RenderAnimationDefinition.java @@ -2,7 +2,7 @@ package core.cache.def.impl; import core.cache.Cache; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.lang.reflect.Array; import java.lang.reflect.Field; @@ -287,4 +287,42 @@ public class RenderAnimationDefinition { anInt990 = -1; anInt993 = 0; } + + public static void main(String...args) throws Throwable { + GameWorld.prompt(false); + RenderAnimationDefinition def = RenderAnimationDefinition.forId(1426); + System.out.println("size: " + def.getClass().getDeclaredFields().length); + for (Field f : def.getClass().getDeclaredFields()) { + if (!Modifier.isStatic(f.getModifiers())) { + if (f.getType().isArray()) { + Object object = f.get(def); + if (object != null) { + int length = Array.getLength(object); + System.out.print(f.getName() + ", ["); + for (int i = 0; i < length; i++) { + System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]")); + } + continue; + } + } + System.out.println(f.getName() + ", " + f.get(def)); + } + } + for (Field f : def.getClass().getSuperclass().getDeclaredFields()) { + if (!Modifier.isStatic(f.getModifiers())) { + if (f.getType().isArray()) { + Object object = f.get(def); + if (object != null) { + int length = Array.getLength(object); + System.out.print(f.getName() + ", ["); + for (int i = 0; i < length; i++) { + System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]")); + } + continue; + } + } + System.out.println(f.getName() + ", " + f.get(def)); + } + } + } } diff --git a/Server/src/main/java/core/cache/def/impl/SceneryDefinition.java b/Server/src/main/java/core/cache/def/impl/SceneryDefinition.java index 70284e0fd..155a22803 100644 --- a/Server/src/main/java/core/cache/def/impl/SceneryDefinition.java +++ b/Server/src/main/java/core/cache/def/impl/SceneryDefinition.java @@ -7,7 +7,7 @@ import core.game.interaction.OptionHandler; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; import java.util.HashMap; @@ -509,6 +509,61 @@ public class SceneryDefinition extends Definition { mapIcon = -1; } + /** + * Main method, used for debugging object definitions. + * @param args The arguments cast on runtime. + * @throws Throwable When an exception occurs. + */ + public static void main(String... args) throws Throwable { + GameWorld.prompt(false); + // if (true) { + // for (int id = 0; id <= 27325; id++) { + // ObjectDefinition def = ObjectDefinition.forId(id); + // if (def.mapIcon > 69) { + // System.out.println(id + " - " + def.getName() + " has map icon " + + // def.mapIcon); + // } + // } + // return; 2105 + // } + /*ObjectDefinition def = ObjectDefinition.forId(2105); + System.out.println("size: " + def.getClass().getDeclaredFields().length); + for (Field f : def.getClass().getDeclaredFields()) { + if (!Modifier.isStatic(f.getModifiers())) { + if (f.getType().isArray()) { + Object object = f.get(def); + if (object != null) { + int length = Array.getLength(object); + System.out.print(f.getName() + ", ["); + for (int i = 0; i < length; i++) { + System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]")); + } + System.out.println(); + continue; + } + } + System.out.println(f.getName() + ", " + f.get(def)); + } + } + for (Field f : def.getClass().getSuperclass().getDeclaredFields()) { + if (!Modifier.isStatic(f.getModifiers())) { + if (f.getType().isArray()) { + Object object = f.get(def); + if (object != null) { + int length = Array.getLength(object); + System.out.print(f.getName() + ", ["); + for (int i = 0; i < length; i++) { + System.out.print(Array.get(object, i) + (i < (length - 1) ? ", " : "]")); + } + System.out.println(); + continue; + } + } + System.out.println(f.getName() + ", " + f.get(def)); + } + }*/ + } + /** * Parses the definitions. * @throws Throwable the throwable. diff --git a/Server/src/main/java/core/cache/def/impl/VarbitDefinition.java b/Server/src/main/java/core/cache/def/impl/VarbitDefinition.java index 253b71add..19361b4af 100644 --- a/Server/src/main/java/core/cache/def/impl/VarbitDefinition.java +++ b/Server/src/main/java/core/cache/def/impl/VarbitDefinition.java @@ -2,7 +2,8 @@ package core.cache.def.impl; import core.cache.Cache; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.system.SystemLogger; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; import java.util.HashMap; @@ -103,6 +104,16 @@ public final class VarbitDefinition { return def; } + public static void main(String... args) throws Throwable { + GameWorld.prompt(false); + for (int i = 0; i < 15000; i++) { + VarbitDefinition def = forObjectID(i); + if (def != null && def.configId == 33) { + System.out.println("Config file [id=" + i + ", shift=" + def.bitShift + "]!"); + } + } + } + /** * Gets the current config value for this file. * @param player The player. diff --git a/Server/src/main/java/core/game/container/impl/BankContainer.java b/Server/src/main/java/core/game/container/impl/BankContainer.java index df2bcb076..016dee8f9 100644 --- a/Server/src/main/java/core/game/container/impl/BankContainer.java +++ b/Server/src/main/java/core/game/container/impl/BankContainer.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.IronmanMode; import core.game.node.item.Item; import rs09.game.system.config.ItemConfigParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.PacketRepository; import core.net.packet.context.ContainerContext; import core.net.packet.out.ContainerPacket; @@ -91,7 +91,7 @@ public final class BankContainer extends Container { if (player.getIronmanManager().checkRestriction(IronmanMode.ULTIMATE)) { return; } - if (!player.getBankPinManager().isUnlocked() && !World.getSettings().isDevMode()) { + if (!player.getBankPinManager().isUnlocked() && !GameWorld.getSettings().isDevMode()) { player.getBankPinManager().openType(1); return; } @@ -122,7 +122,7 @@ public final class BankContainer extends Container { if (player.getIronmanManager().checkRestriction(IronmanMode.ULTIMATE)) { return; } - if (!player.getBankPinManager().isUnlocked() && !World.getSettings().isDevMode()) { + if (!player.getBankPinManager().isUnlocked() && !GameWorld.getSettings().isDevMode()) { player.getBankPinManager().openType(1); return; } diff --git a/Server/src/main/java/core/game/content/activity/ActivityManager.java b/Server/src/main/java/core/game/content/activity/ActivityManager.java index 3c17e6101..700a369d8 100644 --- a/Server/src/main/java/core/game/content/activity/ActivityManager.java +++ b/Server/src/main/java/core/game/content/activity/ActivityManager.java @@ -2,7 +2,7 @@ package core.game.content.activity; import core.game.node.entity.player.Player; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.HashMap; import java.util.Map; @@ -49,7 +49,7 @@ public final class ActivityManager { public static boolean start(Player player, String name, boolean login, Object... args) { ActivityPlugin plugin = ACTIVITIES.get(name); if (plugin == null) { - if (World.getSettings().isDevMode()) { + if (GameWorld.getSettings().isDevMode()) { SystemLogger.logErr("Unhandled activity - " + name + "!"); } return false; @@ -61,7 +61,7 @@ public final class ActivityManager { return plugin.start(player, login, args); } catch (Throwable e) { e.printStackTrace(); - if (World.getSettings().isDevMode()) { + if (GameWorld.getSettings().isDevMode()) { player.getPacketDispatch().sendMessage("Error starting activity " + (plugin == null ? null : plugin.getName()) + "!"); } } diff --git a/Server/src/main/java/core/game/content/activity/CutscenePlugin.java b/Server/src/main/java/core/game/content/activity/CutscenePlugin.java index 0fbaa202f..bc9a214a1 100644 --- a/Server/src/main/java/core/game/content/activity/CutscenePlugin.java +++ b/Server/src/main/java/core/game/content/activity/CutscenePlugin.java @@ -5,7 +5,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.net.packet.PacketRepository; @@ -74,7 +74,7 @@ public abstract class CutscenePlugin extends ActivityPlugin { player.removeAttribute("real-end"); player.setAttribute("real-end", player.getLocation()); if (isFade()) { - World.getPulser().submit(getStartPulse()); + GameWorld.getPulser().submit(getStartPulse()); } else { PacketRepository.send(MinimapState.class, new MinimapStateContext(player, getMapState())); player.getInterfaceManager().hideTabs(getRemovedTabs()); @@ -118,7 +118,7 @@ public abstract class CutscenePlugin extends ActivityPlugin { */ public void stop(boolean fade) { if (fade) { - World.getPulser().submit(endPulse); + GameWorld.getPulser().submit(endPulse); } else { end(); } diff --git a/Server/src/main/java/core/game/content/activity/barrows/BarrowsActivityPlugin.java b/Server/src/main/java/core/game/content/activity/barrows/BarrowsActivityPlugin.java index bf830d92d..be2820b4d 100644 --- a/Server/src/main/java/core/game/content/activity/barrows/BarrowsActivityPlugin.java +++ b/Server/src/main/java/core/game/content/activity/barrows/BarrowsActivityPlugin.java @@ -31,7 +31,7 @@ import core.net.packet.out.MinimapState; import core.plugin.Initializable; import core.tools.RandomFunction; import rs09.game.content.activity.barrows.RewardChest; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; /** @@ -153,7 +153,7 @@ public final class BarrowsActivityPlugin extends ActivityPlugin { if (!PULSE.isRunning()) { PULSE.restart(); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } } else { ((NPC) e).setAggressive(true); diff --git a/Server/src/main/java/core/game/content/activity/bountyhunter/BHOptionHandler.java b/Server/src/main/java/core/game/content/activity/bountyhunter/BHOptionHandler.java index e4887279b..a87e47002 100644 --- a/Server/src/main/java/core/game/content/activity/bountyhunter/BHOptionHandler.java +++ b/Server/src/main/java/core/game/content/activity/bountyhunter/BHOptionHandler.java @@ -7,7 +7,7 @@ import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -53,12 +53,12 @@ public final class BHOptionHandler extends OptionHandler { if (activity == null) { return false; } - if (player.getAttribute("exit_penalty", 0) > World.getTicks()) { + if (player.getAttribute("exit_penalty", 0) > GameWorld.getTicks()) { player.getPacketDispatch().sendMessage("You can't leave the crater until the exit penalty is over."); return true; } player.lock(2); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(activity.getType().getExitLocation()); diff --git a/Server/src/main/java/core/game/content/activity/bountyhunter/BountyEntry.java b/Server/src/main/java/core/game/content/activity/bountyhunter/BountyEntry.java index 2ea9b3e2c..e92d7e1f1 100644 --- a/Server/src/main/java/core/game/content/activity/bountyhunter/BountyEntry.java +++ b/Server/src/main/java/core/game/content/activity/bountyhunter/BountyEntry.java @@ -1,7 +1,7 @@ package core.game.content.activity.bountyhunter; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Holds a player's bounty hunter data. @@ -49,21 +49,21 @@ public final class BountyEntry { public void updatePenalty(Player player, boolean unlock) { int penalty = player.getAttribute("pickup_penalty", 0); int child = -1; - if (World.getTicks() > penalty) { + if (GameWorld.getTicks() > penalty) { player.removeAttribute("pickup_penalty"); player.getPacketDispatch().sendInterfaceConfig(653, 8, true); } else if (penalty != 0) { child = 8; - int seconds = (int) Math.round((penalty - World.getTicks()) * 0.6); + int seconds = (int) Math.round((penalty - GameWorld.getTicks()) * 0.6); player.getPacketDispatch().sendString(seconds + " Sec", 653, 10); } penalty = player.getAttribute("exit_penalty", 0); - if (World.getTicks() > penalty) { + if (GameWorld.getTicks() > penalty) { player.removeAttribute("exit_penalty"); player.getPacketDispatch().sendInterfaceConfig(653, 11, true); } else if (penalty != 0) { child = 11; - int seconds = (int) Math.round((penalty - World.getTicks()) * 0.6); + int seconds = (int) Math.round((penalty - GameWorld.getTicks()) * 0.6); player.getPacketDispatch().sendString(seconds + " Sec", 653, 13); } if (unlock && child > -1) { diff --git a/Server/src/main/java/core/game/content/activity/bountyhunter/BountyHunterActivity.java b/Server/src/main/java/core/game/content/activity/bountyhunter/BountyHunterActivity.java index 2fa08c57e..5bce8f92c 100644 --- a/Server/src/main/java/core/game/content/activity/bountyhunter/BountyHunterActivity.java +++ b/Server/src/main/java/core/game/content/activity/bountyhunter/BountyHunterActivity.java @@ -18,7 +18,7 @@ import core.game.node.entity.player.link.prayer.PrayerType; import core.game.node.item.GroundItem; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.Point; import core.game.world.map.zone.ZoneBorders; @@ -237,10 +237,10 @@ public final class BountyHunterActivity extends ActivityPlugin { player.getInterfaceManager().openOverlay(GAME_OVERLAY); int penalty; if ((penalty = player.getAttribute("pickup_penalty", 0)) != 0) { - player.setAttribute("/save:pickup_penalty", World.getTicks() + penalty); + player.setAttribute("/save:pickup_penalty", GameWorld.getTicks() + penalty); } if ((penalty = player.getAttribute("exit_penalty", 0)) != 0) { - player.setAttribute("/save:exit_penalty", World.getTicks() + penalty); + player.setAttribute("/save:exit_penalty", GameWorld.getTicks() + penalty); if (player.getPrayer().get(PrayerType.PROTECT_ITEMS)) { player.getPrayer().toggle(PrayerType.PROTECT_ITEMS); } @@ -251,11 +251,11 @@ public final class BountyHunterActivity extends ActivityPlugin { player.getInteraction().remove(Option._P_ASSIST); player.getSkullManager().setSkullCheckDisabled(true); player.getSkullManager().setWilderness(true); - player.setAttribute("bh_joined", World.getTicks() + 10); + player.setAttribute("bh_joined", GameWorld.getTicks() + 10); updateSkull(player); if (!gamePulse.isRunning()) { gamePulse.start(); - World.getPulser().submit(gamePulse); + GameWorld.getPulser().submit(gamePulse); } } return super.enter(e); @@ -305,17 +305,17 @@ public final class BountyHunterActivity extends ActivityPlugin { public boolean actionButton(Player player, int interfaceId, int buttonId, int slot, int itemId, int opcode) { if (interfaceId == 192 && buttonId == 19) { BountyEntry entry = players.get(player); - if (entry != null && player.getAttribute("pickup_penalty", 0) > World.getTicks()) { + if (entry != null && player.getAttribute("pickup_penalty", 0) > GameWorld.getTicks()) { player.getPacketDispatch().sendMessage("You should not be picking up items. Now you must wait before you can leave."); player.removeAttribute("pickup_penalty"); - player.setAttribute("/save:exit_penalty", World.getTicks() + 300); + player.setAttribute("/save:exit_penalty", GameWorld.getTicks() + 300); entry.updatePenalty(player, true); if (player.getPrayer().get(PrayerType.PROTECT_ITEMS)) { player.getPrayer().toggle(PrayerType.PROTECT_ITEMS); } } } else if (interfaceId == 271 && buttonId == 25) { - if (player.getAttribute("exit_penalty", 0) > World.getTicks()) { + if (player.getAttribute("exit_penalty", 0) > GameWorld.getTicks()) { player.getPacketDispatch().sendMessage("You can't use the protect item prayer until your penalty has passed."); player.getConfigManager().send(PrayerType.PROTECT_ITEMS.getConfig(), 0); return true; @@ -327,7 +327,7 @@ public final class BountyHunterActivity extends ActivityPlugin { @Override public boolean continueAttack(Entity e, Node target, CombatStyle style, boolean message) { if (e instanceof Player && target instanceof Player) { - if (((Player) target).getAttribute("bh_joined", -1) > World.getTicks()) { + if (((Player) target).getAttribute("bh_joined", -1) > GameWorld.getTicks()) { ((Player) e).getPacketDispatch().sendMessage("This player has only just entered and is temporarily invulnerable to attacks."); return false; } @@ -432,13 +432,13 @@ public final class BountyHunterActivity extends ActivityPlugin { gamePulse.stop(); } int penalty; - if ((penalty = player.getAttribute("pickup_penalty", 0)) > World.getTicks()) { - player.setAttribute("/save:pickup_penalty", penalty - World.getTicks()); + if ((penalty = player.getAttribute("pickup_penalty", 0)) > GameWorld.getTicks()) { + player.setAttribute("/save:pickup_penalty", penalty - GameWorld.getTicks()); } else { player.removeAttribute("pickup_penalty"); } - if ((penalty = player.getAttribute("exit_penalty", 0)) > World.getTicks()) { - player.setAttribute("/save:exit_penalty", penalty - World.getTicks()); + if ((penalty = player.getAttribute("exit_penalty", 0)) > GameWorld.getTicks()) { + player.setAttribute("/save:exit_penalty", penalty - GameWorld.getTicks()); } else { player.removeAttribute("exit_penalty"); } @@ -464,7 +464,7 @@ public final class BountyHunterActivity extends ActivityPlugin { } if (!waitRoomPulse.isRunning()) { waitRoomPulse.start(); - World.getPulser().submit(waitRoomPulse); + GameWorld.getPulser().submit(waitRoomPulse); } } else if (waitingRoom.size() > MINIMUM_PLAYERS) { player.getPacketDispatch().sendString((int) Math.round(waitingTime * 0.6) + " Sec", 656, 10); @@ -540,7 +540,7 @@ public final class BountyHunterActivity extends ActivityPlugin { @Override public boolean canLogout(Player player) { - if (player.getAttribute("exit_penalty", 0) > World.getTicks()) { + if (player.getAttribute("exit_penalty", 0) > GameWorld.getTicks()) { player.getPacketDispatch().sendMessage("You can't logout until the exit penalty is over."); return false; } @@ -574,10 +574,10 @@ public final class BountyHunterActivity extends ActivityPlugin { } player.getHintIconManager().clear(); if (player.getAttribute("pickup_penalty", 0) != 0) { - player.setAttribute("pickup_penalty", World.getTicks() - 5); + player.setAttribute("pickup_penalty", GameWorld.getTicks() - 5); } if (player.getAttribute("exit_penalty", 0) != 0) { - player.setAttribute("exit_penalty", World.getTicks() - 5); + player.setAttribute("exit_penalty", GameWorld.getTicks() - 5); } entry.updatePenalty((Player) e, true); } @@ -596,7 +596,7 @@ public final class BountyHunterActivity extends ActivityPlugin { player.getPacketDispatch().sendMessage("This means you get the pick-up penalty: pick anything up and you can't leave!"); player.getSavedData().getActivityData().updateBountyRogueRate(1); BHScoreBoard.getRogues().check(player); - player.setAttribute("/save:pickup_penalty", World.getTicks() + 300); + player.setAttribute("/save:pickup_penalty", GameWorld.getTicks() + 300); entry.updatePenalty(player, true); } diff --git a/Server/src/main/java/core/game/content/activity/bountyhunter/BountyLocateSpell.java b/Server/src/main/java/core/game/content/activity/bountyhunter/BountyLocateSpell.java index b0cb82f28..7007e1873 100644 --- a/Server/src/main/java/core/game/content/activity/bountyhunter/BountyLocateSpell.java +++ b/Server/src/main/java/core/game/content/activity/bountyhunter/BountyLocateSpell.java @@ -11,7 +11,7 @@ import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.entity.player.link.TeleportManager.TeleportType; import core.game.node.entity.state.EntityState; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.plugin.Plugin; @@ -83,7 +83,7 @@ public final class BountyLocateSpell extends MagicSpell { entity.getTeleporter().getCurrentTeleport().stop(); return false; } - entity.setAttribute("magic-delay", World.getTicks() + 5); + entity.setAttribute("magic-delay", GameWorld.getTicks() + 5); return true; } return false; diff --git a/Server/src/main/java/core/game/content/activity/clanwars/ClanWarsActivityPlugin.java b/Server/src/main/java/core/game/content/activity/clanwars/ClanWarsActivityPlugin.java index 0579eb76f..d154f5a48 100644 --- a/Server/src/main/java/core/game/content/activity/clanwars/ClanWarsActivityPlugin.java +++ b/Server/src/main/java/core/game/content/activity/clanwars/ClanWarsActivityPlugin.java @@ -21,7 +21,7 @@ import core.game.node.scenery.SceneryBuilder; import core.game.system.communication.ClanEntry; import core.game.system.communication.ClanRepository; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.build.DynamicRegion; @@ -136,7 +136,7 @@ public final class ClanWarsActivityPlugin extends ActivityPlugin { offset = (offset + 1) % 3; SceneryBuilder.add(new Scenery(28174 + offset, base.transform(x, 64, 0))); } - World.getPulser().submit(pulse = new Pulse(200) { + GameWorld.getPulser().submit(pulse = new Pulse(200) { @Override public boolean pulse() { for (int x = 5; x < 54; x++) { @@ -148,7 +148,7 @@ public final class ClanWarsActivityPlugin extends ActivityPlugin { RegionManager.getRegionChunk(l).flag(new AnimateObjectUpdateFlag(anim)); } } - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { for (int x = 5; x < 54; x++) { diff --git a/Server/src/main/java/core/game/content/activity/duel/DuelArea.java b/Server/src/main/java/core/game/content/activity/duel/DuelArea.java index 0473a5dee..c315f5d80 100644 --- a/Server/src/main/java/core/game/content/activity/duel/DuelArea.java +++ b/Server/src/main/java/core/game/content/activity/duel/DuelArea.java @@ -28,7 +28,7 @@ import core.plugin.Plugin; import core.tools.RandomFunction; import core.tools.StringUtils; import rs09.ServerConstants; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -126,7 +126,7 @@ public class DuelArea extends MapZone { session.getOther().setAttribute("duel:ammo", new ArrayList(100)); session.getPlayer().setAttribute("vengeance", false); session.getOther().setAttribute("vengeance", false); - World.getPulser().submit(new Pulse(4, session.getPlayer(), session.getOther()) { + GameWorld.getPulser().submit(new Pulse(4, session.getPlayer(), session.getOther()) { int count; @Override diff --git a/Server/src/main/java/core/game/content/activity/duel/DuelComponentPlugin.java b/Server/src/main/java/core/game/content/activity/duel/DuelComponentPlugin.java index ee2729035..09deaee25 100644 --- a/Server/src/main/java/core/game/content/activity/duel/DuelComponentPlugin.java +++ b/Server/src/main/java/core/game/content/activity/duel/DuelComponentPlugin.java @@ -4,7 +4,7 @@ import core.game.component.Component; import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; /** @@ -32,7 +32,7 @@ public class DuelComponentPlugin extends ComponentPlugin { player.getPacketDispatch().sendMessage("Other player is busy at the moment."); return true; } - if (player.getAttribute("duel:staked", false) && other.getIronmanManager().isIronman() && !World.getSettings().isDevMode()) { + if (player.getAttribute("duel:staked", false) && other.getIronmanManager().isIronman() && !GameWorld.getSettings().isDevMode()) { other.sendMessage("You can't accept a staked duel as an Ironman."); player.sendMessage("You can't duel Ironman players."); return true; diff --git a/Server/src/main/java/core/game/content/activity/gnomecopter/GnomeCopterActivity.java b/Server/src/main/java/core/game/content/activity/gnomecopter/GnomeCopterActivity.java index 5c0938007..f942472d5 100644 --- a/Server/src/main/java/core/game/content/activity/gnomecopter/GnomeCopterActivity.java +++ b/Server/src/main/java/core/game/content/activity/gnomecopter/GnomeCopterActivity.java @@ -12,7 +12,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.zone.ZoneBorders; @@ -106,7 +106,7 @@ public final class GnomeCopterActivity extends ActivityPlugin { player.lock(); player.faceLocation(player.getLocation().transform(0, 3, 0)); object.setCharge(88); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int stage = 0; @Override @@ -161,7 +161,7 @@ public final class GnomeCopterActivity extends ActivityPlugin { final int pad = index; player.setDirection(Direction.SOUTH); player.getProperties().setTeleportLocation(Location.create(3162, 3352, 0)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int stage = 0; int tick = 0; diff --git a/Server/src/main/java/core/game/content/activity/gwd/GodWarsMinionNPC.java b/Server/src/main/java/core/game/content/activity/gwd/GodWarsMinionNPC.java index 24584b651..ca2e69964 100644 --- a/Server/src/main/java/core/game/content/activity/gwd/GodWarsMinionNPC.java +++ b/Server/src/main/java/core/game/content/activity/gwd/GodWarsMinionNPC.java @@ -6,7 +6,7 @@ import core.game.node.entity.combat.DeathTask; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.map.Location; @@ -63,7 +63,7 @@ public final class GodWarsMinionNPC extends AbstractNPC { public void finalizeDeath(Entity killer) { super.finalizeDeath(killer); getProperties().getCombatPulse().stop(); - if (boss != null && boss.getRespawnTick() > World.getTicks()) { + if (boss != null && boss.getRespawnTick() > GameWorld.getTicks()) { setRespawnTick(boss.getRespawnTick()); } } diff --git a/Server/src/main/java/core/game/content/activity/gwd/GodwarsBossNPC.java b/Server/src/main/java/core/game/content/activity/gwd/GodwarsBossNPC.java index a0b707fd0..99d92a8a9 100644 --- a/Server/src/main/java/core/game/content/activity/gwd/GodwarsBossNPC.java +++ b/Server/src/main/java/core/game/content/activity/gwd/GodwarsBossNPC.java @@ -17,7 +17,7 @@ import core.plugin.Initializable; import core.tools.RandomFunction; import rs09.game.node.entity.combat.CombatPulse; import rs09.game.node.entity.combat.CombatSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles a god wars boss NPC. @@ -174,14 +174,14 @@ public final class GodwarsBossNPC extends AbstractNPC { if (!chamber.insideBorder(e.getLocation().getX(), e.getLocation().getY())) { getPulseManager().clear(); } - if (nextBattleCry < World.getTicks()) { + if (nextBattleCry < GameWorld.getTicks()) { String[] cries = BATTLE_CRIES[(getId() - 6203) >> 4]; sendChat(cries[RandomFunction.randomize(cries.length)]); - nextBattleCry = World.getTicks() + 7 + RandomFunction.randomize(20); + nextBattleCry = GameWorld.getTicks() + 7 + RandomFunction.randomize(20); } } super.tick(); - if (getRespawnTick() == World.getTicks() && minions != null) { + if (getRespawnTick() == GameWorld.getTicks() && minions != null) { for (NPC npc : minions) { npc.setRespawnTick(-1); } @@ -191,7 +191,7 @@ public final class GodwarsBossNPC extends AbstractNPC { @Override public void onImpact(final Entity entity, BattleState state) { if (targetFocus) { - if (getProperties().getCombatPulse().getNextAttack() < World.getTicks() - 3) { + if (getProperties().getCombatPulse().getNextAttack() < GameWorld.getTicks() - 3) { getProperties().getCombatPulse().attack(entity); return; } @@ -237,7 +237,7 @@ public final class GodwarsBossNPC extends AbstractNPC { return; } for (NPC minion : minions) { - if (minion.getRespawnTick() >= World.getTicks()) { + if (minion.getRespawnTick() >= GameWorld.getTicks()) { minion.setRespawnTick(getRespawnTick()); } } diff --git a/Server/src/main/java/core/game/content/activity/gwd/GodwarsEntranceHandler.java b/Server/src/main/java/core/game/content/activity/gwd/GodwarsEntranceHandler.java index 9bda2151a..41534ca4d 100644 --- a/Server/src/main/java/core/game/content/activity/gwd/GodwarsEntranceHandler.java +++ b/Server/src/main/java/core/game/content/activity/gwd/GodwarsEntranceHandler.java @@ -11,7 +11,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -57,7 +57,7 @@ public final class GodwarsEntranceHandler extends OptionHandler { player.lock(2); player.getPacketDispatch().sendMessage("You climb down the rope."); player.animate(Animation.create(828)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(Location.create(2882, 5311, 2)); @@ -76,7 +76,7 @@ public final class GodwarsEntranceHandler extends OptionHandler { } else { ForceMovement.run(player, Location.create(2898, 3719, 0), Location.create(2898, 3715, 0), new Animation(6979), 3); } - World.getPulser().submit(new Pulse(12, player) { + GameWorld.getPulser().submit(new Pulse(12, player) { @Override public boolean pulse() { player.getPacketDispatch().sendSceneryAnimation(RegionManager.getObject(0, 2898, 3716), Animation.create(6981)); diff --git a/Server/src/main/java/core/game/content/activity/gwd/GodwarsMapzone.java b/Server/src/main/java/core/game/content/activity/gwd/GodwarsMapzone.java index 1015bcae8..4ab906656 100644 --- a/Server/src/main/java/core/game/content/activity/gwd/GodwarsMapzone.java +++ b/Server/src/main/java/core/game/content/activity/gwd/GodwarsMapzone.java @@ -16,7 +16,7 @@ import core.game.node.entity.player.info.Rights; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; @@ -263,7 +263,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin { private void handleRopeClimb(final Player player, final Location destination) { player.lock(2); player.animate(Animation.create(828)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(destination); @@ -308,7 +308,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin { private void handleBigDoor(final Player player, final Scenery object, boolean checkLocation) { player.lock(4); if (checkLocation && player.getLocation().getX() > object.getLocation().getX()) { - World.getPulser().submit(new MovementPulse(player, object.getLocation()) { + GameWorld.getPulser().submit(new MovementPulse(player, object.getLocation()) { @Override public boolean pulse() { handleBigDoor(player, object, false); @@ -327,7 +327,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin { } player.getPacketDispatch().sendMessage("You bang on the big door."); player.animate(Animation.create(7002)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { object.getDefinition().getOptions()[1] = "open"; @@ -381,7 +381,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin { return; } player.lock(7); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.visualize(Animation.create(6988), Graphics.create(68)); @@ -392,7 +392,7 @@ public final class GodwarsMapzone extends MapZone implements Plugin { player.getProperties().setTeleportLocation(player.getLocation().transform(0, diffY, 0)); player.getInterfaceManager().openOverlay(new Component(115)); player.setAttribute("cross_bridge_loc", player.getLocation()); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/activity/magearena/KolodionDialogue.java b/Server/src/main/java/core/game/content/activity/magearena/KolodionDialogue.java index b33e5126d..6e7ea0a43 100644 --- a/Server/src/main/java/core/game/content/activity/magearena/KolodionDialogue.java +++ b/Server/src/main/java/core/game/content/activity/magearena/KolodionDialogue.java @@ -4,7 +4,7 @@ import core.game.content.dialogue.DialoguePlugin; import core.game.node.entity.skill.Skills; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -120,7 +120,7 @@ public final class KolodionDialogue extends DialoguePlugin { npc("Do not waste my time with trivial questions. I am the", "Great Kolodion, master of battle magic. I have an arena", "to run."); stage++; } else { - npc("I am the great Kolodion, master of battle magic, and", "this is my battle arena. Top wizards travel from all over", World.getSettings().getName() + " to fight here."); + npc("I am the great Kolodion, master of battle magic, and", "this is my battle arena. Top wizards travel from all over", GameWorld.getSettings().getName() + " to fight here."); stage = 4; } break; @@ -183,7 +183,7 @@ public final class KolodionDialogue extends DialoguePlugin { stage++; break; case 15: - npc("Remember, traveller - in my arena, hand-to-hand", "combat is useless. Your strength will diminish as you", "enter the arena, but the spells you can learn are", "amongst the most powerful in all of " + World.getSettings().getName() + "."); + npc("Remember, traveller - in my arena, hand-to-hand", "combat is useless. Your strength will diminish as you", "enter the arena, but the spells you can learn are", "amongst the most powerful in all of " + GameWorld.getSettings().getName() + "."); stage++; break; case 16: @@ -222,7 +222,7 @@ public final class KolodionDialogue extends DialoguePlugin { end(); break; case 20: - npc("They want to crown themselves the best", "mage in all of " + World.getSettings().getName() + "!"); + npc("They want to crown themselves the best", "mage in all of " + GameWorld.getSettings().getName() + "!"); stage = 30; break; case 30: diff --git a/Server/src/main/java/core/game/content/activity/magearena/KolodionNPC.java b/Server/src/main/java/core/game/content/activity/magearena/KolodionNPC.java index 0ef16fa92..98c808d5a 100644 --- a/Server/src/main/java/core/game/content/activity/magearena/KolodionNPC.java +++ b/Server/src/main/java/core/game/content/activity/magearena/KolodionNPC.java @@ -13,7 +13,7 @@ import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.node.entity.combat.handlers.MagicSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the kolodion npc. @@ -254,7 +254,7 @@ public final class KolodionNPC extends AbstractNPC { player.lock(); } player.lock(2); - World.getPulser().submit(new Pulse(1, kolodion, player) { + GameWorld.getPulser().submit(new Pulse(1, kolodion, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/activity/magearena/KolodionSession.java b/Server/src/main/java/core/game/content/activity/magearena/KolodionSession.java index e00c3e10b..1362b201d 100644 --- a/Server/src/main/java/core/game/content/activity/magearena/KolodionSession.java +++ b/Server/src/main/java/core/game/content/activity/magearena/KolodionSession.java @@ -3,7 +3,7 @@ package core.game.content.activity.magearena; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; /** @@ -56,7 +56,7 @@ public final class KolodionSession { player.getAnimator().reset(); return; } - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/content/activity/magearena/LundailDialogue.java b/Server/src/main/java/core/game/content/activity/magearena/LundailDialogue.java index 06ec29238..a2ad927fb 100644 --- a/Server/src/main/java/core/game/content/activity/magearena/LundailDialogue.java +++ b/Server/src/main/java/core/game/content/activity/magearena/LundailDialogue.java @@ -3,7 +3,7 @@ package core.game.content.activity.magearena; import core.game.content.dialogue.DialoguePlugin; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the lundail dialogue. @@ -73,7 +73,7 @@ public final class LundailDialogue extends DialoguePlugin { end(); break; case 20: - npc("That, my friend is the mage battle arena. Top mages", "come from all over " + World.getSettings().getName() + " to compete in the arena."); + npc("That, my friend is the mage battle arena. Top mages", "come from all over " + GameWorld.getSettings().getName() + " to compete in the arena."); stage++; break; case 21: diff --git a/Server/src/main/java/core/game/content/activity/magearena/MageArenaPlugin.java b/Server/src/main/java/core/game/content/activity/magearena/MageArenaPlugin.java index 2ddf37862..7000ff01f 100644 --- a/Server/src/main/java/core/game/content/activity/magearena/MageArenaPlugin.java +++ b/Server/src/main/java/core/game/content/activity/magearena/MageArenaPlugin.java @@ -19,7 +19,7 @@ import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; import rs09.game.content.global.action.PickupHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; /** @@ -78,7 +78,7 @@ public final class MageArenaPlugin extends OptionHandler { return true; } player.lock(1); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { handlePool(player, false, destination, (Scenery) node); @@ -172,7 +172,7 @@ public final class MageArenaPlugin extends OptionHandler { final Location middle = object.getId() == 2879 ? Location.create(2509, 4687, 0) : Location.create(2542, 4720, 0); player.lock(); AgilityHandler.walk(player, -1, start, middle, new Animation(1426), 0.0, null); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -194,7 +194,7 @@ public final class MageArenaPlugin extends OptionHandler { } player.sendMessage("You step into the pool."); AgilityHandler.walk(player, -1, start, end, new Animation(1426), 0.0, "Your boots get wet."); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/activity/magearena/MageArenaZone.java b/Server/src/main/java/core/game/content/activity/magearena/MageArenaZone.java index 277d9fae3..bb274329b 100644 --- a/Server/src/main/java/core/game/content/activity/magearena/MageArenaZone.java +++ b/Server/src/main/java/core/game/content/activity/magearena/MageArenaZone.java @@ -5,7 +5,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.combat.CombatStyle; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -48,7 +48,7 @@ public final class MageArenaZone extends MapZone implements Plugin { if (e instanceof Player) { final Player p = (Player) e; if (!logout) { - World.getPulser().submit(new Pulse(1, e) { + GameWorld.getPulser().submit(new Pulse(1, e) { @Override public boolean pulse() { if (!p.getZoneMonitor().isInZone("mage arena")) { diff --git a/Server/src/main/java/core/game/content/activity/mta/EntranceGuardianDialogue.java b/Server/src/main/java/core/game/content/activity/mta/EntranceGuardianDialogue.java index 6fcf52b88..7fe6a502b 100644 --- a/Server/src/main/java/core/game/content/activity/mta/EntranceGuardianDialogue.java +++ b/Server/src/main/java/core/game/content/activity/mta/EntranceGuardianDialogue.java @@ -2,7 +2,7 @@ package core.game.content.activity.mta; import core.game.content.dialogue.DialoguePlugin; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the entrance guardian dialogue. @@ -261,7 +261,7 @@ public class EntranceGuardianDialogue extends DialoguePlugin { stage++; break; case 73: - npc("arena and to help fund magic shops around " + World.getSettings().getName() + ".", "You will be rewarded with 1 Pizazz Point for every", "100 coins deposited and a percentage of the money you", "create. Keep in mind that you will not be able to take"); + npc("arena and to help fund magic shops around " + GameWorld.getSettings().getName() + ".", "You will be rewarded with 1 Pizazz Point for every", "100 coins deposited and a percentage of the money you", "create. Keep in mind that you will not be able to take"); stage++; break; case 74: diff --git a/Server/src/main/java/core/game/content/activity/mta/MTAShop.java b/Server/src/main/java/core/game/content/activity/mta/MTAShop.java index 0fcc48f03..4bafd5efe 100644 --- a/Server/src/main/java/core/game/content/activity/mta/MTAShop.java +++ b/Server/src/main/java/core/game/content/activity/mta/MTAShop.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; import core.plugin.Plugin; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -68,7 +68,7 @@ public class MTAShop { public MTAShop() { container.add(ITEMS); component.setPlugin(shopPlugin); - World.getPulser().submit(new Pulse(100) { + GameWorld.getPulser().submit(new Pulse(100) { @Override public boolean pulse() { for (int i = 0; i < container.toArray().length; i++) { @@ -98,7 +98,7 @@ public class MTAShop { player.getInterfaceManager().open(component); update(); updatePoints(player); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/activity/mta/TelekineticGrabSpell.java b/Server/src/main/java/core/game/content/activity/mta/TelekineticGrabSpell.java index 3086e8c04..581341e25 100644 --- a/Server/src/main/java/core/game/content/activity/mta/TelekineticGrabSpell.java +++ b/Server/src/main/java/core/game/content/activity/mta/TelekineticGrabSpell.java @@ -21,7 +21,7 @@ import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; import rs09.game.content.global.action.PickupHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the telekenitic grab spell. @@ -102,7 +102,7 @@ public final class TelekineticGrabSpell extends MagicSpell { } entity.lock(2); visualize(entity, target); - World.getPulser().submit(getGrabPulse(entity, ground)); + GameWorld.getPulser().submit(getGrabPulse(entity, ground)); return true; } diff --git a/Server/src/main/java/core/game/content/activity/mta/impl/AlchemistZone.java b/Server/src/main/java/core/game/content/activity/mta/impl/AlchemistZone.java index bf3442cc4..1282754b9 100644 --- a/Server/src/main/java/core/game/content/activity/mta/impl/AlchemistZone.java +++ b/Server/src/main/java/core/game/content/activity/mta/impl/AlchemistZone.java @@ -15,7 +15,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.zone.ZoneBorders; @@ -59,7 +59,7 @@ public class AlchemistZone extends MTAZone { /** * The pulse. */ - private static final Pulse PULSE = new Pulse(World.getSettings().isDevMode() ? 15 : 53) { + private static final Pulse PULSE = new Pulse(GameWorld.getSettings().isDevMode() ? 15 : 53) { @Override public boolean pulse() { if (PLAYERS.isEmpty()) { @@ -123,7 +123,7 @@ public class AlchemistZone extends MTAZone { if (!PULSE.isRunning()) { PULSE.restart(); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } e.asPlayer().removeAttribute("alch-earn"); setSession(e.asPlayer()); diff --git a/Server/src/main/java/core/game/content/activity/mta/impl/EnchantingZone.java b/Server/src/main/java/core/game/content/activity/mta/impl/EnchantingZone.java index 99e1ef9eb..a298f0f06 100644 --- a/Server/src/main/java/core/game/content/activity/mta/impl/EnchantingZone.java +++ b/Server/src/main/java/core/game/content/activity/mta/impl/EnchantingZone.java @@ -15,7 +15,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.zone.ZoneBorders; @@ -126,7 +126,7 @@ public class EnchantingZone extends MTAZone { if (!PULSE.isRunning()) { PULSE.restart(); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } createGroundSpawns(e.asPlayer()); BONUS_SHAPE.setAsBonus(e.asPlayer()); @@ -180,7 +180,7 @@ public class EnchantingZone extends MTAZone { @Override public void respawn() { - World.getPulser().submit(getRespawnPulse(this)); + GameWorld.getPulser().submit(getRespawnPulse(this)); } }; items.add(item); @@ -195,7 +195,7 @@ public class EnchantingZone extends MTAZone { * @return the pulse. */ public Pulse getRespawnPulse(final GroundItem item) { - return new Pulse(World.getSettings().isDevMode() ? 45 : RandomFunction.random(700, 800)) { + return new Pulse(GameWorld.getSettings().isDevMode() ? 45 : RandomFunction.random(700, 800)) { @Override public boolean pulse() { GroundItemManager.create(item); diff --git a/Server/src/main/java/core/game/content/activity/mta/impl/GraveyardZone.java b/Server/src/main/java/core/game/content/activity/mta/impl/GraveyardZone.java index 6300bc0eb..0e7e20ecb 100644 --- a/Server/src/main/java/core/game/content/activity/mta/impl/GraveyardZone.java +++ b/Server/src/main/java/core/game/content/activity/mta/impl/GraveyardZone.java @@ -13,7 +13,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.ZoneBorders; import core.game.world.update.flag.context.Animation; @@ -121,7 +121,7 @@ public class GraveyardZone extends MTAZone { if (!PULSE.isRunning()) { PULSE.restart(); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } } return super.enter(e); diff --git a/Server/src/main/java/core/game/content/activity/mta/impl/TelekineticZone.java b/Server/src/main/java/core/game/content/activity/mta/impl/TelekineticZone.java index 781e5b6e9..cd9e9ea6a 100644 --- a/Server/src/main/java/core/game/content/activity/mta/impl/TelekineticZone.java +++ b/Server/src/main/java/core/game/content/activity/mta/impl/TelekineticZone.java @@ -15,7 +15,7 @@ import core.game.node.item.GroundItem; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; @@ -295,7 +295,7 @@ public class TelekineticZone extends MTAZone { return; } player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { boolean win = false; @Override diff --git a/Server/src/main/java/core/game/content/activity/partyroom/BalloonManager.java b/Server/src/main/java/core/game/content/activity/partyroom/BalloonManager.java index 7e0dfabef..8bbd52077 100644 --- a/Server/src/main/java/core/game/content/activity/partyroom/BalloonManager.java +++ b/Server/src/main/java/core/game/content/activity/partyroom/BalloonManager.java @@ -15,7 +15,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -77,16 +77,16 @@ public final class BalloonManager extends OptionHandler { if (isCountingDown()) { return; } - countdown = World.getTicks() + getDropDelay(); + countdown = GameWorld.getTicks() + getDropDelay(); final NPC partyPete = RegionManager.getNpc(new Location(3052, 3373, 0), 659, 1); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { - int realCount = --countdown - World.getTicks(); + int realCount = --countdown - GameWorld.getTicks(); for (ChestViewer viewer : PartyRoomPlugin.getViewers().values()) { viewer.getPlayer().getConfigManager().set(1135, realCount); } - if (--realCount - World.getTicks() <= 0) { + if (--realCount - GameWorld.getTicks() <= 0) { drop(); return true; } @@ -105,7 +105,7 @@ public final class BalloonManager extends OptionHandler { PartyRoomPlugin.getPartyChest().addAll(PartyRoomPlugin.getChestQueue()); PartyRoomPlugin.getChestQueue().clear(); PartyRoomPlugin.update(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int waves; @Override @@ -181,7 +181,7 @@ public final class BalloonManager extends OptionHandler { * @return {@code True} if so. */ public boolean isCountingDown() { - return countdown > World.getTicks(); + return countdown > GameWorld.getTicks(); } /** @@ -247,7 +247,7 @@ public final class BalloonManager extends OptionHandler { // Pop a party balloon player.getAchievementDiaryManager().finishTask(player, DiaryType.FALADOR, 0, 12); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/activity/partyroom/PartyRoomPlugin.java b/Server/src/main/java/core/game/content/activity/partyroom/PartyRoomPlugin.java index 436a2b511..f11a183c7 100644 --- a/Server/src/main/java/core/game/content/activity/partyroom/PartyRoomPlugin.java +++ b/Server/src/main/java/core/game/content/activity/partyroom/PartyRoomPlugin.java @@ -22,7 +22,7 @@ import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; import kotlin.Unit; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -144,7 +144,7 @@ public final class PartyRoomPlugin extends OptionHandler { npc.init(); npcs.add(npc); } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int count = 0; @Override diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/PCObjectHandler.java b/Server/src/main/java/core/game/content/activity/pestcontrol/PCObjectHandler.java index 197688945..c7ae1396e 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/PCObjectHandler.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/PCObjectHandler.java @@ -1,7 +1,7 @@ package core.game.content.activity.pestcontrol; import core.cache.def.impl.SceneryDefinition; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.content.activity.ActivityManager; import core.game.interaction.OptionHandler; import core.game.node.Node; @@ -102,8 +102,8 @@ public final class PCObjectHandler extends OptionHandler { } switch (object.getId()){ case 14315: // Novice - if (!World.getPCnBotsSpawned() && !player.isArtificial()) { //First person to join gets bots to play with - World.setPCnBotsSpawned(true); + if (!GameWorld.getPCnBotsSpawned() && !player.isArtificial()) { //First person to join gets bots to play with + GameWorld.setPCnBotsSpawned(true); for (pestBotsAmount = 0; pestBotsAmount <= 35; pestBotsAmount++) { PvMBotsBuilder.createPestControlTestBot(new Location(2657, 2640)); } @@ -115,8 +115,8 @@ public final class PCObjectHandler extends OptionHandler { startActivity(player, "pest control novice", Location.create(2661, 2639, 0)); return true; case 25631: // Intermediate - if (!World.getPCiBotsSpawned() && !player.isArtificial()) { //First person to join gets bots to play with - World.setPCiBotsSpawned(true); + if (!GameWorld.getPCiBotsSpawned() && !player.isArtificial()) { //First person to join gets bots to play with + GameWorld.setPCiBotsSpawned(true); for (pestBots2Amount = 0; pestBots2Amount <= 50; pestBots2Amount++ ) { PvMBotsBuilder.createPestControlTestBot2(new Location(2644, 2644)); } diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/PestControlActivityPlugin.java b/Server/src/main/java/core/game/content/activity/pestcontrol/PestControlActivityPlugin.java index 25c071a4b..af996fd2e 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/PestControlActivityPlugin.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/PestControlActivityPlugin.java @@ -18,7 +18,8 @@ import core.game.node.entity.state.EntityState; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.ai.AIPlayer; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.game.world.map.zone.RegionZone; @@ -151,7 +152,7 @@ public final class PestControlActivityPlugin extends ActivityPlugin { p.getStateManager().remove(EntityState.POISONED); } PulseManager.cancelDeathTask(p); - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { p.getSkills().restore(); @@ -234,7 +235,7 @@ public final class PestControlActivityPlugin extends ActivityPlugin { ZoneBuilder.configure(new PCIslandZone()); } pulse.start(); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } @Override diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCBrawlerNPC.java b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCBrawlerNPC.java index 7c69a6797..830e3cca7 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCBrawlerNPC.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCBrawlerNPC.java @@ -4,9 +4,23 @@ import core.game.content.activity.pestcontrol.PestControlSession; import core.game.node.entity.Entity; import core.game.node.entity.combat.BattleState; import core.game.node.entity.combat.CombatStyle; +import core.game.node.entity.combat.InteractionType; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; +import core.game.system.task.Pulse; import core.game.world.map.Location; +import core.game.world.map.RegionManager; +import core.game.world.update.flag.context.Animation; +import core.game.world.update.flag.context.Graphics; +import core.tools.RandomFunction; +import rs09.game.node.entity.combat.CombatPulse; +import rs09.game.node.entity.combat.CombatSwingHandler; +import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; +import rs09.game.world.GameWorld; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * Handles the pest control brawler NPCs. diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCRavagerNPC.java b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCRavagerNPC.java index 79ebbf55c..000846402 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCRavagerNPC.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCRavagerNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.MapDistance; import core.game.world.map.path.Pathfinder; @@ -98,7 +98,7 @@ public class PCRavagerNPC extends AbstractNPC { } else { if (!target.isActive() || !session.getBarricades().contains(target)) { attack(null); - } else if (nextAttack < World.getTicks() && getLocation().withinDistance(target.getLocation(), 1)) { + } else if (nextAttack < GameWorld.getTicks() && getLocation().withinDistance(target.getLocation(), 1)) { getPulseManager().clear(); setWalks(false); super.getWalkingQueue().reset(); @@ -110,7 +110,7 @@ public class PCRavagerNPC extends AbstractNPC { int type = destroyed ? 22 : target.getType(); final Scenery o = target; final Scenery newTarget = o.transform(newId, o.getRotation(), type); - World.getPulser().submit(new Pulse(1, this, o) { + GameWorld.getPulser().submit(new Pulse(1, this, o) { @Override public boolean pulse() { if (getViewport().getRegion().isActive() && session.getBarricades().remove(o)) { @@ -124,7 +124,7 @@ public class PCRavagerNPC extends AbstractNPC { if (destroyed) { attack(null); } - nextAttack = World.getTicks() + 5; + nextAttack = GameWorld.getTicks() + 5; } } } else { diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCShifterNPC.java b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCShifterNPC.java index 3c936d11b..88a3a3261 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCShifterNPC.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCShifterNPC.java @@ -17,7 +17,7 @@ import core.tools.RandomFunction; import rs09.game.node.entity.combat.CombatPulse; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.Collections; @@ -149,7 +149,7 @@ public final class PCShifterNPC extends AbstractNPC { entity.getWalkingQueue().reset(); entity.getLocks().lockMovement(2); entity.lock(3); - World.getPulser().submit(new Pulse(1, entity) { + GameWorld.getPulser().submit(new Pulse(1, entity) { @Override public boolean pulse() { entity.animate(Animation.create(3904)); diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSpinnerNPC.java b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSpinnerNPC.java index 26954f886..917b2dba2 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSpinnerNPC.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSpinnerNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.state.EntityState; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -102,7 +102,7 @@ public final class PCSpinnerNPC extends AbstractNPC { p.setAttribute("/save:poison_damage", 18); p.getStateManager().register(EntityState.POISONED, false, 18, this); } - World.getPulser().submit(new Pulse(1, this) { + GameWorld.getPulser().submit(new Pulse(1, this) { @Override public boolean pulse() { clear(); diff --git a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSplatterNPC.java b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSplatterNPC.java index 522207fe0..a6eea8314 100644 --- a/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSplatterNPC.java +++ b/Server/src/main/java/core/game/content/activity/pestcontrol/monsters/PCSplatterNPC.java @@ -11,7 +11,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -99,7 +99,7 @@ public final class PCSplatterNPC extends AbstractNPC { public void commenceDeath(Entity killer) { exploding = true; visualize(new Animation(3888, Priority.VERY_HIGH), Graphics.create(649 + (getId() - 3727))); - World.getPulser().submit(new Pulse(1, this) { + GameWorld.getPulser().submit(new Pulse(1, this) { @Override public boolean pulse() { explode(); diff --git a/Server/src/main/java/core/game/content/activity/puropuro/ImpDefenderNPC.java b/Server/src/main/java/core/game/content/activity/puropuro/ImpDefenderNPC.java index 59b45e3d1..26288bb34 100644 --- a/Server/src/main/java/core/game/content/activity/puropuro/ImpDefenderNPC.java +++ b/Server/src/main/java/core/game/content/activity/puropuro/ImpDefenderNPC.java @@ -9,7 +9,7 @@ import core.game.node.entity.skill.hunter.bnet.ImplingNode; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.tools.RandomFunction; @@ -70,7 +70,7 @@ public final class ImpDefenderNPC extends AbstractNPC { faceTemporary(player, 1); sendChat("Be free!"); player.getInventory().remove(node.getReward()); - player.setAttribute("imp-steal", World.getTicks() + 500); + player.setAttribute("imp-steal", GameWorld.getTicks() + 500); } } @@ -80,7 +80,7 @@ public final class ImpDefenderNPC extends AbstractNPC { * @return {@code True} if so. */ private boolean canSteal(Player player) { - if (!World.getSettings().isDevMode() && player.getAttribute("imp-steal", 0) > World.getTicks()) { + if (!GameWorld.getSettings().isDevMode() && player.getAttribute("imp-steal", 0) > GameWorld.getTicks()) { return false; } int thievingLevel = player.getSkills().getLevel(Skills.THIEVING); diff --git a/Server/src/main/java/core/game/content/activity/puropuro/PuroPuroPlugin.java b/Server/src/main/java/core/game/content/activity/puropuro/PuroPuroPlugin.java index e1ea78743..fede65a3f 100644 --- a/Server/src/main/java/core/game/content/activity/puropuro/PuroPuroPlugin.java +++ b/Server/src/main/java/core/game/content/activity/puropuro/PuroPuroPlugin.java @@ -20,7 +20,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -97,7 +97,7 @@ public final class PuroPuroPlugin extends MapZone implements Plugin { spawnWheat(); PULSE.restart(); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } return super.enter(e); } @@ -161,7 +161,7 @@ public final class PuroPuroPlugin extends MapZone implements Plugin { player.sendMessage("You use your strength to push through the wheat. It's hard work though."); } player.setAttribute("cantMove", true); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { ForceMovement.run(player, player.getLocation(), dest, Animation.create(6594), Animation.create(6594), Direction.getLogicalDirection(player.getLocation(), object.getLocation()), 3, 3); @@ -427,7 +427,7 @@ public final class PuroPuroPlugin extends MapZone implements Plugin { * Whilts the wheat. */ public void whilt() { - busyTicks = World.getTicks() + 5; + busyTicks = GameWorld.getTicks() + 5; for (Scenery object : objects) { if (object == null) { continue; @@ -455,7 +455,7 @@ public final class PuroPuroPlugin extends MapZone implements Plugin { * Sets the next whilt. */ public void setNextWhilt() { - this.nextWhilt = World.getTicks() + RandomFunction.random(40, 300); + this.nextWhilt = GameWorld.getTicks() + RandomFunction.random(40, 300); } /** @@ -463,7 +463,7 @@ public final class PuroPuroPlugin extends MapZone implements Plugin { * @return {@code True} if so. */ public boolean canWhilt() { - return World.getTicks() > nextWhilt && World.getTicks() > busyTicks; + return GameWorld.getTicks() > nextWhilt && GameWorld.getTicks() > busyTicks; } /** diff --git a/Server/src/main/java/core/game/content/activity/pyramidplunder/PyramidPlunderNPC.java b/Server/src/main/java/core/game/content/activity/pyramidplunder/PyramidPlunderNPC.java index a7c6695dc..4b062cb62 100644 --- a/Server/src/main/java/core/game/content/activity/pyramidplunder/PyramidPlunderNPC.java +++ b/Server/src/main/java/core/game/content/activity/pyramidplunder/PyramidPlunderNPC.java @@ -5,7 +5,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.combat.CombatStyle; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.path.Pathfinder; @@ -56,7 +56,7 @@ public abstract class PyramidPlunderNPC extends AbstractNPC { public PyramidPlunderNPC(int id, Location location, Player player) { super(id, location); this.player = player; - this.endTime = (int) (World.getTicks() + (1000 / 0.6)); + this.endTime = (int) (GameWorld.getTicks() + (1000 / 0.6)); } @Override @@ -72,7 +72,7 @@ public abstract class PyramidPlunderNPC extends AbstractNPC { @Override public void handleTickActions() { - if (World.getTicks() > endTime) { + if (GameWorld.getTicks() > endTime) { clear(); } if (!getLocks().isMovementLocked()) { @@ -87,11 +87,11 @@ public abstract class PyramidPlunderNPC extends AbstractNPC { startFollowing(); } if (quotes != null) { - if (nextSpeech < World.getTicks() && this.getDialoguePlayer() == null && !this.getLocks().isMovementLocked()) { + if (nextSpeech < GameWorld.getTicks() && this.getDialoguePlayer() == null && !this.getLocks().isMovementLocked()) { if (count > quotes.length - 1) { return; } - nextSpeech = (int) (World.getTicks() + (20 / 0.5)); + nextSpeech = (int) (GameWorld.getTicks() + (20 / 0.5)); if (++count >= quotes.length) { setTimeUp(true); handleTimeUp(); diff --git a/Server/src/main/java/core/game/content/activity/stronghold/StrongHoldSecurityPlugin.java b/Server/src/main/java/core/game/content/activity/stronghold/StrongHoldSecurityPlugin.java index 92f17ae80..50227a414 100644 --- a/Server/src/main/java/core/game/content/activity/stronghold/StrongHoldSecurityPlugin.java +++ b/Server/src/main/java/core/game/content/activity/stronghold/StrongHoldSecurityPlugin.java @@ -17,7 +17,7 @@ import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -218,7 +218,7 @@ public final class StrongHoldSecurityPlugin extends MapZone implements Pluginentering the training centre."); } else { - npc("In your travels around " + World.getSettings().getName() + ", should you find a", "player who acts in a way that breaks on of our rules,", "you should report them."); + npc("In your travels around " + GameWorld.getSettings().getName() + ", should you find a", "player who acts in a way that breaks on of our rules,", "you should report them."); } increment(); break; @@ -74,7 +74,7 @@ public class GuardDialoguePlugin extends DialoguePlugin { stage = read ? 10 : stage + 1; break; case 5: - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Each of these gublinches have been caught breaking the", "Rules of " + World.getSettings().getName() + ". You should read the plaques on", "each of their cells to learn what they did wrong."); + interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Each of these gublinches have been caught breaking the", "Rules of " + GameWorld.getSettings().getName() + ". You should read the plaques on", "each of their cells to learn what they did wrong."); increment(); break; case 6: @@ -97,7 +97,7 @@ public class GuardDialoguePlugin extends DialoguePlugin { case 10: if (read) { player.getInterfaceManager().open(new Component(700)); - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightCavesPlugin.java b/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightCavesPlugin.java index e051073c3..55d058535 100644 --- a/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightCavesPlugin.java +++ b/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightCavesPlugin.java @@ -19,7 +19,7 @@ import core.game.world.map.build.DynamicRegion; import core.game.world.map.zone.ZoneRestriction; import core.plugin.Initializable; import core.tools.RandomFunction; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import java.util.ArrayList; @@ -129,7 +129,7 @@ public final class TzhaarFightCavesPlugin extends ActivityPlugin { }; } player.setAttribute("fc:pulse", pulse); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); return true; } @@ -222,7 +222,7 @@ public final class TzhaarFightCavesPlugin extends ActivityPlugin { } }; player.setAttribute("fc:pulse", pulse); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } } } diff --git a/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightPitsPlugin.java b/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightPitsPlugin.java index be84826f6..06f651c79 100644 --- a/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightPitsPlugin.java +++ b/Server/src/main/java/core/game/content/activity/tzhaar/TzhaarFightPitsPlugin.java @@ -24,7 +24,7 @@ import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.zone.ZoneBorders; @@ -279,7 +279,7 @@ public final class TzhaarFightPitsPlugin extends ActivityPlugin { public void configure() { register(new ZoneBorders(2368, 5120, 2420, 5176)); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } @Override @@ -329,7 +329,7 @@ public final class TzhaarFightPitsPlugin extends ActivityPlugin { } }; p.setAttribute("fp_pulse", pl); - World.getPulser().submit(pl); + GameWorld.getPulser().submit(pl); } break; } diff --git a/Server/src/main/java/core/game/content/activity/wguild/animator/AnimationRoom.java b/Server/src/main/java/core/game/content/activity/wguild/animator/AnimationRoom.java index bdf4e466b..67fbb13fe 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/animator/AnimationRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/animator/AnimationRoom.java @@ -11,7 +11,7 @@ import core.game.node.scenery.Scenery; import core.game.system.task.ItemLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -122,7 +122,7 @@ public final class AnimationRoom extends MapZone implements Plugin { player.lock(10); player.animate(Animation.create(827)); player.getDialogueInterpreter().sendPlainMessage(true, "You place your armour on the platform where it", "disappears..."); - World.getPulser().submit(new Pulse(5, player) { + GameWorld.getPulser().submit(new Pulse(5, player) { boolean spawn; @Override diff --git a/Server/src/main/java/core/game/content/activity/wguild/barrel/BarrelRoom.java b/Server/src/main/java/core/game/content/activity/wguild/barrel/BarrelRoom.java index 98b6a63d6..50b3eaa64 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/barrel/BarrelRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/barrel/BarrelRoom.java @@ -15,7 +15,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBuilder; @@ -118,7 +118,7 @@ public final class BarrelRoom extends MapZone implements Plugin { lock.lock(); player.getLocks().setEquipmentLock(lock); player.getPacketDispatch().sendMessage("You pick up the keg and balance it on your head carefully."); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getEquipment().replace(new Item(barrelId), EquipmentContainer.SLOT_HAT); @@ -133,7 +133,7 @@ public final class BarrelRoom extends MapZone implements Plugin { if (!pulse.isRunning()) { pulse.restart(); pulse.start(); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } } return true; diff --git a/Server/src/main/java/core/game/content/activity/wguild/catapult/CatapultRoom.java b/Server/src/main/java/core/game/content/activity/wguild/catapult/CatapultRoom.java index 5c82ac64f..c19811a5b 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/catapult/CatapultRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/catapult/CatapultRoom.java @@ -22,7 +22,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.zone.MapZone; @@ -115,7 +115,7 @@ public final class CatapultRoom extends MapZone implements Plugin { @Override public boolean pulse() { attack = RandomFunction.getRandomElement(CatapultAttack.values()); - World.getPulser().submit(new Pulse(7) { + GameWorld.getPulser().submit(new Pulse(7) { @Override public boolean pulse() { for (Player p : players) { @@ -235,7 +235,7 @@ public final class CatapultRoom extends MapZone implements Plugin { if (!pulse.isRunning()) { pulse.restart(); pulse.start(); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } } return super.enter(e); diff --git a/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java b/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java index 3c94540a9..4ef808d96 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java @@ -19,7 +19,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.path.Pathfinder; @@ -197,7 +197,7 @@ public final class CyclopesRoom extends MapZone implements Plugin { if (!PULSE.isRunning()) { PULSE.restart(); PULSE.start(); - World.getPulser().submit(PULSE); + GameWorld.getPulser().submit(PULSE); } } diff --git a/Server/src/main/java/core/game/content/activity/wguild/dummy/DummyRoom.java b/Server/src/main/java/core/game/content/activity/wguild/dummy/DummyRoom.java index e96a22d0e..060e58927 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/dummy/DummyRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/dummy/DummyRoom.java @@ -11,7 +11,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.chunk.AnimateObjectUpdateFlag; @@ -101,7 +101,7 @@ public final class DummyRoom extends OptionHandler { for (Dummy dummy : Dummy.values()) { SceneryDefinition.forId(dummy.getObject().getId()).getHandlers().put("option:hit", this); } - World.getPulser().submit(new Pulse(10) { + GameWorld.getPulser().submit(new Pulse(10) { boolean activeDummy; Scenery controlled; @@ -109,7 +109,7 @@ public final class DummyRoom extends OptionHandler { public boolean pulse() { if (!activeDummy) { setDelay(10); - timeStamp = World.getTicks(); + timeStamp = GameWorld.getTicks(); dummy = RandomFunction.getRandomElement(Dummy.values()); SceneryBuilder.replace(RegionManager.getObject(dummy.getObject().getLocation()), dummy.getObject(), 11); activeDummy = true; diff --git a/Server/src/main/java/core/game/content/activity/wguild/shot/ShotPutRoom.java b/Server/src/main/java/core/game/content/activity/wguild/shot/ShotPutRoom.java index a48215ec8..8504dc572 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/shot/ShotPutRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/shot/ShotPutRoom.java @@ -18,7 +18,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -52,7 +52,7 @@ public final class ShotPutRoom extends DialoguePlugin { } player.lock(4); player.animate(Animation.create(827)); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { player.faceLocation(player.getLocation().transform(3, 0, 0)); @@ -158,7 +158,7 @@ public final class ShotPutRoom extends DialoguePlugin { final boolean failed = distance < 2; final int tiles = distance; player.getPacketDispatch().sendMessage("You take a deep breath and prepare yourself."); - World.getPulser().submit(new Pulse(delay, player) { + GameWorld.getPulser().submit(new Pulse(delay, player) { Location loc = player.getLocation(); boolean thrown; diff --git a/Server/src/main/java/core/game/content/consumable/effects/SetAttributeEffect.java b/Server/src/main/java/core/game/content/consumable/effects/SetAttributeEffect.java index 8c6182d0f..6a2b6776c 100644 --- a/Server/src/main/java/core/game/content/consumable/effects/SetAttributeEffect.java +++ b/Server/src/main/java/core/game/content/consumable/effects/SetAttributeEffect.java @@ -1,7 +1,7 @@ package core.game.content.consumable.effects; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.content.consumable.ConsumableEffect; public class SetAttributeEffect extends ConsumableEffect { @@ -28,7 +28,7 @@ public class SetAttributeEffect extends ConsumableEffect { @Override public void activate(Player p) { if(isTicks){ - int val = (Integer) attrValue + World.getTicks(); + int val = (Integer) attrValue + GameWorld.getTicks(); p.setAttribute(attrString,val); return; } diff --git a/Server/src/main/java/core/game/content/cutscene/DBRCutscenePlugin.java b/Server/src/main/java/core/game/content/cutscene/DBRCutscenePlugin.java index 110338553..df29bf950 100644 --- a/Server/src/main/java/core/game/content/cutscene/DBRCutscenePlugin.java +++ b/Server/src/main/java/core/game/content/cutscene/DBRCutscenePlugin.java @@ -22,7 +22,7 @@ import core.game.node.item.ItemPlugin; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -209,7 +209,7 @@ public final class DBRCutscenePlugin extends CutscenePlugin { @Override public void open() { setNpcs(); - World.getPulser().submit(recordingPulse); + GameWorld.getPulser().submit(recordingPulse); player.lock(); player.getLocks().lockMovement(10000000); camera(27, 45, -14, 2, 700, 100); @@ -459,7 +459,7 @@ public final class DBRCutscenePlugin extends CutscenePlugin { * Method used to clear all the npcs. */ private void clearNpcs() { - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { for (NPC n : region.getPlanes()[0].getNpcs()) { diff --git a/Server/src/main/java/core/game/content/cutscene/GECutscenePlugin.java b/Server/src/main/java/core/game/content/cutscene/GECutscenePlugin.java index d7163c540..0106ab8f3 100644 --- a/Server/src/main/java/core/game/content/cutscene/GECutscenePlugin.java +++ b/Server/src/main/java/core/game/content/cutscene/GECutscenePlugin.java @@ -11,7 +11,7 @@ import core.game.ge.GEGuidePrice; import core.game.ge.GEGuidePrice.GuideType; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.net.packet.PacketRepository; import core.net.packet.context.CameraContext; @@ -222,7 +222,7 @@ public final class GECutscenePlugin extends CutscenePlugin { case 100: close(); camera(player, 3149, 3470, 1, 1, 870, 10); - World.getPulser().submit(new Pulse(16, player) { + GameWorld.getPulser().submit(new Pulse(16, player) { @Override public boolean pulse() { npc("Welcome, my friend to the Grand Exchange! From", "here you can simply tell us what you want to buy or", "sell and for how much, and we'll pair you up with", "another player and make the trade!"); @@ -450,7 +450,7 @@ public final class GECutscenePlugin extends CutscenePlugin { stage = 252; break; case 252: - npc("So, in the end, I decided why not make this a " + World.getSettings().getName() + "-", "wide phenomenon? Make it public and allow anyone to join", "in. Up to this point, it catered for people buying and selling", "large quantities, but I knew it would work on a smaller"); + npc("So, in the end, I decided why not make this a " + GameWorld.getSettings().getName() + "-", "wide phenomenon? Make it public and allow anyone to join", "in. Up to this point, it catered for people buying and selling", "large quantities, but I knew it would work on a smaller"); stage = 253; break; case 253: @@ -458,7 +458,7 @@ public final class GECutscenePlugin extends CutscenePlugin { stage = 254; break; case 254: - npc("And I was also in for a bit of luck. You see, one of the", "initial patrons had deep connections to the banks of", "" + World.getSettings().getName() + ". Together, I think you'll agree we have a most", "friendly system."); + npc("And I was also in for a bit of luck. You see, one of the", "initial patrons had deep connections to the banks of", "" + GameWorld.getSettings().getName() + ". Together, I think you'll agree we have a most", "friendly system."); stage = 255; break; case 255: @@ -543,7 +543,7 @@ public final class GECutscenePlugin extends CutscenePlugin { case 13: player.getInterfaceManager().close(); player.setAttribute("ge-stage", 5); - player.getDialogueInterpreter().sendDialogues(6522, null, "Step 5: When the trade is complete, we will let you", "know with a message and you can pick up your", "winnings by talking to the clerks or by visiting any", "banker in " + World.getSettings().getName() + "."); + player.getDialogueInterpreter().sendDialogues(6522, null, "Step 5: When the trade is complete, we will let you", "know with a message and you can pick up your", "winnings by talking to the clerks or by visiting any", "banker in " + GameWorld.getSettings().getName() + "."); break; } break; diff --git a/Server/src/main/java/core/game/content/cutscene/JulietDialogue.java b/Server/src/main/java/core/game/content/cutscene/JulietDialogue.java index 6dba3fec0..e78cd5112 100644 --- a/Server/src/main/java/core/game/content/cutscene/JulietDialogue.java +++ b/Server/src/main/java/core/game/content/cutscene/JulietDialogue.java @@ -10,7 +10,7 @@ import core.game.node.item.GroundItem; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.path.Path; import core.game.world.map.path.Pathfinder; import rs09.game.world.repository.Repository; @@ -141,7 +141,7 @@ public final class JulietDialogue extends DialoguePlugin { break; case 2003: close(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override @@ -163,7 +163,7 @@ public final class JulietDialogue extends DialoguePlugin { case 2004: close(); npc.animate(new Animation(836)); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/cutscene/OrganCutScene.java b/Server/src/main/java/core/game/content/cutscene/OrganCutScene.java index 25edf8d9a..61427a5c5 100644 --- a/Server/src/main/java/core/game/content/cutscene/OrganCutScene.java +++ b/Server/src/main/java/core/game/content/cutscene/OrganCutScene.java @@ -7,7 +7,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.build.DynamicRegion; @@ -50,7 +50,7 @@ public final class OrganCutScene extends CutscenePlugin { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.POSITION, player.getLocation().getX() + 2, player.getLocation().getY() - 7, 405, 1, 100)); PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.ROTATION, player.getLocation().getX() + 1, player.getLocation().getY(), 405, 1, 100)); player.lock(); - World.getPulser().submit(new Pulse(3) { + GameWorld.getPulser().submit(new Pulse(3) { @Override public boolean pulse() { player.getPacketDispatch().sendSceneryAnimation(RegionManager.getObject(base.transform(42, 14, 0)), new Animation(9841)); @@ -59,7 +59,7 @@ public final class OrganCutScene extends CutscenePlugin { return true; } }); - World.getPulser().submit(new Pulse(30) { + GameWorld.getPulser().submit(new Pulse(30) { @Override public boolean pulse() { unpause(); diff --git a/Server/src/main/java/core/game/content/cutscene/RJCutscenePlugin.java b/Server/src/main/java/core/game/content/cutscene/RJCutscenePlugin.java index f9d9ebb29..ed94f6b8a 100644 --- a/Server/src/main/java/core/game/content/cutscene/RJCutscenePlugin.java +++ b/Server/src/main/java/core/game/content/cutscene/RJCutscenePlugin.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; @@ -677,7 +677,7 @@ public final class RJCutscenePlugin extends CutscenePlugin { rot = new CameraContext(player, CameraType.ROTATION, x - 1, y - 2, height, other, speed); PacketRepository.send(CameraViewPacket.class, pos); PacketRepository.send(CameraViewPacket.class, rot); - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { int x = player.getLocation().getX(); @@ -715,7 +715,7 @@ public final class RJCutscenePlugin extends CutscenePlugin { close(); npc.getWalkingQueue().reset(); npc.getWalkingQueue().addPath(cutscene.getBase().transform(19, 35, 0).getX(), cutscene.getBase().transform(19, 35, 0).getY()); - World.getPulser().submit(new Pulse(12) { + GameWorld.getPulser().submit(new Pulse(12) { @Override public boolean pulse() { interpreter.sendDialogues(npc, null, "Hey...Juliet..."); diff --git a/Server/src/main/java/core/game/content/dialogue/AablaDialogue.java b/Server/src/main/java/core/game/content/dialogue/AablaDialogue.java index 5a91a60d0..5f85a8244 100644 --- a/Server/src/main/java/core/game/content/dialogue/AablaDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/AablaDialogue.java @@ -4,7 +4,7 @@ import core.game.node.entity.skill.Skills; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.update.flag.context.Animation; @@ -87,7 +87,7 @@ public final class AablaDialogue extends DialoguePlugin { npc.animate(ANIMATION); player.lock(4); close(); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { if (player.getSkills().getLifepoints() == player.getSkills().getStaticLevel(Skills.HITPOINTS)) { diff --git a/Server/src/main/java/core/game/content/dialogue/CaptainBentleyDialogue.java b/Server/src/main/java/core/game/content/dialogue/CaptainBentleyDialogue.java index b932cff81..9ba748def 100644 --- a/Server/src/main/java/core/game/content/dialogue/CaptainBentleyDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/CaptainBentleyDialogue.java @@ -4,7 +4,7 @@ import core.game.component.Component; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.net.packet.PacketRepository; import core.net.packet.context.MinimapStateContext; @@ -79,7 +79,7 @@ public class CaptainBentleyDialogue extends DialoguePlugin { */ private void travel(final Player player, final Location location) { player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/dialogue/DonieDialogue.java b/Server/src/main/java/core/game/content/dialogue/DonieDialogue.java index 2f0d486ee..6ce8ea051 100644 --- a/Server/src/main/java/core/game/content/dialogue/DonieDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/DonieDialogue.java @@ -3,7 +3,7 @@ package core.game.content.dialogue; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the dialogue plugin used for the donie npc. @@ -75,7 +75,7 @@ public final class DonieDialogue extends DialoguePlugin { stage = 1; break; case 20: - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Aye, not too bad thank you. Lovely weather in", "" + World.getSettings().getName() + " this fine day."); + interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Aye, not too bad thank you. Lovely weather in", "" + GameWorld.getSettings().getName() + " this fine day."); stage = 21; break; case 21: diff --git a/Server/src/main/java/core/game/content/dialogue/DoricDialogue.java b/Server/src/main/java/core/game/content/dialogue/DoricDialogue.java index 4e82a70f0..c5601462a 100644 --- a/Server/src/main/java/core/game/content/dialogue/DoricDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/DoricDialogue.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the dialogue plugin used for the doric npc. @@ -165,7 +165,7 @@ public final class DoricDialogue extends DialoguePlugin { end(); break; case 50: - interpreter.sendDialogues(npc, FacialExpression.OLD_NORMAL, "I make pickaxes. I am the best maker of pickaxes in the", "whole of " + World.getSettings().getName() + "."); + interpreter.sendDialogues(npc, FacialExpression.OLD_NORMAL, "I make pickaxes. I am the best maker of pickaxes in the", "whole of " + GameWorld.getSettings().getName() + "."); stage = 51; break; case 51: diff --git a/Server/src/main/java/core/game/content/dialogue/FaladorSquireDialogue.java b/Server/src/main/java/core/game/content/dialogue/FaladorSquireDialogue.java index d050f136a..d5d97c6b8 100644 --- a/Server/src/main/java/core/game/content/dialogue/FaladorSquireDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/FaladorSquireDialogue.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the falador squire dialogue plugin. @@ -521,7 +521,7 @@ public final class FaladorSquireDialogue extends DialoguePlugin { } break; case 160: - npc("I'm not a hundred percent sure the Imcando tribe", "exists anymore. I should think Reldo, the palace", "librarian in Varrock, will know; he has done a lot of", "research on the races of " + World.getSettings().getName() + "."); + npc("I'm not a hundred percent sure the Imcando tribe", "exists anymore. I should think Reldo, the palace", "librarian in Varrock, will know; he has done a lot of", "research on the races of " + GameWorld.getSettings().getName() + "."); stage = 161; break; case 161: diff --git a/Server/src/main/java/core/game/content/dialogue/GertrudesCatDialogue.java b/Server/src/main/java/core/game/content/dialogue/GertrudesCatDialogue.java index 4bbd2064b..f9a8f35d0 100644 --- a/Server/src/main/java/core/game/content/dialogue/GertrudesCatDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/GertrudesCatDialogue.java @@ -4,7 +4,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.update.flag.context.Animation; @@ -144,7 +144,7 @@ public final class GertrudesCatDialogue extends DialoguePlugin { if (quest.getStage(player) == 40) { return true; } - World.getPulser().submit(new Pulse(7, player) { + GameWorld.getPulser().submit(new Pulse(7, player) { @Override public boolean pulse() { end(); diff --git a/Server/src/main/java/core/game/content/dialogue/GnomeSpiritTreeDialogue.java b/Server/src/main/java/core/game/content/dialogue/GnomeSpiritTreeDialogue.java index e9d25f2d4..403cca888 100644 --- a/Server/src/main/java/core/game/content/dialogue/GnomeSpiritTreeDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/GnomeSpiritTreeDialogue.java @@ -3,7 +3,7 @@ package core.game.content.dialogue; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -104,7 +104,7 @@ public final class GnomeSpiritTreeDialogue extends DialoguePlugin { */ private void sendTeleport(final Player player, final Location location) { end(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int loop; @Override diff --git a/Server/src/main/java/core/game/content/dialogue/GrandExchangeTutor.java b/Server/src/main/java/core/game/content/dialogue/GrandExchangeTutor.java index 3fd7c3957..63ff47cf7 100644 --- a/Server/src/main/java/core/game/content/dialogue/GrandExchangeTutor.java +++ b/Server/src/main/java/core/game/content/dialogue/GrandExchangeTutor.java @@ -3,7 +3,7 @@ package core.game.content.dialogue; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the dialogue plugin used for the grand exchange tutor. @@ -95,7 +95,7 @@ public final class GrandExchangeTutor extends DialoguePlugin { stage = 17; break; case 17: - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, getRed() + "Step 4: When the trade is complete, we will send you a", "message. You can collect your stuff by talking to the", "clerks or by visiting any banker in " + World.getSettings().getName() + "."); + interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, getRed() + "Step 4: When the trade is complete, we will send you a", "message. You can collect your stuff by talking to the", "clerks or by visiting any banker in " + GameWorld.getSettings().getName() + "."); stage = 18; break; case 18: diff --git a/Server/src/main/java/core/game/content/dialogue/IgnatiusVulcanDialogue.java b/Server/src/main/java/core/game/content/dialogue/IgnatiusVulcanDialogue.java index bd84d7569..aec85e33c 100644 --- a/Server/src/main/java/core/game/content/dialogue/IgnatiusVulcanDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/IgnatiusVulcanDialogue.java @@ -8,7 +8,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -233,9 +233,9 @@ public final class IgnatiusVulcanDialogue extends DialoguePlugin { @Override public void tick() { - if (lastFire < World.getTicks()) { + if (lastFire < GameWorld.getTicks()) { createFire(this, getLocation()); - lastFire = World.getTicks() + RandomFunction.random(50, 200); + lastFire = GameWorld.getTicks() + RandomFunction.random(50, 200); } super.tick(); } diff --git a/Server/src/main/java/core/game/content/dialogue/InformationclerkMuseumDialogue.java b/Server/src/main/java/core/game/content/dialogue/InformationclerkMuseumDialogue.java index 060eeb86d..8ec9f2258 100644 --- a/Server/src/main/java/core/game/content/dialogue/InformationclerkMuseumDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/InformationclerkMuseumDialogue.java @@ -4,7 +4,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import org.rs09.consts.Items; /** @@ -110,7 +110,7 @@ public final class InformationclerkMuseumDialogue extends DialoguePlugin { stage = 153; break; case 180: - npc("Why, yes. The Natural History exhibit has displays of", "various creatures you can find around " + World.getSettings().getName() + "."); + npc("Why, yes. The Natural History exhibit has displays of", "various creatures you can find around " + GameWorld.getSettings().getName() + "."); stage = 181; break; case 181: diff --git a/Server/src/main/java/core/game/content/dialogue/KittenInteractDialogue.java b/Server/src/main/java/core/game/content/dialogue/KittenInteractDialogue.java index f500c30fe..f9b024785 100644 --- a/Server/src/main/java/core/game/content/dialogue/KittenInteractDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/KittenInteractDialogue.java @@ -3,7 +3,7 @@ package core.game.content.dialogue; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.map.path.Path; import core.game.world.map.path.Pathfinder; @@ -88,7 +88,7 @@ public final class KittenInteractDialogue extends DialoguePlugin { final Path path = Pathfinder.find(player.getFamiliarManager().getFamiliar(), rat); path.walk(player.getFamiliarManager().getFamiliar()); rat.sendChat("Eeek!"); - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/dialogue/LokarSearunnerDialogue.java b/Server/src/main/java/core/game/content/dialogue/LokarSearunnerDialogue.java index 63f39df0d..0a1271b41 100644 --- a/Server/src/main/java/core/game/content/dialogue/LokarSearunnerDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/LokarSearunnerDialogue.java @@ -4,7 +4,7 @@ import core.game.component.Component; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.net.packet.PacketRepository; import core.net.packet.context.MinimapStateContext; @@ -109,7 +109,7 @@ public class LokarSearunnerDialogue extends DialoguePlugin { */ private void travel(final Player player, final Location location) { player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/dialogue/LumbridgeGuideDialogue.java b/Server/src/main/java/core/game/content/dialogue/LumbridgeGuideDialogue.java index 727796251..8bea22676 100644 --- a/Server/src/main/java/core/game/content/dialogue/LumbridgeGuideDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/LumbridgeGuideDialogue.java @@ -6,9 +6,9 @@ import core.game.node.entity.player.info.Rights; import core.game.node.entity.player.link.IronmanMode; import core.game.node.entity.player.link.diary.DiaryType; import core.game.world.map.zone.impl.ModeratorZone; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -149,7 +149,7 @@ public final class LumbridgeGuideDialogue extends DialoguePlugin { end(); break; case 100: - npc("First I must warn you to take every precaution to", "keep your " + World.getSettings().getName() + " password and PIN secure. The", "most important thing to remember is to never give your", "password to, or share you account with, anyone."); + npc("First I must warn you to take every precaution to", "keep your " + GameWorld.getSettings().getName() + " password and PIN secure. The", "most important thing to remember is to never give your", "password to, or share you account with, anyone."); stage = 101; break; case 101: diff --git a/Server/src/main/java/core/game/content/dialogue/MithrilSeedsDialogue.java b/Server/src/main/java/core/game/content/dialogue/MithrilSeedsDialogue.java index 0e8f6a1f3..5e5a95020 100644 --- a/Server/src/main/java/core/game/content/dialogue/MithrilSeedsDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/MithrilSeedsDialogue.java @@ -5,7 +5,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.game.world.update.flag.player.FaceLocationFlag; @@ -65,7 +65,7 @@ public final class MithrilSeedsDialogue extends DialoguePlugin { player.lock(2); player.faceLocation(FaceLocationFlag.getFaceLocation(player, flower)); player.animate(ANIMATION); - World.getPulser().submit(new Pulse(2, player, flower) { + GameWorld.getPulser().submit(new Pulse(2, player, flower) { @Override public boolean pulse() { Item reward = new Item(2460 + ((flower.getId() - 2980) << 1)); diff --git a/Server/src/main/java/core/game/content/dialogue/MithrilSeedsPlugin.java b/Server/src/main/java/core/game/content/dialogue/MithrilSeedsPlugin.java index b2f1c63fd..a9a300f21 100644 --- a/Server/src/main/java/core/game/content/dialogue/MithrilSeedsPlugin.java +++ b/Server/src/main/java/core/game/content/dialogue/MithrilSeedsPlugin.java @@ -8,7 +8,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.player.FaceLocationFlag; @@ -52,7 +52,7 @@ public final class MithrilSeedsPlugin extends OptionHandler { @Override public boolean handle(final Player player, Node node, String option) { - if (player.getAttribute("delay:plant", -1) > World.getTicks()) { + if (player.getAttribute("delay:plant", -1) > GameWorld.getTicks()) { return true; } if (RegionManager.getObject(player.getLocation()) != null) { @@ -72,7 +72,7 @@ public final class MithrilSeedsPlugin extends OptionHandler { return true; } }); - player.setAttribute("delay:plant", World.getTicks() + 3); + player.setAttribute("delay:plant", GameWorld.getTicks() + 3); player.getPacketDispatch().sendMessage("You open the small mithril case and drop a seed by your feet."); return true; } diff --git a/Server/src/main/java/core/game/content/dialogue/PartyPeteDialoguePlugin.java b/Server/src/main/java/core/game/content/dialogue/PartyPeteDialoguePlugin.java index 8443a69a2..c42a8e77a 100644 --- a/Server/src/main/java/core/game/content/dialogue/PartyPeteDialoguePlugin.java +++ b/Server/src/main/java/core/game/content/dialogue/PartyPeteDialoguePlugin.java @@ -2,7 +2,7 @@ package core.game.content.dialogue; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.update.flag.context.Animation; @@ -88,7 +88,7 @@ public class PartyPeteDialoguePlugin extends DialoguePlugin { stage = 51; break; case 51: - interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How do you have a party in " + World.getSettings().getName() + "?"); + interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How do you have a party in " + GameWorld.getSettings().getName() + "?"); stage = 52; break; case 52: diff --git a/Server/src/main/java/core/game/content/dialogue/PrinceAliDialogue.java b/Server/src/main/java/core/game/content/dialogue/PrinceAliDialogue.java index c271280ee..4d6fdfcba 100644 --- a/Server/src/main/java/core/game/content/dialogue/PrinceAliDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/PrinceAliDialogue.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the dialogue used to handle the Pricne Ali NPC. @@ -106,7 +106,7 @@ public class PrinceAliDialogue extends DialoguePlugin { case 4: // NPC 921 start dialogue.921 npc.transform(921); - World.getPulser().submit(new Pulse(50) { + GameWorld.getPulser().submit(new Pulse(50) { @Override public boolean pulse() { npc.transform(920); @@ -122,7 +122,7 @@ public class PrinceAliDialogue extends DialoguePlugin { break; case 6: npc.setInvisible(true); - World.getPulser().submit(new Pulse(20) { + GameWorld.getPulser().submit(new Pulse(20) { @Override public boolean pulse() { npc.transform(920); diff --git a/Server/src/main/java/core/game/content/dialogue/ProfessorOddensteinPlugin.java b/Server/src/main/java/core/game/content/dialogue/ProfessorOddensteinPlugin.java index b01ff74d8..55f3866b8 100644 --- a/Server/src/main/java/core/game/content/dialogue/ProfessorOddensteinPlugin.java +++ b/Server/src/main/java/core/game/content/dialogue/ProfessorOddensteinPlugin.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import rs09.game.world.repository.Repository; import core.game.world.update.flag.context.Animation; @@ -262,7 +262,7 @@ public class ProfessorOddensteinPlugin extends DialoguePlugin { player.getPacketDispatch().sendMessage("and a can of oil to the professor."); player.getPacketDispatch().sendMessage("Oddenstein starts up the machine."); final NPC chicken = Repository.findNPC(288); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/dialogue/ResearcherDialogue.java b/Server/src/main/java/core/game/content/dialogue/ResearcherDialogue.java index 1583b1c93..e106c720b 100644 --- a/Server/src/main/java/core/game/content/dialogue/ResearcherDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/ResearcherDialogue.java @@ -3,7 +3,7 @@ package core.game.content.dialogue; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the dialogue plugin for the new Researcher NPC that sells unobtainable items. @@ -51,7 +51,7 @@ public final class ResearcherDialogue extends DialoguePlugin { stage = 1; break; case 1: - npc("I am indeed. I am a traveling researcher studying the", "lands of "+ World.getSettings().getName()+"."); + npc("I am indeed. I am a traveling researcher studying the", "lands of "+GameWorld.getSettings().getName()+"."); stage = 2; break; case 2: diff --git a/Server/src/main/java/core/game/content/dialogue/RugMerchantDialogue.java b/Server/src/main/java/core/game/content/dialogue/RugMerchantDialogue.java index 2c2e096e1..121ed3a50 100644 --- a/Server/src/main/java/core/game/content/dialogue/RugMerchantDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/RugMerchantDialogue.java @@ -13,7 +13,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; import kotlin.Unit; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -283,7 +283,7 @@ public final class RugMerchantDialogue extends DialoguePlugin { public void travel(final RugDestination current, final Player player) { player.lock(); player.getConfigManager().set(499, 0); - player.getImpactHandler().setDisabledTicks(World.getTicks() + 200); + player.getImpactHandler().setDisabledTicks(GameWorld.getTicks() + 200); player.getInterfaceManager().hideTabs(0,1,2,3,4,5,6,7,8,9,10,11,12,13); player.getEquipment().replace(new Item(Items.MAGIC_CARPET_5614),EquipmentContainer.SLOT_WEAPON); player.getPacketDispatch().sendInterfaceConfig(548,69,true); @@ -293,7 +293,7 @@ public final class RugMerchantDialogue extends DialoguePlugin { return Unit.INSTANCE; }); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; int index; Location[] locs = getLocData(); diff --git a/Server/src/main/java/core/game/content/dialogue/ShantayDialogue.java b/Server/src/main/java/core/game/content/dialogue/ShantayDialogue.java index b38d22e17..bcd5dcfa2 100644 --- a/Server/src/main/java/core/game/content/dialogue/ShantayDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/ShantayDialogue.java @@ -4,7 +4,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.map.Location; @@ -161,7 +161,7 @@ public final class ShantayDialogue extends DialoguePlugin { player.getPacketDispatch().sendMessage("The guards arrest you and place you in the jail."); close(); player.lock(10); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.setAttribute("/save:shantay-jail", true); diff --git a/Server/src/main/java/core/game/content/dialogue/ShantayGuard.java b/Server/src/main/java/core/game/content/dialogue/ShantayGuard.java index ea3023bba..1e35e76ab 100644 --- a/Server/src/main/java/core/game/content/dialogue/ShantayGuard.java +++ b/Server/src/main/java/core/game/content/dialogue/ShantayGuard.java @@ -6,7 +6,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.path.Pathfinder; import rs09.game.world.repository.Repository; @@ -122,7 +122,7 @@ public final class ShantayGuard extends DialoguePlugin { final Location dest = player.getLocation().getY() < 3304 ? Location.create(3303, 3117, 0) : Location.create(3305, 3117, 0); Pathfinder.find(player, dest).walk(player); player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { if (player.getLocation().equals(dest)) { diff --git a/Server/src/main/java/core/game/content/dialogue/SilkMerchantPlugin.java b/Server/src/main/java/core/game/content/dialogue/SilkMerchantPlugin.java index 092bcc2a3..7e358127a 100644 --- a/Server/src/main/java/core/game/content/dialogue/SilkMerchantPlugin.java +++ b/Server/src/main/java/core/game/content/dialogue/SilkMerchantPlugin.java @@ -4,7 +4,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.map.RegionManager; @@ -193,7 +193,7 @@ public class SilkMerchantPlugin extends DialoguePlugin { break; } } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int count = 0; @Override diff --git a/Server/src/main/java/core/game/content/dialogue/SorcceresDialouge.java b/Server/src/main/java/core/game/content/dialogue/SorcceresDialouge.java index 1cc1aad25..439fc9acf 100644 --- a/Server/src/main/java/core/game/content/dialogue/SorcceresDialouge.java +++ b/Server/src/main/java/core/game/content/dialogue/SorcceresDialouge.java @@ -3,7 +3,7 @@ package core.game.content.dialogue; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.map.Location; @@ -132,7 +132,7 @@ public class SorcceresDialouge extends DialoguePlugin { public void tele() { npc.sendChat("Be gone intruder!"); player.lock(); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.unlock(); diff --git a/Server/src/main/java/core/game/content/dialogue/TownCrierDialogue.java b/Server/src/main/java/core/game/content/dialogue/TownCrierDialogue.java index 495fb4606..821533502 100644 --- a/Server/src/main/java/core/game/content/dialogue/TownCrierDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/TownCrierDialogue.java @@ -4,7 +4,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.tools.RandomFunction; @@ -41,7 +41,7 @@ public final class TownCrierDialogue extends DialoguePlugin { @Override public boolean open(Object... args) { npc = (NPC) args[0]; - npc("Hear ye! Hear ye! Player Moderators massive help to ", World.getSettings().getName().substring(0, World.getSettings().getName().length() - 3) + "-"); + npc("Hear ye! Hear ye! Player Moderators massive help to ", GameWorld.getSettings().getName().substring(0, GameWorld.getSettings().getName().length() - 3) + "-"); stage = 1; return true; } @@ -55,7 +55,7 @@ public final class TownCrierDialogue extends DialoguePlugin { stage = 2; break; case 2: - options("Tell me about Player Moderators.", "Tell me about the Rules of " + World.getSettings().getName() + ".", "Can you give me a handy tip please?", "Bye!"); + options("Tell me about Player Moderators.", "Tell me about the Rules of " + GameWorld.getSettings().getName() + ".", "Can you give me a handy tip please?", "Bye!"); stage = 3; break; case 3: @@ -65,7 +65,7 @@ public final class TownCrierDialogue extends DialoguePlugin { stage = 50; break; case 2: - player("Tell me about the Rules of " + World.getSettings().getName() + "."); + player("Tell me about the Rules of " + GameWorld.getSettings().getName() + "."); stage = 70; break; case 3: @@ -118,7 +118,7 @@ public final class TownCrierDialogue extends DialoguePlugin { player.lock(4); npc("At once. Take a look at my book here."); npc.animate(new Animation(6866)); - World.getPulser().submit(new Pulse(4) { + GameWorld.getPulser().submit(new Pulse(4) { @Override public boolean pulse() { //player.getDialogueInterpreter().open(496107759); // TODO rulebook broken @@ -155,7 +155,7 @@ public final class TownCrierDialogue extends DialoguePlugin { stage = 2; break; default: - npc("" + World.getSettings().getName() + " will never email you asking for your log-in details."); + npc("" + GameWorld.getSettings().getName() + " will never email you asking for your log-in details."); stage = 2; break; } @@ -181,15 +181,15 @@ public final class TownCrierDialogue extends DialoguePlugin { stage = 51; break; case 160: - npc("Player Moderators, or 'P-mods', have the ability to mute", "rule breakers and " + World.getSettings().getName() + " view their reports as a priority so", "that reward is taken as quickly as possible. P-Mods also", "have acces to the Player Moderator Centre. Within the"); + npc("Player Moderators, or 'P-mods', have the ability to mute", "rule breakers and " + GameWorld.getSettings().getName() + " view their reports as a priority so", "that reward is taken as quickly as possible. P-Mods also", "have acces to the Player Moderator Centre. Within the"); stage = 161; break; case 161: - npc("Centre are tools to help them Moderate " + World.getSettings().getName() + ".", "These tools include dedicated forums, the Player", "Moderator Guidelines and the Player Moderator Code of", "Conduct."); + npc("Centre are tools to help them Moderate " + GameWorld.getSettings().getName() + ".", "These tools include dedicated forums, the Player", "Moderator Guidelines and the Player Moderator Code of", "Conduct."); stage = 153; break; case 170: - npc("" + World.getSettings().getName() + " picks players who spend their time and effort to", "help better the " + World.getSettings().getName() + " community. To increase your", "chances of becoming a Player Moderator:"); + npc("" + GameWorld.getSettings().getName() + " picks players who spend their time and effort to", "help better the " + GameWorld.getSettings().getName() + " community. To increase your", "chances of becoming a Player Moderator:"); stage = 171; break; case 171: @@ -197,11 +197,11 @@ public final class TownCrierDialogue extends DialoguePlugin { stage = 173; break; case 173: - npc("Play by the rules! The rules of " + World.getSettings().getName() + " are enforced", "for a reason, to make the game a fair and enjoyable", "environment for all."); + npc("Play by the rules! The rules of " + GameWorld.getSettings().getName() + " are enforced", "for a reason, to make the game a fair and enjoyable", "environment for all."); stage = 174; break; case 174: - npc("Report accuratley! When " + World.getSettings().getName() + " consider an account for", "review they look for quality, not quantity. Ensure your", "reports are of a high quality by following the report", "guidelines."); + npc("Report accuratley! When " + GameWorld.getSettings().getName() + " consider an account for", "review they look for quality, not quantity. Ensure your", "reports are of a high quality by following the report", "guidelines."); stage = 175; break; case 175: @@ -209,15 +209,15 @@ public final class TownCrierDialogue extends DialoguePlugin { stage = 153; break; case 180: - npc("P-Mods cannot ban your account - they can only report", "offences. " + World.getSettings().getName() + " then take reward based on the evidence", "received. If you lose your password or get scamme dby", "another player, P_Mods cannot help you get your account"); + npc("P-Mods cannot ban your account - they can only report", "offences. " + GameWorld.getSettings().getName() + " then take reward based on the evidence", "received. If you lose your password or get scamme dby", "another player, P_Mods cannot help you get your account"); stage = 181; break; case 181: - npc("back. All they can do is recommend you to go to Player", "Support. They cannot retrieve any items you may have", "lost and they certainly do not recieve any free items", "from " + World.getSettings().getName() + " for moderating the game. They are players"); + npc("back. All they can do is recommend you to go to Player", "Support. They cannot retrieve any items you may have", "lost and they certainly do not recieve any free items", "from " + GameWorld.getSettings().getName() + " for moderating the game. They are players"); stage = 182; break; case 182: - npc("who give their all to help the community, out of the", "goodness of their hearts! P-mods do not work for " + World.getSettings().getName() + "", "and so cannot make you a Moderator, or recommend", "other accounts to become Moderators. If you wish yo"); + npc("who give their all to help the community, out of the", "goodness of their hearts! P-mods do not work for " + GameWorld.getSettings().getName() + "", "and so cannot make you a Moderator, or recommend", "other accounts to become Moderators. If you wish yo"); stage = 183; break; case 183: diff --git a/Server/src/main/java/core/game/content/dialogue/TraibornDialogue.java b/Server/src/main/java/core/game/content/dialogue/TraibornDialogue.java index c5da291eb..d4c89c195 100644 --- a/Server/src/main/java/core/game/content/dialogue/TraibornDialogue.java +++ b/Server/src/main/java/core/game/content/dialogue/TraibornDialogue.java @@ -7,7 +7,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -215,7 +215,7 @@ public class TraibornDialogue extends DialoguePlugin { interpreter.sendItemMessage(DemonSlayer.THIRD_KEY.getId(), "Traiborn hands you a key."); stage = 387; } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/dialogue/book/SecurityBookPlugin.java b/Server/src/main/java/core/game/content/dialogue/book/SecurityBookPlugin.java index f7fbbdfff..7dae0c0eb 100644 --- a/Server/src/main/java/core/game/content/dialogue/book/SecurityBookPlugin.java +++ b/Server/src/main/java/core/game/content/dialogue/book/SecurityBookPlugin.java @@ -4,7 +4,7 @@ import core.game.component.Component; import core.game.content.dialogue.DialoguePlugin; import core.game.node.entity.player.Player; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the strong hold of security book. @@ -27,13 +27,13 @@ public final class SecurityBookPlugin extends Book { /** * Represents the array of pages for this book. */ - private static final PageSet[] PAGES = new PageSet[] { new PageSet(new Page(new BookLine("Chapters", 102), new BookLine("

" + BLUE + "Password Tips

", 74), new BookLine("

" + BLUE + "Recovery Questions

", 75), new BookLine("

" + BLUE + "Password Tips

", 74), new BookLine("

" + BLUE + "Recovery Questions

", 75), new BookLine("

" + BLUE + "Other Security Tips

", 76), new BookLine("

" + BLUE + "Stringhold of Security

", 77)), new Page(new BookLine("

" + BLUE + "Password Tips

", 87), new BookLine("A good password should be", 88), new BookLine("easily remembered by", 89), new BookLine("yourself but not easily", 90), new BookLine("guessed by anyone else.", 91), new BookLine("Choose a password that has", 93), new BookLine("both letters and numbers in", 94), new BookLine("it for the best security but", 95), new BookLine("don't make it so hard that", 96), new BookLine("you'll forget it!", 97), new BookLine("Never write your password", 99), new BookLine("down or leave it in a text file", 100), new BookLine("on your computer, someone", 101))), new PageSet(new Page(new BookLine("could find it easily!", 102), new BookLine("Never tell anyone your", 74), new BookLine("password in " + World.getSettings().getName() + ", not", 75), new BookLine("even a Moderator of any", 76), new BookLine("kind.", 77)), new Page(new BookLine("

" + BLUE + "Recovery Questions

", 87), new BookLine("Ideally your recovery", 88), new BookLine("questions should be easily", 89), new BookLine("remembered by you but not", 90), new BookLine("guessable by anyone who", 91), new BookLine("may know you or given", 92), new BookLine("away in conversation. Choose", 93), new BookLine("things that do not change,", 94), new BookLine("like dates or names but don't", 95), new BookLine("choose obvious ones like your", 96), new BookLine("birthday and your sister or", 97), new BookLine("bother's name because lots", 98), new BookLine("of people will know that.", 99))), new PageSet(new Page(new BookLine("

" + BLUE + "Recovery Questions

", 102), new BookLine("Bear in mind that recovery", 73), new BookLine("questions will take 14 days to", 74), new BookLine("become active after you have", 75), new BookLine("applied for them to be", 76), new BookLine("changed. This is to protect", 77), new BookLine("your account from hijackers", 78), new BookLine("who may change them.", 79), new BookLine("Never give your password to", 81), new BookLine("ANYONE. This includes", 82), new BookLine("your friends, family, and", 83), new BookLine("moderators in game.", 84), new BookLine("Never leave your account", 86)), new Page(new BookLine("logged on if you are away", 87), new BookLine("from the computer, it only", 88), new BookLine("takes 5 seconds to steal your", 89), new BookLine("account!", 90))), new PageSet(new Page(new BookLine("

" + BLUE + "Stronghold of Security

", 102), new BookLine("Location: The Stronghold of", 73), new BookLine("Security, as we call it, is", 74), new BookLine("located under the village filled", 75), new BookLine("with Barbarians. It was", 76), new BookLine("found after they moved their", 77), new BookLine("mining operations and a", 78), new BookLine("miner fell through. The", 79), new BookLine("Stronghold contains many", 80), new BookLine("challenges. Both for those", 81), new BookLine("who enjoy combat and those", 82), new BookLine("who enjoy challenges of the", 83), new BookLine("mind. This book will be very", 84), new BookLine("useful to you in your travels", 85), new BookLine("there.", 86)), new Page(new BookLine("You can find the Stronghold", 87), new BookLine("of Security by looking for a", 88), new BookLine("hole in Barbarian Village.", 89), new BookLine("Be sure to take your combat", 90), new BookLine("equipment though!", 91))) }; + private static final PageSet[] PAGES = new PageSet[] { new PageSet(new Page(new BookLine("Chapters", 102), new BookLine("

" + BLUE + "Password Tips

", 74), new BookLine("

" + BLUE + "Recovery Questions

", 75), new BookLine("

" + BLUE + "Password Tips

", 74), new BookLine("

" + BLUE + "Recovery Questions

", 75), new BookLine("

" + BLUE + "Other Security Tips

", 76), new BookLine("

" + BLUE + "Stringhold of Security

", 77)), new Page(new BookLine("

" + BLUE + "Password Tips

", 87), new BookLine("A good password should be", 88), new BookLine("easily remembered by", 89), new BookLine("yourself but not easily", 90), new BookLine("guessed by anyone else.", 91), new BookLine("Choose a password that has", 93), new BookLine("both letters and numbers in", 94), new BookLine("it for the best security but", 95), new BookLine("don't make it so hard that", 96), new BookLine("you'll forget it!", 97), new BookLine("Never write your password", 99), new BookLine("down or leave it in a text file", 100), new BookLine("on your computer, someone", 101))), new PageSet(new Page(new BookLine("could find it easily!", 102), new BookLine("Never tell anyone your", 74), new BookLine("password in " + GameWorld.getSettings().getName() + ", not", 75), new BookLine("even a Moderator of any", 76), new BookLine("kind.", 77)), new Page(new BookLine("

" + BLUE + "Recovery Questions

", 87), new BookLine("Ideally your recovery", 88), new BookLine("questions should be easily", 89), new BookLine("remembered by you but not", 90), new BookLine("guessable by anyone who", 91), new BookLine("may know you or given", 92), new BookLine("away in conversation. Choose", 93), new BookLine("things that do not change,", 94), new BookLine("like dates or names but don't", 95), new BookLine("choose obvious ones like your", 96), new BookLine("birthday and your sister or", 97), new BookLine("bother's name because lots", 98), new BookLine("of people will know that.", 99))), new PageSet(new Page(new BookLine("

" + BLUE + "Recovery Questions

", 102), new BookLine("Bear in mind that recovery", 73), new BookLine("questions will take 14 days to", 74), new BookLine("become active after you have", 75), new BookLine("applied for them to be", 76), new BookLine("changed. This is to protect", 77), new BookLine("your account from hijackers", 78), new BookLine("who may change them.", 79), new BookLine("Never give your password to", 81), new BookLine("ANYONE. This includes", 82), new BookLine("your friends, family, and", 83), new BookLine("moderators in game.", 84), new BookLine("Never leave your account", 86)), new Page(new BookLine("logged on if you are away", 87), new BookLine("from the computer, it only", 88), new BookLine("takes 5 seconds to steal your", 89), new BookLine("account!", 90))), new PageSet(new Page(new BookLine("

" + BLUE + "Stronghold of Security

", 102), new BookLine("Location: The Stronghold of", 73), new BookLine("Security, as we call it, is", 74), new BookLine("located under the village filled", 75), new BookLine("with Barbarians. It was", 76), new BookLine("found after they moved their", 77), new BookLine("mining operations and a", 78), new BookLine("miner fell through. The", 79), new BookLine("Stronghold contains many", 80), new BookLine("challenges. Both for those", 81), new BookLine("who enjoy combat and those", 82), new BookLine("who enjoy challenges of the", 83), new BookLine("mind. This book will be very", 84), new BookLine("useful to you in your travels", 85), new BookLine("there.", 86)), new Page(new BookLine("You can find the Stronghold", 87), new BookLine("of Security by looking for a", 88), new BookLine("hole in Barbarian Village.", 89), new BookLine("Be sure to take your combat", 90), new BookLine("equipment though!", 91))) }; /** * Constructs a new {@code ShieldofArravBook} {@code Object}. */ public SecurityBookPlugin(final Player player) { - super(player, "" + World.getSettings().getName() + " Account Security", 9003, PAGES); + super(player, "" + GameWorld.getSettings().getName() + " Account Security", 9003, PAGES); } /** diff --git a/Server/src/main/java/core/game/content/global/EnchantedJewellery.java b/Server/src/main/java/core/game/content/global/EnchantedJewellery.java index 109e59cf8..b00c4d6d5 100644 --- a/Server/src/main/java/core/game/content/global/EnchantedJewellery.java +++ b/Server/src/main/java/core/game/content/global/EnchantedJewellery.java @@ -4,7 +4,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -164,7 +164,7 @@ public enum EnchantedJewellery { player.visualize(ANIMATION, GRAPHICS); player.getAudioManager().send(200); player.getImpactHandler().setDisabledTicks(4); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { @Override public boolean pulse() { player.unlock(); diff --git a/Server/src/main/java/core/game/content/global/GodType.java b/Server/src/main/java/core/game/content/global/GodType.java index 165e8e088..e202c34e4 100644 --- a/Server/src/main/java/core/game/content/global/GodType.java +++ b/Server/src/main/java/core/game/content/global/GodType.java @@ -7,7 +7,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.tools.StringUtils; @@ -77,7 +77,7 @@ public enum GodType { public void handle(final Player player, int buttonId) { player.lock(); player.animate(Animation.create(645)); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { Location loc = statue.getLocation().transform(0, -1, 0); diff --git a/Server/src/main/java/core/game/content/global/action/ClimbActionHandler.java b/Server/src/main/java/core/game/content/global/action/ClimbActionHandler.java index d3707c0d4..8e2d403fa 100644 --- a/Server/src/main/java/core/game/content/global/action/ClimbActionHandler.java +++ b/Server/src/main/java/core/game/content/global/action/ClimbActionHandler.java @@ -7,7 +7,7 @@ import core.game.content.dialogue.DialoguePlugin; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -191,7 +191,7 @@ public final class ClimbActionHandler { public static void climb(final Player player, Animation animation, final Location destination, final String... messages) { player.lock(2); player.animate(animation); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(destination); @@ -359,7 +359,7 @@ public final class ClimbActionHandler { switch (buttonId) { case 1: player.lock(1); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { climbLadder(player, object, "climb-up"); @@ -370,7 +370,7 @@ public final class ClimbActionHandler { break; case 2: player.lock(1); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { climbLadder(player, object, "climb-down"); diff --git a/Server/src/main/java/core/game/content/global/action/DigSpadeHandler.java b/Server/src/main/java/core/game/content/global/action/DigSpadeHandler.java index a88c10639..4ea41bdd3 100644 --- a/Server/src/main/java/core/game/content/global/action/DigSpadeHandler.java +++ b/Server/src/main/java/core/game/content/global/action/DigSpadeHandler.java @@ -4,7 +4,7 @@ import core.game.node.entity.player.Player; import rs09.game.interaction.SpadeDigListener; import rs09.game.system.SystemLogger; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -42,7 +42,7 @@ public final class DigSpadeHandler { } if (action != null) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { action.run(player); diff --git a/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java b/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java index d2ed74c89..47202eb02 100644 --- a/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java +++ b/Server/src/main/java/core/game/content/global/action/DoorActionHandler.java @@ -15,7 +15,7 @@ import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.path.Pathfinder; import rs09.game.system.config.DoorConfigLoader; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.awt.*; @@ -105,7 +105,7 @@ public final class DoorActionHandler { if (entity instanceof Player) { ((Player) entity).getAudioManager().send(new Audio(3419)); } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { boolean opened = false; @Override @@ -378,7 +378,7 @@ public final class DoorActionHandler { entity.addExtension(LogoutTask.class, new LocationLogoutTask(4, loc)); object.setCharge(IN_USE_CHARGE); second.setCharge(IN_USE_CHARGE); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { boolean opened = false; @Override diff --git a/Server/src/main/java/core/game/content/global/action/DropItemHandler.java b/Server/src/main/java/core/game/content/global/action/DropItemHandler.java index 44d4c9bcb..5b6da8cc9 100644 --- a/Server/src/main/java/core/game/content/global/action/DropItemHandler.java +++ b/Server/src/main/java/core/game/content/global/action/DropItemHandler.java @@ -8,7 +8,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import rs09.game.system.SystemLogger; import rs09.game.system.config.ItemConfigParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the dropping of an item. @@ -42,7 +42,7 @@ public final class DropItemHandler { player.getDialogueInterpreter().open(9878, item); return true; } - if (player.getAttribute("equipLock:" + item.getId(), 0) > World.getTicks()) { + if (player.getAttribute("equipLock:" + item.getId(), 0) > GameWorld.getTicks()) { SystemLogger.logAlert(player + ", tried to do the drop & equip dupe."); return true; } @@ -52,7 +52,7 @@ public final class DropItemHandler { GroundItemManager.create(item, player.getLocation(), player); PlayerParser.save(player); } - player.setAttribute("droppedItem:" + item.getId(), World.getTicks() + 2); + player.setAttribute("droppedItem:" + item.getId(), GameWorld.getTicks() + 2); return true; } return false; diff --git a/Server/src/main/java/core/game/content/global/shop/Shop.kt b/Server/src/main/java/core/game/content/global/shop/Shop.kt index 7a0784f94..c83692a89 100644 --- a/Server/src/main/java/core/game/content/global/shop/Shop.kt +++ b/Server/src/main/java/core/game/content/global/shop/Shop.kt @@ -1,7 +1,7 @@ package core.game.content.global.shop -import rs09.game.world.World.ticks -import api.* +import api.amountInInventory +import rs09.game.world.GameWorld.ticks import rs09.game.system.SystemLogger.logInfo import core.game.node.entity.player.link.diary.DiaryType import core.cache.def.impl.ItemDefinition diff --git a/Server/src/main/java/core/game/content/global/travel/ship/ShipCharter.java b/Server/src/main/java/core/game/content/global/travel/ship/ShipCharter.java index 13282e309..9425d616e 100644 --- a/Server/src/main/java/core/game/content/global/travel/ship/ShipCharter.java +++ b/Server/src/main/java/core/game/content/global/travel/ship/ShipCharter.java @@ -5,7 +5,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import rs09.game.world.repository.Repository; import core.net.packet.PacketRepository; @@ -300,7 +300,7 @@ public final class ShipCharter { public void sail(final Player player) { player.lock(7); Location start = player.getLocation(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int count = 0; @Override diff --git a/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardHandler.java b/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardHandler.java index 0f4a21303..d2c011b97 100644 --- a/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardHandler.java +++ b/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardHandler.java @@ -4,7 +4,7 @@ import core.cache.def.impl.SceneryDefinition; import core.game.interaction.OptionHandler; import core.game.node.Node; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; public class ScoreboardHandler extends OptionHandler { @@ -13,7 +13,7 @@ public class ScoreboardHandler extends OptionHandler { @Override public boolean handle(Player player, Node node, String option) { ScoreboardManager.getEntries().forEach(e -> { - player.getPacketDispatch().sendString("" + Math.floor(((World.getTicks() - e.time) / 0.6) / 60) + " minutes ago",ifaceid,index + 6); + player.getPacketDispatch().sendString("" + Math.floor(((GameWorld.getTicks() - e.time) / 0.6) / 60) + " minutes ago",ifaceid,index + 6); player.getPacketDispatch().sendString(e.playerName,ifaceid,index + 11); index++; }); diff --git a/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardManager.java b/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardManager.java index 36c562dcf..86d8f7099 100644 --- a/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardManager.java +++ b/Server/src/main/java/core/game/content/global/worldevents/shootingstar/ScoreboardManager.java @@ -1,7 +1,8 @@ package core.game.content.global.worldevents.shootingstar; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.system.SystemLogger; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -13,7 +14,7 @@ public class ScoreboardManager { if(entries.size() == 5){ entries.remove(0); } - entries.add(new ScoreboardEntry(player.getUsername(), World.getTicks())); + entries.add(new ScoreboardEntry(player.getUsername(), GameWorld.getTicks())); } public static List getEntries(){ diff --git a/Server/src/main/java/core/game/content/holiday/HolidayItem.java b/Server/src/main/java/core/game/content/holiday/HolidayItem.java index 728d704e6..b39a1d28b 100644 --- a/Server/src/main/java/core/game/content/holiday/HolidayItem.java +++ b/Server/src/main/java/core/game/content/holiday/HolidayItem.java @@ -4,7 +4,7 @@ import core.game.node.item.GroundItem; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; @@ -39,7 +39,7 @@ public final class HolidayItem extends GroundItem { * @param spawnLocations The spawn locations. */ public static void startRandomSpawn(final Item spawn, int interval, final Location... spawnLocations) { - World.getPulser().submit(new Pulse(interval) { + GameWorld.getPulser().submit(new Pulse(interval) { GroundItem item; int lastIndex = -1; diff --git a/Server/src/main/java/core/game/content/holiday/christmas/ChristmasEvent.java b/Server/src/main/java/core/game/content/holiday/christmas/ChristmasEvent.java index f53c1c40d..8415797b4 100644 --- a/Server/src/main/java/core/game/content/holiday/christmas/ChristmasEvent.java +++ b/Server/src/main/java/core/game/content/holiday/christmas/ChristmasEvent.java @@ -33,7 +33,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import rs09.game.world.repository.Repository; @@ -310,7 +310,7 @@ public class ChristmasEvent extends HolidayEvent { player.lock(16); player.animate(Animation.create(7535)); player.sendMessage("You shake the snow globe."); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int ticks; @Override public boolean pulse() { @@ -376,7 +376,7 @@ public class ChristmasEvent extends HolidayEvent { int distance = (int) Location.getDistance(player.getLocation(), target.getLocation()); int projectileSpeed = delay + speed + distance * 5; double hitDelay = projectileSpeed * .02857; - World.getPulser().submit(new Pulse((int) hitDelay, target) { + GameWorld.getPulser().submit(new Pulse((int) hitDelay, target) { @Override public boolean pulse() { target.getImpactHandler().manualHit(player, node instanceof NPC ? 1 : 0, HitsplatType.MISS); @@ -448,7 +448,7 @@ public class ChristmasEvent extends HolidayEvent { HolidayEvent.getCurrent().setStage(player, 2); } if (!weapon) { - World.getPulser().submit(new Pulse(200) { + GameWorld.getPulser().submit(new Pulse(200) { @Override public boolean pulse() { snowman.clear(); diff --git a/Server/src/main/java/core/game/content/holiday/easter/BasketofEggsEvent.java b/Server/src/main/java/core/game/content/holiday/easter/BasketofEggsEvent.java index d16ecac68..17d616ae8 100644 --- a/Server/src/main/java/core/game/content/holiday/easter/BasketofEggsEvent.java +++ b/Server/src/main/java/core/game/content/holiday/easter/BasketofEggsEvent.java @@ -18,7 +18,7 @@ import core.game.node.entity.player.link.emote.Emotes; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import rs09.game.world.repository.Repository; import core.game.world.update.flag.context.Animation; @@ -216,7 +216,7 @@ public class BasketofEggsEvent extends HolidayEvent { stage = 10; break; case 2: - npc("I am the easter bunny, and since it is easter", "I must begin handing out chocolate eggs to all", "of " + World.getSettings().getName() + "."); + npc("I am the easter bunny, and since it is easter", "I must begin handing out chocolate eggs to all", "of " + GameWorld.getSettings().getName() + "."); stage = 20; break; case 3: @@ -230,7 +230,7 @@ public class BasketofEggsEvent extends HolidayEvent { } break; case 10: - npc("Being the easter bunny is no simple task and", "I have found myself very overwhelmed this year.", "I have no clue how I must deliver all of these basket", "of eggs to all the people of " + World.getSettings().getName() + "."); + npc("Being the easter bunny is no simple task and", "I have found myself very overwhelmed this year.", "I have no clue how I must deliver all of these basket", "of eggs to all the people of " + GameWorld.getSettings().getName() + "."); stage = 21; break; case 20: @@ -287,7 +287,7 @@ public class BasketofEggsEvent extends HolidayEvent { } }; player.setAttribute("egg-pulse", pulse); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); break; case 30: npc("No you fool! I am an easter bunny!!"); @@ -342,7 +342,7 @@ public class BasketofEggsEvent extends HolidayEvent { } }; player.setAttribute("egg-pulse", pulse); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); break; case 4: end(); @@ -399,7 +399,7 @@ public class BasketofEggsEvent extends HolidayEvent { return true; } Player target = node.asPlayer(); - if (getEggs(target) >= 4 && !World.getSettings().isDevMode()) { + if (getEggs(target) >= 4 && !GameWorld.getSettings().isDevMode()) { player.sendMessage("That player already has enough chocolate eggs."); return true; } @@ -481,10 +481,10 @@ public class BasketofEggsEvent extends HolidayEvent { return true; case "dance": case "operate": - if (player.getAttribute("chicken-delay", 0) > World.getTicks()) { + if (player.getAttribute("chicken-delay", 0) > GameWorld.getTicks()) { return true; } - player.setAttribute("chicken-delay", World.getTicks() + 8); + player.setAttribute("chicken-delay", GameWorld.getTicks() + 8); player.animate(Animation.create(1835)); return true; } diff --git a/Server/src/main/java/core/game/content/holiday/halloween/DeathMansionEvent.java b/Server/src/main/java/core/game/content/holiday/halloween/DeathMansionEvent.java index 42a93e918..ad87fe745 100644 --- a/Server/src/main/java/core/game/content/holiday/halloween/DeathMansionEvent.java +++ b/Server/src/main/java/core/game/content/holiday/halloween/DeathMansionEvent.java @@ -37,7 +37,7 @@ import core.game.node.scenery.Scenery; import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -169,7 +169,7 @@ public class DeathMansionEvent extends HolidayEvent { if (e instanceof Player) { Player player = e.asPlayer(); if (!logout) { - if (player.getAttribute("grimDis", 0) > World.getTicks()) { + if (player.getAttribute("grimDis", 0) > GameWorld.getTicks()) { return super.leave(player, logout); } int stage = getStage(player); @@ -231,7 +231,7 @@ public class DeathMansionEvent extends HolidayEvent { case 27242: case 27243: if (getStage(player) >= 6) { - player.setAttribute("grimDis", World.getTicks() + 2); + player.setAttribute("grimDis", GameWorld.getTicks() + 2); player.teleport(target.getId() == 27243 ? Location.create(1703, 4826, 0) : Location.create(1639, 4835, 0)); return true; } @@ -339,7 +339,7 @@ public class DeathMansionEvent extends HolidayEvent { player.lock(3); if (target.getLocation().equals(1624, 4822, 0)) { player.sendChat("Weeeeee"); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { @@ -361,7 +361,7 @@ public class DeathMansionEvent extends HolidayEvent { } player.getPacketDispatch().sendSceneryAnimation(target.asScenery(), Animation.create(7296)); AgilityHandler.walk(player, -1, player.getLocation(), target.getLocation(), null, 0.0, null); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { @@ -386,7 +386,7 @@ public class DeathMansionEvent extends HolidayEvent { player.lock(10); Location strt = player.getLocation().transform(0, -1, 0); AgilityHandler.forceWalk(player, -1, player.getLocation(), strt, Animation.create(7274), 5, 0.0, null); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int ticks; int x = 1636; int y = 4829; @@ -455,7 +455,7 @@ public class DeathMansionEvent extends HolidayEvent { p.getWalkingQueue().reset(); p.getLocks().lock(); p.sendMessage("You accidentally trigger a trap."); - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { int ticks; @Override @@ -617,7 +617,7 @@ public class DeathMansionEvent extends HolidayEvent { player.getPacketDispatch().sendSceneryAnimation(second, Animation.create(7285)); } player.sendMessage("You fail to pass through the gargoyles' judgement"); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getImpactHandler().manualHit(player, player.getSkills().getLifepoints(), HitsplatType.NORMAL); @@ -650,10 +650,10 @@ public class DeathMansionEvent extends HolidayEvent { if (skill <= Skills.MAGIC && skill != Skills.PRAYER) { return; } - if (World.getTicks() - lastPumpkinReward < 1000 && RandomFunction.random(2500) == 0 && ItemLimitation.getAmountLeft(pumpkin.getId()) > 0) { + if (GameWorld.getTicks() - lastPumpkinReward < 1000 && RandomFunction.random(2500) == 0 && ItemLimitation.getAmountLeft(pumpkin.getId()) > 0) { if (player.getInventory().add(pumpkin)) { player.getPacketDispatch().sendMessage("You found a pumpkin!"); - lastPumpkinReward = World.getTicks(); + lastPumpkinReward = GameWorld.getTicks(); ItemLimitation.decreaseAmount(pumpkin.getId()); } } @@ -677,7 +677,7 @@ public class DeathMansionEvent extends HolidayEvent { reaper.setAggressive(false); reaper.animate(Animation.create(392)); reaper.sendChat(RandomFunction.getRandomElement(GRIM_CHATS).replace("@name", player.getUsername())); - World.getPulser().submit(new Pulse(4, reaper) { + GameWorld.getPulser().submit(new Pulse(4, reaper) { @Override public boolean pulse() { reaper.clear(); @@ -1354,7 +1354,7 @@ public class DeathMansionEvent extends HolidayEvent { player.getImpactHandler().manualHit(player, player.getSkills().getLifepoints(), HitsplatType.NORMAL); close(); player.setAttribute("lo", true); - World.getPulser().submit(new Pulse(5, player) { + GameWorld.getPulser().submit(new Pulse(5, player) { @Override public boolean pulse() { player.setAttribute("lo", true); @@ -1543,7 +1543,7 @@ public class DeathMansionEvent extends HolidayEvent { switch (stage) { case 0: player.teleport(START); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { @@ -1673,7 +1673,7 @@ public class DeathMansionEvent extends HolidayEvent { player.lock(a.getDuration()); npc.faceTemporary(player, 2); npc.animate(Animation.create(6578)); - World.getPulser().submit(new Pulse(a.getDuration(), player) { + GameWorld.getPulser().submit(new Pulse(a.getDuration(), player) { @Override public boolean pulse() { player("Okay, touching him seems to be a bad idea."); @@ -1686,7 +1686,7 @@ public class DeathMansionEvent extends HolidayEvent { Animation anim = new Animation(866); player.animate(anim); player.lock(anim.getDuration()); - World.getPulser().submit(new Pulse(anim.getDuration(), player) { + GameWorld.getPulser().submit(new Pulse(anim.getDuration(), player) { @Override public boolean pulse() { player("If it's possible for a skeletal dog to smile, I think he", "would be now."); @@ -1699,7 +1699,7 @@ public class DeathMansionEvent extends HolidayEvent { player.animate(Animation.create(2110)); npc.faceTemporary(player, 3); player.lock(4); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { npc.animate(Animation.create(6579)); diff --git a/Server/src/main/java/core/game/content/quest/free/blackknightsfortress/BKFortressPlugin.java b/Server/src/main/java/core/game/content/quest/free/blackknightsfortress/BKFortressPlugin.java index cb3cf90d3..3311d3adb 100644 --- a/Server/src/main/java/core/game/content/quest/free/blackknightsfortress/BKFortressPlugin.java +++ b/Server/src/main/java/core/game/content/quest/free/blackknightsfortress/BKFortressPlugin.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import rs09.game.world.repository.Repository; import core.game.world.update.flag.context.Animation; @@ -72,7 +72,7 @@ public final class BKFortressPlugin extends OptionHandler { switch (id) { case 2342:// listen at grill. player.animate(LISTEN_ANIM); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.animate(LOWER_ANIM); @@ -150,7 +150,7 @@ public final class BKFortressPlugin extends OptionHandler { case "read":// 4549, 4551 if (player.getInventory().remove((Item) node)) { player.lock(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/demonslayer/DemonSlayerCutscene.java b/Server/src/main/java/core/game/content/quest/free/demonslayer/DemonSlayerCutscene.java index 6d6dad798..6de56ef71 100644 --- a/Server/src/main/java/core/game/content/quest/free/demonslayer/DemonSlayerCutscene.java +++ b/Server/src/main/java/core/game/content/quest/free/demonslayer/DemonSlayerCutscene.java @@ -16,7 +16,7 @@ import core.game.node.entity.player.link.quest.Quest; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.game.world.map.path.Path; @@ -412,7 +412,7 @@ public final class DemonSlayerCutscene extends CutscenePlugin { interpreter.sendPlainMessage(true, "Delrith is sucked into the vortex..."); cutscene.delrith.animate(new Animation(4624)); player.lock(); - World.getPulser().submit(new Pulse(10) { + GameWorld.getPulser().submit(new Pulse(10) { @Override public boolean pulse() { cutscene.delrith.clear(); @@ -503,7 +503,7 @@ public final class DemonSlayerCutscene extends CutscenePlugin { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.POSITION, player.getLocation().getX() - 1, player.getLocation().getY() + 2, 380, 1, 98)); PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.ROTATION, player.getLocation().getX() + 19, player.getLocation().getY() - 55, 380, 1, 98)); interpreter.sendPlainMessage(true, "The wizards cast an evil spell..."); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 0; @SuppressWarnings("deprecation") diff --git a/Server/src/main/java/core/game/content/quest/free/demonslayer/GypsyArisDialogue.java b/Server/src/main/java/core/game/content/quest/free/demonslayer/GypsyArisDialogue.java index 6f45fbdfa..5c4d4aa4a 100644 --- a/Server/src/main/java/core/game/content/quest/free/demonslayer/GypsyArisDialogue.java +++ b/Server/src/main/java/core/game/content/quest/free/demonslayer/GypsyArisDialogue.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.update.flag.context.Animation; import core.net.packet.PacketRepository; @@ -602,7 +602,7 @@ public final class GypsyArisDialogue extends DialoguePlugin { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.POSITION, player.getLocation().getX() + 2, player.getLocation().getY() + 2, 260, 1, 10)); PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.ROTATION, player.getLocation().getX() + 190, player.getLocation().getY() + 14, 260, 1, 10)); interpreter.sendDialogues(wally, FacialExpression.FURIOUS, "Die, foul demon!"); - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { wally.animate(new Animation(4603)); @@ -622,7 +622,7 @@ public final class GypsyArisDialogue extends DialoguePlugin { case 203: close(); player.getInterfaceManager().openOverlay(new Component(115)); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/demonslayer/SirPyrsinDialogue.java b/Server/src/main/java/core/game/content/quest/free/demonslayer/SirPyrsinDialogue.java index 9b25915ec..059c66caf 100644 --- a/Server/src/main/java/core/game/content/quest/free/demonslayer/SirPyrsinDialogue.java +++ b/Server/src/main/java/core/game/content/quest/free/demonslayer/SirPyrsinDialogue.java @@ -5,7 +5,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -175,7 +175,7 @@ public class SirPyrsinDialogue extends DialoguePlugin { } close(); player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/demonslayer/TraibornDialogue.java b/Server/src/main/java/core/game/content/quest/free/demonslayer/TraibornDialogue.java index 406cd0bb2..db54f8923 100644 --- a/Server/src/main/java/core/game/content/quest/free/demonslayer/TraibornDialogue.java +++ b/Server/src/main/java/core/game/content/quest/free/demonslayer/TraibornDialogue.java @@ -9,7 +9,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -209,7 +209,7 @@ public class TraibornDialogue extends DialoguePlugin { interpreter.sendItemMessage(DemonSlayer.THIRD_KEY.getId(), "Traiborn hands you a key."); stage = 387; } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayer.java b/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayer.java index 46d8058a8..439f10329 100644 --- a/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayer.java +++ b/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayer.java @@ -14,7 +14,7 @@ import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import rs09.game.content.dialogue.DukeHoracioDialogue; import rs09.game.content.quest.free.dragonslayer.NedDialogue; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; /** @@ -327,7 +327,7 @@ public final class DragonSlayer extends Quest { final Scenery object = RegionManager.getObject(new Location(3050, 9839, 0)); player.faceLocation(object.getLocation()); player.getPacketDispatch().sendSceneryAnimation(object, new Animation(6636)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayerCutscene.java b/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayerCutscene.java index 98e55f320..0c86708bf 100644 --- a/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayerCutscene.java +++ b/Server/src/main/java/core/game/content/quest/free/dragonslayer/DragonSlayerCutscene.java @@ -14,7 +14,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.game.world.update.flag.context.Animation; @@ -124,7 +124,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { PacketRepository.send(CameraViewPacket.class, position); PacketRepository.send(CameraViewPacket.class, rotation); if (bobinPulse.position == null || bobinPulse.rotation == null) { - World.getPulser().submit(bobinPulse); + GameWorld.getPulser().submit(bobinPulse); } bobinPulse.position = position; bobinPulse.rotation = rotation; @@ -341,7 +341,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { case 503: player.getInterfaceManager().open(new Component(543)); interpreter.sendPlainMessage(true, "Clouds surround the ship."); - World.getPulser().submit(new Pulse(6, player) { + GameWorld.getPulser().submit(new Pulse(6, player) { @Override public boolean pulse() { player.getInterfaceManager().close(); @@ -361,7 +361,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { break; case 505: player.getInterfaceManager().open(new Component(545)); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player("Did you see that?"); @@ -387,7 +387,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { player.getPacketDispatch().sendPositionedGraphic(446, 70, 1, cutscene.getBase().transform(37, 5, 1)); player.getPacketDispatch().sendPositionedGraphic(446, 70, 2, cutscene.getBase().transform(36, 5, 1)); player.getPacketDispatch().sendPositionedGraphic(446, 70, 3, cutscene.getBase().transform(35, 5, 1)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { @@ -412,7 +412,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { case 509: close(); player.getInterfaceManager().open(new Component(546)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 0; @Override @@ -504,7 +504,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { case 10: end(); Ships.PORT_SARIM_TO_CRANDOR.sail(player); - World.getPulser().submit(new Pulse(17) { + GameWorld.getPulser().submit(new Pulse(17) { @Override public boolean pulse() { player.getInterfaceManager().open(new Component(317)); @@ -536,7 +536,7 @@ public final class DragonSlayerCutscene extends CutscenePlugin { for (Location fire : fires) { player.getPacketDispatch().sendPositionedGraphic(453, 0, 1, fire); } - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { for (Location fire : fires) { diff --git a/Server/src/main/java/core/game/content/quest/free/dragonslayer/ElvargNPC.java b/Server/src/main/java/core/game/content/quest/free/dragonslayer/ElvargNPC.java index dbc786a90..c8f108ff2 100644 --- a/Server/src/main/java/core/game/content/quest/free/dragonslayer/ElvargNPC.java +++ b/Server/src/main/java/core/game/content/quest/free/dragonslayer/ElvargNPC.java @@ -15,7 +15,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -69,7 +69,7 @@ public final class ElvargNPC extends AbstractNPC { @Override public void commenceDeath(Entity killer) { final Direction direction = Direction.getLogicalDirection(getLocation(), killer.getLocation()); - World.getPulser().submit(new Pulse(1, this) { + GameWorld.getPulser().submit(new Pulse(1, this) { @Override public boolean pulse() { faceLocation(getCenterLocation().transform(direction.getStepX() * 3, direction.getStepY() * 3, 0)); @@ -86,7 +86,7 @@ public final class ElvargNPC extends AbstractNPC { SceneryBuilder.add(object); killer.faceLocation(object.getCenterLocation()); killer.lock(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GDiplomacyCutscene.java b/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GDiplomacyCutscene.java index 5d16d1645..14975a07c 100644 --- a/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GDiplomacyCutscene.java +++ b/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GDiplomacyCutscene.java @@ -11,7 +11,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -646,7 +646,7 @@ public final class GDiplomacyCutscene extends CutscenePlugin { */ public void sendGrubFoot(final GrubFoot grubFoot, final int endStage) { Pathfinder.find(grubfoot, grubfoot.getLocation().transform(-4, 0, 0)).walk(grubfoot); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GoblinDiplomacyPlugin.java b/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GoblinDiplomacyPlugin.java index f0a76049c..807c401af 100644 --- a/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GoblinDiplomacyPlugin.java +++ b/Server/src/main/java/core/game/content/quest/free/goblindiplomacy/GoblinDiplomacyPlugin.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; import rs09.plugin.PluginManager; import core.tools.StringUtils; @@ -59,8 +59,8 @@ public final class GoblinDiplomacyPlugin extends OptionHandler { case 16557: case 16561: case 16560: - if (player.getAttribute("crate:" + id, 0) < World.getTicks()) { - player.setAttribute("crate:" + id, World.getTicks() + 500); + if (player.getAttribute("crate:" + id, 0) < GameWorld.getTicks()) { + player.setAttribute("crate:" + id, GameWorld.getTicks() + 500); if (!player.getInventory().add(GOBLIN_MAIL)) { GroundItemManager.create(GOBLIN_MAIL, player); } diff --git a/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliDialogue.java b/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliDialogue.java index accef4b4d..0284cc9a6 100644 --- a/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliDialogue.java +++ b/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliDialogue.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; /** @@ -90,13 +90,13 @@ public final class LadyKeliDialogue extends DialoguePlugin { stage = 1; break; case 1: - interpreter.sendOptions("Select an Option", "Heard of you? You are famous in " + World.getSettings().getName() + "!", "I have heard a little, but I think Katrine is tougher.", "I have heard rumours that you kill people.", "No I have never really heard of you."); + interpreter.sendOptions("Select an Option", "Heard of you? You are famous in " + GameWorld.getSettings().getName() + "!", "I have heard a little, but I think Katrine is tougher.", "I have heard rumours that you kill people.", "No I have never really heard of you."); stage = 2; break; case 2: switch (buttonId) { case 1: - interpreter.sendDialogues(player, null, "The great Lady Keli, of course I have heard of you.", "You are famous in " + World.getSettings().getName() + "!"); + interpreter.sendDialogues(player, null, "The great Lady Keli, of course I have heard of you.", "You are famous in " + GameWorld.getSettings().getName() + "!"); stage = 10; break; case 2: diff --git a/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliNPC.java b/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliNPC.java index e561d1cfa..47f0cb6a0 100644 --- a/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliNPC.java +++ b/Server/src/main/java/core/game/content/quest/free/princealirescue/LadyKeliNPC.java @@ -2,7 +2,7 @@ package core.game.content.quest.free.princealirescue; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; /** @@ -40,7 +40,7 @@ public final class LadyKeliNPC extends AbstractNPC { @Override public boolean isHidden(final Player player) { - return player.getAttribute("keli-gone", 0) > World.getTicks(); + return player.getAttribute("keli-gone", 0) > GameWorld.getTicks(); } @Override diff --git a/Server/src/main/java/core/game/content/quest/free/princealirescue/PrinceAliRescuePlugin.java b/Server/src/main/java/core/game/content/quest/free/princealirescue/PrinceAliRescuePlugin.java index 97cc399c4..146b02a1a 100644 --- a/Server/src/main/java/core/game/content/quest/free/princealirescue/PrinceAliRescuePlugin.java +++ b/Server/src/main/java/core/game/content/quest/free/princealirescue/PrinceAliRescuePlugin.java @@ -9,7 +9,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.scenery.Scenery; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.plugin.Initializable; import core.plugin.Plugin; @@ -47,7 +47,7 @@ public class PrinceAliRescuePlugin extends OptionHandler { DoorActionHandler.handleAutowalkDoor(player, (Scenery) node); break; case 50: - if (player.getAttribute("keli-gone", 0) > World.getTicks()) { + if (player.getAttribute("keli-gone", 0) > GameWorld.getTicks()) { if (player.getInventory().contains(2418, 1)) { player.getPacketDispatch().sendMessage("You unlock the door."); DoorActionHandler.handleAutowalkDoor(player, (Scenery) node); diff --git a/Server/src/main/java/core/game/content/quest/free/therestlessghost/RestlessGhostPlugin.java b/Server/src/main/java/core/game/content/quest/free/therestlessghost/RestlessGhostPlugin.java index 4bd488913..61f9b54de 100644 --- a/Server/src/main/java/core/game/content/quest/free/therestlessghost/RestlessGhostPlugin.java +++ b/Server/src/main/java/core/game/content/quest/free/therestlessghost/RestlessGhostPlugin.java @@ -13,7 +13,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -142,7 +142,7 @@ public final class RestlessGhostPlugin extends OptionHandler { return; } GHOST.setInvisible(false); - World.getPulser().submit(new Pulse(100, GHOST) { + GameWorld.getPulser().submit(new Pulse(100, GHOST) { @Override public boolean pulse() { GHOST.setInvisible(true); @@ -253,7 +253,7 @@ public final class RestlessGhostPlugin extends OptionHandler { @Override public boolean isHidden(final Player player) { final Player pl = getAttribute("player", null); - if (this.getRespawnTick() > World.getTicks()) { + if (this.getRespawnTick() > GameWorld.getTicks()) { return true; } return player.getQuestRepository().isComplete(RestlessGhost.NAME) || (pl != null && player != pl); diff --git a/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AliceHusbandDialogue.java b/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AliceHusbandDialogue.java index 5c5eea7c8..d2efe20e5 100644 --- a/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AliceHusbandDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AliceHusbandDialogue.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.game.world.map.path.Pathfinder; @@ -411,7 +411,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin { player.face(scene.chicken); scene.walk(scene.husband, 46, 9); scene.walk(scene.chicken, 46, 9); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -440,7 +440,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin { scene.husband.getAnimator().forceAnimation(new Animation(5377, Priority.HIGH)); scene.walk(scene.husband, 51, 8); scene.walk(scene.chicken, 45, 10); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -479,7 +479,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin { scene.walk(scene.cowKiller, 46, 9); scene.walk(scene.cow, 46, 10); scene.walk(scene.husband, 44, 10); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -524,7 +524,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin { stage++; scene.allice.face(scene.husband); scene.walk(scene.cowKiller, 46, 10); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override @@ -558,7 +558,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin { case 23: close(); stage++; - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -663,7 +663,7 @@ public final class AliceHusbandDialogue extends DialoguePlugin { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.POSITION, loc.getX() + 2, loc.getY() + 3, height, 1, 100)); PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.ROTATION, loc.getX() + xRot, loc.getY() + yRot, height, 1, 100)); player.faceTemporary(chicken, 1); - player.getLocks().lockMovement(World.getTicks() + 1000000); + player.getLocks().lockMovement(GameWorld.getTicks() + 1000000); player.getDialogueInterpreter().sendDialogues(5202, null, "Here, chicky chicky!"); } diff --git a/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AnimalMagnetismPlugin.java b/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AnimalMagnetismPlugin.java index 034a6c62f..83750c71f 100644 --- a/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AnimalMagnetismPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AnimalMagnetismPlugin.java @@ -23,7 +23,7 @@ import core.game.node.entity.player.link.TeleportManager.TeleportType; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; @@ -178,7 +178,7 @@ public final class AnimalMagnetismPlugin extends OptionHandler { final Player player = event.getPlayer(); player.animate(ANIMATION); player.lock(ANIMATION.getDefinition().getDurationTicks()); - World.getPulser().submit(new Pulse(ANIMATION.getDefinition().getDurationTicks(), player) { + GameWorld.getPulser().submit(new Pulse(ANIMATION.getDefinition().getDurationTicks(), player) { @Override public boolean pulse() { if (!player.getZoneMonitor().isInZone("rimmington mine")) { diff --git a/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AvaDialogue.java b/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AvaDialogue.java index 2563cc8e5..a5023701d 100644 --- a/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AvaDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/animalmagnetism/AvaDialogue.java @@ -10,7 +10,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the ava npc dialogue. @@ -230,7 +230,7 @@ public final class AvaDialogue extends DialoguePlugin { stage++; break; case 5: - player("Obvious, yes, but why on " + World.getSettings().getName() + " would you need", "an undead chicken when there are perfectly good live", "chickens just down the road?"); + player("Obvious, yes, but why on " + GameWorld.getSettings().getName() + " would you need", "an undead chicken when there are perfectly good live", "chickens just down the road?"); stage++; break; case 6: @@ -250,7 +250,7 @@ public final class AvaDialogue extends DialoguePlugin { stage++; break; case 10: - npc("We'll need a magnet next, one with purely natural", "fields and made from a carefully selected iron bar. A", "firm impact when the iron is parallel to " + World.getSettings().getName() + "'s", "field will stabilise this field in the rod."); + npc("We'll need a magnet next, one with purely natural", "fields and made from a carefully selected iron bar. A", "firm impact when the iron is parallel to " + GameWorld.getSettings().getName() + "'s", "field will stabilise this field in the rod."); stage++; break; case 11: @@ -302,7 +302,7 @@ public final class AvaDialogue extends DialoguePlugin { stage++; break; case 5: - npc("The plan is that the chicken will operate the magnet to", "attract bits of iron and steel, maybe even your own", "recently fired arrows. There are plenty of totally lost", "arrowheads lying about in the Fields of " + World.getSettings().getName() + ", I"); + npc("The plan is that the chicken will operate the magnet to", "attract bits of iron and steel, maybe even your own", "recently fired arrows. There are plenty of totally lost", "arrowheads lying about in the Fields of " + GameWorld.getSettings().getName() + ", I"); stage++; break; case 6: diff --git a/Server/src/main/java/core/game/content/quest/members/dwarfcannon/DwarfCannonPlugin.java b/Server/src/main/java/core/game/content/quest/members/dwarfcannon/DwarfCannonPlugin.java index f7e48a88d..6a9646129 100644 --- a/Server/src/main/java/core/game/content/quest/members/dwarfcannon/DwarfCannonPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/dwarfcannon/DwarfCannonPlugin.java @@ -18,7 +18,7 @@ import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import rs09.game.system.SystemLogger; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -217,7 +217,7 @@ public class DwarfCannonPlugin extends OptionHandler { player.sendMessages("You search the crate...", "Inside you see a dwarf child, tied up!", "You untie the child."); lollk.setInvisible(false); lollk.sendChat("Hooray!"); - World.getPulser().submit(new Pulse(150, lollk) { + GameWorld.getPulser().submit(new Pulse(150, lollk) { @Override public boolean pulse() { @@ -304,7 +304,7 @@ public class DwarfCannonPlugin extends OptionHandler { player.getConfigManager().set(0, 8, true); player.getQuestRepository().getQuest(DwarfCannon.NAME).setStage(player, 60); player.sendMessage("Well done! You've fixed the cannon! Better go and tell Captain Lawgof."); - World.getPulser().submit(new Pulse(5, player) { + GameWorld.getPulser().submit(new Pulse(5, player) { @Override public boolean pulse() { player.getInterfaceManager().close(); diff --git a/Server/src/main/java/core/game/content/quest/members/fishingcontest/FenceInteraction.java b/Server/src/main/java/core/game/content/quest/members/fishingcontest/FenceInteraction.java index 82f0d9fb6..649a16186 100644 --- a/Server/src/main/java/core/game/content/quest/members/fishingcontest/FenceInteraction.java +++ b/Server/src/main/java/core/game/content/quest/members/fishingcontest/FenceInteraction.java @@ -4,7 +4,7 @@ import core.game.interaction.MovementPulse; import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -26,7 +26,7 @@ public class FenceInteraction extends PluginInteraction { player.getPulseManager().run(new MovementPulse(player, node.asScenery().getLocation().transform(player.getLocation().getX() == node.getLocation().getX() ? 0 : -1, 0, 0)) { @Override public boolean pulse() { - World.getPulser().submit(new SqueezePulse(player)); + GameWorld.getPulser().submit(new SqueezePulse(player)); return true; } }, "movement"); diff --git a/Server/src/main/java/core/game/content/quest/members/fishingcontest/FishingContestCutscene.java b/Server/src/main/java/core/game/content/quest/members/fishingcontest/FishingContestCutscene.java index b424d6003..e85409c21 100644 --- a/Server/src/main/java/core/game/content/quest/members/fishingcontest/FishingContestCutscene.java +++ b/Server/src/main/java/core/game/content/quest/members/fishingcontest/FishingContestCutscene.java @@ -5,7 +5,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; @@ -66,9 +66,9 @@ public class FishingContestCutscene extends CutscenePlugin { if(player.getAttribute("fishing_contest:garlic",false)){ NPC stranger = npcs.get(2); stranger.sendChat("What is this smell??"); - World.getPulser().submit(new SwitchPulse()); + GameWorld.getPulser().submit(new SwitchPulse()); } else { - World.getPulser().submit(new FishingPulse()); + GameWorld.getPulser().submit(new FishingPulse()); } player.lock(); } @@ -93,10 +93,10 @@ public class FishingContestCutscene extends CutscenePlugin { player.setAttribute("/save:fishing_contest:won",true); player.getWalkingQueue().setRunDisabled(false); } - World.getPulser().submit(getEndPulse()); + GameWorld.getPulser().submit(getEndPulse()); break; case 15: - World.getPulser().submit(new Pulse(){ + GameWorld.getPulser().submit(new Pulse(){ int counter = 0; @Override public boolean pulse() { @@ -161,7 +161,7 @@ public class FishingContestCutscene extends CutscenePlugin { return true; } }, "movement"); - World.getPulser().submit(new FishingPulse()); + GameWorld.getPulser().submit(new FishingPulse()); return true; } return false; diff --git a/Server/src/main/java/core/game/content/quest/members/lostcity/LostCityPlugin.java b/Server/src/main/java/core/game/content/quest/members/lostcity/LostCityPlugin.java index 182ad57ad..d26823730 100644 --- a/Server/src/main/java/core/game/content/quest/members/lostcity/LostCityPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/lostcity/LostCityPlugin.java @@ -18,7 +18,7 @@ import core.game.system.task.Pulse; import core.game.world.map.Location; import core.plugin.Plugin; import rs09.game.interaction.InteractionListeners; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the lost city quest. @@ -128,7 +128,7 @@ public final class LostCityPlugin extends OptionHandler { } SHAMUS.setInvisible(false); SHAMUS.getProperties().setTeleportLocation(SHAMUS.getProperties().getSpawnLocation()); - World.getPulser().submit(new Pulse(100, SHAMUS) { + GameWorld.getPulser().submit(new Pulse(100, SHAMUS) { @Override public boolean pulse() { if (SHAMUS.getDialoguePlayer() != null) { diff --git a/Server/src/main/java/core/game/content/quest/members/merlinscrystal/MerlinCrystalPlugin.java b/Server/src/main/java/core/game/content/quest/members/merlinscrystal/MerlinCrystalPlugin.java index 5a5556c90..af194ccbc 100644 --- a/Server/src/main/java/core/game/content/quest/members/merlinscrystal/MerlinCrystalPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/merlinscrystal/MerlinCrystalPlugin.java @@ -23,7 +23,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -87,7 +87,7 @@ public final class MerlinCrystalPlugin extends OptionHandler { final NPC merlin = NPC.create(249, Location.create(2767, 3493, 2)); merlin.init(); player.getDialogueInterpreter().open(merlin.getId(), merlin); - World.getPulser().submit(new Pulse(100, player, merlin) { + GameWorld.getPulser().submit(new Pulse(100, player, merlin) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/quest/members/merlinscrystal/SirMordredNPC.java b/Server/src/main/java/core/game/content/quest/members/merlinscrystal/SirMordredNPC.java index 91c9c4099..d49803fa0 100644 --- a/Server/src/main/java/core/game/content/quest/members/merlinscrystal/SirMordredNPC.java +++ b/Server/src/main/java/core/game/content/quest/members/merlinscrystal/SirMordredNPC.java @@ -6,7 +6,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Graphics; @@ -61,7 +61,7 @@ public class SirMordredNPC extends AbstractNPC { npc.graphics(Graphics.create(86)); npc.moveStep(); npc.face(p); - World.getPulser().submit(new Pulse(100, p, npc) { + GameWorld.getPulser().submit(new Pulse(100, p, npc) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/quest/members/rovingelves/RovingElvesPlugin.java b/Server/src/main/java/core/game/content/quest/members/rovingelves/RovingElvesPlugin.java index a7100d635..c04388c8c 100644 --- a/Server/src/main/java/core/game/content/quest/members/rovingelves/RovingElvesPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/rovingelves/RovingElvesPlugin.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -55,7 +55,7 @@ public final class RovingElvesPlugin extends OptionHandler { } else { player.animate(ANIMATION_DIG); player.getPacketDispatch().sendMessage("You dig a small hole with your spade."); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/quest/members/sheepherder/HerderSheepNPC.java b/Server/src/main/java/core/game/content/quest/members/sheepherder/HerderSheepNPC.java index 1bac2e1f0..ddd2368ab 100644 --- a/Server/src/main/java/core/game/content/quest/members/sheepherder/HerderSheepNPC.java +++ b/Server/src/main/java/core/game/content/quest/members/sheepherder/HerderSheepNPC.java @@ -3,7 +3,7 @@ package core.game.content.quest.members.sheepherder; import core.game.interaction.MovementPulse; import core.game.node.entity.Entity; import core.game.node.entity.npc.NPC; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.path.Pathfinder; @@ -25,7 +25,7 @@ public class HerderSheepNPC extends NPC { if(getLocation().withinDistance(Location.create(2593, 3362, 0),2)){ getProperties().setTeleportLocation(Location.create(2599, 3360, 0)); } - if (ticksTilReturn < World.getTicks()) { + if (ticksTilReturn < GameWorld.getTicks()) { sendChat("Baa"); this.getPulseManager().run(new MovementPulse(this, spawnLocation) { @Override @@ -36,7 +36,7 @@ public class HerderSheepNPC extends NPC { this.removeAttribute("recently-prodded"); } } else { - if(nextWalk < World.getTicks() && !getPulseManager().hasPulseRunning()){ + if(nextWalk < GameWorld.getTicks() && !getPulseManager().hasPulseRunning()){ setNextWalk(); Location to = getMovementDestination(); if (canMove(to)) { @@ -57,7 +57,7 @@ public class HerderSheepNPC extends NPC { @Override public void finalizeDeath(Entity killer) { - this.setRespawnTick(World.getTicks() + 100); + this.setRespawnTick(GameWorld.getTicks() + 100); super.finalizeDeath(killer); } } \ No newline at end of file diff --git a/Server/src/main/java/core/game/content/quest/members/sheepherder/ProdActionHandler.java b/Server/src/main/java/core/game/content/quest/members/sheepherder/ProdActionHandler.java index 33969c413..24e27750e 100644 --- a/Server/src/main/java/core/game/content/quest/members/sheepherder/ProdActionHandler.java +++ b/Server/src/main/java/core/game/content/quest/members/sheepherder/ProdActionHandler.java @@ -6,8 +6,9 @@ import core.game.interaction.Option; import core.game.node.Node; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; +import rs09.game.system.SystemLogger; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -54,7 +55,7 @@ public class ProdActionHandler extends PluginInteraction { n.sendChat("BAAAAA!"); n.moveTo(destination); n.setAttribute("recently-prodded",true); - n.ticksTilReturn = World.getTicks() + 20; + n.ticksTilReturn = GameWorld.getTicks() + 20; return true; } else { p.sendMessage("You can't prod a sheep with your bare hands."); diff --git a/Server/src/main/java/core/game/content/quest/members/sheepherder/SheepPoisonHandler.java b/Server/src/main/java/core/game/content/quest/members/sheepherder/SheepPoisonHandler.java index 2b52547e0..147f16a92 100644 --- a/Server/src/main/java/core/game/content/quest/members/sheepherder/SheepPoisonHandler.java +++ b/Server/src/main/java/core/game/content/quest/members/sheepherder/SheepPoisonHandler.java @@ -6,8 +6,9 @@ import core.game.interaction.NodeUsageEvent; import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.node.item.GroundItemManager; +import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -67,7 +68,7 @@ public class SheepPoisonHandler extends PluginInteraction { @Override public boolean pulse() { p.faceLocation(n.getLocation()); - World.getPulser().submit(deathPulse); + GameWorld.getPulser().submit(deathPulse); return true; } }); diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/AnaDialogue.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/AnaDialogue.java index 8f0b6d5f6..ec03928ef 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/AnaDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/AnaDialogue.java @@ -8,7 +8,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.plugin.Plugin; @@ -194,7 +194,7 @@ public final class AnaDialogue extends DialoguePlugin { player.getInventory().add(TouristTrap.ANNA_BARREL); close(); player.lock(3); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { interpreter.sendDialogues(823, null, "-- You manage to squeeze Ana into the barrel, --", "-- despite her many complaints. --", "I djont fit in dis bawwel... Wet me out!!"); diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/DesertGuardDialogue.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/DesertGuardDialogue.java index 0629f722a..927f2ef5d 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/DesertGuardDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/DesertGuardDialogue.java @@ -8,7 +8,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import rs09.plugin.PluginManager; @@ -293,8 +293,8 @@ public final class DesertGuardDialogue extends DialoguePlugin { @Override public void tick() { - if (lastCheck < World.getTicks()) { - lastCheck = World.getTicks() + RandomFunction.random(50, 150); + if (lastCheck < GameWorld.getTicks()) { + lastCheck = GameWorld.getTicks() + RandomFunction.random(50, 150); if (!inCombat()) { warn(); } @@ -308,16 +308,16 @@ public final class DesertGuardDialogue extends DialoguePlugin { private void warn() { final List players = RegionManager.getLocalPlayers(this); for (final Player player : players) { - if (player.getAttribute("guard-warning", 0) > World.getTicks() || !player.getZoneMonitor().isInZone("mining camp") || player.inCombat() || !player.getLocation().withinDistance(this.getLocation(), 8)) { + if (player.getAttribute("guard-warning", 0) > GameWorld.getTicks() || !player.getZoneMonitor().isInZone("mining camp") || player.inCombat() || !player.getLocation().withinDistance(this.getLocation(), 8)) { continue; } if (TouristTrap.inJail(player)) { continue; } if (!TouristTrap.hasSlaveClothes(player)) { - player.setAttribute("guard-warning", World.getTicks() + 300); + player.setAttribute("guard-warning", GameWorld.getTicks() + 300); player.lock(); - World.getPulser().submit(new Pulse(1, this, player) { + GameWorld.getPulser().submit(new Pulse(1, this, player) { int count; @Override diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MaleSlaveDialogue.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MaleSlaveDialogue.java index ee803b135..3aa5ab409 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MaleSlaveDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MaleSlaveDialogue.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.tools.RandomFunction; @@ -257,7 +257,7 @@ public final class MaleSlaveDialogue extends DialoguePlugin { case 24: player.lock(); interpreter.sendDialogues(getIds()[0], null, true, "Oh oh!"); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MineSlaveNPC.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MineSlaveNPC.java index b323ab04b..e9cbaf1b4 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MineSlaveNPC.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MineSlaveNPC.java @@ -1,7 +1,7 @@ package core.game.content.quest.members.thetouristrap; import core.game.node.entity.npc.AbstractNPC; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.tools.RandomFunction; @@ -35,7 +35,7 @@ public final class MineSlaveNPC extends AbstractNPC { */ public MineSlaveNPC(int id, Location location) { super(id, location); - delay = World.getTicks() + RandomFunction.random(20, 100); + delay = GameWorld.getTicks() + RandomFunction.random(20, 100); } @Override @@ -45,9 +45,9 @@ public final class MineSlaveNPC extends AbstractNPC { @Override public void tick() { - if (delay < World.getTicks()) { + if (delay < GameWorld.getTicks()) { sendChat(CHATS[RandomFunction.random(CHATS.length)]); - delay = World.getTicks() + RandomFunction.random(20, 100); + delay = GameWorld.getTicks() + RandomFunction.random(20, 100); } super.tick(); } diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MiningCampZone.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MiningCampZone.java index ea2347b12..b569aeceb 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MiningCampZone.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MiningCampZone.java @@ -6,7 +6,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -54,7 +54,7 @@ public final class MiningCampZone extends MapZone implements Plugin { case "Equip": case "Wear": final Player player = (Player) e; - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { if (TouristTrap.isJailable(player)) { @@ -84,7 +84,7 @@ public final class MiningCampZone extends MapZone implements Plugin { */ public boolean checkAnna(final Player p) { final Quest quest = p.getQuestRepository().getQuest(TouristTrap.NAME); - if (p.getAttribute("ana-delay", 0) > World.getTicks()) { + if (p.getAttribute("ana-delay", 0) > GameWorld.getTicks()) { return false; } if (quest.getStage(p) > 60 && quest.getStage(p) < 95 && p.getInventory().containsItem(TouristTrap.ANNA_BARREL)) { diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrap.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrap.java index d85590579..6c68c59e2 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrap.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrap.java @@ -7,7 +7,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.ZoneBorders; import core.plugin.Initializable; @@ -198,7 +198,7 @@ public final class TouristTrap extends Quest { public static void jail(final Player player, String dialogue) { player.getDialogueInterpreter().sendDialogues(4999, null, dialogue); player.lock(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrapPlugin.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrapPlugin.java index 4b7063aa1..a87caed01 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrapPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/TouristTrapPlugin.java @@ -26,7 +26,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.build.DynamicRegion; @@ -194,7 +194,7 @@ public final class TouristTrapPlugin extends OptionHandler { if (quest.getStage(player) <= 54 && quest.getStage(player) != 53) { player.getPacketDispatch().sendMessage("The captain spots you before you manage to open the chest..."); player.lock(3); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.getDialogueInterpreter().open(831, RegionManager.getNpc(player, 831)); @@ -210,7 +210,7 @@ public final class TouristTrapPlugin extends OptionHandler { break; case 2690: case 2691: - player.setAttribute("ana-delay", World.getTicks() + 2); + player.setAttribute("ana-delay", GameWorld.getTicks() + 2); player.getProperties().setTeleportLocation(Location.create(3301, 3035, 0)); break; case 2676: @@ -219,7 +219,7 @@ public final class TouristTrapPlugin extends OptionHandler { player.getDialogueInterpreter().sendDialogues(4997, null, "Watch it! Only slaves can travel into the mine."); break; } - player.setAttribute("ana-delay", World.getTicks() + 2); + player.setAttribute("ana-delay", GameWorld.getTicks() + 2); player.getProperties().setTeleportLocation(Location.create(3278, 9427, 0)); player.getDialogueInterpreter().sendDialogue("The huge doors open into a dark, dank and smelly tunnel. The", "associated smells of a hundred sweaty miners greets your nostrils.", "And your ears ring with the 'CLANG CLANG CLANG' as metal hits", "rock."); break; @@ -228,7 +228,7 @@ public final class TouristTrapPlugin extends OptionHandler { if (quest.getStage(player) > 60 && quest.getStage(player) < 98 && player.getInventory().containsItem(TouristTrap.ANNA_BARREL)) { player.lock(); player.getDialogueInterpreter().sendDialogues(4999, null, true, "Would you like me to take that heavy barrel", "for you?"); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { int counter; @Override @@ -425,7 +425,7 @@ public final class TouristTrapPlugin extends OptionHandler { break; case "bend": player.animate(Animation.create(5037)); - World.getPulser().submit(new Pulse(5, player) { + GameWorld.getPulser().submit(new Pulse(5, player) { @Override public boolean pulse() { player.getPacketDispatch().sendMessage("You bend the bars back."); @@ -441,7 +441,7 @@ public final class TouristTrapPlugin extends OptionHandler { case "climb": player.getPacketDispatch().sendMessage("You scrape your hands and knees as you climb up."); AgilityHandler.forceWalk(player, 0, player.getLocation(), Location.create(3279, 3037, 0), Animation.create(5041), 10, 0, null); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getAnimator().reset(); @@ -455,7 +455,7 @@ public final class TouristTrapPlugin extends OptionHandler { return true; } player.animate(Animation.create(5039)); - World.getPulser().submit(new Pulse(6, player) { + GameWorld.getPulser().submit(new Pulse(6, player) { @Override public boolean pulse() { player.getAnimator().reset(); @@ -471,7 +471,7 @@ public final class TouristTrapPlugin extends OptionHandler { return true; } AgilityHandler.forceWalk(player, 0, player.getLocation(), Location.create(3270, 3039, 0), Animation.create(5040), 20, 0, null); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getAnimator().reset(); @@ -697,7 +697,7 @@ public final class TouristTrapPlugin extends OptionHandler { if (quest.getStage(player) == 72) { player.lock(4); player.animate(Animation.create(5050)); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getInventory().remove(event.getUsedItem()); @@ -717,7 +717,7 @@ public final class TouristTrapPlugin extends OptionHandler { return false; } player.getDialogueInterpreter().sendDialogue("You carefully place Ana in the barrel into the mine", "cart. Soon the cart moves out of sight and then it", "returns."); - player.setAttribute("ana-delay", World.getTicks() + 100000000); + player.setAttribute("ana-delay", GameWorld.getTicks() + 100000000); ActivityManager.start(player, "ana cart", false); return true; } @@ -755,9 +755,9 @@ public final class TouristTrapPlugin extends OptionHandler { @Override public void open() { super.open(); - player.setAttribute("ana-delay", World.getTicks() + 100000000); + player.setAttribute("ana-delay", GameWorld.getTicks() + 100000000); player.faceLocation(base.transform(54, 22, 0)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; NPC cart; @@ -882,7 +882,7 @@ public final class TouristTrapPlugin extends OptionHandler { case 2: player.lock(); player.animate(ClimbActionHandler.CLIMB_UP); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -1024,7 +1024,7 @@ public final class TouristTrapPlugin extends OptionHandler { player.getImpactHandler().manualHit(player, 2, HitsplatType.NORMAL); player.getPacketDispatch().sendMessages("You fail to fit yourself into the cart in time before it starts its journey.", "You bang your head on the cart as you try to jump in."); } else { - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.animate(JUMP_ANIMATION); @@ -1088,7 +1088,7 @@ public final class TouristTrapPlugin extends OptionHandler { Location loc = base.transform(l.getLocalX(), l.getLocalY(), 0); player.getWalkingQueue().addPath(loc.getX(), loc.getY(), true); } - World.getPulser().submit(new Pulse(22, player) { + GameWorld.getPulser().submit(new Pulse(22, player) { @Override public boolean pulse() { player.setAttribute("real-end", index == 0 ? Location.create(3319, 9431, 0) : Location.create(3303, 9416, 0)); @@ -1191,7 +1191,7 @@ public final class TouristTrapPlugin extends OptionHandler { player.getPacketDispatch().sendMessage("You try to operate the winch."); player.faceLocation(base.transform(15, 9, 0)); player.animate(Animation.create(5054)); - World.getPulser().submit(new Pulse(AnimationDefinition.forId(5054).getDurationTicks(), player) { + GameWorld.getPulser().submit(new Pulse(AnimationDefinition.forId(5054).getDurationTicks(), player) { @Override public boolean pulse() { TouristTrap.addConfig(player, 2048 + (1 << 4)); @@ -1348,7 +1348,7 @@ public final class TouristTrapPlugin extends OptionHandler { end(); player.getInventory().add(TouristTrap.BARREL, player); SceneryBuilder.remove(barrel); - World.getPulser().submit(new Pulse(40) { + GameWorld.getPulser().submit(new Pulse(40) { @Override public boolean pulse() { SceneryBuilder.add(barrel); diff --git a/Server/src/main/java/core/game/content/quest/members/waterfallquest/HadleyDialogue.java b/Server/src/main/java/core/game/content/quest/members/waterfallquest/HadleyDialogue.java index 44ae4ace9..d3a51e5e3 100644 --- a/Server/src/main/java/core/game/content/quest/members/waterfallquest/HadleyDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/waterfallquest/HadleyDialogue.java @@ -4,7 +4,7 @@ import core.game.content.dialogue.DialogueInterpreter; import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.FacialExpression; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles Almera's Dialogue for the Waterfall Quest. @@ -38,7 +38,7 @@ public class HadleyDialogue extends DialoguePlugin { interpreter.sendDialogues(302, FacialExpression.HALF_GUILTY, "I hope you're enjoying your stay, there should be lots", "of useful information in that book: places to go, people to", "see."); stage = 100; } else { - interpreter.sendDialogues(302, FacialExpression.HALF_GUILTY, "Are you on holiday? If so you've come to the right", "place. I'm Hadley the tourist guide, anything you need", "to know just ask me. We have some of the most unspoilt", "wildlife and scenery in " + World.getSettings().getName() + "."); + interpreter.sendDialogues(302, FacialExpression.HALF_GUILTY, "Are you on holiday? If so you've come to the right", "place. I'm Hadley the tourist guide, anything you need", "to know just ask me. We have some of the most unspoilt", "wildlife and scenery in " + GameWorld.getSettings().getName() + "."); stage = 1; } break; diff --git a/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowCutscene.java b/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowCutscene.java index a2acc57da..e26b29980 100644 --- a/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowCutscene.java +++ b/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowCutscene.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.build.DynamicRegion; @@ -94,7 +94,7 @@ public class WLBelowCutscene extends CutscenePlugin { king.sendChat("What's going on?", 6); king.sendChat("I...must...kill..." + player.getUsername() + "!!", 9); player.sendChat("Uh oh! King Roald looks evil!", 13); - World.getPulser().submit(new Pulse(13) { + GameWorld.getPulser().submit(new Pulse(13) { @Override public boolean pulse() { reset(); @@ -133,7 +133,7 @@ public class WLBelowCutscene extends CutscenePlugin { player.sendMessage("Surok looks like he's trying to teleport away!"); zaff.sendChat("Stop!!", 3); surok.sendChat("Nooooooooooooo!", 6); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { @@ -144,7 +144,7 @@ public class WLBelowCutscene extends CutscenePlugin { } }); - World.getPulser().submit(new Pulse(9, player) { + GameWorld.getPulser().submit(new Pulse(9, player) { @Override public boolean pulse() { @@ -210,7 +210,7 @@ public class WLBelowCutscene extends CutscenePlugin { zaff.graphics(Graphics.create(108), 3); king.graphics(Graphics.create(110), 8); king.sendChat("Wh...!", 7); - World.getPulser().submit(new Pulse(9, player) { + GameWorld.getPulser().submit(new Pulse(9, player) { @Override public boolean pulse() { @@ -235,7 +235,7 @@ public class WLBelowCutscene extends CutscenePlugin { * @param ticks the ticks. */ public void sendCamera(final int x1, final int y1, final int x2, final int y2, final int height, final int speed, int ticks) { - World.getPulser().submit(new Pulse(ticks, player) { + GameWorld.getPulser().submit(new Pulse(ticks, player) { @Override public boolean pulse() { @@ -261,7 +261,7 @@ public class WLBelowCutscene extends CutscenePlugin { * @param ticks the ticks. */ public void reset(int ticks) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowPlugin.java b/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowPlugin.java index 3852a18d0..664683215 100644 --- a/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowPlugin.java +++ b/Server/src/main/java/core/game/content/quest/members/whatliesbelow/WLBelowPlugin.java @@ -15,7 +15,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -97,7 +97,7 @@ public class WLBelowPlugin extends OptionHandler { } player.lock(); player.animate(tool.getAnimation()); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/content/quest/members/witchshouse/MouseNPC.java b/Server/src/main/java/core/game/content/quest/members/witchshouse/MouseNPC.java index 8d175b96b..3bd8fdee2 100644 --- a/Server/src/main/java/core/game/content/quest/members/witchshouse/MouseNPC.java +++ b/Server/src/main/java/core/game/content/quest/members/witchshouse/MouseNPC.java @@ -2,7 +2,7 @@ package core.game.content.quest.members.witchshouse; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; /** @@ -43,7 +43,7 @@ public class MouseNPC extends AbstractNPC { */ private MouseNPC(int id, Location location) { super(id, location); - this.endTime = (int) (World.getTicks() + (4 / 0.6)); + this.endTime = (int) (GameWorld.getTicks() + (4 / 0.6)); } @Override @@ -57,7 +57,7 @@ public class MouseNPC extends AbstractNPC { if (player.getAttribute("mouse_out") == null) { clear(); } - if (World.getTicks() > endTime) { + if (GameWorld.getTicks() > endTime) { clear(); } if (!player.isActive() || player.getLocation().getDistance(getLocation()) > 8) { diff --git a/Server/src/main/java/core/game/content/quest/members/witchshouse/NoraTHaggNPC.java b/Server/src/main/java/core/game/content/quest/members/witchshouse/NoraTHaggNPC.java index 033d5bfb6..b9395c572 100644 --- a/Server/src/main/java/core/game/content/quest/members/witchshouse/NoraTHaggNPC.java +++ b/Server/src/main/java/core/game/content/quest/members/witchshouse/NoraTHaggNPC.java @@ -6,7 +6,7 @@ import core.game.node.entity.combat.DeathTask; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -90,7 +90,7 @@ public class NoraTHaggNPC extends AbstractNPC { private void sendTeleport(final Player player) { player.lock(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int delay = 0; @Override diff --git a/Server/src/main/java/core/game/content/quest/members/witchshouse/WitchsExperimentNPC.java b/Server/src/main/java/core/game/content/quest/members/witchshouse/WitchsExperimentNPC.java index 37b7cf491..e2c6de9cf 100644 --- a/Server/src/main/java/core/game/content/quest/members/witchshouse/WitchsExperimentNPC.java +++ b/Server/src/main/java/core/game/content/quest/members/witchshouse/WitchsExperimentNPC.java @@ -5,7 +5,7 @@ import core.game.node.entity.combat.CombatStyle; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.plugin.Initializable; @@ -119,7 +119,7 @@ public class WitchsExperimentNPC extends AbstractNPC { npc.getPulseManager().clear(); npc.getWalkingQueue().reset(); player.setAttribute("/save:witchs_house:experiment_id",this.id); - World.getPulser().submit(new Pulse(1, npc, player) { + GameWorld.getPulser().submit(new Pulse(1, npc, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlDialogue.java b/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlDialogue.java index b7aa9b61f..891d7e2e8 100644 --- a/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlDialogue.java +++ b/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlDialogue.java @@ -3,7 +3,7 @@ package core.game.content.quest.miniquest.barcrawl; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.content.dialogue.DialogueInterpreter; import core.game.content.dialogue.DialoguePlugin; @@ -75,7 +75,7 @@ public final class BarcrawlDialogue extends DialoguePlugin { player.getInventory().remove(type.getCoins()); player.getBarcrawlManager().complete(type.ordinal()); player.lock(6); - World.getPulser().submit(new Pulse(6, player) { + GameWorld.getPulser().submit(new Pulse(6, player) { @Override public boolean pulse() { type.message(player, false); diff --git a/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlType.java b/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlType.java index 358d831e7..8573d9b54 100644 --- a/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlType.java +++ b/Server/src/main/java/core/game/content/quest/miniquest/barcrawl/BarcrawlType.java @@ -9,7 +9,7 @@ import core.net.packet.PacketRepository; import core.net.packet.context.CameraContext; import core.net.packet.out.CameraViewPacket; import core.tools.StringUtils; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * A barcrawl type npc. @@ -162,7 +162,7 @@ public enum BarcrawlType { player.getPacketDispatch().sendMessages("The barmaid giggles.", "The barmaid signs your card."); } else { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraContext.CameraType.SHAKE, 4, 4, 1, 4, 4)); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraContext.CameraType.RESET, 4, 4, 1, 4, 4)); diff --git a/Server/src/main/java/core/game/content/quest/tutorials/learningtheropes/LTRDragonFightCutscene.java b/Server/src/main/java/core/game/content/quest/tutorials/learningtheropes/LTRDragonFightCutscene.java index dd7507666..2eb5f557a 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/learningtheropes/LTRDragonFightCutscene.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/learningtheropes/LTRDragonFightCutscene.java @@ -9,7 +9,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.state.EntityState; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; @@ -96,7 +96,7 @@ public class LTRDragonFightCutscene extends CutscenePlugin { public void open() { ZoneBuilder.configure(CellarMapZone.get()); setNpcs(); - World.getPulser().submit(fightPulse); + GameWorld.getPulser().submit(fightPulse); player.lock(); player.getLocks().lockMovement(1000000); camera(31, 12, -45, 0, 300, 95); @@ -310,7 +310,7 @@ public class LTRDragonFightCutscene extends CutscenePlugin { * Method used to clear all the npcs. */ private void clearNpcs() { - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { for (NPC n : region.getPlanes()[0].getNpcs()) { diff --git a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/CharacterDesign.java b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/CharacterDesign.java index ef13303ed..0220dd4f0 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/CharacterDesign.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/CharacterDesign.java @@ -7,8 +7,9 @@ import core.game.node.entity.player.link.appearance.Gender; import core.game.node.entity.player.link.music.MusicEntry; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; -import core.net.ms.MSPacketRepository; +import rs09.game.world.GameWorld; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.tools.RandomFunction; /** @@ -326,15 +327,17 @@ public final class CharacterDesign { if (player.getIronmanManager().isIronman() && player.getSettings().isAcceptAid()) { player.getSettings().toggleAcceptAid(); } - MSPacketRepository.sendInfoUpdate(player); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendInfoUpdate(player); + } //This overwrites the stuck dialogue after teleporting to Lumbridge for some reason //Dialogue from 2007 or thereabouts //Original is five lines, but if the same is done here it will break. Need to find another way of showing all this information. //player.getDialogueInterpreter().sendDialogue("Welcome to Lumbridge! To get more help, simply click on the", "Lumbridge Guide or one of the Tutors - these can be found by looking", "for the question mark icon on your mini-map. If you find you are", "lost at any time, look for a signpost or use the Lumbridge Home Port Spell."); - player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Welcome to " + World.getSettings().getName() + "!","Hans at the castle in Lumbridge can","enable ironman mode, modify xp rate settings,","toggle random events, and more!","Use the ladder to leave."); + player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Welcome to " + GameWorld.getSettings().getName() + "!","Hans at the castle in Lumbridge can","enable ironman mode, modify xp rate settings,","toggle random events, and more!","Use the ladder to leave."); //Appending the welcome message and some other stuff - player.getPacketDispatch().sendMessage("Welcome to " + World.getSettings().getName() + "."); + player.getPacketDispatch().sendMessage("Welcome to " + GameWorld.getSettings().getName() + "."); return true; } }); diff --git a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/FinancialAdvisorDialogue.java b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/FinancialAdvisorDialogue.java index 6e690132c..598329829 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/FinancialAdvisorDialogue.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/FinancialAdvisorDialogue.java @@ -3,7 +3,7 @@ package core.game.content.quest.tutorials.tutorialisland; import core.game.content.dialogue.DialoguePlugin; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; /** @@ -73,7 +73,7 @@ public final class FinancialAdvisorDialogue extends DialoguePlugin { stage = 5; break; case 5: - interpreter.sendDialogues(npc, null, "Now, the next way to earn money quickly is by quests", "Many people on " + World.getSettings().getName() + " have things they need", "doing, which they will reward you for."); + interpreter.sendDialogues(npc, null, "Now, the next way to earn money quickly is by quests", "Many people on " + GameWorld.getSettings().getName() + " have things they need", "doing, which they will reward you for."); stage = 6; break; case 6: diff --git a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/RSGuideDialogue.java b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/RSGuideDialogue.java index f40328ea3..f4d67ffa1 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/RSGuideDialogue.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/RSGuideDialogue.java @@ -5,7 +5,7 @@ import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.FacialExpression; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; /** @@ -52,9 +52,9 @@ public class RSGuideDialogue extends DialoguePlugin { } } else { if(player.getSkills().getTotalLevel() < 300){ - interpreter.sendDialogues(npc, null, "Greetings, "+player.getUsername()+". Welcome to "+ World.getSettings().getName()+".", "The flashing icon above my head will disappear once", "you've reached a total level of three hundred."); + interpreter.sendDialogues(npc, null, "Greetings, "+player.getUsername()+". Welcome to "+GameWorld.getSettings().getName()+".", "The flashing icon above my head will disappear once", "you've reached a total level of three hundred."); } else { - interpreter.sendDialogues(npc, null, "Greetings, "+player.getUsername()+". Welcome to "+ World.getSettings().getName()+"."); + interpreter.sendDialogues(npc, null, "Greetings, "+player.getUsername()+". Welcome to "+GameWorld.getSettings().getName()+"."); } stage = 10; } @@ -117,7 +117,7 @@ public class RSGuideDialogue extends DialoguePlugin { } else { switch(stage){ case 10: - interpreter.sendDialogues(npc, null, "I am the "+ World.getSettings().getName()+" guide. I offer free and helpful assistance", "for newcomers. What would you like to ask about?"); + interpreter.sendDialogues(npc, null, "I am the "+GameWorld.getSettings().getName()+" guide. I offer free and helpful assistance", "for newcomers. What would you like to ask about?"); stage++; break; case 11: @@ -131,17 +131,17 @@ public class RSGuideDialogue extends DialoguePlugin { stage = 13; break; case 2: - interpreter.sendDialogues(player, null, "I'd like to know how to get around on "+ World.getSettings().getName()+"."); + interpreter.sendDialogues(player, null, "I'd like to know how to get around on "+GameWorld.getSettings().getName()+"."); stage = 18; break; case 3: - interpreter.sendDialogues(player, null, "I'd like to know about all the content in "+ World.getSettings().getName()+"."); + interpreter.sendDialogues(player, null, "I'd like to know about all the content in "+GameWorld.getSettings().getName()+"."); stage = 25; break; } break; case 13: - interpreter.sendDialogues(npc, null, "That is one of the most commonly asked questions.", "First of all, there are many different ways to make large", "amounts of coins in "+ World.getSettings().getName()+". There's hundreds", "of hours of emulated content awaiting you."); + interpreter.sendDialogues(npc, null, "That is one of the most commonly asked questions.", "First of all, there are many different ways to make large", "amounts of coins in "+GameWorld.getSettings().getName()+". There's hundreds", "of hours of emulated content awaiting you."); stage = 14; break; case 14: @@ -157,11 +157,11 @@ public class RSGuideDialogue extends DialoguePlugin { stage = 17; break; case 17: - interpreter.sendDialogues(npc, null, World.getSettings().getName()+" is an economy-driven server. All gathering skills", "are highly profitable and sought after. Herblore and", "Farming, for example, are guaranteed to make you", "profit."); + interpreter.sendDialogues(npc, null, GameWorld.getSettings().getName()+" is an economy-driven server. All gathering skills", "are highly profitable and sought after. Herblore and", "Farming, for example, are guaranteed to make you", "profit."); stage = 11; break; case 18: - interpreter.sendDialogues(npc, null, "A good question indeed. Traveling is the key to"," experiencing all the game content that "+ World.getSettings().getName()+" has to offer."); + interpreter.sendDialogues(npc, null, "A good question indeed. Traveling is the key to"," experiencing all the game content that "+GameWorld.getSettings().getName()+" has to offer."); stage = 19; break; case 19: @@ -181,11 +181,11 @@ public class RSGuideDialogue extends DialoguePlugin { stage = 23; break; case 23: - interpreter.sendDialogues(npc, null, "We also have the convenient Gnome glider system.", "The friendly Gnomes of "+ World.getSettings().getName()+" offer their services","completely free of charge."); + interpreter.sendDialogues(npc, null, "We also have the convenient Gnome glider system.", "The friendly Gnomes of "+GameWorld.getSettings().getName()+" offer their services","completely free of charge."); stage = 24; break; case 24: - interpreter.sendDialogues(npc, null, "Finally, we have the green teleporter located in the", "Grand Exchange and Fairy rings.", "All of these teleportation methods should assist you", "in traveling the wide-open world of "+ World.getSettings().getName()+"."); + interpreter.sendDialogues(npc, null, "Finally, we have the green teleporter located in the", "Grand Exchange and Fairy rings.", "All of these teleportation methods should assist you", "in traveling the wide-open world of "+GameWorld.getSettings().getName()+"."); stage = 50; break; case 25: diff --git a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialCompletionDialogue.java b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialCompletionDialogue.java index 3d294e018..e090ad81c 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialCompletionDialogue.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialCompletionDialogue.java @@ -8,9 +8,10 @@ import core.game.node.entity.player.link.HintIconManager; import core.game.node.entity.player.link.IronmanMode; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.plugin.Initializable; /** @@ -272,14 +273,14 @@ public class TutorialCompletionDialogue extends DialoguePlugin { stage++; break; case 1203: - interpreter.sendDialogues(npc, FacialExpression.NEUTRAL, "If all else fails, visit the "+ World.getSettings().getName()+ " website for a whole","chestload of information on quests, skills, and minigames","as well as a very good starter's guide."); + interpreter.sendDialogues(npc, FacialExpression.NEUTRAL, "If all else fails, visit the "+ GameWorld.getSettings().getName()+ " website for a whole","chestload of information on quests, skills, and minigames","as well as a very good starter's guide."); stage++; break; //Final words, if using Skippy it should go straight to this //Could be removed to try and keep the 'nostalgic' feeling of Tutorial Island. case 1204: - npc("Keep in mind: our server has more content than any other", "server ever released. There's hundreds of hours of", "exciting and flawless gameplay awaiting you, "+player.getUsername()+".", "Enjoy your time playing "+ World.getSettings().getName()+"!"); + npc("Keep in mind: our server has more content than any other", "server ever released. There's hundreds of hours of", "exciting and flawless gameplay awaiting you, "+player.getUsername()+".", "Enjoy your time playing "+GameWorld.getSettings().getName()+"!"); stage++; break; @@ -309,7 +310,7 @@ public class TutorialCompletionDialogue extends DialoguePlugin { interpreter.sendDialogue("Welcome to Lumbridge! To get more help, simply click on the","Lumbridge Guide or one of the Tutors - these can be found by looking","for the question mark icon on your mini-map. If you find you are","lost at any time, look for a signpost or use the Lumbridge Home Port Spell."); //Appending the welcome message and some other stuff - player.getPacketDispatch().sendMessage("Welcome to " + World.getSettings().getName() + "."); + player.getPacketDispatch().sendMessage("Welcome to " + GameWorld.getSettings().getName() + "."); @@ -318,7 +319,9 @@ public class TutorialCompletionDialogue extends DialoguePlugin { if (player.getIronmanManager().isIronman() && player.getSettings().isAcceptAid()) { player.getSettings().toggleAcceptAid(); } - MSPacketRepository.sendInfoUpdate(player); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendInfoUpdate(player); + } int slot = player.getAttribute("tut-island:hi_slot", -1); if (slot < 0 || slot >= HintIconManager.MAXIMUM_SIZE) { break; diff --git a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialSession.java b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialSession.java index c20bffe68..58267a6a0 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialSession.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialSession.java @@ -2,7 +2,7 @@ package core.game.content.quest.tutorials.tutorialisland; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.PacketRepository; import core.net.packet.context.InterfaceConfigContext; import core.net.packet.out.InterfaceConfig; @@ -160,7 +160,7 @@ public final class TutorialSession { @Override public boolean pulse() { - if (delay < World.getTicks()) { + if (delay < GameWorld.getTicks()) { show(); } return false; @@ -170,7 +170,7 @@ public final class TutorialSession { * Method used to reset the delay. */ public void reset() { - delay = World.getTicks() + 20000; + delay = GameWorld.getTicks() + 20000; } /** diff --git a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialStage.java b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialStage.java index ab5e72559..3fdf4f662 100644 --- a/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialStage.java +++ b/Server/src/main/java/core/game/content/quest/tutorials/tutorialisland/TutorialStage.java @@ -7,7 +7,7 @@ import core.game.node.entity.player.link.HintIconManager; import core.game.node.scenery.Scenery; import rs09.game.system.SystemLogger; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import rs09.game.world.repository.Repository; @@ -28,7 +28,7 @@ public enum TutorialStage { // player.getProperties().setTeleportLocation(Location.create(3094, 3107, 0)); player.getProperties().setTeleportLocation(Location.create(2524, 5002, 0)); // Since tutorial is disabled... player.getInterfaceManager().hideTabs(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { CharacterDesign.open(player); @@ -59,7 +59,7 @@ public enum TutorialStage { player.getConfigManager().set(1021, 0); } player.setAttribute("tut-island:hi_slot", HintIconManager.registerHintIcon(player, Repository.findNPC(945))); - Component.setUnclosable(player, player.getDialogueInterpreter().sendScrollMessageWithBlueTitle("Player controls", "On the side panel you can now see a variety of options from", "changing the brightness of the screen and the volume of", "music, to selecting whether your player should accept help", "from other players. Don't worry about these too much for now,", "they will become clearer as you explore the game. Talk to the", World.getSettings().getName() + " Guide to continue.")); + Component.setUnclosable(player, player.getDialogueInterpreter().sendScrollMessageWithBlueTitle("Player controls", "On the side panel you can now see a variety of options from", "changing the brightness of the screen and the volume of", "music, to selecting whether your player should accept help", "from other players. Don't worry about these too much for now,", "they will become clearer as you explore the game. Talk to the", GameWorld.getSettings().getName() + " Guide to continue.")); } }, STAGE_3(3) { @@ -231,7 +231,7 @@ public enum TutorialStage { player.getConfigManager().set(406, 3); } player.setAttribute("tut-island:hi_slot", HintIconManager.registerHintIcon(player, Location.create(3089, 3091, 0), 1, -1, player.getHintIconManager().freeSlot(), 75, 4)); - Component.setUnclosable(player, player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Well done, you've just cooked your first " + World.getSettings().getName() + " meal.", "If you'd like a recap on anything you've learnt so far, speak to", "the Survival Expert. You can now move on to the next", "instructor. Click on the gate shown and follow the path.", "Remember, you can move the camera with the arrow keys.")); + Component.setUnclosable(player, player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Well done, you've just cooked your first " + GameWorld.getSettings().getName() + " meal.", "If you'd like a recap on anything you've learnt so far, speak to", "the Survival Expert. You can now move on to the next", "instructor. Click on the gate shown and follow the path.", "Remember, you can move the camera with the arrow keys.")); } }, STAGE_17(17) { @@ -320,7 +320,7 @@ public enum TutorialStage { player.getInterfaceManager().openTab(new Component(464)); } player.getWalkingQueue().reset(); - player.getLocks().lockMovement(World.getTicks() + 100000); + player.getLocks().lockMovement(GameWorld.getTicks() + 100000); player.getConfigManager().set(406, 6); player.getConfigManager().set(1021, 13); Component.setUnclosable(player, player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Emotes", "Now how about showing some feelings? You will see a flashing icon in", "the shape of a person. Click on that to acces your emotes.", "", "")); @@ -739,7 +739,7 @@ public enum TutorialStage { } player.getConfigManager().set(406, 14); player.setAttribute("tut-island:hi_slot", HintIconManager.registerHintIcon(player, RegionManager.getObject(Location.create(3122, 3124, 0)))); - Component.setUnclosable(player, player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Banking.", "Follow the path and you will come to the front of a building.", "This is the 'Bank of " + World.getSettings().getName() + "' where you can store all your", "most valued items. To open your bank box just right click on an", "open booth indicated and select use.")); + Component.setUnclosable(player, player.getDialogueInterpreter().sendPlaneMessageWithBlueTitle("Banking.", "Follow the path and you will come to the front of a building.", "This is the 'Bank of " + GameWorld.getSettings().getName() + "' where you can store all your", "most valued items. To open your bank box just right click on an", "open booth indicated and select use.")); } }, STAGE_57(57) { diff --git a/Server/src/main/java/core/game/content/ttrail/ClueLevel.java b/Server/src/main/java/core/game/content/ttrail/ClueLevel.java index cfc4eb7f7..85a8a76b9 100644 --- a/Server/src/main/java/core/game/content/ttrail/ClueLevel.java +++ b/Server/src/main/java/core/game/content/ttrail/ClueLevel.java @@ -9,7 +9,7 @@ import core.game.node.item.ChanceItem; import core.game.node.item.Item; import core.game.node.item.WeightedChanceItem; import org.rs09.consts.Items; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.tools.RandomFunction; import java.text.NumberFormat; @@ -496,7 +496,7 @@ public enum ClueLevel { return; } } - if (player.getTreasureTrailManager().isCompleted() || World.getSettings().isDevMode()) { + if (player.getTreasureTrailManager().isCompleted() || GameWorld.getSettings().isDevMode()) { final List rewards = getLoot(player); player.getInterfaceManager().open(new Component(364).setCloseEvent(new CloseEvent() { private boolean given; diff --git a/Server/src/main/java/core/game/content/zone/ChaosTunnelZone.java b/Server/src/main/java/core/game/content/zone/ChaosTunnelZone.java index 4bb6775ac..db69d4241 100644 --- a/Server/src/main/java/core/game/content/zone/ChaosTunnelZone.java +++ b/Server/src/main/java/core/game/content/zone/ChaosTunnelZone.java @@ -15,7 +15,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import org.json.simple.JSONObject; import rs09.ServerStore; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -263,7 +263,7 @@ public final class ChaosTunnelZone extends MapZone implements Plugin { * @param player The player. */ private void commenceBorkBattle(Player player) { - if (ServerStore.getBoolean(getStoreFile(), player.getUsername().toLowerCase()) && World.getSettings().isHosted()) { + if (ServerStore.getBoolean(getStoreFile(), player.getUsername().toLowerCase()) && GameWorld.getSettings().isHosted()) { player.getPacketDispatch().sendMessage("The portal's magic is too weak to teleport you right now."); return; } @@ -287,7 +287,7 @@ public final class ChaosTunnelZone extends MapZone implements Plugin { * @return {@code True} if so. */ private boolean isStained(Scenery object) { - return getStainedTime(object) > World.getTicks(); + return getStainedTime(object) > GameWorld.getTicks(); } /** @@ -295,7 +295,7 @@ public final class ChaosTunnelZone extends MapZone implements Plugin { * @param object the object. */ private void setStainedTime(Scenery object) { - object.getAttributes().setAttribute("stained", (int) World.getTicks() + RandomFunction.random(50, 150)); + object.getAttributes().setAttribute("stained", (int) GameWorld.getTicks() + RandomFunction.random(50, 150)); } /** diff --git a/Server/src/main/java/core/game/content/zone/DesertZone.java b/Server/src/main/java/core/game/content/zone/DesertZone.java index 04f236cc3..6e0f6b1de 100644 --- a/Server/src/main/java/core/game/content/zone/DesertZone.java +++ b/Server/src/main/java/core/game/content/zone/DesertZone.java @@ -10,7 +10,7 @@ import core.game.node.entity.combat.ImpactHandler.HitsplatType; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBuilder; @@ -58,7 +58,7 @@ public final class DesertZone extends MapZone implements Plugin { if (player.getInterfaceManager().isOpened() || player.getInterfaceManager().hasChatbox() || player.getLocks().isMovementLocked()) { continue; } - if (player.getAttribute("desert-delay", -1) < World.getTicks()) { + if (player.getAttribute("desert-delay", -1) < GameWorld.getTicks()) { effect(player); } } @@ -71,7 +71,7 @@ public final class DesertZone extends MapZone implements Plugin { * @param p the Player. */ private static void effect(Player p) { - p.setAttribute("desert-delay", World.getTicks() + getDelay(p)); + p.setAttribute("desert-delay", GameWorld.getTicks() + getDelay(p)); evaporate(p); if (drink(p)) { return; @@ -181,12 +181,12 @@ public final class DesertZone extends MapZone implements Plugin { if (TutorialSession.getExtension(p).getStage() < TutorialSession.MAX_STAGE) { return true; } - p.setAttribute("desert-delay", World.getTicks() + getDelay(p)); + p.setAttribute("desert-delay", GameWorld.getTicks() + getDelay(p)); PLAYERS.add(p); if (!pulse.isRunning()) { pulse.restart(); pulse.start(); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } } return true; diff --git a/Server/src/main/java/core/game/content/zone/IcePathZone.java b/Server/src/main/java/core/game/content/zone/IcePathZone.java index 2012716a7..3d8e1ad20 100644 --- a/Server/src/main/java/core/game/content/zone/IcePathZone.java +++ b/Server/src/main/java/core/game/content/zone/IcePathZone.java @@ -5,7 +5,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.combat.ImpactHandler.HitsplatType; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; import core.game.world.map.zone.ZoneBuilder; @@ -60,7 +60,7 @@ public final class IcePathZone extends MapZone implements Plugin { } }; player.setAttribute("ice_path_pulse", pulse); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } return true; } diff --git a/Server/src/main/java/core/game/content/zone/WildernessAreaZone.java b/Server/src/main/java/core/game/content/zone/WildernessAreaZone.java index 86fca47a0..118076c52 100644 --- a/Server/src/main/java/core/game/content/zone/WildernessAreaZone.java +++ b/Server/src/main/java/core/game/content/zone/WildernessAreaZone.java @@ -20,7 +20,7 @@ import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -233,7 +233,7 @@ public class WildernessAreaZone extends MapZone implements Plugin { return false; } node.transform(8667); - node.setAttribute("reward-tick", World.getTicks() + resource.getRespawnDuration()); + node.setAttribute("reward-tick", GameWorld.getTicks() + resource.getRespawnDuration()); final Item item = new Item(resource.getReward()); player.getInventory().add(item); player.getSkills().addExperience(resource.getSkillId(), resource.getExperience(), true); @@ -306,13 +306,13 @@ public class WildernessAreaZone extends MapZone implements Plugin { if (isAggressive()) { setAggressive(false); } - if (respawn != -1 && respawn < World.getTicks() && getId() > 8664) { + if (respawn != -1 && respawn < GameWorld.getTicks() && getId() > 8664) { transform(8664); unlock(); } if (getId() == 8667) { int rewardTick = getAttribute("reward-tick", -1); - if (rewardTick != -1 && rewardTick < World.getTicks()) { + if (rewardTick != -1 && rewardTick < GameWorld.getTicks()) { transform(8666); } } @@ -320,7 +320,7 @@ public class WildernessAreaZone extends MapZone implements Plugin { @Override public void finalizeDeath(Entity killer) { - respawn = World.getTicks() + 500; + respawn = GameWorld.getTicks() + 500; fullRestore(); getProperties().setTeleportLocation(getLocation()); setRespawnTick(0); diff --git a/Server/src/main/java/core/game/content/zone/YanilleAgilityDungeon.java b/Server/src/main/java/core/game/content/zone/YanilleAgilityDungeon.java index fe9624089..68efb361a 100644 --- a/Server/src/main/java/core/game/content/zone/YanilleAgilityDungeon.java +++ b/Server/src/main/java/core/game/content/zone/YanilleAgilityDungeon.java @@ -16,7 +16,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; @@ -132,7 +132,7 @@ public class YanilleAgilityDungeon extends MapZone implements Plugin { double xp = 0.0; if (AgilityHandler.hasFailed(player, 40, 0.01)) { player.lock(3); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { AgilityHandler.fail(player, 1, new Location(2572, 9570, 0), Animation.create(761 - diff), RandomFunction.random(1, 3), "You lost your balance!"); diff --git a/Server/src/main/java/core/game/content/zone/rellekka/JarvaldDialogue.java b/Server/src/main/java/core/game/content/zone/rellekka/JarvaldDialogue.java index d6166ce8a..332cb603a 100644 --- a/Server/src/main/java/core/game/content/zone/rellekka/JarvaldDialogue.java +++ b/Server/src/main/java/core/game/content/zone/rellekka/JarvaldDialogue.java @@ -8,7 +8,7 @@ import core.game.node.item.Item; import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; /** @@ -200,7 +200,7 @@ public final class JarvaldDialogue extends DialoguePlugin { player.lock(); player.getInterfaceManager().open(new Component(224)); player.addExtension(LogoutTask.class, new LocationLogoutTask(5, to ? Location.create(2544, 3759, 0) : Location.create(2620, 3685, 0))); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/content/zone/wbisland/WaterBirthDungeonZone.java b/Server/src/main/java/core/game/content/zone/wbisland/WaterBirthDungeonZone.java index 9a25007f4..eeea49007 100644 --- a/Server/src/main/java/core/game/content/zone/wbisland/WaterBirthDungeonZone.java +++ b/Server/src/main/java/core/game/content/zone/wbisland/WaterBirthDungeonZone.java @@ -19,7 +19,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.zone.MapZone; @@ -100,12 +100,12 @@ public final class WaterBirthDungeonZone extends MapZone implements Plugin World.getTicks()) { + if (npc.getAttribute("transforming", 0) > GameWorld.getTicks()) { return true; } - npc.setAttribute("transforming", World.getTicks() + 3); + npc.setAttribute("transforming", GameWorld.getTicks() + 3); } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter; @Override @@ -128,7 +128,7 @@ public final class WaterBirthDungeonZone extends MapZone implements PluginKnock knock..."); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { interpreter.sendDialogues(npcId, null, "Who's there?"); diff --git a/Server/src/main/java/core/game/interaction/city/WizardTowerPlugin.java b/Server/src/main/java/core/game/interaction/city/WizardTowerPlugin.java index ad48e6a21..c474a1888 100644 --- a/Server/src/main/java/core/game/interaction/city/WizardTowerPlugin.java +++ b/Server/src/main/java/core/game/interaction/city/WizardTowerPlugin.java @@ -37,7 +37,7 @@ import core.tools.RandomFunction; import core.tools.StringUtils; import kotlin.Unit; import rs09.game.content.global.travel.EssenceTeleport; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; /** @@ -477,7 +477,7 @@ public final class WizardTowerPlugin extends OptionHandler { player.lock(7); npc.faceLocation(Location.create(3102, 3163, 2)); npc.animate(ANIMATION); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { quest.finish(player); @@ -1272,7 +1272,7 @@ public final class WizardTowerPlugin extends OptionHandler { close(); npc.graphics(GRAPHIC); player.lock(3); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { npc("Ok, I have retrieved it. Luckily it doesn't appear to", "have been damaged. Now please take it to Aubury, ", "and try not to lose it again."); diff --git a/Server/src/main/java/core/game/interaction/inter/ClanInterfacePlugin.java b/Server/src/main/java/core/game/interaction/inter/ClanInterfacePlugin.java index dbe961776..c00fdef2e 100644 --- a/Server/src/main/java/core/game/interaction/inter/ClanInterfacePlugin.java +++ b/Server/src/main/java/core/game/interaction/inter/ClanInterfacePlugin.java @@ -1,18 +1,22 @@ package core.game.interaction.inter; -import static api.ContentAPIKt.*; import core.game.component.Component; import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.RunScript; import core.game.system.communication.ClanRank; import core.game.system.communication.ClanRepository; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.plugin.Initializable; import core.plugin.Plugin; import core.tools.StringUtils; import kotlin.Unit; +import static api.ContentAPIKt.sendInputDialogue; +import static api.ContentAPIKt.setInterfaceText; + /** * Represents the plugin used to handle the clan interfaces. * @author Vexia @@ -86,14 +90,28 @@ public final class ClanInterfacePlugin extends ComponentPlugin { clan.setName("Chat disabled"); player.getCommunication().setClanName(""); player.getPacketDispatch().sendString(clan.getName(), 590, 22); - MSPacketRepository.sendClanRename(player, ""); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendClanRename(player, ""); + break; + } + clan.clean(true); break; default: sendInputDialogue(player, false, "Enter clan prefix:", (value) -> { String name = StringUtils.formatDisplayName((String) value); setInterfaceText(player, name, 590, 22); - MSPacketRepository.sendClanRename(player, name); + if(WorldCommunicator.isEnabled()){ + MSPacketRepository.sendClanRename(player, name); + clan.setName(name); + return Unit.INSTANCE; + } + if (clan.getName().equals("Chat disabled")) { + player.getPacketDispatch().sendMessage("Your clan channel has now been enabled!"); + player.getPacketDispatch().sendMessage("Join your channel by clicking 'Join Chat' and typing: " + player.getUsername()); + } clan.setName(name); + player.getCommunication().setClanName(name); + clan.update(); return Unit.INSTANCE; }); break; diff --git a/Server/src/main/java/core/game/interaction/inter/CombatTabInterface.java b/Server/src/main/java/core/game/interaction/inter/CombatTabInterface.java index a3703ad53..11e01665c 100644 --- a/Server/src/main/java/core/game/interaction/inter/CombatTabInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/CombatTabInterface.java @@ -9,7 +9,7 @@ import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.combat.equipment.WeaponInterface.WeaponInterfaces; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.plugin.Plugin; @@ -39,7 +39,7 @@ public class CombatTabInterface extends ComponentPlugin { case 24: case 26: case 27: - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { p.getSettings().toggleRetaliating(); @@ -51,7 +51,7 @@ public class CombatTabInterface extends ComponentPlugin { case 10: case 8: case 85: - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { WeaponInterface inter = p.getExtension(WeaponInterface.class); diff --git a/Server/src/main/java/core/game/interaction/inter/EquipmentInterface.java b/Server/src/main/java/core/game/interaction/inter/EquipmentInterface.java index 7a3ff6848..282bf3320 100644 --- a/Server/src/main/java/core/game/interaction/inter/EquipmentInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/EquipmentInterface.java @@ -23,7 +23,7 @@ import core.plugin.Initializable; import core.plugin.Plugin; import rs09.game.content.global.action.EquipHandler; import rs09.game.interaction.InteractionListeners; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents the equipment interface. @@ -50,7 +50,7 @@ public final class EquipmentInterface extends ComponentPlugin { switch (opcode) { case 155: p.getPulseManager().clear(); - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { EquipHandler.unequip(p, slot, itemId); @@ -62,7 +62,7 @@ public final class EquipmentInterface extends ComponentPlugin { p.sendMessage(p.getEquipment().get(slot).getDefinition().getExamine()); return true; case 196: - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { operate(p, slot, itemId); @@ -78,7 +78,7 @@ public final class EquipmentInterface extends ComponentPlugin { case 155: p.getPulseManager().clear(); final Item item = p.getInventory().get(slot); - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { InteractionListeners.run(item.getId(),0,"equip",p, item); @@ -96,7 +96,7 @@ public final class EquipmentInterface extends ComponentPlugin { if (button != 28) { return false; } - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { operate(p, slot, itemId); @@ -128,7 +128,7 @@ public final class EquipmentInterface extends ComponentPlugin { case 28: if (opcode == 81) { p.getPulseManager().clear(); - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { EquipHandler.unequip(p, slot, itemId); diff --git a/Server/src/main/java/core/game/interaction/inter/GameInterface.java b/Server/src/main/java/core/game/interaction/inter/GameInterface.java index e136211c4..8056a7524 100644 --- a/Server/src/main/java/core/game/interaction/inter/GameInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/GameInterface.java @@ -10,7 +10,7 @@ import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.combat.equipment.WeaponInterface.WeaponInterfaces; import core.game.node.entity.player.Player; import core.game.node.entity.player.info.Rights; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.plugin.Plugin; @@ -41,10 +41,10 @@ public final class GameInterface extends ComponentPlugin { case 746: switch (button){ case 12: - player.getPacketDispatch().sendString("When you have finished playing " + World.getSettings().getName() + ", always use the button below to logout safely. ", 182, 0); + player.getPacketDispatch().sendString("When you have finished playing " + GameWorld.getSettings().getName() + ", always use the button below to logout safely. ", 182, 0); break; case 49: - player.getPacketDispatch().sendString("Friends List - " + World.getSettings().getName() + " " + World.getSettings().getWorldId(), 550, 3); + player.getPacketDispatch().sendString("Friends List - " + GameWorld.getSettings().getName() + " " + GameWorld.getSettings().getWorldId(), 550, 3); break; case 110: configureWorldMap(player); @@ -63,7 +63,7 @@ public final class GameInterface extends ComponentPlugin { player.getConfigManager().set(1021, 0); TutorialStage.load(player, 64, false); } - player.getPacketDispatch().sendString("Friends List -" + World.getSettings().getName() + " " + World.getSettings().getWorldId(), 550, 3); + player.getPacketDispatch().sendString("Friends List -" + GameWorld.getSettings().getName() + " " + GameWorld.getSettings().getWorldId(), 550, 3); break; case 22://Ignore Tab if (tut_stage == 64) { @@ -150,7 +150,7 @@ public final class GameInterface extends ComponentPlugin { configureWorldMap(player); break; case 69://Logout - player.getPacketDispatch().sendString("When you have finished playing " + World.getSettings().getName() + ", always use the button below to logout safely. ", 182, 0); + player.getPacketDispatch().sendString("When you have finished playing " + GameWorld.getSettings().getName() + ", always use the button below to logout safely. ", 182, 0); break; } return true; diff --git a/Server/src/main/java/core/game/interaction/inter/GrandExchangeInterface.java b/Server/src/main/java/core/game/interaction/inter/GrandExchangeInterface.java index e00ea34f3..c8ebdf9fc 100644 --- a/Server/src/main/java/core/game/interaction/inter/GrandExchangeInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/GrandExchangeInterface.java @@ -8,8 +8,10 @@ import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; import core.game.ge.GEGuidePrice; import core.game.ge.GEItemSet; +import core.game.ge.GrandExchangeDatabase; import core.game.ge.OfferState; import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.RunScript; import core.game.node.entity.player.link.audio.Audio; import core.game.node.item.Item; import core.game.system.task.Pulse; @@ -23,7 +25,7 @@ import rs09.game.ge.GrandExchangeOffer; import rs09.game.ge.OfferManager; import rs09.game.ge.PlayerGrandExchange; import rs09.game.interaction.npc.BogrogPouchSwapper; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the Grand Exchange interface options. @@ -81,7 +83,7 @@ public class GrandExchangeInterface extends ComponentPlugin { @Override public boolean handle(final Player player, final Component component, final int opcode, final int button, final int slot, final int itemId) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { switch (component.getId()) { diff --git a/Server/src/main/java/core/game/interaction/inter/LogoutInterface.java b/Server/src/main/java/core/game/interaction/inter/LogoutInterface.java index a0bf64cbe..9a37ab1e7 100644 --- a/Server/src/main/java/core/game/interaction/inter/LogoutInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/LogoutInterface.java @@ -4,7 +4,7 @@ import core.game.component.Component; import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.plugin.Plugin; @@ -31,9 +31,9 @@ public final class LogoutInterface extends ComponentPlugin { player.getPacketDispatch().sendMessage("You can't log out until 10 seconds after the end of combat."); return true; } - if (player.getAttribute("logoutDelay", 0) < World.getTicks()) { + if (player.getAttribute("logoutDelay", 0) < GameWorld.getTicks()) { player.getPacketDispatch().sendLogout(); - player.setAttribute("logoutDelay", World.getTicks() + 3); + player.setAttribute("logoutDelay", GameWorld.getTicks() + 3); } return true; } diff --git a/Server/src/main/java/core/game/interaction/inter/MagicBookInterface.java b/Server/src/main/java/core/game/interaction/inter/MagicBookInterface.java index d5027f84e..e032e92ff 100644 --- a/Server/src/main/java/core/game/interaction/inter/MagicBookInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/MagicBookInterface.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.link.SpellBookManager.SpellBook; import rs09.game.node.entity.skill.magic.SpellListener; import rs09.game.node.entity.skill.magic.SpellListeners; import rs09.game.node.entity.skill.magic.SpellUtils; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; /** @@ -31,7 +31,7 @@ public final class MagicBookInterface extends ComponentPlugin { @Override public boolean handle(final Player player, Component component, int opcode, int button, int slot, int itemId) { - if (World.getTicks() < player.getAttribute("magic:delay", -1)) { + if (GameWorld.getTicks() < player.getAttribute("magic:delay", -1)) { return true; } SpellListeners.run(button, SpellListener.NONE, SpellUtils.getBookFromInterface(component.getId()),player,null); diff --git a/Server/src/main/java/core/game/interaction/inter/SkillTabInterface.java b/Server/src/main/java/core/game/interaction/inter/SkillTabInterface.java index 97b3ebedc..cf4275a7b 100644 --- a/Server/src/main/java/core/game/interaction/inter/SkillTabInterface.java +++ b/Server/src/main/java/core/game/interaction/inter/SkillTabInterface.java @@ -1,12 +1,14 @@ package core.game.interaction.inter; +import api.ContentAPIKt.*; import core.game.component.Component; import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; import core.game.node.entity.skill.LevelUp; import core.game.node.entity.skill.Skills; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import core.game.node.entity.player.link.RunScript; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.plugin.Plugin; @@ -31,7 +33,7 @@ public final class SkillTabInterface extends ComponentPlugin { if (config == null) { return true; } - if (!World.getSettings().isPvp()) { + if (!GameWorld.getSettings().isPvp()) { if (p.getAttribute("levelup:" + config.getSkillId(), false)) { p.removeAttribute("levelup:" + config.getSkillId()); LevelUp.sendFlashingIcons(p, -1); diff --git a/Server/src/main/java/core/game/interaction/item/DragonfireShieldPlugin.java b/Server/src/main/java/core/game/interaction/item/DragonfireShieldPlugin.java index 2be611f31..35dbe93c1 100644 --- a/Server/src/main/java/core/game/interaction/item/DragonfireShieldPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/DragonfireShieldPlugin.java @@ -18,7 +18,7 @@ import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; import core.plugin.Plugin; import rs09.game.node.entity.combat.CombatPulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; import java.util.concurrent.TimeUnit; @@ -60,7 +60,7 @@ public final class DragonfireShieldPlugin extends OptionHandler { item.setCharge(1020); player.sendMessage("You use the power from the overcharge lords & charge your shield."); notCharged = false; - player.getSavedData().getGlobalData().setOverChargeDelay(System.currentTimeMillis() + (World.getSettings().isDevMode() ? TimeUnit.SECONDS.toMillis(10) : TimeUnit.MINUTES.toMicros(10))); + player.getSavedData().getGlobalData().setOverChargeDelay(System.currentTimeMillis() + (GameWorld.getSettings().isDevMode() ? TimeUnit.SECONDS.toMillis(10) : TimeUnit.MINUTES.toMicros(10))); } if (notCharged) { player.getPacketDispatch().sendMessage("Your shield has no charges left."); diff --git a/Server/src/main/java/core/game/interaction/item/FaladorShieldPlugin.java b/Server/src/main/java/core/game/interaction/item/FaladorShieldPlugin.java index d82eb3873..60fed09f0 100644 --- a/Server/src/main/java/core/game/interaction/item/FaladorShieldPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/FaladorShieldPlugin.java @@ -5,7 +5,7 @@ import java.util.concurrent.TimeUnit; import core.cache.def.impl.ItemDefinition; import core.game.node.entity.Entity; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.game.content.consumable.effects.PrayerEffect; @@ -58,7 +58,7 @@ public class FaladorShieldPlugin extends OptionHandler { } return true; case "operate": - World.getPulser().submit(getPulse(player, level)); + GameWorld.getPulser().submit(getPulse(player, level)); break; } return true; diff --git a/Server/src/main/java/core/game/interaction/item/GodBookPlugin.java b/Server/src/main/java/core/game/interaction/item/GodBookPlugin.java index ba14d5cdd..8f383e3e8 100644 --- a/Server/src/main/java/core/game/interaction/item/GodBookPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/GodBookPlugin.java @@ -1,6 +1,8 @@ package core.game.interaction.item; import core.game.content.dialogue.DialogueAction; +import core.game.content.dialogue.DialogueInterpreter; +import core.game.content.dialogue.DialoguePlugin; import core.game.content.global.GodBook; import core.game.node.entity.skill.Skills; import core.game.interaction.NodeUsageEvent; @@ -11,6 +13,9 @@ import core.game.node.entity.player.Player; import core.game.node.item.GroundItem; import core.game.node.item.Item; import core.game.node.item.ItemPlugin; +import core.game.system.task.Pulse; +import rs09.game.world.GameWorld; +import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; import core.plugin.Initializable; import rs09.plugin.PluginManager; diff --git a/Server/src/main/java/core/game/interaction/item/MorphItemPlugin.java b/Server/src/main/java/core/game/interaction/item/MorphItemPlugin.java index 9bce4484c..eaa230697 100644 --- a/Server/src/main/java/core/game/interaction/item/MorphItemPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/MorphItemPlugin.java @@ -7,7 +7,7 @@ import core.game.component.ComponentDefinition; import core.game.component.ComponentPlugin; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.plugin.Plugin; import rs09.plugin.PluginManager; @@ -68,9 +68,9 @@ public class MorphItemPlugin implements Plugin { player.getInterfaceManager().close(); player.getAppearance().transformNPC(morphId); player.getInterfaceManager().hideTabs(0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); - player.getLocks().lockMovement(World.getTicks() + 900000000); - player.getLocks().lockInteractions(World.getTicks() + 90000000); - player.getLocks().lockTeleport(World.getTicks() + 900000000); + player.getLocks().lockMovement(GameWorld.getTicks() + 900000000); + player.getLocks().lockInteractions(GameWorld.getTicks() + 90000000); + player.getLocks().lockTeleport(GameWorld.getTicks() + 900000000); player.getInterfaceManager().openSingleTab(COMPONENT); player.getAppearance().sync(); player.getWalkingQueue().reset(); diff --git a/Server/src/main/java/core/game/interaction/item/PharoahSceptre.java b/Server/src/main/java/core/game/interaction/item/PharoahSceptre.java index 7ece5b4d7..00929d04f 100644 --- a/Server/src/main/java/core/game/interaction/item/PharoahSceptre.java +++ b/Server/src/main/java/core/game/interaction/item/PharoahSceptre.java @@ -8,7 +8,7 @@ import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -73,7 +73,7 @@ public final class PharoahSceptre extends OptionHandler { player.lock(); player.visualize(ANIMATION, GRAPHICS); player.getImpactHandler().setDisabledTicks(4); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { @Override public boolean pulse() { player.unlock(); diff --git a/Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java b/Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java new file mode 100644 index 000000000..1275872c5 --- /dev/null +++ b/Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java @@ -0,0 +1,106 @@ +package core.game.interaction.item.withnpc; + +import core.game.interaction.NodeUsageEvent; +import core.game.interaction.UseWithHandler; +import core.game.node.entity.npc.NPC; +import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.quest.Quest; +import core.game.node.item.Item; +import core.game.system.task.Pulse; +import rs09.game.world.GameWorld; +import core.game.world.map.Location; +import core.game.world.map.path.Path; +import core.game.world.map.path.Pathfinder; +import core.game.world.update.flag.context.Animation; +import core.plugin.Initializable; +import core.plugin.Plugin; + +/** + * Represents the plugin used to handle the use with interactions. + * @author 'Vexia + * @version 1.0 + */ +@Initializable +public final class GertrudeCatUsePlugin extends UseWithHandler { + + /** + * Represents the animation of bending down. + */ + private static final Animation BEND_DOWN = Animation.create(827); + + /** + * Represents the empty bucket. + */ + private static final Item EMPTY_BUCKET = new Item(1925); + + /** + * Constructs a new {@code GertrudeCatUsePlugin} {@code Object}. + */ + public GertrudeCatUsePlugin() { + super(1927, 1552, 327, 13236); + } + + @Override + public Plugin newInstance(Object arg) throws Throwable { + addHandler(2997, NPC_TYPE, this); + return this; + } + + @Override + public boolean handle(NodeUsageEvent event) { + final Player player = event.getPlayer(); + final NPC npc = ((NPC) event.getUsedWith()); + final Quest quest = player.getQuestRepository().getQuest("Gertrude's Cat"); + if (event.getUsedItem().getId() == 1927 && quest.getStage(player) == 20) { + if (player.getInventory().remove(event.getUsedItem())) { + player.getInventory().add(EMPTY_BUCKET); + player.animate(BEND_DOWN); + npc.sendChat("Mew!"); + quest.setStage(player, 30); + } + } else if (event.getUsedItem().getId() == 1552 && quest.getStage(player) == 30) { + if (player.getInventory().remove(event.getUsedItem())) { + player.animate(BEND_DOWN); + npc.sendChat("Mew!"); + quest.setStage(player, 40); + } + } else if (event.getUsedItem().getId() == 327 && quest.getStage(player) == 50) { + player.getDialogueInterpreter().sendDialogue("The cat doesn't seem interested in that."); + } else if (event.getUsedItem().getId() == 13236) { + if (player.getInventory().remove(event.getUsedItem())) { + quest.setStage(player, 60); + player.lock(5); + GameWorld.getPulser().submit(new Pulse(1) { + int count = 0; + final NPC kitten = NPC.create(761, player.getLocation()); + + @Override + public boolean pulse() { + switch (count) { + case 0: + kitten.init(); + kitten.face(npc); + npc.face(kitten); + npc.sendChat("Pur..."); + kitten.sendChat("Pur..."); + final Path path = Pathfinder.find(npc, new Location(3310, 3510, 1)); + path.walk(npc); + final Path pathh = Pathfinder.find(kitten, new Location(3310, 3510, 1)); + pathh.walk(kitten); + break; + case 5: + kitten.clear(); + player.setAttribute("hidefluff", System.currentTimeMillis() + 60000); + break; + } + count++; + return count == 6; + } + + }); + } + } + return true; + } + +} diff --git a/Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java b/Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java new file mode 100644 index 000000000..ec0b56dec --- /dev/null +++ b/Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java @@ -0,0 +1,57 @@ +package core.game.interaction.item.withnpc; + +import core.game.interaction.NodeUsageEvent; +import core.game.interaction.UseWithHandler; +import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.quest.Quest; +import core.game.node.item.Item; +import rs09.game.world.GameWorld; +import core.plugin.Initializable; +import core.plugin.Plugin; + +/** + * Represents the plugin used to tie up lady keli. + * @author 'Vexia + * @version 1.0 + */ +@Initializable +public final class LadyKeliRopePlugin extends UseWithHandler { + + /** + * Represents the rope item. + */ + private static final Item ROPE = new Item(954); + + /** + * Constructs a new {@code LadyKeliRopePlugin} {@code Object}. + */ + public LadyKeliRopePlugin() { + super(954); + } + + @Override + public Plugin newInstance(Object arg) throws Throwable { + addHandler(919, NPC_TYPE, this); + return this; + } + + @Override + public boolean handle(NodeUsageEvent event) { + final Player player = event.getPlayer(); + final Quest quest = player.getQuestRepository().getQuest("Prince Ali Rescue"); + if (quest.getStage(player) >= 40 && player.getAttribute("guard-drunk", false) && quest.getStage(player) != 100) { + if (player.getInventory().remove(ROPE)) { + player.getDialogueInterpreter().sendDialogue("You overpower Keli, tie her up, and put her in a cupboard."); + quest.setStage(player, 50); + player.setAttribute("keli-gone", GameWorld.getTicks() + 350); + } + } else { + if (quest.getStage(player) == 40) { + player.getPacketDispatch().sendMessage("You need to do something about the guard first."); + } + return true; + } + return true; + } + +} diff --git a/Server/src/main/java/core/game/interaction/item/withobject/EctophialFillPlugin.java b/Server/src/main/java/core/game/interaction/item/withobject/EctophialFillPlugin.java index 34903996f..0cf49c711 100644 --- a/Server/src/main/java/core/game/interaction/item/withobject/EctophialFillPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/withobject/EctophialFillPlugin.java @@ -5,7 +5,7 @@ import core.game.interaction.UseWithHandler; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; @@ -36,7 +36,7 @@ public class EctophialFillPlugin extends UseWithHandler { player.lock(3); player.animate(Animation.create(1652)); player.getAudioManager().send(1132); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { if (player.getInventory().remove(new Item(4252))) { diff --git a/Server/src/main/java/core/game/interaction/item/withobject/HairdresserCheesePlugin.java b/Server/src/main/java/core/game/interaction/item/withobject/HairdresserCheesePlugin.java index c72d9efb7..66ebbd00b 100644 --- a/Server/src/main/java/core/game/interaction/item/withobject/HairdresserCheesePlugin.java +++ b/Server/src/main/java/core/game/interaction/item/withobject/HairdresserCheesePlugin.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; /** @@ -36,7 +36,7 @@ public class HairdresserCheesePlugin extends UseWithHandler { final Player player = event.getPlayer(); player.lock(3); //player.animate(Animation.create(1652)); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { if (player.getInventory().remove(new Item(Items.CHEESE_1985))) { diff --git a/Server/src/main/java/core/game/interaction/item/withobject/PoisonFountainPlugin.java b/Server/src/main/java/core/game/interaction/item/withobject/PoisonFountainPlugin.java index d45cd8a62..6307f16b6 100644 --- a/Server/src/main/java/core/game/interaction/item/withobject/PoisonFountainPlugin.java +++ b/Server/src/main/java/core/game/interaction/item/withobject/PoisonFountainPlugin.java @@ -5,7 +5,7 @@ import core.game.interaction.UseWithHandler; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; @@ -53,7 +53,7 @@ public class PoisonFountainPlugin extends UseWithHandler { player.setAttribute("/save:piranhas-killed", true); player.animate(SEARCH_ANIM); player.getPacketDispatch().sendMessage("You pour the poisoned fish food into the fountain."); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/interaction/item/withobject/TutorialItemHandler.java b/Server/src/main/java/core/game/interaction/item/withobject/TutorialItemHandler.java index b52820c01..6d87919c9 100644 --- a/Server/src/main/java/core/game/interaction/item/withobject/TutorialItemHandler.java +++ b/Server/src/main/java/core/game/interaction/item/withobject/TutorialItemHandler.java @@ -10,7 +10,7 @@ import core.game.interaction.UseWithHandler; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -34,7 +34,7 @@ public class TutorialItemHandler extends UseWithHandler { final Player player = event.getPlayer(); if (player.getInventory().containItems(438, 436)) { player.animate(new Animation(833)); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { player.getInventory().remove(new Item(438, 1)); diff --git a/Server/src/main/java/core/game/interaction/npc/BurthorpeTrainNPC.java b/Server/src/main/java/core/game/interaction/npc/BurthorpeTrainNPC.java index 2f9f21aaa..bff5a6a5e 100644 --- a/Server/src/main/java/core/game/interaction/npc/BurthorpeTrainNPC.java +++ b/Server/src/main/java/core/game/interaction/npc/BurthorpeTrainNPC.java @@ -5,7 +5,7 @@ import java.util.List; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.npc.NPC; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -135,7 +135,7 @@ public class BurthorpeTrainNPC extends AbstractNPC { } } final NPC sol = soldier; - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { final NPC sold = sol; @Override public boolean pulse() { @@ -161,7 +161,7 @@ public class BurthorpeTrainNPC extends AbstractNPC { animate(animation); delay = System.currentTimeMillis() + 3500; faceLocation(getLocation().transform(0, -1, 0)); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { final List soldiers = RegionManager.getLocalNpcs(BurthorpeTrainNPC.this, 12); diff --git a/Server/src/main/java/core/game/interaction/npc/CanafisWereWolfPlugin.java b/Server/src/main/java/core/game/interaction/npc/CanafisWereWolfPlugin.java index 19ce7ed5f..d0388a626 100644 --- a/Server/src/main/java/core/game/interaction/npc/CanafisWereWolfPlugin.java +++ b/Server/src/main/java/core/game/interaction/npc/CanafisWereWolfPlugin.java @@ -6,7 +6,7 @@ import core.game.node.Node; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; @@ -50,7 +50,7 @@ public final class CanafisWereWolfPlugin extends OptionHandler { newN.setRespawn(false); newN.setAttribute("original", n.getId()); newN.setAttribute("loc", n.getProperties().getSpawnLocation()); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { newN.getProperties().getCombatPulse().attack(player); diff --git a/Server/src/main/java/core/game/interaction/npc/SheepShearPlugin.java b/Server/src/main/java/core/game/interaction/npc/SheepShearPlugin.java index 6a4e26366..11e698970 100644 --- a/Server/src/main/java/core/game/interaction/npc/SheepShearPlugin.java +++ b/Server/src/main/java/core/game/interaction/npc/SheepShearPlugin.java @@ -7,7 +7,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; import core.plugin.Initializable; @@ -63,7 +63,7 @@ public final class SheepShearPlugin extends OptionHandler { sheep.transform(5153); player.getPacketDispatch().sendMessage("You get some wool."); player.getInventory().add(new Item(1737, 1));// 5160 - World.getPulser().submit(new Pulse(80, sheep) { + GameWorld.getPulser().submit(new Pulse(80, sheep) { @Override public boolean pulse() { sheep.reTransform(); diff --git a/Server/src/main/java/core/game/interaction/npc/sorceress_app/SorceressApprenticeDialogue.java b/Server/src/main/java/core/game/interaction/npc/sorceress_app/SorceressApprenticeDialogue.java index bff6d421a..1a87a12ff 100644 --- a/Server/src/main/java/core/game/interaction/npc/sorceress_app/SorceressApprenticeDialogue.java +++ b/Server/src/main/java/core/game/interaction/npc/sorceress_app/SorceressApprenticeDialogue.java @@ -6,7 +6,7 @@ import core.game.node.entity.impl.Projectile; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Graphics; @@ -241,7 +241,7 @@ public class SorceressApprenticeDialogue extends DialoguePlugin { player.lock(); Projectile.create(npc, player, 109).send(); npc.sendChat("Senventior Disthinte Molesko!"); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int counter = 0; @Override diff --git a/Server/src/main/java/core/game/interaction/object/BankingPlugin.java b/Server/src/main/java/core/game/interaction/object/BankingPlugin.java index 976c3b2d2..c4b7c6ecb 100644 --- a/Server/src/main/java/core/game/interaction/object/BankingPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/BankingPlugin.java @@ -35,7 +35,7 @@ import kotlin.Unit; import org.rs09.consts.Items; import rs09.game.content.dialogue.DumpContainer; import rs09.game.ge.GrandExchangeOffer; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.text.NumberFormat; @@ -201,7 +201,7 @@ public final class BankingPlugin extends OptionHandler { } break; case 1: - interpreter.sendDialogues(id, FacialExpression.HALF_GUILTY, "This is a branch of the Bank of " + World.getSettings().getName() + ". We have", "branches in many towns."); + interpreter.sendDialogues(id, FacialExpression.HALF_GUILTY, "This is a branch of the Bank of " + GameWorld.getSettings().getName() + ". We have", "branches in many towns."); stage = 2; break; case 2: @@ -500,7 +500,7 @@ public final class BankingPlugin extends OptionHandler { } if (amount > 0) { final int withdraw = amount; - World.getPulser().submit(new Pulse(1, p) { + GameWorld.getPulser().submit(new Pulse(1, p) { @Override public boolean pulse() { if (item == null) { diff --git a/Server/src/main/java/core/game/interaction/object/BarrowsBoatPlugin.java b/Server/src/main/java/core/game/interaction/object/BarrowsBoatPlugin.java index 372d95dc9..16656b4d4 100644 --- a/Server/src/main/java/core/game/interaction/object/BarrowsBoatPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/BarrowsBoatPlugin.java @@ -6,7 +6,7 @@ import core.game.interaction.OptionHandler; import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.plugin.Initializable; import core.plugin.Plugin; @@ -33,7 +33,7 @@ public class BarrowsBoatPlugin extends OptionHandler { final String name = node.getId() == 6970 ? "Mort'ton." : "the swamp"; player.lock(); player.getInterfaceManager().open(new Component(321)); - World.getPulser().submit(new Pulse(7, player) { + GameWorld.getPulser().submit(new Pulse(7, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/interaction/object/BeehivePlugin.java b/Server/src/main/java/core/game/interaction/object/BeehivePlugin.java index 9a9444312..b2edb87a7 100644 --- a/Server/src/main/java/core/game/interaction/object/BeehivePlugin.java +++ b/Server/src/main/java/core/game/interaction/object/BeehivePlugin.java @@ -8,7 +8,7 @@ import core.game.node.entity.combat.ImpactHandler; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.plugin.Initializable; @@ -26,7 +26,7 @@ public class BeehivePlugin extends OptionHandler { if (!player.getInventory().containsItem(REPELLANT)) { player.getPacketDispatch().sendMessage("The bees fly out of the hive and sting you!"); player.getImpactHandler().manualHit(player, 2, ImpactHandler.HitsplatType.NORMAL, 1); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.getPacketDispatch().sendMessage("Maybe you can clear them out somehow."); diff --git a/Server/src/main/java/core/game/interaction/object/BrokenCartBypass.java b/Server/src/main/java/core/game/interaction/object/BrokenCartBypass.java index 22aba3d74..127b32b70 100644 --- a/Server/src/main/java/core/game/interaction/object/BrokenCartBypass.java +++ b/Server/src/main/java/core/game/interaction/object/BrokenCartBypass.java @@ -5,7 +5,7 @@ import core.game.interaction.OptionHandler; import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -28,7 +28,7 @@ public class BrokenCartBypass extends OptionHandler { player.lock(); player.animate(new Animation(839)); player.getImpactHandler().setDisabledTicks(4); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.unlock(); diff --git a/Server/src/main/java/core/game/interaction/object/DropPartyLeverOptionPlugin.java b/Server/src/main/java/core/game/interaction/object/DropPartyLeverOptionPlugin.java index e97bce45f..f8431a5e5 100644 --- a/Server/src/main/java/core/game/interaction/object/DropPartyLeverOptionPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/DropPartyLeverOptionPlugin.java @@ -6,7 +6,7 @@ import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -31,13 +31,13 @@ public final class DropPartyLeverOptionPlugin extends OptionHandler { @Override public boolean handle(final Player player, Node node, String option) { final Scenery object = (Scenery) node; - if (player.getAttribute("delay:lever", -1) > World.getTicks()) + if (player.getAttribute("delay:lever", -1) > GameWorld.getTicks()) return true; - player.setAttribute("delay:picking", World.getTicks() + 3); + player.setAttribute("delay:picking", GameWorld.getTicks() + 3); player.lock(2); player.faceLocation(object.getLocation()); player.getDialogueInterpreter().open(1 << 16 | 2); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.animate(ANIMATION); diff --git a/Server/src/main/java/core/game/interaction/object/ErnestTheChickenPlugin.java b/Server/src/main/java/core/game/interaction/object/ErnestTheChickenPlugin.java index 42ceef797..63d6eb349 100644 --- a/Server/src/main/java/core/game/interaction/object/ErnestTheChickenPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/ErnestTheChickenPlugin.java @@ -13,7 +13,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBuilder; @@ -131,7 +131,7 @@ public final class ErnestTheChickenPlugin extends OptionHandler { final boolean up = isUp(lever); levers[lever.ordinal()] = !up; player.animate(!up ? UP_ANIMATION : DOWN_ANIMATION); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { updateConfigs(); @@ -156,7 +156,7 @@ public final class ErnestTheChickenPlugin extends OptionHandler { */ public final void walk(final Scenery object) { player.lock(4); - World.getPulser().submit(new Pulse(1, player, object) { + GameWorld.getPulser().submit(new Pulse(1, player, object) { @Override public boolean pulse() { Point p = (Point) getWalkData()[0]; diff --git a/Server/src/main/java/core/game/interaction/object/FieldPickingPlugin.java b/Server/src/main/java/core/game/interaction/object/FieldPickingPlugin.java index 6e421b064..f91e2e340 100644 --- a/Server/src/main/java/core/game/interaction/object/FieldPickingPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/FieldPickingPlugin.java @@ -11,7 +11,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; import core.plugin.Initializable; @@ -42,7 +42,7 @@ public final class FieldPickingPlugin extends OptionHandler { @Override public boolean handle(final Player player, Node node, String option) { - if (player.getAttribute("delay:picking", -1) > World.getTicks()) { + if (player.getAttribute("delay:picking", -1) > GameWorld.getTicks()) { return true; } final Scenery object = (Scenery) node; @@ -62,7 +62,7 @@ public final class FieldPickingPlugin extends OptionHandler { return true; } player.lock(1); - player.setAttribute("delay:picking", World.getTicks() + (plant == PickingPlant.FLAX ? 2 : 3)); + player.setAttribute("delay:picking", GameWorld.getTicks() + (plant == PickingPlant.FLAX ? 2 : 3)); player.animate(ANIMATION); if (plant.name().startsWith("NETTLES") && (player.getEquipment().get(EquipmentContainer.SLOT_HANDS) == null || player.getEquipment().get(EquipmentContainer.SLOT_HANDS) != null && !player.getEquipment().get(EquipmentContainer.SLOT_HANDS).getName().contains("glove"))) { player.getPacketDispatch().sendMessage("You have been stung by the nettles!"); @@ -72,7 +72,7 @@ public final class FieldPickingPlugin extends OptionHandler { if (plant.respawn != -1 && plant != PickingPlant.FLAX) { object.setActive(false); } - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { if (!player.getInventory().add(reward)) { diff --git a/Server/src/main/java/core/game/interaction/object/GrandExchangeShortcut.java b/Server/src/main/java/core/game/interaction/object/GrandExchangeShortcut.java index 9381e7b46..6caff3adc 100644 --- a/Server/src/main/java/core/game/interaction/object/GrandExchangeShortcut.java +++ b/Server/src/main/java/core/game/interaction/object/GrandExchangeShortcut.java @@ -10,7 +10,7 @@ import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -55,7 +55,7 @@ public final class GrandExchangeShortcut extends OptionHandler { final Scenery o = (Scenery) node; if (o.getId() == 9311) { ForceMovement.run(player, Location.create(3138, 3516, 0), o.getLocation(), CLIMB_DOWN); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override @@ -76,7 +76,7 @@ public final class GrandExchangeShortcut extends OptionHandler { }); } else { ForceMovement.run(player, Location.create(3144, 3514, 0), o.getLocation(), CLIMB_DOWN); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/interaction/object/KalphiteEntranceHandler.java b/Server/src/main/java/core/game/interaction/object/KalphiteEntranceHandler.java index 83be9470f..15b7c22cd 100644 --- a/Server/src/main/java/core/game/interaction/object/KalphiteEntranceHandler.java +++ b/Server/src/main/java/core/game/interaction/object/KalphiteEntranceHandler.java @@ -9,7 +9,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -72,7 +72,7 @@ public final class KalphiteEntranceHandler extends OptionHandler { final Location dest = destination; player.lock(2); player.animate(Animation.create(828)); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(dest); diff --git a/Server/src/main/java/core/game/interaction/object/LumbridgeBasementPlugin.java b/Server/src/main/java/core/game/interaction/object/LumbridgeBasementPlugin.java index 8dc5f2fbb..b568be5c8 100644 --- a/Server/src/main/java/core/game/interaction/object/LumbridgeBasementPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/LumbridgeBasementPlugin.java @@ -13,7 +13,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.path.Pathfinder; @@ -91,7 +91,7 @@ public class LumbridgeBasementPlugin extends OptionHandler { final Location first = f; final Location second = s; player.lock(); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { int counter = 1; @Override @@ -240,7 +240,7 @@ public class LumbridgeBasementPlugin extends OptionHandler { @Override public void handleTickActions() { if (!getLocks().isMovementLocked()) { - if (isWalks() && !getPulseManager().hasPulseRunning() && nextWalk < World.getTicks()) { + if (isWalks() && !getPulseManager().hasPulseRunning() && nextWalk < GameWorld.getTicks()) { setNextWalk(); Location l = getLocation().transform(-5 + RandomFunction.random(getWalkRadius()), -5 + RandomFunction.random(getWalkRadius()), 0); if (canMove(l)) { diff --git a/Server/src/main/java/core/game/interaction/object/ProspectOrePlugin.java b/Server/src/main/java/core/game/interaction/object/ProspectOrePlugin.java index 96387db0e..d2fc96923 100644 --- a/Server/src/main/java/core/game/interaction/object/ProspectOrePlugin.java +++ b/Server/src/main/java/core/game/interaction/object/ProspectOrePlugin.java @@ -11,7 +11,7 @@ import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; /** @@ -26,7 +26,7 @@ public class ProspectOrePlugin extends OptionHandler { final Scenery object = (Scenery) node; int tut_stage = TutorialSession.getExtension(player).getStage(); if (tut_stage == 31 && object.getId() == 3043) { - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int count = 0; @Override @@ -43,7 +43,7 @@ public class ProspectOrePlugin extends OptionHandler { }); } if (tut_stage == 33 && object.getId() == 3042) { - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int count = 0; @Override diff --git a/Server/src/main/java/core/game/interaction/object/PyreSitePlugin.java b/Server/src/main/java/core/game/interaction/object/PyreSitePlugin.java index 4823f1854..d00c330dc 100644 --- a/Server/src/main/java/core/game/interaction/object/PyreSitePlugin.java +++ b/Server/src/main/java/core/game/interaction/object/PyreSitePlugin.java @@ -22,7 +22,7 @@ import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; import core.tools.RandomFunction; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import rs09.plugin.PluginManager; @@ -112,7 +112,7 @@ public final class PyreSitePlugin extends OptionHandler { player.lock(); USED_LOCATIONS.add(object.getLocation()); player.faceLocation(object.getLocation()); - World.getPulser().submit(getPulse(player, object)); + GameWorld.getPulser().submit(getPulse(player, object)); } /** diff --git a/Server/src/main/java/core/game/interaction/object/ThievingGuidePlugin.java b/Server/src/main/java/core/game/interaction/object/ThievingGuidePlugin.java index 1588bae94..7323331f6 100644 --- a/Server/src/main/java/core/game/interaction/object/ThievingGuidePlugin.java +++ b/Server/src/main/java/core/game/interaction/object/ThievingGuidePlugin.java @@ -16,7 +16,7 @@ import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; import core.tools.RandomFunction; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.Collections; @@ -93,7 +93,7 @@ public class ThievingGuidePlugin extends OptionHandler { player.lock(4); player.getPacketDispatch().sendMessage("You start cracking the safe."); player.animate(animations[success ? 1 : 0]); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { if (success) { @@ -105,7 +105,7 @@ public class ThievingGuidePlugin extends OptionHandler { player.getPacketDispatch().sendMessage("You slip and trigger a trap!"); player.animate(animations[2]); player.getImpactHandler().manualHit(player, RandomFunction.random(2, 6), HitsplatType.NORMAL); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { player.animate(new Animation(-1, Priority.HIGH)); diff --git a/Server/src/main/java/core/game/interaction/object/WildernessLeverPlugin.java b/Server/src/main/java/core/game/interaction/object/WildernessLeverPlugin.java index fa327dba1..bb7330025 100644 --- a/Server/src/main/java/core/game/interaction/object/WildernessLeverPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/WildernessLeverPlugin.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.link.audio.Audio; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -65,7 +65,7 @@ public final class WildernessLeverPlugin extends OptionHandler { player.lock(2); player.animate(lever.getAnimation()); player.getAudioManager().send(new Audio(2400)); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { lever.message(player, index); diff --git a/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java b/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java index 7ed65cc3c..75ea82f6e 100644 --- a/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java +++ b/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.link.TeleportManager.TeleportType; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.chunk.GraphicUpdateFlag; @@ -71,7 +71,7 @@ public final class WildernessObeliskPlugin extends OptionHandler { } } player.getAudioManager().send(204); - World.getPulser().submit(new Pulse(6, player) { + GameWorld.getPulser().submit(new Pulse(6, player) { @Override public boolean pulse() { final Location center = stationObelisk.getLocation(); diff --git a/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java b/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java index 6d086f519..519b7c981 100644 --- a/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java +++ b/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java @@ -12,7 +12,7 @@ import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -160,7 +160,7 @@ public final class DMCHandler { } firingPulse.restart(); firingPulse.start(); - World.getPulser().submit(firingPulse); + GameWorld.getPulser().submit(firingPulse); } /** @@ -200,7 +200,7 @@ public final class DMCHandler { player.getWalkingQueue().reset(); player.lock(9); player.faceLocation(spawn.transform(Direction.NORTH_EAST)); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { int count = 0; Scenery object = null; diff --git a/Server/src/main/java/core/game/interaction/object/sorceress/GardenObjectsPlugin.kt b/Server/src/main/java/core/game/interaction/object/sorceress/GardenObjectsPlugin.kt index ab56799a9..b79512f50 100644 --- a/Server/src/main/java/core/game/interaction/object/sorceress/GardenObjectsPlugin.kt +++ b/Server/src/main/java/core/game/interaction/object/sorceress/GardenObjectsPlugin.kt @@ -1,12 +1,17 @@ package core.game.interaction.`object`.sorceress +import rs09.plugin.PluginManager.definePlugin +import rs09.game.world.GameWorld.Pulser import core.plugin.Initializable +import core.game.interaction.OptionHandler import core.plugin.Plugin +import core.cache.def.impl.SceneryDefinition import core.game.component.Component import core.game.content.dialogue.DialoguePlugin import core.game.content.dialogue.FacialExpression import core.game.interaction.NodeUsageEvent import core.game.interaction.UseWithHandler +import core.game.node.Node import core.game.node.scenery.Scenery import core.game.node.entity.npc.NPC import core.game.node.entity.player.Player @@ -24,7 +29,7 @@ import core.net.packet.context.MinimapStateContext import core.net.packet.out.MinimapState import core.tools.RandomFunction import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.plugin.PluginManager @@ -49,7 +54,7 @@ class GardenObjectsPlugin : InteractionListener() { player.animate(PICK_FRUIT) player.skills.addExperience(Skills.THIEVING, def.exp, true) player.skills.addExperience(Skills.FARMING, def.farmExp, true) - World.Pulser.submit(object : Pulse(2, player) { + GameWorld.Pulser.submit(object : Pulse(2, player) { var counter = 0 override fun pulse(): Boolean { if (counter == 1) { @@ -77,7 +82,7 @@ class GardenObjectsPlugin : InteractionListener() { on(FOUNTAIN, SCENERY, "drink-from"){player, _ -> player.lock() - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var counter = 0 override fun pulse(): Boolean { when (counter++) { @@ -135,7 +140,7 @@ class GardenObjectsPlugin : InteractionListener() { player.addExtension(LogoutTask::class.java, LocationLogoutTask(99, herbDef.respawn)) player.animate(ANIMATION) player.skills.addExperience(Skills.FARMING, herbDef.exp, true) - World.Pulser.submit(object : Pulse(2, player) { + GameWorld.Pulser.submit(object : Pulse(2, player) { var counter = 0 override fun pulse(): Boolean { if (counter == 1) { diff --git a/Server/src/main/java/core/game/interaction/player/LoginValidationPlugin.java b/Server/src/main/java/core/game/interaction/player/LoginValidationPlugin.java index f654935d0..f152c354f 100644 --- a/Server/src/main/java/core/game/interaction/player/LoginValidationPlugin.java +++ b/Server/src/main/java/core/game/interaction/player/LoginValidationPlugin.java @@ -8,7 +8,7 @@ import core.plugin.Initializable; import core.plugin.Plugin; import core.plugin.PluginManifest; import core.plugin.PluginType; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.concurrent.TimeUnit; @@ -50,7 +50,7 @@ public final class LoginValidationPlugin implements Plugin { if (!SystemManager.getSystemConfig().validLogin(player)) { return this; } - if (World.getSettings().isDevMode()) { + if (GameWorld.getSettings().isDevMode()) { player.toggleDebug(); } if (player.getAttribute("fc_wave", -1) > -1) { diff --git a/Server/src/main/java/core/game/node/entity/Entity.java b/Server/src/main/java/core/game/node/entity/Entity.java index 0c1448442..95d947e59 100644 --- a/Server/src/main/java/core/game/node/entity/Entity.java +++ b/Server/src/main/java/core/game/node/entity/Entity.java @@ -17,7 +17,7 @@ import core.game.node.entity.skill.Skills; import core.game.node.entity.state.EntityState; import core.game.node.entity.state.StateManager; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.Viewport; import core.game.world.map.path.Path; @@ -260,8 +260,8 @@ public abstract class Entity extends Node { * Checks an impact before receiving it. */ public void checkImpact(BattleState state) { - getProperties().getCombatPulse().setLastReceivedAttack(World.getTicks()); - int ticks = World.getTicks() - getProperties().getCombatPulse().getLastSentAttack(); + getProperties().getCombatPulse().setLastReceivedAttack(GameWorld.getTicks()); + int ticks = GameWorld.getTicks() - getProperties().getCombatPulse().getLastSentAttack(); if (ticks > 10 && this instanceof NPC && ((NPC) this).getDefinition().getConfiguration("safespot", false)) { Pathfinder.find(state.getAttacker(), getLocation()).walk(state.getAttacker()); Pathfinder.find(state.getVictim(), state.getAttacker().getLocation()).walk(state.getVictim()); @@ -280,7 +280,7 @@ public abstract class Entity extends Node { * @param state The battle state. */ public void onImpact(final Entity entity, BattleState state) { - if (properties.isRetaliating() && !properties.getCombatPulse().isAttacking() && !getLocks().isInteractionLocked() && properties.getCombatPulse().getNextAttack() < World.getTicks()) { + if (properties.isRetaliating() && !properties.getCombatPulse().isAttacking() && !getLocks().isInteractionLocked() && properties.getCombatPulse().getNextAttack() < GameWorld.getTicks()) { if (!getWalkingQueue().hasPath() && !getPulseManager().isMovingPulse() || (this instanceof NPC)) { properties.getCombatPulse().attack(entity); } @@ -327,7 +327,7 @@ public abstract class Entity extends Node { * @param ticks the ticks. */ public void teleport(final Location location, int ticks) { - World.getPulser().submit(new Pulse(ticks, this) { + GameWorld.getPulser().submit(new Pulse(ticks, this) { @Override public boolean pulse() { teleport(location); @@ -413,7 +413,7 @@ public abstract class Entity extends Node { * @return {@code True} if so. */ public boolean graphics(final Graphics graphics, int delay) { - World.getPulser().submit(new Pulse(delay, this) { + GameWorld.getPulser().submit(new Pulse(delay, this) { @Override public boolean pulse() { graphics(graphics); @@ -440,7 +440,7 @@ public abstract class Entity extends Node { * @return {@code True} if succesful. */ public boolean animate(final Animation animation, int delay) { - World.getPulser().submit(new Pulse(delay, this) { + GameWorld.getPulser().submit(new Pulse(delay, this) { @Override public boolean pulse() { animate(animation); @@ -455,7 +455,7 @@ public abstract class Entity extends Node { * @param state the state. */ public void sendImpact(BattleState state) { - getProperties().getCombatPulse().setLastSentAttack(World.getTicks()); + getProperties().getCombatPulse().setLastSentAttack(GameWorld.getTicks()); } /** @@ -496,7 +496,7 @@ public abstract class Entity extends Node { */ public boolean faceTemporary(Entity entity, final Entity reset, int ticks) { if (face(entity)) { - World.getPulser().submit(new Pulse(ticks + 1, this) { + GameWorld.getPulser().submit(new Pulse(ticks + 1, this) { @Override public boolean pulse() { face(reset); @@ -603,7 +603,7 @@ public abstract class Entity extends Node { * @param ticks the ticks. */ public void sendChat(final String string, int ticks) { - World.getPulser().submit(new Pulse(ticks, this) { + GameWorld.getPulser().submit(new Pulse(ticks, this) { @Override public boolean pulse() { sendChat(string); @@ -848,7 +848,7 @@ public abstract class Entity extends Node { * @return {@code True} if so. */ public boolean hasFireResistance() { - return getAttribute("fire:immune",0) >= World.getTicks(); + return getAttribute("fire:immune",0) >= GameWorld.getTicks(); } /** diff --git a/Server/src/main/java/core/game/node/entity/combat/DeathTask.java b/Server/src/main/java/core/game/node/entity/combat/DeathTask.java index b07f55870..83922c552 100644 --- a/Server/src/main/java/core/game/node/entity/combat/DeathTask.java +++ b/Server/src/main/java/core/game/node/entity/combat/DeathTask.java @@ -15,7 +15,7 @@ import core.game.node.entity.player.link.prayer.PrayerType; import core.game.node.item.Item; import core.game.system.task.NodeTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; /** @@ -41,7 +41,7 @@ public final class DeathTask extends NodeTask { Entity e = (Entity) node; e.getWalkingQueue().reset(); e.setAttribute("state:death", true); - e.setAttribute("tick:death", World.getTicks()); + e.setAttribute("tick:death", GameWorld.getTicks()); e.lock(50); e.face(null); Entity killer = n.length > 0 ? (Entity) n[0] : e; @@ -77,7 +77,7 @@ public final class DeathTask extends NodeTask { TutorialStage.load(((Player) node), 55, false); } } - return e.getAttribute("tick:death", -1) <= World.getTicks() - ticks; + return e.getAttribute("tick:death", -1) <= GameWorld.getTicks() - ticks; } @Override diff --git a/Server/src/main/java/core/game/node/entity/combat/ImpactHandler.java b/Server/src/main/java/core/game/node/entity/combat/ImpactHandler.java index 0ef0f1806..46fe57c21 100644 --- a/Server/src/main/java/core/game/node/entity/combat/ImpactHandler.java +++ b/Server/src/main/java/core/game/node/entity/combat/ImpactHandler.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.prayer.PrayerType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.zone.ZoneType; import java.util.HashMap; @@ -80,7 +80,7 @@ public final class ImpactHandler { public Impact manualHit(final Entity source, int hit, final HitsplatType type, int ticks) { if (ticks > 0) { final int damage = hit; - World.getPulser().submit(new Pulse(ticks, entity) { + GameWorld.getPulser().submit(new Pulse(ticks, entity) { @Override public boolean pulse() { manualHit(source, damage, type); @@ -142,7 +142,7 @@ public final class ImpactHandler { if (fam) { source = ((Familiar) source).getOwner(); } - if (disabledTicks > World.getTicks()) { + if (disabledTicks > GameWorld.getTicks()) { return null; } if (entity instanceof Player && TutorialSession.getExtension((Player) entity).getStage() < TutorialSession.MAX_STAGE) { @@ -300,7 +300,7 @@ public final class ImpactHandler { * Sets the disabledTicks. */ public void setDisabledTicks(int ticks) { - this.disabledTicks = World.getTicks() + ticks; + this.disabledTicks = GameWorld.getTicks() + ticks; } /** diff --git a/Server/src/main/java/core/game/node/entity/combat/equipment/BoltEffect.java b/Server/src/main/java/core/game/node/entity/combat/equipment/BoltEffect.java index fbe159d3e..f14f180c0 100644 --- a/Server/src/main/java/core/game/node/entity/combat/equipment/BoltEffect.java +++ b/Server/src/main/java/core/game/node/entity/combat/equipment/BoltEffect.java @@ -8,7 +8,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.audio.Audio; import core.game.node.entity.state.EntityState; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; import org.rs09.consts.NPCs; @@ -174,13 +174,13 @@ public enum BoltEffect { int newDamage = (int) (state.getEstimatedHit() * 0.25); state.setEstimatedHit(state.getEstimatedHit() + newDamage); state.getAttacker().getSkills().heal((int) (state.getEstimatedHit() * 0.25)); - state.getAttacker().setAttribute("onyx-effect", World.getTicks() + 12); + state.getAttacker().setAttribute("onyx-effect", GameWorld.getTicks() + 12); super.impact(state); } @Override public boolean canFire(BattleState state) { - if (state.getAttacker().getAttribute("onyx-effect", 0) > World.getTicks()) { + if (state.getAttacker().getAttribute("onyx-effect", 0) > GameWorld.getTicks()) { return false; } if (state.getVictim() instanceof NPC) { diff --git a/Server/src/main/java/core/game/node/entity/combat/handlers/DragonfireSwingHandler.java b/Server/src/main/java/core/game/node/entity/combat/handlers/DragonfireSwingHandler.java index aa872b006..6ac038ad2 100644 --- a/Server/src/main/java/core/game/node/entity/combat/handlers/DragonfireSwingHandler.java +++ b/Server/src/main/java/core/game/node/entity/combat/handlers/DragonfireSwingHandler.java @@ -12,7 +12,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.state.EntityState; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; @@ -109,7 +109,7 @@ public class DragonfireSwingHandler extends CombatSwingHandler { return 1; } int ticks = 2 + (int) Math.floor(entity.getLocation().getDistance(victim.getLocation()) * 0.5); - entity.setAttribute("fireBreath", World.getTicks() + (ticks + 2)); + entity.setAttribute("fireBreath", GameWorld.getTicks() + (ticks + 2)); return ticks; } @@ -145,7 +145,7 @@ public class DragonfireSwingHandler extends CombatSwingHandler { return; } } - if (!fire && victim.getAttribute("freeze_immunity", -1) < World.getTicks() && RandomFunction.random(4) == 2) { + if (!fire && victim.getAttribute("freeze_immunity", -1) < GameWorld.getTicks() && RandomFunction.random(4) == 2) { victim.getStateManager().set(EntityState.FROZEN, 16); victim.graphics(Graphics.create(502)); } diff --git a/Server/src/main/java/core/game/node/entity/combat/special/ChainhitSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/ChainhitSpecialHandler.java index f7dfd6acc..e9794799d 100644 --- a/Server/src/main/java/core/game/node/entity/combat/special/ChainhitSpecialHandler.java +++ b/Server/src/main/java/core/game/node/entity/combat/special/ChainhitSpecialHandler.java @@ -18,7 +18,7 @@ import core.plugin.Initializable; import core.plugin.Plugin; import core.tools.RandomFunction; import rs09.game.node.entity.combat.handlers.RangeSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import java.util.Iterator; @@ -87,7 +87,7 @@ public final class ChainhitSpecialHandler extends RangeSwingHandler implements P int speed = (int) (32 + (victim.getLocation().getDistance(n.getLocation()) * 5)); Projectile.create(victim, n, 258, 40, 36, 32, speed, 5, 11).send(); n.getSkills().heal(100); - World.getPulser().submit(new Pulse(3) { + GameWorld.getPulser().submit(new Pulse(3) { @Override public boolean pulse() { @@ -128,7 +128,7 @@ public final class ChainhitSpecialHandler extends RangeSwingHandler implements P * @param state The battle state. */ public void handleHit(final Entity entity, final Entity victim, final Player player, final BattleState state) { - World.getPulser().submit(new Pulse(1, player, victim) { + GameWorld.getPulser().submit(new Pulse(1, player, victim) { @Override public boolean pulse() { ChainhitSpecialHandler.super.onImpact(player, victim, state); @@ -150,7 +150,7 @@ public final class ChainhitSpecialHandler extends RangeSwingHandler implements P double distance = victim.getLocation().getDistance(e.getLocation()); int speed = (int) (32 + (distance * 5)); Projectile.create(victim, e, 258, 40, 36, 32, speed, 5, 11).send(); - World.getPulser().submit(new Pulse((int) (distance / 3), entity, victim, e) { + GameWorld.getPulser().submit(new Pulse((int) (distance / 3), entity, victim, e) { @Override public boolean pulse() { BattleState bs = new BattleState(entity, e); diff --git a/Server/src/main/java/core/game/node/entity/combat/special/QuickSmashSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/QuickSmashSpecialHandler.java index 2bdbf4aa9..2f110af06 100644 --- a/Server/src/main/java/core/game/node/entity/combat/special/QuickSmashSpecialHandler.java +++ b/Server/src/main/java/core/game/node/entity/combat/special/QuickSmashSpecialHandler.java @@ -7,7 +7,7 @@ import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.audio.Audio; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; @@ -57,7 +57,7 @@ public final class QuickSmashSpecialHandler extends MeleeSwingHandler implements Player p = (Player) entity; if (victim == null) { victim = p.getProperties().getCombatPulse().getLastVictim(); - if (victim == null || World.getTicks() - p.getAttribute("combat-stop", -1) > 2 || !MeleeSwingHandler.Companion.canMelee(p, victim, 1)) { + if (victim == null || GameWorld.getTicks() - p.getAttribute("combat-stop", -1) > 2 || !MeleeSwingHandler.Companion.canMelee(p, victim, 1)) { p.getPacketDispatch().sendMessage("Warning: Since the maul's special is an instant attack, it will be wasted when used "); p.getPacketDispatch().sendMessage("on a first strike."); return -1; diff --git a/Server/src/main/java/core/game/node/entity/combat/special/SnapshotSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/SnapshotSpecialHandler.java index df282944f..b7fc1b0c3 100644 --- a/Server/src/main/java/core/game/node/entity/combat/special/SnapshotSpecialHandler.java +++ b/Server/src/main/java/core/game/node/entity/combat/special/SnapshotSpecialHandler.java @@ -13,7 +13,7 @@ import core.plugin.Initializable; import core.plugin.Plugin; import core.tools.RandomFunction; import rs09.game.node.entity.combat.handlers.RangeSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the magic shortbow special attack "Snapshot". @@ -88,7 +88,7 @@ public final class SnapshotSpecialHandler extends RangeSwingHandler implements P victim.getImpactHandler().handleImpact(entity, hitt, CombatStyle.RANGE, state); return; } - World.getPulser().submit(new Pulse(1, victim) { + GameWorld.getPulser().submit(new Pulse(1, victim) { @Override public boolean pulse() { victim.getImpactHandler().handleImpact(entity, hitt, CombatStyle.RANGE, state); diff --git a/Server/src/main/java/core/game/node/entity/combat/spell/BindSpell.java b/Server/src/main/java/core/game/node/entity/combat/spell/BindSpell.java index dfcc36d40..bbd7aa8c5 100644 --- a/Server/src/main/java/core/game/node/entity/combat/spell/BindSpell.java +++ b/Server/src/main/java/core/game/node/entity/combat/spell/BindSpell.java @@ -12,7 +12,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -124,7 +124,7 @@ public final class BindSpell extends CombatSpell { } victim.getWalkingQueue().reset(); victim.getLocks().lockMovement(tick); - entity.setAttribute("entangleDelay", World.getTicks() + tick + 2); + entity.setAttribute("entangleDelay", GameWorld.getTicks() + tick + 2); } @Override diff --git a/Server/src/main/java/core/game/node/entity/combat/spell/IceSpells.java b/Server/src/main/java/core/game/node/entity/combat/spell/IceSpells.java index de0114781..9f4e0b757 100644 --- a/Server/src/main/java/core/game/node/entity/combat/spell/IceSpells.java +++ b/Server/src/main/java/core/game/node/entity/combat/spell/IceSpells.java @@ -14,7 +14,7 @@ import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.entity.player.link.audio.Audio; import core.game.node.entity.state.EntityState; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; @@ -133,7 +133,7 @@ public final class IceSpells extends CombatSpell { } int ticks = (1 + (type.ordinal() - SpellType.RUSH.ordinal())) * 8; if (state.getEstimatedHit() > -1) { - if (victim.getAttribute("freeze_immunity", -1) < World.getTicks()) { + if (victim.getAttribute("freeze_immunity", -1) < GameWorld.getTicks()) { victim.getStateManager().set(EntityState.FROZEN, ticks); } else if (type == SpellType.BARRAGE) { state.setFrozen(true); diff --git a/Server/src/main/java/core/game/node/entity/combat/spell/MiasmicSpells.java b/Server/src/main/java/core/game/node/entity/combat/spell/MiasmicSpells.java index 324e49a18..5dbbe9df5 100644 --- a/Server/src/main/java/core/game/node/entity/combat/spell/MiasmicSpells.java +++ b/Server/src/main/java/core/game/node/entity/combat/spell/MiasmicSpells.java @@ -16,7 +16,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.entity.state.EntityState; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -119,7 +119,7 @@ public final class MiasmicSpells extends CombatSpell { @Override public void fireEffect(Entity entity, Entity victim, BattleState state) { - if (victim.getAttribute("miasmic_immunity", -1) < World.getTicks()) { + if (victim.getAttribute("miasmic_immunity", -1) < GameWorld.getTicks()) { victim.getStateManager().register(EntityState.MIASMIC, true, (getSpellId() - 15) * 20); } } @@ -140,7 +140,7 @@ public final class MiasmicSpells extends CombatSpell { @Override public boolean cast(Entity entity, Node target) { - if (!validStaffEquipped(entity) && !World.getSettings().isDevMode()) { + if (!validStaffEquipped(entity) && !GameWorld.getSettings().isDevMode()) { ((Player) entity).getPacketDispatch().sendMessage("You need to be wielding Zuriel's staff in order to cast this spell."); return false; } diff --git a/Server/src/main/java/core/game/node/entity/impl/Animator.java b/Server/src/main/java/core/game/node/entity/impl/Animator.java index 3eb1a493b..8bc30f93f 100644 --- a/Server/src/main/java/core/game/node/entity/impl/Animator.java +++ b/Server/src/main/java/core/game/node/entity/impl/Animator.java @@ -2,7 +2,7 @@ package core.game.node.entity.impl; import core.game.node.entity.Entity; import core.game.node.entity.npc.NPC; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.game.world.update.flag.npc.NPCAnimation; @@ -114,14 +114,14 @@ public final class Animator { */ public boolean animate(Animation animation, Graphics graphic) { if (animation != null) { - if (ticks > World.getTicks() && priority.ordinal() > animation.getPriority().ordinal()) { + if (ticks > GameWorld.getTicks() && priority.ordinal() > animation.getPriority().ordinal()) { return false; } if (animation.getId() == 0) { animation.setId(-1); } this.animation = animation; - ticks = World.getTicks() + animation.getDuration(); + ticks = GameWorld.getTicks() + animation.getDuration(); entity.getUpdateMasks().register(entity instanceof NPC ? new NPCAnimation(animation) : new AnimationFlag(animation)); priority = animation.getPriority(); } @@ -158,7 +158,7 @@ public final class Animator { * @return {@code True} if so. */ public boolean isAnimating() { - return animation != null && ticks > World.getTicks(); + return animation != null && ticks > GameWorld.getTicks(); } /** diff --git a/Server/src/main/java/core/game/node/entity/impl/ForceMovement.java b/Server/src/main/java/core/game/node/entity/impl/ForceMovement.java index afcacfa74..db76cebf9 100644 --- a/Server/src/main/java/core/game/node/entity/impl/ForceMovement.java +++ b/Server/src/main/java/core/game/node/entity/impl/ForceMovement.java @@ -3,7 +3,7 @@ package core.game.node.entity.impl; import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -237,7 +237,7 @@ public class ForceMovement extends Pulse { ForceMovement fm = new ForceMovement(e, start, destination, startAnim, animation, direction, commenceSpeed, pathSpeed); fm.start(); e.lock(); - World.getPulser().submit(fm); + GameWorld.getPulser().submit(fm); return fm; } @@ -260,7 +260,7 @@ public class ForceMovement extends Pulse { this.commenceSpeed = commence; start(); e.lock(); - World.getPulser().submit(this); + GameWorld.getPulser().submit(this); } /** diff --git a/Server/src/main/java/core/game/node/entity/impl/PulseManager.java b/Server/src/main/java/core/game/node/entity/impl/PulseManager.java index aa0c4e125..f7cafd0cf 100644 --- a/Server/src/main/java/core/game/node/entity/impl/PulseManager.java +++ b/Server/src/main/java/core/game/node/entity/impl/PulseManager.java @@ -6,7 +6,7 @@ import core.game.node.entity.combat.DeathTask; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; import rs09.game.node.entity.combat.CombatPulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents an entity's pulse manager. @@ -35,9 +35,9 @@ public final class PulseManager { pulse.start(); if (pulse.isRunning()) { if (fast) { - World.getPulser().submit(current = pulse); + GameWorld.getPulser().submit(current = pulse); } else { - World.getPulser().submit(current = pulse); + GameWorld.getPulser().submit(current = pulse); } } } diff --git a/Server/src/main/java/core/game/node/entity/lock/ActionLocks.java b/Server/src/main/java/core/game/node/entity/lock/ActionLocks.java index 716c9eb87..f24ea9a9a 100644 --- a/Server/src/main/java/core/game/node/entity/lock/ActionLocks.java +++ b/Server/src/main/java/core/game/node/entity/lock/ActionLocks.java @@ -1,7 +1,7 @@ package core.game.node.entity.lock; import core.game.node.Node; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.HashMap; import java.util.Map; @@ -55,7 +55,7 @@ public final class ActionLocks { * indefinite time. */ public void lock() { - lock(Integer.MAX_VALUE - World.getTicks()); + lock(Integer.MAX_VALUE - GameWorld.getTicks()); } /** diff --git a/Server/src/main/java/core/game/node/entity/lock/Lock.java b/Server/src/main/java/core/game/node/entity/lock/Lock.java index 3f07fda07..005e55e64 100644 --- a/Server/src/main/java/core/game/node/entity/lock/Lock.java +++ b/Server/src/main/java/core/game/node/entity/lock/Lock.java @@ -1,6 +1,6 @@ package core.game.node.entity.lock; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents a lock. @@ -43,7 +43,7 @@ public class Lock { * Locks for an indefinite time. */ public void lock() { - lock(Integer.MAX_VALUE - World.getTicks()); + lock(Integer.MAX_VALUE - GameWorld.getTicks()); } /** @@ -51,8 +51,8 @@ public class Lock { * @param ticks The amount of ticks to lock for. */ public void lock(int ticks) { - if (ticks > expiration - World.getTicks()) { - this.expiration = World.getTicks() + ticks; + if (ticks > expiration - GameWorld.getTicks()) { + this.expiration = GameWorld.getTicks() + ticks; } } @@ -68,7 +68,7 @@ public class Lock { * @return {@code True} if so. */ public boolean isLocked() { - return expiration > World.getTicks(); + return expiration > GameWorld.getTicks(); } /** diff --git a/Server/src/main/java/core/game/node/entity/npc/NPC.java b/Server/src/main/java/core/game/node/entity/npc/NPC.java index 5b955b579..3bd79964b 100644 --- a/Server/src/main/java/core/game/node/entity/npc/NPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/NPC.java @@ -36,9 +36,11 @@ import rs09.game.content.jobs.JobManager; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.system.config.NPCConfigParser; import rs09.game.system.config.ShopParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; +import java.util.Map; + import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_BASE; import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_ENEMIES_KILLED; @@ -345,7 +347,7 @@ public class NPC extends Entity { @Override public boolean isInvisible() { - if (!isActive() || getRespawnTick() > World.getTicks()) { + if (!isActive() || getRespawnTick() > GameWorld.getTicks()) { return true; } return super.isInvisible(); @@ -411,10 +413,10 @@ public class NPC extends Entity { onRegionInactivity(); return; } - if (respawnTick > World.getTicks()) { + if (respawnTick > GameWorld.getTicks()) { return; } - if (respawnTick == World.getTicks()) { + if (respawnTick == GameWorld.getTicks()) { onRespawn(); } handleTickActions(); @@ -447,7 +449,7 @@ public class NPC extends Entity { if (aggressiveHandler != null) { aggressiveHandler.setPauseTicks(walkRadius + 1); } - nextWalk = World.getTicks() + walkRadius + 1; + nextWalk = GameWorld.getTicks() + walkRadius + 1; return; } if (aggressive && aggressiveHandler != null && aggressiveHandler.selectTarget()) { @@ -460,7 +462,7 @@ public class NPC extends Entity { if (!getLocks().isMovementLocked()) { if (dialoguePlayer == null || !dialoguePlayer.isActive() || !dialoguePlayer.getInterfaceManager().hasChatbox()) { dialoguePlayer = null; - if (walks && !getPulseManager().hasPulseRunning() && !getProperties().getCombatPulse().isAttacking() && !getProperties().getCombatPulse().isInCombat() && nextWalk < World.getTicks()) { + if (walks && !getPulseManager().hasPulseRunning() && !getProperties().getCombatPulse().isAttacking() && !getProperties().getCombatPulse().isInCombat() && nextWalk < GameWorld.getTicks()) { setNextWalk(); Location l = getMovementDestination(); if (canMove(l)) { @@ -474,16 +476,16 @@ public class NPC extends Entity { } } if (shop != null) { - if (shop.getLastRestock() < World.getTicks()) { + if (shop.getLastRestock() < GameWorld.getTicks()) { if (shop.isRestock()) { shop.restock(); - shop.setLastRestock(World.getTicks() + 100); + shop.setLastRestock(GameWorld.getTicks() + 100); } } } - if (forceTalk != null && getAttribute("lastForceTalk", 0) < World.getTicks()) { + if (forceTalk != null && getAttribute("lastForceTalk", 0) < GameWorld.getTicks()) { sendChat(forceTalk); - setAttribute("lastForceTalk", World.getTicks() + RandomFunction.random(15, 30)); + setAttribute("lastForceTalk", GameWorld.getTicks() + RandomFunction.random(15, 30)); } } @@ -491,11 +493,11 @@ public class NPC extends Entity { * Sets the next walk. */ public void setNextWalk() { - nextWalk = World.getTicks() + 5 + RandomFunction.randomize(10); + nextWalk = GameWorld.getTicks() + 5 + RandomFunction.randomize(10); } public void resetWalk() { - nextWalk = World.getTicks() - 1; + nextWalk = GameWorld.getTicks() - 1; getWalkingQueue().reset(); } @@ -529,7 +531,7 @@ public class NPC extends Entity { if (killer instanceof Player && killer.getAttribute("jobs:id",null) != null) { JobManager.handleDeath(id,(Player) killer); } - setRespawnTick(World.getTicks() + definition.getConfiguration(NPCConfigParser.RESPAWN_DELAY, 17)); + setRespawnTick(GameWorld.getTicks() + definition.getConfiguration(NPCConfigParser.RESPAWN_DELAY, 17)); Player p = !(killer instanceof Player) ? null : (Player) killer; if (p != null) { p.incrementAttribute("/save:" + STATS_BASE + ":" + STATS_ENEMIES_KILLED); diff --git a/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveBehavior.java b/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveBehavior.java index 8d76c772f..254926ad9 100644 --- a/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveBehavior.java +++ b/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveBehavior.java @@ -4,7 +4,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.combat.DeathTask; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import java.util.ArrayList; @@ -75,9 +75,9 @@ public class AggressiveBehavior { if (RegionManager.forId(regionId).isTolerated(target.asPlayer())) { return false; } - int ticks = World.getTicks() - npc.getAggressiveHandler().getPlayerTolerance()[target.getIndex()]; + int ticks = GameWorld.getTicks() - npc.getAggressiveHandler().getPlayerTolerance()[target.getIndex()]; if (ticks > 3000) { - npc.getAggressiveHandler().getPlayerTolerance()[target.getIndex()] = World.getTicks(); + npc.getAggressiveHandler().getPlayerTolerance()[target.getIndex()] = GameWorld.getTicks(); } else if (ticks > 1500) { return false; } diff --git a/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveHandler.java b/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveHandler.java index c1cd3399a..3d960d549 100644 --- a/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveHandler.java +++ b/Server/src/main/java/core/game/node/entity/npc/agg/AggressiveHandler.java @@ -5,7 +5,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.combat.DeathTask; import core.game.node.entity.player.Player; import core.game.node.entity.player.info.Rights; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.tools.RandomFunction; /** @@ -69,7 +69,7 @@ public final class AggressiveHandler { * @return {@code True} if the entity has selected a target. */ public boolean selectTarget() { - if (pauseTicks > World.getTicks() || entity.getLocks().isInteractionLocked()) { + if (pauseTicks > GameWorld.getTicks() || entity.getLocks().isInteractionLocked()) { return false; } if ((!targetSwitching && entity.getProperties().getCombatPulse().isAttacking()) || DeathTask.isDead(entity)) { @@ -139,7 +139,7 @@ public final class AggressiveHandler { * @param pauseTicks The amount of ticks to pause for. */ public void setPauseTicks(int pauseTicks) { - this.pauseTicks = World.getTicks() + pauseTicks; + this.pauseTicks = GameWorld.getTicks() + pauseTicks; } /** diff --git a/Server/src/main/java/core/game/node/entity/npc/bosses/GiantMoleNPC.java b/Server/src/main/java/core/game/node/entity/npc/bosses/GiantMoleNPC.java index d8b88bf61..42f63420d 100644 --- a/Server/src/main/java/core/game/node/entity/npc/bosses/GiantMoleNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/bosses/GiantMoleNPC.java @@ -20,7 +20,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -120,7 +120,7 @@ public final class GiantMoleNPC extends AbstractNPC { dest = DIG_LOCATIONS[(index + 1) % DIG_LOCATIONS.length]; } final Location destination = dest; - World.getPulser().submit(new Pulse(1, this) { + GameWorld.getPulser().submit(new Pulse(1, this) { int count = 0; Location hole; @@ -280,7 +280,7 @@ public final class GiantMoleNPC extends AbstractNPC { public boolean handle(final Player player, Node node, String option) { player.animate(Animation.create(828)); player.lock(2); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(Location.create(2985, 3316, 0)); diff --git a/Server/src/main/java/core/game/node/entity/npc/bosses/KalphiteQueenNPC.java b/Server/src/main/java/core/game/node/entity/npc/bosses/KalphiteQueenNPC.java index bea06718f..e94be4859 100644 --- a/Server/src/main/java/core/game/node/entity/npc/bosses/KalphiteQueenNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/bosses/KalphiteQueenNPC.java @@ -16,7 +16,7 @@ import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -368,7 +368,7 @@ public final class KalphiteQueenNPC extends AbstractNPC { final int targetIndex = index; t.getVictim().graphics(MAGIC_END_GFX); Projectile.create(victim, t.getVictim(), 280, 41, 36, 0, 30, 15, 11).send(); - World.getPulser().submit(new Pulse(1, t.getVictim()) { + GameWorld.getPulser().submit(new Pulse(1, t.getVictim()) { @Override public boolean pulse() { handleMagicImpact(e, victim, t.getVictim(), targets, targetIndex); diff --git a/Server/src/main/java/core/game/node/entity/npc/bosses/corp/CorporealBeastNPC.java b/Server/src/main/java/core/game/node/entity/npc/bosses/corp/CorporealBeastNPC.java index 9d474e888..cdb03ce13 100644 --- a/Server/src/main/java/core/game/node/entity/npc/bosses/corp/CorporealBeastNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/bosses/corp/CorporealBeastNPC.java @@ -21,7 +21,7 @@ import core.plugin.Plugin; import core.tools.RandomFunction; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.node.entity.combat.handlers.MultiSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -192,7 +192,7 @@ public final class CorporealBeastNPC extends AbstractNPC { npc.darkEnergyCore = NPC.create(8127, l, npc); npc.darkEnergyCore.setActive(true); Projectile.create(npc.getLocation().transform(2, 2, 0), l, 1828, 60, 0, 0, 60, 20, 0).send(); - World.getPulser().submit(new Pulse(2, npc) { + GameWorld.getPulser().submit(new Pulse(2, npc) { @Override public boolean pulse() { npc.darkEnergyCore.init(); @@ -210,7 +210,7 @@ public final class CorporealBeastNPC extends AbstractNPC { entity.animate(getCurrent().getAnimation()); Projectile.create(entity, null, 1824, 60, 0, 41, 0).transform(entity, location, true, 46, 10).send(); int ticks = 1 + (int) Math.ceil(entity.getLocation().getDistance(location) * 0.5); - World.getPulser().submit(new Pulse(ticks) { + GameWorld.getPulser().submit(new Pulse(ticks) { boolean secondStage = false; List players = RegionManager.getLocalPlayers(entity); Location[] locations = null; diff --git a/Server/src/main/java/core/game/node/entity/npc/bosses/corp/DarkEnergyCoreNPC.java b/Server/src/main/java/core/game/node/entity/npc/bosses/corp/DarkEnergyCoreNPC.java index 2220c1172..0da933b84 100644 --- a/Server/src/main/java/core/game/node/entity/npc/bosses/corp/DarkEnergyCoreNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/bosses/corp/DarkEnergyCoreNPC.java @@ -8,7 +8,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.state.EntityState; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.plugin.Initializable; import core.tools.RandomFunction; @@ -106,7 +106,7 @@ public final class DarkEnergyCoreNPC extends AbstractNPC { private void jump(final Location location) { setInvisible(true); Projectile.create(getLocation(), location, 1828, 0, 0, 0, 60, 20, 0).send(); - World.getPulser().submit(new Pulse(2, this) { + GameWorld.getPulser().submit(new Pulse(2, this) { @Override public boolean pulse() { getProperties().setTeleportLocation(location); diff --git a/Server/src/main/java/core/game/node/entity/npc/city/pollnivneach/AliTheCamelHandler.java b/Server/src/main/java/core/game/node/entity/npc/city/pollnivneach/AliTheCamelHandler.java index f9d51bce7..f8a43b7cf 100644 --- a/Server/src/main/java/core/game/node/entity/npc/city/pollnivneach/AliTheCamelHandler.java +++ b/Server/src/main/java/core/game/node/entity/npc/city/pollnivneach/AliTheCamelHandler.java @@ -9,7 +9,7 @@ import core.game.node.Node; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; import core.tools.RandomFunction; @@ -70,7 +70,7 @@ public class AliTheCamelHandler extends OptionHandler { player.lock(); player.animate(new Animation(7299)); player.getImpactHandler().setDisabledTicks(3); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { @Override public boolean pulse() { player.unlock(); diff --git a/Server/src/main/java/core/game/node/entity/npc/city/sophanem/WallShortcut.java b/Server/src/main/java/core/game/node/entity/npc/city/sophanem/WallShortcut.java index 642d7ff8f..3a394d3ea 100644 --- a/Server/src/main/java/core/game/node/entity/npc/city/sophanem/WallShortcut.java +++ b/Server/src/main/java/core/game/node/entity/npc/city/sophanem/WallShortcut.java @@ -9,7 +9,7 @@ import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -43,7 +43,7 @@ public final class WallShortcut extends OptionHandler { final Scenery o = (Scenery) node; if (o.getId() == 6620) { ForceMovement.run(player, Location.create(3320, 2796, 0), o.getLocation(), CLIMB_DOWN); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/node/entity/npc/city/varrock/VarrockEastBartenderDialogue.java b/Server/src/main/java/core/game/node/entity/npc/city/varrock/VarrockEastBartenderDialogue.java index 830138684..586be5d82 100644 --- a/Server/src/main/java/core/game/node/entity/npc/city/varrock/VarrockEastBartenderDialogue.java +++ b/Server/src/main/java/core/game/node/entity/npc/city/varrock/VarrockEastBartenderDialogue.java @@ -6,7 +6,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.plugin.Initializable; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the VarrockEastBartenderDialogue dialogue. @@ -98,7 +98,7 @@ public class VarrockEastBartenderDialogue extends DialoguePlugin { break; case 160: - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "This world around us... is a computer game.... called", "" + World.getSettings().getName() + "."); + interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "This world around us... is a computer game.... called", "" + GameWorld.getSettings().getName() + "."); stage = 161; break; case 161: diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/BeaverNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/BeaverNPC.java index bd3efeb38..aadf2cdbc 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/BeaverNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/BeaverNPC.java @@ -9,7 +9,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.path.Pathfinder; import core.game.world.update.flag.context.Animation; @@ -81,14 +81,14 @@ public class BeaverNPC extends Forager { owner.lock(ticks); multiChop = true; getPulseManager().clear(); - World.getPulser().submit(new Pulse(ticks, owner, this) { + GameWorld.getPulser().submit(new Pulse(ticks, owner, this) { @Override public boolean pulse() { lock(11); owner.lock(11); faceLocation(object.getLocation()); animate(Animation.create(7722)); - World.getPulser().submit(new Pulse(1, owner, BeaverNPC.this) { + GameWorld.getPulser().submit(new Pulse(1, owner, BeaverNPC.this) { int counter; boolean recieved = false; diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/BunyipNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/BunyipNPC.java index 31e645106..34f2c8f28 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/BunyipNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/BunyipNPC.java @@ -14,7 +14,7 @@ import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.impl.Projectile; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -64,7 +64,7 @@ public class BunyipNPC extends Familiar { @Override public void tick() { super.tick(); - if (lastHeal < World.getTicks()) { + if (lastHeal < GameWorld.getTicks()) { setLastHeal(); owner.graphics(Graphics.create(1507), 1); // Since https://runescape.wiki/w/Bunyip?oldid=391088 (2008-04-02) @@ -85,7 +85,7 @@ public class BunyipNPC extends Familiar { * Sets the last heal. */ public void setLastHeal() { - this.lastHeal = World.getTicks() + (int) (15 / 0.6); + this.lastHeal = GameWorld.getTicks() + (int) (15 / 0.6); } @Override diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/CockatriceFamiliarNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/CockatriceFamiliarNPC.java index 32a79ca23..079d1d662 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/CockatriceFamiliarNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/CockatriceFamiliarNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.impl.Projectile; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -58,7 +58,7 @@ public final class CockatriceFamiliarNPC implements Plugin { } familiar.faceTemporary(target, 2); familiar.visualize(Animation.create(7762), Graphics.create(1467)); - World.getPulser().submit(new Pulse(1, familiar.getOwner(), familiar, target) { + GameWorld.getPulser().submit(new Pulse(1, familiar.getOwner(), familiar, target) { @Override public boolean pulse() { target.getSkills().updateLevel(skill, -3, 0); diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/DesertWyrmNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/DesertWyrmNPC.java index bd3952678..84dd26460 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/DesertWyrmNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/DesertWyrmNPC.java @@ -22,7 +22,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -107,7 +107,7 @@ public final class DesertWyrmNPC extends Forager { player.lock(9); familiar.lock(8); familiar.visualize(new Animation(7800), new Graphics(1412)); - World.getPulser().submit(new Pulse(1, player, familiar) { + GameWorld.getPulser().submit(new Pulse(1, player, familiar) { int counter; @Override diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/DreadfowlNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/DreadfowlNPC.java index 2350d3e12..783dcd95f 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/DreadfowlNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/DreadfowlNPC.java @@ -16,7 +16,7 @@ import core.game.node.entity.impl.Projectile; import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; @@ -93,7 +93,7 @@ public final class DreadfowlNPC extends Familiar { owner.getPacketDispatch().sendMessage("Your familiar can only attack when you're in combat."); return false; } - if (getProperties().getCombatPulse().getNextAttack() > World.getTicks() || CombatStyle.MAGIC.getSwingHandler().canSwing(this, target) == InteractionType.NO_INTERACT) { + if (getProperties().getCombatPulse().getNextAttack() > GameWorld.getTicks() || CombatStyle.MAGIC.getSwingHandler().canSwing(this, target) == InteractionType.NO_INTERACT) { specialMove = true; getProperties().getCombatPulse().attack(target); return true; @@ -102,7 +102,7 @@ public final class DreadfowlNPC extends Familiar { Projectile.magic(this, target, 1318, 40, 36, 51, 10).send(); int ticks = 2 + (int) Math.floor(getLocation().getDistance(target.getLocation()) * 0.5); getProperties().getCombatPulse().setNextAttack(4); - World.getPulser().submit(new Pulse(ticks, this, target) { + GameWorld.getPulser().submit(new Pulse(ticks, this, target) { @Override public boolean pulse() { BattleState state = new BattleState(DreadfowlNPC.this, target); diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/ForgeRegentNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/ForgeRegentNPC.java index 0e7d3f8ac..7b64dc9d4 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/ForgeRegentNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/ForgeRegentNPC.java @@ -9,7 +9,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.player.FaceLocationFlag; @@ -143,7 +143,7 @@ public class ForgeRegentNPC extends Familiar { familiar.animate(FIREMAKE_ANIMATION); if (player.getInventory().remove(event.getUsedItem())) { final GroundItem ground = GroundItemManager.create(event.getUsedItem(), familiar.getLocation(), player); - World.getPulser().submit(new Pulse(ticks, player, familiar) { + GameWorld.getPulser().submit(new Pulse(ticks, player, familiar) { @Override public boolean pulse() { if (!ground.isActive()) { diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/FruitBatNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/FruitBatNPC.java index e17d06d2b..464b6f41f 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/FruitBatNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/FruitBatNPC.java @@ -8,7 +8,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; @@ -92,7 +92,7 @@ public class FruitBatNPC extends Forager { */ @Override protected boolean specialMove(FamiliarSpecial special) { - if (owner.getAttribute("fruit-bat", 0) > World.getTicks()) { + if (owner.getAttribute("fruit-bat", 0) > GameWorld.getTicks()) { return false; } @@ -104,9 +104,9 @@ public class FruitBatNPC extends Forager { graphics(new Graphics(1332, 200)); animate(new Animation(8321), 3); // TODO - this animates the fruit bat with the splattering fruit animation, should do it for all falling fruits but Items are not Entities and therefore cannot animate graphics(new Graphics(1331), 4); - owner.setAttribute("fruit-bat", World.getTicks() + 5); + owner.setAttribute("fruit-bat", GameWorld.getTicks() + 5); lock(4); - World.getPulser().submit(new Pulse(4, this) { + GameWorld.getPulser().submit(new Pulse(4, this) { @Override public boolean pulse() { if (anyFruit){ diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/GiantChinchompaNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/GiantChinchompaNPC.java index 14a963ff9..2d6e46a6d 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/GiantChinchompaNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/GiantChinchompaNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.combat.ImpactHandler.HitsplatType; import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -64,7 +64,7 @@ public class GiantChinchompaNPC extends Familiar { sendChat("Squeak!"); animate(Animation.create(7758)); graphics(Graphics.create(1364)); - World.getPulser().submit(new Pulse(3, owner, this) { + GameWorld.getPulser().submit(new Pulse(3, owner, this) { @Override public boolean pulse() { for (Entity entity : entitys) { diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/IbisNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/IbisNPC.java index 7bb2ea53d..0fe94ef0f 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/IbisNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/IbisNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -73,7 +73,7 @@ public class IbisNPC extends Forager { @Override protected boolean specialMove(FamiliarSpecial special) { animate(Animation.create(8201)); - World.getPulser().submit(new Pulse(3, owner, this) { + GameWorld.getPulser().submit(new Pulse(3, owner, this) { @Override public boolean pulse() { Location loc = null; diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/MacawNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/MacawNPC.java index 776100108..8c54317cb 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/MacawNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/MacawNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -65,21 +65,21 @@ public class MacawNPC extends Forager { @Override protected boolean specialMove(FamiliarSpecial special) { - if (specialDelay > World.getTicks()) { + if (specialDelay > GameWorld.getTicks()) { owner.getPacketDispatch().sendMessage("You must wait one minute until using the macaws special again."); return false; } final Item herb = HERBS[RandomFunction.random(HERBS.length)]; animate(Animation.create(8013)); graphics(Graphics.create(1321), 2); - World.getPulser().submit(new Pulse(5, owner) { + GameWorld.getPulser().submit(new Pulse(5, owner) { @Override public boolean pulse() { GroundItemManager.create(herb, getLocation(), owner); return true; } }); - specialDelay = World.getTicks() + 100; + specialDelay = GameWorld.getTicks() + 100; return true; } diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/MinotaurFamiliarNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/MinotaurFamiliarNPC.java index 5092761e0..83b5222af 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/MinotaurFamiliarNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/MinotaurFamiliarNPC.java @@ -9,7 +9,7 @@ import core.game.node.entity.impl.Projectile; import core.game.node.entity.player.Player; import core.game.node.entity.state.EntityState; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -57,7 +57,7 @@ public final class MinotaurFamiliarNPC implements Plugin { familiar.visualize(Animation.create(8026), Graphics.create(1496)); if (!(familiar instanceof BronzeMinotaurNPC || familiar instanceof RuneMinotaurNPC) && RandomFunction.random(10) < 6) { final int ticks = 2 + (int) Math.floor(familiar.getLocation().getDistance(target.getLocation()) * 0.5); - World.getPulser().submit(new Pulse(ticks) { + GameWorld.getPulser().submit(new Pulse(ticks) { @Override public boolean pulse() { target.getStateManager().set(EntityState.STUNNED, 4); diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/PyreLordNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/PyreLordNPC.java index ba326a784..da1335864 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/PyreLordNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/PyreLordNPC.java @@ -18,7 +18,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -122,7 +122,7 @@ public class PyreLordNPC extends Familiar { familiar.animate(FIREMAKE_ANIMATION); if (player.getInventory().remove(event.getUsedItem())) { final GroundItem ground = GroundItemManager.create(event.getUsedItem(), familiar.getLocation(), player); - World.getPulser().submit(new Pulse(ticks, player, familiar) { + GameWorld.getPulser().submit(new Pulse(ticks, player, familiar) { @Override public boolean pulse() { if (!ground.isActive()) { diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritKalphiteNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritKalphiteNPC.java index 7157814b0..43f8caecd 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritKalphiteNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritKalphiteNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.impl.Projectile; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -52,7 +52,7 @@ public class SpiritKalphiteNPC extends BurdenBeast { } final List entitys = RegionManager.getLocalEntitys(owner, 6); visualize(Animation.create(8517), Graphics.create(1350)); - World.getPulser().submit(new Pulse(1, owner) { + GameWorld.getPulser().submit(new Pulse(1, owner) { @Override public boolean pulse() { int count = 0; diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritSpiderNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritSpiderNPC.java index 3287bd5ce..59e8f2404 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritSpiderNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritSpiderNPC.java @@ -7,7 +7,7 @@ import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.player.Player; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -29,7 +29,7 @@ public class SpiritSpiderNPC extends Familiar { /** * The delay until the next chance of random eggs. */ - private int eggDelay = World.getTicks() + 500; + private int eggDelay = GameWorld.getTicks() + 500; /** * Constructs a new {@code SpiritSpiderNPC} {@code Object}. @@ -50,11 +50,11 @@ public class SpiritSpiderNPC extends Familiar { @Override public void handleFamiliarTick() { super.handleFamiliarTick(); - if (eggDelay < World.getTicks()) { + if (eggDelay < GameWorld.getTicks()) { if (RandomFunction.random(25) == 5) { createEggs(); sendChat("Clicketyclack"); - eggDelay = World.getTicks() + 500; + eggDelay = GameWorld.getTicks() + 500; } } } diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritWolfNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritWolfNPC.java index f2450e34d..a7d4897b8 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritWolfNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/SpiritWolfNPC.java @@ -10,7 +10,7 @@ import core.game.node.entity.impl.Projectile; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.path.Path; @@ -111,7 +111,7 @@ public final class SpiritWolfNPC extends Familiar { faceTemporary(npc, owner, 2); super.visualize(Animation.create(8293), new Graphics(1334, 96)); Projectile.magic(this, npc, 1333, 40, 36, 50, 5).send(); - World.getPulser().submit(new Pulse(2, this, npc) { + GameWorld.getPulser().submit(new Pulse(2, this, npc) { @Override public boolean pulse() { npc.faceTemporary(SpiritWolfNPC.this, 2); diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/ThornySnailNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/ThornySnailNPC.java index d9f22dfcc..7c6b38c01 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/ThornySnailNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/ThornySnailNPC.java @@ -11,7 +11,7 @@ import core.game.node.entity.impl.Projectile; import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; @@ -57,7 +57,7 @@ public class ThornySnailNPC extends BurdenBeast { int ticks = 2 + (int) Math.floor(getLocation().getDistance(target.getLocation()) * 0.5); getProperties().getCombatPulse().setNextAttack(4); faceTemporary(target, 2); - World.getPulser().submit(new Pulse(ticks, this, target) { + GameWorld.getPulser().submit(new Pulse(ticks, this, target) { @Override public boolean pulse() { BattleState state = new BattleState(ThornySnailNPC.this, target); diff --git a/Server/src/main/java/core/game/node/entity/npc/familiar/VoidFamiliarNPC.java b/Server/src/main/java/core/game/node/entity/npc/familiar/VoidFamiliarNPC.java index c56997e0d..255cd6c62 100644 --- a/Server/src/main/java/core/game/node/entity/npc/familiar/VoidFamiliarNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/familiar/VoidFamiliarNPC.java @@ -13,7 +13,7 @@ import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -55,7 +55,7 @@ public final class VoidFamiliarNPC implements Plugin { public boolean callToArms(Familiar familiar, FamiliarSpecial special) { final Player owner = familiar.getOwner(); owner.lock(); - World.getPulser().submit(new Pulse(1, owner) { + GameWorld.getPulser().submit(new Pulse(1, owner) { int counter; @Override @@ -195,9 +195,9 @@ public final class VoidFamiliarNPC implements Plugin { @Override public void handleFamiliarTick() { super.handleFamiliarTick(); - if (healDelay < World.getTicks()) { + if (healDelay < GameWorld.getTicks()) { getSkills().heal(1); - healDelay = World.getTicks() + 25; + healDelay = GameWorld.getTicks() + 25; } } diff --git a/Server/src/main/java/core/game/node/entity/npc/other/ArmourSuitNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/ArmourSuitNPC.java index 423b5282c..013071479 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/ArmourSuitNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/ArmourSuitNPC.java @@ -4,7 +4,7 @@ import core.game.node.entity.npc.AbstractNPC; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.map.Location; @@ -36,7 +36,7 @@ public final class ArmourSuitNPC extends AbstractNPC { public void init() { super.init(); super.setRespawn(false); - World.getPulser().submit(new Pulse(50, this) { + GameWorld.getPulser().submit(new Pulse(50, this) { @Override public boolean pulse() { if (!getProperties().getCombatPulse().isAttacking() && !inCombat()) { diff --git a/Server/src/main/java/core/game/node/entity/npc/other/BorkNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/BorkNPC.java index f2a4b4aa0..c464ec4c0 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/BorkNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/BorkNPC.java @@ -14,7 +14,7 @@ import core.game.node.item.ChanceItem; import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.game.world.update.flag.context.Animation; @@ -136,7 +136,7 @@ public class BorkNPC extends AbstractNPC { if (player.getDialogueInterpreter().getDialogue() != null) { player.getDialogueInterpreter().getDialogue().end(); } - World.getPulser().submit(new Pulse(10, player) { + GameWorld.getPulser().submit(new Pulse(10, player) { @Override public boolean pulse() { @@ -193,14 +193,14 @@ public class BorkNPC extends AbstractNPC { getProperties().getCombatPulse().stop(); player.getProperties().getCombatPulse().stop(); getAnimator().forceAnimation(Animation.create(8757)); - World.getPulser().submit(new Pulse(1, player, this) { + GameWorld.getPulser().submit(new Pulse(1, player, this) { @Override public boolean pulse() { getAnimator().forceAnimation(Animation.create(8757)); sendChat("Come to my aid, brothers!"); player.sendMessage("Bork strikes the ground with his axe."); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { @Override public boolean pulse() { @@ -209,7 +209,7 @@ public class BorkNPC extends AbstractNPC { } }); - World.getPulser().submit(new Pulse(13, player) { + GameWorld.getPulser().submit(new Pulse(13, player) { @Override public boolean pulse() { @@ -278,7 +278,7 @@ public class BorkNPC extends AbstractNPC { /** * The last talk. */ - private int lastTalk = World.getTicks() + 30; + private int lastTalk = GameWorld.getTicks() + 30; /** * Constructs a new {@Code OrkLegion} {@Code Object} @@ -303,9 +303,9 @@ public class BorkNPC extends AbstractNPC { return; } - if (lastTalk < World.getTicks()) { + if (lastTalk < GameWorld.getTicks()) { sendChat(LEGION_CHATS[RandomFunction.random(LEGION_CHATS.length)]); - lastTalk = World.getTicks() + 30; + lastTalk = GameWorld.getTicks() + 30; } } @@ -499,7 +499,7 @@ public class BorkNPC extends AbstractNPC { bork.cutscene.player = player; player.lock(); player.getInterfaceManager().open(new Component(692)); - World.getPulser().submit(new Pulse(13, player) { + GameWorld.getPulser().submit(new Pulse(13, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/node/entity/npc/other/DraynorTreeNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/DraynorTreeNPC.java index da2e97e35..f136479ef 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/DraynorTreeNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/DraynorTreeNPC.java @@ -6,7 +6,7 @@ import core.game.node.entity.combat.ImpactHandler.HitsplatType; import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -61,13 +61,13 @@ public final class DraynorTreeNPC extends AbstractNPC { public void tick() { final List players = RegionManager.getLocalPlayers(this, 1); if (players.size() != 0) { - if (attackDelay < World.getTicks()) { + if (attackDelay < GameWorld.getTicks()) { for (Player p : players) { faceTemporary(p, 2); getAnimator().forceAnimation(ANIMATION); int hit = RandomFunction.random(2); p.getImpactHandler().manualHit(this, hit, hit > 0 ? HitsplatType.NORMAL : HitsplatType.MISS); - attackDelay = World.getTicks() + 3; + attackDelay = GameWorld.getTicks() + 3; p.animate(p.getProperties().getDefenceAnimation()); return; } diff --git a/Server/src/main/java/core/game/node/entity/npc/other/ElementalWizardNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/ElementalWizardNPC.java index 85c59ac50..1440c25df 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/ElementalWizardNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/ElementalWizardNPC.java @@ -14,7 +14,7 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -307,7 +307,7 @@ public final class ElementalWizardNPC extends AbstractNPC { player.graphics(Graphics.create(453)); player.lock(8); player.getLocks().lockMovement(10000); - World.getPulser().submit(new Pulse(12) { + GameWorld.getPulser().submit(new Pulse(12) { @Override public boolean pulse() { player.getWalkingQueue().reset(); diff --git a/Server/src/main/java/core/game/node/entity/npc/other/FishingNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/FishingNPC.java index 8183ae285..88dcd7b75 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/FishingNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/FishingNPC.java @@ -2,7 +2,7 @@ package core.game.node.entity.npc.other; import core.game.node.entity.skill.fishing.FishSpots; import core.game.node.entity.npc.AbstractNPC; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.plugin.Initializable; @@ -54,7 +54,7 @@ public final class FishingNPC extends AbstractNPC { if (spot == null) { return; } - if (switchDelay < World.getTicks()) { + if (switchDelay < GameWorld.getTicks()) { moveSpot(); } } @@ -75,7 +75,7 @@ public final class FishingNPC extends AbstractNPC { } else { setInvisible(true); } - switchDelay = World.getTicks() + RandomFunction.random(200, 390); + switchDelay = GameWorld.getTicks() + RandomFunction.random(200, 390); return; } if (spot == FishSpots.TUTORIAL_ISLAND) { @@ -85,7 +85,7 @@ public final class FishingNPC extends AbstractNPC { if (RegionManager.getLocalNpcs(rand, 0).size() == 0) { getProperties().setTeleportLocation(rand); } - switchDelay = World.getTicks() + getRandomDelay(); + switchDelay = GameWorld.getTicks() + getRandomDelay(); } /** diff --git a/Server/src/main/java/core/game/node/entity/npc/other/GraveStoneNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/GraveStoneNPC.java index ccf38df8f..774ac2807 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/GraveStoneNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/GraveStoneNPC.java @@ -15,7 +15,7 @@ import core.game.node.entity.player.link.HintIconManager; import core.game.node.entity.player.link.grave.GraveManager; import core.game.node.entity.player.link.grave.GraveType; import core.game.node.item.GroundItem; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import rs09.game.world.repository.Repository; import core.game.world.update.flag.context.Animation; @@ -95,7 +95,7 @@ public class GraveStoneNPC extends AbstractNPC { if (life == -1) { return; } - if (life < World.getTicks()) { + if (life < GameWorld.getTicks()) { clear(); message("Your gravestone has collapsed."); return; @@ -218,7 +218,7 @@ public class GraveStoneNPC extends AbstractNPC { int ticks = (1000 * seconds) / 600; reTransform(); updateItems(ticks); - setLife(World.getTicks() + ticks); + setLife(GameWorld.getTicks() + ticks); } /** @@ -248,7 +248,7 @@ public class GraveStoneNPC extends AbstractNPC { updateItems(6100); player.animate(Animation.create(645)); graphics(Graphics.create(1274)); - setLife(World.getTicks() + 6000); + setLife(GameWorld.getTicks() + 6000); message(player.getUsername() + " has blessed your grave, it will remain for another 60 minutes."); } @@ -298,7 +298,7 @@ public class GraveStoneNPC extends AbstractNPC { * @return the minutes. */ public int getMinutes() { - return (life - World.getTicks()) / 100; + return (life - GameWorld.getTicks()) / 100; } /** @@ -306,7 +306,7 @@ public class GraveStoneNPC extends AbstractNPC { * @return the seconds. */ public int getSeconds() { - return (life - World.getTicks()) * 600 / 1000; + return (life - GameWorld.getTicks()) * 600 / 1000; } /** diff --git a/Server/src/main/java/core/game/node/entity/npc/other/LumberKittenNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/LumberKittenNPC.java index 7848b7856..5d8d9d99e 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/LumberKittenNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/LumberKittenNPC.java @@ -3,7 +3,7 @@ package core.game.node.entity.npc.other; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.plugin.Initializable; import core.tools.RandomFunction; @@ -60,17 +60,17 @@ public final class LumberKittenNPC extends AbstractNPC { @Override public void tick() { - if (nextSpeak < World.getTicks()) { + if (nextSpeak < GameWorld.getTicks()) { hidden = false; - nextSpeak = World.getTicks() + RandomFunction.random(10, 40); - hideDelay = World.getTicks() + 4; + nextSpeak = GameWorld.getTicks() + RandomFunction.random(10, 40); + hideDelay = GameWorld.getTicks() + 4; sendChat("Mew!"); } - if (hideDelay < World.getTicks()) { + if (hideDelay < GameWorld.getTicks()) { hidden = true; int rand = RandomFunction.random(20, 40); - hideDelay = World.getTicks() + rand; - nextSpeak = World.getTicks() + rand; + hideDelay = GameWorld.getTicks() + rand; + nextSpeak = GameWorld.getTicks() + rand; } super.tick(); } diff --git a/Server/src/main/java/core/game/node/entity/npc/other/SorceressElementalNPC.java b/Server/src/main/java/core/game/node/entity/npc/other/SorceressElementalNPC.java index 08f3b3a16..fb52bdb5f 100644 --- a/Server/src/main/java/core/game/node/entity/npc/other/SorceressElementalNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/other/SorceressElementalNPC.java @@ -9,7 +9,7 @@ import core.game.node.entity.combat.DeathTask; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -226,7 +226,7 @@ public final class SorceressElementalNPC extends AbstractNPC { */ public void sendTeleport(final Player player) { player.lock(); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int delay = 0; @Override diff --git a/Server/src/main/java/core/game/node/entity/npc/quest/pirates_treasure/GardenerNPC.java b/Server/src/main/java/core/game/node/entity/npc/quest/pirates_treasure/GardenerNPC.java index 19646d755..bca136edc 100644 --- a/Server/src/main/java/core/game/node/entity/npc/quest/pirates_treasure/GardenerNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/quest/pirates_treasure/GardenerNPC.java @@ -5,7 +5,7 @@ import core.game.node.entity.combat.CombatStyle; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; import core.game.world.map.Location; @@ -52,7 +52,7 @@ public final class GardenerNPC extends AbstractNPC { getProperties().getCombatPulse().attack(target); } if (!target.isActive() || target.getLocation().getDistance(getLocation()) > 16) { - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { clear(); diff --git a/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantCombatHandler.java b/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantCombatHandler.java index 1f23b83e0..e71a4883c 100644 --- a/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantCombatHandler.java +++ b/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantCombatHandler.java @@ -12,7 +12,7 @@ import core.game.world.map.zone.impl.WildernessZone; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import rs09.game.node.entity.combat.handlers.MultiSwingHandler; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the multi swing combat handler for revenants. @@ -55,7 +55,7 @@ public class RevenantCombatHandler extends MultiSwingHandler { if (victim instanceof Player) { SwitchAttack attack = getCurrent(); if (attack != null) { - if (attack.getStyle() == CombatStyle.RANGE && victim.getAttribute("freeze_immunity", -1) < World.getTicks()) { + if (attack.getStyle() == CombatStyle.RANGE && victim.getAttribute("freeze_immunity", -1) < GameWorld.getTicks()) { victim.getStateManager().set(EntityState.FROZEN, 16, "The icy darts freeze your muscles!"); victim.asPlayer().getAudioManager().send(4059, true); } else if (attack.getStyle() == CombatStyle.MAGIC) { diff --git a/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantNPC.java b/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantNPC.java index 72ae88134..2f03bcff0 100644 --- a/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantNPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/revenant/RevenantNPC.java @@ -18,7 +18,7 @@ import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.system.config.NPCConfigParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles a revenant NPC. @@ -112,17 +112,17 @@ public class RevenantNPC extends AbstractNPC { @Override public void handleTickActions() { - if (!DeathTask.isDead(this) && getSkills().getLifepoints() <= (getSkills().getStaticLevel(Skills.HITPOINTS) / 2) && getAttribute("eat-delay", 0) < World.getTicks()) { + if (!DeathTask.isDead(this) && getSkills().getLifepoints() <= (getSkills().getStaticLevel(Skills.HITPOINTS) / 2) && getAttribute("eat-delay", 0) < GameWorld.getTicks()) { lock(3); getProperties().getCombatPulse().delayNextAttack(3); getSkills().heal(10); for (Player p : RegionManager.getLocalPlayers(this)) { p.getAudioManager().send(2393); } - setAttribute("eat-delay", World.getTicks() + 6); + setAttribute("eat-delay", GameWorld.getTicks() + 6); } if (!getLocks().isMovementLocked()) { - if (!getPulseManager().hasPulseRunning() && !getProperties().getCombatPulse().isAttacking() && !getProperties().getCombatPulse().isInCombat() && nextWalk < World.getTicks()) { + if (!getPulseManager().hasPulseRunning() && !getProperties().getCombatPulse().isAttacking() && !getProperties().getCombatPulse().isInCombat() && nextWalk < GameWorld.getTicks()) { setNextWalk(); Location l = getMovementDestination(); if (canMove(l)) { @@ -154,7 +154,7 @@ public class RevenantNPC extends AbstractNPC { @Override public void setNextWalk() { - nextWalk = World.getTicks() + RandomFunction.random(7, 15); + nextWalk = GameWorld.getTicks() + RandomFunction.random(7, 15); } @Override diff --git a/Server/src/main/java/core/game/node/entity/player/Player.java b/Server/src/main/java/core/game/node/entity/player/Player.java index 8da909c83..ccfebeb21 100644 --- a/Server/src/main/java/core/game/node/entity/player/Player.java +++ b/Server/src/main/java/core/game/node/entity/player/Player.java @@ -84,7 +84,7 @@ import rs09.game.node.entity.player.info.login.PlayerSaver; import rs09.game.node.entity.skill.runecrafting.PouchManager; import rs09.game.node.entity.state.newsys.State; import rs09.game.node.entity.state.newsys.StateRepository; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.DisconnectionQueue; import rs09.game.world.repository.Repository; import rs09.game.world.update.MapChunkRenderer; @@ -375,12 +375,12 @@ public class Player extends Entity { * A custom state for bot debugging */ private String customState = ""; - + /** * The amount of targets that the player can shoot left for the archery minigame. */ private int archeryTargets = 0; - + private int archeryTotal = 0; /** @@ -488,7 +488,7 @@ public class Player extends Entity { } if(intoWardrobe){ packetDispatch.sendInterfaceConfig(548,69,true); - World.getPulser().submit(new wardrobePulse(this)); + GameWorld.getPulser().submit(new wardrobePulse(this)); inWardrobe = true; } else { inWardrobe = false; @@ -502,37 +502,37 @@ public class Player extends Entity { hunterManager.pulse(); musicPlayer.tick(); if(getAttribute("fire:immune",0) > 0){ - int time = getAttribute("fire:immune",0) - World.getTicks(); + int time = getAttribute("fire:immune",0) - GameWorld.getTicks(); if(time == TickUtilsKt.secondsToTicks(30)){ sendMessage(colorize("%RYou have 30 seconds remaining on your antifire potion.")); - getAudioManager().send(3120); + getAudioManager().send(3120); } if(time == 0){ sendMessage(colorize("%RYour antifire potion has expired.")); removeAttribute("fire:immune"); - getAudioManager().send(2607); + getAudioManager().send(2607); } } if(getAttribute("poison:immunity",0) > 0){ - int time = getAttribute("poison:immunity",0) - World.getTicks(); + int time = getAttribute("poison:immunity",0) - GameWorld.getTicks(); debug(time + ""); if(time == TickUtilsKt.secondsToTicks(30)){ sendMessage(colorize("%RYou have 30 seconds remaining on your antipoison potion.")); - getAudioManager().send(3120); + getAudioManager().send(3120); } if(time == 0){ sendMessage(colorize("%RYour antipoison potion has expired.")); removeAttribute("poison:immunity"); - getAudioManager().send(2607); + getAudioManager().send(2607); } } if (!artificial && (System.currentTimeMillis() - getSession().getLastPing()) > 20_000L) { details.getSession().disconnect(); getSession().setLastPing(Long.MAX_VALUE); } - if(getAttribute("infinite-special", false)) { - settings.setSpecialEnergy(100); - } + if(getAttribute("infinite-special", false)) { + settings.setSpecialEnergy(100); + } //Decrements prayer points getPrayer().tick(); @@ -701,10 +701,10 @@ public class Player extends Entity { getPrayer().reset(); super.finalizeDeath(killer); appearance.sync(); - if (killer instanceof Player && !World.isEconomyWorld() && getSkullManager().isWilderness() && killer.asPlayer().getSkullManager().isWilderness()) { + if (killer instanceof Player && !GameWorld.isEconomyWorld() && getSkullManager().isWilderness() && killer.asPlayer().getSkullManager().isWilderness()) { killer.asPlayer().getSavedData().getSpawnData().onDeath(killer.asPlayer(), this); } - if (World.isEconomyWorld() && !getSavedData().getGlobalData().isDeathScreenDisabled()) { + if (GameWorld.isEconomyWorld() && !getSavedData().getGlobalData().isDeathScreenDisabled()) { getInterfaceManager().open(new Component(153)); } if (!getSavedData().getGlobalData().isDeathScreenDisabled()) { @@ -763,7 +763,7 @@ public class Player extends Entity { @Override public boolean isPoisonImmune() { - return getAttribute("poison:immunity", -1) > World.getTicks(); + return getAttribute("poison:immunity", -1) > GameWorld.getTicks(); } @Override @@ -819,19 +819,19 @@ public class Player extends Entity { */ public boolean isWearingVoid(CombatStyle style) { int helm; - if(style == CombatStyle.MELEE) { - helm = Items.VOID_MELEE_HELM_11665; - } else if(style == CombatStyle.RANGE) { - helm = Items.VOID_RANGER_HELM_11664; - } else if(style == CombatStyle.MAGIC) { - helm = Items.VOID_MAGE_HELM_11663; - } else { - return false; - } - boolean legs = inEquipment(this, Items.VOID_KNIGHT_ROBE_8840, 1); - boolean top = inEquipment(this, Items.VOID_KNIGHT_TOP_8839, 1) - || inEquipment(this, Items.VOID_KNIGHT_TOP_10611, 1); - boolean gloves = inEquipment(this, Items.VOID_KNIGHT_GLOVES_8842, 1); + if(style == CombatStyle.MELEE) { + helm = Items.VOID_MELEE_HELM_11665; + } else if(style == CombatStyle.RANGE) { + helm = Items.VOID_RANGER_HELM_11664; + } else if(style == CombatStyle.MAGIC) { + helm = Items.VOID_MAGE_HELM_11663; + } else { + return false; + } + boolean legs = inEquipment(this, Items.VOID_KNIGHT_ROBE_8840, 1); + boolean top = inEquipment(this, Items.VOID_KNIGHT_TOP_8839, 1) + || inEquipment(this, Items.VOID_KNIGHT_TOP_10611, 1); + boolean gloves = inEquipment(this, Items.VOID_KNIGHT_GLOVES_8842, 1); return inEquipment(this, helm, 1) && legs && top && gloves; } @@ -1056,7 +1056,7 @@ public class Player extends Entity { */ public BankContainer getBankSecondary() { return bankSecondary; - } + } public BankContainer getDropLog() {return dropLog;} @@ -1462,10 +1462,10 @@ public class Player extends Entity { public void clearState(String key){ State state = states.get(key); if(state == null) return; - Pulse pulse = state.getPulse(); - if(pulse != null) { - pulse.stop(); - } + Pulse pulse = state.getPulse(); + if(pulse != null) { + pulse.stop(); + } states.remove(key); } } diff --git a/Server/src/main/java/core/game/node/entity/player/info/login/LoginConfiguration.java b/Server/src/main/java/core/game/node/entity/player/info/login/LoginConfiguration.java index 9d213cf96..ee0dfa9e2 100644 --- a/Server/src/main/java/core/game/node/entity/player/info/login/LoginConfiguration.java +++ b/Server/src/main/java/core/game/node/entity/player/info/login/LoginConfiguration.java @@ -7,12 +7,13 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.emote.Emotes; import core.game.world.map.RegionManager; import core.game.world.update.flag.player.AppearanceFlag; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.net.packet.PacketRepository; import core.net.packet.context.InterfaceContext; import core.net.packet.out.Interface; import core.plugin.Plugin; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import rs09.game.world.update.UpdateSequence; @@ -96,7 +97,7 @@ public final class LoginConfiguration { } Repository.getLobbyPlayers().add(player); player.getPacketDispatch().sendString(getLastLogin(player), 378, 116); - player.getPacketDispatch().sendString("Welcome to " + World.getSettings().getName(), 378, 115); + player.getPacketDispatch().sendString("Welcome to " + GameWorld.getSettings().getName(), 378, 115); player.getPacketDispatch().sendString(" ", 378, 37); player.getPacketDispatch().sendString("Want to stay up to date with the latest news and updates? Join our
discord by using the link below!", 378, 38); player.getPacketDispatch().sendString(" ", 378, 39); @@ -108,7 +109,7 @@ public final class LoginConfiguration { player.getPacketDispatch().sendString("Want to contribute to 2009scape?
Visit the github using the link below!", 378, 230); player.getPacketDispatch().sendString(" ", 378, 231); player.getPacketDispatch().sendString("Github", 378, 240); - player.getPacketDispatch().sendString(World.getSettings().getMessage_string(), messModel, getMessageChild(messModel)); + player.getPacketDispatch().sendString(GameWorld.getSettings().getMessage_string(), messModel, getMessageChild(messModel)); player.getPacketDispatch().sendString("You can gain more credits by voting, reporting bugs and various other methods of contribution.", 378, 93); player.getInterfaceManager().openWindowsPane(LOBBY_PANE); player.getInterfaceManager().setOpened(LOBBY_INTERFACE); @@ -123,9 +124,7 @@ public final class LoginConfiguration { */ public static void configureGameWorld(final Player player) { player.getConfigManager().reset(); - if(!player.isArtificial()){ - sendGameConfiguration(player); - } + sendGameConfiguration(player); Repository.getLobbyPlayers().remove(player); Repository.getPlayerNames().putIfAbsent(player.getName().toLowerCase(),player); player.setPlaying(true); @@ -169,7 +168,9 @@ public final class LoginConfiguration { } } player.getCommunication().sync(player); - MSPacketRepository.sendInfoUpdate(player); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendInfoUpdate(player); + } } /** @@ -178,14 +179,14 @@ public final class LoginConfiguration { * @param player the player. Fullscreen mode Object id: */ public static final void welcome(final Player player) { - if (World.getSettings().isPvp()) { + if (GameWorld.getSettings().isPvp()) { player.getPacketDispatch().sendString("", 226, 0); } if (player.isArtificial()) { return; } - player.getPacketDispatch().sendMessage("Welcome to " + World.getSettings().getName() + "."); + player.getPacketDispatch().sendMessage("Welcome to " + GameWorld.getSettings().getName() + "."); //player.getPacketDispatch().sendMessage("You are currently playing in beta version 1.2"); if (player.getDetails().isMuted()) { player.getPacketDispatch().sendMessage("You are muted."); @@ -211,7 +212,7 @@ public final class LoginConfiguration { player.getFamiliarManager().login(); player.getInterfaceManager().openDefaultTabs(); player.getPlayerGrandExchange().init(); - player.getPacketDispatch().sendString("Friends List - World " + World.getSettings().getWorldId(), 550, 3); + player.getPacketDispatch().sendString("Friends List - World " + GameWorld.getSettings().getWorldId(), 550, 3); player.getConfigManager().init(); player.getAntiMacroHandler().init(); player.getQuestRepository().syncronizeTab(player); @@ -250,8 +251,8 @@ public final class LoginConfiguration { * Sets a random interface id for the "message of the week" models */ private final static int autoSelect() { - boolean contains = IntStream.of(MESSAGE_MODEL).anyMatch(x -> x == World.getSettings().getMessage_model()); - return contains ? World.getSettings().getMessage_model():MESSAGE_MODEL[new Random().nextInt(MESSAGE_MODEL.length)]; + boolean contains = IntStream.of(MESSAGE_MODEL).anyMatch(x -> x == GameWorld.getSettings().getMessage_model()); + return contains ? GameWorld.getSettings().getMessage_model():MESSAGE_MODEL[new Random().nextInt(MESSAGE_MODEL.length)]; } /** diff --git a/Server/src/main/java/core/game/node/entity/player/info/portal/PlayerSQLManager.java b/Server/src/main/java/core/game/node/entity/player/info/portal/PlayerSQLManager.java index fa2205b7e..6e7256331 100644 --- a/Server/src/main/java/core/game/node/entity/player/info/portal/PlayerSQLManager.java +++ b/Server/src/main/java/core/game/node/entity/player/info/portal/PlayerSQLManager.java @@ -10,6 +10,7 @@ import core.game.system.mysql.SQLEntryHandler; import core.game.system.mysql.SQLManager; import core.game.system.mysql.SQLTable; import core.game.system.mysql.impl.PlayerSQLHandler; +import core.net.amsc.WorldCommunicator; import java.math.BigInteger; import java.sql.Connection; @@ -101,6 +102,9 @@ public final class PlayerSQLManager { * @param player The player instance. */ public void update(Player player) { + if (!WorldCommunicator.isEnabled()) { + details.getCommunication().save(table); + } table.getColumn("credits").updateValue(player.getDetails().credits); table.getColumn("bank").updateValue(player.getBank().format()); table.getColumn("lastLogin").updateValue(player.getDetails().getLastLogin()); diff --git a/Server/src/main/java/core/game/node/entity/player/link/BankPinManager.java b/Server/src/main/java/core/game/node/entity/player/link/BankPinManager.java index f69f2f0ee..8457e8f5f 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/BankPinManager.java +++ b/Server/src/main/java/core/game/node/entity/player/link/BankPinManager.java @@ -1,10 +1,11 @@ package core.game.node.entity.player.link; +import core.cache.misc.buffer.ByteBufferUtils; import core.game.component.CloseEvent; import core.game.component.Component; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.PacketRepository; import core.net.packet.context.ChildPositionContext; import core.net.packet.context.StringContext; @@ -13,6 +14,7 @@ import core.net.packet.out.StringPacket; import core.tools.RandomFunction; import org.json.simple.JSONObject; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -307,7 +309,7 @@ public class BankPinManager { return; } tempPin = ""; - player.getPacketDispatch().sendString("Bank of " + World.getSettings().getName(), 13, 31); + player.getPacketDispatch().sendString("Bank of " + GameWorld.getSettings().getName(), 13, 31); if (!hasPin()) { player.getPacketDispatch().sendInterfaceConfig(13, 29, true); player.getPacketDispatch().sendString("Please choose a new FOUR DIGIT PIN using the buttons below.", 13, 28); @@ -450,7 +452,7 @@ public class BankPinManager { */ private void setPin() { status = PinStatus.PENDING; - pendingDelay = System.currentTimeMillis() + (World.getSettings().isDevMode() ? TimeUnit.SECONDS.toMillis(30) : TimeUnit.DAYS.toMillis(this.getRecoveryDelay())); + pendingDelay = System.currentTimeMillis() + (GameWorld.getSettings().isDevMode() ? TimeUnit.SECONDS.toMillis(30) : TimeUnit.DAYS.toMillis(this.getRecoveryDelay())); pin = new String(Arrays.copyOf(tempPin.toCharArray(), 4)); } @@ -522,7 +524,7 @@ public class BankPinManager { if (pendingDelay < System.currentTimeMillis()) { return 0; } - return (int) (pendingDelay - System.currentTimeMillis()) / (World.getSettings().isDevMode() ? 1000 : 86400000); + return (int) (pendingDelay - System.currentTimeMillis()) / (GameWorld.getSettings().isDevMode() ? 1000 : 86400000); } /** diff --git a/Server/src/main/java/core/game/node/entity/player/link/ConfigurationManager.java b/Server/src/main/java/core/game/node/entity/player/link/ConfigurationManager.java index 2806bef19..2f75f4f4d 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/ConfigurationManager.java +++ b/Server/src/main/java/core/game/node/entity/player/link/ConfigurationManager.java @@ -3,11 +3,13 @@ package core.game.node.entity.player.link; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.PacketRepository; import core.net.packet.context.ConfigContext; import core.net.packet.out.Config; +import java.nio.ByteBuffer; + /** * Manages a player's configurations. * @author Emperor @@ -123,7 +125,7 @@ public final class ConfigurationManager { public void set(final int id, final int value, int delay) { set(id, value); player.varpManager.get(id).setVarbit(0,value).send(player); - World.getPulser().submit(new Pulse(delay, player) { + GameWorld.getPulser().submit(new Pulse(delay, player) { @Override public boolean pulse() { player.varpManager.get(id).setVarbit(0,0).send(player); diff --git a/Server/src/main/java/core/game/node/entity/player/link/PacketDispatch.java b/Server/src/main/java/core/game/node/entity/player/link/PacketDispatch.java index d03d74795..0f48882e5 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/PacketDispatch.java +++ b/Server/src/main/java/core/game/node/entity/player/link/PacketDispatch.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import rs09.game.system.SystemLogger; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.chunk.AnimateObjectUpdateFlag; @@ -87,7 +87,7 @@ public final class PacketDispatch { * @param ticks the ticks. */ public void sendMessage(final String message, int ticks) { - World.getPulser().submit(new Pulse(ticks, player) { + GameWorld.getPulser().submit(new Pulse(ticks, player) { @Override public boolean pulse() { sendMessage(message); diff --git a/Server/src/main/java/core/game/node/entity/player/link/Settings.java b/Server/src/main/java/core/game/node/entity/player/link/Settings.java index 1eec88088..6eeb661d6 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/Settings.java +++ b/Server/src/main/java/core/game/node/entity/player/link/Settings.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.communication.CommunicationInfo; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.IoBuffer; import java.nio.ByteBuffer; @@ -158,7 +158,7 @@ public final class Settings { } }; pulse.setTicksPassed(1); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); player.setAttribute("energy-restore", pulse); } } diff --git a/Server/src/main/java/core/game/node/entity/player/link/TeleportManager.java b/Server/src/main/java/core/game/node/entity/player/link/TeleportManager.java index 63804fff0..8799fe91d 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/TeleportManager.java +++ b/Server/src/main/java/core/game/node/entity/player/link/TeleportManager.java @@ -7,7 +7,7 @@ import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.quest.Quest; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -119,7 +119,7 @@ public class TeleportManager { } else { entity.lock(12); entity.getImpactHandler().setDisabledTicks(teleportType == -1 ? 5 : 12); - World.getPulser().submit(currentTeleport); + GameWorld.getPulser().submit(currentTeleport); } if (entity instanceof Player) { ((Player) entity).getInterfaceManager().close(); diff --git a/Server/src/main/java/core/game/node/entity/player/link/emote/Emotes.java b/Server/src/main/java/core/game/node/entity/player/link/emote/Emotes.java index 16dfe8026..2406f1925 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/emote/Emotes.java +++ b/Server/src/main/java/core/game/node/entity/player/link/emote/Emotes.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -176,7 +176,7 @@ public enum Emotes { GIVE_THANKS(46, "This emote can be unlocked by playing a Thanksgiving holiday event.") { @Override public void play(final Player player) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override diff --git a/Server/src/main/java/core/game/node/entity/player/link/grave/GraveManager.java b/Server/src/main/java/core/game/node/entity/player/link/grave/GraveManager.java index 74c724024..88720461d 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/grave/GraveManager.java +++ b/Server/src/main/java/core/game/node/entity/player/link/grave/GraveManager.java @@ -8,8 +8,9 @@ import core.game.node.entity.player.info.Rights; import core.game.node.entity.player.link.HintIconManager; import core.game.node.entity.player.link.prayer.PrayerType; import core.game.node.item.GroundItem; -import rs09.game.world.World; +import rs09.game.world.GameWorld; +import java.nio.ByteBuffer; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -58,7 +59,7 @@ public class GraveManager { grave.clear(); player.sendMessage("Your previous gravestone has collapsed."); } - NPC npc = NPC.create(type.getNpcId(), player.getLocation(), player.getName(), World.getTicks() + ticks, items, type, player.getUsername()); + NPC npc = NPC.create(type.getNpcId(), player.getLocation(), player.getName(), GameWorld.getTicks() + ticks, items, type, player.getUsername()); npc.init(); setGrave(npc); } @@ -80,7 +81,7 @@ public class GraveManager { * @return {@code True} if so. */ public boolean generateable() { - if (player.getDetails().getRights() == Rights.ADMINISTRATOR && World.getSettings().isHosted()) { + if (player.getDetails().getRights() == Rights.ADMINISTRATOR && GameWorld.getSettings().isHosted()) { return false; } if (player.getSkullManager().isWilderness()) { diff --git a/Server/src/main/java/core/game/node/entity/player/link/music/MusicPlayer.java b/Server/src/main/java/core/game/node/entity/player/link/music/MusicPlayer.java index 5a90fce89..54a3cdae8 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/music/MusicPlayer.java +++ b/Server/src/main/java/core/game/node/entity/player/link/music/MusicPlayer.java @@ -3,13 +3,14 @@ package core.game.node.entity.player.link.music; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.emote.Emotes; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.PacketRepository; import core.net.packet.context.MusicContext; import core.net.packet.context.StringContext; import core.net.packet.out.MusicPacket; import core.net.packet.out.StringPacket; +import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.Random; @@ -210,7 +211,7 @@ public final class MusicPlayer { } public void tick(){ - if(World.getTicks() % 20 == 0){ + if(GameWorld.getTicks() % 20 == 0){ if(!isPlaying()){ try { play((MusicEntry) unlocked.values().toArray()[new Random().nextInt(unlocked.values().size())]); diff --git a/Server/src/main/java/core/game/node/entity/player/link/prayer/Prayer.java b/Server/src/main/java/core/game/node/entity/player/link/prayer/Prayer.java index e90b707d7..b2718b75d 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/prayer/Prayer.java +++ b/Server/src/main/java/core/game/node/entity/player/link/prayer/Prayer.java @@ -14,7 +14,7 @@ import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -69,7 +69,7 @@ public final class Prayer { } getActive().clear(); // Clear the overhead prayer icon a tick later - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { player.getAppearance().setHeadIcon(-1); diff --git a/Server/src/main/java/core/game/node/entity/player/link/request/RequestManager.java b/Server/src/main/java/core/game/node/entity/player/link/request/RequestManager.java index 88c3bda62..d6a6de116 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/request/RequestManager.java +++ b/Server/src/main/java/core/game/node/entity/player/link/request/RequestManager.java @@ -2,7 +2,7 @@ package core.game.node.entity.player.link.request; import core.game.content.quest.tutorials.tutorialisland.TutorialSession; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents a managing class for requests of a player. @@ -69,7 +69,7 @@ public final class RequestManager { player.getPacketDispatch().sendMessage("Other player is busy at the moment."); return false; } - if (target.getAttribute("busy", 0) > World.getTicks() || player.getAttribute("busy", 0) > World.getTicks()) { + if (target.getAttribute("busy", 0) > GameWorld.getTicks() || player.getAttribute("busy", 0) > GameWorld.getTicks()) { player.getPacketDispatch().sendMessage("Other player is busy at the moment."); return false; } @@ -91,8 +91,8 @@ public final class RequestManager { close(player); clear(); target.getRequestManager().clear(); - player.setAttribute("busy", World.getTicks() + 2); - target.setAttribute("busy", World.getTicks() + 2); + player.setAttribute("busy", GameWorld.getTicks() + 2); + target.setAttribute("busy", GameWorld.getTicks() + 2); type.getModule().open(player, target); return true; } diff --git a/Server/src/main/java/core/game/node/entity/player/link/request/assist/AssistSession.java b/Server/src/main/java/core/game/node/entity/player/link/request/assist/AssistSession.java index d4bfc72e9..e596895ad 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/request/assist/AssistSession.java +++ b/Server/src/main/java/core/game/node/entity/player/link/request/assist/AssistSession.java @@ -6,7 +6,7 @@ import core.game.node.entity.skill.Skills; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.request.RequestModule; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -155,7 +155,7 @@ public final class AssistSession extends Pulse implements RequestModule { player.getAudioManager().send(4010); toggleIcon(player, false); toggleIcon(partener, false); - World.getPulser().submit(this); + GameWorld.getPulser().submit(this); refresh(); } diff --git a/Server/src/main/java/core/game/node/entity/player/link/request/trade/TradeContainer.java b/Server/src/main/java/core/game/node/entity/player/link/request/trade/TradeContainer.java index aa3419eb7..0cae8a281 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/request/trade/TradeContainer.java +++ b/Server/src/main/java/core/game/node/entity/player/link/request/trade/TradeContainer.java @@ -6,7 +6,7 @@ import core.game.container.*; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.PacketRepository; import core.net.packet.context.ContainerContext; import core.net.packet.out.ContainerPacket; @@ -47,7 +47,7 @@ public final class TradeContainer extends Container { if (!validatedItem(item, slot, amount, player.getInventory())) { return; } - if (!tradeable(item) && !World.getSettings().isDevMode()) { + if (!tradeable(item) && !GameWorld.getSettings().isDevMode()) { player.getPacketDispatch().sendMessage("You can't trade this item."); return; } @@ -209,7 +209,7 @@ public final class TradeContainer extends Container { * @param save if we should cache the icon. */ private void alert(final int slot, final boolean save) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { if (TradeModule.getExtension(player) != null) { @@ -219,7 +219,7 @@ public final class TradeContainer extends Container { } }); if (save) { - player.setAttribute("alert", World.getTicks() + 8); + player.setAttribute("alert", GameWorld.getTicks() + 8); player.setAttribute("alertSlot", slot); } } @@ -228,7 +228,7 @@ public final class TradeContainer extends Container { * Method used to check the alert. */ private void checkAlert() { - if (player.getAttribute("alert", 0) > World.getTicks()) { + if (player.getAttribute("alert", 0) > GameWorld.getTicks()) { alert(player.getAttribute("alertSlot", 0), false); } } diff --git a/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java b/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java index c07075c09..e15ee014e 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java +++ b/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java @@ -4,13 +4,15 @@ import core.game.component.Component; import core.game.node.entity.skill.Skills; import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.SavedData; import core.game.node.entity.player.link.SpellBookManager; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import core.net.packet.PacketRepository; import core.net.packet.context.ChildPositionContext; import core.net.packet.out.RepositionChild; +import java.nio.ByteBuffer; import java.text.DecimalFormat; /** @@ -71,7 +73,7 @@ public class SpawnData { * @param player the player. */ public void drawStatsTab(Player player) { - if (World.isEconomyWorld()) { + if (GameWorld.isEconomyWorld()) { return; } player.getPacketDispatch().sendInterfaceConfig(274, 3, true); @@ -145,7 +147,7 @@ public class SpawnData { * @param button the button. */ public void handleButton(Player p, int button) { - if (World.isEconomyWorld()) { + if (GameWorld.isEconomyWorld()) { return; } drawStatsTab(p); @@ -414,7 +416,7 @@ public class SpawnData { * @param killed */ public void onDeath(Player killer, Player killed) { - if (World.isEconomyWorld()) { + if (GameWorld.isEconomyWorld()) { return; } if (killer.isArtificial() || killed.isArtificial() || killer.getDetails().getInfo().getIp().equals(killed.getDetails().getInfo().getIp()) || killed.getDetails().getInfo().getMac().equals(killer.getDetails().getInfo().getMac())) { diff --git a/Server/src/main/java/core/game/node/entity/skill/SkillRestoration.java b/Server/src/main/java/core/game/node/entity/skill/SkillRestoration.java index 386a785af..460f10b5e 100644 --- a/Server/src/main/java/core/game/node/entity/skill/SkillRestoration.java +++ b/Server/src/main/java/core/game/node/entity/skill/SkillRestoration.java @@ -4,7 +4,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.prayer.PrayerType; import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles the skill restoration data. @@ -44,7 +44,7 @@ public final class SkillRestoration { if(skillId == Skills.HITPOINTS && entity instanceof Player && SkillcapePerks.isActive(SkillcapePerks.DAMAGE_SPONG,entity.asPlayer())){ max = 110; } - if(hpSummPrayTick < World.getTicks()){ + if(hpSummPrayTick < GameWorld.getTicks()){ if(skillId == Skills.HITPOINTS || skillId == Skills.SUMMONING || skillId == Skills.PRAYER){ if(skillId == Skills.HITPOINTS){ if(skills.getLifepoints() >= max){ @@ -58,7 +58,7 @@ public final class SkillRestoration { restartHpSummPray(entity.asPlayer().getPrayer().getActive().contains(PrayerType.RAPID_HEAL)); } } - if(statTick < World.getTicks()) { + if(statTick < GameWorld.getTicks()) { if (skillId != Skills.HITPOINTS && skillId != Skills.SUMMONING && skillId != Skills.PRAYER) { int current = skills.getLevel(skillId); skills.updateLevel(skillId,current < max ? 1 : -1,max); @@ -100,7 +100,7 @@ public final class SkillRestoration { if(half){ ticks /= 2; } - this.hpSummPrayTick = World.getTicks() + ticks; + this.hpSummPrayTick = GameWorld.getTicks() + ticks; } public void restartStat(boolean half) { @@ -108,6 +108,6 @@ public final class SkillRestoration { if(half){ ticks /= 2; } - this.statTick = World.getTicks() + ticks; + this.statTick = GameWorld.getTicks() + ticks; } } \ No newline at end of file diff --git a/Server/src/main/java/core/game/node/entity/skill/Skills.java b/Server/src/main/java/core/game/node/entity/skill/Skills.java index 9b82c7da8..6835a1f11 100644 --- a/Server/src/main/java/core/game/node/entity/skill/Skills.java +++ b/Server/src/main/java/core/game/node/entity/skill/Skills.java @@ -15,7 +15,7 @@ import core.net.packet.out.SkillLevel; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import rs09.plugin.CorePluginTypes.XPGainPlugins; import org.rs09.consts.Items; @@ -419,8 +419,8 @@ public final class Skills { public void parseExpRate(ByteBuffer buffer) { experienceMutiplier = buffer.getDouble(); - if(World.getSettings().getDefault_xp_rate() != experienceMutiplier){ - experienceMutiplier = World.getSettings().getDefault_xp_rate(); + if(GameWorld.getSettings().getDefault_xp_rate() != experienceMutiplier){ + experienceMutiplier = GameWorld.getSettings().getDefault_xp_rate(); } } diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java b/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java index e7b35b0df..a0c5e8618 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -70,7 +70,7 @@ public final class AgilityHandler { } movement.start(); movement.setDelay(delay); - World.getPulser().submit(movement); + GameWorld.getPulser().submit(movement); return movement; } @@ -152,7 +152,7 @@ public final class AgilityHandler { } }; movement.start(); - World.getPulser().submit(movement); + GameWorld.getPulser().submit(movement); return movement; } @@ -183,11 +183,11 @@ public final class AgilityHandler { setObstacleFlag(player, courseIndex); } }; - World.getPulser().submit(new Pulse(delay, player) { + GameWorld.getPulser().submit(new Pulse(delay, player) { @Override public boolean pulse() { movement.start(); - World.getPulser().submit(movement); + GameWorld.getPulser().submit(movement); return true; } }); @@ -217,7 +217,7 @@ public final class AgilityHandler { public static void climb(final Player player, final int courseIndex, Animation animation, final Location destination, final double experience, final String message, int delay) { player.lock(delay + 1); player.animate(animation); - World.getPulser().submit(new Pulse(delay) { + GameWorld.getPulser().submit(new Pulse(delay) { @Override public boolean pulse() { if (message != null) { @@ -272,7 +272,7 @@ public final class AgilityHandler { player.getAppearance().setAnimations(animation); } player.getSettings().setRunEnergy(100.0); - World.getPulser().submit(new Pulse(ticks, player) { + GameWorld.getPulser().submit(new Pulse(ticks, player) { @Override public boolean pulse() { if (animation != null) { diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BladeTrap.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BladeTrap.java index 3ab68c003..02d6e6ca8 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BladeTrap.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BladeTrap.java @@ -7,7 +7,7 @@ import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -27,7 +27,7 @@ public final class BladeTrap implements MovementHook { final Location start = l.transform(-dir.getStepX(), -dir.getStepY(), 0); e.lock(5); e.addExtension(LogoutTask.class, new LocationLogoutTask(5, start)); - World.getPulser().submit(new Pulse(2, e) { + GameWorld.getPulser().submit(new Pulse(2, e) { @Override public boolean pulse() { Direction direction = dir; diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenArena.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenArena.java index c4053d811..e11430740 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenArena.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenArena.java @@ -15,7 +15,7 @@ import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.*; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBuilder; @@ -227,14 +227,14 @@ public final class BrimhavenArena extends MapZone implements Plugin { DISPENSERS[index++] = Location.create(x, y, 3); } } - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { Region r = RegionManager.forId(11157); if (!r.isActive()) { return false; } - if (World.getTicks() % 100 == 0) { + if (GameWorld.getTicks() % 100 == 0) { for (RegionPlane plane : r.getPlanes()) { for (Player player : plane.getPlayers()) { setDispenser(player); @@ -243,7 +243,7 @@ public final class BrimhavenArena extends MapZone implements Plugin { handlePlankSwitching(); } int ticks = 3; - if (World.getTicks() % ticks == 0) { + if (GameWorld.getTicks() % ticks == 0) { sawBladeActive = !sawBladeActive; if (sawBladeActive) { Scenery object = RegionManager.getObject(3, 2788, 9579); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenCourse.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenCourse.java index f2162762c..138941e50 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenCourse.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/BrimhavenCourse.java @@ -12,7 +12,7 @@ import core.game.node.scenery.Scenery; import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -40,7 +40,7 @@ public final class BrimhavenCourse extends OptionHandler { return true; } AgilityHandler.forceWalk(player, -1, start, end, Animation.create(751), 25, getExp(player, 20.0), null); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { boolean finish; @Override @@ -124,7 +124,7 @@ public final class BrimhavenCourse extends OptionHandler { player.getAppearance().sync(); AgilityHandler.climb(player, -1, new Animation(1117 + m), start.transform(dir), 0.0, null); player.addExtension(LogoutTask.class, new LocationLogoutTask(22, start)); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { Location last = start.transform(dir); int count; @@ -162,7 +162,7 @@ public final class BrimhavenCourse extends OptionHandler { if (failed) { Location end = player.getLocation().transform(dir); AgilityHandler.forceWalk(player, -1, player.getLocation(), end, Animation.create(762), 10, 0.0, null); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { Direction d = Direction.get((dir.toInteger() + 3) % 4); @@ -187,7 +187,7 @@ public final class BrimhavenCourse extends OptionHandler { final Location start = player.getLocation(); ForceMovement.run(player, start.transform(dir), start.transform(dir.getStepX() << 1, dir.getStepY() << 1, 0), Animation.create(742), Animation.create(744)); player.addExtension(LogoutTask.class, new LocationLogoutTask(5, start)); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { boolean failed; int count; @@ -230,7 +230,7 @@ public final class BrimhavenCourse extends OptionHandler { double xp = 0.0; if (AgilityHandler.hasFailed(player, 1, 0.15)) { player.lock(3); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { Direction d = Direction.get((dir.toInteger() + 1) % 4); @@ -258,7 +258,7 @@ public final class BrimhavenCourse extends OptionHandler { if (object.getCharge() == 500) { // Plank is broken player.lock(7); AgilityHandler.walk(player, -1, start, start.transform(dir.getStepX() * 2, dir.getStepY() * 2, 0), new Animation(1426), 0.0, null); - World.getPulser().submit(new Pulse(3) { + GameWorld.getPulser().submit(new Pulse(3) { boolean finish; @Override @@ -290,7 +290,7 @@ public final class BrimhavenCourse extends OptionHandler { final Location start = player.getLocation(); player.addExtension(LogoutTask.class, new LocationLogoutTask(12, start)); player.lock(12); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { int count = 0; @Override @@ -319,7 +319,7 @@ public final class BrimhavenCourse extends OptionHandler { if (failed) { Location end = player.getLocation().transform(dir); AgilityHandler.forceWalk(player, -1, player.getLocation(), end, Animation.create(762), 10, 0.0, null); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { Direction d = Direction.get((dir.toInteger() + 3) % 4); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/DartTrap.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/DartTrap.java index dd678dfc8..9c92be1b4 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/DartTrap.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/DartTrap.java @@ -9,7 +9,7 @@ import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -33,7 +33,7 @@ public final class DartTrap implements MovementHook { e.lock(6); e.addExtension(LogoutTask.class, new LocationLogoutTask(13, start)); final Location startProj = l.transform(dir.getStepX() * 5, dir.getStepY() * 5, 0); - World.getPulser().submit(new Pulse(2, e) { + GameWorld.getPulser().submit(new Pulse(2, e) { boolean failed; int count; diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/FloorSpikes.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/FloorSpikes.java index f0e8a3048..3fa6da42b 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/FloorSpikes.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/FloorSpikes.java @@ -8,7 +8,7 @@ import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -27,7 +27,7 @@ public final class FloorSpikes implements MovementHook { final Location start = l.transform(-dir.getStepX(), -dir.getStepY(), 0); e.lock(5); e.addExtension(LogoutTask.class, new LocationLogoutTask(5, start)); - World.getPulser().submit(new Pulse(3, e) { + GameWorld.getPulser().submit(new Pulse(3, e) { @Override public boolean pulse() { player.getPacketDispatch().sendSceneryAnimation(RegionManager.getObject(l), Animation.create(1111)); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/PressurePad.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/PressurePad.java index f55c934bc..239878227 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/PressurePad.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/PressurePad.java @@ -8,7 +8,7 @@ import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -27,7 +27,7 @@ public final class PressurePad implements MovementHook { final Location start = dest.transform(-dir.getStepX(), -dir.getStepY(), 0); e.lock(5); e.addExtension(LogoutTask.class, new LocationLogoutTask(5, start)); - World.getPulser().submit(new Pulse(3, e) { + GameWorld.getPulser().submit(new Pulse(3, e) { @Override public boolean pulse() { Graphics.send(Graphics.create(271), dest); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/SpinningBlades.java b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/SpinningBlades.java index cfd3e2dff..673a3dfd7 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/SpinningBlades.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/brimhaven/SpinningBlades.java @@ -8,7 +8,7 @@ import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -27,7 +27,7 @@ public final class SpinningBlades implements MovementHook { final Location start = l.transform(-dir.getStepX(), -dir.getStepY(), 0); e.lock(5); e.addExtension(LogoutTask.class, new LocationLogoutTask(5, start)); - World.getPulser().submit(new Pulse(3, e) { + GameWorld.getPulser().submit(new Pulse(3, e) { @Override public boolean pulse() { sendObjectAnimation(player, l); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/AgilityPyramidCourse.java b/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/AgilityPyramidCourse.java index 3817645ac..9dbf026c7 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/AgilityPyramidCourse.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/AgilityPyramidCourse.java @@ -13,7 +13,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -245,7 +245,7 @@ public final class AgilityPyramidCourse extends AgilityCourse { if (fail) { player.lock(4); AgilityHandler.walk(player, -1, player.getLocation(), end, Animation.create(157 - diff), 0.0, "You slip and fall to the level below."); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { Location dest = end; @@ -291,7 +291,7 @@ public final class AgilityPyramidCourse extends AgilityCourse { final Location end = object.getLocation().transform(object.getId() != 10868 ? dir : dir.getOpposite(), fail ? 2 : 5); AgilityHandler.walk(player, fail ? -1 : 1, player.getLocation(), end, Animation.create(155), fail ? 0.0 : 56.4, fail ? null : "You walk carefully across the slippery plank..."); if (fail) { - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { final Location dest = transformLevel(end.transform(!custom ? 2 : 0, custom ? -2 : 0, 0)); @@ -348,7 +348,7 @@ public final class AgilityPyramidCourse extends AgilityCourse { AgilityHandler.walk(player, -1, player.getLocation(), end, animation, 10, null); AgilityHandler.fail(player, 3, transformLevel(dest), null, 8, null); // player.animate(Animation.create(3056 - mod), 2); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getAppearance().setDefaultAnimations(); @@ -372,7 +372,7 @@ public final class AgilityPyramidCourse extends AgilityCourse { return; } else { player.animate(Animation.create(3063)); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getSkills().addExperience(Skills.AGILITY, 1000); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/MovingBlockNPC.java b/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/MovingBlockNPC.java index 9a81f3878..6c96397ef 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/MovingBlockNPC.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/MovingBlockNPC.java @@ -6,7 +6,7 @@ import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -53,7 +53,7 @@ public final class MovingBlockNPC extends AbstractNPC { @Override public void tick() { super.tick(); - if (nextMove < World.getTicks() && nextMove != -1) { + if (nextMove < GameWorld.getTicks() && nextMove != -1) { Direction dir = getId() == 3124 ? Direction.EAST : Direction.NORTH; Location loc = getLocation().transform(dir, 2); getWalkingQueue().reset(); @@ -62,7 +62,7 @@ public final class MovingBlockNPC extends AbstractNPC { checkBlock(p); } moving = true; - World.getPulser().submit(new Pulse(1, this) { + GameWorld.getPulser().submit(new Pulse(1, this) { int counter; @Override @@ -76,7 +76,7 @@ public final class MovingBlockNPC extends AbstractNPC { case 3: getWalkingQueue().reset(); getWalkingQueue().addPath(getProperties().getSpawnLocation().getX(), getProperties().getSpawnLocation().getY()); - nextMove = World.getTicks() + 13; + nextMove = GameWorld.getTicks() + 13; break; case 5: moving = false; @@ -108,13 +108,13 @@ public final class MovingBlockNPC extends AbstractNPC { * @param player the player. */ public void checkBlock(final Player player) { - if (player.getAttribute("block-move", -1) > World.getTicks()) { + if (player.getAttribute("block-move", -1) > GameWorld.getTicks()) { return; } Location[] locs = getTileLocations(); for (int i = 0; i < 4; i++) { if (locs[i].equals(player.getLocation())) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { boolean close = getProperties().getSpawnLocation().getDistance(player.getLocation()) > (getId() == 3124 ? 2 : 2.3); @@ -133,7 +133,7 @@ public final class MovingBlockNPC extends AbstractNPC { } } player.lock(4); - player.setAttribute("block-move", World.getTicks() + 4); + player.setAttribute("block-move", GameWorld.getTicks() + 4); if(dest != null) { AgilityHandler.failWalk(player, close ? 1 : 3, player.getLocation(), dest, AgilityPyramidCourse.transformLevel(dest), Animation.create(3066), 10, 8, null, getId() == 3124 ? Direction.WEST : Direction.SOUTH); } diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/RollingBlock.java b/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/RollingBlock.java index 47f78aa84..82960b3da 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/RollingBlock.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/pyramid/RollingBlock.java @@ -8,7 +8,7 @@ import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.MovementHook; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -32,7 +32,7 @@ public final class RollingBlock implements MovementHook { AgilityPyramidCourse.addConfig(player, stone, 1, false); e.addExtension(LogoutTask.class, new LocationLogoutTask(5, player.getLocation())); if (fail) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -57,7 +57,7 @@ public final class RollingBlock implements MovementHook { return false; } AgilityHandler.forceWalk(player, -1, dest, dest.transform(player.getDirection(), 2), Animation.create(1115), 20, 12, null); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { AgilityPyramidCourse.addConfig(player, stone, 0, true); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FaladorGrapplePlugin.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FaladorGrapplePlugin.java index 3bd384571..a12ded1d0 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FaladorGrapplePlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FaladorGrapplePlugin.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -97,7 +97,7 @@ public final class FaladorGrapplePlugin extends OptionHandler { } player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 1; Component tab; diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FenceJumpShortcut.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FenceJumpShortcut.java index b50bd1a2d..072d3f0e6 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FenceJumpShortcut.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/FenceJumpShortcut.java @@ -7,7 +7,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -45,7 +45,7 @@ public class FenceJumpShortcut extends AgilityShortcut { @Override public void run(final Player player, Scenery object, String option, boolean failed) { player.faceLocation(object.getLocation()); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.animate(JUMP_ANIM); diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/KaramjaGrapple.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/KaramjaGrapple.java index 975ace88a..b5658cc8a 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/KaramjaGrapple.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/KaramjaGrapple.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.RegionManager; @@ -92,7 +92,7 @@ public class KaramjaGrapple extends OptionHandler { } player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 1; Component tab; diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/MonkeyBarShortcut.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/MonkeyBarShortcut.java index ec7f659a2..b1a1014db 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/MonkeyBarShortcut.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/MonkeyBarShortcut.java @@ -10,7 +10,7 @@ import core.game.node.scenery.Scenery; import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -75,7 +75,7 @@ public class MonkeyBarShortcut extends AgilityShortcut { final Direction dir = direct; ForceMovement.run(player, start.transform(dir), start.transform(dir.getStepX() << 1, dir.getStepY() << 1, 0), Animation.create(742), Animation.create(744)); player.addExtension(LogoutTask.class, new LocationLogoutTask(5, start)); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { int count; boolean failed; diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StileShortcut.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StileShortcut.java index 92c5228e3..01b87715b 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StileShortcut.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StileShortcut.java @@ -8,7 +8,7 @@ import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -50,7 +50,7 @@ public class StileShortcut extends AgilityShortcut { public static void climb(final Player player, final Scenery object) { player.lock(1); int delay = 0; - World.getPulser().submit(new Pulse(delay, player) { + GameWorld.getPulser().submit(new Pulse(delay, player) { @Override public boolean pulse() { ForceMovement movement = new ForceMovement(player, getLocation(player, object, true), getLocation(player, object, false), Animation.create(839)) { diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StrangeFloorShortcut.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StrangeFloorShortcut.java index eea643d75..9a21ec827 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StrangeFloorShortcut.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/StrangeFloorShortcut.java @@ -9,7 +9,7 @@ import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -40,14 +40,14 @@ public class StrangeFloorShortcut extends AgilityShortcut { @Override public void run(final Player player, Scenery object, String option, boolean failed) { - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getAnimator().forceAnimation(JUMP_ANIM); return true; } }); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/TunnelShortcut.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/TunnelShortcut.java index a60ec5a63..445854d4e 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/TunnelShortcut.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/TunnelShortcut.java @@ -7,7 +7,7 @@ import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -78,7 +78,7 @@ public class TunnelShortcut extends AgilityShortcut { offset = 1; } ForceMovement.run(player, start, o.getLocation(), CLIMB_DOWN, 8); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/WaterOrbGrapple.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/WaterOrbGrapple.java index 10db2e70c..5128206b3 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/WaterOrbGrapple.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/WaterOrbGrapple.java @@ -11,7 +11,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -77,7 +77,7 @@ public class WaterOrbGrapple extends OptionHandler { } player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 1; Component tab; diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/YanilleGrapple.java b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/YanilleGrapple.java index 3ea215e10..164dc4da5 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/YanilleGrapple.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/shortcuts/YanilleGrapple.java @@ -8,7 +8,7 @@ import core.game.node.entity.impl.ForceMovement; import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -80,7 +80,7 @@ public class YanilleGrapple extends OptionHandler { } player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter = 1; Component tab; diff --git a/Server/src/main/java/core/game/node/entity/skill/construction/ConstructionGuideBook.java b/Server/src/main/java/core/game/node/entity/skill/construction/ConstructionGuideBook.java index 7567b491d..02357da97 100644 --- a/Server/src/main/java/core/game/node/entity/skill/construction/ConstructionGuideBook.java +++ b/Server/src/main/java/core/game/node/entity/skill/construction/ConstructionGuideBook.java @@ -7,7 +7,7 @@ import core.game.content.dialogue.book.Book; import core.game.content.dialogue.book.Page; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Initializable; /** @@ -70,7 +70,7 @@ public class ConstructionGuideBook extends Book { @Override public boolean open(final Player player) { - if (World.getSettings().isDevMode() && World.getSettings().isBeta()) { + if (GameWorld.getSettings().isDevMode() && GameWorld.getSettings().isBeta()) { for (Item item : RESOURCES) { if (!player.getInventory().contains(item.getId(), item.getAmount())) { player.getInventory().add(item, player); diff --git a/Server/src/main/java/core/game/node/entity/skill/construction/HouseManager.java b/Server/src/main/java/core/game/node/entity/skill/construction/HouseManager.java index 3be383ea8..017e43efb 100644 --- a/Server/src/main/java/core/game/node/entity/skill/construction/HouseManager.java +++ b/Server/src/main/java/core/game/node/entity/skill/construction/HouseManager.java @@ -19,7 +19,7 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import rs09.game.node.entity.skill.construction.Hotspot; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.awt.*; import java.nio.ByteBuffer; @@ -203,7 +203,7 @@ public final class HouseManager { player.getConfigManager().set(262, getRoomAmount()); player.getAudioManager().send(new Audio(984)); // player.getMusicPlayer().unlock(454, true); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { if (hasServant()){ diff --git a/Server/src/main/java/core/game/node/entity/skill/construction/decoration/FireplacePlugin.java b/Server/src/main/java/core/game/node/entity/skill/construction/decoration/FireplacePlugin.java index d8b4c17cb..4cbc250d2 100644 --- a/Server/src/main/java/core/game/node/entity/skill/construction/decoration/FireplacePlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/construction/decoration/FireplacePlugin.java @@ -11,7 +11,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -45,7 +45,7 @@ public final class FireplacePlugin extends OptionHandler { final Scenery obj = (Scenery) node.asScenery(); player.lock(2); player.animate(ANIMATION); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { if (!obj.isActive()) { diff --git a/Server/src/main/java/core/game/node/entity/skill/construction/decoration/StaircasePlugin.java b/Server/src/main/java/core/game/node/entity/skill/construction/decoration/StaircasePlugin.java index 400235717..d204bdcbc 100644 --- a/Server/src/main/java/core/game/node/entity/skill/construction/decoration/StaircasePlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/construction/decoration/StaircasePlugin.java @@ -18,7 +18,7 @@ import core.game.world.map.Location; import core.plugin.Initializable; import core.plugin.Plugin; import rs09.game.node.entity.skill.construction.Hotspot; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; /** @@ -199,7 +199,7 @@ public final class StaircasePlugin extends OptionHandler { switch (buttonId) { case 1: player.lock(1); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { climb(player, 1, house, ladder); @@ -210,7 +210,7 @@ public final class StaircasePlugin extends OptionHandler { break; case 2: player.lock(1); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { climb(player, -1, house, ladder); diff --git a/Server/src/main/java/core/game/node/entity/skill/construction/decoration/questhall/MountedGloryPlugin.java b/Server/src/main/java/core/game/node/entity/skill/construction/decoration/questhall/MountedGloryPlugin.java index 143d4333b..bc41e7ec0 100644 --- a/Server/src/main/java/core/game/node/entity/skill/construction/decoration/questhall/MountedGloryPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/construction/decoration/questhall/MountedGloryPlugin.java @@ -8,7 +8,7 @@ import core.game.interaction.OptionHandler; import core.game.node.Node; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -80,7 +80,7 @@ public class MountedGloryPlugin extends OptionHandler { player.visualize(ANIMATION, GRAPHICS); player.getAudioManager().send(200); player.getImpactHandler().setDisabledTicks(4); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { @Override public boolean pulse() { player.unlock(); diff --git a/Server/src/main/java/core/game/node/entity/skill/construction/npc/HouseServantDialogue.java b/Server/src/main/java/core/game/node/entity/skill/construction/npc/HouseServantDialogue.java index ee4fb6cf5..d6b4727d7 100644 --- a/Server/src/main/java/core/game/node/entity/skill/construction/npc/HouseServantDialogue.java +++ b/Server/src/main/java/core/game/node/entity/skill/construction/npc/HouseServantDialogue.java @@ -13,7 +13,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.IronmanMode; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.path.Pathfinder; import core.game.interaction.inter.SawmillPlankInterface.Plank; @@ -481,7 +481,7 @@ public class HouseServantDialogue extends DialoguePlugin { manager.getServant().setItem(new Item(plank.getPlank().getId(), amt)); servant.setInvisible(true); servant.getLocks().lockMovement(100); - World.getPulser().submit(new Pulse((int) (type.getTimer() / 0.6)){ + GameWorld.getPulser().submit(new Pulse((int) (type.getTimer() / 0.6)){ @Override public boolean pulse() { @@ -519,7 +519,7 @@ public class HouseServantDialogue extends DialoguePlugin { end(); servant.setInvisible(true); servant.getLocks().lockMovement(100); - World.getPulser().submit(new Pulse((int) (type.getTimer() / 0.6)) { + GameWorld.getPulser().submit(new Pulse((int) (type.getTimer() / 0.6)) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/node/entity/skill/cooking/WineFermentPlugin.java b/Server/src/main/java/core/game/node/entity/skill/cooking/WineFermentPlugin.java index c18e1ab55..b9a8a3d80 100644 --- a/Server/src/main/java/core/game/node/entity/skill/cooking/WineFermentPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/cooking/WineFermentPlugin.java @@ -7,7 +7,7 @@ import core.game.interaction.NodeUsageEvent; import core.game.interaction.UseWithHandler; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.plugin.Plugin; /** @@ -55,7 +55,7 @@ public final class WineFermentPlugin extends UseWithHandler { } if (player.getInventory().remove(GRAPES, JUG_OF_WATER)) { player.getInventory().add(UNFERMENTED_WINE); - World.getPulser().submit(new WineFermentingPulse(1, player)); + GameWorld.getPulser().submit(new WineFermentingPulse(1, player)); } return true; } diff --git a/Server/src/main/java/core/game/node/entity/skill/firemaking/FireMakingPulse.java b/Server/src/main/java/core/game/node/entity/skill/firemaking/FireMakingPulse.java index 2da1f7486..e8dda160d 100644 --- a/Server/src/main/java/core/game/node/entity/skill/firemaking/FireMakingPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/firemaking/FireMakingPulse.java @@ -12,7 +12,7 @@ import core.game.node.item.GroundItemManager; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.player.FaceLocationFlag; @@ -99,7 +99,7 @@ public final class FireMakingPulse extends SkillPulse { @Override public boolean reward() { - if (getLastFire() >= World.getTicks()) { + if (getLastFire() >= GameWorld.getTicks()) { createFire(); return true; } @@ -181,7 +181,7 @@ public final class FireMakingPulse extends SkillPulse { * Sets the last fire. */ public void setLastFire() { - player.setAttribute("last-firemake", World.getTicks() + 2); + player.setAttribute("last-firemake", GameWorld.getTicks() + 2); } /** diff --git a/Server/src/main/java/core/game/node/entity/skill/gather/GatheringSkillPulse.java b/Server/src/main/java/core/game/node/entity/skill/gather/GatheringSkillPulse.java index 2e4d3dd85..2d6d03b06 100644 --- a/Server/src/main/java/core/game/node/entity/skill/gather/GatheringSkillPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/gather/GatheringSkillPulse.java @@ -17,7 +17,7 @@ import core.game.node.scenery.SceneryBuilder; import core.game.world.map.Location; import core.tools.RandomFunction; import core.tools.StringUtils; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -168,7 +168,7 @@ public final class GatheringSkillPulse extends SkillPulse { // Calculate if the player should receive a bonus gem or bonus ore or both if (!isMiningEssence && isMining) { //check for bonus ore from shooting star buff - if(isMining && (player.getAttribute("SS Mining Bonus", World.getTicks()) > World.getTicks())){ + if(isMining && (player.getAttribute("SS Mining Bonus", GameWorld.getTicks()) > GameWorld.getTicks())){ if(RandomFunction.getRandom(7) == 5) { player.getPacketDispatch().sendMessage("...you manage to mine a second ore thanks to the Star Sprite."); player.getInventory().add(item); diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/HunterNPC.java b/Server/src/main/java/core/game/node/entity/skill/hunter/HunterNPC.java index 246f56973..e47ef4733 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/HunterNPC.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/HunterNPC.java @@ -3,7 +3,7 @@ package core.game.node.entity.skill.hunter; import core.game.node.entity.Entity; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.tools.RandomFunction; @@ -77,7 +77,7 @@ public final class HunterNPC extends AbstractNPC { @Override public void handleDrops(Player p, Entity killer) { int ticks = getAttribute("hunter", 0); - if (ticks < World.getTicks()) { + if (ticks < GameWorld.getTicks()) { super.handleDrops(p, killer); } } diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/ImpetuousImpulses.java b/Server/src/main/java/core/game/node/entity/skill/hunter/ImpetuousImpulses.java index 97e08d87d..782aa991d 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/ImpetuousImpulses.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/ImpetuousImpulses.java @@ -2,7 +2,7 @@ package core.game.node.entity.skill.hunter; import core.game.node.entity.skill.hunter.bnet.BNetTypes; import core.game.node.entity.skill.hunter.bnet.ImplingNode; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.callback.CallBack; import core.game.world.map.Location; import core.tools.RandomFunction; @@ -139,7 +139,7 @@ public final class ImpetuousImpulses implements CallBack { npc.setAttribute("puroPuro", true); } else { npc = new ImplingNPC(impling.getNpcs()[0], LOCATIONS[RANDOM.nextInt(LOCATIONS.length)], impling); - npc.setAttribute("nextTeleport", World.getTicks() + 600); + npc.setAttribute("nextTeleport", GameWorld.getTicks() + 600); } npc.init(); } diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/ImplingNPC.java b/Server/src/main/java/core/game/node/entity/skill/hunter/ImplingNPC.java index 404eebfbe..e797ae9ea 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/ImplingNPC.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/ImplingNPC.java @@ -12,7 +12,7 @@ import core.game.world.map.path.Pathfinder; import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; import rs09.game.system.config.NPCConfigParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles an impling npc. @@ -56,7 +56,7 @@ public final class ImplingNPC extends AbstractNPC { @Override public void handleTickActions() { if (!getLocks().isMovementLocked()) { - if (isWalks() && !getPulseManager().hasPulseRunning() && nextWalk < World.getTicks()) { + if (isWalks() && !getPulseManager().hasPulseRunning() && nextWalk < GameWorld.getTicks()) { setNextWalk(); Location l = getLocation().transform(-5 + RandomFunction.random(getWalkRadius()), -5 + RandomFunction.random(getWalkRadius()), 0); if (canMove(l)) { @@ -68,10 +68,10 @@ public final class ImplingNPC extends AbstractNPC { sendChat("Tee hee!"); } int nextTeleport = getAttribute("nextTeleport", -1); - if (nextTeleport > -1 && World.getTicks() > nextTeleport) { - setAttribute("nextTeleport", World.getTicks() + 600); + if (nextTeleport > -1 && GameWorld.getTicks() > nextTeleport) { + setAttribute("nextTeleport", GameWorld.getTicks() + 600); graphics(new Graphics(590)); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { teleport(ImpetuousImpulses.LOCATIONS[RandomFunction.random(ImpetuousImpulses.LOCATIONS.length)]); diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/TrapHook.java b/Server/src/main/java/core/game/node/entity/skill/hunter/TrapHook.java index 910837c50..18a04d9fe 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/TrapHook.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/TrapHook.java @@ -1,6 +1,6 @@ package core.game.node.entity.skill.hunter; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.tools.RandomFunction; @@ -37,7 +37,7 @@ public class TrapHook { public Location getChanceLocation() { final double chance = wrapper.getChanceRate(); final int roll = RandomFunction.random(99); - final double successChance = (World.getSettings().isDevMode() ? 100 : 55.0) + chance; + final double successChance = (GameWorld.getSettings().isDevMode() ? 100 : 55.0) + chance; if (successChance > roll) { return RandomFunction.getRandomElement(locations); } diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/TrapSetting.java b/Server/src/main/java/core/game/node/entity/skill/hunter/TrapSetting.java index e0381fc92..c21cf0fda 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/TrapSetting.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/TrapSetting.java @@ -11,7 +11,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; @@ -253,7 +253,7 @@ public class TrapSetting { npc.getWalkingQueue().reset(); npc.getPulseManager().clear(); wrapper.setTicks(wrapper.getTicks() + 4); - World.getPulser().submit(getCatchPulse(wrapper, node, npc, success)); + GameWorld.getPulser().submit(getCatchPulse(wrapper, node, npc, success)); } /** @@ -287,7 +287,7 @@ public class TrapSetting { handleCatch(counter, wrapper, node, npc, success); if (success) { int transformId = getTransformId(wrapper, node); - npc.setAttribute("hunter", World.getTicks() + 6); + npc.setAttribute("hunter", GameWorld.getTicks() + 6); npc.finalizeDeath(player); if (transformId != -1) { wrapper.setObject(getTransformId(wrapper, node)); @@ -301,7 +301,7 @@ public class TrapSetting { case 3: handleCatch(counter, wrapper, node, npc, success); if (success) { - wrapper.setTicks(World.getTicks() + 100); + wrapper.setTicks(GameWorld.getTicks() + 100); wrapper.setReward(node); wrapper.setObject(getFinalId(wrapper, node)); return true; diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/TrapWrapper.java b/Server/src/main/java/core/game/node/entity/skill/hunter/TrapWrapper.java index 949040368..ccc0a930f 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/TrapWrapper.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/TrapWrapper.java @@ -5,7 +5,7 @@ import core.game.node.entity.player.Player; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; @@ -99,7 +99,7 @@ public final class TrapWrapper { this.type = type; this.object = object; this.originalId = object.getId(); - this.ticks = World.getTicks() + (100); + this.ticks = GameWorld.getTicks() + (100); this.object.getAttributes().setAttribute("trap-uid", player.getHunterManager().getUid()); } @@ -202,7 +202,7 @@ public final class TrapWrapper { * @return {@code True} if o. */ private boolean isTimeUp() { - return ticks < World.getTicks(); + return ticks < GameWorld.getTicks(); } /** @@ -331,7 +331,7 @@ public final class TrapWrapper { * @return {@code True} if so. */ public boolean isBusy() { - return getBusyTicks() > World.getTicks(); + return getBusyTicks() > GameWorld.getTicks(); } /** @@ -347,7 +347,7 @@ public final class TrapWrapper { * @param busyTicks The busyTicks to set. */ public void setBusyTicks(int busyTicks) { - this.busyTicks = World.getTicks() + busyTicks; + this.busyTicks = GameWorld.getTicks() + busyTicks; } /** diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/bnet/BNetPulse.java b/Server/src/main/java/core/game/node/entity/skill/hunter/bnet/BNetPulse.java index 056847f2f..638531490 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/bnet/BNetPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/bnet/BNetPulse.java @@ -7,7 +7,7 @@ import core.game.node.entity.combat.DeathTask; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; import core.tools.StringUtils; @@ -106,14 +106,14 @@ public final class BNetPulse extends SkillPulse { if (++ticks % 2 != 0) { return false; } - if (node.getAttribute("dead", 0) > World.getTicks()) { + if (node.getAttribute("dead", 0) > GameWorld.getTicks()) { player.sendMessage("Ooops! It's gone."); return true; } if ((success = isSuccessful())) { node.finalizeDeath(player); type.reward(player, node); - node.setAttribute("dead", World.getTicks() + 10); + node.setAttribute("dead", GameWorld.getTicks() + 10); if (type == BNetTypes.ECLECTIC_IMPLING.getNode() || type == BNetTypes.ESSENCE_IMPLING.getNode() ) { updateLumbridgeImplingTask(player); } @@ -126,7 +126,7 @@ public final class BNetPulse extends SkillPulse { @Override public void message(int type) { if (type == 0) { - node.setAttribute("looting", World.getTicks() + (ANIMATION.getDuration() + 1)); + node.setAttribute("looting", GameWorld.getTicks() + (ANIMATION.getDuration() + 1)); player.lock(ANIMATION.getDuration()); } this.type.message(player, type, success); diff --git a/Server/src/main/java/core/game/node/entity/skill/hunter/falconry/FalconryCatchPulse.java b/Server/src/main/java/core/game/node/entity/skill/hunter/falconry/FalconryCatchPulse.java index 0d1f33086..d068f613a 100644 --- a/Server/src/main/java/core/game/node/entity/skill/hunter/falconry/FalconryCatchPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/hunter/falconry/FalconryCatchPulse.java @@ -9,7 +9,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.HintIconManager; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import rs09.game.world.repository.Repository; import core.tools.RandomFunction; @@ -123,7 +123,7 @@ public final class FalconryCatchPulse extends SkillPulse { falcon.setAttribute("falcon:catch", falconCatch); falcon.init(); HintIconManager.registerHintIcon(player, falcon); - World.getPulser().submit(new Pulse(100, falcon) { + GameWorld.getPulser().submit(new Pulse(100, falcon) { @Override public boolean pulse() { if (!falcon.isActive()) { diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/HouseTeleportPlugin.java b/Server/src/main/java/core/game/node/entity/skill/magic/HouseTeleportPlugin.java index 44069dfed..7ba265bf8 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/HouseTeleportPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/HouseTeleportPlugin.java @@ -7,7 +7,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.entity.player.link.TeleportManager.TeleportType; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.plugin.Plugin; import core.tools.RandomFunction; @@ -43,7 +43,7 @@ public class HouseTeleportPlugin extends MagicSpell { } if (entity.getTeleporter().send(location.transform(0, RandomFunction.random(3), 0), TeleportType.NORMAL)) { entity.setAttribute("teleport:items", super.runes); - entity.setAttribute("magic-delay", World.getTicks() + 5); + entity.setAttribute("magic-delay", GameWorld.getTicks() + 5); ((Player) entity).getInventory().remove(super.runes); return true; } diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/MagicSpell.java b/Server/src/main/java/core/game/node/entity/skill/magic/MagicSpell.java index 2b1397653..987998ce7 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/MagicSpell.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/MagicSpell.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.entity.player.link.audio.Audio; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.MapDistance; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; @@ -101,7 +101,7 @@ public abstract class MagicSpell implements Plugin { * @param target The target. */ public static boolean castSpell(final Player p, SpellBook book, int spellId, Node target) { - if (p.getAttribute("magic-delay", 0) > World.getTicks()) { + if (p.getAttribute("magic-delay", 0) > GameWorld.getTicks()) { return false; } MagicSpell spell = book.getSpell(spellId); @@ -130,8 +130,8 @@ public abstract class MagicSpell implements Plugin { if (!combatSpell) { p.getSkills().addExperience(Skills.MAGIC, spell.getExperience(p), true); } - if (p.getAttribute("magic-delay", 0) <= World.getTicks()) { - p.setAttribute("magic-delay", World.getTicks() + spell.getDelay()); + if (p.getAttribute("magic-delay", 0) <= GameWorld.getTicks()) { + p.setAttribute("magic-delay", GameWorld.getTicks() + spell.getDelay()); } return true; } @@ -213,7 +213,7 @@ public abstract class MagicSpell implements Plugin { } } if((spellId == 12 || spellId == 30 || spellId == 56) && caster instanceof Player){ - if (caster.getAttribute("entangleDelay", 0) > World.getTicks()) { + if (caster.getAttribute("entangleDelay", 0) > GameWorld.getTicks()) { caster.asPlayer().sendMessage("You have recently cast a binding spell."); return false; } diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/ancient/AncientTeleportPlugin.java b/Server/src/main/java/core/game/node/entity/skill/magic/ancient/AncientTeleportPlugin.java index c7e729ad0..b05c1d9be 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/ancient/AncientTeleportPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/ancient/AncientTeleportPlugin.java @@ -9,7 +9,7 @@ import core.game.node.entity.combat.equipment.SpellType; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.entity.player.link.TeleportManager.TeleportType; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.plugin.Initializable; import core.plugin.Plugin; @@ -64,7 +64,7 @@ public final class AncientTeleportPlugin extends MagicSpell { entity.asPlayer().getAchievementDiaryManager().finishTask(entity.asPlayer(), DiaryType.VARROCK, 2, 11); } entity.setAttribute("teleport:items", super.runes); - entity.setAttribute("magic-delay", World.getTicks() + 5); + entity.setAttribute("magic-delay", GameWorld.getTicks() + 5); return true; } return false; diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/DreamSpell.java b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/DreamSpell.java index 29b73f35b..3c41c39f9 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/DreamSpell.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/DreamSpell.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; @@ -69,7 +69,7 @@ public final class DreamSpell extends MagicSpell { } p.animate(START); p.lock(); - World.getPulser().submit(new Pulse(4, p) { + GameWorld.getPulser().submit(new Pulse(4, p) { @Override public boolean pulse() { p.animate(DREAMING); diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/MagicImbueSpell.java b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/MagicImbueSpell.java index 5a0a55940..312467fea 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/MagicImbueSpell.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/MagicImbueSpell.java @@ -9,7 +9,7 @@ import core.game.node.entity.combat.equipment.SpellType; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Plugin; @@ -50,14 +50,14 @@ public class MagicImbueSpell extends MagicSpell { if (player == null) { return false; } - if (player.getAttribute("spell:imbue", 0) > World.getTicks()) { + if (player.getAttribute("spell:imbue", 0) > GameWorld.getTicks()) { player.sendMessage("You already have this activated."); return false; } if (!super.meetsRequirements(player, true, true)) { return false; } - player.setAttribute("spell:imbue", World.getTicks() + 20); + player.setAttribute("spell:imbue", GameWorld.getTicks() + 20); player.lock(ANIMATION.getDuration() + 1); player.graphics(GRAPHIC); player.animate(ANIMATION); diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/SpellbookSwapSpell.java b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/SpellbookSwapSpell.java index a87affc14..8e786c2eb 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/SpellbookSwapSpell.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/SpellbookSwapSpell.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; @@ -59,7 +59,7 @@ public class SpellbookSwapSpell extends MagicSpell { player.getDialogueInterpreter().open(3264731); final int id = RandomFunction.random(1, 500000); player.setAttribute("spell:swap", id); - World.getPulser().submit(new Pulse(20, player) { + GameWorld.getPulser().submit(new Pulse(20, player) { @Override public boolean pulse() { if (player.getAttribute("spell:swap", 0) == id) { diff --git a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/VengeanceSpell.java b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/VengeanceSpell.java index 4806dd4be..44579d70a 100644 --- a/Server/src/main/java/core/game/node/entity/skill/magic/lunar/VengeanceSpell.java +++ b/Server/src/main/java/core/game/node/entity/skill/magic/lunar/VengeanceSpell.java @@ -8,7 +8,7 @@ import core.game.node.entity.combat.equipment.SpellType; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.SpellBookManager.SpellBook; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable; @@ -59,7 +59,7 @@ public final class VengeanceSpell extends MagicSpell { @Override public boolean cast(Entity entity, Node target) { - int ticks = World.getTicks(); + int ticks = GameWorld.getTicks(); boolean vengOther = spellId == 19; if (entity.getAttribute("vengeance_delay", -1) > ticks) { ((Player) entity).getPacketDispatch().sendMessage("You can only cast vengeance spells once every 30 seconds."); diff --git a/Server/src/main/java/core/game/node/entity/skill/prayer/BoneBuryingOptionPlugin.java b/Server/src/main/java/core/game/node/entity/skill/prayer/BoneBuryingOptionPlugin.java index 0570cddf3..cd2f0d833 100644 --- a/Server/src/main/java/core/game/node/entity/skill/prayer/BoneBuryingOptionPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/prayer/BoneBuryingOptionPlugin.java @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.link.audio.Audio; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -33,10 +33,10 @@ public final class BoneBuryingOptionPlugin extends OptionHandler { @Override public boolean handle(final Player player, Node node, String option) { - if (player.getAttribute("delay:bury", -1) > World.getTicks()) { + if (player.getAttribute("delay:bury", -1) > GameWorld.getTicks()) { return true; } - player.setAttribute("delay:bury", World.getTicks() + 2); + player.setAttribute("delay:bury", GameWorld.getTicks() + 2); final Item item = (Item) node; Bones bone = Bones.forId(item.getId()); if (bone == null) { @@ -59,7 +59,7 @@ public final class BoneBuryingOptionPlugin extends OptionHandler { player.getPacketDispatch().sendMessage("You dig a hole in the ground..."); player.getAudioManager().send(SOUND); final Bones bonee = bone; - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.getPacketDispatch().sendMessage("You bury the bones."); diff --git a/Server/src/main/java/core/game/node/entity/skill/runecrafting/MysteriousRuinPlugin.java b/Server/src/main/java/core/game/node/entity/skill/runecrafting/MysteriousRuinPlugin.java index 3440182cb..1a7795051 100644 --- a/Server/src/main/java/core/game/node/entity/skill/runecrafting/MysteriousRuinPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/runecrafting/MysteriousRuinPlugin.java @@ -7,7 +7,7 @@ import core.game.node.entity.player.info.Rights; import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Plugin; @@ -69,7 +69,7 @@ public final class MysteriousRuinPlugin extends UseWithHandler { player.animate(ANIMATION); player.getPacketDispatch().sendMessage("You hold the " + event.getUsedItem().getName() + " towards the mysterious ruins."); player.getPacketDispatch().sendMessage("You feel a powerful force take hold of you."); - World.getPulser().submit(new Pulse(3, player) { + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { player.getProperties().setTeleportLocation(ruin.getEnd()); diff --git a/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java b/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java index 2756a7b44..6485dc3ac 100644 --- a/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/runecrafting/RuneCraftPulse.java @@ -12,7 +12,7 @@ import core.game.world.update.flag.context.Graphics; import core.tools.RandomFunction; import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_BASE; import static rs09.game.node.entity.player.info.stats.StatAttributeKeysKt.STATS_RC; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.Arrays; @@ -261,7 +261,7 @@ public final class RuneCraftPulse extends SkillPulse { * @return {@code True} if so. */ private boolean hasSpellImbue() { - return player.getAttribute("spell:imbue", 0) > World.getTicks(); + return player.getAttribute("spell:imbue", 0) > GameWorld.getTicks(); } /** diff --git a/Server/src/main/java/core/game/node/entity/skill/runecrafting/RunecraftingPlugin.java b/Server/src/main/java/core/game/node/entity/skill/runecrafting/RunecraftingPlugin.java index cc98d55e6..72e1a4d43 100644 --- a/Server/src/main/java/core/game/node/entity/skill/runecrafting/RunecraftingPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/runecrafting/RunecraftingPlugin.java @@ -21,7 +21,7 @@ import core.plugin.Initializable; import core.plugin.Plugin; import rs09.game.content.global.travel.EssenceTeleport; import rs09.game.node.entity.skill.runecrafting.RunePouchPlugin; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.plugin.PluginManager; /** @@ -66,7 +66,7 @@ public class RunecraftingPlugin extends OptionHandler { player.lock(4); player.getInterfaceManager().openOverlay(new Component(115)); PacketRepository.send(MinimapState.class, new MinimapStateContext(player, 1)); - World.getPulser().submit(new Pulse(4, player) { + GameWorld.getPulser().submit(new Pulse(4, player) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/BansheeNPC.java b/Server/src/main/java/core/game/node/entity/skill/slayer/BansheeNPC.java index 7847086eb..b5ab44ff0 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/BansheeNPC.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/BansheeNPC.java @@ -11,7 +11,7 @@ import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; import core.game.node.entity.impl.Animator.Priority; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; @@ -37,7 +37,7 @@ public final class BansheeNPC extends AbstractNPC { if (victim instanceof Player) { final Player player = (Player) victim; if (!hasEarMuffs(player)) { - if (RandomFunction.random(10) < 4 && player.getProperties().getCombatPulse().getNextAttack() <= World.getTicks()) { + if (RandomFunction.random(10) < 4 && player.getProperties().getCombatPulse().getNextAttack() <= GameWorld.getTicks()) { player.getWalkingQueue().reset(); player.getLocks().lockMovement(3); player.getProperties().getCombatPulse().setNextAttack(3); diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/FishingExplosivePlugin.java b/Server/src/main/java/core/game/node/entity/skill/slayer/FishingExplosivePlugin.java index 56bc33b74..7f577e01d 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/FishingExplosivePlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/FishingExplosivePlugin.java @@ -17,7 +17,7 @@ import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -117,7 +117,7 @@ public final class FishingExplosivePlugin extends OptionHandler { player.animate(ANIMATION); player.getPacketDispatch().sendMessage("You hurl the shuddering vial into the water..."); sendProjectile(player, (Scenery) event.getUsedWith()); - World.getPulser().submit(new Pulse(delay, player) { + GameWorld.getPulser().submit(new Pulse(delay, player) { @Override public boolean pulse() { Direction dir = event.getUsedWith().getDirection(); diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/NechryaelNPC.java b/Server/src/main/java/core/game/node/entity/skill/slayer/NechryaelNPC.java index 4a64251f9..1ce0c8546 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/NechryaelNPC.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/NechryaelNPC.java @@ -5,7 +5,7 @@ import core.game.node.entity.combat.BattleState; import core.game.node.entity.combat.CombatStyle; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -80,7 +80,7 @@ public final class NechryaelNPC extends AbstractNPC { * Sets the next spawn time. */ private void setSpawnTime() { - nextSpawn = World.getTicks() + 50; + nextSpawn = GameWorld.getTicks() + 50; } /** @@ -92,7 +92,7 @@ public final class NechryaelNPC extends AbstractNPC { setSpawnTime(); return false; } - return nextSpawn < World.getTicks(); + return nextSpawn < GameWorld.getTicks(); } @Override @@ -136,7 +136,7 @@ public final class NechryaelNPC extends AbstractNPC { this.player = player; this.parent = parent; this.setRespawn(false); - this.time = World.getTicks() + 120; + this.time = GameWorld.getTicks() + 120; } @Override @@ -145,7 +145,7 @@ public final class NechryaelNPC extends AbstractNPC { if (!inCombat() || !player.inCombat()) { getProperties().getCombatPulse().attack(player); } - if (time < World.getTicks() || !player.isActive() || player.getLocation().getDistance(getLocation()) > 15) { + if (time < GameWorld.getTicks() || !player.isActive() || player.getLocation().getDistance(getLocation()) > 15) { clear(); } } diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/SlayerMasterDialogue.java b/Server/src/main/java/core/game/node/entity/skill/slayer/SlayerMasterDialogue.java index 89b2c919d..ecb1aed5f 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/SlayerMasterDialogue.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/SlayerMasterDialogue.java @@ -2,7 +2,7 @@ package core.game.node.entity.skill.slayer; import org.json.simple.JSONObject; import rs09.ServerStore; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.content.dialogue.DialoguePlugin; import core.game.content.dialogue.FacialExpression; import core.game.content.global.Skillcape; @@ -516,7 +516,7 @@ public final class SlayerMasterDialogue extends DialoguePlugin { } break; case 844: - if (World.getSettings().getAllow_slayer_reroll()) { + if (GameWorld.getSettings().getAllow_slayer_reroll()) { options("Got any tips for me?", "Okay, great!", "I'd like to re-roll that task."); } else { options("Got any tips for me?", "Okay, great!"); diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java index 627ed96c9..529dfe8a7 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java @@ -17,7 +17,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -70,7 +70,7 @@ public final class AncientCavern extends MapZone implements Plugin { public boolean handle(final Player player, Node node, String option) { lock(player, 30); AgilityHandler.forceWalk(player, -1, player.getLocation(), player.getLocation().transform(0, -6, 0), Animation.create(6723), 10, 0.0, null); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override @@ -133,7 +133,7 @@ public final class AncientCavern extends MapZone implements Plugin { player.removeAttribute("canClose"); player.lock(14); player.getImpactHandler().setDisabledTicks(14); - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { int count = 0; @Override @@ -214,7 +214,7 @@ public final class AncientCavern extends MapZone implements Plugin { */ private void removeSkeleton(final Scenery object, final NPC spawn) { SceneryBuilder.remove(object); - World.getPulser().submit(new Pulse(200) { + GameWorld.getPulser().submit(new Pulse(200) { @Override public boolean pulse() { if (spawn != null && spawn.isActive()) { diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/FremennikDungeon.java b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/FremennikDungeon.java index 46a5ef542..d896511f3 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/FremennikDungeon.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/FremennikDungeon.java @@ -10,7 +10,7 @@ import core.game.node.entity.combat.ImpactHandler.HitsplatType; import core.game.node.entity.player.Player; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; @@ -58,7 +58,7 @@ public final class FremennikDungeon extends MapZone implements Plugin { return true; } player.lock(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int count; @Override diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/LumbridgeDungeon.java b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/LumbridgeDungeon.java index 610846b29..cfca0ec06 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/LumbridgeDungeon.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/LumbridgeDungeon.java @@ -9,7 +9,7 @@ import core.game.node.entity.combat.CombatStyle; import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; @@ -143,7 +143,7 @@ public final class LumbridgeDungeon extends MapZone implements Plugin { if (!isProtected) { animate(NPCDefinition.forId(7823).getCombatAnimation(3)); player.animate(Animation.create(1810)); - World.getPulser().submit(new Pulse(8, player) { + GameWorld.getPulser().submit(new Pulse(8, player) { @Override public boolean pulse() { getAnimator().reset(); diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/SmokeDungeon.java b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/SmokeDungeon.java index 59c89bf2d..875a6cded 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/SmokeDungeon.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/SmokeDungeon.java @@ -9,7 +9,7 @@ import core.game.node.entity.Entity; import core.game.node.entity.combat.ImpactHandler.HitsplatType; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.zone.MapZone; import core.game.world.map.zone.ZoneBorders; @@ -54,7 +54,7 @@ public final class SmokeDungeon extends MapZone implements Plugin { if (player.getInterfaceManager().isOpened() || player.getInterfaceManager().hasChatbox() || player.getLocks().isMovementLocked()) { continue; } - if (SmokeDungeon.getDelay(player) < World.getTicks() && !isProtected(player)) { + if (SmokeDungeon.getDelay(player) < GameWorld.getTicks() && !isProtected(player)) { effect(player); } } @@ -109,7 +109,7 @@ public final class SmokeDungeon extends MapZone implements Plugin { if (!pulse.isRunning()) { pulse.restart(); pulse.start(); - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); } p.getInterfaceManager().openOverlay(new Component(118)); } @@ -146,7 +146,7 @@ public final class SmokeDungeon extends MapZone implements Plugin { * @param player the player. */ private static void setDelay(Player player) { - player.setAttribute("smoke-delay", World.getTicks() + DELAY); + player.setAttribute("smoke-delay", GameWorld.getTicks() + DELAY); } /** diff --git a/Server/src/main/java/core/game/node/entity/skill/smithing/FurnaceOptionPlugin.java b/Server/src/main/java/core/game/node/entity/skill/smithing/FurnaceOptionPlugin.java index 278196320..9a8433b6a 100644 --- a/Server/src/main/java/core/game/node/entity/skill/smithing/FurnaceOptionPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/smithing/FurnaceOptionPlugin.java @@ -14,7 +14,7 @@ import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; @@ -92,7 +92,7 @@ public final class FurnaceOptionPlugin extends OptionHandler { private final void handleTutorialIsland(final Player player) { if (player.getInventory().containItems(438, 436)) { player.animate(ANIMATION); - World.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(2, player) { @Override public boolean pulse() { player.getInventory().remove(ITEMS); diff --git a/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTrainingRoom.java b/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTrainingRoom.java index bd32e4b89..ec155c05c 100644 --- a/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTrainingRoom.java +++ b/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTrainingRoom.java @@ -18,7 +18,7 @@ import core.game.node.entity.player.link.quest.Quest; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.build.DynamicRegion; import core.game.world.map.path.Pathfinder; @@ -335,7 +335,7 @@ public final class SummoningTrainingRoom extends OptionHandler { switch (stage) { case 0: close(); - World.getPulser().submit(new Pulse(1, player, fluffy) { + GameWorld.getPulser().submit(new Pulse(1, player, fluffy) { int counter = 0; @Override @@ -374,7 +374,7 @@ public final class SummoningTrainingRoom extends OptionHandler { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.POSITION, x, y, height, 1, 100)); PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.ROTATION, x + 1000, y + 13, height, 1, 100)); player.faceLocation(cutscene.getBase().transform(44, 50, 1)); - World.getPulser().submit(new Pulse(1, player, fluffy) { + GameWorld.getPulser().submit(new Pulse(1, player, fluffy) { int counter = 0; @Override @@ -399,7 +399,7 @@ public final class SummoningTrainingRoom extends OptionHandler { break; case 6: close(); - World.getPulser().submit(new Pulse(1, player, fluffy) { + GameWorld.getPulser().submit(new Pulse(1, player, fluffy) { int counter = 0; @Override @@ -438,7 +438,7 @@ public final class SummoningTrainingRoom extends OptionHandler { break; case 8: end(); - World.getPulser().submit(new Pulse(2) { + GameWorld.getPulser().submit(new Pulse(2) { @Override public boolean pulse() { player.animate(Animation.create(827)); @@ -506,7 +506,7 @@ public final class SummoningTrainingRoom extends OptionHandler { PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.POSITION, x, y, height, 1, 95)); PacketRepository.send(CameraViewPacket.class, new CameraContext(player, CameraType.ROTATION, x + 1000, y + 17, height, 1, 95)); wolf = player.getFamiliarManager().getFamiliar(); - World.getPulser().submit(new Pulse(1, player, fluffy) { + GameWorld.getPulser().submit(new Pulse(1, player, fluffy) { int counter; @Override @@ -535,7 +535,7 @@ public final class SummoningTrainingRoom extends OptionHandler { if (player.getInventory().remove(HOWL_SCROLL)) { player.getDialogueInterpreter().setDialogue(this); player.getDialogueInterpreter().getDialogue().setStage(8); - World.getPulser().submit(new Pulse(1, player, fluffy, wolf) { + GameWorld.getPulser().submit(new Pulse(1, player, fluffy, wolf) { int counter; @Override diff --git a/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Familiar.java b/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Familiar.java index 44be7a43a..814d76ab8 100644 --- a/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Familiar.java +++ b/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Familiar.java @@ -26,7 +26,7 @@ import core.tools.RandomFunction; import rs09.game.node.entity.combat.CombatPulse; import rs09.game.node.entity.combat.CombatSwingHandler; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -353,7 +353,7 @@ public abstract class Familiar extends NPC implements Plugin { return; } if (specialMove(special)) { - setAttribute("special-delay", World.getTicks() + 3); + setAttribute("special-delay", GameWorld.getTicks() + 3); owner.getInventory().remove(new Item(scroll.getItemId())); owner.getAudioManager().send(4161); visualizeSpecialMove(); @@ -378,7 +378,7 @@ public abstract class Familiar extends NPC implements Plugin { public void sendFamiliarHit(final Entity target, final int maxHit, final Graphics graphics) { final int ticks = 2 + (int) Math.floor(getLocation().getDistance(target.getLocation()) * 0.5); getProperties().getCombatPulse().setNextAttack(4); - World.getPulser().submit(new Pulse(ticks, this, target) { + GameWorld.getPulser().submit(new Pulse(ticks, this, target) { @Override public boolean pulse() { BattleState state = new BattleState(Familiar.this, target); @@ -451,7 +451,7 @@ public abstract class Familiar extends NPC implements Plugin { if (!isOwnerAttackable()) { return false; } - if (getAttribute("special-delay", 0) > World.getTicks()) { + if (getAttribute("special-delay", 0) > GameWorld.getTicks()) { return false; } return true; diff --git a/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Forager.java b/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Forager.java index fe769f068..82e62387e 100644 --- a/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Forager.java +++ b/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/Forager.java @@ -3,7 +3,7 @@ package core.game.node.entity.skill.summoning.familiar; import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.node.entity.player.Player; import core.game.node.item.Item; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.tools.RandomFunction; /** @@ -51,7 +51,7 @@ public abstract class Forager extends BurdenBeast { @Override public void handleFamiliarTick() { super.handleFamiliarTick(); - if (items != null && items.length > 0 && passiveDelay < World.getTicks()) { + if (items != null && items.length > 0 && passiveDelay < GameWorld.getTicks()) { if (RandomFunction.random(getRandom()) < 4) { produceItem(items[RandomFunction.random(items.length)]); } @@ -103,6 +103,6 @@ public abstract class Forager extends BurdenBeast { * Sets a random passive delay. */ public void setRandomPassive() { - passiveDelay = World.getTicks() + RandomFunction.random(100, 440); + passiveDelay = GameWorld.getTicks() + RandomFunction.random(100, 440); } } diff --git a/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/RemoteViewer.java b/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/RemoteViewer.java index 43fc4ed10..b30d66f85 100644 --- a/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/RemoteViewer.java +++ b/Server/src/main/java/core/game/node/entity/skill/summoning/familiar/RemoteViewer.java @@ -2,7 +2,7 @@ package core.game.node.entity.skill.summoning.familiar; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Direction; import core.game.world.map.Location; import core.game.world.update.flag.context.Animation; @@ -80,7 +80,7 @@ public final class RemoteViewer { player.lock(); familiar.animate(animation); player.getPacketDispatch().sendMessage("You send the " + familiar.getName().toLowerCase() + " to fly " + (type == ViewType.STRAIGHT_UP ? "directly up" : "to the " + type.name().toLowerCase()) + "..."); - World.getPulser().submit(new Pulse(5) { + GameWorld.getPulser().submit(new Pulse(5) { @Override public boolean pulse() { view(); @@ -97,7 +97,7 @@ public final class RemoteViewer { return; } sendCamera(type.getXOffset(), type.getYOffset(), type.getXRot(), type.getYRot()); - World.getPulser().submit(new Pulse(13) { + GameWorld.getPulser().submit(new Pulse(13) { @Override public boolean pulse() { reset(); diff --git a/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java b/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java index f429a74ac..a50388546 100644 --- a/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java +++ b/Server/src/main/java/core/game/node/entity/skill/thieving/StallThiefPulse.java @@ -4,10 +4,12 @@ import core.game.node.entity.skill.SkillPulse; import core.game.node.entity.skill.Skills; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; -import rs09.game.world.World; +import rs09.game.world.GameWorld; +import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; @@ -47,7 +49,7 @@ public final class StallThiefPulse extends SkillPulse { @Override public void start() { - player.setAttribute("thieveDelay", World.getTicks()); + player.setAttribute("thieveDelay", GameWorld.getTicks()); super.start(); } @@ -73,7 +75,7 @@ public final class StallThiefPulse extends SkillPulse { @Override public boolean hasInactiveNode() { - if (player.getAttribute("thieveDelay", 0) <= World.getTicks()) { + if (player.getAttribute("thieveDelay", 0) <= GameWorld.getTicks()) { return false; } return super.hasInactiveNode(); diff --git a/Server/src/main/java/core/game/node/entity/skill/thieving/ThievableChestPlugin.java b/Server/src/main/java/core/game/node/entity/skill/thieving/ThievableChestPlugin.java index 50df611b0..8f99f1235 100644 --- a/Server/src/main/java/core/game/node/entity/skill/thieving/ThievableChestPlugin.java +++ b/Server/src/main/java/core/game/node/entity/skill/thieving/ThievableChestPlugin.java @@ -10,7 +10,7 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.Animation; import core.plugin.Initializable; import core.plugin.Plugin; @@ -161,7 +161,7 @@ public final class ThievableChestPlugin extends OptionHandler { } player.sendMessage("You find a trap on the chest..."); player.getImpactHandler().setDisabledTicks(6); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { int counter; @Override @@ -196,7 +196,7 @@ public final class ThievableChestPlugin extends OptionHandler { * Sets the respawn delay. */ public void setRespawn() { - currentRespawn = World.getTicks() + (int) (respawn / 0.6); + currentRespawn = GameWorld.getTicks() + (int) (respawn / 0.6); } /** @@ -204,7 +204,7 @@ public final class ThievableChestPlugin extends OptionHandler { * @return {@code True} if so. */ public boolean isRespawning() { - return currentRespawn > World.getTicks(); + return currentRespawn > GameWorld.getTicks(); } /** diff --git a/Server/src/main/java/core/game/node/entity/state/StatePulse.java b/Server/src/main/java/core/game/node/entity/state/StatePulse.java index 2841a3f34..21c3b55d7 100644 --- a/Server/src/main/java/core/game/node/entity/state/StatePulse.java +++ b/Server/src/main/java/core/game/node/entity/state/StatePulse.java @@ -2,7 +2,7 @@ package core.game.node.entity.state; import core.game.node.entity.Entity; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; @@ -83,7 +83,7 @@ public abstract class StatePulse extends Pulse { } restart(); start(); - World.getPulser().submit(this); + GameWorld.getPulser().submit(this); } } \ No newline at end of file diff --git a/Server/src/main/java/core/game/node/entity/state/impl/FireResistantPulse.java b/Server/src/main/java/core/game/node/entity/state/impl/FireResistantPulse.java index 78d4584de..e99a0de1a 100644 --- a/Server/src/main/java/core/game/node/entity/state/impl/FireResistantPulse.java +++ b/Server/src/main/java/core/game/node/entity/state/impl/FireResistantPulse.java @@ -3,7 +3,7 @@ package core.game.node.entity.state.impl; import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.node.entity.state.StatePulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; @@ -16,7 +16,7 @@ public class FireResistantPulse extends StatePulse { /** * The time to finish. */ - private static int END_TIME = World.getSettings().isDevMode() ? 30 : 600; + private static int END_TIME = GameWorld.getSettings().isDevMode() ? 30 : 600; /** * The current tick. diff --git a/Server/src/main/java/core/game/node/entity/state/impl/FrozenStatePulse.java b/Server/src/main/java/core/game/node/entity/state/impl/FrozenStatePulse.java index 4405606d4..d2467002e 100644 --- a/Server/src/main/java/core/game/node/entity/state/impl/FrozenStatePulse.java +++ b/Server/src/main/java/core/game/node/entity/state/impl/FrozenStatePulse.java @@ -3,7 +3,7 @@ package core.game.node.entity.state.impl; import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.node.entity.state.StatePulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; @@ -44,7 +44,7 @@ public final class FrozenStatePulse extends StatePulse { @Override public boolean canRun(Entity entity) { - return entity.getAttribute("freeze_immunity", -1) < World.getTicks(); + return entity.getAttribute("freeze_immunity", -1) < GameWorld.getTicks(); } @Override @@ -55,7 +55,7 @@ public final class FrozenStatePulse extends StatePulse { } entity.getWalkingQueue().reset(); entity.getLocks().lockMovement(getDelay()); - entity.setAttribute("freeze_immunity", World.getTicks() + getDelay() + IMMUNITY_TICK); + entity.setAttribute("freeze_immunity", GameWorld.getTicks() + getDelay() + IMMUNITY_TICK); if (entity instanceof Player) { ((Player) entity).getPacketDispatch().sendMessage(message); } diff --git a/Server/src/main/java/core/game/node/entity/state/impl/MiasmicStatePulse.java b/Server/src/main/java/core/game/node/entity/state/impl/MiasmicStatePulse.java index f8b1f0c63..0a4c629f4 100644 --- a/Server/src/main/java/core/game/node/entity/state/impl/MiasmicStatePulse.java +++ b/Server/src/main/java/core/game/node/entity/state/impl/MiasmicStatePulse.java @@ -3,7 +3,7 @@ package core.game.node.entity.state.impl; import core.game.node.entity.Entity; import core.game.node.entity.player.Player; import core.game.node.entity.state.StatePulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.nio.ByteBuffer; @@ -44,13 +44,13 @@ public final class MiasmicStatePulse extends StatePulse { @Override public boolean canRun(Entity entity) { - return entity.getAttribute("miasmic_immunity", -1) < World.getTicks(); + return entity.getAttribute("miasmic_immunity", -1) < GameWorld.getTicks(); } @Override public void start() { super.start(); - entity.setAttribute("miasmic_immunity", World.getTicks() + getDelay() + IMMUNITY_TICK); + entity.setAttribute("miasmic_immunity", GameWorld.getTicks() + getDelay() + IMMUNITY_TICK); if (entity instanceof Player) { ((Player) entity).getPacketDispatch().sendMessage(message); } diff --git a/Server/src/main/java/core/game/node/item/GroundItem.java b/Server/src/main/java/core/game/node/item/GroundItem.java index 4c776dece..c67501267 100644 --- a/Server/src/main/java/core/game/node/item/GroundItem.java +++ b/Server/src/main/java/core/game/node/item/GroundItem.java @@ -1,7 +1,7 @@ package core.game.node.item; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; /** @@ -74,7 +74,7 @@ public class GroundItem extends Item { super.index = -1; super.interaction.setDefault(); this.dropper = player; - this.ticks = World.getTicks(); + this.ticks = GameWorld.getTicks(); this.decayTime = ticks + decay; } @@ -90,12 +90,12 @@ public class GroundItem extends Item { * @return {@code True} if so. */ public boolean isPrivate() { - return remainPrivate || (decayTime - World.getTicks() > 100); + return remainPrivate || (decayTime - GameWorld.getTicks() > 100); } @Override public boolean isActive() { - return removed || World.getTicks() < decayTime; + return removed || GameWorld.getTicks() < decayTime; } /** @@ -148,7 +148,7 @@ public class GroundItem extends Item { * @param decayTime The decayTime to set. */ public void setDecayTime(int decayTime) { - this.decayTime = World.getTicks() + decayTime; + this.decayTime = GameWorld.getTicks() + decayTime; } /** diff --git a/Server/src/main/java/core/game/node/item/GroundItemManager.java b/Server/src/main/java/core/game/node/item/GroundItemManager.java index bd69a7398..fc5d797ad 100644 --- a/Server/src/main/java/core/game/node/item/GroundItemManager.java +++ b/Server/src/main/java/core/game/node/item/GroundItemManager.java @@ -1,7 +1,7 @@ package core.game.node.item; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.chunk.ItemUpdateFlag; @@ -153,7 +153,7 @@ public final class GroundItemManager { if (!item.isRemoved()) { RegionManager.getRegionPlane(item.getLocation()).remove(item); } - } else if (!item.isRemainPrivate() && item.getDecayTime() - World.getTicks() == 100) { + } else if (!item.isRemainPrivate() && item.getDecayTime() - GameWorld.getTicks() == 100) { RegionManager.getRegionChunk(item.getLocation()).flag(new ItemUpdateFlag(item, ItemUpdateFlag.CONSTRUCT_TYPE)); } } diff --git a/Server/src/main/java/core/game/node/scenery/SceneryBuilder.java b/Server/src/main/java/core/game/node/scenery/SceneryBuilder.java index 60c93f644..eb97c1ab6 100644 --- a/Server/src/main/java/core/game/node/scenery/SceneryBuilder.java +++ b/Server/src/main/java/core/game/node/scenery/SceneryBuilder.java @@ -4,7 +4,7 @@ import core.game.node.item.GroundItem; import core.game.node.item.GroundItemManager; import rs09.game.system.SystemLogger; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.map.build.LandscapeParser; @@ -43,7 +43,7 @@ public final class SceneryBuilder { remove = remove.getWrapper(); Scenery current = LandscapeParser.removeScenery(remove); if (current == null) { - if (World.getSettings().isDevMode()) { + if (GameWorld.getSettings().isDevMode()) { SystemLogger.logErr("Object could not be replaced - object to remove is invalid."); } return false; @@ -81,7 +81,7 @@ public final class SceneryBuilder { RegionManager.getRegionChunk(remove.getLocation()).flag(new ObjectUpdateFlag(remove, true)); RegionManager.getRegionChunk(construct.getLocation()).flag(new ObjectUpdateFlag(construct, false)); if (restoreTicks > 0) { - World.getPulser().submit(new Pulse(restoreTicks) { + GameWorld.getPulser().submit(new Pulse(restoreTicks) { @Override public boolean pulse() { return replaceClientSide(construct, remove, -1); @@ -118,7 +118,7 @@ public final class SceneryBuilder { remove = remove.getWrapper(); Scenery current = LandscapeParser.removeScenery(remove); if (current == null) { - if (World.getSettings().isDevMode()) { + if (GameWorld.getSettings().isDevMode()) { SystemLogger.logErr("Object could not be replaced - object to remove is invalid."); } return false; @@ -148,7 +148,7 @@ public final class SceneryBuilder { return true; } }); - World.getPulser().submit(constructed.getRestorePulse()); + GameWorld.getPulser().submit(constructed.getRestorePulse()); return true; } @@ -176,7 +176,7 @@ public final class SceneryBuilder { LandscapeParser.addScenery(constructed); update(constructed); if (ticks > -1) { - World.getPulser().submit(new Pulse(ticks, object) { + GameWorld.getPulser().submit(new Pulse(ticks, object) { @Override public boolean pulse() { remove(constructed); @@ -243,7 +243,7 @@ public final class SceneryBuilder { */ public static boolean remove(final Scenery object, int respawnTicks) { if (remove(object)) { - World.getPulser().submit(new Pulse(respawnTicks) { + GameWorld.getPulser().submit(new Pulse(respawnTicks) { @Override public boolean pulse() { diff --git a/Server/src/main/java/core/game/system/SystemManager.java b/Server/src/main/java/core/game/system/SystemManager.java index 74c4523a2..67c942e5d 100644 --- a/Server/src/main/java/core/game/system/SystemManager.java +++ b/Server/src/main/java/core/game/system/SystemManager.java @@ -1,7 +1,8 @@ package core.game.system; import core.game.system.security.EncryptionManager; -import rs09.game.world.World; +import gui.ServerMonitor; +import rs09.game.world.GameWorld; /** * Manages the "game system" states, such as updating or terminating. @@ -55,8 +56,8 @@ public final class SystemManager { switch (state) { case ACTIVE: case PRIVATE: - World.getClock().setStarted(false); - World.getClock().start(); + GameWorld.getMajorUpdateWorker().setStarted(false); + GameWorld.getMajorUpdateWorker().start(); break; case UPDATING: UPDATER.schedule(); diff --git a/Server/src/main/java/core/game/system/SystemTermination.java b/Server/src/main/java/core/game/system/SystemTermination.java index 3a89f0ffe..1ce55219b 100644 --- a/Server/src/main/java/core/game/system/SystemTermination.java +++ b/Server/src/main/java/core/game/system/SystemTermination.java @@ -6,7 +6,6 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.info.login.PlayerParser; import rs09.Server; import rs09.ServerConstants; -import rs09.ServerState; import rs09.ServerStore; import rs09.game.content.global.GlobalKillCounter; import rs09.game.ge.OfferManager; @@ -38,13 +37,15 @@ public final class SystemTermination { public void terminate() { SystemLogger.logInfo("[SystemTerminator] Initializing termination sequence - do not shutdown!"); try { + Server.setRunning(false); for(Player player : Repository.getPlayers()){ DMCHandler dmc = player.getAttribute("dmc",null); if(dmc != null){ dmc.clear(false); } } - Server.setState(ServerState.SHUTDOWN); + if(ServerConstants.DATA_PATH != null) + save(ServerConstants.DATA_PATH); } catch (Throwable e) { e.printStackTrace(); } @@ -61,6 +62,7 @@ public final class SystemTermination { if (!file.isDirectory()) { file.mkdirs(); } + Server.getReactor().terminate(); for (Iterator it = Repository.getPlayers().iterator(); it.hasNext();) { try { Player p = it.next(); diff --git a/Server/src/main/java/core/game/system/SystemUpdate.java b/Server/src/main/java/core/game/system/SystemUpdate.java index 1ad2275f4..9df42b872 100644 --- a/Server/src/main/java/core/game/system/SystemUpdate.java +++ b/Server/src/main/java/core/game/system/SystemUpdate.java @@ -3,7 +3,7 @@ package core.game.system; import rs09.ServerConstants; import core.game.node.entity.player.Player; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import java.util.Iterator; @@ -76,9 +76,9 @@ public final class SystemUpdate extends Pulse { public void schedule() { super.setTicksPassed(0); super.start(); - if (World.getClock().getStarted()) { + if (GameWorld.getMajorUpdateWorker().getStarted()) { notifyPlayers(); - World.getPulser().submit(this); + GameWorld.getPulser().submit(this); return; } Executors.newSingleThreadExecutor().submit(new Runnable() { diff --git a/Server/src/main/java/core/game/system/command/CommandSet.java b/Server/src/main/java/core/game/system/command/CommandSet.java index 8d400f896..98cf63265 100644 --- a/Server/src/main/java/core/game/system/command/CommandSet.java +++ b/Server/src/main/java/core/game/system/command/CommandSet.java @@ -3,7 +3,7 @@ package core.game.system.command; import core.game.node.entity.player.Player; import core.game.node.entity.player.info.Rights; import rs09.game.system.command.CommandPlugin; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.ArrayList; import java.util.List; @@ -35,7 +35,7 @@ public enum CommandSet { BETA() { @Override public boolean validate(Player player) { - return World.getSettings().isBeta() || ADMINISTRATOR.validate(player) || World.getSettings().isDevMode(); + return GameWorld.getSettings().isBeta() || ADMINISTRATOR.validate(player) || GameWorld.getSettings().isDevMode(); } }; diff --git a/Server/src/main/java/core/game/system/communication/ClanEntry.java b/Server/src/main/java/core/game/system/communication/ClanEntry.java index f23a4222e..55d2280cc 100644 --- a/Server/src/main/java/core/game/system/communication/ClanEntry.java +++ b/Server/src/main/java/core/game/system/communication/ClanEntry.java @@ -1,7 +1,7 @@ package core.game.system.communication; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents a player in a clan chat. @@ -31,7 +31,7 @@ public class ClanEntry { public ClanEntry(Player player) { this.player = player; this.name = player.getName(); - this.worldId = World.getSettings().getWorldId(); + this.worldId = GameWorld.getSettings().getWorldId(); } /** diff --git a/Server/src/main/java/core/game/system/communication/ClanRepository.java b/Server/src/main/java/core/game/system/communication/ClanRepository.java index 9fb1cd998..b26098a1a 100644 --- a/Server/src/main/java/core/game/system/communication/ClanRepository.java +++ b/Server/src/main/java/core/game/system/communication/ClanRepository.java @@ -6,8 +6,9 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.info.PlayerDetails; import core.game.node.entity.player.info.Rights; import core.game.system.monitor.PlayerMonitor; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; +import core.net.amsc.WorldCommunicator; import core.net.packet.PacketRepository; import core.net.packet.context.ClanContext; import core.net.packet.context.MessageContext; @@ -132,6 +133,26 @@ public final class ClanRepository { * Cleans the chat from all players that shouldn't be in it. */ public void clean(boolean disable) { + if (WorldCommunicator.isEnabled()) { + return; + } + for (Iterator it = players.iterator(); it.hasNext();) { + ClanEntry entry = it.next(); + Player player = entry.getPlayer(); + boolean remove = disable; + if (!remove) { + remove = getRank(player).ordinal() < joinRequirement.ordinal(); + } + if (remove) { + leave(player, false); + player.getCommunication().setClan(null); + it.remove(); + } + } + if (players.isEmpty()) { + banned.clear(); + } + update(); } /** @@ -262,7 +283,7 @@ public final class ClanRepository { public void update() { for (Iterator it = players.iterator(); it.hasNext();) { ClanEntry e = it.next(); - if (e.getWorldId() == World.getSettings().getWorldId() && e.getPlayer() != null) { + if (e.getWorldId() == GameWorld.getSettings().getWorldId() && e.getPlayer() != null) { PacketRepository.send(UpdateClanChat.class, new ClanContext(e.getPlayer(), this, false)); } } @@ -381,7 +402,7 @@ public final class ClanRepository { * @return {@code True} if so. */ public boolean isDefault() { - return owner.equals(World.getSettings().getName().toLowerCase()); + return owner.equals(GameWorld.getSettings().getName().toLowerCase()); } /** @@ -389,7 +410,7 @@ public final class ClanRepository { * @return The default clan chat. */ public static ClanRepository getDefault() { - return get(World.getSettings().getName().toLowerCase()); + return get(GameWorld.getSettings().getName().toLowerCase()); } /** diff --git a/Server/src/main/java/core/game/system/communication/CommunicationInfo.java b/Server/src/main/java/core/game/system/communication/CommunicationInfo.java index ba336914d..2dee6f8ae 100644 --- a/Server/src/main/java/core/game/system/communication/CommunicationInfo.java +++ b/Server/src/main/java/core/game/system/communication/CommunicationInfo.java @@ -6,12 +6,16 @@ import rs09.game.system.SystemLogger; import core.game.system.monitor.PlayerMonitor; import core.game.system.mysql.SQLTable; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.net.packet.PacketRepository; import core.net.packet.context.ContactContext; +import core.net.packet.context.MessageContext; +import core.net.packet.out.CommunicationMessage; import core.net.packet.out.ContactPackets; +import core.tools.StringUtils; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -196,7 +200,7 @@ public final class CommunicationInfo { player.getConfigManager().set(1083, 0); } else if (!lootShare) { player.getConfigManager().set(1083, 2); - lootSharePulse = new Pulse(World.getSettings().isDevMode() ? 5 : 200, player) { + lootSharePulse = new Pulse(GameWorld.getSettings().isDevMode() ? 5 : 200, player) { @Override public boolean pulse() { lootShare = true; @@ -205,7 +209,7 @@ public final class CommunicationInfo { return true; } }; - World.getPulser().submit(lootSharePulse); + GameWorld.getPulser().submit(lootSharePulse); } } @@ -234,8 +238,27 @@ public final class CommunicationInfo { * Synchronizes the contact lists. */ public void sync(Player player) { - if (!player.isArtificial()) { - MSPacketRepository.requestCommunicationInfo(player.getName()); + if (WorldCommunicator.isEnabled()) { + if (!player.isArtificial()) { + MSPacketRepository.requestCommunicationInfo(player.getName()); + } + return; + } + if (player.getSettings().getPrivateChatSetting() != 2) { + notifyPlayers(player, true, false); + } + PacketRepository.send(ContactPackets.class, new ContactContext(player, ContactContext.UPDATE_STATE_TYPE)); + PacketRepository.send(ContactPackets.class, new ContactContext(player, ContactContext.IGNORE_LIST_TYPE)); + for (String name : contacts.keySet()) { + Player p = Repository.getPlayerByName(name); + int worldId = 0; + if (p != null && showActive(player, p)) { + worldId = GameWorld.getSettings().getWorldId(); + } + PacketRepository.send(ContactPackets.class, new ContactContext(player, name, worldId)); + } + if (currentClan != null && !player.isArtificial() && (clan = ClanRepository.get(currentClan)) != null) { + clan.enter(player); } } @@ -245,8 +268,27 @@ public final class CommunicationInfo { * @param chatSetting If it was a chat setting change. */ public static void notifyPlayers(Player player, boolean online, boolean chatSetting) { - if (!online && !chatSetting) { - MSPacketRepository.sendPlayerRemoval(player.getName()); + if (WorldCommunicator.isEnabled()) { + if (!online && !chatSetting) { + MSPacketRepository.sendPlayerRemoval(player.getName()); + } + return; + } + for (Player p : Repository.getPlayers()) { + if (p == player || !p.isActive()) { + continue; + } + if (hasContact(p, player.getName())) { + int worldId = 0; + if (online && showActive(p, player)) { + worldId = GameWorld.getSettings().getWorldId(); + } + p.getCommunication().getContacts().get(player.getName()).setWorldId(worldId); + PacketRepository.send(ContactPackets.class, new ContactContext(p, player.getName(), worldId)); + } + } + if (!online && !chatSetting && player.getCommunication().getClan() != null) { + player.getCommunication().getClan().leave(player, true); } } @@ -257,8 +299,28 @@ public final class CommunicationInfo { * @param message The message to send. */ public static void sendMessage(Player player, String target, String message) { - player.getMonitor().log(message + " => " + target, PlayerMonitor.PRIVATE_CHAT_LOG); - MSPacketRepository.sendPrivateMessage(player, target, message); + if (WorldCommunicator.isEnabled()) { + StringBuilder sb = new StringBuilder(message); + sb.append(" => ").append(target); + player.getMonitor().log(sb.toString(), PlayerMonitor.PRIVATE_CHAT_LOG); + MSPacketRepository.sendPrivateMessage(player, target, message); + return; + } + if (!player.getDetails().getCommunication().contacts.containsKey(target)) { + return; + } + Player p = Repository.getPlayerByName(target); + if (p == null || !p.isActive() || !showActive(p, player)) { + player.getPacketDispatch().sendMessage("That player is currently offline."); + return; + } + if (!GameWorld.getSettings().isDevMode()) { + StringBuilder sb = new StringBuilder(message); + sb.append(" => ").append(target); + player.getMonitor().log(sb.toString(), PlayerMonitor.PRIVATE_CHAT_LOG); + } + PacketRepository.send(CommunicationMessage.class, new MessageContext(player, p, MessageContext.SEND_MESSAGE, message)); + PacketRepository.send(CommunicationMessage.class, new MessageContext(p, player, MessageContext.RECIEVE_MESSAGE, message)); } /** @@ -267,7 +329,32 @@ public final class CommunicationInfo { */ public static void add(Player player, String contact) { CommunicationInfo info = player.getDetails().getCommunication(); - MSPacketRepository.sendContactUpdate(player.getName(), contact, false, false, null); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendContactUpdate(player.getName(), contact, false, false, null); + return; + } + if (info.contacts.size() >= MAX_LIST_SIZE) { + player.getPacketDispatch().sendMessage("Your friend list is full."); + return; + } + if (info.contacts.containsKey(contact)) { + player.getPacketDispatch().sendMessage(StringUtils.formatDisplayName(contact) + " is already on your friend list."); + return; + } + ClanRepository clan = ClanRepository.get(player.getName(), false); + if (clan != null) { + clan.rank(contact, ClanRank.FRIEND); + } + info.contacts.put(contact, new Contact(contact)); + Player target = Repository.getPlayerByName(contact); + if (target != null) { + if (showActive(player, target)) { + PacketRepository.send(ContactPackets.class, new ContactContext(player, contact, GameWorld.getSettings().getWorldId())); + } + if (player.getSettings().getPrivateChatSetting() == 1 && showActive(target, player)) { + PacketRepository.send(ContactPackets.class, new ContactContext(target, player.getName(), GameWorld.getSettings().getWorldId())); + } + } } /** @@ -276,7 +363,34 @@ public final class CommunicationInfo { * @param block If the contact should be removed from the block list. */ public static void remove(Player player, String contact, boolean block) { - MSPacketRepository.sendContactUpdate(player.getName(), contact, true, block, null); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendContactUpdate(player.getName(), contact, true, block, null); + return; + } + CommunicationInfo info = player.getDetails().getCommunication(); + if (block) { + info.blocked.remove(contact); + Player target = Repository.getPlayerByName(contact); + if (target != null && hasContact(target, player.getName())) { + int worldId = 0; + if (showActive(target, player)) { + worldId = GameWorld.getSettings().getWorldId(); + } + PacketRepository.send(ContactPackets.class, new ContactContext(target, player.getName(), worldId)); + } + } else { + info.contacts.remove(contact); + ClanRepository clan = ClanRepository.get(player.getName(), false); + if (clan != null) { + clan.rank(contact, ClanRank.NONE); + } + if (player.getSettings().getPrivateChatSetting() == 1) { + Player target = Repository.getPlayerByName(contact); + if (target != null) { + PacketRepository.send(ContactPackets.class, new ContactContext(target, player.getName(), 0)); + } + } + } } /** @@ -284,7 +398,24 @@ public final class CommunicationInfo { * @param contact The contact to block. */ public static void block(Player player, String contact) { - MSPacketRepository.sendContactUpdate(player.getName(), contact, false, true, null); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendContactUpdate(player.getName(), contact, false, true, null); + return; + } + CommunicationInfo info = player.getDetails().getCommunication(); + if (info.blocked.size() >= MAX_LIST_SIZE) { + player.getPacketDispatch().sendMessage("Your ignore list is full."); + return; + } + if (info.blocked.contains(contact)) { + player.getPacketDispatch().sendMessage(StringUtils.formatDisplayName(contact) + " is already on your ignore list."); + return; + } + info.blocked.add(contact); + Player target = Repository.getPlayerByName(contact); + if (target != null && hasContact(target, player.getName())) { + PacketRepository.send(ContactPackets.class, new ContactContext(target, player.getName(), 0)); + } } /** diff --git a/Server/src/main/java/core/game/system/mysql/impl/HighscoreSQLHandler.java b/Server/src/main/java/core/game/system/mysql/impl/HighscoreSQLHandler.java index 08796c31f..e2d48807a 100644 --- a/Server/src/main/java/core/game/system/mysql/impl/HighscoreSQLHandler.java +++ b/Server/src/main/java/core/game/system/mysql/impl/HighscoreSQLHandler.java @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.info.Rights; import core.game.system.mysql.SQLEntryHandler; import core.game.system.mysql.SQLManager; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.sql.Connection; import java.sql.PreparedStatement; @@ -32,7 +32,7 @@ public final class HighscoreSQLHandler extends SQLEntryHandler { @Override public void create() throws SQLException { - if (entry.getDetails().getRights() == Rights.ADMINISTRATOR || World.getSettings().isDevMode()) { + if (entry.getDetails().getRights() == Rights.ADMINISTRATOR || GameWorld.getSettings().isDevMode()) { return; } StringBuilder b = new StringBuilder("INSERT highscores(username,overall_xp,total_level,ironManMode,xp_0,xp_1,xp_2,xp_3,xp_4,xp_5,xp_6,xp_7,xp_8,xp_9,xp_10,xp_11,xp_12,xp_13,xp_14,xp_15,xp_16,xp_17,xp_18,xp_19,xp_20,xp_21,xp_22,xp_23) "); @@ -50,7 +50,7 @@ public final class HighscoreSQLHandler extends SQLEntryHandler { @Override public void save() throws SQLException { - if (entry.getDetails().getRights() == Rights.ADMINISTRATOR || World.getSettings().isDevMode()) { + if (entry.getDetails().getRights() == Rights.ADMINISTRATOR || GameWorld.getSettings().isDevMode()) { return; } super.read(); diff --git a/Server/src/main/java/core/game/system/task/LogoutTask.java b/Server/src/main/java/core/game/system/task/LogoutTask.java index 2229739a4..241724641 100644 --- a/Server/src/main/java/core/game/system/task/LogoutTask.java +++ b/Server/src/main/java/core/game/system/task/LogoutTask.java @@ -1,7 +1,7 @@ package core.game.system.task; import core.game.node.entity.player.Player; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * A task called upon when a player disconnects from the game. @@ -18,7 +18,7 @@ public abstract class LogoutTask { * Constructs a new {@code LogoutTask} {@code Object}. */ public LogoutTask() { - this(Integer.MAX_VALUE - World.getTicks()); + this(Integer.MAX_VALUE - GameWorld.getTicks()); } /** @@ -26,7 +26,7 @@ public abstract class LogoutTask { * @param ticks The amount of ticks this logout task is valid. */ public LogoutTask(int ticks) { - this.validity = World.getTicks() + ticks; + this.validity = GameWorld.getTicks() + ticks; } /** @@ -50,7 +50,7 @@ public abstract class LogoutTask { * @return {@code True} if so. */ public boolean isValid() { - return validity > World.getTicks(); + return validity > GameWorld.getTicks(); } /** @@ -58,6 +58,6 @@ public abstract class LogoutTask { * @param ticks The amount of ticks this task should remain valid for. */ public void setDelay(int ticks) { - this.validity = World.getTicks() + ticks; + this.validity = GameWorld.getTicks() + ticks; } } \ No newline at end of file diff --git a/Server/src/main/java/core/game/system/task/NodeTask.java b/Server/src/main/java/core/game/system/task/NodeTask.java index d9e212620..e827aa696 100644 --- a/Server/src/main/java/core/game/system/task/NodeTask.java +++ b/Server/src/main/java/core/game/system/task/NodeTask.java @@ -1,7 +1,7 @@ package core.game.system.task; import core.game.node.Node; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Represents "Node pulse", which is used to execute methods with node @@ -79,7 +79,7 @@ public abstract class NodeTask { * @return The pulse used for this task. */ public Pulse schedule(final Node node, final Node... n) { - World.getPulser().submit(pulse = new Pulse(ticks, node) { + GameWorld.getPulser().submit(pulse = new Pulse(ticks, node) { @Override public void start() { diff --git a/Server/src/main/java/core/game/world/map/Region.java b/Server/src/main/java/core/game/world/map/Region.java index 13e16e7c6..03a67a65e 100644 --- a/Server/src/main/java/core/game/world/map/Region.java +++ b/Server/src/main/java/core/game/world/map/Region.java @@ -4,6 +4,8 @@ import core.cache.Cache; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.music.MusicZone; +import core.game.node.scenery.Scenery; +import core.game.node.scenery.SceneryBuilder; import core.game.system.task.Pulse; import core.game.world.map.build.DynamicRegion; import core.game.world.map.build.LandscapeParser; @@ -11,7 +13,7 @@ import core.game.world.map.build.MapscapeParser; import core.game.world.map.zone.RegionZone; import rs09.game.system.SystemLogger; import rs09.game.system.config.XteaParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import java.nio.ByteBuffer; @@ -220,7 +222,7 @@ public class Region { if (!activityPulse.isRunning()) { activityPulse.restart(); activityPulse.start(); - World.getPulser().submit(activityPulse); + GameWorld.getPulser().submit(activityPulse); } } return true; diff --git a/Server/src/main/java/core/game/world/map/zone/ZoneBuilder.java b/Server/src/main/java/core/game/world/map/zone/ZoneBuilder.java index 92c8fb79f..b5e69f641 100644 --- a/Server/src/main/java/core/game/world/map/zone/ZoneBuilder.java +++ b/Server/src/main/java/core/game/world/map/zone/ZoneBuilder.java @@ -8,14 +8,17 @@ import core.game.world.map.zone.impl.*; * Loads all the default zones. * @author Emperor */ -public class ZoneBuilder { - public static void init() { +public class ZoneBuilder implements CallBack { + + @Override + public boolean call() { configure(WildernessZone.getInstance()); configure(MultiwayCombatZone.getInstance()); configure(new ModeratorZone()); - //configure(new DarkZone()); + configure(new DarkZone()); configure(new KaramjaZone()); configure(new BankZone()); + return true; } /** diff --git a/Server/src/main/java/core/game/world/map/zone/ZoneMonitor.java b/Server/src/main/java/core/game/world/map/zone/ZoneMonitor.java index 55bd4218d..e9fdd394e 100644 --- a/Server/src/main/java/core/game/world/map/zone/ZoneMonitor.java +++ b/Server/src/main/java/core/game/world/map/zone/ZoneMonitor.java @@ -248,7 +248,7 @@ public final class ZoneMonitor { * @return {@code True} if the entity successfully left all regions. */ public boolean clear() { - for (RegionZone z : zones.toArray(new RegionZone[]{})) { + for (RegionZone z : zones) { if (!z.getZone().leave(entity, true)) { return false; } diff --git a/Server/src/main/java/core/game/world/map/zone/impl/DarkZone.java b/Server/src/main/java/core/game/world/map/zone/impl/DarkZone.java index c3a54c1cb..8b525d2e6 100644 --- a/Server/src/main/java/core/game/world/map/zone/impl/DarkZone.java +++ b/Server/src/main/java/core/game/world/map/zone/impl/DarkZone.java @@ -14,7 +14,7 @@ import core.game.world.map.zone.MapZone; import core.game.world.map.zone.RegionZone; import core.game.world.map.zone.ZoneBorders; import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks; -import rs09.game.world.World; +import rs09.game.world.GameWorld; /** * Handles a dark area. @@ -48,7 +48,7 @@ public final class DarkZone extends MapZone { return false; } }; - World.getPulser().submit(pulse); + GameWorld.getPulser().submit(pulse); player.addExtension(DarkZone.class, pulse); super.open(player); } diff --git a/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java b/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java index 5be73db7d..7ea125afb 100644 --- a/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java +++ b/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java @@ -27,7 +27,7 @@ import core.game.world.map.zone.ZoneRestriction; import core.tools.RandomFunction; import org.rs09.consts.NPCs; import rs09.game.system.config.NPCConfigParser; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import java.util.ArrayList; @@ -155,7 +155,7 @@ public final class WildernessZone extends MapZone { player.removeAttribute("combat-time"); player.getPrayer().reset(); player.getAppearance().sync(); - if (World.isEconomyWorld() && !player.getSavedData().getGlobalData().isDeathScreenDisabled()) { + if (GameWorld.isEconomyWorld() && !player.getSavedData().getGlobalData().isDeathScreenDisabled()) { player.getInterfaceManager().open(new Component(153)); } if (!player.getSavedData().getGlobalData().isDeathScreenDisabled()) { @@ -197,7 +197,7 @@ public final class WildernessZone extends MapZone { if (((NPC) e).getTask() != null && ((Player) killer).getSlayer().getTask() == e.asNpc().getTask()) { ((Player) killer).getSlayer().finalizeDeath(killer.asPlayer(), e.asNpc()); } - e.asNpc().setRespawnTick(World.getTicks() + e.asNpc().getDefinition().getConfiguration(NPCConfigParser.RESPAWN_DELAY, 17)); + e.asNpc().setRespawnTick(GameWorld.getTicks() + e.asNpc().getDefinition().getConfiguration(NPCConfigParser.RESPAWN_DELAY, 17)); if (!e.asNpc().isRespawn()) { e.asNpc().clear(); } @@ -305,7 +305,7 @@ public final class WildernessZone extends MapZone { p.getInterfaceManager().openWildernessOverlay(new Component(381)); p.getSkullManager().setLevel(getWilderness(p)); p.getPacketDispatch().sendString("Level: " + p.getSkullManager().getLevel(), 381, 1); - if(World.getSettings().getWild_pvp_enabled()) { + if(GameWorld.getSettings().getWild_pvp_enabled()) { p.getInteraction().set(Option._P_ATTACK); } p.getSkullManager().setWilderness(true); diff --git a/Server/src/main/java/core/game/world/objectparser/ObjectParser.java b/Server/src/main/java/core/game/world/objectparser/ObjectParser.java index 6c717bc40..bc143b336 100644 --- a/Server/src/main/java/core/game/world/objectparser/ObjectParser.java +++ b/Server/src/main/java/core/game/world/objectparser/ObjectParser.java @@ -2,7 +2,7 @@ package core.game.world.objectparser; import rs09.ServerConstants; import core.game.node.scenery.Scenery; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.build.LandscapeParser; import core.plugin.Initializable; import core.plugin.Plugin; @@ -107,7 +107,7 @@ public class ObjectParser extends StartupPlugin { @Override public Plugin newInstance(Object arg) throws Throwable { - World.getSTARTUP_PLUGINS().add(this); + GameWorld.getSTARTUP_PLUGINS().add(this); return this; } diff --git a/Server/src/main/java/core/gui/ConsoleFrame.java b/Server/src/main/java/core/gui/ConsoleFrame.java new file mode 100644 index 000000000..e4d1210de --- /dev/null +++ b/Server/src/main/java/core/gui/ConsoleFrame.java @@ -0,0 +1,168 @@ +package core.gui; + + +import core.gui.tab.GrandExchangeTab; +import core.gui.tab.PlayerTab; +import core.gui.tab.StatisticsTab; +import core.gui.tab.UtilityTab; + +import javax.swing.*; +import java.awt.*; + +/** + * The console frame tool. + * + * @author Vexia + */ +public class ConsoleFrame extends JFrame { + + /** + * The console frame instance. + */ + public static final ConsoleFrame INSTANCE = new ConsoleFrame(); + + /** + * The serail UID. + */ + private static final long serialVersionUID = 6368064564449356833L; + + /** + * The size of the frame. + */ + private static final Dimension SIZE = new Dimension(1074, 664); + + /** + * The tabbed pane. + */ + private final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); + + /** + * The statistics tab. + */ + private final StatisticsTab statisticsTab = StatisticsTab.INSTANCE.init(); + + /** + * The player tab. + */ + private final PlayerTab playerTab = new PlayerTab(); + + /** + * The grand exchange tab. + */ + private final GrandExchangeTab grandExchangeTab = new GrandExchangeTab(); + + /** + * The utility tab. + */ + private final UtilityTab utilityTab = UtilityTab.getInstance(); + + /** + * Constructs a new {@Code consoleFrame} {@Code Object} + */ + private ConsoleFrame() { + super("Console"); + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { + e.printStackTrace(); + } + } + + /** + * Initializes the console frame. + * + * @return the frame. + */ + public ConsoleFrame init() { + setLocationRelativeTo(null); + setSize(SIZE); + getContentPane().setLayout(null); + tabbedPane.setBounds(0, 0, 1068, 636); + Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2); + getContentPane().add(tabbedPane); + addTabs(statisticsTab, utilityTab, playerTab, grandExchangeTab); + setResizable(false); + setVisible(true); + return this; + } + + public static void main(String... args) { + INSTANCE.init(); + } + + /** + * Adds tabs. + * + * @param tabs the tabs. + */ + public void addTabs(ConsoleTab... tabs) { + for (ConsoleTab tab : tabs) { + addTab(tab); + } + } + + /** + * Adds a tab to the tabbed pane. + * + * @param tab the tab. + */ + public void addTab(ConsoleTab tab) { + tabbedPane.add(tab.getName(), tab); + } + + /** + * Gets the statisticsTab. + * + * @return the statisticsTab + */ + public StatisticsTab getStatisticsTab() { + return statisticsTab; + } + + /** + * Gets the tabbedPane. + * + * @return the tabbedPane + */ + public JTabbedPane getTabbedPane() { + return tabbedPane; + } + + /** + * Gets the playerTab. + * + * @return the playerTab + */ + public PlayerTab getPlayerTab() { + return playerTab; + } + + /** + * Gets the utilityTab. + * + * @return the utilityTab + */ + public UtilityTab getUtilityTab() { + return utilityTab; + } + + /** + * Gets the instance. + * + * @return the instance. + */ + public static ConsoleFrame getInstance() { + return INSTANCE; + } + + /** + * Gets the grandExchangeTab. + * + * @return the grandExchangeTab + */ + public GrandExchangeTab getGrandExchangeTab() { + return grandExchangeTab; + } + +} diff --git a/Server/src/main/java/core/gui/ConsoleTab.java b/Server/src/main/java/core/gui/ConsoleTab.java new file mode 100644 index 000000000..daf37deb4 --- /dev/null +++ b/Server/src/main/java/core/gui/ConsoleTab.java @@ -0,0 +1,44 @@ +package core.gui; + +import javax.swing.*; +import java.awt.*; + +/** + * The console tab. + * + * @author Vexia + */ +public class ConsoleTab extends JPanel { + + /** + * The serial UID. + */ + private static final long serialVersionUID = 2899642836866716523L; + + /** + * The name of the console tab. + */ + private final String name; + + /** + * Constructs a new {@Code consoleTab} {@Code Object} + * + * @param name the name. + */ + public ConsoleTab(String name) { + super(); + this.name = name; + setLayout(null); + setBounds(new Rectangle(0, 0, 1068, 663)); + } + + /** + * Gets the name. + * + * @return the name + */ + public String getName() { + return name; + } + +} diff --git a/Server/src/main/java/core/gui/component/ConsoleLogger.java b/Server/src/main/java/core/gui/component/ConsoleLogger.java new file mode 100644 index 000000000..48f98e1a4 --- /dev/null +++ b/Server/src/main/java/core/gui/component/ConsoleLogger.java @@ -0,0 +1,68 @@ +package core.gui.component; + + +import core.gui.ConsoleFrame; + +import java.io.PrintStream; + +/** + * Loggs output to the gui console. + * + * @author Vexia + */ +public class ConsoleLogger extends PrintStream { + + /** + * Constructs a new {@code WorkLogger} {@code Object} + * + * @param stream the stream. + */ + public ConsoleLogger(PrintStream stream) { + super(stream); + } + + @Override + public void println(String message) { + log(message); + } + + @Override + public PrintStream printf(String message, Object... objects) { + return null; + } + + @Override + public void println(boolean message) { + log(String.valueOf(message)); + } + + @Override + public void println(int message) { + log(String.valueOf(message)); + } + + @Override + public void println(double message) { + log(String.valueOf(message)); + } + + @Override + public void println(char message) { + log("" + message); + } + + @Override + public void println(long message) { + log("" + message); + } + + /** + * Method used to log the message. + * + * @param message the message. + */ + public void log(final String message) { + ConsoleFrame.getInstance().getStatisticsTab().log(message); + } + +} diff --git a/Server/src/main/java/core/gui/component/PlayerViewer.java b/Server/src/main/java/core/gui/component/PlayerViewer.java new file mode 100644 index 000000000..671e3efb6 --- /dev/null +++ b/Server/src/main/java/core/gui/component/PlayerViewer.java @@ -0,0 +1,270 @@ +package core.gui.component; + + +import core.game.container.Container; +import core.game.node.entity.player.Player; +import core.game.node.entity.player.info.PlayerDetails; +import core.game.node.item.Item; +import rs09.game.world.GameWorld; +import rs09.game.world.repository.Repository; +import core.gui.ConsoleFrame; +import core.tools.PlayerLoader; +import core.tools.StringUtils; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import java.awt.*; +import java.awt.event.ActionListener; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Views a players details. + * + * @author Vexia + */ +public class PlayerViewer extends JPanel { + + /** + * The serail UID. + */ + private static final long serialVersionUID = 1589056461884384398L; + + /** + * The name of the viewer. + */ + private final String name; + + /** + * The player details. + */ + private PlayerDetails details; + + /** + * The player file. + */ + private Player player; + + /** + * Constructs a new {@Code PlayerViewer} {@Code Object} + * + * @param name the name. + */ + public PlayerViewer(String name) { + super(); + this.name = name; + this.details = PlayerLoader.getPlayerDetailFile(name); + if (Repository.getPlayerByName(name) != null) { + setPlayer(Repository.getPlayerByName(name)); + } else { + if (GameWorld.getMajorUpdateWorker().getStarted()) { + setPlayer(PlayerLoader.getPlayerFile(name)); + } + } + setBounds(new Rectangle(0, 0, 755, 539)); + setLayout(null); + JButton btnClose = new JButton("Close"); + btnClose.addActionListener(e -> ConsoleFrame.getInstance().getPlayerTab().closeViewer(PlayerViewer.this)); + btnClose.setBounds(6, 6, 117, 29); + add(btnClose); + + JPanel panel = new JPanel(); + panel.setBorder(new TitledBorder(null, "Info", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panel.setBounds(6, 35, 286, 428); + add(panel); + panel.setLayout(null); + + JLabel lblName = new JLabel("Username: " + details.getUsername()); + lblName.setBounds(6, 16, 224, 16); + panel.add(lblName); + + JLabel lblIp = new JLabel("IP: " + details.getInfo().getIp()); + lblIp.setBounds(6, 96, 190, 16); + panel.add(lblIp); + + JLabel lblMac = new JLabel("Mac: " + details.getInfo().getMac()); + lblMac.setBounds(6, 124, 224, 16); + panel.add(lblMac); + + JLabel lblCompName = new JLabel("Comp name: " + details.getInfo().getCompName()); + lblCompName.setBounds(6, 208, 236, 16); + panel.add(lblCompName); + + JLabel lblLastLogin = new JLabel("Last login: " + new Date(details.getLastLogin())); + lblLastLogin.setBounds(6, 152, 274, 16); + panel.add(lblLastLogin); + + JLabel lblStatus = new JLabel("Status: " + getStatus()); + lblStatus.setBounds(6, 236, 149, 16); + panel.add(lblStatus); + +// JLabel lblCredits = new JLabel("Credits: " + details.getShop().getCredits()); +// lblCredits.setBounds(6, 180, 139, 16); +// panel.add(lblCredits); + + JLabel lblRights = new JLabel("Rights: " + StringUtils.formatDisplayName(details.getRights().toString())); + lblRights.setBounds(6, 68, 176, 16); + panel.add(lblRights); + +// JLabel lblDisplayName = new JLabel("Display name: " + details.getUsername()); +// lblDisplayName.setBounds(6, 40, 213, 16); +// panel.add(lblDisplayName); + + JLabel lblNetworth = new JLabel("Networth:"); + lblNetworth.setBounds(6, 264, 165, 16); + panel.add(lblNetworth); + + JLabel lblBanned = new JLabel("Banned: " + (details.getBanTime() > 0)); + lblBanned.setBounds(6, 292, 149, 16); + panel.add(lblBanned); + + JLabel lblMuted = new JLabel("Muted: " + (details.getMuteTime() > 0)); + lblMuted.setBounds(6, 317, 149, 16); + panel.add(lblMuted); + + JLabel lblActive = new JLabel("Active: " + checkActive()); + lblActive.setBounds(6, 342, 165, 16); + panel.add(lblActive); + if (player != null) { + lblNetworth.setText("Networth: " + player.getMonitor().getNetworth() + ""); + } + + JButton btnRefresh = new JButton("Refresh"); + btnRefresh.setBounds(124, 6, 117, 29); + add(btnRefresh); + + JButton btnViewContainer = new JButton("View Container"); + btnViewContainer.addActionListener(e -> { + if (player == null) { + return; + } + viewContainer(); + }); + btnViewContainer.setBounds(365, 6, 144, 29); + add(btnViewContainer); + + JButton btnDelete = new JButton("Delete"); + btnDelete.addActionListener(e -> { + int result = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete this account!?"); + if (result == 0) { + ConsoleFrame.getInstance().getUtilityTab().delete(details); + ConsoleFrame.getInstance().getPlayerTab().closeViewer(PlayerViewer.this); + } + }); + btnDelete.setBounds(244, 6, 117, 29); + add(btnDelete); + } + + /** + * Opens the view containermanager. + */ + public void viewContainer() { + JPanel panel = new JPanel(new GridLayout(0, 1)); + ActionListener listener = e -> { + String name1 = e.getActionCommand(); + Container container = null; + switch (name1) { + case "Inventory": + container = player.getInventory(); + break; + case "Equipment": + container = player.getEquipment(); + break; + case "Bank": + container = player.getBank(); + break; + } + if (container != null) { + showContainer(container, name1); + } + }; + JButton invy = new JButton("Inventory"); + panel.add(invy); + invy.addActionListener(listener); + JButton equip = new JButton("Equipment"); + panel.add(equip); + equip.addActionListener(listener); + JButton bank = new JButton("Bank"); + bank.addActionListener(listener); + panel.add(bank); + JOptionPane.showConfirmDialog(null, panel, "View Container", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + } + + /** + * Shows a container. + * + * @param container the container. + * @param name the name. + */ + public void showContainer(core.game.container.Container container, String name) { + JPanel panel = new JPanel(new GridLayout(0, 1)); + JScrollPane pane = new JScrollPane(); + DefaultListModel model = new DefaultListModel<>(); + JList list = new JList<>(); + for (Item i : container.toArray()) { + if (i == null) { + continue; + } + model.addElement(i.toString()); + } + list.setModel(model); + pane.setViewportView(list); + panel.add(pane); + JOptionPane.showConfirmDialog(null, panel, name, JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + } + + /** + * Checks if the player is active. + * + * @return {@code True} if so. + */ + public String checkActive() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date cutOff = null; + long mili = 0; + try { + cutOff = sdf.parse("2014-6-10"); + mili = cutOff.getTime(); + } catch (ParseException e) { + e.printStackTrace(); + } + return ((details.getLastLogin() < mili) ? "Not " : "") + "Active"; + } + + /** + * Checks active status. + * + * @return the status. + */ + public String getStatus() { + return Repository.getPlayerByName(name) != null ? "Online" : "Offline"; + } + + /** + * Gets the name. + * + * @return the name + */ + public String getName() { + return name; + } + + /** + * Gets the player. + * + * @return the player + */ + public Player getPlayer() { + return player; + } + + /** + * Sets the baplayer. + * + * @param player the player to set. + */ + public void setPlayer(Player player) { + this.player = player; + } +} diff --git a/Server/src/main/java/core/gui/tab/GrandExchangeTab.java b/Server/src/main/java/core/gui/tab/GrandExchangeTab.java new file mode 100644 index 000000000..c6fe68e39 --- /dev/null +++ b/Server/src/main/java/core/gui/tab/GrandExchangeTab.java @@ -0,0 +1,191 @@ +package core.gui.tab; + + +import core.game.node.entity.player.Player; +import core.gui.ConsoleFrame; +import core.gui.ConsoleTab; +import rs09.game.ge.GrandExchangeOffer; +import rs09.game.ge.OfferManager; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * A tab used to view the grand exchange. + * + * @author Vexia + */ +public class GrandExchangeTab extends ConsoleTab { + + /** + * The serial UID. + */ + private static final long serialVersionUID = -1619650762760289798L; + + /** + * The search field. + */ + private JTextField searchField; + + /** + * The jlist. + */ + private final JList list = new JList(); + + /** + * The model. + */ + private final DefaultListModel model = new DefaultListModel(); + + /** + * The id search field. + */ + private JTextField idSearchField; + + /** + * Constructs a new {@Code GrandExchangeTab} {@Code Object} + */ + @SuppressWarnings("serial") + public GrandExchangeTab() { + super("Grand Exchange"); + list.setCellRenderer(new DefaultListCellRenderer() { + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + GrandExchangeOffer offer = (GrandExchangeOffer) value; + if (offer == null) { + return label; + } + Player player = null; + for (Player p : ConsoleFrame.getInstance().getUtilityTab().getPlayers()) { + if (p == null) { + continue; + } + if (p.getDetails().getUid() == offer.getUid()) { + player = p; + break; + } + } + label.setText((player == null ? "" : player.getName() + " - ") + offer.toString()); + return label; + } + + }); + list.setModel(model); + JLabel lblSearch = new JLabel("Search player:"); + lblSearch.setBounds(24, 20, 95, 16); + add(lblSearch); + + searchField = new JTextField(); + searchField.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + searchPlayer(); + } + }); + searchField.setBounds(119, 14, 185, 28); + add(searchField); + searchField.setColumns(10); + + JPanel panel = new JPanel(); + panel.setBounds(24, 78, 1015, 518); + add(panel); + panel.setLayout(null); + + JScrollPane scrollPane = new JScrollPane(); + scrollPane.setBounds(6, 6, 375, 517); + panel.add(scrollPane); + scrollPane.setViewportView(list); + + JButton btnDisplayDatabase = new JButton("Display Database"); + btnDisplayDatabase.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + displayDatabase(); + } + }); + btnDisplayDatabase.setBounds(316, 15, 173, 29); + add(btnDisplayDatabase); + + JLabel lblNewLabel = new JLabel("Search id:"); + lblNewLabel.setBounds(24, 48, 61, 16); + add(lblNewLabel); + + idSearchField = new JTextField(); + idSearchField.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + searchId(); + } + }); + idSearchField.setColumns(10); + idSearchField.setBounds(119, 48, 185, 28); + add(idSearchField); + + JButton btnNewButton = new JButton("Load"); + btnNewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + ConsoleFrame.getInstance().getUtilityTab().populateList(); + } + }); + btnNewButton.setBounds(316, 43, 173, 29); + add(btnNewButton); + } + + /** + * Searches the player. + */ + private void searchPlayer() { + model.clear(); + Player player = ConsoleFrame.getInstance().getUtilityTab().getPlayer(searchField.getText()); + if (player == null) { + JOptionPane.showMessageDialog(null, "Error! No player found."); + return; + } + for (GrandExchangeOffer o : player.getPlayerGrandExchange().getOffers()) { + if (o == null) { + continue; + } + addOffer(o); + } + } + + /** + * Searches the id. + */ + private void searchId() { + model.clear(); + int itemId = 0; + try { + itemId = Integer.parseInt(idSearchField.getText()); + } catch (NumberFormatException e) { + + } + for (GrandExchangeOffer o : OfferManager.getOffersForItem(itemId)) { + if (o == null) { + continue; + } + addOffer(o); + } + } + + /** + * Adds a g.e offer. + */ + private void addOffer(GrandExchangeOffer offer) { + model.addElement(offer); + } + + /** + * Displays a database. + */ + private void displayDatabase() { + if (ConsoleFrame.getInstance().getUtilityTab().getPlayers().size() == 0) { + JOptionPane.showMessageDialog(null, "Error! No data in DB yet. Press load."); + return; + } + for (GrandExchangeOffer offer : OfferManager.getOFFER_MAPPING().values()) { + model.addElement(offer); + } + } +} diff --git a/Server/src/main/java/core/gui/tab/PlayerTab.java b/Server/src/main/java/core/gui/tab/PlayerTab.java new file mode 100644 index 000000000..165220f93 --- /dev/null +++ b/Server/src/main/java/core/gui/tab/PlayerTab.java @@ -0,0 +1,187 @@ +package core.gui.tab; + + +import rs09.ServerConstants; +import core.gui.ConsoleTab; +import core.gui.component.PlayerViewer; + +import javax.swing.*; +import javax.swing.border.BevelBorder; +import javax.swing.border.SoftBevelBorder; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.util.*; + +/** + * The player tab. + * + * @author Vexia + */ +public class PlayerTab extends ConsoleTab { + + /** + * The serial UID. + */ + private static final long serialVersionUID = 8865322670299347942L; + + /** + * The list of player names to search through. + */ + private final List playerNames = new ArrayList<>(20); + + /** + * The player name text field. + */ + private JTextField textField; + + /** + * The default model. + */ + private final DefaultListModel model = new DefaultListModel(); + + /** + * The tabbed panes. + */ + private final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); + + /** + * The mapping of open player viewers. + */ + private final Map viewers = new HashMap<>(); + + /** + * Constructs a new {@Code PlayerTab} {@Code Object} + */ + public PlayerTab() { + super("Players"); + + JScrollPane scrollPane = new JScrollPane(); + scrollPane.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); + scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); + scrollPane.setBounds(6, 43, 260, 539); + add(scrollPane); + + final JList list = new JList(); + list.addListSelectionListener(e -> { + if (list.getSelectedValue() != null) { + openViewer(list.getSelectedValue()); + } + }); + list.setModel(model); + scrollPane.setViewportView(list); + + JLabel lblSearchForPlayer = new JLabel("Search for player:"); + lblSearchForPlayer.setBounds(6, 15, 143, 16); + add(lblSearchForPlayer); + + textField = new JTextField(); + textField.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + model.clear(); + if (textField.getText() == null || textField.getText().length() < 1) { + populatePlayerSearch(); + return; + } + for (String name : playerNames) { + if (name.toLowerCase().contains(textField.getText())) { + model.addElement(name); + } + } + } + }); + textField.setBounds(117, 9, 149, 28); + add(textField); + textField.setColumns(10); + + tabbedPane.setBounds(278, 43, 755, 539); + add(tabbedPane); + + JButton btnRepopulate = new JButton("Repopulate"); + btnRepopulate.addActionListener(e -> populatePlayerSearch()); + btnRepopulate.setBounds(278, 10, 117, 29); + add(btnRepopulate); + populatePlayerSearch(); + } + + /** + * Opens a viewer for a player. + * + * @param name the name. + * @return {@code True} if opened. + */ + public boolean openViewer(String name) { + if (viewers.containsKey(name)) { + return false; + } + PlayerViewer viewer = new PlayerViewer(name); + viewers.put(name, viewer); + tabbedPane.add(viewer.getName(), viewer); + return true; + } + + /** + * Closes a viewer. + * + * @param viewer the viewer. + * @return {@code True} if closed. + */ + public boolean closeViewer(PlayerViewer viewer) { + if (!viewers.containsValue(viewer)) { + JOptionPane.showMessageDialog(null, "Error! Viewer wasn't open."); + return false; + } + viewers.remove(viewer.getName()); + tabbedPane.remove(viewer); + return true; + } + + /** + * Populates the searchable names. + */ + public void populatePlayerSearch() { + playerNames.clear(); + model.clear(); + if(ServerConstants.PLAYER_SAVE_PATH == null) return; + File f = new File(ServerConstants.PLAYER_SAVE_PATH); + if (f.listFiles() == null) { + System.out.println("Player directory was null!"); + return; + } + for (File file : Objects.requireNonNull(f.listFiles())) { + String fileName = file.getName(); + if (!fileName.contains(".save")) continue; + String playerName = fileName.replace(".save", "").trim(); + playerNames.add(playerName); + model.addElement(playerName); + } + } + + /** + * Adds a searchable name to the list. + * + * @param name the name. + */ + public void addSearchableName(String name) { + playerNames.add(name); + } + + /** + * Gets the playerNames. + * + * @return the playerNames + */ + public List getPlayerNames() { + return playerNames; + } + + /** + * Gets the viewers. + * + * @return the viewers + */ + public Map getViewers() { + return viewers; + } +} diff --git a/Server/src/main/java/core/gui/tab/StatisticsTab.java b/Server/src/main/java/core/gui/tab/StatisticsTab.java new file mode 100644 index 000000000..67a065b5f --- /dev/null +++ b/Server/src/main/java/core/gui/tab/StatisticsTab.java @@ -0,0 +1,669 @@ +package core.gui.tab; + + +import core.game.node.item.GroundItemManager; +import core.game.system.SystemManager; +import core.game.system.SystemState; +import core.game.world.map.RegionManager; +import core.gui.ConsoleTab; +import rs09.Server; +import rs09.ServerConstants; +import rs09.game.world.GameWorld; +import rs09.game.world.repository.Repository; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; + +/** + * Handles server info tab. + * + * @author Emperor + */ +public class StatisticsTab extends ConsoleTab { + + /** + * The serial UID. + */ + private static final long serialVersionUID = 6164020580271944550L; + + /** + * The queue size. + */ + public static final int QUEUE_SIZE = 1 << 16; + + /** + * The performance data queue. + */ + private static short[] performanceQueue = new short[QUEUE_SIZE]; + + /** + * The memory data queue. + */ + private static short[] memoryQueue = new short[QUEUE_SIZE]; + + /** + * The current index of the performance queue. + */ + private static int queueIndex = 0; + + /** + * The current statistics zoom. + */ + private static int statisticsZoom = 5; + + /** + * The singleton. + */ + public static final StatisticsTab INSTANCE = new StatisticsTab(); + + /** + * The statistics mouse coordinates. + */ + private Point statisticMousePoint = null; + + /** + * The zoom in button. + */ + private JButton zoomIn; + + /** + * The zoom out button. + */ + private JButton zoomOut; + + /** + * The reset button. + */ + private JButton resetButton; + + /** + * The save log button. + */ + private JButton saveLogButton; + + /** + * The shutdown button. + */ + private JButton shutdown; + + /** + * The file chooser instance. + */ + private JFileChooser fileChooser; + + /** + * If the tool tip is currently opened. + */ + private boolean toolTipOpened; + + /** + * The world statistics text pane. + */ + private StatsTextPane worldStatistics; + + /** + * The thread statistics text pane. + */ + private StatsTextPane threadStatistics; + + /** + * The working time of the main thread. + */ + private static long workingTime; + + /** + * The maximum amount of players being active at the same time. + */ + private static int maximumPlayers; + + /** + * The text area. + */ + private final JTextArea console = new JTextArea(); + + /** + * Constructs a new {@Code StatisticsTab} {@Code Object} + */ + public StatisticsTab() { + super("Statistics"); + setLayout(null); + + JScrollPane scrollPane = new JScrollPane(); + scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); + scrollPane.setBackground(UIManager.getColor("Button.background")); + scrollPane.setBounds(6, 403, 1042, 189); + scrollPane.setBorder(new TitledBorder(null, "Console", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + add(scrollPane); + + console.setLineWrap(true); + console.setBackground(UIManager.getColor("CheckBox.background")); + console.setEditable(false); + scrollPane.setViewportView(console); + + JLabel label = new JLabel(); + label.setBounds(450, 345, 163, 16); + add(label); + } + + @Override + public String getToolTipText(MouseEvent e) { + if (e.getX() > getWidth() / 2 && e.getX() < getWidth() + && e.getY() > 2 && e.getY() < getHeight() / 2) { + int max = (getWidth() / 2) / statisticsZoom; + int index = queueIndex - (max - (e.getX() - (getWidth() / 2)) / statisticsZoom); + toolTipOpened = true; + if (index < 0) { + return "Tick: null, time: null."; + } + return new StringBuilder("Tick: ").append(index).append(", time: ").append(performanceQueue[index] + 600).append(".").toString(); + } + toolTipOpened = false; + return null; + } + + @Override + public Point getToolTipLocation(MouseEvent e) { + if (e.getX() > getWidth() / 2 && e.getX() < getWidth() + && e.getY() > 2 && e.getY() < getHeight() / 2) { + return new Point(e.getX() + 15, e.getY() + 10); + } + return null; + } + + @Override + public void paint(Graphics g) { + super.paint(g); + drawPerformanceStatistics(this, g); + } + + /** + * Positions the components. + */ + public void positionComponents() { + int init = 90; + int diff = 5; + zoomIn.setLocation(getWidth() / 2 - (zoomIn.getWidth() / 2) - diff, 5 + init); + zoomOut.setLocation(getWidth() / 2 - (zoomOut.getWidth() / 2) - diff, 30 + init); + resetButton.setLocation(getWidth() / 2 - (resetButton.getWidth() / 2) - diff, 55 + init); + saveLogButton.setLocation(getWidth() / 2 - (saveLogButton.getWidth() / 2) - diff, 80 + init); + shutdown.setLocation(getWidth() / 2 - (shutdown.getWidth() / 2), 310); + worldStatistics.setLocation(55, 310); + threadStatistics.setLocation(shutdown.getX() + shutdown.getWidth() + 35, 310); + } + + /** + * Initializes the server info tab. + * + * @return This instance. + */ + public StatisticsTab init() { + initMaximumPlayers(); + fileChooser = new JFileChooser("./"); + zoomIn = new JButton("+"); + zoomIn.setLayout(null); + zoomIn.setVisible(true); + zoomIn.setSize(50, 20); + zoomIn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + zoomOut.setEnabled(true); + if (++statisticsZoom > 20) { + statisticsZoom = 20; + zoomIn.setEnabled(false); + return; + } + drawPerformanceStatistics(StatisticsTab.this, getGraphics()); + } + }); + zoomOut = new JButton("-"); + zoomOut.setLayout(null); + zoomOut.setVisible(true); + zoomOut.setSize(50, 20); + zoomOut.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + zoomIn.setEnabled(true); + if (--statisticsZoom < 2) { + statisticsZoom = 2; + zoomOut.setEnabled(false); + return; + } + drawPerformanceStatistics(StatisticsTab.this, getGraphics()); + } + }); + resetButton = new JButton("x"); + resetButton.setLayout(null); + resetButton.setVisible(true); + resetButton.setSize(50, 20); + resetButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + queueIndex = 0; + } + }); + saveLogButton = new JButton("", createImageIcon("Save16.gif")); + saveLogButton.setLayout(null); + saveLogButton.setVisible(true); + saveLogButton.setSize(50, 20); + saveLogButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int returnVal = fileChooser.showSaveDialog(StatisticsTab.this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fileChooser.getSelectedFile(); + if (!file.getName().contains(".")) { + file = new File(file.getPath() + ".txt"); + } + logQueues(file); + } + } + }); + add(resetButton); + add(zoomIn); + add(zoomOut); + add(saveLogButton); + shutdown = new JButton("Shutdown"); + shutdown.setLayout(null); + shutdown.setVisible(true); + shutdown.setSize(100, 20); + shutdown.addActionListener(e -> SystemManager.flag(SystemState.TERMINATED)); + add(shutdown); + worldStatistics = new StatsTextPane().init(); + worldStatistics.setSize(390, 90); + add(worldStatistics); + updateWorldText(); + threadStatistics = new StatsTextPane().init(); + threadStatistics.setSize(390, 90); + add(threadStatistics); + updateThreadText(); + setLayout(null); + setVisible(true); + ToolTipManager.sharedInstance().setInitialDelay(0); + positionComponents(); + return this; + } + + /** + * Initializes the maximum players count. + */ + private static void initMaximumPlayers() { + setMaximumPlayers(0); + } + + /** + * Sets the maximum amount of players. + * + * @param maximum The maximum. + */ + private static void setMaximumPlayers(int maximum) { + maximumPlayers = maximum; + } + + /** + * Logs the queues. + * + * @param file The file to log to. + */ + protected static void logQueues(File file) { + try (BufferedWriter bw = Files.newBufferedWriter(file.toPath(), StandardCharsets.UTF_8, StandardOpenOption.APPEND)) { + bw.append("/////////////////////////////////////////////////////////////////////////"); + bw.newLine(); + bw.append("/////////////////////////////////////////////////////////////////////////"); + bw.newLine(); + // bw.append("// " + CalenderDate.getFormattedDate() + " performance log results:"); + bw.newLine(); + bw.append("/////////////////////////////////////////////////////////////////////////"); + bw.newLine(); + for (int i = 0; i < queueIndex; i++) { + bw.append(new StringBuilder("performance_report:memory_usage-[tick=").append(i).append(", mem=").append(memoryQueue[i]).append("mb].")); + bw.newLine(); + } + for (int i = 0; i < queueIndex; i++) { + int value = 600 + performanceQueue[i]; + bw.append(new StringBuilder("performance_report:clock_speed-[tick=").append(i).append(", time=").append(value).append(", status=").append(value < 601 ? "NORMAL]." : "DELAYED].")); + bw.newLine(); + } + bw.append("/////////////////////////////////////////////////////////////////////////"); + bw.newLine(); + bw.flush(); + bw.close(); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + /** + * Creates an image icon. + * + * @param path The path of the image file. + * @return The image icon. + */ + private static ImageIcon createImageIcon(String path) { + URL imgURL = StatisticsTab.class.getResource(path); + if (imgURL != null) { + return new ImageIcon(imgURL); + } + return null; + } + + /** + * Reports the performance value. + * + * @param value The value. + */ + public static void reportPerformance(int value) { + if (value >= Short.MAX_VALUE) { + value = Short.MAX_VALUE - 1; + } + secureQueues(); + performanceQueue[queueIndex] = (short) value; + memoryQueue[queueIndex++] = (short) ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1_000_000); + INSTANCE.repaint(); + workingTime += (600 + value); + if (INSTANCE.threadStatistics != null) { + INSTANCE.updateThreadText(); + if ((GameWorld.getTicks() % 10) == 0) { + INSTANCE.updateWorldText(); + } + } + } + + /** + * Updates the thread statistics text. + */ + public void updateThreadText() { + StringBuilder sb = new StringBuilder(); + long runtime = System.currentTimeMillis() - Server.startTime; + double percentage = workingTime / (runtime * 0.01); + long hours = runtime / 3600000; + runtime -= hours * 3600000; + long minutes = runtime / 60000; + runtime -= minutes * 60000; + long seconds = runtime / 1000; + sb.append("Runtime: ").append(hours).append("h ").append(minutes).append("m ").append(seconds).append("s").append(" - ").append(GameWorld.getTicks()).append(" ticks").append("\n"); + sb.append("Working time: ").append(workingTime).append("ms").append(" - ").append(String.format("%.2f", percentage)).append("%").append("\n"); + sb.append("Average cycle: ").append(String.format("%.1f", (double) workingTime / GameWorld.getTicks())).append("ms").append("\n"); + threadStatistics.setText(sb.toString()); + } + + /** + * Updates the world statistics text. + */ + public void updateWorldText() { + int players = Repository.getPlayers().size(); + if (players > getMaximumPlayers()) { + setMaximumPlayers(players); + } + StringBuilder sb = new StringBuilder(); + sb.append("Players: ").append(players).append(", max: ").append(getMaximumPlayers()).append("\n"); + sb.append("NPCs: ").append(Repository.getNpcs().size()).append("\n"); + sb.append("Regions: ").append(RegionManager.getRegionCache().size()).append("\n"); + sb.append("Ground items: ").append(GroundItemManager.getItems().size()).append("\n"); + worldStatistics.setText(sb.toString()); + } + + /** + * Draws the performance statistics. + * + * @param c The component. + * @param g The graphics. + */ + private static void drawPerformanceStatistics(Component c, Graphics g) { + int x = c.getWidth() / 2 + 48; + int y = c.getHeight() / 2; + + Point zero = new Point(x, y / 2); + g.setColor(Color.LIGHT_GRAY); + + //Fill the background rectangle. + g.fillRect(x, 5, c.getWidth() - 4 - x, y - 5); + g.setColor(Color.GRAY); + + int count = 0; + for (int i = 0; i < c.getWidth() - 4 - x; i += statisticsZoom) { + g.drawLine((int) (zero.getX() + i), 5, + (int) (zero.getX() + i), y - 1); + count++; + } + + int space = (y / 2 - 10) / 4; + g.setFont(new Font(null, Font.PLAIN, 9)); + for (int i = 0; i < 5; i++) { + g.setColor(i == 0 ? Color.BLACK : Color.GRAY); + g.drawLine(x, (int) zero.getY() - (space * i), c.getWidth() - 5, (int) zero.getY() - (space * i)); + g.drawLine(x, (int) zero.getY() + (space * i), c.getWidth() - 5, (int) zero.getY() + (space * i)); + g.setColor(Color.BLACK); + g.drawString("" + (i * 150), x - 18, (int) zero.getY() - (space * i) + 2); + if (i != 0) { + g.drawString("-" + (i * 150), x - 20, (int) zero.getY() + (space * i) + 2); + } + } + g.setColor(Color.GREEN); + for (int i = 1; i < count; i++) { + int index = queueIndex - i; + if (index < 1) { + break; + } + int fromPoint = performanceQueue[index]; + int fromX = (count - i) * statisticsZoom; + int fromY = (int) (-fromPoint / (600D / (space * 4))); + int toPoint = index == 0 ? 0 : performanceQueue[index - 1]; + int toX = (count - i - 1) * statisticsZoom; + int toY = (int) (-toPoint / (600D / (space * 4))); + if (fromY < 0) { + g.setColor(Color.RED); + } + g.drawLine((int) (zero.getX() + fromX), (int) (zero.getY() + fromY), + (int) (zero.getX() + toX), (int) (zero.getY() + toY)); + if (fromY >= 0) { + g.setColor(Color.GREEN); + } + } + g.setColor(Color.BLACK); + //Draw vertical line. + g.drawLine(x, y + 4, x, 1); + Point p = ((StatisticsTab) c).statisticMousePoint; + if (p != null) { + g.setColor(new Color(251, 230, 130)); + g.fillRoundRect((int) (p.getX() + 10), (int) (p.getY() - 10), 100, 50, 10, 10); + } + if (((StatisticsTab) c).toolTipOpened) { + ((StatisticsTab) c).setToolTipText("test"); + } + drawMemoryStatistics(c, g); + } + + /** + * Draws the performance statistics. + * + * @param c The component. + * @param g The graphics. + */ + private static void drawMemoryStatistics(Component c, Graphics g) { + int x = 5; + int y = c.getHeight() / 2; + int endX = (c.getWidth() / 2) - 48; + + Point zero = new Point(x + 18, y); + g.setColor(Color.LIGHT_GRAY); + + //Fill the background rectangle. + g.fillRect((int) zero.getX(), 5, endX - x, y - 5); + g.setColor(Color.GRAY); + + int count = 0; + for (int i = 0; i < endX - x; i += statisticsZoom) { + g.drawLine((int) (zero.getX() + i), 5, + (int) (zero.getX() + i), y - 1); + count++; + } + + int space = (y) / 10; + g.setFont(new Font(null, Font.PLAIN, 9)); + for (int i = 0; i < 10; i++) { + g.setColor(Color.GRAY); + g.drawLine((int) zero.getX() - 2, (int) zero.getY() - (space * i), endX + 17, (int) zero.getY() - (space * i)); + g.setColor(Color.BLACK); + g.drawString("" + (i * 100), 2, (int) zero.getY() - (space * i) + 2); + } + g.setColor(Color.BLUE); + for (int i = 1; i < count; i++) { + int index = queueIndex - i; + if (index < 1) { + break; + } + int fromPoint = memoryQueue[index]; + int fromX = (count - i) * statisticsZoom; + int fromY = (int) (fromPoint / (900D / (space * 10))); + int toPoint = index == 0 ? 0 : memoryQueue[index - 1]; + int toX = (count - i - 1) * statisticsZoom; + int toY = (int) (toPoint / (900D / (space * 10))); + if (fromY < 0) { + g.setColor(Color.RED); + } + g.drawLine((int) (zero.getX() + fromX), (int) (zero.getY() - fromY), + (int) (zero.getX() + toX), (int) (zero.getY() - toY)); + if (fromY < 0) { + g.setColor(Color.GREEN); + } + } + g.setColor(Color.BLACK); + //Draw horizontal line. + g.drawLine((int) (zero.getX() - 4), (int) zero.getY(), endX + 21, (int) zero.getY()); + //Draw vertical line. + g.drawLine((int) zero.getX(), (int) zero.getY() + 4, (int) zero.getX(), 1); + Point p = ((StatisticsTab) c).statisticMousePoint; + if (p != null) { + g.setColor(new Color(251, 230, 130)); + g.fillRoundRect((int) (p.getX() + 10), (int) (p.getY() - 10), 100, 50, 10, 10); + } + if (((StatisticsTab) c).toolTipOpened) { + ((StatisticsTab) c).setToolTipText("test"); + } + } + + /** + * Secures the queues. + */ + private static void secureQueues() { + if (queueIndex >= QUEUE_SIZE) { + int lagSpikes = 0; + int memoryUsageSpikes = 0; + @SuppressWarnings("unused") + int totalMemory = 0; + @SuppressWarnings("unused") + int totalCycleTime = 0; + //Start at tick 500, the JVM has to "warm up" first. + for (int i = 500; i < QUEUE_SIZE; i++) { + if (performanceQueue[i] > 0) { //Anything above 0 (-600 + 600) = lag + lagSpikes++; + } + if (memoryQueue[i] > 700) { //Over 700Mb + memoryUsageSpikes++; + } + totalMemory += memoryQueue[i]; + totalCycleTime += performanceQueue[i]; + } + if (lagSpikes > 350 || memoryUsageSpikes > 350) { + logQueues(new File(ServerConstants.LOGS_PATH + "/system/Performance-log.txt")); + } + //System.out.println("Average cycle time: " + (600 + (totalCycleTime / (QUEUE_SIZE - 500))) + "ms."); + //System.out.println("Average memory usage: " + (totalMemory / (QUEUE_SIZE - 500)) + "Mb."); + queueIndex = 0; + } + } + + /** + * Logs a message to the console. + * + * @param message the message. + */ + public void log(String message) { + console.append(message + "\n"); + console.setCaretPosition(console.getDocument().getLength()); + } + + /** + * Sets the statistics zoom. + * + * @param pixels The amount of pixels. + */ + public static void setStatisticsZoom(int pixels) { + statisticsZoom = pixels; + } + + /** + * Gets the workingTime. + * + * @return The workingTime. + */ + public static long getWorkingTime() { + return workingTime; + } + + /** + * Sets the workingTime. + * + * @param workingTime The workingTime to set. + */ + public static void setWorkingTime(long workingTime) { + StatisticsTab.workingTime = workingTime; + } + + /** + * Gets the maximumPlayers. + * + * @return The maximumPlayers. + */ + public static int getMaximumPlayers() { + return maximumPlayers; + } + + /** + * Handles the statistics tab text pane. + * + * @author Emperor + */ + public final class StatsTextPane extends JTextPane { + + /** + * The serial UID. + */ + private static final long serialVersionUID = 664276151176087663L; + + /** + * Constructs a new {@code StatsTextPane} {@code Object}. + */ + public StatsTextPane() { + super(); + } + + /** + * Initializes the stats text pane. + * + * @return The stats text pane. + */ + public StatsTextPane init() { + setEditable(false); + setLayout(null); + Font font = new Font("Monospaced", Font.PLAIN, 12); + setFont(font); + super.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); + super.setVisible(true); + return this; + } + + } +} diff --git a/Server/src/main/java/core/gui/tab/UtilityTab.java b/Server/src/main/java/core/gui/tab/UtilityTab.java new file mode 100644 index 000000000..d2c07a0b8 --- /dev/null +++ b/Server/src/main/java/core/gui/tab/UtilityTab.java @@ -0,0 +1,600 @@ +package core.gui.tab; + + +import core.game.node.entity.player.Player; +import core.game.node.entity.player.info.PlayerDetails; +import core.game.node.entity.player.info.Rights; +import core.game.node.item.Item; +import core.game.system.task.TaskExecutor; +import core.gui.ConsoleFrame; +import core.gui.ConsoleTab; +import core.tools.PlayerLoader; +import core.tools.StringUtils; +import kotlin.Unit; + +import javax.swing.*; +import javax.swing.border.EtchedBorder; +import javax.swing.border.TitledBorder; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.NumberFormat; +import java.util.*; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Handles the utility programs. + * + * @author Vexia + */ +public final class UtilityTab extends ConsoleTab { + /** + * The {@link Logger} instance. + */ + private static final Logger logger = Logger.getLogger(UtilityTab.class.getName()); + /** + * The utility tab. + */ + private static final UtilityTab INSTANCE = new UtilityTab(); + + /** + * The serial UID. + */ + private static final long serialVersionUID = -4962790192758757624L; + + /** + * The list of players. + */ + private final List players = new ArrayList<>(20); + + /** + * The mapping of ips & their users. + */ + private final Map> IPS = new HashMap<>(); + + /** + * The mapping of macs & their users. + */ + private final Map> MACS = new HashMap<>(); + + /** + * The mapping of comp names & their users. + */ + private final Map> COMPS = new HashMap<>(); + + /** + * The players loaded list. + */ + private final JLabel lblPlayersLoaded = new JLabel("Players loaded: "); + + /** + * If the map is being populated. + */ + private boolean populating; + + /** + * Constructs a new {@Code UtilityTab} {@Code Object} + */ + public UtilityTab() { + super("Utilities"); + + JPanel panel = new JPanel(); + panel.setBorder(new TitledBorder(null, "Resolvers & Trackers", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panel.setBackground(UIManager.getColor("Button.background")); + panel.setBounds(18, 98, 152, 219); + add(panel); + panel.setLayout(null); + JButton btnResolveIp = new JButton("Resolve Ip"); + btnResolveIp.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + resolve(IPS); + } + }); + btnResolveIp.setBounds(17, 28, 117, 29); + panel.add(btnResolveIp); + + JButton btnResolveMac = new JButton("Resolve Mac"); + btnResolveMac.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + resolve(MACS); + } + }); + btnResolveMac.setBounds(17, 69, 117, 29); + panel.add(btnResolveMac); + + JButton btnResolveCompName = new JButton("Resolve Comp"); + btnResolveCompName.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + resolve(COMPS); + } + }); + btnResolveCompName.setBounds(17, 110, 117, 29); + panel.add(btnResolveCompName); + + JButton btnPopulateMaps = new JButton("Populate Maps"); + btnPopulateMaps.addActionListener(e -> { + populateList(); + JOptionPane.showMessageDialog(null, "Finished populating maps!"); + }); + btnPopulateMaps.setBounds(405, 32, 236, 29); + add(btnPopulateMaps); + + JLabel lblMustBeDone = new JLabel("MUST BE DONE BEFORE RUNNING TOOLS"); + lblMustBeDone.setBounds(390, 6, 379, 16); + add(lblMustBeDone); + + lblPlayersLoaded.setBounds(460, 61, 157, 16); + add(lblPlayersLoaded); + + JPanel panel_1 = new JPanel(); + panel_1.setLayout(null); + panel_1.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "Wealth & Items", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panel_1.setBackground(UIManager.getColor("Button.background")); + panel_1.setBounds(182, 98, 145, 219); + add(panel_1); + + JButton btnWealthScanner = new JButton("Wealth Scanner"); + btnWealthScanner.addActionListener(e -> wealthScanner()); + btnWealthScanner.setBounds(6, 29, 129, 29); + panel_1.add(btnWealthScanner); + + JButton btnItemScanner = new JButton("Item Scanner"); + btnItemScanner.addActionListener(e -> itemScanner()); + btnItemScanner.setBounds(6, 69, 129, 29); + panel_1.add(btnItemScanner); + + JPanel panel_2 = new JPanel(); + panel_2.setLayout(null); + panel_2.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "Player Utils", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panel_2.setBackground(UIManager.getColor("Button.background")); + panel_2.setBounds(345, 98, 145, 219); + add(panel_2); + + JButton btnStaffChecker = new JButton("Staff Scanner"); + btnStaffChecker.addActionListener(e -> staffScanner()); + btnStaffChecker.setBounds(6, 29, 129, 29); + panel_2.add(btnStaffChecker); + + JPanel panel_3 = new JPanel(); + panel_3.setLayout(null); + panel_3.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "Security", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panel_3.setBackground(UIManager.getColor("Button.background")); + panel_3.setBounds(502, 98, 145, 219); + add(panel_3); + + JButton btnMacViewer = new JButton("Mac Viewer"); + btnMacViewer.addActionListener(e -> viewMacs()); + btnMacViewer.setBounds(6, 29, 129, 29); + panel_3.add(btnMacViewer); + + JButton btnMacRemover = new JButton("Mac Remover"); + btnMacRemover.addActionListener(e -> removeMac()); + btnMacRemover.setBounds(6, 64, 129, 29); + panel_3.add(btnMacRemover); + } + + /** + * Removes a mac. + */ + public void removeMac() { + String mac = JOptionPane.showInputDialog("Enter address:"); + if (mac == null || mac.length() <= 1) { + JOptionPane.showMessageDialog(null, "Error! Nothing entered."); + return; + } +// if (SystemManager.getSecurity().isBanned(mac)) { +// SystemManager.getSecurity().remove(mac); +// JOptionPane.showMessageDialog(null, "Removed the mac - " + mac + "!"); +// } else { +// JOptionPane.showMessageDialog(null, "Error! Couldn't find mac in system manager."); +// } + } + + /** + * Views the banned macs. + */ + public void viewMacs() { + JPanel panel = new JPanel(new GridLayout(0, 1)); + JScrollPane pane = new JScrollPane(); + DefaultListModel model = new DefaultListModel(); + JList list = new JList(); +// for (String i : SystemManager.getSecurity().getBannedAddresses()) { +// if (i == null) { +// continue; +// } +// model.addElement(i.toString()); +// } + list.setModel(model); + pane.setViewportView(list); + panel.add(pane); + JOptionPane.showConfirmDialog(null, panel, "Banned Addresses", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + } + + /** + * Wealth scanner. + */ + public void wealthScanner() { + String args = JOptionPane.showInputDialog("Enter item id:"); + int id = -1; + if (args != null && args.length() > 0) { + try { + id = Integer.parseInt(args); + } catch (NumberFormatException e) { + id = -1; + logger.log(Level.WARNING, "Error in wealth scanner, number exception!"); + } + } + List data = wealthScanner(id); + JPanel panel = new JPanel(new GridLayout(0, 1)); + JScrollPane pane = new JScrollPane(); + DefaultListModel model = new DefaultListModel(); + JList list = new JList(); + for (String i : data) { + if (i == null) { + continue; + } + model.addElement(i.toString()); + } + list.setModel(model); + pane.setViewportView(list); + panel.add(pane); + JOptionPane.showConfirmDialog(null, panel, "Wealth Scanner", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + + } + + /** + * Wealth scanner. + */ + public List wealthScanner(int itemId) { + Item item = null; + if (itemId != -1) { + item = new Item(itemId); + } + Object[][] mostWealthy = new Object[50][2]; + int player = 0; + long count = 0; + for (Player p : players) { + if (p.getDetails().getRights() == Rights.PLAYER_MODERATOR) { + continue; + } + if (item != null) { + long old = count; + count += p.getInventory().getAmount(item); + count += p.getEquipment().getAmount(item); + count += p.getBank().getAmount(item); + if (old != count) { + player++; + } + } + for (int i = 0; i < mostWealthy.length; i++) { + Long value = (Long) mostWealthy[i][0]; + if (value == null || value < p.getMonitor().getNetworth()) { + for (int j = mostWealthy.length - 1; j > i; j--) { + mostWealthy[j] = mostWealthy[j - 1]; + } + mostWealthy[i] = new Object[2]; + mostWealthy[i][0] = p.getMonitor().getNetworth(); + mostWealthy[i][1] = p.getName(); + break; + } + } + } + List formats = new ArrayList<>(20); + for (int i = mostWealthy.length - 1; i >= 0; i--) { + Object[] info = mostWealthy[i]; + if (info != null && info[0] != null) { + formats.add(i + ": " + info[1] + " - " + NumberFormat.getNumberInstance(Locale.US).format((Long) info[0]) + " coins."); + } + } + if (item != null) { + formats.add(NumberFormat.getNumberInstance(Locale.US).format(count) + " occurrences of item " + item.getName() + " (id=" + item.getId() + ") by " + player + " players!"); + } + return formats; + } + + /** + * The item scanner. + */ + public void itemScanner() { + String args = JOptionPane.showInputDialog("Enter item id:"); + Item item = new Item(11694); + if (args != null && args.length() > 0) { + try { + item = new Item(Integer.parseInt(args)); + } catch (NumberFormatException e) { + item = new Item(11694); + logger.log(Level.WARNING, "Error in wealth scanner, number exception!"); + } + } + List formats = itemScanner(item); + JPanel panel = new JPanel(new GridLayout(0, 1)); + JScrollPane pane = new JScrollPane(); + DefaultListModel model = new DefaultListModel(); + JList list = new JList(); + for (String i : formats) { + if (i == null) { + continue; + } + model.addElement(i.toString()); + } + list.setModel(model); + pane.setViewportView(list); + panel.add(pane); + JOptionPane.showConfirmDialog(null, panel, "Item Scanner", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + } + + /** + * Scans for items in the eco. + */ + public List itemScanner(Item item) { + Map map = new HashMap<>(); + for (Player p : players) { + List containers = new ArrayList<>(20); + containers.add(p.getInventory()); + containers.add(p.getBank()); + containers.add(p.getEquipment()); + int amount = 0; + for (core.game.container.Container container : containers) { + Item i = container.getItem(item); + if (i != null) { + amount += i.getAmount(); + } + } + if (amount > 0) { + map.put(p.getName(), amount); + } + } + List formats = new ArrayList<>(20); + for (Map.Entry entry : map.entrySet()) { + formats.add("Player name=" + entry.getKey() + ", contained a total of " + entry.getValue() + " " + item.getName() + "."); + } + if (formats.size() == 0) { + formats.add("There were no occurrences of " + item + "."); + } + return formats; + } + + /** + * Resolves the address. + * + * @param map the map. + */ + public void resolve(Map> map) { + String address = JOptionPane.showInputDialog("Enter the address."); + List names = resolve(map, address, false); + String string = "No names found registered with that address!"; + if (names == null) { + JOptionPane.showMessageDialog(null, string); + } else { + string = "Names:" + Arrays.toString(names.toArray()); + JOptionPane.showMessageDialog(null, string); + } + } + + /** + * Resolves & tracks an adddress. + * + * @param map the map. + * @param value the value. + * @param name if the name or not. + * @return the names resolved. + */ + public List resolve(Map> map, String value, boolean name) { + List names = null; + String address = !name ? value : ""; + if (name) { + for (Map.Entry> entry : map.entrySet()) { + for (String s : entry.getValue()) { + if (s.equals(value)) { + address = entry.getKey(); + break; + } + } + } + } + names = map.get(address); + return names; + } + + /** + * Gets the mapping. + * + * @param id the id. + * @return the map. + */ + public Map> getMap(int id) { + return id == 1 ? IPS : id == 2 ? MACS : COMPS; + } + + /** + * Populates the lists. + */ + public void populateList() { + if (populating) { + return; + } + populating = true; + players.clear(); + TaskExecutor.execute(() -> { + Thread.currentThread().setName("Utility Tab"); + ConsoleFrame.getInstance().getPlayerTab().getPlayerNames().clear(); + ConsoleFrame.getInstance().getPlayerTab().populatePlayerSearch(); + for (String name : ConsoleFrame.getInstance().getPlayerTab().getPlayerNames()) { + Player player = PlayerLoader.getPlayerFile(name); + if (player == null) { + continue; + } + PlayerDetails details = player.getDetails(); + if (details != null) { + addAddressToMap(name, details.getIpAddress(), IPS); + addAddressToMap(name, details.getMacAddress(), MACS); + addAddressToMap(name, details.getCompName(), COMPS); + players.add(player); + } + } + populating = false; + System.gc(); + lblPlayersLoaded.setText("Players loaded: " + players.size()); + return Unit.INSTANCE; + }); + } + + /** + * Checks the staff. + */ + public void staffScanner() { + List staff = new ArrayList<>(20); + for (Player player : players) { + if (player.getDetails().getRights() != Rights.REGULAR_PLAYER) { + staff.add(player.getName() + " - " + StringUtils.formatDisplayName(player.getDetails().getRights().toString())); + } + } + JPanel panel = new JPanel(new GridLayout(0, 1)); + JScrollPane pane = new JScrollPane(); + DefaultListModel model = new DefaultListModel(); + JList list = new JList(); + for (String i : staff) { + if (i == null) { + continue; + } + model.addElement(i.toString()); + } + list.setModel(model); + pane.setViewportView(list); + panel.add(pane); + JOptionPane.showConfirmDialog(null, panel, "Staff Scanner", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + } + + /** + * Adds an address with its names to the map. + * + * @param name the name. + * @param address the address. + * @param map the map. + */ + public void addAddressToMap(String name, String address, Map> map) { + if (address == null) { + return; + } + List names = map.get(address); + if (names == null) { + names = new ArrayList(); + } + names.add(name); + map.put(address, names); + } + + /** + * Deletes a player. + * + * @param details the details. + */ + public void delete(PlayerDetails details) { + if (details.getRights() == Rights.PLAYER_MODERATOR) { + return; + } + // TODO +// Connection connection = SQLManager.getConnection(); +// PreparedStatement statement; +// try { +// statement = connection.prepareStatement("DELETE FROM " + "playerdata" + " WHERE " + "" + "username" + "='" + details.getUsername().toLowerCase() + "'"); +// statement.execute(); +// statement = connection.prepareStatement("DELETE FROM " + "highscores" + " WHERE " + "" + "username" + "='" + details.getUsername().toLowerCase() + "'"); +// statement.execute(); +// } catch (SQLException e) { +// e.printStackTrace(); +// } +// +// File detailFile = new File(GameConstants.getPlayerDetailsPath() + "/" + details.getUsername() + ".store"); +// File playerFile = new File(GameConstants.getPlayerSavePath() + "/" + details.getUsername() + ".store"); +// detailFile.delete(); +// playerFile.delete(); +// SQLManager.close(connection); +// ConsoleFrame.getInstance().getPlayerTab().getPlayerNames().remove(details.getUsername()); + + } + + /** + * Gets the player. + * + * @param name the name. + * @return the player. + */ + public Player getPlayer(String name) { + if (players.size() == 0) { + populateList(); + return null; + } + for (Player p : players) { + if (p.getName().equals(name)) { + return p; + } + } + return null; + } + + /** + * Gets the ips. + * + * @return the ips. + */ + public Map> getIps() { + return IPS; + } + + /** + * Gets the macs. + * + * @return the macs. + */ + public Map> getMacs() { + return MACS; + } + + /** + * Gets the comps. + * + * @return the comps. + */ + public Map> getComps() { + return COMPS; + } + + /** + * Gets the players. + * + * @return the players. + */ + public List getPlayers() { + return players; + } + + /** + * Gets the populating. + * + * @return the populating + */ + public boolean isPopulating() { + return populating; + } + + /** + * Sets the bapopulating. + * + * @param populating the populating to set. + */ + public void setPopulating(boolean populating) { + this.populating = populating; + } + + /** + * Gets the instance. + * + * @return the instance + */ + public static UtilityTab getInstance() { + return INSTANCE; + } +} diff --git a/Server/src/main/java/core/net/IoSession.java b/Server/src/main/java/core/net/IoSession.java index 4c7819d42..f3b8d5f1f 100644 --- a/Server/src/main/java/core/net/IoSession.java +++ b/Server/src/main/java/core/net/IoSession.java @@ -5,7 +5,7 @@ import core.game.node.entity.player.Player; import core.game.node.entity.player.info.ClientInfo; import core.game.node.entity.player.info.login.Response; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.producer.HSEventProducer; import core.net.producer.LoginEventProducer; @@ -215,7 +215,7 @@ public class IoSession { channel.socket().close(); if (object instanceof Player) { final Player p = getPlayer(); - World.getPulser().submit(new Pulse(0) { + GameWorld.getPulser().submit(new Pulse(0) { @Override public boolean pulse() { if (p.isActive() && !p.getSession().active) { diff --git a/Server/src/main/java/core/net/NioReactor.java b/Server/src/main/java/core/net/NioReactor.java new file mode 100644 index 000000000..42fea5a1d --- /dev/null +++ b/Server/src/main/java/core/net/NioReactor.java @@ -0,0 +1,148 @@ +package core.net; + +import core.net.amsc.MSEventHandler; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; +import java.nio.channels.ServerSocketChannel; +import java.nio.channels.SocketChannel; +import java.util.Iterator; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Handles (NIO-based) networking events using the reactor pattern. + * @author Emperor + */ +public final class NioReactor implements Runnable { + + /** + * The executor service. + */ + private final ExecutorService service; + + /** + * The socket channel. + */ + private ServerSocketConnection channel; + + /** + * The I/O event handling instance. + */ + private IoEventHandler eventHandler; + + /** + * If the reactor is running. + */ + private boolean running; + + /** + * Constructs a new {@code NioReactor}. + */ + private NioReactor(IoEventHandler eventHandler) { + this.service = Executors.newSingleThreadScheduledExecutor(); + this.eventHandler = eventHandler; + } + + /** + * Creates and configures a new {@code NioReactor} with a pool size of 1. + * @param port The port. + * @return The {@code NioReactor} {@code Object}. + * @throws IOException When an I/O exception occurs. + */ + public static NioReactor configure(int port) throws IOException { + return configure(port, 1); + } + + /** + * Creates and configures a new {@code NioReactor}. + * @param port The port. + * @param poolSize The amount of threads in the thread pool. + * @return The {@code NioReactor} {@code Object}. + * @throws IOException When an I/O exception occurs. + */ + public static NioReactor configure(int port, int poolSize) throws IOException { + NioReactor reactor = new NioReactor(new IoEventHandler(Executors.newFixedThreadPool(poolSize))); + ServerSocketChannel channel = ServerSocketChannel.open(); + Selector selector = Selector.open(); + channel.bind(new InetSocketAddress(port)); + channel.configureBlocking(false); + channel.register(selector, SelectionKey.OP_ACCEPT); + reactor.channel = new ServerSocketConnection(selector, channel); + return reactor; + } + + /** + * Starts a NIO reactor used for client connections. + * @param address The IP-address to connect to. + * @param port The port used. + * @return The NIO reactor object. + * @throws IOException When an exception occurs. + */ + public static NioReactor connect(String address, int port) throws IOException { + NioReactor reactor = new NioReactor(new MSEventHandler()); + Selector selector = Selector.open(); + SocketChannel channel = SocketChannel.open(); + channel.configureBlocking(false); + channel.socket().setKeepAlive(true); + channel.socket().setTcpNoDelay(true); + channel.connect(new InetSocketAddress(address, port)); + channel.register(selector, SelectionKey.OP_CONNECT); + reactor.channel = new ServerSocketConnection(selector, channel); + return reactor; + } + + /** + * Starts the reactor. + */ + public void start() { + running = true; + service.execute(this); + } + + @Override + public void run() { + Thread.currentThread().setName("NioReactor"); + while (running) { + try { + channel.getSelector().select(); + } catch (IOException e) { + e.printStackTrace(); + } + Iterator iterator = channel.getSelector().selectedKeys().iterator(); + while (iterator.hasNext()) { + SelectionKey key = iterator.next(); + iterator.remove(); + try { + if (!key.isValid() || !key.channel().isOpen()) { + key.cancel(); + continue; + } + if (key.isConnectable()) { + eventHandler.connect(key); + } + if (key.isAcceptable()) { + eventHandler.accept(key, channel.getSelector()); + } + if (key.isReadable()) { + eventHandler.read(key); + } else if (key.isWritable()) { + eventHandler.write(key); + } + } catch (Throwable t) { + eventHandler.disconnect(key, t); + } + } + } + } + + /** + * Terminates the reactor (once it's done processing current I/O events). + */ + public void terminate() { + running = false; + } + +} \ No newline at end of file diff --git a/Server/src/main/java/core/net/ms/MSEventHandler.java b/Server/src/main/java/core/net/amsc/MSEventHandler.java similarity index 56% rename from Server/src/main/java/core/net/ms/MSEventHandler.java rename to Server/src/main/java/core/net/amsc/MSEventHandler.java index f2ac48ca0..074efa367 100644 --- a/Server/src/main/java/core/net/ms/MSEventHandler.java +++ b/Server/src/main/java/core/net/amsc/MSEventHandler.java @@ -1,11 +1,13 @@ -package core.net.ms; +package core.net.amsc; +import rs09.game.system.SystemLogger; import core.net.IoEventHandler; -import rs09.net.ms.ManagementServer; +import core.net.IoSession; import java.io.IOException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; +import java.nio.channels.SocketChannel; import java.util.concurrent.Executors; /** @@ -23,9 +25,21 @@ public final class MSEventHandler extends IoEventHandler { @Override public void connect(SelectionKey key) throws IOException { - /** - * Empty - */ + SocketChannel ch = (SocketChannel) key.channel(); + try { + if (ch.finishConnect()) { + key.interestOps(key.interestOps() ^ SelectionKey.OP_CONNECT); + key.interestOps(key.interestOps() | SelectionKey.OP_READ); + IoSession session = (IoSession) key.attachment(); + key.attach(session = new IoSession(key, service)); + WorldCommunicator.register(session); + return; + } + } catch (Throwable t) { + t.printStackTrace(); + } + SystemLogger.logErr("Failed connecting to Management Server!"); + WorldCommunicator.terminate(); } @Override @@ -46,7 +60,7 @@ public final class MSEventHandler extends IoEventHandler { @Override public void disconnect(SelectionKey key, Throwable t) { super.disconnect(key, t); - ManagementServer.disconnect(); + WorldCommunicator.terminate(); } } \ No newline at end of file diff --git a/Server/src/main/java/core/net/ms/MSPacketRepository.java b/Server/src/main/java/core/net/amsc/MSPacketRepository.java similarity index 94% rename from Server/src/main/java/core/net/ms/MSPacketRepository.java rename to Server/src/main/java/core/net/amsc/MSPacketRepository.java index 1fb10e2d0..0917a4281 100644 --- a/Server/src/main/java/core/net/ms/MSPacketRepository.java +++ b/Server/src/main/java/core/net/amsc/MSPacketRepository.java @@ -1,4 +1,4 @@ -package core.net.ms; +package core.net.amsc; import core.game.node.entity.player.Player; import core.game.node.entity.player.info.PlayerDetails; @@ -18,9 +18,8 @@ import core.net.packet.out.ContactPackets; import core.net.packet.out.UpdateClanChat; import rs09.game.node.entity.player.info.login.LoginParser; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; -import rs09.net.ms.ManagementServer; import java.nio.ByteBuffer; @@ -38,7 +37,7 @@ public final class MSPacketRepository { IoBuffer buffer = new IoBuffer(14, PacketHeader.BYTE); buffer.putString(player.getName()); buffer.put(Rights.getChatIcon(player)); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); player.getAppearance().sync(); } @@ -58,7 +57,7 @@ public final class MSPacketRepository { buffer.putString(d.getSerial()); buffer.putInt(d.getRights().toInteger()); buffer.put((byte) getIcon(d)); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -67,9 +66,12 @@ public final class MSPacketRepository { * @param username The name of the player to remove. */ public static void sendPlayerRemoval(String username) { + if (!WorldCommunicator.isEnabled()) { + return; + } IoBuffer buffer = new IoBuffer(1, PacketHeader.BYTE); buffer.putString(username); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -88,7 +90,7 @@ public final class MSPacketRepository { buffer.putString(name); buffer.putLong(duration); buffer.putString(player.getName()); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -99,7 +101,7 @@ public final class MSPacketRepository { public static void requestCommunicationInfo(String username) { IoBuffer buffer = new IoBuffer(3, PacketHeader.BYTE); buffer.putString(username); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -121,7 +123,7 @@ public final class MSPacketRepository { } else { buffer.put((byte) (remove ? 1 : 0)); } - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -137,7 +139,7 @@ public final class MSPacketRepository { IoBuffer buffer = new IoBuffer(6, PacketHeader.BYTE); buffer.putString(player.getName()); buffer.putString(name); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -150,7 +152,7 @@ public final class MSPacketRepository { IoBuffer buffer = new IoBuffer(7, PacketHeader.BYTE); buffer.putString(player.getName()); buffer.putString(clanName); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -161,13 +163,16 @@ public final class MSPacketRepository { * @param rank The rank to set. */ public static void setClanSetting(Player player, int type, ClanRank rank) { + if (!WorldCommunicator.isEnabled()) { + return; + } IoBuffer buffer = new IoBuffer(8, PacketHeader.BYTE); buffer.putString(player.getName()); buffer.put((byte) type); if (rank != null) { buffer.put((byte) rank.ordinal()); } - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -180,7 +185,7 @@ public final class MSPacketRepository { IoBuffer buffer = new IoBuffer(9, PacketHeader.BYTE); buffer.putString(username); buffer.putString(name); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -193,7 +198,7 @@ public final class MSPacketRepository { IoBuffer buffer = new IoBuffer(10, PacketHeader.BYTE); buffer.putString(player.getName()); buffer.putString(message); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -208,7 +213,7 @@ public final class MSPacketRepository { buffer.putString(player.getName()); buffer.putString(name); buffer.putString(message); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -219,7 +224,7 @@ public final class MSPacketRepository { public static void requestClanInfo(String name) { IoBuffer buffer = new IoBuffer(12, PacketHeader.BYTE); buffer.putString(name); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -236,7 +241,7 @@ public final class MSPacketRepository { buffer.put(publicSetting); buffer.put(privateSetting); buffer.put(tradeSetting); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -298,7 +303,7 @@ public final class MSPacketRepository { private static void handleRegistryResponse(IoBuffer buffer) { String username = buffer.getString(); int opcode = buffer.get() & 0xFF; - LoginParser parser = ManagementServer.finishLoginAttempt(username); + LoginParser parser = WorldCommunicator.finishLoginAttempt(username); if (parser != null) { PlayerDetails details = parser.getDetails(); Response response = Response.get(opcode); @@ -341,7 +346,7 @@ public final class MSPacketRepository { public static void sendWorldMessage(String message) { IoBuffer buffer = new IoBuffer(12, PacketHeader.BYTE); buffer.putString(message); - ManagementServer.session.write(buffer); + WorldCommunicator.getSession().write(buffer); } /** @@ -493,7 +498,7 @@ public final class MSPacketRepository { int worldId = buffer.get() & 0xFF; clan.getRanks().put(name, ClanRank.values()[buffer.get() & 0xFF]); ClanEntry entry = new ClanEntry(name, worldId); - if (worldId == World.getSettings().getWorldId()) { + if (worldId == GameWorld.getSettings().getWorldId()) { Player player = Repository.getPlayerByName(name); entry.setPlayer(player); if (player != null) { diff --git a/Server/src/main/java/core/net/ms/ManagementServerState.java b/Server/src/main/java/core/net/amsc/ManagementServerState.java similarity index 98% rename from Server/src/main/java/core/net/ms/ManagementServerState.java rename to Server/src/main/java/core/net/amsc/ManagementServerState.java index aee63a125..8a9d91a23 100644 --- a/Server/src/main/java/core/net/ms/ManagementServerState.java +++ b/Server/src/main/java/core/net/amsc/ManagementServerState.java @@ -1,4 +1,4 @@ -package core.net.ms; +package core.net.amsc; import core.game.node.entity.player.Player; import rs09.game.world.repository.Repository; diff --git a/Server/src/main/java/core/net/amsc/WorldCommunicator.java b/Server/src/main/java/core/net/amsc/WorldCommunicator.java new file mode 100644 index 000000000..cce4f911e --- /dev/null +++ b/Server/src/main/java/core/net/amsc/WorldCommunicator.java @@ -0,0 +1,235 @@ +package core.net.amsc; + +import core.game.node.entity.player.info.Rights; +import core.game.node.entity.player.info.login.Response; +import core.game.system.task.TaskExecutor; +import core.net.EventProducer; +import core.net.IoSession; +import core.net.NioReactor; +import core.net.producer.MSHSEventProducer; +import kotlin.Unit; +import rs09.game.node.entity.player.info.login.LoginParser; +import rs09.game.system.SystemLogger; +import rs09.game.world.GameWorld; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Handles world communication. + * @author Emperor + */ +public final class WorldCommunicator { + + /** + * The handshake events producer. + */ + private static final EventProducer HANDSHAKE_PRODUCER = new MSHSEventProducer(); + + /** + * The current state. + */ + private static ManagementServerState state = ManagementServerState.CONNECTING; + + /** + * The I/O session. + */ + private static IoSession session; + + /** + * The world information. + */ + private static final WorldStatistics[] WORLDS = new WorldStatistics[10]; + + /** + * The current login attempts. + */ + private static final Map loginAttempts = new ConcurrentHashMap<>(); + + /** + * The NIO reactor. + */ + private static NioReactor reactor; + + /** + * Registers a new world. + * @param session The session. + */ + public static void register(IoSession session) { + WorldCommunicator.session = session; + session.setProducer(HANDSHAKE_PRODUCER); + session.write(true); + WORLDS[GameWorld.getSettings().getWorldId() - 1] = new WorldStatistics(GameWorld.getSettings().getWorldId()); + session.setObject(WORLDS[GameWorld.getSettings().getWorldId() - 1]); + } + + /** + * Registers a login attempt. + * @param parser The login attempt. + */ + public static void register(final LoginParser parser) { + LoginParser p = loginAttempts.get(parser.getDetails().getUsername()); + if (p != null && GameWorld.getTicks() - p.getTimeStamp() < 50 && p.getDetails().getRights() == Rights.REGULAR_PLAYER) { + parser.getDetails().getSession().write(Response.ALREADY_ONLINE, true); + return; + } + loginAttempts.put(parser.getDetails().getUsername(), parser); + TaskExecutor.executeSQL(() -> { + if (!parser.getDetails().parse()) { + parser.getDetails().getSession().write(Response.INVALID_LOGIN_SERVER, true); + return Unit.INSTANCE; + } + MSPacketRepository.sendPlayerRegistry(parser); + return Unit.INSTANCE; + }); + } + + /** + * Attempts to connect to the management server. + */ + public static void connect() { + try { + SystemLogger.logInfo("Attempting to connect to management server..."); + setState(ManagementServerState.CONNECTING); + /*if (isLocallyHosted()) { + SystemLogger.log("Management server is hosted on local machine!"); + reactor = NioReactor.connect(GameWorld.getSettings().getMsAddress(), 5555); + } else {*/ + reactor = NioReactor.connect(GameWorld.getSettings().getMsAddress(), 5555); + //} + reactor.start(); + } catch (Throwable e) { + SystemLogger.logErr("Unable to connect to management server"); + e.printStackTrace(); + terminate(); + } + } + + /** + * Checks if the Management server is locally hosted. + * @return {@code True} if so. + * @throws IOException When an I/O exception occurs. + */ + private static boolean isLocallyHosted() throws IOException { + InetAddress address = InetAddress.getByName(GameWorld.getSettings().getMsAddress()); + if (address.isAnyLocalAddress() || address.isLoopbackAddress()) { + return true; + } + return NetworkInterface.getByInetAddress(address) != null; + } + + /** + * Terminates the world communicator. + */ + public static void terminate() { + setState(ManagementServerState.NOT_AVAILABLE); + if (reactor != null) { + reactor.terminate(); + reactor = null; + } + } + + /** + * Gets and removes the login attempt for the given username. + * @param username The username. + * @return The login attempt. + */ + public static LoginParser finishLoginAttempt(String username) { + return loginAttempts.remove(username); + } + + /** + * Gets the local world. + * @return The world statistics of this world server. + */ + public static WorldStatistics getLocalWorld() { + return WORLDS[GameWorld.getSettings().getWorldId() - 1]; + } + + /** + * Gets the id of the world the player is connected to. + * @param playerName The player's name. + * @return The world id, or -1 if the player wasn't connected. + */ + public static int getWorld(String playerName) { + for (int i = 0; i < WORLDS.length; i++) { + if (WORLDS[i].getPlayers().contains(playerName)) { + return i; + } + } + return -1; + } + + /** + * Gets the world statistics for the given index. + * @param id The world id. + * @return The world statistics. + */ + public static WorldStatistics getWorld(int id) { + return WORLDS[id - 1]; + } + + /** + * Gets the session. + * @return the session + */ + public static IoSession getSession() { + return session; + } + + /** + * Checks if this world is connected to the Management server. + * @return {@code True} if so. + */ + public static boolean isEnabled() { + return state == ManagementServerState.AVAILABLE; + } + + /** + * Gets the login attempts mapping. + * @return The login attempts mapping. + */ + public static Map getLoginAttempts() { + return loginAttempts; + } + + /** + * Gets the state. + * @return the state + */ + public static ManagementServerState getState() { + return state; + } + + /** + * Sets the state. + * @param state the state to set. + */ + public static void setState(ManagementServerState state) { + if (WorldCommunicator.state != state) { + WorldCommunicator.state = state; + state.set(); + SystemLogger.logInfo("Management server status: " + state + "."); + } + } + + /** + * Gets the reactor. + * @return the reactor + */ + public static NioReactor getReactor() { + return reactor; + } + + /** + * Sets the reactor. + * @param reactor the reactor to set. + */ + public static void setReactor(NioReactor reactor) { + WorldCommunicator.reactor = reactor; + } + +} \ No newline at end of file diff --git a/Server/src/main/java/core/net/ms/WorldStatistics.java b/Server/src/main/java/core/net/amsc/WorldStatistics.java similarity index 96% rename from Server/src/main/java/core/net/ms/WorldStatistics.java rename to Server/src/main/java/core/net/amsc/WorldStatistics.java index 0623adddc..bbae465f9 100644 --- a/Server/src/main/java/core/net/ms/WorldStatistics.java +++ b/Server/src/main/java/core/net/amsc/WorldStatistics.java @@ -1,4 +1,4 @@ -package core.net.ms; +package core.net.amsc; import java.util.ArrayList; import java.util.List; diff --git a/Server/src/main/java/core/net/event/GameReadEvent.java b/Server/src/main/java/core/net/event/GameReadEvent.java index 591184639..27544148e 100644 --- a/Server/src/main/java/core/net/event/GameReadEvent.java +++ b/Server/src/main/java/core/net/event/GameReadEvent.java @@ -1,7 +1,7 @@ package core.net.event; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.IoReadEvent; import core.net.IoSession; import core.net.packet.IncomingPacket; @@ -97,7 +97,7 @@ public final class GameReadEvent extends IoReadEvent { IncomingPacket packet = PacketRepository.getIncoming(opcode); session.setLastPing(System.currentTimeMillis()); if (packet == null) { - if (World.getSettings().isDevMode()) { + if (GameWorld.getSettings().isDevMode()) { SystemLogger.logErr("Unhandled packet [opcode=" + opcode + ", previous=" + last + ", size=" + size + ", header=" + header + "]"); } continue; diff --git a/Server/src/main/java/core/net/event/MSReadEvent.java b/Server/src/main/java/core/net/event/MSReadEvent.java index 90948b932..77592ba15 100644 --- a/Server/src/main/java/core/net/event/MSReadEvent.java +++ b/Server/src/main/java/core/net/event/MSReadEvent.java @@ -3,7 +3,7 @@ package core.net.event; import rs09.game.system.SystemLogger; import core.net.IoReadEvent; import core.net.IoSession; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; import java.nio.ByteBuffer; diff --git a/Server/src/main/java/core/net/event/RegistryReadEvent.java b/Server/src/main/java/core/net/event/RegistryReadEvent.java index 4a8b5d744..2d3d4a4d1 100644 --- a/Server/src/main/java/core/net/event/RegistryReadEvent.java +++ b/Server/src/main/java/core/net/event/RegistryReadEvent.java @@ -1,10 +1,12 @@ package core.net.event; import rs09.game.system.SystemLogger; +import rs09.game.world.GameWorld; import core.net.IoReadEvent; import core.net.IoSession; +import core.net.amsc.ManagementServerState; +import core.net.amsc.WorldCommunicator; import core.net.producer.MSEventProducer; -import rs09.net.ms.ManagementServer; import java.nio.ByteBuffer; @@ -32,26 +34,26 @@ public final class RegistryReadEvent extends IoReadEvent { public void read(IoSession session, ByteBuffer buffer) { int opcode = buffer.get() & 0xFF; switch (opcode) { - case 0: - SystemLogger.logErr("[MS] Registration Denied - World ID out of bounds."); - ManagementServer.flagCantConnect(); - break; - case 1: - session.setProducer(PRODUCER); - SystemLogger.logInfo("[MS] Successfully Registered to RS09 Management Server."); - ManagementServer.flagConnected(); - break; - case 2: - SystemLogger.logErr("[MS] Registration Denied - World ID already in use."); - ManagementServer.flagCantConnect(); - break; - case 3: - SystemLogger.logErr("[MS] Registration Denied - Internal error encountered by RS09 Management Server."); - ManagementServer.flagCantConnect(); - break; - default: - System.out.println("??" + opcode); - break; + case 0: + WorldCommunicator.setState(ManagementServerState.NOT_AVAILABLE); + SystemLogger.logErr("Failed registering world to AMS - [id=" + GameWorld.getSettings().getWorldId() + ", cause=World id out of bounds]!"); + break; + case 1: + session.setProducer(PRODUCER); + WorldCommunicator.setState(ManagementServerState.AVAILABLE); + SystemLogger.logInfo("Successfully registered world to AMS - [id=" + GameWorld.getSettings().getWorldId() + "]!"); + break; + case 2: + WorldCommunicator.setState(ManagementServerState.NOT_AVAILABLE); + SystemLogger.logErr("Failed registering world to AMS - [id=" + GameWorld.getSettings().getWorldId() + ", cause=World id already in use]!"); + break; + case 3: + WorldCommunicator.setState(ManagementServerState.NOT_AVAILABLE); + SystemLogger.logErr("Failed registering world to AMS - [id=" + GameWorld.getSettings().getWorldId() + ", cause=Exception in AMS]!"); + break; + default: + System.out.println("??" + opcode); + break; } } diff --git a/Server/src/main/java/core/net/event/RegistryWriteEvent.java b/Server/src/main/java/core/net/event/RegistryWriteEvent.java index 6ccb069e3..0a0b40521 100644 --- a/Server/src/main/java/core/net/event/RegistryWriteEvent.java +++ b/Server/src/main/java/core/net/event/RegistryWriteEvent.java @@ -1,7 +1,7 @@ package core.net.event; import core.cache.misc.buffer.ByteBufferUtils; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.Constants; import core.net.IoSession; import core.net.IoWriteEvent; @@ -31,14 +31,14 @@ public final class RegistryWriteEvent extends IoWriteEvent { @Override public void write(IoSession session, Object context) { ByteBuffer buffer = ByteBuffer.allocate(128); - buffer.put((byte) World.getSettings().getWorldId()); + buffer.put((byte) GameWorld.getSettings().getWorldId()); buffer.putInt(Constants.REVISION); - buffer.put((byte) World.getSettings().getCountryIndex()); - buffer.put((byte) (World.getSettings().isMembers() ? 1 : 0)); - buffer.put((byte) (World.getSettings().isPvp() ? 1 : 0)); - buffer.put((byte) (World.getSettings().isQuickChat() ? 1 : 0)); - buffer.put((byte) (World.getSettings().isLootshare() ? 1 : 0)); - ByteBufferUtils.putString(World.getSettings().getActivity(), buffer); + buffer.put((byte) GameWorld.getSettings().getCountryIndex()); + buffer.put((byte) (GameWorld.getSettings().isMembers() ? 1 : 0)); + buffer.put((byte) (GameWorld.getSettings().isPvp() ? 1 : 0)); + buffer.put((byte) (GameWorld.getSettings().isQuickChat() ? 1 : 0)); + buffer.put((byte) (GameWorld.getSettings().isLootshare() ? 1 : 0)); + ByteBufferUtils.putString(GameWorld.getSettings().getActivity(), buffer); buffer.put(CHECK.getBytes()); session.queue((ByteBuffer) buffer.flip()); } diff --git a/Server/src/main/java/core/net/lobby/WorldDefinition.java b/Server/src/main/java/core/net/lobby/WorldDefinition.java index e5f5d4987..a67d4c1b4 100644 --- a/Server/src/main/java/core/net/lobby/WorldDefinition.java +++ b/Server/src/main/java/core/net/lobby/WorldDefinition.java @@ -1,6 +1,6 @@ package core.net.lobby; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; /** @@ -124,7 +124,7 @@ public class WorldDefinition { * @return The player count. */ public int getPlayerCount() { - if (worldId == World.getSettings().getWorldId()) { + if (worldId == GameWorld.getSettings().getWorldId()) { return Repository.getPlayers().size(); } return players; diff --git a/Server/src/main/java/core/net/lobby/WorldList.java b/Server/src/main/java/core/net/lobby/WorldList.java index cc0a1c20c..dc23a0301 100644 --- a/Server/src/main/java/core/net/lobby/WorldList.java +++ b/Server/src/main/java/core/net/lobby/WorldList.java @@ -1,6 +1,6 @@ package core.net.lobby; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.IoSession; import core.net.packet.IoBuffer; @@ -209,6 +209,6 @@ public final class WorldList { * Sets the baupdateStamp. */ public static void flagUpdate() { - WorldList.updateStamp = World.getTicks(); + WorldList.updateStamp = GameWorld.getTicks(); } } \ No newline at end of file diff --git a/Server/src/main/java/core/net/packet/in/ActionButtonPacket.java b/Server/src/main/java/core/net/packet/in/ActionButtonPacket.java index 9236a17b0..f72c837b1 100644 --- a/Server/src/main/java/core/net/packet/in/ActionButtonPacket.java +++ b/Server/src/main/java/core/net/packet/in/ActionButtonPacket.java @@ -13,7 +13,7 @@ import core.game.system.task.Pulse; import core.net.packet.IncomingPacket; import core.net.packet.IoBuffer; import rs09.game.interaction.InterfaceListeners; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.util.List; @@ -287,7 +287,7 @@ public class ActionButtonPacket implements IncomingPacket { //System.out.println("Using action handler184-95"); if (player.getAttribute("logging_in") != null) { player.getInterfaceManager().close(); - World.getPulser().submit(new Pulse(1, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.removeAttribute("logging_in"); diff --git a/Server/src/main/java/core/net/packet/in/ChatPacket.java b/Server/src/main/java/core/net/packet/in/ChatPacket.java index f34e18627..af419b473 100644 --- a/Server/src/main/java/core/net/packet/in/ChatPacket.java +++ b/Server/src/main/java/core/net/packet/in/ChatPacket.java @@ -3,10 +3,11 @@ package core.net.packet.in; import core.game.node.entity.player.Player; import core.game.system.monitor.PlayerMonitor; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.update.flag.context.ChatMessage; import core.game.world.update.flag.player.ChatFlag; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.net.packet.IncomingPacket; import core.net.packet.IoBuffer; import core.tools.StringUtils; @@ -32,12 +33,16 @@ public class ChatPacket implements IncomingPacket { sb.append(" => ").append(player.getName()).append(" (owned by ").append(player.getCommunication().getClan().getOwner()).append(")"); String m = sb.toString(); player.getMonitor().log(m.replace(m.charAt(0), ' ').trim(), PlayerMonitor.CLAN_CHAT_LOG); - MSPacketRepository.sendClanMessage(player, message.substring(1)); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendClanMessage(player, message.substring(1)); + } else { + player.getCommunication().getClan().message(player, message.substring(1)); + } return; } player.getMonitor().log(message, PlayerMonitor.PUBLIC_CHAT_LOG); ChatMessage ctx = new ChatMessage(player, message, effects, numChars); - World.getPulser().submit(new Pulse(0, player) { + GameWorld.getPulser().submit(new Pulse(0, player) { @Override public boolean pulse() { player.getUpdateMasks().register(new ChatFlag(ctx)); diff --git a/Server/src/main/java/core/net/packet/in/ChatSettingsPacket.java b/Server/src/main/java/core/net/packet/in/ChatSettingsPacket.java index 24b658bbd..c0fa1b0f7 100644 --- a/Server/src/main/java/core/net/packet/in/ChatSettingsPacket.java +++ b/Server/src/main/java/core/net/packet/in/ChatSettingsPacket.java @@ -1,7 +1,8 @@ package core.net.packet.in; import core.game.node.entity.player.Player; -import core.net.ms.MSPacketRepository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.net.packet.IncomingPacket; import core.net.packet.IoBuffer; @@ -16,7 +17,9 @@ public final class ChatSettingsPacket implements IncomingPacket { int publicSetting = buffer.get(); int privateSetting = buffer.get(); int tradeSetting = buffer.get(); - MSPacketRepository.sendChatSetting(player, publicSetting, privateSetting, tradeSetting); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendChatSetting(player, publicSetting, privateSetting, tradeSetting); + } player.getSettings().updateChatSettings(publicSetting, privateSetting, tradeSetting); } diff --git a/Server/src/main/java/core/net/packet/in/ClanPacketHandler.java b/Server/src/main/java/core/net/packet/in/ClanPacketHandler.java index 4be2fdfdc..5fc8ba5d8 100644 --- a/Server/src/main/java/core/net/packet/in/ClanPacketHandler.java +++ b/Server/src/main/java/core/net/packet/in/ClanPacketHandler.java @@ -2,7 +2,11 @@ package core.net.packet.in; import core.game.node.entity.player.Player; import core.game.system.communication.ClanRank; -import core.net.ms.MSPacketRepository; +import core.game.system.communication.ClanRepository; +import core.game.system.communication.CommunicationInfo; +import rs09.game.world.repository.Repository; +import core.net.amsc.MSPacketRepository; +import core.net.amsc.WorldCommunicator; import core.net.packet.IncomingPacket; import core.net.packet.IoBuffer; import core.tools.StringUtils; @@ -22,16 +26,45 @@ public class ClanPacketHandler implements IncomingPacket { if (nameLong != 0l) { player.getPacketDispatch().sendMessage("Attempting to join channel...:clan:"); } - MSPacketRepository.sendJoinClan(player, name); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendJoinClan(player, name); + return; + } + if (player.getCommunication().getClan() != null) { + player.getCommunication().getClan().leave(player, true); + player.getCommunication().setClan(null); + return; + } + ClanRepository clan = ClanRepository.get(name); + if (clan == null || clan.getName().equals("Chat disabled")) { + player.getPacketDispatch().sendMessage("The channel you tried to join does not exist."); + break; + } + if (clan.enter(player)) { + player.getCommunication().setClan(clan); + } break; case 188: int rank = buffer.getA(); name = StringUtils.longToString(buffer.getLong()); - MSPacketRepository.sendContactUpdate(player.getName(), name, false, false, ClanRank.values()[rank + 1]); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendContactUpdate(player.getName(), name, false, false, ClanRank.values()[rank + 1]); + break; + } + CommunicationInfo.updateClanRank(player, name, ClanRank.values()[rank + 1]); break; case 162: name = StringUtils.longToString(buffer.getLong()); - MSPacketRepository.sendClanKick(player.getName(), name); + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendClanKick(player.getName(), name); + break; + } + clan = player.getCommunication().getClan(); + Player target = Repository.getPlayerByName(name); + if (clan == null || target == null) { + break; + } + clan.kick(player, target); break; } } diff --git a/Server/src/main/java/core/net/packet/in/CommandPacket.java b/Server/src/main/java/core/net/packet/in/CommandPacket.java index 1f3b587e9..96cfed378 100644 --- a/Server/src/main/java/core/net/packet/in/CommandPacket.java +++ b/Server/src/main/java/core/net/packet/in/CommandPacket.java @@ -3,7 +3,7 @@ package core.net.packet.in; import core.game.node.entity.player.Player; import rs09.game.system.command.CommandSystem; import core.game.system.monitor.PlayerMonitor; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.net.packet.IncomingPacket; import core.net.packet.IoBuffer; @@ -19,12 +19,12 @@ public final class CommandPacket implements IncomingPacket { final int data = buffer.get(); if (buffer.toByteBuffer().hasRemaining()) { final String message = ((char) data + buffer.getString()).toLowerCase(); - if (!World.getSettings().isDevMode()) { + if (!GameWorld.getSettings().isDevMode()) { int last = player.getAttribute("commandLast", 0); - if (last > World.getTicks()) { + if (last > GameWorld.getTicks()) { return; } - player.setAttribute("commandLast", World.getTicks() + 1); + player.setAttribute("commandLast", GameWorld.getTicks() + 1); } if (CommandSystem.Companion.getCommandSystem().parse(player, message)) { player.getMonitor().log(message, PlayerMonitor.COMMAND_LOG); diff --git a/Server/src/main/java/core/net/packet/in/InterfaceUseOnPacket.java b/Server/src/main/java/core/net/packet/in/InterfaceUseOnPacket.java index 614ba6595..15197610f 100644 --- a/Server/src/main/java/core/net/packet/in/InterfaceUseOnPacket.java +++ b/Server/src/main/java/core/net/packet/in/InterfaceUseOnPacket.java @@ -14,7 +14,7 @@ import core.game.node.scenery.Scenery; import rs09.game.node.entity.skill.magic.SpellListener; import rs09.game.node.entity.skill.magic.SpellListeners; import rs09.game.node.entity.skill.magic.SpellUtils; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.Location; import core.game.world.map.RegionManager; import rs09.game.world.repository.Repository; @@ -51,7 +51,7 @@ public class InterfaceUseOnPacket implements IncomingPacket { if (groundItem == null || !player.getLocation().withinDistance(groundItem.getLocation())) { break; } - if (player.getAttribute("magic:delay", -1) > World.getTicks()) { + if (player.getAttribute("magic:delay", -1) > GameWorld.getTicks()) { break; } if (player.getZoneMonitor().clickButton(interfaceId, componentId, spell, itemId, opcode)) { @@ -188,7 +188,7 @@ public class InterfaceUseOnPacket implements IncomingPacket { PacketRepository.send(ClearMinimapFlag.class, new PlayerContext(player)); break; } - if (player.getAttribute("magic:delay", -1) > World.getTicks()) { + if (player.getAttribute("magic:delay", -1) > GameWorld.getTicks()) { break; } if(!SpellUtils.getBookFromInterface(interfaceId).equals("none")){ @@ -242,13 +242,13 @@ public class InterfaceUseOnPacket implements IncomingPacket { } switch (interfaceId) { case 430: - if (player.getAttribute("magic:delay", -1) > World.getTicks()) { + if (player.getAttribute("magic:delay", -1) > GameWorld.getTicks()) { break; } MagicSpell.castSpell(player, SpellBookManager.SpellBook.LUNAR, componentId, item); break; case 192: - if (player.getAttribute("magic:delay", -1) > World.getTicks()) { + if (player.getAttribute("magic:delay", -1) > GameWorld.getTicks()) { break; } MagicSpell.castSpell(player, SpellBookManager.SpellBook.MODERN, componentId, item); diff --git a/Server/src/main/java/core/net/packet/out/ContactPackets.java b/Server/src/main/java/core/net/packet/out/ContactPackets.java index c678e2aaa..88a7cc4b4 100644 --- a/Server/src/main/java/core/net/packet/out/ContactPackets.java +++ b/Server/src/main/java/core/net/packet/out/ContactPackets.java @@ -2,12 +2,12 @@ package core.net.packet.out; import core.game.node.entity.player.Player; import core.game.system.communication.Contact; +import core.net.amsc.WorldCommunicator; import core.net.packet.IoBuffer; import core.net.packet.OutgoingPacket; import core.net.packet.PacketHeader; import core.net.packet.context.ContactContext; import core.tools.StringUtils; -import rs09.net.ms.ManagementServer; /** * Handles the contact packet sending. @@ -21,7 +21,7 @@ public final class ContactPackets implements OutgoingPacket { Player player = context.getPlayer(); switch (context.getType()) { case ContactContext.UPDATE_STATE_TYPE: - buffer = new IoBuffer(197).put(ManagementServer.getStateValue()); + buffer = new IoBuffer(197).put(WorldCommunicator.getState().value()); break; case ContactContext.IGNORE_LIST_TYPE: buffer = new IoBuffer(126, PacketHeader.SHORT); diff --git a/Server/src/main/java/core/net/registry/AccountRegister.java b/Server/src/main/java/core/net/registry/AccountRegister.java index 5cd972cba..7fc98a9a5 100644 --- a/Server/src/main/java/core/net/registry/AccountRegister.java +++ b/Server/src/main/java/core/net/registry/AccountRegister.java @@ -11,7 +11,7 @@ import core.net.IoSession; import kotlin.Unit; import rs09.ServerConstants; import rs09.game.system.SystemLogger; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.net.event.LoginReadEvent; import java.nio.ByteBuffer; @@ -165,7 +165,7 @@ public class AccountRegister extends SQLEntryHandler { statement.setInt(5, entry.getCountry()); statement.setTimestamp(6, new Timestamp(System.currentTimeMillis())); - statement.setString(7, World.getSettings().getEnable_default_clan() ? ServerConstants.SERVER_NAME.toLowerCase(): null); + statement.setString(7, GameWorld.getSettings().getEnable_default_clan() ? ServerConstants.SERVER_NAME.toLowerCase(): null); statement.executeUpdate(); SQLManager.close(statement.getConnection()); diff --git a/Server/src/main/java/rs09/game/ai/lumbridge/LumbridgeBotHandler.java b/Server/src/main/java/rs09/game/ai/lumbridge/LumbridgeBotHandler.java index 6392b0415..f49a543d4 100644 --- a/Server/src/main/java/rs09/game/ai/lumbridge/LumbridgeBotHandler.java +++ b/Server/src/main/java/rs09/game/ai/lumbridge/LumbridgeBotHandler.java @@ -1,6 +1,6 @@ package rs09.game.ai.lumbridge; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.tools.RandomFunction; import java.util.concurrent.Executors; @@ -13,7 +13,7 @@ public class LumbridgeBotHandler { public static void immersiveLumbridge() { //Generate a few random bots here and there - System.out.println("[" + World.getSettings().getName() + "]: LumbridgeBotHandler: Initialized dead idlers."); + System.out.println("[" + GameWorld.getSettings().getName() + "]: LumbridgeBotHandler: Initialized dead idlers."); generateDeadIdlers(); } diff --git a/Server/src/main/java/rs09/game/ai/pvp/PVPAIPActions.java b/Server/src/main/java/rs09/game/ai/pvp/PVPAIPActions.java index 851d27fa4..25b6f6830 100644 --- a/Server/src/main/java/rs09/game/ai/pvp/PVPAIPActions.java +++ b/Server/src/main/java/rs09/game/ai/pvp/PVPAIPActions.java @@ -12,7 +12,7 @@ import core.game.node.entity.player.Player; import rs09.game.ai.AIPlayer; import core.game.node.item.Item; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import core.game.world.map.path.Pathfinder; import core.game.world.update.flag.context.ChatMessage; import core.game.world.update.flag.player.ChatFlag; @@ -56,7 +56,7 @@ public class PVPAIPActions { }; bot.getProperties().setRetaliating(true); bot.setAttribute("dead", false); - World.getPulser().submit(new Pulse(1, bot) { + GameWorld.getPulser().submit(new Pulse(1, bot) { int ticks; @Override public boolean pulse() { @@ -131,7 +131,7 @@ public class PVPAIPActions { bot.sendChat("Ahh!"); bot.sendChat("GTFO M8"); bot.sendChat("Someone spec him!"); - World.getPulser().submit(new Pulse(1, bot) { + GameWorld.getPulser().submit(new Pulse(1, bot) { int ticks; @Override public boolean pulse() { diff --git a/Server/src/main/java/rs09/game/ai/resource/ResourceAIPActions.java b/Server/src/main/java/rs09/game/ai/resource/ResourceAIPActions.java index a70266ca7..7999b49e9 100644 --- a/Server/src/main/java/rs09/game/ai/resource/ResourceAIPActions.java +++ b/Server/src/main/java/rs09/game/ai/resource/ResourceAIPActions.java @@ -4,7 +4,7 @@ import core.game.node.entity.skill.gather.SkillingResource; import core.game.node.entity.player.Player; import rs09.game.ai.AIPlayer; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import rs09.game.world.repository.Repository; import java.util.List; @@ -21,7 +21,7 @@ public class ResourceAIPActions { } for (int aip_index = 0; aip_index < resource_players.size(); aip_index++) { final AIPlayer bot = resource_players.get(aip_index); - World.getPulser().submit(new Pulse(1, bot) { + GameWorld.getPulser().submit(new Pulse(1, bot) { int ticks; int ov; @Override diff --git a/Server/src/main/java/rs09/game/ai/resource/ResourceAIPManager.java b/Server/src/main/java/rs09/game/ai/resource/ResourceAIPManager.java index a1549d9f7..3bc015317 100644 --- a/Server/src/main/java/rs09/game/ai/resource/ResourceAIPManager.java +++ b/Server/src/main/java/rs09/game/ai/resource/ResourceAIPManager.java @@ -4,7 +4,7 @@ import core.game.node.entity.player.Player; import rs09.game.ai.resource.task.ResourceTask; import rs09.game.ai.resource.task.ResourceTasks; import core.game.system.task.Pulse; -import rs09.game.world.World; +import rs09.game.world.GameWorld; import java.sql.ResultSet; import java.sql.Statement; @@ -58,7 +58,7 @@ public class ResourceAIPManager { public ResourceAIPManager load(Player player) { try { - Statement statement = World.getDatabaseManager().connections().get("global").createStatement(); + Statement statement = GameWorld.getDatabaseManager().connections().get("global").createStatement(); ResultSet result = statement.executeQuery("SELECT * FROM `members` WHERE username='" + player.getUsername() + "'"); // Results result = new Results(GameWorld.getDatabaseManager().query("global", "SELECT * FROM `members` WHERE username='" + player.getUsername() + "'")); @@ -87,14 +87,14 @@ public class ResourceAIPManager { StringBuilder query = new StringBuilder(); query.append("UPDATE `members` SET `taskName`='" + entry.getKey().getTaskName() + "',`taskTime`='" + entry.getValue() + "' WHERE `username`='" + player.getUsername() + "'"); System.out.println("ResourceAIPManager: " + query.toString()); - World.getDatabaseManager().update("global", query.toString()); + GameWorld.getDatabaseManager().update("global", query.toString()); } return this; } public void pulse(Player player) { - World.getPulser().submit(new Pulse(1) { + GameWorld.getPulser().submit(new Pulse(1) { @Override public boolean pulse() { diff --git a/Server/src/main/kotlin/api/ContentAPI.kt b/Server/src/main/kotlin/api/ContentAPI.kt index 85ed19d3a..308947091 100644 --- a/Server/src/main/kotlin/api/ContentAPI.kt +++ b/Server/src/main/kotlin/api/ContentAPI.kt @@ -40,8 +40,8 @@ import rs09.game.content.dialogue.SkillDialogueHandler import rs09.game.content.global.GlobalKillCounter; import rs09.game.system.SystemLogger import rs09.game.system.config.ItemConfigParser; -import rs09.game.world.World -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld +import rs09.game.world.GameWorld.Pulser import rs09.game.world.repository.Repository /** @@ -397,7 +397,7 @@ fun hasSpaceFor(player: Player, item: Item): Boolean { */ fun getWorldTicks(): Int { - return World.ticks + return GameWorld.ticks } /** @@ -962,7 +962,7 @@ fun visualize(entity: Entity, anim: A, gfx: G){ */ fun submitWorldPulse(pulse: Pulse){ - World.Pulser.submit(pulse) + GameWorld.Pulser.submit(pulse) } /** diff --git a/Server/src/main/kotlin/gui/ServerMonitor.kt b/Server/src/main/kotlin/gui/ServerMonitor.kt index 05932f988..b289ccd8a 100644 --- a/Server/src/main/kotlin/gui/ServerMonitor.kt +++ b/Server/src/main/kotlin/gui/ServerMonitor.kt @@ -1,10 +1,12 @@ package gui -import rs09.game.world.World +import rs09.game.system.SystemLogger +import rs09.game.world.GameWorld import java.awt.BorderLayout import java.awt.Component import java.awt.Dimension import javax.swing.* +import javax.swing.border.Border object ServerMonitor : JFrame("Server Monitor"){ @@ -157,7 +159,7 @@ object ServerMonitor : JFrame("Server Monitor"){ removeList.add(event) } - pulseList.text = World.Pulser.TASKS.toArray().filterNotNull().map { it.javaClass.simpleName + "\n" } + pulseList.text = GameWorld.Pulser.TASKS.toArray().filterNotNull().map { it.javaClass.simpleName + "\n" } .filter { it.replace("\n", "").isNotEmpty() }.sorted().joinToString("") eventQueue.removeAll(removeList) repaint() diff --git a/Server/src/main/kotlin/rs09/Server.kt b/Server/src/main/kotlin/rs09/Server.kt index d1b647ca7..a2e6c41db 100644 --- a/Server/src/main/kotlin/rs09/Server.kt +++ b/Server/src/main/kotlin/rs09/Server.kt @@ -1,72 +1,61 @@ package rs09 -import core.cache.Cache -import core.game.ge.GrandExchangeDatabase -import core.game.interaction.`object`.dmc.DMCHandler -import core.game.node.entity.npc.drop.RareDropTable +import core.game.system.SystemManager +import core.game.system.SystemState import core.game.system.mysql.SQLManager -import core.game.world.map.zone.ZoneBuilder -import core.net.IoEventHandler -import core.net.IoSession -import core.net.ServerSocketConnection -import core.plugin.CorePluginTypes.StartupPlugin +import core.gui.ConsoleFrame +import core.net.NioReactor +import core.net.amsc.WorldCommunicator +import core.tools.TimeStamp +import gui.ServerMonitor import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import rs09.game.content.global.GlobalKillCounter -import rs09.game.node.entity.state.newsys.StateRepository +import rs09.game.content.global.GlobalKillCounter; +import rs09.game.ge.GEAutoStock import rs09.game.system.SystemLogger -import rs09.game.system.config.ConfigParser import rs09.game.system.config.ServerConfigParser -import rs09.game.world.ImmerseWorld -import rs09.game.world.World -import rs09.game.world.callback.CallbackHub +import rs09.game.world.GameWorld import rs09.game.world.repository.Repository -import rs09.game.world.repository.Repository.players -import rs09.net.ms.ManagementServer -import rs09.plugin.PluginManager import java.io.File import java.io.FileWriter -import java.io.IOException import java.lang.management.ManagementFactory import java.lang.management.ThreadMXBean -import java.net.InetSocketAddress -import java.nio.channels.SelectionKey -import java.nio.channels.Selector -import java.nio.channels.ServerSocketChannel -import java.util.concurrent.ExecutorService -import java.util.concurrent.Executors +import java.net.BindException +import java.util.* import kotlin.system.exitProcess + /** - * The primary processing backbone for the server. + * The main class, for those that are unable to read the class' name. + * @author Emperor * @author Ceikry */ object Server { /** - * Various fields used for handling and processing incoming connections + * The time stamp of when the server started running. */ - private var service: ExecutorService? = null - private var channel: ServerSocketConnection? = null - private var eventHandler: IoEventHandler? = null + @JvmField + var startTime: Long = 0 + var lastHeartbeat = System.currentTimeMillis() - /** - * The current server state. - * In BOOTING state, no networking is active. The only thing taking place is the parsing of cache and config data. - * In RUNNING state, networking is active and primary gameplay loops are being ran. - * In SHUTDOWN state, players are being processed and disconnected, and things are being cleaned up. Networking is disabled at this time. - * Nothing occurs in CLOSED state because that indicates the server is DONE running, entirely, and should be shutdown at this time automatically. - */ - var state = ServerState.BOOTING - @JvmStatic - set(value) { - field = value - if(channel != null){ - channel!!.selector.wakeup() //Wakes up the selector and triggers the state update - } - } + @JvmStatic + var running = false + /** + * The NIO reactor. + */ + @JvmStatic + var reactor: NioReactor? = null + + /** + * The main method, in this method we load background utilities such as + * cache and our world, then end with starting networking. + * @param args The arguments cast on runtime. + * @throws Throwable When an exception occurs. + */ + @Throws(Throwable::class) @JvmStatic fun main(args: Array) { if (args.isNotEmpty()) { @@ -76,12 +65,48 @@ object Server { SystemLogger.logInfo("Using config file: ${"worldprops" + File.separator + "default.conf"}") ServerConfigParser.parse("worldprops" + File.separator + "default.conf") } + startTime = System.currentTimeMillis() + val t = TimeStamp() + SystemLogger.logInfo("Initializing Server Store...") + GlobalKillCounter.init() + ServerStore.init() + SystemLogger.logInfo("Initialized ${ServerStore.counter} store files.") + GameWorld.prompt(true) + SQLManager.init() + Runtime.getRuntime().addShutdownHook(ServerConstants.SHUTDOWN_HOOK) + SystemLogger.logInfo("Starting networking...") + try { + reactor = NioReactor.configure(43594 + GameWorld.settings?.worldId!!) + reactor!!.start() + } catch (e: BindException) { + SystemLogger.logErr("Port " + (43594 + GameWorld.settings?.worldId!!) + " is already in use!") + throw e + } + WorldCommunicator.connect() + SystemLogger.logInfo(GameWorld.settings?.name + " flags " + GameWorld.settings?.toString()) + SystemLogger.logInfo(GameWorld.settings?.name + " started in " + t.duration(false, "") + " milliseconds.") + GEAutoStock.autostock() + val scanner = Scanner(System.`in`) + + running = true + GlobalScope.launch { + while(scanner.hasNextLine()){ + val command = scanner.nextLine() + when(command){ + "stop" -> exitProcess(0) + "players" -> System.out.println("Players online: " + (Repository.LOGGED_IN_PLAYERS.size)) + "update" -> SystemManager.flag(SystemState.UPDATING) + "help","commands" -> printCommands() + "restartworker" -> SystemManager.flag(SystemState.ACTIVE) + + } + } + } GlobalScope.launch { delay(20000) - lastHeartbeat = System.currentTimeMillis() - while(true){ - if(System.currentTimeMillis() - lastHeartbeat > 7200 && state == ServerState.RUNNING){ + while(running){ + if(System.currentTimeMillis() - lastHeartbeat > 7200 && running){ SystemLogger.logErr("Triggering reboot due to heartbeat timeout") SystemLogger.logErr("Creating thread dump...") val dump = threadDump(true, true) @@ -95,112 +120,32 @@ object Server { delay(625) } } - - while (state != ServerState.CLOSED) { - when (state) { - - ServerState.BOOTING -> { - val start = System.nanoTime() - Cache.init(ServerConstants.CACHE_PATH) - ConfigParser().prePlugin() - PluginManager.init() - ConfigParser().postPlugin() - ZoneBuilder.init() - ServerStore.init() - RareDropTable.init() - GlobalKillCounter.init() - if(World.settings!!.enable_bots) { - ImmerseWorld.init() - } - CallbackHub.call() - StateRepository.init() - GrandExchangeDatabase.init() - World.STARTUP_PLUGINS.forEach { plugin: StartupPlugin? -> - plugin?.run() - } - System.gc() //Cleanup any abandoned references - SystemLogger.initTradeLogger() //Start up the trade logger - World.clock.start() //Start the world clock, which begins ticking the game - Runtime.getRuntime().addShutdownHook(ServerConstants.SHUTDOWN_HOOK) - SQLManager.init() - state = ServerState.RUNNING - val finish = System.nanoTime() - - SystemLogger.logInfo("Server started in ${(finish - start) / 1000000} ms.") - } - - ServerState.RUNNING -> { - //Start up networking - if(service == null || channel == null || eventHandler == null){ - service = Executors.newSingleThreadScheduledExecutor() - eventHandler = IoEventHandler(Executors.newFixedThreadPool(1)) - - val socket = ServerSocketChannel.open() - val selector = Selector.open() - socket.bind(InetSocketAddress(World.settings!!.worldId + 43594)) - socket.configureBlocking(false) - socket.register(selector, SelectionKey.OP_ACCEPT) - channel = ServerSocketConnection(selector, socket) - ManagementServer.connect() - } - - try { - channel!!.selector.select() //wait for a connection to be ready - } catch (e: IOException) {e.printStackTrace()} - - val keyIterator = channel!!.selector.selectedKeys().iterator() - - while(keyIterator.hasNext()){ - val key = keyIterator.next() - keyIterator.remove() - try { - if (!key.isValid || !key.channel().isOpen) { - key.cancel() - continue - } - - if (key.isConnectable) eventHandler!!.connect(key) - if (key.isAcceptable) eventHandler!!.accept(key, channel!!.selector) - - if (key.isReadable) { - eventHandler!!.read(key) - } else if (key.isWritable) { - eventHandler!!.write(key) - } - } catch (t: Throwable){ - val session = key.attachment() as? IoSession ?: continue - session.disconnect() - if(session.player != null){ - Repository.disconnectionQueue.add(session.player, true) - } - } - } - } - - - ServerState.SHUTDOWN -> { - if(players.any { !it.isArtificial }){ - for(player in players.filter { !it.isArtificial }){ - Repository.disconnectionQueue.add(player, true) - } - Repository.disconnectionQueue.update() - } else { - SystemLogger.flushLogs() - ServerStore.save() - ManagementServer.disconnect() - SystemLogger.logInfo("Shutdown complete.") - state = ServerState.CLOSED - } - } - - else -> break - } - } - - Runtime.getRuntime().removeShutdownHook(ServerConstants.SHUTDOWN_HOOK) - exitProcess(0) } + @JvmStatic + fun heartbeat() { + lastHeartbeat = System.currentTimeMillis() + } + + fun printCommands(){ + println("stop - stop the server (saves all accounts and such)") + println("players - show online player count") + println("update - initiate an update with a countdown visible to players") + println("help, commands - show this") + println("restartworker - Reboots the major update worker in case of a travesty.") + } + + fun autoReconnect() { + /*SystemLogger.log("Attempting autoreconnect of server") + WorldCommunicator.connect()*/ + } + /** + * Gets the startTime. + * @return the startTime + */ + fun getStartTime(): Long { + return startTime + } private fun threadDump(lockedMonitors: Boolean, lockedSynchronizers: Boolean): String? { val threadDump = StringBuffer(System.lineSeparator()) @@ -210,4 +155,12 @@ object Server { } return threadDump.toString() } + + /** + * Sets the bastartTime.ZZ + * @param startTime the startTime to set. + */ + fun setStartTime(startTime: Long) { + Server.startTime = startTime + } } diff --git a/Server/src/main/kotlin/rs09/ServerState.kt b/Server/src/main/kotlin/rs09/ServerState.kt deleted file mode 100644 index d157850e6..000000000 --- a/Server/src/main/kotlin/rs09/ServerState.kt +++ /dev/null @@ -1,8 +0,0 @@ -package rs09 - -enum class ServerState { - BOOTING, - RUNNING, - SHUTDOWN, - CLOSED -} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/ai/general/GeneralBotCreator.kt b/Server/src/main/kotlin/rs09/game/ai/general/GeneralBotCreator.kt index 36a5d3401..78005f894 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/GeneralBotCreator.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/GeneralBotCreator.kt @@ -2,7 +2,7 @@ package rs09.game.ai.general import core.game.node.entity.player.Player import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.tools.RandomFunction import rs09.game.ai.AIPBuilder @@ -15,18 +15,18 @@ class GeneralBotCreator { //org/crandor/net/packet/in/InteractionPacket.java <<< This is a very useful class for learning to code bots constructor(loc: Location?, botScript: Script) { botScript.bot = AIPBuilder.create(loc) - World.Pulser.submit(BotScriptPulse(botScript)) + GameWorld.Pulser.submit(BotScriptPulse(botScript)) } constructor(botScript: Script, bot: AIPlayer?) { botScript.bot = bot - World.Pulser.submit(BotScriptPulse(botScript).also { AIRepository.PulseRepository.add(it) }) + GameWorld.Pulser.submit(BotScriptPulse(botScript).also { AIRepository.PulseRepository.add(it) }) } constructor(botScript: Script, player: Player, isPlayer: Boolean){ botScript.bot = player val pulse = BotScriptPulse(botScript,isPlayer) - World.Pulser.submit(pulse) + GameWorld.Pulser.submit(pulse) player.setAttribute("/save:not_on_highscores",true) player.setAttribute("botting:script",pulse) } @@ -75,7 +75,7 @@ class GeneralBotCreator { inner class TransitionPulse(val script: Script) : Pulse(RandomFunction.random(60,200)){ override fun pulse(): Boolean { - World.Pulser.submit(BotScriptPulse(script.newInstance()).also { AIRepository.PulseRepository.add(it) }) + GameWorld.Pulser.submit(BotScriptPulse(script.newInstance()).also { AIRepository.PulseRepository.add(it) }) return true } } diff --git a/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt b/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt index 08c00b671..735a61b1e 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt @@ -36,7 +36,7 @@ import rs09.game.interaction.InteractionListener import rs09.game.interaction.InteractionListeners import rs09.game.system.SystemLogger import rs09.game.system.config.ItemConfigParser -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.game.world.repository.Repository import rs09.tools.stringtools.colorize import java.util.* @@ -374,9 +374,7 @@ class ScriptAPI(private val bot: Player) { diffX /= 2 diffY /= 2 } - val dest = bot.location.transform(diffX,diffY,0) - bot.pulseManager.run(object : - MovementPulse(bot, dest, Pathfinder.SMART) { + GameWorld.Pulser.submit(object : MovementPulse(bot, bot.location.transform(diffX, diffY, 0), Pathfinder.SMART) { // if this uses bot.pulseManager.run, it will get cleared when the bot dies and then the bot gets stuck in lumby override fun pulse(): Boolean { return true } @@ -552,7 +550,7 @@ class ScriptAPI(private val bot: Player) { bot.visualize(ANIMATIONUP, GRAPHICSUP) bot.impactHandler.disabledTicks = 4 val location = loc - World.Pulser.submit(object : Pulse(4, bot) { + GameWorld.Pulser.submit(object : Pulse(4, bot) { override fun pulse(): Boolean { bot.unlock() bot.properties.teleportLocation = location diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt index f8a1af62c..5930596a4 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/Adventurer.kt @@ -4,10 +4,11 @@ import core.game.interaction.DestinationFlag import core.game.interaction.MovementPulse import core.game.node.scenery.Scenery import core.game.node.entity.combat.CombatStyle +import rs09.game.node.entity.combat.CombatSwingHandler import core.game.node.entity.skill.Skills import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.map.RegionManager import core.game.world.map.zone.ZoneBorders @@ -345,7 +346,7 @@ class Adventurer(val style: CombatStyle): Script() { if (ge != null && !bot.bank.isEmpty) { counter = 0 scriptAPI.randomWalkTo(geloc, 3) - World.Pulser.submit(GEPulse()) + GameWorld.Pulser.submit(GEPulse()) } return } diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt index e462545ae..d8364100c 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt @@ -15,7 +15,7 @@ import rs09.game.ai.AIPlayer import rs09.game.ai.general.ScriptAPI import rs09.game.interaction.InteractionListener import rs09.game.interaction.InteractionListeners -import rs09.game.world.World +import rs09.game.world.GameWorld import kotlin.random.Random @PlayerCompatible @@ -146,7 +146,7 @@ class LobsterCatcher : Script() { bot.visualize(ANIMATION, GRAPHICS) bot.impactHandler.disabledTicks = 4 val location = Location.create(2819, 3437, 0) - World.Pulser.submit(object : Pulse(4, bot) { + GameWorld.Pulser.submit(object : Pulse(4, bot) { override fun pulse(): Boolean { bot.unlock() bot.properties.teleportLocation = location diff --git a/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatState.kt b/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatState.kt index 6d1e3bfa5..a56fc69f0 100644 --- a/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatState.kt +++ b/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatState.kt @@ -11,8 +11,9 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import rs09.game.content.activity.pestcontrol.PestControlHelper.GATE_ENTRIES import rs09.game.content.activity.pestcontrol.PestControlHelper.getMyPestControlSession1 -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.* +import java.util.concurrent.Executors class CombatState(val bot: PestControlTestBot) { @@ -116,7 +117,7 @@ class CombatState(val bot: PestControlTestBot) { diffX /= 2 diffY /= 2 } - World.Pulser.submit(object : MovementPulse(bot, bot.location.transform(diffX, diffY, 0), Pathfinder.SMART) { + GameWorld.Pulser.submit(object : MovementPulse(bot, bot.location.transform(diffX, diffY, 0), Pathfinder.SMART) { override fun pulse(): Boolean { return true } diff --git a/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatStateIntermediate.kt b/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatStateIntermediate.kt index 606f2c87b..70243a700 100644 --- a/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatStateIntermediate.kt +++ b/Server/src/main/kotlin/rs09/game/ai/minigamebots/pestcontrol/CombatStateIntermediate.kt @@ -11,8 +11,9 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import rs09.game.content.activity.pestcontrol.PestControlHelper.GATE_ENTRIES import rs09.game.content.activity.pestcontrol.PestControlHelper.getMyPestControlSession2 -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.* +import java.util.concurrent.Executors class CombatStateIntermediate(val bot: PestControlTestBot2) { private val Random = Random() @@ -116,7 +117,7 @@ class CombatStateIntermediate(val bot: PestControlTestBot2) { diffX /= 2 diffY /= 2 } - World.Pulser.submit(object : MovementPulse(bot, bot.location.transform(diffX, diffY, 0), Pathfinder.SMART) { + GameWorld.Pulser.submit(object : MovementPulse(bot, bot.location.transform(diffX, diffY, 0), Pathfinder.SMART) { override fun pulse(): Boolean { return true } diff --git a/Server/src/main/kotlin/rs09/game/ai/pvmbots/PvMBotsBuilder.kt b/Server/src/main/kotlin/rs09/game/ai/pvmbots/PvMBotsBuilder.kt index 3270e0207..7eb8d151a 100644 --- a/Server/src/main/kotlin/rs09/game/ai/pvmbots/PvMBotsBuilder.kt +++ b/Server/src/main/kotlin/rs09/game/ai/pvmbots/PvMBotsBuilder.kt @@ -5,7 +5,7 @@ import core.game.node.entity.combat.CombatSpell import core.game.node.entity.player.link.SpellBookManager import core.game.node.entity.player.link.appearance.Gender import core.game.node.item.Item -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.tools.RandomFunction import rs09.game.ai.AIPlayer @@ -496,7 +496,7 @@ class PvMBotsBuilder { spawnDragonKiller(new Location(3417, 3561, 1)); //Brimhaven dragons spawnDragonKiller(new Location(2704, 9450)); - spawnDragonKiller(new Location(2704, 9450));*/println("[" + World.settings?.name + "]: PvMBotsBuilder: Spawned " + botsSpawned + " bots.") + spawnDragonKiller(new Location(2704, 9450));*/println("[" + GameWorld.settings?.name + "]: PvMBotsBuilder: Spawned " + botsSpawned + " bots.") } } diff --git a/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUBeaconHandler.kt b/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUBeaconHandler.kt index 4a8ce9e11..4f9b76d29 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUBeaconHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUBeaconHandler.kt @@ -9,7 +9,7 @@ import core.game.system.task.Pulse import core.game.world.update.flag.context.Animation import org.rs09.consts.Items import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld private val VALID_LOGS = intArrayOf(Items.LOGS_1511, Items.OAK_LOGS_1521,Items.WILLOW_LOGS_1519,Items.MAPLE_LOGS_1517,Items.YEW_LOGS_1515,Items.MAGIC_LOGS_1513) private val FILL_ANIM = Animation(9136) @@ -94,7 +94,7 @@ class AFUBeaconListeners : InteractionListener(){ } } - World.Pulser.submit(object : Pulse() { + GameWorld.Pulser.submit(object : Pulse() { var counter = 0 override fun pulse(): Boolean { when (counter++) { @@ -125,7 +125,7 @@ class AFUBeaconListeners : InteractionListener(){ if(player.inventory.contains(Items.TINDERBOX_590,1)){ player.lock() - World.Pulser.submit(object: Pulse(){ + GameWorld.Pulser.submit(object: Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ @@ -173,7 +173,7 @@ class AFUBeaconListeners : InteractionListener(){ val logs = getLogs(player, 5) if (logs.id != 0 && player.inventory.remove(logs)) { player.lock() - World.Pulser.submit(object: Pulse(){ + GameWorld.Pulser.submit(object: Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUSession.kt b/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUSession.kt index 39c4d12b5..a61e618d7 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUSession.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/allfiredup/AFUSession.kt @@ -3,7 +3,7 @@ package rs09.game.content.activity.allfiredup import core.game.node.entity.player.Player import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.plugin.Plugin import org.rs09.consts.Items import rs09.tools.stringtools.colorize @@ -20,7 +20,7 @@ class AFUSession(val player: Player) { fun init() { isActive = true - World.Pulser.submit(object: Pulse(){ + GameWorld.Pulser.submit(object: Pulse(){ override fun pulse(): Boolean { player.setAttribute("afu-pulse",this) beaconTimers.forEach {timer -> diff --git a/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt b/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt index 059cad2dd..870fa7e33 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt @@ -321,40 +321,60 @@ class BlastFurnaceListeners : InteractionListener() { /**The sequel to Limp Bizkits hit single, "Fix shit"*/ - on(brokenPotPipe,SCENERY,"repair"){ player, node -> - if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - rewardXP(player,Skills.CRAFTING, 50.0) - BlastFurnace.potPipeBroken = false + on(brokenPotPipe,SCENERY,"repair"){ player, _ -> + if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + if(inInventory(player,Items.HAMMER_2347,1)) { + rewardXP(player, Skills.CRAFTING, 50.0) + BlastFurnace.potPipeBroken = false + } + else { + sendMessage(player, "I need a hammer to do this!") + } }else{ sendDialogue(player,"I need 30 Craft in order to do this") } return@on true } - on(brokenPumpPipe,SCENERY, "repair"){ player, node -> - if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - rewardXP(player,Skills.CRAFTING, 50.0) - BlastFurnace.pumpPipeBroken = false + on(brokenPumpPipe,SCENERY, "repair"){ player, _ -> + if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + if(inInventory(player,Items.HAMMER_2347,1)) { + rewardXP(player, Skills.CRAFTING, 50.0) + BlastFurnace.pumpPipeBroken = false + } + else { + sendMessage(player, "I need a hammer to do this!") + } }else{ sendDialogue(player,"I need 30 Craft in order to do this") } return@on true } - on(brokenBelt,SCENERY,"repair"){ player, node -> - if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - rewardXP(player,Skills.CRAFTING, 50.0) - BlastFurnace.beltBroken = false + on(brokenBelt,SCENERY,"repair"){ player, _ -> + if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + if(inInventory(player,Items.HAMMER_2347,1)) { + rewardXP(player, Skills.CRAFTING, 50.0) + BlastFurnace.beltBroken = false + } + else { + sendMessage(player, "I need a hammer to do this!") + } }else{ sendDialogue(player,"I need 30 Craft in order to do this") } return@on true } - on(brokenCog,SCENERY,"repair"){ player, node -> - if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - rewardXP(player,Skills.CRAFTING, 50.0) - BlastFurnace.cogBroken = false + on(brokenCog,SCENERY,"repair"){ player, _ -> + if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + if(inInventory(player,Items.HAMMER_2347,1)) { + rewardXP(player, Skills.CRAFTING, 50.0) + BlastFurnace.cogBroken = false + } + else { + sendMessage(player, "I need a hammer to do this!") + } }else{ sendDialogue(player,"I need 30 Craft in order to do this") } diff --git a/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerActivity.kt b/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerActivity.kt index b3f2347ee..c2216e843 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerActivity.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerActivity.kt @@ -2,7 +2,7 @@ package rs09.game.content.activity.fishingtrawler import core.game.node.entity.player.Player import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.map.build.DynamicRegion import core.game.world.map.zone.ZoneRestriction @@ -17,11 +17,11 @@ import rs09.tools.stringtools.colorize * Handles the fishing trawler "waiting room" * @author Ceikry */ -private val WAIT_TIME = if(World.settings?.isDevMode == true) 10 else 203 +private val WAIT_TIME = if(GameWorld.settings?.isDevMode == true) 10 else 203 private val waitingPlayers = ArrayList() private val sessions = ArrayList() private var activity: FishingTrawlerActivity? = null -private var nextStart = World.ticks + WAIT_TIME +private var nextStart = GameWorld.ticks + WAIT_TIME @Initializable class FishingTrawlerActivity : ActivityPlugin("fishing trawler",false,false,true,ZoneRestriction.CANNON,ZoneRestriction.FIRES,ZoneRestriction.FOLLOWERS,ZoneRestriction.RANDOM_EVENTS) { @@ -29,20 +29,20 @@ class FishingTrawlerActivity : ActivityPlugin("fishing trawler",false,false,true activity = this } override fun configure() { - World.Pulser.submit( + GameWorld.Pulser.submit( object : Pulse(1){ override fun pulse(): Boolean { - if((nextStart - World.ticks) % 100 == 0){ + if((nextStart - GameWorld.ticks) % 100 == 0){ for(player in waitingPlayers) { - player.sendMessage (colorize("%R${ticksToSeconds(nextStart - World.ticks) / 60} minutes until next game.")) + player.sendMessage (colorize("%R${ticksToSeconds(nextStart - GameWorld.ticks) / 60} minutes until next game.")) } } - if(World.ticks >= nextStart && waitingPlayers.isNotEmpty()){ + if(GameWorld.ticks >= nextStart && waitingPlayers.isNotEmpty()){ val session = FishingTrawlerSession(DynamicRegion.create(8011), activity!!) session.start(waitingPlayers) sessions.add(session) waitingPlayers.clear() - nextStart = World.ticks + WAIT_TIME + nextStart = GameWorld.ticks + WAIT_TIME } sessions.removeIf { session -> if(!session.isActive && session.inactiveTicks >= 100){ @@ -68,7 +68,7 @@ class FishingTrawlerActivity : ActivityPlugin("fishing trawler",false,false,true fun addPlayer(player: Player){ if(waitingPlayers.isEmpty()) { - nextStart = World.ticks + WAIT_TIME + nextStart = GameWorld.ticks + WAIT_TIME player.dialogueInterpreter.sendDialogue("Trawler will leave in 2 minutes.","If you have a team get them on board now!") } waitingPlayers.add(player) diff --git a/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerSession.kt b/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerSession.kt index 66991e96b..939467250 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerSession.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/fishingtrawler/FishingTrawlerSession.kt @@ -8,7 +8,7 @@ import core.game.node.entity.player.Player import core.game.node.entity.state.EntityState import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.map.build.DynamicRegion import core.game.world.update.flag.context.Animation @@ -64,7 +64,7 @@ class FishingTrawlerSession(var region: DynamicRegion, val activity: FishingTraw initHoles() initMurphy(29,25) initGulls() - World.Pulser.submit(TrawlerPulse(this)) + GameWorld.Pulser.submit(TrawlerPulse(this)) for(player in pl){ player.interfaceManager.openOverlay(Component(OVERLAY_ID)) player.interfaceManager.open(Component(TUTORIAL_ID)) @@ -78,7 +78,7 @@ class FishingTrawlerSession(var region: DynamicRegion, val activity: FishingTraw fun swapBoatType(fromRegion: Int){ val newRegion = DynamicRegion.create(fromRegion) - World.Pulser.submit(SwapBoatPulse(players,newRegion)) + GameWorld.Pulser.submit(SwapBoatPulse(players,newRegion)) } class SwapBoatPulse(val playerList: ArrayList,val newRegion: DynamicRegion) : Pulse(3){ diff --git a/Server/src/main/kotlin/rs09/game/content/activity/fog/ReggieDialogue.kt b/Server/src/main/kotlin/rs09/game/content/activity/fog/ReggieDialogue.kt index 347661c22..5c216021f 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/fog/ReggieDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/fog/ReggieDialogue.kt @@ -3,15 +3,16 @@ package rs09.game.content.activity.fog import core.game.component.Component import core.game.node.entity.player.Player import core.game.node.item.Item -import rs09.game.world.World +import rs09.game.world.GameWorld import core.plugin.Initializable import core.game.content.dialogue.DialoguePlugin +import org.rs09.consts.Components import rs09.game.interaction.FOGRewardsInterface @Initializable class ReggieDialogue(player: Player? = null) : DialoguePlugin(player){ override fun open(vararg args: Any?): Boolean { - if(World.settings?.allow_token_purchase == true){ + if(GameWorld.settings?.allow_token_purchase == true){ options("Can I see your shop?","Nevermind.","Can I buy some tokens?") } else { options("Can I see your shop?","Nevermind.") diff --git a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/GCRewardTokenHandler.kt b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/GCRewardTokenHandler.kt index 1cde7e7a6..197421d14 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/GCRewardTokenHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/GCRewardTokenHandler.kt @@ -11,7 +11,7 @@ import core.plugin.Initializable import core.plugin.Plugin import core.tools.RandomFunction import org.rs09.consts.Items -import rs09.game.world.World +import rs09.game.world.GameWorld val gnomeItems = arrayOf( Items.FRUIT_BATTA_2277, Items.TOAD_BATTA_2255, Items.CHEESE_PLUSTOM_BATTA_2259, Items.WORM_BATTA_2253, Items.VEGETABLE_BATTA_2281, @@ -87,7 +87,7 @@ class GCRewardTokenHandler : OptionHandler() { } player.dialogueInterpreter.sendDialogue("You put in for delivery of $amount items. Wait a bit...") - World.Pulser.submit(DeliveryPulse(player,itemList)) + GameWorld.Pulser.submit(DeliveryPulse(player,itemList)) player.setAttribute("/save:$GC_BASE_ATTRIBUTE:$GC_REDEEMABLE_FOOD", playerCharges - amount) } diff --git a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/battas/GnomeBattaCooker.kt b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/battas/GnomeBattaCooker.kt index 5db8fd935..b548a53a8 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/battas/GnomeBattaCooker.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/battas/GnomeBattaCooker.kt @@ -10,7 +10,7 @@ import core.game.world.update.flag.context.Animation import core.plugin.Initializable import core.plugin.Plugin import org.rs09.consts.Items -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Handles cook options for battas @@ -43,7 +43,7 @@ class GnomeBattaCooker : UseWithHandler(Items.RAW_BATTA_2250,9478,9480,9482,9483 } fun cook(player: Player, raw: Item, product: Item){ - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/bowls/GnomeBowlCooker.kt b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/bowls/GnomeBowlCooker.kt index 0c3c3fd72..5dbd940db 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/bowls/GnomeBowlCooker.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/bowls/GnomeBowlCooker.kt @@ -10,7 +10,7 @@ import core.game.world.update.flag.context.Animation import core.plugin.Initializable import core.plugin.Plugin import org.rs09.consts.Items -import rs09.game.world.World +import rs09.game.world.GameWorld @Initializable class GnomeBowlCooker : UseWithHandler(Items.RAW_GNOMEBOWL_2178,9558,9559,9561,9563) { @@ -38,7 +38,7 @@ class GnomeBowlCooker : UseWithHandler(Items.RAW_GNOMEBOWL_2178,9558,9559,9561,9 } fun cook(player: Player, raw: Item, product: Item){ - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/cocktails/CocktailCooker.kt b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/cocktails/CocktailCooker.kt index 58be73b10..8c65cfa50 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/cocktails/CocktailCooker.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/cocktails/CocktailCooker.kt @@ -5,7 +5,7 @@ import core.game.interaction.UseWithHandler import core.game.node.entity.player.Player import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.update.flag.context.Animation import core.plugin.Initializable import core.plugin.Plugin @@ -34,7 +34,7 @@ class CocktailCooker : UseWithHandler(UNCOOKED_CHOC_SAT, UNCOOKED_DRUN_DRA) { } private fun cook(drink: CookedDrinks, player: Player, raw: Item){ - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/crunchies/GnomeCrunchyCooker.kt b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/crunchies/GnomeCrunchyCooker.kt index 30a275a84..75d4958e6 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/crunchies/GnomeCrunchyCooker.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/gnomecooking/crunchies/GnomeCrunchyCooker.kt @@ -5,7 +5,7 @@ import core.game.interaction.UseWithHandler import core.game.node.entity.player.Player import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.update.flag.context.Animation import core.plugin.Initializable import core.plugin.Plugin @@ -46,7 +46,7 @@ class GnomeCrunchyCooker : UseWithHandler(9577,9579,9581,9583, 2202){ } private fun cook(product: Int, raw: Item, player: Player){ - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/activity/pyramidplunder/PlunderSession.kt b/Server/src/main/kotlin/rs09/game/content/activity/pyramidplunder/PlunderSession.kt index 51e11b81f..1d223ce74 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/pyramidplunder/PlunderSession.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/pyramidplunder/PlunderSession.kt @@ -6,7 +6,7 @@ import core.game.system.task.Pulse import core.game.world.map.Location import core.tools.RandomFunction import org.rs09.consts.Components -import rs09.game.world.World +import rs09.game.world.GameWorld class PlunderSession(val player: Player) { var door1Open: Boolean = false @@ -24,7 +24,7 @@ class PlunderSession(val player: Player) { fun init(){ player.setAttribute("plunder-session",this) - World.Pulser.submit(PlunderPulse(player)) + GameWorld.Pulser.submit(PlunderPulse(player)) player.interfaceManager.openOverlay(Component(Components.NTK_OVERLAY_428)) isActive = true } diff --git a/Server/src/main/kotlin/rs09/game/content/activity/vinesweeper/Vinesweeper.kt b/Server/src/main/kotlin/rs09/game/content/activity/vinesweeper/Vinesweeper.kt index 01d7af1ce..4af905440 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/vinesweeper/Vinesweeper.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/vinesweeper/Vinesweeper.kt @@ -21,9 +21,10 @@ import core.game.world.update.flag.context.Graphics; import core.plugin.Initializable import core.tools.RandomFunction import org.rs09.consts.Items +import rs09.game.content.dialogue.DialogueFile import rs09.game.interaction.InteractionListener import rs09.game.interaction.InterfaceListener -import rs09.game.world.World; +import rs09.game.world.GameWorld; val AVACH_NIMPORTO_LOC = Location.create(1637, 4709) val PORTAL = 29534 @@ -108,7 +109,7 @@ object VinesweeperTeleport { player.audioManager.send(125) Projectile.create(npc, player, 109).send() npc.sendChat("Avach nimporto!") - World.Pulser.submit(object : Pulse(1) { + GameWorld.Pulser.submit(object : Pulse(1) { var counter = 0 override fun pulse(): Boolean { when (counter++) { @@ -206,7 +207,7 @@ class VinesweeperListener : InteractionListener() { on(HOLES, SCENERY, "inspect") { player, node -> player.animate(Animation(8710)) player.lock(5) - World.Pulser.submit(object : Pulse(5) { + GameWorld.Pulser.submit(object : Pulse(5) { override fun pulse(): Boolean { val msg = when(RandomFunction.random(0, 7)) { 0 -> "You don't see anything interesting. You can't be sure if there's a seed there or not." @@ -247,10 +248,10 @@ class VinesweeperListener : InteractionListener() { npc.sendChat("Squeak!") npc.lock(3) player.skills.addExperience(Skills.HUNTER, 30.0) - World.Pulser.submit(object : Pulse(3) { + GameWorld.Pulser.submit(object : Pulse(3) { override fun pulse(): Boolean { //npc.setInvisible(true) - npc.respawnTick = World.ticks + 50 + npc.respawnTick = GameWorld.ticks + 50 npc.location = npc.properties.spawnLocation return true } @@ -324,7 +325,7 @@ class VinesweeperNPC : AbstractNPC { } else { sendChat("Hmm. Looks like there's a plant here.") lock(3) - World.Pulser.submit(object : Pulse(3) { + GameWorld.Pulser.submit(object : Pulse(3) { override fun pulse(): Boolean { sendChat("Gracious me! This one's dead") SceneryBuilder.replace(scenery, scenery.transform(HOLES[0])) @@ -355,7 +356,7 @@ class VinesweeperNPC : AbstractNPC { animate(Animation(451)) if(SEED_LOCS.contains(dest.loc)) { val npc = this - World.Pulser.submit(object : Pulse(3) { + GameWorld.Pulser.submit(object : Pulse(3) { override fun pulse(): Boolean { sendChat("Ah! A seed. Points for everyone near me!") val level = dest.player.skills.getStaticLevel(Skills.FARMING) @@ -378,7 +379,7 @@ class VinesweeperNPC : AbstractNPC { SceneryBuilder.replace(scenery, scenery.transform(HOLES[0])) var i = 0 val lines = arrayOf("Hmm, no seeds planted here, I'm afraid.", "I'll have to keep this 'ere flag. Sorry.") - World.Pulser.submit(object : Pulse(3) { + GameWorld.Pulser.submit(object : Pulse(3) { override fun pulse(): Boolean { sendChat(lines[i++]) return i >= lines.size diff --git a/Server/src/main/kotlin/rs09/game/content/ame/RandomEventManager.kt b/Server/src/main/kotlin/rs09/game/content/ame/RandomEventManager.kt index 0b6782d00..7ace936e6 100644 --- a/Server/src/main/kotlin/rs09/game/content/ame/RandomEventManager.kt +++ b/Server/src/main/kotlin/rs09/game/content/ame/RandomEventManager.kt @@ -3,7 +3,7 @@ package rs09.game.content.ame import core.game.node.entity.player.Player import core.game.world.map.zone.ZoneRestriction import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld private const val DELAY_TICKS = 6000 //60 minutes class RandomEventManager(val player: Player) { @@ -12,28 +12,28 @@ class RandomEventManager(val player: Player) { fun tick(){ if(player.isArtificial) return - if(World.ticks > nextSpawn) fireEvent() + if(GameWorld.ticks > nextSpawn) fireEvent() } fun fireEvent(){ if(player.zoneMonitor.isRestricted(ZoneRestriction.RANDOM_EVENTS)){ - nextSpawn = World.ticks + 3000 + nextSpawn = GameWorld.ticks + 3000 return } val ame = RandomEvents.values().random() event = ame.npc.create(player,ame.loot,ame.type) if(event!!.spawnLocation == null){ - nextSpawn = World.ticks + 3000 + nextSpawn = GameWorld.ticks + 3000 return } event!!.init() - nextSpawn = World.ticks + DELAY_TICKS + nextSpawn = GameWorld.ticks + DELAY_TICKS SystemLogger.logRE("Fired ${event!!.name} for ${player.username}") } fun init(){ if(player.isArtificial) return - nextSpawn = World.ticks + DELAY_TICKS + nextSpawn = GameWorld.ticks + DELAY_TICKS SystemLogger.logRE("Initialized REManager for ${player.username}") } } \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt b/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt index a28bdb501..9719b05ba 100644 --- a/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt +++ b/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt @@ -5,12 +5,14 @@ import core.game.interaction.MovementPulse import core.game.node.entity.npc.NPC import core.game.node.entity.player.Player import core.game.node.item.Item +import core.game.system.task.Pulse import core.game.world.map.Location import core.game.world.map.RegionManager import core.game.world.map.path.Pathfinder import core.game.world.update.flag.context.Graphics import rs09.game.content.ame.events.MysteriousOldManNPC import rs09.game.content.global.WeightBasedTable +import rs09.game.world.GameWorld.Pulser import rs09.tools.secondsToTicks import kotlin.random.Random import kotlin.reflect.full.createInstance diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/AluftGianneSnrDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/AluftGianneSnrDialogue.kt index 595fb91f2..6d57baf8c 100644 --- a/Server/src/main/kotlin/rs09/game/content/dialogue/AluftGianneSnrDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/AluftGianneSnrDialogue.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.rs09.consts.Items import rs09.game.content.activity.gnomecooking.* -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.tools.stringtools.colorize import java.util.concurrent.TimeUnit @@ -161,7 +161,7 @@ class AluftGianneSnrDialogue(player: Player? = null) : DialoguePlugin(player) { player.setAttribute("$GC_BASE_ATTRIBUTE:$GC_JOB_ORDINAL", job.ordinal) player.setAttribute("$GC_BASE_ATTRIBUTE:$GC_NEEDED_ITEM", item) player.dialogueInterpreter.sendDialogue("I need to deliver a ${item.name.toLowerCase()} to ${NPC(job.npc_id).name.toLowerCase()},", "who is ${job.tip}") - World.Pulser.submit(GnomeRestaurantPulse(player, if (level == GnomeTipper.LEVEL.HARD) 11L else 6L)) + GameWorld.Pulser.submit(GnomeRestaurantPulse(player, if (level == GnomeTipper.LEVEL.HARD) 11L else 6L)) } } } diff --git a/Server/src/main/kotlin/rs09/game/content/global/action/EquipHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/action/EquipHandler.kt index 6e2ee1a49..691893fb3 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/action/EquipHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/action/EquipHandler.kt @@ -7,12 +7,14 @@ import core.game.node.entity.player.Player import core.game.node.entity.player.link.audio.Audio import core.game.node.entity.player.link.diary.DiaryType import core.game.node.entity.skill.slayer.SlayerEquipmentFlags +import core.game.system.task.Pulse import core.game.world.map.zone.ZoneBorders import core.plugin.Plugin import org.rs09.consts.Items import rs09.game.interaction.InteractionListener import rs09.game.interaction.InteractionListeners import rs09.game.system.config.ItemConfigParser +import rs09.game.world.GameWorld /** * Represents the equipment equipping handler plugin. diff --git a/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt index b48d029d2..c34ec6fde 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt @@ -15,7 +15,7 @@ import org.rs09.consts.Items import rs09.game.ai.AIRepository.Companion.getItems import rs09.game.system.SystemLogger import rs09.game.system.config.GroundSpawnLoader -import rs09.game.world.World +import rs09.game.world.GameWorld /** * A class used to handle the picking up of ground items. @@ -38,7 +38,7 @@ object PickupHandler { player.packetDispatch.sendMessage("Too late!") return true } - if (player.getAttribute("droppedItem:" + item.id, 0) > World.ticks) { //Splinter + if (player.getAttribute("droppedItem:" + item.id, 0) > GameWorld.ticks) { //Splinter SystemLogger.logAlert("$player tried to do the drop & quick pick-up Ground Item dupe.") return true } diff --git a/Server/src/main/kotlin/rs09/game/content/global/travel/EssenceTeleport.kt b/Server/src/main/kotlin/rs09/game/content/global/travel/EssenceTeleport.kt index e4bbd1a35..490477409 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/travel/EssenceTeleport.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/travel/EssenceTeleport.kt @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player import core.game.node.entity.player.link.diary.DiaryType import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics @@ -41,7 +41,7 @@ object EssenceTeleport { player.audioManager.send(125) Projectile.create(npc, player, 109).send() npc.sendChat("Senventior Disthinte Molesko!") - World.Pulser.submit(object : Pulse(1) { + GameWorld.Pulser.submit(object : Pulse(1) { var counter = 0 override fun pulse(): Boolean { when (counter++) { diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/easter/EasterEvent.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/easter/EasterEvent.kt index aa626e97c..cc634e9ed 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/easter/EasterEvent.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/easter/EasterEvent.kt @@ -11,7 +11,7 @@ import org.rs09.consts.Items import org.rs09.consts.NPCs import rs09.game.content.global.worldevents.WorldEvent import rs09.game.system.config.GroundSpawnLoader -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.game.world.repository.Repository import rs09.tools.secondsToTicks import java.util.* @@ -77,12 +77,12 @@ class EasterEvent : WorldEvent("easter") { bunny.init() } easterBunny.init() - World.settings?.message_model = 715 - World.settings?.message_string = "Happy Easter!" - World.Pulser.submit(object : Pulse(){ + GameWorld.settings?.message_model = 715 + GameWorld.settings?.message_string = "Happy Easter!" + GameWorld.Pulser.submit(object : Pulse(){ override fun pulse(): Boolean { if(delay == 1){ - delay = secondsToTicks(if(World.settings?.isDevMode == true) 60 else 3600) + delay = secondsToTicks(if(GameWorld.settings?.isDevMode == true) 60 else 3600) } for(item in spawnedItems){ GroundItemManager.destroy(item) diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt index a3362c173..5cf7e1406 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/SimpleHalloweenEvent.kt @@ -1,8 +1,11 @@ package rs09.game.content.global.worldevents.holiday.halloween +import core.game.node.entity.npc.NPC +import core.game.world.map.Location import rs09.game.content.global.worldevents.PluginSet import rs09.game.content.global.worldevents.WorldEvent -import rs09.game.world.World +import rs09.game.world.GameWorld +import java.util.* class SimpleHalloweenEvent : WorldEvent("hween"){ override fun checkActive(): Boolean { @@ -14,8 +17,8 @@ class SimpleHalloweenEvent : WorldEvent("hween"){ GrimDialogue() ) super.initialize() - World.settings?.message_model = 800 - World.settings?.message_string = "A mysterious figure has appeared in Draynor! You should go investigate!" + GameWorld.settings?.message_model = 800 + GameWorld.settings?.message_string = "A mysterious figure has appeared in Draynor! You should go investigate!" log("Initialized.") } } \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/TrickOrTreatHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/TrickOrTreatHandler.kt index 00071e328..2fcab9dfa 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/TrickOrTreatHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/halloween/TrickOrTreatHandler.kt @@ -16,7 +16,7 @@ import rs09.ServerStore.getInt import rs09.ServerStore.getString import rs09.game.content.dialogue.DialogueFile import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.tools.END_DIALOGUE class TrickOrTreatHandler : InteractionListener() { @@ -48,7 +48,7 @@ class TrickOrTreatHandler : InteractionListener() { stage = END_DIALOGUE } - 10 -> npcl(FacialExpression.EVIL_LAUGH, "I CHOOSE TRICK!").also { player.lock(); World.submit(object : Pulse() { + 10 -> npcl(FacialExpression.EVIL_LAUGH, "I CHOOSE TRICK!").also { player.lock(); GameWorld.submit(object : Pulse() { var counter = 0 override fun pulse(): Boolean { //gfx 1898 diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/LarryHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/LarryHandler.kt index c55998200..e9d72ae14 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/LarryHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/LarryHandler.kt @@ -7,6 +7,7 @@ import core.game.content.dialogue.FacialExpression import core.game.node.entity.player.Player import core.game.node.item.Item import core.game.system.task.Pulse +import rs09.game.world.GameWorld import rs09.tools.END_DIALOGUE class LarryHandler(player: Player? = null) : DialoguePlugin(player){ diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinHNSEvent.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinHNSEvent.kt index dcd397758..38f68a8da 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinHNSEvent.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinHNSEvent.kt @@ -1,15 +1,17 @@ package rs09.game.content.global.worldevents.penguinhns +import core.game.system.task.Pulse import org.json.simple.JSONObject import rs09.ServerStore import rs09.game.content.global.worldevents.PluginSet import rs09.game.content.global.worldevents.WorldEvent -import rs09.game.world.World +import rs09.game.content.global.worldevents.WorldEvents +import rs09.game.world.GameWorld class PenguinHNSEvent : WorldEvent("penguin-hns"){ val manager = PenguinManager() var lastTrigger: Int = 0 - var tickDelay = if(World.settings?.isDevMode == true) 100 else 100000 + var tickDelay = if(GameWorld.settings?.isDevMode == true) 100 else 100000 override fun checkActive(): Boolean { return true //this event is always active. @@ -32,7 +34,7 @@ class PenguinHNSEvent : WorldEvent("penguin-hns"){ override fun fireEvent() { log("Loading penguins...") manager.rebuildVars() - lastTrigger = World.ticks + lastTrigger = GameWorld.ticks log("Penguins loaded.") } diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinSpyingHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinSpyingHandler.kt index e9cefd18d..a2fbe7656 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinSpyingHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/penguinhns/PenguinSpyingHandler.kt @@ -1,10 +1,16 @@ package rs09.game.content.global.worldevents.penguinhns +import core.game.interaction.DestinationFlag +import core.game.interaction.MovementPulse +import core.game.interaction.Option import core.game.node.entity.npc.NPC import core.game.node.entity.player.Player import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.update.flag.context.Animation +import core.plugin.Plugin +import core.game.content.quest.PluginInteraction +import core.game.content.quest.PluginInteractionManager import rs09.game.interaction.InteractionListener class PenguinSpyingHandler : InteractionListener(){ @@ -15,7 +21,7 @@ class PenguinSpyingHandler : InteractionListener(){ if(PenguinManager.hasTagged(player, npc.location)){ player.sendMessage("You've already tagged this penguin.") } else { - World.submit(SpyPulse(player, npc)) + GameWorld.submit(SpyPulse(player, npc)) } return@on true } diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarEvent.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarEvent.kt index eb30c5bcf..bbfe2df56 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarEvent.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarEvent.kt @@ -9,7 +9,7 @@ import rs09.ServerStore import rs09.game.content.global.worldevents.PluginSet import rs09.game.content.global.worldevents.WorldEvent import rs09.game.content.global.worldevents.WorldEvents -import rs09.game.world.World +import rs09.game.world.GameWorld /** @@ -19,7 +19,7 @@ import rs09.game.world.World */ class ShootingStarEvent : WorldEvent("shooting-stars") { val star = ShootingStar() - val tickDelay = if(World.settings?.isDevMode == true) 200 else 25000 + val tickDelay = if(GameWorld.settings?.isDevMode == true) 200 else 25000 override fun initialize() { @@ -32,7 +32,7 @@ class ShootingStarEvent : WorldEvent("shooting-stars") { ShootingStarLogin() ) super.initialize() - World.Pulser.submit(StarPulse()) + GameWorld.Pulser.submit(StarPulse()) log("Shooting Star event has been initialized.") } diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarMiningPulse.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarMiningPulse.kt index adcd4a19f..5d3f6b27a 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarMiningPulse.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/shootingstar/ShootingStarMiningPulse.kt @@ -10,7 +10,7 @@ import core.game.node.entity.skill.gather.SkillingTool import core.game.node.item.Item import core.tools.RandomFunction import org.rs09.consts.Items -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.game.world.repository.Repository import rs09.tools.stringtools.colorize @@ -81,7 +81,7 @@ class ShootingStarMiningPulse(player: Player?, node: Scenery?, val star: Shootin if (!checkReward()) { return false } - if (World.settings?.isDevMode == true) { + if (GameWorld.settings?.isDevMode == true) { star.dustLeft = 1 } star.decDust() diff --git a/Server/src/main/kotlin/rs09/game/content/quest/free/dragonslayer/NedDialogue.kt b/Server/src/main/kotlin/rs09/game/content/quest/free/dragonslayer/NedDialogue.kt index 258587e1e..3e1c93f67 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/free/dragonslayer/NedDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/free/dragonslayer/NedDialogue.kt @@ -8,7 +8,7 @@ import core.game.node.entity.player.link.diary.DiaryType import core.game.node.item.GroundItemManager import core.game.node.item.Item import rs09.game.content.quest.free.princealirescue.NedPARDialogue -import rs09.game.world.World.settings +import rs09.game.world.GameWorld.settings import rs09.tools.DIALOGUE_INITIAL_OPTIONS_HANDLE import rs09.tools.END_DIALOGUE diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/PerfectGoldSmeltingHandler.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/PerfectGoldSmeltingHandler.kt index d5afd7581..901a78caf 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/PerfectGoldSmeltingHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/PerfectGoldSmeltingHandler.kt @@ -6,10 +6,10 @@ import core.game.interaction.UseWithHandler import core.game.node.entity.skill.Skills import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World.Pulser import core.plugin.Initializable import core.plugin.Plugin import org.rs09.consts.Items +import rs09.game.world.GameWorld.Pulser @Initializable diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/HunterTalismanListener.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/HunterTalismanListener.kt index 114c58bd8..a52a0d5ec 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/HunterTalismanListener.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/HunterTalismanListener.kt @@ -6,7 +6,7 @@ import core.game.system.task.Pulse import core.game.world.map.Location import org.rs09.consts.Items import rs09.game.interaction.InteractionListener -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser import kotlin.math.abs import kotlin.math.atan2 diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/ManniDialogue.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/ManniDialogue.kt index 3eedb697c..c20afe869 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/ManniDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/ManniDialogue.kt @@ -3,9 +3,10 @@ package rs09.game.content.quest.members.thefremenniktrials import core.game.node.entity.impl.Animator import core.game.node.entity.npc.NPC import core.game.node.entity.player.Player +import core.game.node.entity.player.info.PlayerDetails import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.plugin.Initializable @@ -72,7 +73,7 @@ class ManniDialogue(player: Player? = null) : DialoguePlugin(player){ 2 -> {player("No, I don't think I am.");stage = 1000} } 103 -> {npc("As you wish outerlander; I will drink first, then you will","drink.");stage++} - 104 -> {World.submit(DrinkingPulse(player,curNPC,player?.getAttribute("fremtrials:keg-mixed",false))); end()} + 104 -> {GameWorld.submit(DrinkingPulse(player,curNPC,player?.getAttribute("fremtrials:keg-mixed",false))); end()} 1000 -> end() } diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/TFTInteractionListeners.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/TFTInteractionListeners.kt index 226c1b355..d2c781728 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/TFTInteractionListeners.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thefremenniktrials/TFTInteractionListeners.kt @@ -17,8 +17,8 @@ import org.rs09.consts.NPCs import org.rs09.primextends.getNext import org.rs09.primextends.isLast import rs09.game.interaction.InteractionListener -import rs09.game.world.World -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld +import rs09.game.world.GameWorld.Pulser class TFTInteractionListeners : InteractionListener(){ @@ -81,7 +81,7 @@ class TFTInteractionListeners : InteractionListener(){ onUseWith(ITEM,KNIFE,TREE_BRANCH){player,knife,_ -> if (player.inventory.containsItem(knife.asItem())) { - World.submit(BranchFletchingPulse(player)) + GameWorld.submit(BranchFletchingPulse(player)) } else { player.sendMessage("You need a knife to do this.") } diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/CaveZone.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/CaveZone.kt index efbd5e2fa..79ca033a7 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/CaveZone.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/CaveZone.kt @@ -4,7 +4,7 @@ import core.game.node.entity.Entity import core.game.node.entity.combat.ImpactHandler import core.game.node.entity.player.Player import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.map.zone.MapZone import core.game.world.map.zone.ZoneBorders @@ -50,7 +50,7 @@ class CaveZone : MapZone("TLT Cave Zone", true), Plugin { fun trigger(player: Player){ if(RandomFunction.random(1,6) <= 2) { player.animator.animate(Animation(1950), Graphics(572,1,3)) - World.Pulser.submit(object : Pulse(5) { + GameWorld.Pulser.submit(object : Pulse(5) { override fun pulse(): Boolean { player.unlock() player.properties.teleportLocation = Location.create(3159, 9546, 0) diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/GoblinFollower.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/GoblinFollower.kt index c6c87bf5f..699e11768 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/GoblinFollower.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/GoblinFollower.kt @@ -5,7 +5,7 @@ import core.game.node.entity.player.Player import core.game.system.task.Pulse import core.game.world.map.Location import org.rs09.consts.Components -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Small object for the goblin follow options @@ -20,7 +20,7 @@ object GoblinFollower { } private fun travel(player: Player,location: Location){ - World.Pulser.submit(object: Pulse(){ + GameWorld.Pulser.submit(object: Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/LostTribeCutscene.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/LostTribeCutscene.kt index 7d6965ebb..dd2207d5b 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/LostTribeCutscene.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/LostTribeCutscene.kt @@ -15,7 +15,7 @@ import core.game.world.map.build.DynamicRegion import core.game.world.update.flag.context.Animation import core.plugin.Initializable import rs09.game.camerautils.PlayerCamera -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser private const val DUKE = 2088 private const val MISTAG = 2089 diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickaxeOnRubble.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickaxeOnRubble.kt index 714f9ce02..c86aa3361 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickaxeOnRubble.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickaxeOnRubble.kt @@ -5,7 +5,7 @@ import core.game.interaction.UseWithHandler import core.game.node.entity.skill.Skills import core.game.node.entity.skill.gather.SkillingTool import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.plugin.Initializable import core.plugin.Plugin @@ -40,7 +40,7 @@ class PickaxeOnRubble : UseWithHandler(1265,1267,1269,1271,1273,1275){ } player.lock() - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickpocketSigmund.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickpocketSigmund.kt index 1e78e754b..01fe466b3 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickpocketSigmund.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/thelosttribe/PickpocketSigmund.kt @@ -7,7 +7,7 @@ import core.game.world.update.flag.context.Animation import org.rs09.consts.Items import org.rs09.consts.NPCs import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld /** * handles pickpocketing sigmund during the lost tribe quest @@ -19,7 +19,7 @@ class PickpocketSigmund : InteractionListener(){ override fun defineListeners() { on(SIGMUND,NPC,"pickpocket"){player, node -> player.lock() - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/DwarvenBoatmanDialogue.kt b/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/DwarvenBoatmanDialogue.kt index 82c2f3673..78daf00b6 100644 --- a/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/DwarvenBoatmanDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/DwarvenBoatmanDialogue.kt @@ -8,7 +8,7 @@ import core.game.system.task.Pulse import core.game.world.map.Location import core.plugin.Initializable import org.rs09.consts.Components -import rs09.game.world.World +import rs09.game.world.GameWorld @Initializable class DwarvenBoatmanDialogue(player: Player? = null) : DialoguePlugin(player) { @@ -28,7 +28,7 @@ class DwarvenBoatmanDialogue(player: Player? = null) : DialoguePlugin(player) { 11 -> npc("How do you even know about-") 12 -> npc("Gah, nevermind! Just climb","on board!") 13 -> player("Thank you!") - 14 -> end().also { World.Pulser.submit(travelPulse(player)) } + 14 -> end().also { GameWorld.Pulser.submit(travelPulse(player)) } } return true } diff --git a/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimCartMethods.kt b/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimCartMethods.kt index 3c75a3d78..31797319d 100644 --- a/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimCartMethods.kt +++ b/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimCartMethods.kt @@ -7,17 +7,17 @@ import core.game.system.task.Pulse import core.game.world.map.Direction import core.game.world.map.Location import org.rs09.consts.Components -import rs09.game.world.World +import rs09.game.world.GameWorld object KeldagrimCartMethods { @JvmStatic fun goToKeldagrim(player: Player){ - World.Pulser.submit(TravelToKeldagrimPulse(player)) + GameWorld.Pulser.submit(TravelToKeldagrimPulse(player)) } @JvmStatic fun leaveKeldagrimTo(player: Player, dest: Location){ - World.Pulser.submit(TravelFromKeldagrimPulse(player,dest)) + GameWorld.Pulser.submit(TravelFromKeldagrimPulse(player,dest)) } } diff --git a/Server/src/main/kotlin/rs09/game/content/zone/phasmatys/bonegrinder/BoneGrinderListener.kt b/Server/src/main/kotlin/rs09/game/content/zone/phasmatys/bonegrinder/BoneGrinderListener.kt index 39029ffe7..afdeb3ac5 100644 --- a/Server/src/main/kotlin/rs09/game/content/zone/phasmatys/bonegrinder/BoneGrinderListener.kt +++ b/Server/src/main/kotlin/rs09/game/content/zone/phasmatys/bonegrinder/BoneGrinderListener.kt @@ -10,7 +10,7 @@ import core.game.world.map.Location import core.game.world.update.flag.context.Animation import org.rs09.consts.Items import rs09.game.interaction.InteractionListener -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser private const val LOADER = 11162 private const val BONE_GRINDER = 11163 diff --git a/Server/src/main/kotlin/rs09/game/ge/OfferManager.kt b/Server/src/main/kotlin/rs09/game/ge/OfferManager.kt index e5375eac5..fc722a6be 100644 --- a/Server/src/main/kotlin/rs09/game/ge/OfferManager.kt +++ b/Server/src/main/kotlin/rs09/game/ge/OfferManager.kt @@ -13,6 +13,9 @@ import core.game.node.entity.player.info.PlayerDetails import core.game.node.entity.player.link.audio.Audio import core.game.node.item.Item import rs09.game.system.SystemLogger +import core.game.system.task.Pulse +import rs09.game.world.GameWorld +import core.game.world.callback.CallBack import rs09.game.world.repository.Repository import core.net.packet.PacketRepository import core.net.packet.context.ContainerContext @@ -31,6 +34,7 @@ import java.lang.Integer.min import java.util.* import java.util.concurrent.locks.ReentrantLock import javax.script.ScriptEngineManager +import kotlin.collections.ArrayList object OfferManager { /** diff --git a/Server/src/main/kotlin/rs09/game/interaction/CorporealBeastWarningInterface.kt b/Server/src/main/kotlin/rs09/game/interaction/CorporealBeastWarningInterface.kt index 865578bd7..4772e322a 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/CorporealBeastWarningInterface.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/CorporealBeastWarningInterface.kt @@ -2,7 +2,7 @@ package rs09.game.interaction import core.game.component.Component import core.game.node.entity.player.Player -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Handles the corporeal beast warning interface @@ -14,9 +14,9 @@ class CorporealBeastWarningInterface : InterfaceListener(){ override fun defineListeners() { on(COMPONENT_ID,17){player,component,_,_,_,_ -> - if(player.getAttribute("corp-beast-cave-delay",0) <= World.ticks) { + if(player.getAttribute("corp-beast-cave-delay",0) <= GameWorld.ticks) { player.properties.teleportLocation = player.location.transform(4, 0, 0).also { close(player,component) } - player.setAttribute("corp-beast-cave-delay",World.ticks + 5) + player.setAttribute("corp-beast-cave-delay",GameWorld.ticks + 5) } else { close(player,component) } diff --git a/Server/src/main/kotlin/rs09/game/interaction/QCRepository.kt b/Server/src/main/kotlin/rs09/game/interaction/QCRepository.kt index 870f8626b..6bc7547d2 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/QCRepository.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/QCRepository.kt @@ -9,8 +9,9 @@ import core.game.node.entity.skill.Skills import core.game.system.task.Pulse import core.game.world.update.flag.context.ChatMessage import core.game.world.update.flag.player.ChatFlag -import core.net.ms.MSPacketRepository -import rs09.game.world.World.Pulser +import core.net.amsc.MSPacketRepository +import core.net.amsc.WorldCommunicator +import rs09.game.world.GameWorld.Pulser import rs09.net.packet.`in`.QCPacketType import java.nio.ByteBuffer @@ -68,7 +69,11 @@ object QCRepository { if(forClan) { - MSPacketRepository.sendClanMessage(player, qcString) + if (WorldCommunicator.isEnabled()) { + MSPacketRepository.sendClanMessage(player, qcString) + } else { + player?.communication?.clan?.message(player, qcString) + } } else { val ctx = ChatMessage(player, qcString, 0, qcString.length) ctx.isQuickChat = true diff --git a/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt b/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt index 88a3c1900..800217ab5 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt @@ -11,7 +11,7 @@ import core.game.world.map.Location import core.game.world.map.RegionManager import core.tools.RandomFunction import rs09.game.interaction.InterfaceListener -import rs09.game.world.World +import rs09.game.world.GameWorld val RING_1 = arrayOf('a','d','c','b') val RING_2 = arrayOf('i','l','k','j') @@ -123,7 +123,7 @@ class FairyRingInterface : InterfaceListener(){ if (!RegionManager.isTeleportPermitted(tile) || RegionManager.getObject(tile) != null) { tile = Location.create(2412, 4431, 0) } - World.Pulser.submit(object : Pulse(4, player) { + GameWorld.Pulser.submit(object : Pulse(4, player) { override fun pulse(): Boolean { sendPlayerDialogue(player, "Wow, fairy magic sure is useful, I hardly moved at all!", FacialExpression.AMAZED) return true diff --git a/Server/src/main/kotlin/rs09/game/interaction/inter/MainGameInterface.kt b/Server/src/main/kotlin/rs09/game/interaction/inter/MainGameInterface.kt index 7bd711643..e1724e45b 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/inter/MainGameInterface.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/inter/MainGameInterface.kt @@ -10,7 +10,7 @@ import core.game.node.entity.player.Player import core.game.node.entity.player.info.Rights import org.rs09.consts.Components import rs09.game.interaction.InterfaceListener -import rs09.game.world.World.settings +import rs09.game.world.GameWorld.settings class MainGameInterface : InterfaceListener() { val TOPLEVEL = Components.TOPLEVEL_548 diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/GrandSeedPodHandler.kt b/Server/src/main/kotlin/rs09/game/interaction/item/GrandSeedPodHandler.kt index a950f3a05..9abb38463 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/item/GrandSeedPodHandler.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/item/GrandSeedPodHandler.kt @@ -1,14 +1,23 @@ package rs09.game.interaction.item -import api.* +import core.cache.def.impl.ItemDefinition import core.game.content.global.travel.glider.GliderPulse import core.game.content.global.travel.glider.Gliders +import core.game.interaction.OptionHandler +import core.game.node.Node import core.game.node.entity.player.Player import core.game.node.entity.skill.Skills +import core.game.node.item.Item import core.game.system.task.Pulse import core.game.world.map.Location +import core.game.world.update.flag.context.Animation +import core.game.world.update.flag.context.Graphics +import core.plugin.Initializable +import core.plugin.Plugin import org.rs09.consts.Items import rs09.game.interaction.InteractionListener +import rs09.game.world.GameWorld +import api.* private const val SQUASH_GRAPHICS_BEGIN = 767 private const val SQUASH_GRAPHICS_END = 769 diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withnpc/GCItemOnCat.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withnpc/GCItemOnCat.kt index 5a218e6d2..b08b37efb 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/item/withnpc/GCItemOnCat.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withnpc/GCItemOnCat.kt @@ -8,7 +8,7 @@ import core.game.world.map.path.Pathfinder import org.rs09.consts.Items import org.rs09.consts.NPCs import rs09.game.interaction.InteractionListener -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser class GCItemOnCat : InteractionListener() { override fun defineListeners() { diff --git a/Server/src/main/kotlin/rs09/game/interaction/object/GutanothChestPlugin.kt b/Server/src/main/kotlin/rs09/game/interaction/object/GutanothChestPlugin.kt index 0b03b2e64..e26c41232 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/object/GutanothChestPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/object/GutanothChestPlugin.kt @@ -10,7 +10,7 @@ import core.game.system.task.Pulse import core.game.world.update.flag.context.Animation import org.rs09.consts.Items import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.concurrent.TimeUnit private const val CHEST = 2827 @@ -20,7 +20,7 @@ class GutanothChestInteractionHandler : InteractionListener(){ on(CHEST,SCENERY,"open"){ player, node -> val delay = player.getAttribute("gutanoth-chest-delay", 0L) - World.Pulser.submit(ChestPulse(player,System.currentTimeMillis() > delay, node as Scenery)) + GameWorld.Pulser.submit(ChestPulse(player,System.currentTimeMillis() > delay, node as Scenery)) return@on true } diff --git a/Server/src/main/kotlin/rs09/game/interaction/object/JungleBushHandler.kt b/Server/src/main/kotlin/rs09/game/interaction/object/JungleBushHandler.kt index b2e87d613..d78b5dd97 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/object/JungleBushHandler.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/object/JungleBushHandler.kt @@ -8,7 +8,7 @@ import core.game.system.task.Pulse import core.game.world.update.flag.context.Animation import org.rs09.consts.Items import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Handles the chopping down of dense jungle, mainly to grant access to the Kharazi Jungle. @@ -25,7 +25,7 @@ class JungleBushHandler : InteractionListener(){ on(ids,SCENERY,"chop-down"){ player, node -> val toChop = node.asScenery() if(checkRequirement(player)){ - World.Pulser.submit(object : Pulse(0){ + GameWorld.Pulser.submit(object : Pulse(0){ var ticks = 0 override fun pulse(): Boolean { when(ticks++){ diff --git a/Server/src/main/kotlin/rs09/game/interaction/player/PeltOptionPlugin.kt b/Server/src/main/kotlin/rs09/game/interaction/player/PeltOptionPlugin.kt index 8287688c1..c9c5cff39 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/player/PeltOptionPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/player/PeltOptionPlugin.kt @@ -14,7 +14,7 @@ import core.game.world.update.flag.context.Graphics import core.plugin.Initializable import core.plugin.Plugin import org.rs09.consts.Items -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.tools.stringtools.colorize val snowball = Item(Items.SNOWBALL_11951) @@ -43,13 +43,13 @@ class PeltOptionPlugin : OptionHandler() { if(player.inventory.remove(snowball) || player.equipment.remove(snowball)){ player.lock() - World.Pulser.submit(object : Pulse(hitDelay + 1){ + GameWorld.Pulser.submit(object : Pulse(hitDelay + 1){ override fun pulse(): Boolean { other?.animator?.graphics(Graphics(1282)) return true } }) - World.Pulser.submit(object : Pulse() { + GameWorld.Pulser.submit(object : Pulse() { var counter = 0 override fun pulse(): Boolean { when (counter++) { diff --git a/Server/src/main/kotlin/rs09/game/interaction/region/dungeons/brimhaven/BrimhavenUtils.kt b/Server/src/main/kotlin/rs09/game/interaction/region/dungeons/brimhaven/BrimhavenUtils.kt index 5c5ae99eb..1513cd645 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/region/dungeons/brimhaven/BrimhavenUtils.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/region/dungeons/brimhaven/BrimhavenUtils.kt @@ -13,7 +13,7 @@ import core.game.system.task.Pulse import core.game.world.map.Direction import core.game.world.map.Location import core.game.world.update.flag.context.Animation -import rs09.game.world.World +import rs09.game.world.GameWorld object BrimhavenUtils { fun getVineDestination(player: Player, node: Scenery): Location { @@ -53,7 +53,7 @@ object BrimhavenUtils { teleport(p, loc) } - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var stage = if (dir == Direction.NORTH) -1 else 0 var direction = dir override fun pulse(): Boolean { diff --git a/Server/src/main/kotlin/rs09/game/node/entity/combat/CombatPulse.kt b/Server/src/main/kotlin/rs09/game/node/entity/combat/CombatPulse.kt index 21b864bc1..5525626e2 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/combat/CombatPulse.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/combat/CombatPulse.kt @@ -17,7 +17,7 @@ import core.game.node.entity.skill.Skills import core.game.node.entity.state.EntityState import core.game.node.item.Item import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.update.flag.context.Animation import core.tools.RandomFunction @@ -122,7 +122,7 @@ class CombatPulse( } combatTimeOut = 0 entity.face(victim) - if (nextAttack <= World.ticks) { + if (nextAttack <= GameWorld.ticks) { victim ?: return false val v: Entity = victim!! var handler = temporaryHandler @@ -310,7 +310,7 @@ class CombatPulse( * @param ticks The amount of ticks. */ fun setNextAttack(ticks: Int) { - nextAttack = World.ticks + ticks + nextAttack = GameWorld.ticks + ticks } /** @@ -349,7 +349,7 @@ class CombatPulse( override fun stop() { super.stop() - entity!!.setAttribute("combat-stop", World.ticks) + entity!!.setAttribute("combat-stop", GameWorld.ticks) if (victim != null) { lastVictim = victim } @@ -426,7 +426,7 @@ class CombatPulse( if (set != null && set.effect(entity, victim, state)) { set.visualize(entity, victim) } - World.Pulser.submit(object : Pulse(delay - 1, entity, victim) { + GameWorld.Pulser.submit(object : Pulse(delay - 1, entity, victim) { var impact = false override fun pulse(): Boolean { if (DeathTask.isDead(victim)) { diff --git a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt index caaf6d2a3..8d3450ff5 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/combat/handlers/RangeSwingHandler.kt @@ -1,5 +1,7 @@ package rs09.game.node.entity.combat.handlers +import api.EquipmentSlot +import core.game.container.Container import core.game.container.impl.EquipmentContainer import core.game.content.quest.tutorials.tutorialisland.TutorialSession import core.game.content.quest.tutorials.tutorialisland.TutorialStage @@ -25,7 +27,7 @@ import core.tools.RandomFunction import rs09.game.node.entity.combat.CombatSwingHandler import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.* import kotlin.math.ceil import kotlin.math.floor @@ -179,7 +181,7 @@ open class RangeSwingHandler victim!!.impactHandler.handleImpact(entity, hit, CombatStyle.RANGE, state) if (state.secondaryHit > -1) { val hitt = state.secondaryHit - World.Pulser.submit(object : Pulse(1, victim) { + GameWorld.Pulser.submit(object : Pulse(1, victim) { override fun pulse(): Boolean { victim.impactHandler.handleImpact(entity, hitt, CombatStyle.RANGE, state) return true diff --git a/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/LoginParser.kt b/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/LoginParser.kt index 829b5c72b..1bd578c62 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/LoginParser.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/LoginParser.kt @@ -9,12 +9,12 @@ import core.game.node.entity.player.info.login.Response import core.game.system.SystemManager import core.game.system.monitor.PlayerMonitor import core.game.system.task.Pulse -import core.net.ms.MSPacketRepository +import core.net.amsc.MSPacketRepository +import core.net.amsc.ManagementServerState +import core.net.amsc.WorldCommunicator import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.game.world.repository.Repository -import rs09.net.ms.ManagementServer -import rs09.net.ms.ManagementState import java.util.concurrent.TimeUnit import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock @@ -115,7 +115,7 @@ class LoginParser( return } //Repository.getPlayerNames().put(player.getName(), player); - World.Pulser.submit(object : Pulse(1) { + GameWorld.Pulser.submit(object : Pulse(1) { override fun pulse(): Boolean { try { if (details.session.isActive) { @@ -176,7 +176,7 @@ class LoginParser( player.configManager.init() LoginConfiguration.configureGameWorld(player) Repository.playerNames[player.name] = player - World.Pulser.submit(object : Pulse(1) { + GameWorld.Pulser.submit(object : Pulse(1) { override fun pulse(): Boolean { if (!Repository.players.contains(player)) { Repository.players.add(player) @@ -196,7 +196,7 @@ class LoginParser( SystemLogger.logWarn("LOGGED_IN_PLAYERS contains ${details.username}") return flag(Response.ALREADY_ONLINE) } - if (ManagementServer.state == ManagementState.CONNECTING) { + if (WorldCommunicator.getState() == ManagementServerState.CONNECTING) { return flag(Response.LOGIN_SERVER_OFFLINE) } if (!details.session.isActive) { @@ -236,6 +236,6 @@ class LoginParser( * @param type The login type. */ init { - timeStamp = World.ticks + timeStamp = GameWorld.ticks } } \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt b/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt index df9d56f4f..f3c1c1a35 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt @@ -8,6 +8,7 @@ import core.game.node.entity.player.link.SpellBookManager import core.game.node.entity.player.link.emote.Emotes import core.game.node.entity.player.link.grave.GraveType import core.game.node.entity.player.link.music.MusicEntry +import core.game.node.entity.skill.slayer.SlayerEquipmentFlags import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.json.simple.JSONArray @@ -17,7 +18,7 @@ import rs09.ServerConstants import rs09.game.node.entity.skill.farming.CompostBins import rs09.game.node.entity.skill.farming.FarmingPatch import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld import java.io.FileReader import java.util.* import core.game.node.item.Item; @@ -391,8 +392,8 @@ class PlayerSaveParser(val player: Player) { player.skills.parse(skillData) player.skills.experienceGained = saveFile!!["totalEXP"].toString().toDouble() player.skills.experienceMutiplier = saveFile!!["exp_multiplier"].toString().toDouble() - if (World.settings?.default_xp_rate != 5.0) { - player.skills.experienceMutiplier = World.settings?.default_xp_rate!! + if (GameWorld.settings?.default_xp_rate != 5.0) { + player.skills.experienceMutiplier = GameWorld.settings?.default_xp_rate!! } val divisor: Double if(player.skills.experienceMutiplier >= 10 && !player.attributes.containsKey("permadeath")){ //exclude permadeath HCIMs from XP squish diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/BarbarianOutpostCourse.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/BarbarianOutpostCourse.kt index f0db26a4a..2d96c3fd9 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/BarbarianOutpostCourse.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/BarbarianOutpostCourse.kt @@ -19,7 +19,7 @@ import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics import core.plugin.Initializable -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.plugin.PluginManager /** @@ -92,7 +92,7 @@ class BarbarianOutpostCourse sendMessage(player, "You cannot do that from here.") return } - if (ropeDelay > World.ticks) { + if (ropeDelay > GameWorld.ticks) { sendMessage(player, "The rope is being used.") return } @@ -100,7 +100,7 @@ class BarbarianOutpostCourse AgilityHandler.fail(player, 0, Location.create(2549, 9951, 0), null, getHitAmount(player), "You slip and fall to the pit below.") return } - ropeDelay = World.ticks + 2 + ropeDelay = GameWorld.ticks + 2 player.packetDispatch.sendSceneryAnimation(`object`, Animation.create(497), true) AgilityHandler.forceWalk(player, 0, player.location, Location.create(2551, 3549, 0), Animation.create(751), 50, 22.0, "You skillfully swing across.", 1) } @@ -117,7 +117,7 @@ class BarbarianOutpostCourse AgilityHandler.walk(player, if (failed) -1 else 1, Location.create(2551, 3546, 0), end, Animation.create(155), if (failed) 0.0 else 13.5, if (failed) null else "...You make it safely to the other side.") if (failed) { AgilityHandler.walk(player, -1, player.location, Location.create(2545, 3546, 0), Animation.create(155), 0.0, null) - World.Pulser.submit(getSwimPulse(player)) + GameWorld.Pulser.submit(getSwimPulse(player)) return } } diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/GnomeStrongholdCourse.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/GnomeStrongholdCourse.kt index 021940b72..d3477adba 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/GnomeStrongholdCourse.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/GnomeStrongholdCourse.kt @@ -13,7 +13,7 @@ import core.game.system.task.LogoutTask import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.plugin.Initializable -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Handles the gnome stronghold agility course. @@ -80,11 +80,11 @@ class GnomeStrongholdCourse sendMessage(player, "You can't do that from here.") return true } - if (USED_PIPES[index] > World.ticks) { + if (USED_PIPES[index] > GameWorld.ticks) { sendMessage(player, "The pipe is being used.") return true } - USED_PIPES[index] = World.ticks + 10 + USED_PIPES[index] = GameWorld.ticks + 10 player.lock() //Animations and force walking diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt index 0cd8c517d..a3a409d61 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt @@ -15,7 +15,7 @@ import core.game.world.map.Location import core.game.world.map.RegionManager import core.game.world.update.flag.context.Animation import core.plugin.Initializable -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Handles the wilderness agility course. @@ -68,7 +68,7 @@ class WildernessCourse * @param object the object. */ private fun handleEntranceObstacle(player: Player, `object`: Scenery) { - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var counter = 0 val fail = AgilityHandler.hasFailed(player, 1, 0.3) override fun pulse(): Boolean { @@ -112,7 +112,7 @@ class WildernessCourse return } player.lock(10) - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var counter = 0 override fun pulse(): Boolean { val x = 3004 @@ -156,7 +156,7 @@ class WildernessCourse sendMessage(player, "You cannot do that from here.") return } - if (ropeDelay > World.ticks) { + if (ropeDelay > GameWorld.ticks) { sendMessage(player, "The rope is being used.") return } @@ -164,7 +164,7 @@ class WildernessCourse AgilityHandler.fail(player, 0, Location.create(3005, 10357, 0), null, getHitAmount(player), "You slip and fall to the pit below.") return } - ropeDelay = World.ticks + 2 + ropeDelay = GameWorld.ticks + 2 player.packetDispatch.sendSceneryAnimation(`object`, Animation.create(497), true) AgilityHandler.forceWalk(player, 1, player.location, Location.create(3005, 3958, 0), Animation.create(751), 50, 20.0, "You skillfully swing across.", 1) } @@ -209,7 +209,7 @@ class WildernessCourse sendMessage(player, "You walk carefully across the slippery log...") AgilityHandler.walk(player, if (failed) -1 else 3, player.location, end, Animation.create(155), if (failed) 0.0 else 20.0, if (failed) null else "You skillfully edge across the gap.") if (failed) { - World.Pulser.submit(object : Pulse(5, player) { + GameWorld.Pulser.submit(object : Pulse(5, player) { override fun pulse(): Boolean { player.faceLocation(Location.create(2998, 3944, 0)) AgilityHandler.fail(player, 3, Location.create(2998, 10345, 0), Animation.create(770), getHitAmount(player), "You slip and fall onto the spikes below.") @@ -227,7 +227,7 @@ class WildernessCourse */ private fun handleRockClimb(player: Player, `object`: Scenery) { AgilityHandler.forceWalk(player, 4, Location.create(2994, 3937, 0), Location.create(2994, 3933, 0), Animation.create(740), 8, 0.0, "You reach the top.") - World.Pulser.submit(object : Pulse(4, player) { + GameWorld.Pulser.submit(object : Pulse(4, player) { override fun pulse(): Boolean { player.animator.reset() return true diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/BasaltRockShortcut.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/BasaltRockShortcut.kt index 0104d8a1f..61f29e60a 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/BasaltRockShortcut.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/BasaltRockShortcut.kt @@ -6,7 +6,7 @@ import core.game.node.entity.player.Player import core.game.node.entity.skill.agility.AgilityHandler import core.game.node.entity.skill.agility.AgilityShortcut import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.game.world.update.flag.player.FaceLocationFlag @@ -87,7 +87,7 @@ class BasaltRockShortcut : AgilityShortcut { } override fun run(player: Player, obj: Scenery, option: String, failed: Boolean) { - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { override fun pulse(): Boolean { when (obj.id) { diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/PipeShortcut.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/PipeShortcut.kt index 21b84a834..8ed3d0bbc 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/PipeShortcut.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/shortcuts/PipeShortcut.kt @@ -6,7 +6,7 @@ import core.game.node.entity.player.link.diary.DiaryType import core.game.node.entity.skill.agility.AgilityHandler import core.game.node.entity.skill.agility.AgilityShortcut import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.update.flag.context.Animation import core.plugin.Initializable import core.plugin.Plugin @@ -66,7 +66,7 @@ class PipeShortcut : AgilityShortcut { /** * Pulse that starts the object interaction when clicked on one of these shortcuts */ - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { override fun pulse(): Boolean { when (obj.id) { diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/EstateAgentDialogue.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/EstateAgentDialogue.kt index a1d2725ad..ba5476286 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/EstateAgentDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/EstateAgentDialogue.kt @@ -12,7 +12,7 @@ import core.game.node.entity.skill.construction.HousingStyle import core.game.node.item.Item import core.plugin.Initializable import org.rs09.consts.Items -import rs09.game.world.World.settings +import rs09.game.world.GameWorld.settings import rs09.tools.END_DIALOGUE import rs09.tools.START_DIALOGUE diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/LecternPlugin.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/LecternPlugin.kt index 627e9eb7b..6fe7252d2 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/LecternPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/LecternPlugin.kt @@ -16,7 +16,7 @@ import core.game.system.task.Pulse import core.game.world.update.flag.context.Animation import core.plugin.Initializable import core.plugin.Plugin -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.plugin.PluginManager.definePlugin /** @@ -127,7 +127,7 @@ class LecternPlugin : OptionHandler() { override fun handle(player: Player, node: Node, option: String): Boolean { val id = node.asScenery().id player.setAttribute("ttb:objectid", id) - World.Pulser.submit(object : Pulse(){ + GameWorld.Pulser.submit(object : Pulse(){ var counter = 0 override fun pulse(): Boolean { when(counter++){ diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/TelescopePlugin.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/TelescopePlugin.kt index be4b20f2e..fee31ef24 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/TelescopePlugin.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/construction/decoration/study/TelescopePlugin.kt @@ -13,7 +13,7 @@ import core.plugin.Plugin import core.tools.RandomFunction import rs09.game.content.global.worldevents.WorldEvents import rs09.game.content.global.worldevents.shootingstar.ShootingStarEvent -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser import java.util.concurrent.TimeUnit @Initializable diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/gather/fishing/FishingPulse.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/gather/fishing/FishingPulse.kt index db263225f..30b3bd953 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/gather/fishing/FishingPulse.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/gather/fishing/FishingPulse.kt @@ -3,6 +3,7 @@ package rs09.game.node.entity.skill.gather.fishing import core.game.content.global.SkillingPets import core.game.content.quest.tutorials.tutorialisland.TutorialSession import core.game.content.quest.tutorials.tutorialisland.TutorialStage +import core.game.container.Container import core.game.node.entity.npc.NPC import core.game.node.entity.player.Player import core.game.node.entity.player.link.diary.DiaryType @@ -22,7 +23,7 @@ import rs09.game.node.entity.player.info.stats.STATS_BASE import rs09.game.node.entity.player.info.stats.STATS_FISH import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks import rs09.game.node.entity.skill.skillcapeperks.SkillcapePerks.Companion.isActive -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser import rs09.tools.stringtools.colorize /** diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/pitfall/HunterPitfall.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/pitfall/HunterPitfall.kt index 0fbd89bf4..66ca5c016 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/pitfall/HunterPitfall.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/pitfall/HunterPitfall.kt @@ -1,6 +1,10 @@ import java.util.concurrent.TimeUnit; import api.* +import core.cache.def.impl.NPCDefinition +import core.cache.def.impl.SceneryDefinition +import core.game.interaction.OptionHandler +import core.game.node.Node import core.game.node.entity.Entity import core.game.node.entity.combat.CombatStyle import core.game.node.entity.impl.Animator.Priority; @@ -14,12 +18,14 @@ import core.game.system.task.Pulse import core.game.world.map.Direction import core.game.world.map.Location import core.game.world.update.flag.context.Animation +import core.game.world.update.flag.context.Graphics import core.plugin.Initializable +import core.plugin.Plugin import core.tools.RandomFunction import org.rs09.consts.Items import org.rs09.consts.NPCs import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld /*@Initializable class HunterPitfall : OptionHandler() { @@ -195,7 +201,7 @@ class PitfallListeners : InteractionListener() { return true } } - World.Pulser.submit(collapsePulse) + GameWorld.Pulser.submit(collapsePulse) return@on true } on(SPIKED_PIT, SCENERY, "jump") { player, node -> diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/tracking/HunterTracking.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/tracking/HunterTracking.kt index 95a700656..d888c6315 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/tracking/HunterTracking.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/hunter/tracking/HunterTracking.kt @@ -13,7 +13,7 @@ import core.game.world.update.flag.context.Animation import core.tools.RandomFunction import org.rs09.consts.Items import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.* /** @@ -163,7 +163,7 @@ abstract class HunterTracking : OptionHandler(){ fun reward(player: Player, success: Boolean) { player.lock() player.animator.animate(if(success) KEBBIT_ANIM else MISS_ANIM) - World.Pulser.submit(object : Pulse(KEBBIT_ANIM.duration){ + GameWorld.Pulser.submit(object : Pulse(KEBBIT_ANIM.duration){ override fun pulse(): Boolean { if(hasTrail(player) && success){ for(item in rewards){ diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/magic/SpellListener.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/magic/SpellListener.kt index 798f1f809..dad5e5c8b 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/magic/SpellListener.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/magic/SpellListener.kt @@ -8,7 +8,7 @@ import core.game.node.item.Item import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics import rs09.game.interaction.Listener -import rs09.game.world.World +import rs09.game.world.GameWorld abstract class SpellListener(val bookName: String) : Listener { companion object { @@ -34,7 +34,7 @@ abstract class SpellListener(val bookName: String) : Listener { } fun requires(player: Player, magicLevel: Int = 0, runes: Array = arrayOf(), specialEquipment: IntArray = intArrayOf()){ - if(player.getAttribute("magic-delay",0) > World.ticks){ + if(player.getAttribute("magic-delay",0) > GameWorld.ticks){ throw IllegalStateException() } if(player.getAttribute("tablet-spell",false)){ @@ -80,7 +80,7 @@ abstract class SpellListener(val bookName: String) : Listener { } fun setDelay(player: Player,isTeleport: Boolean = false){ - if(!isTeleport) player.setAttribute("magic-delay",World.ticks + 3) else player.setAttribute("magic-delay",World.ticks + 5) + if(!isTeleport) player.setAttribute("magic-delay",GameWorld.ticks + 3) else player.setAttribute("magic-delay",GameWorld.ticks + 5) } fun interrupt(player: Player){ diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/runecrafting/abyss/AbyssPlugin.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/runecrafting/abyss/AbyssPlugin.kt index dd1d2be1e..5bffe6094 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/runecrafting/abyss/AbyssPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/runecrafting/abyss/AbyssPlugin.kt @@ -18,7 +18,7 @@ import core.game.world.update.flag.context.Graphics import core.tools.RandomFunction import org.rs09.consts.NPCs import rs09.game.interaction.InteractionListener -import rs09.game.world.World +import rs09.game.world.GameWorld /** * A plugin used to handle the abyss. @@ -105,7 +105,7 @@ class AbyssPlugin : InteractionListener() { } player.animate(Animation(733)) player.lock() - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var count = 0 override fun pulse(): Boolean { when (count) { @@ -150,7 +150,7 @@ class AbyssPlugin : InteractionListener() { } player.animate(tool.getAnimation()) player.lock() - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var count = 0 override fun pulse(): Boolean { when (count) { @@ -191,7 +191,7 @@ class AbyssPlugin : InteractionListener() { } player.animate(tool.getAnimation()) player.lock() - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var count = 0 override fun pulse(): Boolean { when (count) { @@ -232,7 +232,7 @@ class AbyssPlugin : InteractionListener() { `object` ?: return player.animate(Animation(1331)) player.lock() - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var count = 0 override fun pulse(): Boolean { when (count) { @@ -303,7 +303,7 @@ class AbyssPlugin : InteractionListener() { val index: Int = RandomFunction.random(emotes.size) player.animate(Animation(emotes[index])) player.lock() - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var count = 0 override fun pulse(): Boolean { when (count) { @@ -458,7 +458,7 @@ class AbyssPlugin : InteractionListener() { npc.sendChat("Veniens! Sallakar! Rinnesset!") player.skills.decrementPrayerPoints(100.0) player.skullManager.checkSkull(player) - World.Pulser.submit(object : Pulse(2, player) { + GameWorld.Pulser.submit(object : Pulse(2, player) { override fun pulse(): Boolean { player.properties.teleportLocation = Location.create(3021, 4847, 0) npc.updateMasks.reset() diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/skillcapeperks/SkillcapePerks.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/skillcapeperks/SkillcapePerks.kt index 7f7aad6d3..dda7520ae 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/skillcapeperks/SkillcapePerks.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/skillcapeperks/SkillcapePerks.kt @@ -8,7 +8,7 @@ import core.game.node.entity.player.link.TeleportManager import core.game.node.entity.skill.runecrafting.Altar import core.game.world.map.zone.impl.DarkZone import core.plugin.Initializable -import rs09.game.world.World +import rs09.game.world.GameWorld enum class SkillcapePerks(val attribute: String, val effect: ((Player) -> Unit)? = null) { BAREFISTED_SMITHING("cape_perks:barefisted-smithing"), @@ -112,7 +112,7 @@ enum class SkillcapePerks(val attribute: String, val effect: ((Player) -> Unit)? } fun activate(player: Player){ - if(World.settings?.skillcape_perks != true){ + if(GameWorld.settings?.skillcape_perks != true){ return } if(!isActive(this,player)){ @@ -124,7 +124,7 @@ enum class SkillcapePerks(val attribute: String, val effect: ((Player) -> Unit)? } fun operate(player: Player){ - if(World.settings?.skillcape_perks != true){ + if(GameWorld.settings?.skillcape_perks != true){ player.sendMessage("This item can not be operated.") return } diff --git a/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/State.kt b/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/State.kt index 74009e820..b42bdfbf6 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/State.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/State.kt @@ -3,7 +3,7 @@ package rs09.game.node.entity.state.newsys import core.game.node.entity.player.Player import core.game.system.task.Pulse import org.json.simple.JSONObject -import rs09.game.world.World.Pulser +import rs09.game.world.GameWorld.Pulser /** * A class representing a state that the player or some associated thing can be in. diff --git a/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/DiseasedState.kt b/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/DiseasedState.kt index f5dc07f7f..5e3eae436 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/DiseasedState.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/DiseasedState.kt @@ -7,7 +7,7 @@ import core.tools.RandomFunction import org.json.simple.JSONObject import rs09.game.node.entity.state.newsys.PlayerState import rs09.game.node.entity.state.newsys.State -import rs09.game.world.World +import rs09.game.world.GameWorld @PlayerState("disease") class DiseasedState(player: Player? = null) : State(player){ @@ -31,7 +31,7 @@ class DiseasedState(player: Player? = null) : State(player){ override fun createPulse() { player ?: return - if(player.getAttribute("immunity:disease",0) > World.ticks){ + if(player.getAttribute("immunity:disease",0) > GameWorld.ticks){ return } if(hitsLeft <= 0) return diff --git a/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/GodspellChargedState.kt b/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/GodspellChargedState.kt index 9df92299e..dfa3be5d7 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/GodspellChargedState.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/state/newsys/states/GodspellChargedState.kt @@ -5,7 +5,7 @@ import core.game.system.task.Pulse import org.json.simple.JSONObject import rs09.game.node.entity.state.newsys.PlayerState import rs09.game.node.entity.state.newsys.State -import rs09.game.world.World; +import rs09.game.world.GameWorld; @PlayerState("godcharge") class GodspellChargedState(player: Player? = null) : State(player) { @@ -13,24 +13,24 @@ class GodspellChargedState(player: Player? = null) : State(player) { var startTick: Int = 0 override fun save(root: JSONObject) { - root.put("ticks_elapsed", World.ticks - startTick) + root.put("ticks_elapsed", GameWorld.ticks - startTick) } override fun parse(_data: JSONObject) { if(_data.containsKey("ticks_elapsed")){ - startTick = World.ticks - _data["ticks_elapsed"].toString().toInt() + startTick = GameWorld.ticks - _data["ticks_elapsed"].toString().toInt() } } override fun newInstance(player: Player?): State { var ret = GodspellChargedState(player) - ret.startTick = World.ticks + ret.startTick = GameWorld.ticks return ret } override fun createPulse() { player ?: return - if(World.ticks - startTick >= DURATION) return + if(GameWorld.ticks - startTick >= DURATION) return pulse = object : Pulse(DURATION) { override fun pulse(): Boolean { player.sendMessage("Your magical charge fades away.") diff --git a/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt b/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt index d9bbc5d65..1d3f19615 100644 --- a/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt +++ b/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt @@ -3,6 +3,7 @@ package rs09.game.system import com.github.ajalt.mordant.rendering.TextColors import com.github.ajalt.mordant.terminal.Terminal import gui.GuiEvent +import gui.ServerMonitor import rs09.ServerConstants import java.io.* import java.text.SimpleDateFormat @@ -46,7 +47,7 @@ object SystemLogger { val msg = "${getTime()}: [INFO] $m" if(m.isNotBlank()) { t.println(msg) - //ServerMonitor.eventQueue.add(GuiEvent.AddDefaultMessage(msg)) + ServerMonitor.eventQueue.add(GuiEvent.AddDefaultMessage(msg)) } } } @@ -56,7 +57,7 @@ object SystemLogger { val msg = "${getTime()}: [ ERR] $message" if(message.isNotBlank()) { t.println(msg) - //ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) + ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) } } @@ -65,7 +66,7 @@ object SystemLogger { val msg = "${getTime()}: [WARN] $message" if(message.isNotBlank()) { t.println(msg) - //ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) + ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) } } @@ -74,7 +75,7 @@ object SystemLogger { val msg = "${getTime()}: [ALRT] $message" if(message.isNotBlank()) { t.println(msg) - //ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) + ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) } } @@ -83,7 +84,7 @@ object SystemLogger { val msg = "${getTime()}: [AIPL] $message" if(message.isNotBlank()) { t.println(msg) - //ServerMonitor.eventQueue.add(GuiEvent.AddAIPMessage(msg)) + ServerMonitor.eventQueue.add(GuiEvent.AddAIPMessage(msg)) } } diff --git a/Server/src/main/kotlin/rs09/game/system/command/Command.kt b/Server/src/main/kotlin/rs09/game/system/command/Command.kt index bff433a2a..44b11f517 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/Command.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/Command.kt @@ -1,7 +1,7 @@ package rs09.game.system.command import core.game.node.entity.player.Player -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Base class for Commands in the new system. Can pass a lambda as part of the constructor or after the constructor. @@ -10,7 +10,7 @@ import rs09.game.world.World class Command(val name: String, val privilege: Privilege, val handle: (Player, Array) -> Unit) { fun attemptHandling(player: Player, args: Array?){ args ?: return - if(player.rights.ordinal >= privilege.ordinal || World.settings?.isDevMode == true){ + if(player.rights.ordinal >= privilege.ordinal || GameWorld.settings?.isDevMode == true){ handle(player,args) } } diff --git a/Server/src/main/kotlin/rs09/game/system/command/oldsys/AIPCommandPlugin.kt b/Server/src/main/kotlin/rs09/game/system/command/oldsys/AIPCommandPlugin.kt index 9c56ea8f5..71c61da18 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/oldsys/AIPCommandPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/oldsys/AIPCommandPlugin.kt @@ -9,7 +9,7 @@ import core.game.node.entity.skill.Skills import rs09.game.system.command.CommandPlugin import core.game.system.command.CommandSet import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.game.world.ImmerseWorld import core.game.world.map.Location import core.game.world.map.RegionManager @@ -119,7 +119,7 @@ class AIPCommandPlugin : CommandPlugin() { player.communication.clan.clanWar.fireEvent("join", aip) } } - World.Pulser.submit(object : Pulse(1) { + GameWorld.Pulser.submit(object : Pulse(1) { override fun pulse(): Boolean { aip.follow(l) return true diff --git a/Server/src/main/kotlin/rs09/game/system/command/oldsys/VisualCommand.kt b/Server/src/main/kotlin/rs09/game/system/command/oldsys/VisualCommand.kt index 83ce0edf1..ad483fb35 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/oldsys/VisualCommand.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/oldsys/VisualCommand.kt @@ -24,7 +24,7 @@ import core.net.packet.out.Varbit import core.plugin.Initializable import core.plugin.Plugin import rs09.game.system.command.CommandPlugin -import rs09.game.world.World +import rs09.game.world.GameWorld import java.awt.Toolkit import java.awt.datatransfer.StringSelection @@ -293,7 +293,7 @@ class VisualCommand : CommandPlugin() { "loop_inter" -> { val st = toInteger(args!![1]!!) val en = if (args.size > 2) toInteger(args[2]!!) else 740 - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var id = st override fun pulse(): Boolean { // PacketRepository.send(Interface.class, new InterfaceContext(player, 548, 77, id, false)); @@ -307,7 +307,7 @@ class VisualCommand : CommandPlugin() { "loop_iconfig" -> { val st = toInteger(args!![1]!!) val en = if (args.size > 2) toInteger(args[2]!!) else 740 - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var id = 0 override fun pulse(): Boolean { // PacketRepository.send(Interface.class, new InterfaceContext(player, 548, 77, id, false)); @@ -321,7 +321,7 @@ class VisualCommand : CommandPlugin() { "loop_itemoni" -> { val st = toInteger(args!![1]!!) val en = if (args.size > 2) toInteger(args[2]!!) else 740 - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { var id = 0 override fun pulse(): Boolean { // PacketRepository.send(Interface.class, new InterfaceContext(player, 548, 77, id, false)); @@ -371,7 +371,7 @@ class VisualCommand : CommandPlugin() { "loop_oa" -> { val startId = toInteger(args!![1]!!) val endId = if (args.size > 2) toInteger(args[2]!!) else 11000 - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var id = startId override fun pulse(): Boolean { val `object` = RegionManager.getObject(player!!.location) @@ -389,7 +389,7 @@ class VisualCommand : CommandPlugin() { "loop_anim" -> { val start = toInteger(args!![1]!!) val end = if (args.size > 2) toInteger(args[2]!!) else 11000 - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var id = start override fun pulse(): Boolean { player!!.animate(Animation.create(id)) @@ -402,7 +402,7 @@ class VisualCommand : CommandPlugin() { "loop_gfx" -> { val s = toInteger(args!![1]!!) val e = if (args.size > 2) toInteger(args[2]!!) else 11000 - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var id = s override fun pulse(): Boolean { Projectile.create(player!!.location, player.location.transform(0, 3, 0), id, 42, 36, 46, 75, 5, 11).send() diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt index 0eabee959..bbd48b81a 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt @@ -6,7 +6,7 @@ import core.game.world.update.flag.context.Animation import core.plugin.Initializable import rs09.game.system.command.Command import rs09.game.system.command.CommandPlugin.Companion.toInteger -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.* @Initializable @@ -40,7 +40,7 @@ class AnimationCommandSet : CommandSet(Command.Privilege.ADMIN) { notify(player, "Really...? $end times...? Looping 25 times instead.") end = 25 } - World.Pulser.submit(object : Pulse(3, player) { + GameWorld.Pulser.submit(object : Pulse(3, player) { var id = start override fun pulse(): Boolean { player.animate(Animation.create(id)) diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/BottingCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/BottingCommandSet.kt index 66001503b..8131ecb3a 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/BottingCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/BottingCommandSet.kt @@ -7,14 +7,14 @@ import rs09.game.ai.general.GeneralBotCreator import rs09.game.ai.general.scriptrepository.PlayerScripts import rs09.game.ai.general.scriptrepository.Script import rs09.game.system.command.Command -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.tools.stringtools.colorize @Initializable class BottingCommandSet : CommandSet(Command.Privilege.STANDARD) { override fun defineCommands() { define("scripts"){player, _ -> - if(World.settings?.enabled_botting != true){ + if(GameWorld.settings?.enabled_botting != true){ player.sendChat("I just tried to do something silly!") return@define } @@ -39,7 +39,7 @@ class BottingCommandSet : CommandSet(Command.Privilege.STANDARD) { player.interfaceManager.open(Component(Components.QUESTJOURNAL_SCROLL_275)) } define("script"){player,args -> - if(World.settings?.enabled_botting != true){ + if(GameWorld.settings?.enabled_botting != true){ player.sendChat("I just tried to do something very silly!") return@define } diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/FunCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/FunCommandSet.kt index 70ef7c17c..6fc59dd3d 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/FunCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/FunCommandSet.kt @@ -10,9 +10,10 @@ import core.game.world.map.RegionManager import core.game.world.update.flag.context.Animation import core.plugin.Initializable import rs09.game.content.dialogue.DialogueFile +import rs09.game.interaction.InteractionListeners import rs09.game.interaction.SpadeDigListener import rs09.game.system.command.Command -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.tools.END_DIALOGUE import java.util.* @@ -105,7 +106,7 @@ class FunCommandSet : CommandSet(Command.Privilege.ADMIN) { player.appearance.rideCart(boneMode) if (player.appearance.isRidingMinecart) { var i = 0 - World.Pulser.submit(object : Pulse(1, player) { + GameWorld.Pulser.submit(object : Pulse(1, player) { override fun pulse(): Boolean { if (i++ % 12 == 0) player.sendChat("I want to get off Mr. Bones Wild Ride.") player.moveStep() diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/ModerationCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/ModerationCommandSet.kt index e70c79184..d6a9e47d6 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/ModerationCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/ModerationCommandSet.kt @@ -4,7 +4,7 @@ import core.game.node.entity.player.Player import core.game.node.entity.player.info.Rights import rs09.game.system.command.Command import core.game.system.task.Pulse -import rs09.game.world.World +import rs09.game.world.GameWorld import core.game.world.map.Location import rs09.game.world.repository.Repository import core.plugin.Initializable @@ -66,7 +66,7 @@ class ModerationCommandSet : CommandSet(Command.Privilege.MODERATOR){ notify(player, "Jailing ${otherPlayer!!.username} for $timeSeconds seconds.") notify(otherPlayer, "${player.username} has jailed you for $timeSeconds seconds.") - World.Pulser.submit(object : Pulse(3){ + GameWorld.Pulser.submit(object : Pulse(3){ val originalLoc = otherPlayer.location val releaseTime = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(timeSeconds.toLong()) override fun pulse(): Boolean { diff --git a/Server/src/main/kotlin/rs09/game/system/config/GroundSpawnLoader.kt b/Server/src/main/kotlin/rs09/game/system/config/GroundSpawnLoader.kt index ef2e3a83b..391369675 100644 --- a/Server/src/main/kotlin/rs09/game/system/config/GroundSpawnLoader.kt +++ b/Server/src/main/kotlin/rs09/game/system/config/GroundSpawnLoader.kt @@ -10,7 +10,7 @@ import org.json.simple.JSONObject import org.json.simple.parser.JSONParser import rs09.ServerConstants import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld import rs09.game.world.repository.Repository import java.io.FileReader import java.nio.ByteBuffer @@ -86,7 +86,7 @@ class GroundSpawnLoader { } override fun respawn() { - World.Pulser.submit(object : Pulse(respawnDuration) { + GameWorld.Pulser.submit(object : Pulse(respawnDuration) { override fun pulse(): Boolean { GroundItemManager.create(this@GroundSpawn) return true diff --git a/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt b/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt index 3efd0ba9b..4c3f18b75 100644 --- a/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt +++ b/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt @@ -2,11 +2,13 @@ package rs09.game.system.config import com.moandjiezana.toml.Toml import core.game.world.map.Location +import core.tools.StringUtils import core.tools.mysql.Database +import rs09.JSONUtils.Companion.parsePath import rs09.ServerConstants import rs09.game.system.SystemLogger -import rs09.game.world.WorldSettings -import rs09.game.world.World +import rs09.game.world.GameSettings +import rs09.game.world.GameWorld import java.io.File import kotlin.system.exitProcess @@ -42,7 +44,7 @@ object ServerConfigParser { tomlData ?: return val data = tomlData!! - World.settings = WorldSettings( + GameWorld.settings = GameSettings( name = ServerConstants.SERVER_NAME, isBeta = data.getBoolean("world.debug"), isDevMode = data.getBoolean("world.dev"), @@ -96,8 +98,6 @@ object ServerConfigParser { ServerConstants.HOME_LOCATION = parseLocation(data.getString("world.home_location")) ServerConstants.START_LOCATION = parseLocation(data.getString("world.new_player_location")) ServerConstants.DAILY_RESTART = data.getBoolean("world.daily_restart") - ServerConstants.ALLOW_GUI = data.getBoolean("world.start_gui") - ServerConstants.GRAND_EXCHANGE_DATA_PATH = data.getPath("paths.eco_data") } diff --git a/Server/src/main/kotlin/rs09/game/world/WorldSettings.kt b/Server/src/main/kotlin/rs09/game/world/GameSettings.kt similarity index 98% rename from Server/src/main/kotlin/rs09/game/world/WorldSettings.kt rename to Server/src/main/kotlin/rs09/game/world/GameSettings.kt index 31ee5afcb..b3c2d9b82 100644 --- a/Server/src/main/kotlin/rs09/game/world/WorldSettings.kt +++ b/Server/src/main/kotlin/rs09/game/world/GameSettings.kt @@ -9,7 +9,7 @@ import java.util.* * Represents the game settings used for this game instance. * @author Vexia */ -class WorldSettings +class GameSettings /** * Constructs a new `GameSettings` `Object`. * @param name the name. @@ -112,7 +112,7 @@ class WorldSettings * @return the settings object. * @author Ceikry */ - fun parse(data: JSONObject): WorldSettings? { + fun parse(data: JSONObject): GameSettings? { val name = ServerConstants.SERVER_NAME val debug = data["debug"] as Boolean val dev = data["dev"] as Boolean @@ -135,7 +135,7 @@ class WorldSettings val allow_token_purchase = data["allow_token_purchase"] as Boolean val message_of_the_week_identifier = data["message_of_the_week_identifier"].toString().toInt() val message_of_the_week_text = data["message_of_the_week_text"].toString() - return WorldSettings( + return GameSettings( name, debug, dev, diff --git a/Server/src/main/kotlin/rs09/game/world/GameWorld.kt b/Server/src/main/kotlin/rs09/game/world/GameWorld.kt new file mode 100644 index 000000000..bbbf0824e --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/world/GameWorld.kt @@ -0,0 +1,185 @@ +package rs09.game.world + +import core.cache.Cache +import core.cache.def.impl.SceneryDefinition +import core.game.ge.GrandExchangeDatabase +import core.game.node.entity.npc.drop.RareDropTable +import core.game.node.entity.player.Player +import core.game.system.SystemManager +import core.game.system.SystemState +import core.game.system.task.Pulse +import core.game.system.task.TaskExecutor +import core.game.world.map.Location +import core.game.world.map.RegionManager +import core.plugin.CorePluginTypes.StartupPlugin +import core.tools.RandomFunction +import core.tools.mysql.DatabaseManager +import rs09.game.ai.general.scriptrepository.PlayerScripts +import rs09.ServerConstants +import rs09.game.node.entity.state.newsys.StateRepository +import rs09.game.system.SystemLogger +import rs09.game.system.SystemLogger.logInfo +import rs09.game.system.config.ConfigParser +import rs09.game.world.callback.CallbackHub +import rs09.game.world.repository.Repository +import rs09.plugin.PluginManager +import rs09.worker.MajorUpdateWorker +import java.text.SimpleDateFormat +import java.util.* +import java.util.function.Consumer + +/** + * Represents the game world. + * @author Ceikry + */ +object GameWorld { + + /** + * The major update worker. + */ + @JvmStatic + val majorUpdateWorker = MajorUpdateWorker() + + @JvmStatic + val STARTUP_PLUGINS: List = ArrayList() + private val configParser = ConfigParser() + @JvmStatic + var PCBotsSpawned = false + @JvmStatic + var PCnBotsSpawned = false + @JvmStatic + var PCiBotsSpawned = false + /** + * The game settings to use. + */ + @JvmStatic + var settings: GameSettings? = null + /** + * The current amount of (600ms) cycles elapsed. + */ + @JvmStatic + var ticks = 0 + @JvmStatic + var databaseManager: DatabaseManager? = null + private set + + @JvmStatic + var Pulser = PulseRunner() + + /** + * Submits a pulse. + * + * @param pulse the pulse. + */ + @Deprecated("", ReplaceWith("Pulser.submit(pulse!!)", "core.game.world.GameWorld.Pulser")) + fun submit(pulse: Pulse?) { + Pulser.submit(pulse!!) + } + + fun pulse() { + ticks++ + if (ticks % 50 == 0) { + TaskExecutor.execute { + val player = Repository.players + try { + player.stream().filter { obj: Player? -> Objects.nonNull(obj) }.filter { p: Player -> !p.isArtificial && p.isPlaying }.forEach { p: Player? -> Repository.disconnectionQueue.save(p!!, false) } + } catch (t: Throwable) { + t.printStackTrace() + } + } + } + } + + fun checkDay(): Int { + val weeklySdf = SimpleDateFormat("u") + return weeklySdf.format(Date()).toInt() + } + + /** + * Prompts the [GameWorld] to begin it's initialization. + * + * @param directory the directory to the properties. + * @throws Throwable when the exception occurs. + */ + @Throws(Throwable::class) + fun prompt(directory: String?) { + prompt(true, directory) + } + + /** + * Prompts the game world. + * + * @param running if running. + * @throws Throwable the throwable. + */ + @Throws(Throwable::class) + @JvmStatic + fun prompt(running: Boolean) { + prompt(running, "server.properties") + } + + /** + * Prompts the [GameWorld] to begin its initialization. + * + * @param run If the server should be running. + * @param directory the path to the dir. + * @throws Throwable When an exception occurs. + */ + @Throws(Throwable::class) + fun prompt(run: Boolean, directory: String?){ + SystemLogger.logInfo("Prompting ${settings?.name} Game World...") + Cache.init(ServerConstants.CACHE_PATH) + databaseManager = DatabaseManager(ServerConstants.DATABASE) + databaseManager!!.connect() + GrandExchangeDatabase.init() + configParser.prePlugin() + PluginManager.init() + configParser.postPlugin() + RareDropTable.init() + logInfo("Initialized Rare Drop Table from " + ServerConstants.RDT_DATA_PATH) + if (settings!!.enable_bots) { + ImmerseWorld.init() + } + CallbackHub.call() + STARTUP_PLUGINS.forEach(Consumer { plugin: StartupPlugin? -> + plugin?.run() + }) + if (run) { + SystemManager.flag(if (settings?.isDevMode == true) SystemState.PRIVATE else SystemState.ACTIVE) + } + SceneryDefinition.getDefinitions().values.forEach(Consumer { obj: SceneryDefinition -> obj.examine }) + System.gc() + PlayerScripts.init() + StateRepository.init() + SystemLogger.initTradeLogger() + } + + /** + * Called when the server shuts down. + * + * @throws Throwable When an exception occurs. + */ + @Throws(Throwable::class) + fun shutdown() { + SystemManager.flag(SystemState.TERMINATED) + } + + /** + * Checks if its the economy world. + * + * @return `True` if so. + */ + @JvmStatic + val isEconomyWorld: Boolean + get() = false + + private fun generateLocation(): Location { + val random_location = Location(3075 + RandomFunction.random(-15, 15), 3954 + RandomFunction.random(-15, 15), 0) + if (!RegionManager.isTeleportPermitted(random_location)) { + return generateLocation() + } + return if (RegionManager.getObject(random_location) != null) { + generateLocation() + } else random_location + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt b/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt index e50b0a120..4d5af3e6a 100644 --- a/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt +++ b/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt @@ -27,7 +27,7 @@ object ImmerseWorld { } fun immerseAdventurer(){ val lumbridge = Location.create(3221, 3219, 0) - for(i in (0..(World.settings?.max_adv_bots ?: 50))){ + for(i in (0..(GameWorld.settings?.max_adv_bots ?: 50))){ GeneralBotCreator(Adventurer(CombatStyle.MELEE), assembler.MeleeAdventurer(CombatBotAssembler.Tier.LOW,lumbridge)) GeneralBotCreator(Adventurer(CombatStyle.MELEE), assembler.MeleeAdventurer(CombatBotAssembler.Tier.MED,lumbridge)) GeneralBotCreator(Adventurer(CombatStyle.RANGE), assembler.RangeAdventurer(CombatBotAssembler.Tier.MED,lumbridge)) diff --git a/Server/src/main/kotlin/rs09/game/world/World.kt b/Server/src/main/kotlin/rs09/game/world/World.kt deleted file mode 100644 index f9ffc5706..000000000 --- a/Server/src/main/kotlin/rs09/game/world/World.kt +++ /dev/null @@ -1,155 +0,0 @@ -package rs09.game.world - -import api.* -import core.cache.Cache -import core.cache.def.impl.SceneryDefinition -import core.game.ge.GrandExchangeDatabase -import core.game.node.entity.npc.drop.RareDropTable -import core.game.node.entity.player.Player -import core.game.system.SystemManager -import core.game.system.SystemState -import core.game.system.task.Pulse -import core.game.system.task.TaskExecutor -import core.game.world.map.Location -import core.game.world.map.RegionManager -import core.plugin.CorePluginTypes.Managers -import core.plugin.CorePluginTypes.StartupPlugin -import core.tools.RandomFunction -import core.tools.mysql.DatabaseManager -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import rs09.Server -import rs09.game.ai.general.scriptrepository.PlayerScripts -import rs09.ServerConstants -import rs09.ServerStore -import rs09.game.ai.general.GeneralBotCreator -import rs09.game.node.entity.state.newsys.StateRepository -import rs09.game.system.SystemLogger -import rs09.game.system.SystemLogger.logInfo -import rs09.game.system.config.ConfigParser -import rs09.game.world.callback.CallbackHub -import rs09.game.world.repository.Repository -import rs09.game.world.update.UpdateSequence -import rs09.net.packet.PacketWriteQueue -import rs09.plugin.PluginManager -import rs09.tools.stringtools.colorize -import rs09.worker.WorldClock -import java.text.SimpleDateFormat -import java.util.* -import java.util.function.Consumer -import kotlin.system.exitProcess - -/** - * Represents the game world. - * @author Ceikry - */ -object World { - @JvmStatic - val clock = WorldClock() - - @JvmStatic - val STARTUP_PLUGINS: List = ArrayList() - - @JvmStatic - var PCnBotsSpawned = false - - @JvmStatic - var PCiBotsSpawned = false - - @JvmStatic - var settings: WorldSettings? = null - - @JvmStatic - var ticks = 0 - - @JvmStatic - var databaseManager: DatabaseManager? = null - private set - - val sequence = UpdateSequence() - - @JvmStatic - var Pulser = PulseRunner() - - /** - * Submits a pulse. - * - * @param pulse the pulse. - */ - @Deprecated("", ReplaceWith("Pulser.submit(pulse!!)", "core.game.world.GameWorld.Pulser")) - fun submit(pulse: Pulse?) { - Pulser.submit(pulse!!) - } - - fun tick() { - ticks++ - if (ticks % 50 == 0) { - TaskExecutor.execute { - val player = Repository.players - try { - player.stream().filter { obj: Player? -> Objects.nonNull(obj) }.filter { p: Player -> !p.isArtificial && p.isPlaying }.forEach { p: Player? -> Repository.disconnectionQueue.save(p!!, false) } - } catch (t: Throwable) { - t.printStackTrace() - } - } - } - - val rmlist = ArrayList() - val list = ArrayList(Pulser.TASKS) - - //run our pulses - for(pulse in list) { - val b = System.currentTimeMillis() - if (pulse == null || pulse.update()) rmlist.add(pulse) - - val time = System.currentTimeMillis() - b - - if(time >= 100){ - if(pulse is GeneralBotCreator.BotScriptPulse){ - SystemLogger.logWarn("CRITICALLY Long Botscript Tick: ${pulse.botScript.javaClass.name} - $time ms") - } else { - SystemLogger.logWarn("CRITICALLY long running pulse: ${pulse.javaClass.name} - $time ms") - } - } - else if(time >= 30){ - if(pulse is GeneralBotCreator.BotScriptPulse){ - SystemLogger.logWarn("Long Botscript Tick: ${pulse.botScript.javaClass.name} - $time ms") - } else { - SystemLogger.logWarn("Long Running Pulse: ${pulse.javaClass.name} - $time ms") - } - } - } - - //remove all null or finished pulses from the list - rmlist.forEach { - if(Pulser.TASKS.contains(it)) World.Pulser.TASKS.remove(it) - } - - rmlist.clear() - //perform our update sequence where we write masks, etc - try { - sequence.start() - sequence.run() - sequence.end() - GlobalScope.launch { - PacketWriteQueue.flush() - } - } catch (e: Exception){ - e.printStackTrace() - } - //disconnect all players waiting to be disconnected - Repository.disconnectionQueue.update() - //tick all manager plugins - Managers.tick() - } - - /** - * Checks if its the economy world. - * - * @return `True` if so. - */ - @JvmStatic - val isEconomyWorld: Boolean - get() = false - -} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/world/callback/CallbackHub.kt b/Server/src/main/kotlin/rs09/game/world/callback/CallbackHub.kt index 142073581..c04369b71 100644 --- a/Server/src/main/kotlin/rs09/game/world/callback/CallbackHub.kt +++ b/Server/src/main/kotlin/rs09/game/world/callback/CallbackHub.kt @@ -16,6 +16,7 @@ object CallbackHub { private var calls: MutableList = ArrayList() fun call(): Boolean { + calls.add(ZoneBuilder()) calls.add(GrandExchange) calls.add(ImpetuousImpulses()) for (call in calls) { diff --git a/Server/src/main/kotlin/rs09/game/world/repository/DisconnectionQueue.kt b/Server/src/main/kotlin/rs09/game/world/repository/DisconnectionQueue.kt index ad4bf8f62..5ee8ecab6 100644 --- a/Server/src/main/kotlin/rs09/game/world/repository/DisconnectionQueue.kt +++ b/Server/src/main/kotlin/rs09/game/world/repository/DisconnectionQueue.kt @@ -4,7 +4,7 @@ import core.game.node.entity.player.Player import core.game.node.entity.player.info.login.PlayerParser import core.game.system.task.TaskExecutor import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld import java.util.* import java.util.concurrent.ConcurrentHashMap @@ -22,7 +22,7 @@ class DisconnectionQueue { * Updates all entries. */ fun update() { - if (queue.isEmpty() || World.ticks % 3 != 0 && World.settings?.isDevMode != true) { + if (queue.isEmpty() || GameWorld.ticks % 3 != 0 && GameWorld.settings?.isDevMode != true) { return } //make a copy of current entries as to avoid concurrency exceptions @@ -183,7 +183,7 @@ class DisconnectionQueue { * @param clear If the player should be cleared. */ init { - timeStamp = World.ticks + timeStamp = GameWorld.ticks } } diff --git a/Server/src/main/kotlin/rs09/game/world/update/NPCRenderer.kt b/Server/src/main/kotlin/rs09/game/world/update/NPCRenderer.kt index 35b268008..14afa209c 100644 --- a/Server/src/main/kotlin/rs09/game/world/update/NPCRenderer.kt +++ b/Server/src/main/kotlin/rs09/game/world/update/NPCRenderer.kt @@ -5,7 +5,7 @@ import core.game.node.entity.player.Player import core.game.world.map.RegionManager import core.net.packet.IoBuffer import core.net.packet.PacketHeader -import rs09.game.world.World +import rs09.game.world.GameWorld import java.nio.ByteBuffer import java.util.* @@ -72,7 +72,7 @@ object NPCRenderer { buffer.putBits(14, npc.id) buffer.putBits(5, offsetX) if (npc.aggressiveHandler != null) { - npc.aggressiveHandler.playerTolerance[player.index] = World.ticks + npc.aggressiveHandler.playerTolerance[player.index] = GameWorld.ticks } localNPCs.add(npc) } diff --git a/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt b/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt index 0d348e162..1dfcecf72 100644 --- a/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt +++ b/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt @@ -14,12 +14,12 @@ import core.game.system.task.TaskExecutor import core.net.Constants import core.net.IoReadEvent import core.net.IoSession +import core.net.amsc.WorldCommunicator import core.tools.StringUtils import rs09.ServerConstants import rs09.game.node.entity.player.info.login.LoginParser import rs09.game.system.SystemLogger import rs09.game.world.repository.Repository -import rs09.net.ms.ManagementServer import java.lang.Runnable import java.math.BigInteger import java.nio.ByteBuffer @@ -136,7 +136,11 @@ class LoginReadEvent val parser = LoginParser(details, LoginType.fromType(opcode)) details.session = session details.info.translate(UIDInfo(details.ipAddress, ByteBufferUtils.getString(buffer), ByteBufferUtils.getString(buffer), ByteBufferUtils.getString(buffer))) - ManagementServer.attemptLogin(parser) + if (WorldCommunicator.isEnabled()) { + WorldCommunicator.register(parser) + } else { + TaskExecutor.executeSQL {parser.run()} + } } /** diff --git a/Server/src/main/kotlin/rs09/net/ms/ManagementServer.kt b/Server/src/main/kotlin/rs09/net/ms/ManagementServer.kt deleted file mode 100644 index fdec32345..000000000 --- a/Server/src/main/kotlin/rs09/net/ms/ManagementServer.kt +++ /dev/null @@ -1,177 +0,0 @@ -package rs09.net.ms - -import core.game.node.entity.player.info.login.Response -import core.net.IoEventHandler -import core.net.IoSession -import core.net.ServerSocketConnection -import core.net.ms.MSPacketRepository -import core.net.producer.MSHSEventProducer -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import rs09.game.node.entity.player.info.login.LoginParser -import rs09.game.system.SystemLogger -import rs09.game.world.World -import java.net.InetSocketAddress -import java.nio.channels.SelectionKey -import java.nio.channels.Selector -import java.nio.channels.SocketChannel -import java.util.concurrent.Executors -import kotlin.Exception -import kotlin.system.exitProcess - -/** - * Server-side model of the management server. - * Responsible for connecting to and processing interactions with the MS. - * @author Ceikry - */ -object ManagementServer { - val service = Executors.newSingleThreadExecutor() - val eventHandler = IoEventHandler(service) - var channel: ServerSocketConnection? = null - - @JvmField - var session: IoSession? = null - - @JvmField - val handshakeProducer = MSHSEventProducer() - - private val loginAttempts = HashMap() - - /** - * The current state of our connection with the management server. - * In DISCONNECTED state, we are not communicating with the MS at all. - * In CONNECTED state, we have made connection with the MS and are sending and receiving info. - * In CONNECTING state, we are attempting to form a connection with the MS and are not yet sending or receiving data. - */ - var state = ManagementState.CONNECTING - @JvmStatic - set(value) { - if(value != ManagementState.DISCONNECTED && (field == ManagementState.DISCONNECTED || field == ManagementState.DISCONNECTING)){ - return - } - field = value - if(channel != null) channel!!.selector.wakeup() - } - - @JvmStatic - fun attemptLogin(parser: LoginParser){ - if(state == ManagementState.DISCONNECTED){ - parser.details.session!!.write(Response.LOGIN_SERVER_OFFLINE, true) - return - } - - val lastAttempt = loginAttempts[parser.details.username]?.timeStamp ?: -50 - - if(World.ticks - lastAttempt < 50){ - SystemLogger.logAlert("User tried to log in too frequently: ${parser.details.username}") - parser.details.session!!.write(Response.ALREADY_ONLINE, true) - return - } - - loginAttempts[parser.details.username] = parser - - GlobalScope.launch { - if(!parser.details.parse()){ - parser.details.session!!.write(Response.LOGIN_SERVER_OFFLINE, true) - return@launch - } - MSPacketRepository.sendPlayerRegistry(parser) - } - } - - @JvmStatic - fun finishLoginAttempt(username: String): LoginParser? { - return loginAttempts.remove(username) - } - - fun connect() { - SystemLogger.logInfo("[MS] Sending world registration request") - Thread { - while(state != ManagementState.DISCONNECTED){ - when(state){ - - ManagementState.CONNECTING, ManagementState.CONNECTED -> { - if(session == null || this.channel == null) { - val selector = Selector.open() - val channel = SocketChannel.open() - channel.configureBlocking(false) - channel.socket().keepAlive = true - channel.socket().tcpNoDelay = true - channel.connect(InetSocketAddress(World.settings!!.msAddress, 5555)) - channel.register(selector, SelectionKey.OP_CONNECT) - this.channel = ServerSocketConnection(selector, channel) - } - - try { - channel!!.selector.select() //Await a connection response - } catch (e: Exception) {e.printStackTrace()} - - val keyIterator = channel!!.selector.selectedKeys().iterator() - while(keyIterator.hasNext()){ - val key = keyIterator.next() - keyIterator.remove() - try { - if(!key.isValid || !key.channel().isOpen){ - key.cancel() - continue - } - - if(key.isConnectable && state == ManagementState.CONNECTING){ - val ch = key.channel() as SocketChannel - if(ch.finishConnect()){ - key.interestOps(key.interestOps() xor SelectionKey.OP_CONNECT) - key.interestOps(key.interestOps() or SelectionKey.OP_READ) - session = IoSession(key, service) - key.attach(session) - session!!.producer = handshakeProducer - session!!.write(true) - } - } - - if(key.isReadable) eventHandler.read(key) - if(key.isWritable) eventHandler.write(key) - } catch (e: Exception){ - key.cancel() - if(session != null){ - session!!.disconnect() - state = ManagementState.DISCONNECTED - } - } - } - } - - ManagementState.DISCONNECTING -> { - if(session != null) session!!.disconnect() - if(channel != null) channel!!.socket.close() - state = ManagementState.DISCONNECTED - } - - ManagementState.DISCONNECTED -> {} - } - } - }.start() - } - - @JvmStatic - fun flagConnected(){ - state = ManagementState.CONNECTED - } - - @JvmStatic - fun flagCantConnect(){ - exitProcess(0) - } - - @JvmStatic - fun disconnect() { - state = ManagementState.DISCONNECTING - } - - @JvmStatic - fun getStateValue(): Int { - return when(state){ - ManagementState.CONNECTING -> 1 - else -> 2 - } - } -} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/net/ms/ManagementState.kt b/Server/src/main/kotlin/rs09/net/ms/ManagementState.kt deleted file mode 100644 index 683ac808f..000000000 --- a/Server/src/main/kotlin/rs09/net/ms/ManagementState.kt +++ /dev/null @@ -1,8 +0,0 @@ -package rs09.net.ms - -enum class ManagementState { - CONNECTING, - CONNECTED, - DISCONNECTING, - DISCONNECTED -} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt b/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt index e8a08faa2..445ad9f9f 100644 --- a/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt +++ b/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt @@ -3,6 +3,7 @@ package rs09.net.packet import core.net.packet.OutgoingPacket import core.net.packet.out.* import gui.GuiEvent +import gui.ServerMonitor import rs09.game.system.SystemLogger import java.util.* @@ -29,7 +30,7 @@ object PacketWriteQueue { @JvmStatic fun flush(){ - //ServerMonitor.eventQueue.add(GuiEvent.UpdateQueuedPackets(PacketsToWrite.size)) + ServerMonitor.eventQueue.add(GuiEvent.UpdateQueuedPackets(PacketsToWrite.size)) while(!PacketsToWrite.isEmpty()){ val p = PacketsToWrite.poll() ?: continue write(p.out,p.context) diff --git a/Server/src/main/kotlin/rs09/net/packet/in/QuickChatPacketHandler.kt b/Server/src/main/kotlin/rs09/net/packet/in/QuickChatPacketHandler.kt index c80c8e832..311c0d57e 100644 --- a/Server/src/main/kotlin/rs09/net/packet/in/QuickChatPacketHandler.kt +++ b/Server/src/main/kotlin/rs09/net/packet/in/QuickChatPacketHandler.kt @@ -5,7 +5,7 @@ import core.net.packet.IncomingPacket import core.net.packet.IoBuffer import rs09.game.interaction.QCRepository import rs09.game.system.SystemLogger -import rs09.game.world.World +import rs09.game.world.GameWorld /** * Decodes the quick chat packet @@ -56,7 +56,7 @@ class QuickChatPacketHandler : IncomingPacket { //Prints the values of each byte in the buffer to server log //If the world is in dev mode - if(World.settings?.isDevMode == true) { + if(GameWorld.settings?.isDevMode == true) { SystemLogger.logInfo("Begin QuickChat Packet Buffer Dump---------") SystemLogger.logInfo("Packet Type: ${packetType.name} Chat Type: ${if(forClan) "Clan" else "Public"}") x?.array()?.forEach { diff --git a/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt b/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt new file mode 100644 index 000000000..84e8482a2 --- /dev/null +++ b/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt @@ -0,0 +1,135 @@ +package rs09.worker + +import api.submitWorldPulse +import core.game.system.SystemManager +import core.game.system.SystemState +import core.game.system.task.Pulse +import core.plugin.CorePluginTypes.Managers +import gui.GuiEvent +import gui.ServerMonitor +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import rs09.Server +import rs09.ServerConstants +import rs09.ServerStore +import rs09.game.ai.general.GeneralBotCreator +import rs09.game.system.SystemLogger +import rs09.game.world.GameWorld +import rs09.game.world.repository.Repository +import rs09.game.world.update.UpdateSequence +import rs09.net.packet.PacketWriteQueue +import rs09.tools.stringtools.colorize +import java.lang.Long.max +import java.lang.Long.min +import java.text.SimpleDateFormat +import java.util.* +import kotlin.collections.ArrayList +import kotlin.system.exitProcess + +/** + * Handles the running of pulses and writing of masks, etc + * @author Ceikry + */ +class MajorUpdateWorker { + var started = false + val sequence = UpdateSequence() + val sdf = SimpleDateFormat("HHmmss") + val worker = Thread { + Thread.currentThread().name = "Major Update Worker" + started = true + Thread.sleep(600L) + while(true){ + val start = System.currentTimeMillis() + val rmlist = ArrayList() + val list = ArrayList(GameWorld.Pulser.TASKS) + Server.heartbeat() + + //run our pulses + for(pulse in list) { + val b = System.currentTimeMillis() + if (pulse == null || pulse.update()) rmlist.add(pulse) + + val time = System.currentTimeMillis() - b + + if(time >= 100){ + if(pulse is GeneralBotCreator.BotScriptPulse){ + SystemLogger.logWarn("CRITICALLY Long Botscript Tick: ${pulse.botScript.javaClass.name} - $time ms") + } else { + SystemLogger.logWarn("CRITICALLY long running pulse: ${pulse.javaClass.name} - $time ms") + } + } + else if(time >= 30){ + if(pulse is GeneralBotCreator.BotScriptPulse){ + SystemLogger.logWarn("Long Botscript Tick: ${pulse.botScript.javaClass.name} - $time ms") + } else { + SystemLogger.logWarn("Long Running Pulse: ${pulse.javaClass.name} - $time ms") + } + } + } + + //remove all null or finished pulses from the list + rmlist.forEach { + if(GameWorld.Pulser.TASKS.contains(it)) GameWorld.Pulser.TASKS.remove(it) + } + + rmlist.clear() + //perform our update sequence where we write masks, etc + try { + sequence.start() + sequence.run() + sequence.end() + GlobalScope.launch { + PacketWriteQueue.flush() + } + } catch (e: Exception){ + e.printStackTrace() + } + //increment global ticks variable + GameWorld.pulse() + //disconnect all players waiting to be disconnected + Repository.disconnectionQueue.update() + //tick all manager plugins + Managers.tick() + + //Handle daily restart if enabled + if(sdf.format(Date()).toInt() == 0){ + + if(GameWorld.checkDay() == 1) {//monday + ServerStore.clearWeeklyEntries() + } + + ServerStore.clearDailyEntries() + if(ServerConstants.DAILY_RESTART ) { + Repository.sendNews(colorize("%RSERVER GOING DOWN FOR DAILY RESTART IN 5 MINUTES!")) + ServerConstants.DAILY_RESTART = false + submitWorldPulse(object : Pulse(100) { + var counter = 0 + override fun pulse(): Boolean { + counter++ + if (counter == 5) { + exitProcess(0) + } + Repository.sendNews(colorize("%RSERVER GOING DOWN FOR DAILY RESTART IN ${5 - counter} MINUTE${if (counter < 4) "S" else ""}!")) + return false + } + }) + } + } + + val end = System.currentTimeMillis() + ServerMonitor.eventQueue.add(GuiEvent.UpdateTickTime(end - start)) + ServerMonitor.eventQueue.add(GuiEvent.UpdatePulseCount(GameWorld.Pulser.TASKS.size)) + Thread.sleep(max(600 - (end - start), 0)) + } + } + + fun start() { + if(!started){ + worker.start() + } + + if (ServerConstants.ALLOW_GUI) + ServerMonitor.open() + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/worker/WorldClock.kt b/Server/src/main/kotlin/rs09/worker/WorldClock.kt deleted file mode 100644 index fc11a7ba7..000000000 --- a/Server/src/main/kotlin/rs09/worker/WorldClock.kt +++ /dev/null @@ -1,86 +0,0 @@ -package rs09.worker - -import api.* -import core.game.system.task.Pulse -import core.plugin.CorePluginTypes.Managers -import gui.GuiEvent -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import rs09.Server -import rs09.ServerConstants -import rs09.ServerStore -import rs09.game.ai.general.GeneralBotCreator -import rs09.game.system.SystemLogger -import rs09.game.world.World -import rs09.game.world.repository.Repository -import rs09.game.world.update.UpdateSequence -import rs09.net.packet.PacketWriteQueue -import rs09.tools.stringtools.colorize -import java.lang.Long.max -import java.text.SimpleDateFormat -import java.util.* -import kotlin.collections.ArrayList -import kotlin.system.exitProcess - -/** - * Handles the running of pulses and writing of masks, etc - * @author Ceikry - */ -class WorldClock { - var started = false - private val sdf = SimpleDateFormat("HHmmss") - private val worker = Thread { - Thread.currentThread().name = "Major Update Worker" - started = true - Thread.sleep(600L) - while(true){ - val start = System.currentTimeMillis() - try { - World.tick() - } catch(e: Exception){ - SystemLogger.logErr(e.stackTraceToString()) - } - //Handle daily restart if enabled - if(sdf.format(Date()).toInt() == 0){ - - if(checkDay() == 1) {//monday - ServerStore.clearWeeklyEntries() - } - - ServerStore.clearDailyEntries() - if(ServerConstants.DAILY_RESTART) { - sendNews(colorize("%RSERVER GOING DOWN FOR DAILY RESTART IN 5 MINUTES!")) - ServerConstants.DAILY_RESTART = false - submitWorldPulse(object : Pulse(100) { - var counter = 0 - override fun pulse(): Boolean { - counter++ - if (counter == 5) { - exitProcess(0) - } - sendNews(colorize("%RSERVER GOING DOWN FOR DAILY RESTART IN ${5 - counter} MINUTE${if (counter < 4) "S" else ""}!")) - return false - } - }) - } - } - val end = System.currentTimeMillis() - //ServerMonitor.eventQueue.add(GuiEvent.UpdateTickTime(end - start)) - //ServerMonitor.eventQueue.add(GuiEvent.UpdatePulseCount(World.Pulser.TASKS.size)) - Server.lastHeartbeat = System.currentTimeMillis() - Thread.sleep(max(600 - (end - start), 0)) - } - } - - fun start() { - if(!started){ - worker.start() - } - - } - - fun checkDay(): Int { - val weeklySdf = SimpleDateFormat("u") - return weeklySdf.format(Date()).toInt() - } -} \ No newline at end of file