Showing preview only (2,119K chars total). Download the full file or copy to clipboard to get everything.
Repository: SirBlobman/CombatLogX
Branch: main
Commit: dc68f1559e9b
Files: 662
Total size: 1.8 MB
Directory structure:
gitextract_cpkbyraw/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug-report.yml
│ │ ├── config.yml
│ │ ├── expansion-request.yml
│ │ └── feature-requests.yml
│ ├── PULL_REQUEST_TEMPLATE/
│ │ └── default.md
│ ├── dependabot.yml
│ └── funding.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.MD
├── Jenkinsfile
├── LICENSE
├── README.MD
├── SECURITY.md
├── api/
│ ├── README.MD
│ ├── build.gradle.kts
│ ├── gradle.properties
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── sirblobman/
│ │ └── combatlogx/
│ │ └── api/
│ │ ├── ICombatLogX.java
│ │ ├── ICombatLogXNeeded.java
│ │ ├── command/
│ │ │ ├── CombatLogCommand.java
│ │ │ └── CombatLogPlayerCommand.java
│ │ ├── configuration/
│ │ │ ├── CommandConfiguration.java
│ │ │ ├── MainConfiguration.java
│ │ │ └── PunishConfiguration.java
│ │ ├── event/
│ │ │ ├── CustomPlayerEvent.java
│ │ │ ├── CustomPlayerEventCancellable.java
│ │ │ ├── NPCDropItemEvent.java
│ │ │ ├── PlayerEnemyRemoveEvent.java
│ │ │ ├── PlayerPreTagEvent.java
│ │ │ ├── PlayerPunishEvent.java
│ │ │ ├── PlayerReTagEvent.java
│ │ │ ├── PlayerTagEvent.java
│ │ │ └── PlayerUntagEvent.java
│ │ ├── expansion/
│ │ │ ├── Expansion.java
│ │ │ ├── ExpansionClassLoader.java
│ │ │ ├── ExpansionComparator.java
│ │ │ ├── ExpansionDescription.java
│ │ │ ├── ExpansionDescriptionBuilder.java
│ │ │ ├── ExpansionListener.java
│ │ │ ├── ExpansionLogger.java
│ │ │ ├── ExpansionManager.java
│ │ │ ├── ExpansionWithDependencies.java
│ │ │ ├── disguise/
│ │ │ │ ├── DisguiseExpansion.java
│ │ │ │ ├── DisguiseExpansionListener.java
│ │ │ │ ├── DisguiseHandler.java
│ │ │ │ └── DisguiseListener.java
│ │ │ ├── region/
│ │ │ │ ├── RegionExpansion.java
│ │ │ │ ├── RegionHandler.java
│ │ │ │ ├── configuration/
│ │ │ │ │ └── RegionExpansionConfiguration.java
│ │ │ │ ├── listener/
│ │ │ │ │ ├── RegionExpansionListener.java
│ │ │ │ │ ├── RegionMoveListener.java
│ │ │ │ │ ├── RegionTeleportListener.java
│ │ │ │ │ └── RegionVulnerableListener.java
│ │ │ │ └── task/
│ │ │ │ └── KnockbackPlayerTask.java
│ │ │ ├── skyblock/
│ │ │ │ ├── IslandWrapper.java
│ │ │ │ ├── SkyBlockExpansion.java
│ │ │ │ ├── SkyBlockExpansionListener.java
│ │ │ │ ├── SkyBlockHandler.java
│ │ │ │ └── SkyBlockListener.java
│ │ │ └── vanish/
│ │ │ ├── VanishExpansion.java
│ │ │ ├── VanishExpansionConfiguration.java
│ │ │ ├── VanishExpansionListener.java
│ │ │ ├── VanishHandler.java
│ │ │ └── VanishListener.java
│ │ ├── listener/
│ │ │ └── CombatListener.java
│ │ ├── manager/
│ │ │ ├── ICombatManager.java
│ │ │ ├── ICrystalManager.java
│ │ │ ├── IDeathManager.java
│ │ │ ├── IForgiveManager.java
│ │ │ ├── IPlaceholderManager.java
│ │ │ ├── IPunishManager.java
│ │ │ └── ITimerManager.java
│ │ ├── object/
│ │ │ ├── CitizensSlotType.java
│ │ │ ├── CombatTag.java
│ │ │ ├── KillTime.java
│ │ │ ├── NoEntryMode.java
│ │ │ ├── SpecialPunishCommand.java
│ │ │ ├── TagInformation.java
│ │ │ ├── TagReason.java
│ │ │ ├── TagType.java
│ │ │ ├── TimerType.java
│ │ │ ├── TimerUpdater.java
│ │ │ └── UntagReason.java
│ │ ├── placeholder/
│ │ │ ├── IPlaceholderExpansion.java
│ │ │ └── PlaceholderHelper.java
│ │ └── utility/
│ │ ├── CommandHelper.java
│ │ └── EntityHelper.java
│ └── resources/
│ └── default-region-expansion-config.yml
├── build.gradle.kts
├── builder/
│ ├── build.gradle.kts
│ └── src/
│ └── main/
│ └── resources/
│ └── README.TXT
├── crowdin.yml
├── expansion/
│ ├── action-bar/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── action/
│ │ │ └── bar/
│ │ │ ├── ActionBarExpansion.java
│ │ │ ├── ActionBarUpdater.java
│ │ │ └── configuration/
│ │ │ └── ActionBarConfiguration.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── boss-bar/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── boss/
│ │ │ └── bar/
│ │ │ ├── BossBarConfiguration.java
│ │ │ ├── BossBarExpansion.java
│ │ │ └── BossBarUpdater.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── build.gradle.kts
│ ├── cheat-prevention/
│ │ ├── abstract/
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── cheat/
│ │ │ └── prevention/
│ │ │ ├── ICheatPreventionExpansion.java
│ │ │ ├── configuration/
│ │ │ │ ├── IBlockConfiguration.java
│ │ │ │ ├── IBucketConfiguration.java
│ │ │ │ ├── IChatConfiguration.java
│ │ │ │ ├── ICommandConfiguration.java
│ │ │ │ ├── IConfiguration.java
│ │ │ │ ├── IEntityConfiguration.java
│ │ │ │ ├── IFlightConfiguration.java
│ │ │ │ ├── IGameModeConfiguration.java
│ │ │ │ ├── IInventoryConfiguration.java
│ │ │ │ ├── IItemConfiguration.java
│ │ │ │ ├── IPotionConfiguration.java
│ │ │ │ └── ITeleportConfiguration.java
│ │ │ └── listener/
│ │ │ └── CheatPreventionListener.java
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ ├── legacy/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── cheat/
│ │ │ └── prevention/
│ │ │ └── listener/
│ │ │ └── legacy/
│ │ │ ├── ListenerChat.java
│ │ │ ├── ListenerLegacyItemPickup.java
│ │ │ ├── ListenerLegacyPortalCreate.java
│ │ │ └── ListenerLegacyPotions.java
│ │ ├── modern/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── cheat/
│ │ │ └── prevention/
│ │ │ └── listener/
│ │ │ └── modern/
│ │ │ └── ListenerInventoriesModern.java
│ │ ├── paper/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── cheat/
│ │ │ └── prevention/
│ │ │ └── listener/
│ │ │ └── paper/
│ │ │ ├── ListenerPaperChat.java
│ │ │ └── ListenerPaperEntityInsideBlock.java
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── cheat/
│ │ │ └── prevention/
│ │ │ ├── CheatPreventionExpansion.java
│ │ │ ├── configuration/
│ │ │ │ ├── BlockConfiguration.java
│ │ │ │ ├── BucketConfiguration.java
│ │ │ │ ├── ChatConfiguration.java
│ │ │ │ ├── CheatPreventionConfiguration.java
│ │ │ │ ├── CommandConfiguration.java
│ │ │ │ ├── EntityConfiguration.java
│ │ │ │ ├── FlightConfiguration.java
│ │ │ │ ├── GameModeConfiguration.java
│ │ │ │ ├── InventoryConfiguration.java
│ │ │ │ ├── ItemConfiguration.java
│ │ │ │ ├── PotionConfiguration.java
│ │ │ │ └── TeleportConfiguration.java
│ │ │ ├── listener/
│ │ │ │ ├── ListenerBlocks.java
│ │ │ │ ├── ListenerBuckets.java
│ │ │ │ ├── ListenerCommands.java
│ │ │ │ ├── ListenerDrop.java
│ │ │ │ ├── ListenerElytra.java
│ │ │ │ ├── ListenerEnderPearl.java
│ │ │ │ ├── ListenerEntities.java
│ │ │ │ ├── ListenerFlight.java
│ │ │ │ ├── ListenerGameMode.java
│ │ │ │ ├── ListenerInventories.java
│ │ │ │ ├── ListenerRiptide.java
│ │ │ │ ├── ListenerTeleport.java
│ │ │ │ ├── ListenerTotem.java
│ │ │ │ └── modern/
│ │ │ │ ├── ListenerModernItemPickup.java
│ │ │ │ ├── ListenerModernPortalCreate.java
│ │ │ │ └── ListenerModernPotions.java
│ │ │ └── task/
│ │ │ ├── ElytraRetagTask.java
│ │ │ └── FlightRetagTask.java
│ │ └── resources/
│ │ ├── blocks.yml
│ │ ├── buckets.yml
│ │ ├── chat.yml
│ │ ├── commands.yml
│ │ ├── config.yml
│ │ ├── entities.yml
│ │ ├── expansion.yml
│ │ ├── flight.yml
│ │ ├── game-mode.yml
│ │ ├── inventories.yml
│ │ ├── items.yml
│ │ ├── potions.yml
│ │ └── teleportation.yml
│ ├── compatibility/
│ │ ├── ASkyBlock/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── askyblock/
│ │ │ │ ├── ASkyBlockExpansion.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerASkyBlock.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── AngelChest/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── angelchest/
│ │ │ │ ├── AngelChestConfiguration.java
│ │ │ │ ├── AngelChestExpansion.java
│ │ │ │ └── ListenerAngelChest.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── BSkyBlock/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── bskyblock/
│ │ │ │ ├── BSkyBlockExpansion.java
│ │ │ │ ├── hook/
│ │ │ │ │ └── HookBentoBox.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerBSkyBlock.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── CMI/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── cmi/
│ │ │ │ ├── CMIExpansion.java
│ │ │ │ └── VanishHandlerCMI.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── Citizens/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── citizens/
│ │ │ │ ├── CitizensExpansion.java
│ │ │ │ ├── configuration/
│ │ │ │ │ ├── CitizensConfiguration.java
│ │ │ │ │ ├── Configuration.java
│ │ │ │ │ └── SentinelConfiguration.java
│ │ │ │ ├── listener/
│ │ │ │ │ ├── CitizensExpansionListener.java
│ │ │ │ │ ├── ListenerCombat.java
│ │ │ │ │ ├── ListenerConvert.java
│ │ │ │ │ ├── ListenerDeath.java
│ │ │ │ │ ├── ListenerJoin.java
│ │ │ │ │ ├── ListenerPunish.java
│ │ │ │ │ ├── ListenerQuit.java
│ │ │ │ │ └── ListenerResurrect.java
│ │ │ │ ├── manager/
│ │ │ │ │ ├── CombatNpcManager.java
│ │ │ │ │ └── InventoryManager.java
│ │ │ │ ├── object/
│ │ │ │ │ ├── CombatNPC.java
│ │ │ │ │ └── StoredInventory.java
│ │ │ │ └── task/
│ │ │ │ └── PunishTask.java
│ │ │ └── resources/
│ │ │ ├── citizens.yml
│ │ │ ├── config.yml
│ │ │ ├── expansion.yml
│ │ │ └── sentinel.yml
│ │ ├── CrackShot/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── crackshot/
│ │ │ │ ├── CrackShotExpansion.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerCrackShot.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── CrashClaim/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── crash/
│ │ │ │ └── claim/
│ │ │ │ ├── CrashClaimExpansion.java
│ │ │ │ └── CrashClaimRegionHandler.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── EssentialsX/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── essentials/
│ │ │ │ ├── EssentialsExpansion.java
│ │ │ │ ├── EssentialsExpansionConfiguration.java
│ │ │ │ ├── VanishHandlerEssentialsX.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerEssentials.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── FabledSkyBlock/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── fabled/
│ │ │ │ └── skyblock/
│ │ │ │ ├── FabledSkyBlockExpansion.java
│ │ │ │ ├── IslandWrapperFabled.java
│ │ │ │ └── SkyBlockHandlerFabled.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── Factions/
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── factions/
│ │ │ │ ├── FactionsExpansion.java
│ │ │ │ └── RegionHandlerFactions.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── FeatherBoard/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── featherboard/
│ │ │ │ ├── FeatherBoardConfiguration.java
│ │ │ │ ├── FeatherBoardExpansion.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerFeatherBoard.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── GriefDefender/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── grief/
│ │ │ │ └── defender/
│ │ │ │ ├── GriefDefenderExpansion.java
│ │ │ │ └── RegionHandlerGriefDefender.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── GriefPrevention/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── grief/
│ │ │ │ └── prevention/
│ │ │ │ ├── GriefPreventionExpansion.java
│ │ │ │ └── RegionHandlerGriefPrevention.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── HuskHomes/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── huskhomes/
│ │ │ │ ├── HuskHomesExpansion.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerHuskHomes.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── HuskSync/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── husksync/
│ │ │ │ ├── DropItemsTask.java
│ │ │ │ ├── HuskSyncExpansion.java
│ │ │ │ ├── ListenerHuskSync.java
│ │ │ │ └── PlayerData.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── HuskTowns/
│ │ │ ├── README.MD
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── husktowns/
│ │ │ │ ├── HuskTownsExpansion.java
│ │ │ │ └── RegionHandlerHuskTowns.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── IridiumSkyblock/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── iridium/
│ │ │ │ └── skyblock/
│ │ │ │ ├── IridiumSkyblockExpansion.java
│ │ │ │ ├── IslandWrapperIridium.java
│ │ │ │ └── SkyBlockHandlerIridium.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── KingdomsX/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── kingdomsx/
│ │ │ │ ├── ExpansionKingdomsX.java
│ │ │ │ └── RegionHandlerKingdomsX.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── Konquest/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── konquest/
│ │ │ │ ├── KonquestExpansion.java
│ │ │ │ └── RegionHandlerKonquest.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── Lands/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── lands/
│ │ │ │ ├── LandsConfiguration.java
│ │ │ │ ├── LandsExpansion.java
│ │ │ │ ├── RegionHandlerLands.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerLands.java
│ │ │ └── resources/
│ │ │ ├── expansion.yml
│ │ │ └── lands.yml
│ │ ├── LibsDisguises/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── libsdisguises/
│ │ │ │ ├── DisguiseHandlerLibsDisguises.java
│ │ │ │ └── LibsDisguisesExpansion.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── LuckPerms/
│ │ │ ├── README.MD
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── luckperms/
│ │ │ │ ├── LuckPermsExpansion.java
│ │ │ │ ├── context/
│ │ │ │ │ ├── AbstractContext.java
│ │ │ │ │ ├── ContextInCombat.java
│ │ │ │ │ ├── ContextNewbieHelperProtected.java
│ │ │ │ │ └── ContextNewbieHelperPvpStatus.java
│ │ │ │ └── hook/
│ │ │ │ └── HookNewbieHelper.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── MCPets/
│ │ │ ├── README.md
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── mcpets/
│ │ │ │ ├── ListenerMcPets.java
│ │ │ │ └── McPetsExpansion.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── MarriageMaster/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── marriagemaster/
│ │ │ │ ├── MarriageMasterExpansion.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerMarriageMaster.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── MythicMobs/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── mythicmobs/
│ │ │ │ ├── ListenerMythicMobs.java
│ │ │ │ ├── MythicMobsConfiguration.java
│ │ │ │ └── MythicMobsExpansion.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── PlaceholderAPI/
│ │ │ ├── README.MD
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── placeholderapi/
│ │ │ │ ├── HookPlaceholderAPI.java
│ │ │ │ └── PlaceholderAPIExpansion.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── PlayerParticles/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── player/
│ │ │ │ └── particles/
│ │ │ │ ├── ListenerPlayerParticles.java
│ │ │ │ ├── PlayerParticlesConfiguration.java
│ │ │ │ └── PlayerParticlesExpansion.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── PreciousStones/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── preciousstones/
│ │ │ │ ├── ListenerPreciousStones.java
│ │ │ │ ├── PreciousStonesConfiguration.java
│ │ │ │ ├── PreciousStonesExpansion.java
│ │ │ │ └── RegionHandlerPreciousStones.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── ProtectionStones/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── protectionstones/
│ │ │ │ ├── ProtectionStonesConfiguration.java
│ │ │ │ ├── ProtectionStonesExpansion.java
│ │ │ │ ├── ProtectionStonesListener.java
│ │ │ │ └── RegionHandlerProtectionStones.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── README.MD
│ │ ├── RedProtect/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── redprotect/
│ │ │ │ ├── RedProtectExpansion.java
│ │ │ │ └── RegionHandlerRedProtect.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── Residence/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── residence/
│ │ │ │ ├── RegionHandlerResidence.java
│ │ │ │ └── ResidenceExpansion.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── SuperVanish/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── supervanish/
│ │ │ │ ├── SuperVanishExpansion.java
│ │ │ │ └── VanishHandlerSuper.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── SuperiorSkyblock/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── superior/
│ │ │ │ └── skyblock/
│ │ │ │ ├── IslandWrapperSuperior.java
│ │ │ │ ├── SkyBlockHandlerSuperior.java
│ │ │ │ └── SuperiorSkyblockExpansion.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── Towny/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── towny/
│ │ │ │ ├── RegionHandlerTowny.java
│ │ │ │ ├── TownyConfiguration.java
│ │ │ │ ├── TownyExpansion.java
│ │ │ │ └── listener/
│ │ │ │ └── ListenerPrison.java
│ │ │ └── resources/
│ │ │ ├── expansion.yml
│ │ │ └── towny.yml
│ │ ├── UltimateClaims/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── ultimateclaims/
│ │ │ │ ├── RegionHandlerUltimateClaims.java
│ │ │ │ └── UltimateClaimsExpansion.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ ├── VanishNoPacket/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── vnp/
│ │ │ │ ├── VanishHandlerNoPacket.java
│ │ │ │ └── VanishNoPacketExpansion.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ └── expansion.yml
│ │ ├── WorldGuard/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── region/
│ │ │ │ └── world/
│ │ │ │ └── guard/
│ │ │ │ ├── WorldGuardConfiguration.java
│ │ │ │ ├── WorldGuardExpansion.java
│ │ │ │ ├── handler/
│ │ │ │ │ └── WorldGuardRegionHandler.java
│ │ │ │ ├── hook/
│ │ │ │ │ └── HookWorldGuard.java
│ │ │ │ └── listener/
│ │ │ │ ├── ListenerPreventLeaving.java
│ │ │ │ └── ListenerWorldGuard.java
│ │ │ └── resources/
│ │ │ ├── expansion.yml
│ │ │ └── worldguard.yml
│ │ ├── ZNPCsPlus/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── znpc/
│ │ │ │ ├── CombatNpc.java
│ │ │ │ ├── CombatNpcManager.java
│ │ │ │ ├── ZNPCExpansion.java
│ │ │ │ ├── configuration/
│ │ │ │ │ ├── Configuration.java
│ │ │ │ │ └── NpcConfiguration.java
│ │ │ │ ├── listener/
│ │ │ │ │ └── NpcExpansionListener.java
│ │ │ │ └── task/
│ │ │ │ └── NpcRemoveTask.java
│ │ │ └── resources/
│ │ │ ├── config.yml
│ │ │ ├── expansion.yml
│ │ │ └── npcs.yml
│ │ ├── build.gradle.kts
│ │ ├── iDisguise/
│ │ │ ├── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── combatlogx/
│ │ │ │ └── expansion/
│ │ │ │ └── compatibility/
│ │ │ │ └── idisguise/
│ │ │ │ ├── DisguiseHandler_iDisguise.java
│ │ │ │ └── Expansion_iDisguise.java
│ │ │ └── resources/
│ │ │ └── expansion.yml
│ │ └── uSkyBlock/
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── compatibility/
│ │ │ └── uskyblock/
│ │ │ ├── IslandWrapper_uSkyBlock.java
│ │ │ ├── SkyBlockHandler_uSkyBlock.java
│ │ │ └── uSkyBlockExpansion.java
│ │ └── resources/
│ │ └── expansion.yml
│ ├── damage-effects/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── damage/
│ │ │ └── effects/
│ │ │ ├── DamageEffectsConfiguration.java
│ │ │ ├── DamageEffectsExpansion.java
│ │ │ ├── ListenerDamageEffects.java
│ │ │ └── effect/
│ │ │ ├── Blood.java
│ │ │ ├── DamageEffect.java
│ │ │ └── Offset.java
│ │ └── resources/
│ │ ├── effects.yml
│ │ └── expansion.yml
│ ├── damage-tagger/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── damage/
│ │ │ └── tagger/
│ │ │ ├── DamageTaggerExpansion.java
│ │ │ ├── configuration/
│ │ │ │ └── DamageTaggerConfiguration.java
│ │ │ └── listener/
│ │ │ └── ListenerDamage.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── death-effects/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── death/
│ │ │ └── effects/
│ │ │ ├── DeathEffectsConfiguration.java
│ │ │ ├── DeathEffectsExpansion.java
│ │ │ ├── ListenerDeathEffects.java
│ │ │ └── task/
│ │ │ └── ItemRemoveTask.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── end-crystal/
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ ├── legacy/
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── endcrystals/
│ │ │ ├── CheckEndCrystalTask.java
│ │ │ └── ListenerCrystals_Legacy.java
│ │ ├── modern/
│ │ │ ├── gradle.properties
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── endcrystals/
│ │ │ └── ListenerCrystals_Modern.java
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── endcrystals/
│ │ │ └── EndCrystalExpansion.java
│ │ └── resources/
│ │ └── expansion.yml
│ ├── force-field/
│ │ ├── README.MD
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── force/
│ │ │ └── field/
│ │ │ ├── ForceFieldExpansion.java
│ │ │ ├── configuration/
│ │ │ │ └── ForceFieldConfiguration.java
│ │ │ └── task/
│ │ │ ├── ForceFieldAdapter.java
│ │ │ └── ForceFieldTask.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── glowing/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── glowing/
│ │ │ ├── GlowingExpansion.java
│ │ │ └── listener/
│ │ │ └── ListenerGlow.java
│ │ └── resources/
│ │ └── expansion.yml
│ ├── logger/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── logger/
│ │ │ ├── LoggerExpansion.java
│ │ │ ├── configuration/
│ │ │ │ ├── LogEntryOptions.java
│ │ │ │ ├── LogFileInfo.java
│ │ │ │ ├── LogOptions.java
│ │ │ │ ├── LogType.java
│ │ │ │ └── LoggerConfiguration.java
│ │ │ └── listener/
│ │ │ └── ListenerLogger.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── loot-protection/
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── loot/
│ │ │ └── protection/
│ │ │ ├── LootProtectionExpansion.java
│ │ │ ├── configuration/
│ │ │ │ └── LootProtectionConfiguration.java
│ │ │ ├── event/
│ │ │ │ └── QueryPickupEvent.java
│ │ │ ├── listener/
│ │ │ │ └── ListenerLootProtection.java
│ │ │ └── object/
│ │ │ └── ProtectedItem.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── mob-tagger/
│ │ ├── README.MD
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── mob/
│ │ │ └── tagger/
│ │ │ ├── MobTaggerExpansion.java
│ │ │ ├── configuration/
│ │ │ │ └── MobTaggerConfiguration.java
│ │ │ ├── listener/
│ │ │ │ └── ListenerDamage.java
│ │ │ └── manager/
│ │ │ ├── ISpawnReasonManager.java
│ │ │ ├── SpawnReasonManager_Legacy.java
│ │ │ └── SpawnReasonManager_New.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ ├── newbie-helper/
│ │ ├── README.MD
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── newbie/
│ │ │ └── helper/
│ │ │ ├── NewbieHelperExpansion.java
│ │ │ ├── command/
│ │ │ │ ├── CommandTogglePVP.java
│ │ │ │ ├── SubCommandCheck.java
│ │ │ │ ├── SubCommandOff.java
│ │ │ │ ├── SubCommandOn.java
│ │ │ │ └── admin/
│ │ │ │ ├── SubCommandAdmin.java
│ │ │ │ ├── SubCommandAdminOff.java
│ │ │ │ └── SubCommandAdminOn.java
│ │ │ ├── configuration/
│ │ │ │ ├── NewbieHelperConfiguration.java
│ │ │ │ └── WorldsConfiguration.java
│ │ │ ├── listener/
│ │ │ │ ├── ListenerDamage.java
│ │ │ │ ├── ListenerJoin.java
│ │ │ │ └── ListenerLavaFire.java
│ │ │ ├── manager/
│ │ │ │ ├── CooldownManager.java
│ │ │ │ ├── PVPManager.java
│ │ │ │ └── ProtectionManager.java
│ │ │ └── placeholder/
│ │ │ └── NewbieHelperPlaceholderExpansion.java
│ │ └── resources/
│ │ ├── config.yml
│ │ ├── expansion.yml
│ │ └── worlds.yml
│ ├── rewards/
│ │ ├── README.MD
│ │ ├── build.gradle.kts
│ │ ├── gradle.properties
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── combatlogx/
│ │ │ └── expansion/
│ │ │ └── rewards/
│ │ │ ├── RewardExpansion.java
│ │ │ ├── configuration/
│ │ │ │ ├── Reward.java
│ │ │ │ ├── RewardConfiguration.java
│ │ │ │ └── requirement/
│ │ │ │ ├── EconomyRequirement.java
│ │ │ │ ├── ExperienceRequirement.java
│ │ │ │ └── Requirement.java
│ │ │ ├── hook/
│ │ │ │ └── HookVault.java
│ │ │ └── listener/
│ │ │ └── ListenerRewards.java
│ │ └── resources/
│ │ ├── config.yml
│ │ └── expansion.yml
│ └── scoreboard/
│ ├── README.MD
│ ├── build.gradle.kts
│ ├── gradle.properties
│ └── src/
│ └── main/
│ ├── java/
│ │ └── combatlogx/
│ │ └── expansion/
│ │ └── scoreboard/
│ │ ├── ScoreboardConfiguration.java
│ │ ├── ScoreboardExpansion.java
│ │ ├── ScoreboardUpdater.java
│ │ ├── manager/
│ │ │ └── CustomScoreboardManager.java
│ │ └── scoreboard/
│ │ ├── CustomLine.java
│ │ ├── CustomScoreboard.java
│ │ └── PaperScoreboard.java
│ └── resources/
│ ├── config.yml
│ └── expansion.yml
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── plugin/
│ ├── README.MD
│ ├── build.gradle.kts
│ ├── gradle.properties
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── sirblobman/
│ │ └── combatlogx/
│ │ ├── CombatPlugin.java
│ │ ├── command/
│ │ │ ├── CommandCombatTimer.java
│ │ │ ├── CommandTogglePVP.java
│ │ │ └── combatlogx/
│ │ │ ├── CommandCombatLogX.java
│ │ │ ├── SubCommandAbout.java
│ │ │ ├── SubCommandHelp.java
│ │ │ ├── SubCommandReload.java
│ │ │ ├── SubCommandTag.java
│ │ │ ├── SubCommandToggle.java
│ │ │ ├── SubCommandUntag.java
│ │ │ ├── SubCommandVersion.java
│ │ │ └── forgive/
│ │ │ ├── SubCommandForgive.java
│ │ │ ├── SubCommandForgiveAccept.java
│ │ │ ├── SubCommandForgiveReject.java
│ │ │ ├── SubCommandForgiveRequest.java
│ │ │ └── SubCommandForgiveToggle.java
│ │ ├── configuration/
│ │ │ └── ConfigurationChecker.java
│ │ ├── listener/
│ │ │ ├── ListenerConfiguration.java
│ │ │ ├── ListenerDamage.java
│ │ │ ├── ListenerDeath.java
│ │ │ ├── ListenerEndCrystal.java
│ │ │ ├── ListenerInvulnerable.java
│ │ │ ├── ListenerPunish.java
│ │ │ └── ListenerUntag.java
│ │ ├── manager/
│ │ │ ├── CombatManager.java
│ │ │ ├── CrystalManager.java
│ │ │ ├── DeathManager.java
│ │ │ ├── ForgiveManager.java
│ │ │ ├── Manager.java
│ │ │ ├── PlaceholderManager.java
│ │ │ └── PunishManager.java
│ │ ├── placeholder/
│ │ │ └── BasePlaceholderExpansion.java
│ │ └── task/
│ │ ├── PlayerVulnerableTask.java
│ │ ├── TimerUpdateTask.java
│ │ └── UntagTask.java
│ └── resources/
│ ├── commands.yml
│ ├── config.yml
│ ├── language/
│ │ ├── ar_sa.lang.yml
│ │ ├── cs_cz.lang.yml
│ │ ├── da_dk.lang.yml
│ │ ├── de_at.lang.yml
│ │ ├── de_ch.lang.yml
│ │ ├── de_de.lang.yml
│ │ ├── el_gr.lang.yml
│ │ ├── en_us.lang.yml
│ │ ├── es_ar.lang.yml
│ │ ├── es_cl.lang.yml
│ │ ├── es_ec.lang.yml
│ │ ├── es_es.lang.yml
│ │ ├── es_mx.lang.yml
│ │ ├── es_uy.lang.yml
│ │ ├── es_ve.lang.yml
│ │ ├── fi_fi.lang.yml
│ │ ├── fr_ca.lang.yml
│ │ ├── fr_fr.lang.yml
│ │ ├── hu_hu.lang.yml
│ │ ├── it_it.lang.yml
│ │ ├── ka_ge.lang.yml
│ │ ├── nl_be.yml
│ │ ├── nl_nl.yml
│ │ ├── nn_no.yml
│ │ ├── no_no.yml
│ │ ├── pl_pl.lang.yml
│ │ ├── pt_br.lang.yml
│ │ ├── pt_pt.lang.yml
│ │ ├── ru_ru.lang.yml
│ │ ├── sv_se.lang.yml
│ │ ├── tr_tr.lang.yml
│ │ ├── uk_ua.lang.yml
│ │ └── zh_cn.lang.yml
│ ├── language.yml
│ └── punish.yml
├── settings.gradle.kts
├── spigot.documentation.bbcode
└── spigot.overview.bbcode
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
name: Bug Report
description: Create a report that will help us resolve an issue.
labels:
- Bug
body:
- type: markdown
attributes:
value: |-
Please fill out the following form to the best of your ability.
The better you fill this out, the faster we can resolve the problem.
- type: dropdown
attributes:
label: Server Implementation
description: >-
Which server implementation are you using? If your server implementation
is not listed, we do not provide support for it.
multiple: false
options:
- Spigot
- Paper
- Folia
validations:
required: true
- type: dropdown
attributes:
label: Server Version
description: >-
Which server version are you using? If your version is not listed, we do
not provide support for it.
multiple: false
options:
- 1.19.4
- 1.20.6
- 1.21
- other
validations:
required: true
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
attributes:
label: Reproduction Steps
description: Steps to reproduce this behaviour
placeholder: |-
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
validations:
required: true
- type: textarea
attributes:
label: Expected behaviour
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
attributes:
label: Screenshots / Videos
description: 'If applicable, add screenshots to help explain your problem.'
- type: input
attributes:
label: latest log file (if applicable)
description: >-
Please upload your '/logs/latest.log' file to a paste service and post
the link here.
- type: textarea
attributes:
label: CombatLogX Version
description: >-
Please run the command '/clx version' on your server and post the output
here.
validations:
required: true
- type: textarea
attributes:
label: Anything else?
description: You can provide additional context below.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: "Discord Server"
url: "https://discord.gg/XMq2agT"
about: "Get help through Discord."
- name: "E-Mail Support"
url: "mailto:support@sirblobman.xyz"
about: "Contact SirBlobman through e-mail. Response will be more delayed than GitHub/Discord."
================================================
FILE: .github/ISSUE_TEMPLATE/expansion-request.yml
================================================
name: Expansion Request
description: Make a suggestion for a new plugin compatibility expansion.
labels:
- Feature Request
body:
- type: markdown
attributes:
value: |-
Please fill out the following form to the best of your ability.
The better you fill this out, the faster we can resolve the problem.
- type: dropdown
attributes:
label: Server Implementation
description: >-
Which server implementation are you using? If your server implementation
is not listed, we do not provide support for it.
multiple: false
options:
- Spigot
- Paper
- Folia
validations:
required: true
- type: dropdown
attributes:
label: Server Version
description: >-
Which server version are you using? If your version is not listed, we do
not provide support for it.
multiple: false
options:
- 1.19.4
- 1.20.6
- 1.21
- other
validations:
required: true
- type: textarea
attributes:
label: CombatLogX Version
description: >-
Please run the command '/clx version' on your server and post the output
here.
validations:
required: true
- type: textarea
attributes:
label: Plugin
description: >-
Which plugin needs a compatibility expansion? Please provide a link to
the plugin. We also need access to source or an API jar.
validations:
required: true
- type: textarea
attributes:
label: Explanation
description: >-
Please explain why this plugin needs support or how we can improve the
support for this plugin.
validations:
required: true
- type: textarea
attributes:
label: Extra Information
description: What other information (if any) do you need us to know?
================================================
FILE: .github/ISSUE_TEMPLATE/feature-requests.yml
================================================
name: Feature Request
description: Make a suggestion or submit a feature you already coded
labels:
- Feature Request
body:
- type: markdown
attributes:
value: |-
Please fill out the following form to the best of your ability.
The better you fill this out, the faster we can resolve the problem.
- type: dropdown
attributes:
label: Server Implementation
description: >-
Which server implementation are you using? If your server implementation
is not listed, we do not provide support for it.
multiple: false
options:
- Spigot
- Paper
- Folia
validations:
required: true
- type: dropdown
attributes:
label: Server Version
description: >-
Which server version are you using? If your version is not listed, we do
not provide support for it.
multiple: false
options:
- 1.19.4
- 1.20.6
- 1.21
- other
validations:
required: true
- type: textarea
attributes:
label: CombatLogX Version
description: >-
Please run the command '/clx version' on your server and post the output
here.
validations:
required: true
- type: textarea
attributes:
label: Feature Request
description: What is your request? What do you think we should add to CombatLogX?
validations:
required: true
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/default.md
================================================
## Description
<!-- Please describe your pull request here. -->
### Testing done
<!-- Comment:
Provide a clear description of how this change was tested.
At minimum this should include proof that a server ran with your changes.
For refactoring and code cleanup changes, exercise the code before and after the change and verify the behavior remains the same.
-->
### Submitter checklist
- [ ] Make sure you are opening from a **topic/feature/bugfix branch** (right side) and not your main branch!
- [ ] Please describe what you did
- [ ] Link to relevant issues in GitHub.
- [ ] Link to relevant pull requests.
- [ ] Ensure you have provided tests - that demonstrates feature works or fixes the issue.
<!--
Put an `x` into the [ ] to show you have filled the information.
-->
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: gradle
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 20
================================================
FILE: .github/funding.yml
================================================
github:
- "SirBlobman"
custom:
- "https://bit.ly/SirBlobmanDonate"
================================================
FILE: .gitignore
================================================
##############################
## Java
##############################
.mtj.tmp/
*.class
*.jar
*.war
*.ear
*.nar
hs_err_pid*
##############################
## Maven
##############################
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
pom.xml.bak
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
##############################
## Gradle
##############################
bin/
build/
.gradle
.gradletasknamecache
gradle-app.setting
!gradle-wrapper.jar
##############################
## IntelliJ
##############################
out/
.idea/
.idea_modules/
*.iml
*.ipr
*.iws
##############################
## Eclipse
##############################
.settings/
bin/
tmp/
.metadata
.classpath
.project
*.tmp
*.bak
*.swp
*~.nib
local.properties
.loadpath
.factorypath
##############################
## NetBeans
##############################
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
##############################
## Visual Studio Code
##############################
.vscode/
.code-workspace
##############################
## OS X
##############################
.DS_Store
._*
##############################
## Windows
##############################
~$*
*.tmp
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
github@sirblobman.xyz.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: CONTRIBUTING.MD
================================================
# CombatLogX Contribution Guide
1) Try to keep the code style the same. Do not change the import order if possible.
2) If your feature requires a separate plugin, you may want to create an expansion instead.
3) Please give full details for any changes you make.
4) Follow the GitHub rules, project license, and all guidelines.
5) Good Luck and have fun!
================================================
FILE: Jenkinsfile
================================================
pipeline {
agent any
options {
githubProjectProperty(projectUrlStr: "https://github.com/SirBlobman/CombatLogX")
}
environment {
DISCORD_URL = credentials('PUBLIC_DISCORD_WEBHOOK')
MAVEN_DEPLOY = credentials('MAVEN_DEPLOY')
}
triggers {
githubPush()
}
tools {
jdk "JDK 25"
}
stages {
stage("Gradle: Build") {
steps {
withGradle {
script {
sh("./gradlew --refresh-dependencies --no-daemon clean build")
if (env.BRANCH_NAME == "main") {
sh("./gradlew publish --no-daemon")
}
}
}
}
}
}
post {
success {
archiveArtifacts artifacts: 'builder/build/distributions/CombatLogX-*.zip', fingerprint: true
}
always {
script {
discordSend webhookURL: DISCORD_URL, title: "CombatLogX", link: "${env.BUILD_URL}",
result: currentBuild.currentResult,
description: """\
**Branch:** ${env.GIT_BRANCH}
**Build:** ${env.BUILD_NUMBER}
**Status:** ${currentBuild.currentResult}""".stripIndent(),
enableArtifactsList: false, showChangeset: true
}
}
}
}
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
================================================
FILE: README.MD
================================================
# CombatLogX
[](https://github.com/SirBlobman/CombatLogX/)
[](https://jenkins.sirblobman.xyz/job/SirBlobman/job/CombatLogX/)
[](https://crowdin.com/project/combatlogx-spigot-plugin)
## Description
CombatLogX is a plugin made for the Spigot server software.
It has many combat-related features to add to your server.
One of the main features of this plugin are the Expansions, which are like modules that allow you to add different
things and change how the plugin works.
## Requirements
- Java 25
- [Spigot](https://spigotmc.org/), [Paper](https://papermc.io/download/paper), or [Folia](https://papermc.io/software/folia) 1.19.4-26.1.2
- [BlueSlimeCore](https://hangar.papermc.io/SirBlobman/BlueSlimeCore) 2.9.9 or higher.
## Main Features
- Custom expansions that change how the plugin works
- Tag players when they attack other players
- Punish players that log out during combat
## Installation Guide
1. Download the CombatLogX.zip file from Jenkins or SpigotMC.
2. Extract the contents of the CombatLogX.zip to your PC.
3. Click the stop button on the panel. If your server doesn't use a panel, type `stop` into the console.
4. Upload `CombatLogX.jar` and `BlueSlimeCore.jar` to your server `/plugins/` folder.
5. Upload the contents of `CombatLogX/expansions` to your server `/plugins/CombatLogX/expansions` folder.
6. If the files were uploaded and extracted correctly, your server should have the following files:
- File: /plugins/CombatLogX.jar
- File /plugins/BlueSlimeCore.jar
- Folder: /plugins/CombatLogX/
- Folder: /plugins/CombatLogX/expansions/
- Multiple Files: /plugins/CombatLogX/expansions/*.jar
7. Delete the `CombatLogX.zip` file.
8. Restart your server using the panel or your startup script.
9. Edit the configuration files for the main plugin, languages, and expansions.
10. Type the command `/clx reload` to reload the configuration files.
11. If you want to remove an expansion, delete the jar file from `/plugins/CombatLogX/expansions`.
## Downloads
- [SpigotMC](https://www.spigotmc.org/resources/31689/)
- [Jenkins Beta Builds](https://jenkins.sirblobman.xyz/job/SirBlobman/job/CombatLogX/job/main/)
## Expansions
If you want to find out more about the expansions, please visit this page:
[CombatLogX Documentation](https://www.spigotmc.org/resources/combatlogx.31689/field?field=documentation)
You can also open the README files in each expansion folder.
## Developer API
If you want to create expansions or learn how to use the CombatLogX API for V11/Beta, please visit this page:
[API README](api/README.MD)
## Sponsors
The people or organizations listed below were kind enough to fund my open-source projects!
- Privately sponsored by [Alien Host](https://alienhost.net).
- Sponsored on GitHub by [feather64.net](https://feather64.net) owned by Derek Larson.
## Localization
A community translation project for CombatLogX is open.
If you want to help with translations, please visit our Crowdin page.
<https://crowdin.com/project/combatlogx-spigot-plugin>
### Localization Credits
You can view a list of contributions made to CombatLogX on our Crowdin page.
<https://crowdin.com/project/combatlogx-spigot-plugin/reports/top-members>
## Support
Support is provided by creating a new issue, or by chatting with the Support Team on my discord.
**Discord Link:** <https://discord.gg/XMq2agT>
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
| Version | Supported |
|-------------------|--------------------|
| 11.6-SNAPSHOT | :white_check_mark: |
| 11.5-SNAPSHOT | :x: |
| 11.4-SNAPSHOT | :x: |
| 11.3-SNAPSHOT | :x: |
| 11.2-SNAPSHOT | :x: |
| 11.0.0.0-SNAPSHOT | :x: |
| < 11.0 | :x: |
## Expansions
You must update all expansions when updating CombatLogX
## Reporting a Vulnerability
Please report any security vulnerabilities to my [e-mail](mailto:combatlogx@sirblobman.xyz)
================================================
FILE: api/README.MD
================================================
# CombatLogX API
This is the API module for CombatLogX.
You can use it to create new expansions or to check stuff with your own plugin.
## Maven Repository
A lot of developers use maven to build projects more easily.
**Repository: SirBlobman Public**
Maven:
```xml
<repositories>
<!-- SirBlobman Public Repository -->
<repository>
<id>sirblobman-public</id>
<url>https://nexus.sirblobman.xyz/public/</url>
</repository>
</repositories>
```
Gradle Groovy:
```groovy
repositories {
maven {
name = 'sirblobman-public'
url = 'https://nexus.sirblobman.xyz/public/'
}
}
```
Gradle Kotlin:
```kotlin
repositories {
maven("https://nexus.sirblobman.xyz/public/")
}
```
**Dependency: CombatLogX API**
Maven:
```xml
<dependencies>
<!-- BlueSlimeCore -->
<dependency>
<groupId>com.github.sirblobman.api</groupId>
<artifactId>core</artifactId>
<version>2.9-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- CombatLogX API -->
<dependency>
<groupId>com.github.sirblobman.combatlogx</groupId>
<artifactId>api</artifactId>
<version>11.6-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
```
Gradle Groovy:
```groovy
dependencies {
compileOnly 'com.github.sirblobman.api:core:2.9-SNAPSHOT'
compileOnly 'com.github.sirblobman.combatlogx:api:11.6-SNAPSHOT'
}
```
Gradle Kotlin:
```kotlin
dependencies {
compileOnly("com.github.sirblobman.api:core:2.9-SNAPSHOT")
compileOnly("com.github.sirblobman.combatlogx:api:11.6-SNAPSHOT")
}
```
## Events
A list of events and their uses can be found in the `com.github.sirblobman.combatlogx.api.event` package.
You can see more information about them below:
- **PlayerPreTagEvent:** Triggered before a player gets tagged. (cancellable)
- **PlayerTagEvent:** Triggered when a player gets tagged into combat (not cancellable).
- **PlayerReTagEvent:** Triggered when a player already has a timer, but they are tagged again. (cancellable)
- **PlayerUntagEvent:** Triggered when a player gets out of combat.
- **PlayerPunishEvent:** Triggered when a player is going to be punished for logging out (cancellable).
## Other API Uses
CombatLogX has many uses, but some common examples are provided below.
Good luck with your coding!
**Example 01: Check if CombatLogX is enabled and get an instance of it.**
```java
public boolean isEnabled() {
PluginManager pluginManager = Bukkit.getPluginManager();
return pluginManager.isPluginEnabled("CombatLogX");
}
public ICombatLogX getAPI() {
PluginManager pluginManager = Bukkit.getPluginManager();
Plugin plugin = pluginManager.getPlugin("CombatLogX");
return (ICombatLogX) plugin;
}
```
**Example 02: Check if a player is in combat.**
```java
public boolean isInCombat(Player player) {
ICombatLogX plugin = getAPI();
ICombatManager combatManager = plugin.getCombatManager();
return combatManager.isInCombat(player);
}
```
**Example 03: Check if a player was killed by CombatLogX.**
```java
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onDeath(PlayerDeathEvent e) {
Player player = e.getEntity();
ICombatLogX plugin = getAPI();
IDeathManager deathManager = plugin.getDeathManager();
if(deathManager.wasPunishKilled(player)) {
// Player was killed by CombatLogX
e.setDeathMessage(player.getName() + " was killed for logging out during combat.");
}
}
```
================================================
FILE: api/build.gradle.kts
================================================
fun getEnvOrProp(variableName: String, propertyName: String): String {
val environmentProvider = providers.environmentVariable(variableName)
val propertyProvider = providers.gradleProperty(propertyName)
return environmentProvider.orElse(propertyProvider).orElse("").get()
}
fun getProp(propertyName: String): String {
val propertyProvider = providers.gradleProperty(propertyName)
return propertyProvider.get()
}
plugins {
id("maven-publish")
}
java {
withSourcesJar()
withJavadocJar()
}
repositories {
maven("https://repo.helpch.at/releases/")
}
dependencies {
compileOnly("me.clip:placeholderapi:2.11.6")
}
publishing {
repositories {
maven("https://nexus.sirblobman.xyz/public") {
credentials {
username = getEnvOrProp("MAVEN_DEPLOY_USR", "maven.username.sirblobman")
password = getEnvOrProp("MAVEN_DEPLOY_PSW", "maven.password.sirblobman")
}
}
}
publications {
create<MavenPublication>("maven") {
groupId = "com.github.sirblobman.combatlogx"
artifactId = "api"
version = getProp("version.api")
from(components["java"])
}
}
}
tasks.withType<Javadoc> {
val standardOptions = (options as StandardJavadocDocletOptions)
standardOptions.addStringOption("Xdoclint:none", "-quiet")
}
================================================
FILE: api/gradle.properties
================================================
version.spigot=1.11.2-R0.1-SNAPSHOT
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/ICombatLogX.java
================================================
package com.github.sirblobman.combatlogx.api;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.api.configuration.IResourceHolder;
import com.github.sirblobman.api.configuration.PlayerDataManager;
import com.github.sirblobman.api.language.LanguageManager;
import com.github.sirblobman.api.plugin.ConfigurablePlugin;
import com.github.sirblobman.api.plugin.IMultiVersionPlugin;
import com.github.sirblobman.combatlogx.api.configuration.CommandConfiguration;
import com.github.sirblobman.combatlogx.api.configuration.MainConfiguration;
import com.github.sirblobman.combatlogx.api.configuration.PunishConfiguration;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionManager;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.manager.ICrystalManager;
import com.github.sirblobman.combatlogx.api.manager.IDeathManager;
import com.github.sirblobman.combatlogx.api.manager.IForgiveManager;
import com.github.sirblobman.combatlogx.api.manager.IPlaceholderManager;
import com.github.sirblobman.combatlogx.api.manager.IPunishManager;
import com.github.sirblobman.combatlogx.api.manager.ITimerManager;
public interface ICombatLogX extends IResourceHolder, IMultiVersionPlugin {
/**
* @return The JavaPlugin instance for this object.
*/
@NotNull ConfigurablePlugin getPlugin();
/**
* Called when the configuration files should be reloaded.
*/
void onReload();
/**
* @return The player data file manager for this plugin.
*/
@NotNull PlayerDataManager getPlayerDataManager();
/**
* @return The language configuration manager for this plugin.
*/
@NotNull LanguageManager getLanguageManager();
/**
* @return The expansion manager for this plugin.
*/
@NotNull ExpansionManager getExpansionManager();
/**
* @return The combat manager for this plugin.
*/
@NotNull ICombatManager getCombatManager();
/**
* @return The timer and notification manager for this plugin.
*/
@NotNull ITimerManager getTimerManager();
/**
* @return The punishment manager for this plugin.
*/
@NotNull IPunishManager getPunishManager();
/**
* @return The death manager for this plugin.
*/
@NotNull IDeathManager getDeathManager();
/**
* @return The placeholder hook manager for this plugin.
*/
@NotNull IPlaceholderManager getPlaceholderManager();
/**
* @return The combat forgiveness manager for this plugin.
*/
@NotNull IForgiveManager getForgiveManager();
/**
* @return {@code true} if the debug mode feature is disabled, otherwise {@code false}.
*/
boolean isDebugModeDisabled();
/**
* Print some messages to the server logs.
* If debug-mode is not enabled, the messages should not be sent.
*
* @param messageArray An array of messages to print
* @see #isDebugModeDisabled()
*/
void printDebug(String @NotNull ... messageArray);
/**
* Print a thrown exception to the server logs.
* If debug-mode is not enabled, the error should not be sent.
*
* @param ex The error that was thrown.
* @see #printDebug(String...)
* @see #isDebugModeDisabled()
*/
void printDebug(@NotNull Throwable ex);
/**
* @return The configuration reader for 'config.yml'.
*/
@NotNull MainConfiguration getConfiguration();
/**
* @return The configuration reader for 'commands.yml'
*/
@NotNull CommandConfiguration getCommandConfiguration();
/**
* @return The configuration reader for 'punish.yml'
*/
@NotNull PunishConfiguration getPunishConfiguration();
@NotNull ICrystalManager getCrystalManager();
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/ICombatLogXNeeded.java
================================================
package com.github.sirblobman.combatlogx.api;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
public interface ICombatLogXNeeded {
@NotNull ICombatLogX getCombatLogX();
default @NotNull Logger getLogger() {
ICombatLogX combatLogX = getCombatLogX();
return combatLogX.getLogger();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/command/CombatLogCommand.java
================================================
package com.github.sirblobman.combatlogx.api.command;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import com.github.sirblobman.api.command.Command;
import com.github.sirblobman.api.language.LanguageManager;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.configuration.MainConfiguration;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionManager;
public abstract class CombatLogCommand extends Command {
private final ICombatLogX plugin;
public CombatLogCommand(@NotNull ICombatLogX plugin, @NotNull String commandName) {
super(plugin.getPlugin(), commandName);
this.plugin = plugin;
}
protected final @NotNull ICombatLogX getCombatLogX() {
return this.plugin;
}
@Override
protected final @NotNull LanguageManager getLanguageManager() {
ICombatLogX plugin = getCombatLogX();
return plugin.getLanguageManager();
}
@Override
protected @NotNull List<String> onTabComplete(@NotNull CommandSender sender, String @NotNull [] args) {
return Collections.emptyList();
}
@Override
protected boolean execute(@NotNull CommandSender sender, String @NotNull [] args) {
return false;
}
protected final @NotNull ExpansionManager getExpansionManager() {
ICombatLogX plugin = getCombatLogX();
return plugin.getExpansionManager();
}
protected final boolean isWorldDisabled(World world) {
ICombatLogX plugin = getCombatLogX();
MainConfiguration configuration = plugin.getConfiguration();
return configuration.isDisabled(world);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/command/CombatLogPlayerCommand.java
================================================
package com.github.sirblobman.combatlogx.api.command;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.github.sirblobman.api.command.PlayerCommand;
import com.github.sirblobman.api.language.LanguageManager;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.configuration.MainConfiguration;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionManager;
public abstract class CombatLogPlayerCommand extends PlayerCommand {
private final ICombatLogX plugin;
public CombatLogPlayerCommand(ICombatLogX plugin, String commandName) {
super(plugin.getPlugin(), commandName);
this.plugin = plugin;
}
protected final @NotNull ICombatLogX getCombatLogX() {
return this.plugin;
}
@Override
protected final @NotNull LanguageManager getLanguageManager() {
ICombatLogX plugin = getCombatLogX();
return plugin.getLanguageManager();
}
@Override
protected @NotNull List<String> onTabComplete(@NotNull Player player, String @NotNull [] args) {
return Collections.emptyList();
}
@Override
protected boolean execute(@NotNull Player player, String @NotNull [] args) {
return false;
}
protected final @NotNull ExpansionManager getExpansionManager() {
ICombatLogX plugin = getCombatLogX();
return plugin.getExpansionManager();
}
protected final boolean isWorldDisabled(World world) {
ICombatLogX plugin = getCombatLogX();
MainConfiguration configuration = plugin.getConfiguration();
return configuration.isDisabled(world);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/CommandConfiguration.java
================================================
package com.github.sirblobman.combatlogx.api.configuration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.configuration.ConfigurationSection;
import com.github.sirblobman.api.configuration.IConfigurable;
import com.github.sirblobman.combatlogx.api.object.SpecialPunishCommand;
public final class CommandConfiguration implements IConfigurable {
private final List<String> tagCommandList;
private final List<String> untagCommandList;
private final List<String> punishCommandList;
private final Map<String, SpecialPunishCommand> specialPunishCommandMap;
private boolean specialPunishCommandsEnabled;
public CommandConfiguration() {
this.tagCommandList = new ArrayList<>();
this.untagCommandList = new ArrayList<>();
this.punishCommandList = new ArrayList<>();
this.specialPunishCommandsEnabled = false;
this.specialPunishCommandMap = new HashMap<>();
}
@Override
public void load(ConfigurationSection config) {
setTagCommands(config.getStringList("tag-command-list"));
setUntagCommands(config.getStringList("untag-command-list"));
setPunishCommands(config.getStringList("punish-command-list"));
setSpecialPunishCommandsEnabled(config.getBoolean("special-punish-commands-enabled"));
removeSpecialPunishCommands();
ConfigurationSection sectionSpecials = getOrCreateSection(config, "special-punish-commands");
Set<String> specialIdSet = sectionSpecials.getKeys(false);
for (String specialId : specialIdSet) {
ConfigurationSection section = sectionSpecials.getConfigurationSection(specialId);
if (section == null) {
continue;
}
SpecialPunishCommand command = new SpecialPunishCommand(specialId);
command.load(section);
addSpecialPunishCommand(command);
}
}
public @NotNull List<String> getTagCommands() {
return Collections.unmodifiableList(this.tagCommandList);
}
public void setTagCommands(@NotNull Collection<String> commands) {
this.tagCommandList.clear();
this.tagCommandList.addAll(commands);
}
public @NotNull List<String> getUntagCommands() {
return Collections.unmodifiableList(this.untagCommandList);
}
public void setUntagCommands(@NotNull Collection<String> commands) {
this.untagCommandList.clear();
this.untagCommandList.addAll(commands);
}
public @NotNull List<String> getPunishCommands() {
return Collections.unmodifiableList(this.punishCommandList);
}
public void setPunishCommands(@NotNull Collection<String> commands) {
this.punishCommandList.clear();
this.punishCommandList.addAll(commands);
}
public @NotNull Map<String, SpecialPunishCommand> getSpecialPunishCommands() {
return Collections.unmodifiableMap(this.specialPunishCommandMap);
}
public @NotNull List<SpecialPunishCommand> getSpecialPunishCommandList() {
Collection<SpecialPunishCommand> valueCollection = this.specialPunishCommandMap.values();
return Collections.unmodifiableList(new ArrayList<>(valueCollection));
}
public @Nullable SpecialPunishCommand getSpecialPunishCommand(String id) {
return this.specialPunishCommandMap.get(id);
}
public void addSpecialPunishCommand(SpecialPunishCommand command) {
String id = command.getId();
this.specialPunishCommandMap.put(id, command);
}
public void removeSpecialPunishCommands() {
this.specialPunishCommandMap.clear();
}
public boolean isSpecialPunishCommandsEnabled() {
return specialPunishCommandsEnabled;
}
public void setSpecialPunishCommandsEnabled(boolean specialPunishCommandsEnabled) {
this.specialPunishCommandsEnabled = specialPunishCommandsEnabled;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/MainConfiguration.java
================================================
package com.github.sirblobman.combatlogx.api.configuration;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.EntityType;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import com.github.sirblobman.api.configuration.IConfigurable;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.object.TagReason;
import com.github.sirblobman.combatlogx.api.object.TimerType;
import static com.github.sirblobman.api.utility.ConfigurationHelper.parseEnum;
import static com.github.sirblobman.api.utility.ConfigurationHelper.parseEnums;
public final class MainConfiguration implements IConfigurable {
private final ICombatLogX plugin;
private final Set<String> worldSet;
private final Set<EntityType> ignoredProjectileSet;
private String generatedByVersion;
private boolean debugMode;
private boolean broadcastOnLoad;
private boolean broadcastOnEnable;
private boolean broadcastOnDisable;
private boolean worldListInverted;
private boolean linkPets;
private boolean linkProjectiles;
private boolean linkFishingRod;
private boolean linkTnt;
private boolean linkEndCrystals;
private TimerType timerType;
private int defaultTimer;
private String bypassPermissionName;
private transient Permission bypassPermission;
private boolean selfCombat;
private boolean untagOnSelfDeath;
private boolean untagOnEnemyDeath;
private boolean removeNoDamageCooldown;
private int forgiveRequestCooldown;
private int forgiveRequestExpire;
private double minimumTps;
private Set<TagReason> enabledTagReasons;
public MainConfiguration(@NotNull ICombatLogX plugin) {
this.plugin = plugin;
this.generatedByVersion = plugin.getPlugin().getDescription().getVersion();
this.debugMode = false;
this.broadcastOnLoad = true;
this.broadcastOnEnable = true;
this.broadcastOnDisable = true;
this.worldSet = new HashSet<>();
this.worldListInverted = false;
this.linkPets = true;
this.linkProjectiles = true;
this.linkFishingRod = true;
this.linkTnt = true;
this.linkEndCrystals = true;
this.ignoredProjectileSet = EnumSet.noneOf(EntityType.class);
this.timerType = TimerType.GLOBAL;
this.defaultTimer = 10;
this.bypassPermissionName = null;
this.bypassPermission = null;
this.selfCombat = false;
this.untagOnSelfDeath = true;
this.untagOnEnemyDeath = true;
this.removeNoDamageCooldown = true;
this.forgiveRequestCooldown = 30;
this.forgiveRequestExpire = 10;
this.minimumTps = 15.0D;
this.enabledTagReasons = EnumSet.allOf(TagReason.class);
}
@Override
public void load(ConfigurationSection config) {
String pluginVersion = this.plugin.getPlugin().getDescription().getVersion();
setGeneratedByVersion(config.getString("generated-by-version", pluginVersion));
setDebugMode(config.getBoolean("debug-mode", false));
ConfigurationSection broadcastSection = getOrCreateSection(config, "broadcast");
setBroadcastOnLoad(broadcastSection.getBoolean("on-load", true));
setBroadcastOnEnable(broadcastSection.getBoolean("on-enable", true));
setBroadcastOnDisable(broadcastSection.getBoolean("on-disable", true));
List<String> worldNameList = config.getStringList("disabled-world-list");
setWorlds(worldNameList);
setWorldListInverted(config.getBoolean("disabled-world-list-inverted"));
setLinkPets(config.getBoolean("link-pets", true));
setLinkProjectiles(config.getBoolean("link-projectiles", true));
setLinkFishingRod(config.getBoolean("link-fishing-rod", true));
setLinkTnt(config.getBoolean("link-tnt", true));
setLinkEndCrystals(config.getBoolean("link-end-crystal", true));
List<String> projectileNameList = config.getStringList("ignored-projectiles");
Set<EntityType> ignoredProjectileSet = parseEnums(projectileNameList, EntityType.class);
setIgnoredProjectiles(ignoredProjectileSet);
ConfigurationSection timerSection = getOrCreateSection(config, "timer");
String timerTypeName = timerSection.getString("type", "GLOBAL");
setTimerType(parseEnum(TimerType.class, timerTypeName, TimerType.GLOBAL));
setDefaultTimer(timerSection.getInt("default-timer", 10));
setBypassPermissionName(config.getString("bypass-permission"));
setSelfCombat(config.getBoolean("self-combat", false));
setUntagOnSelfDeath(config.getBoolean("untag-on-death", true));
setUntagOnEnemyDeath(config.getBoolean("untag-on-enemy-death", true));
setRemoveNoDamageCooldown(config.getBoolean("remove-no-damage-cooldown", true));
setForgiveRequestCooldown(config.getInt("forgive-request-cooldown", 30));
setForgiveRequestExpire(config.getInt("forgive-request-expire", 10));
setMinimumTps(config.getDouble("minimum-tps", 15.0D));
List<String> enabledTagReasonNameList = config.getStringList("enabled-tag-reasons");
Set<TagReason> enabledTagReasons = parseEnums(enabledTagReasonNameList, TagReason.class);
setEnabledTagReasons(enabledTagReasons);
}
public @NotNull String getGeneratedByVersion() {
return this.generatedByVersion;
}
public void setGeneratedByVersion(@NotNull String generatedByVersion) {
this.generatedByVersion = generatedByVersion;
}
public boolean isDebugMode() {
return this.debugMode;
}
public void setDebugMode(boolean debugMode) {
this.debugMode = debugMode;
}
public boolean isBroadcastOnLoad() {
return this.broadcastOnLoad;
}
public void setBroadcastOnLoad(boolean broadcastOnLoad) {
this.broadcastOnLoad = broadcastOnLoad;
}
public boolean isBroadcastOnEnable() {
return this.broadcastOnEnable;
}
public void setBroadcastOnEnable(boolean broadcastOnEnable) {
this.broadcastOnEnable = broadcastOnEnable;
}
public boolean isBroadcastOnDisable() {
return this.broadcastOnDisable;
}
public void setBroadcastOnDisable(boolean broadcastOnDisable) {
this.broadcastOnDisable = broadcastOnDisable;
}
public @NotNull Set<String> getWorlds() {
return Collections.unmodifiableSet(this.worldSet);
}
public void setWorlds(@NotNull Collection<String> worlds) {
this.worldSet.clear();
this.worldSet.addAll(worlds);
}
public boolean isWorldListInverted() {
return this.worldListInverted;
}
public void setWorldListInverted(boolean worldListInverted) {
this.worldListInverted = worldListInverted;
}
public boolean isLinkPets() {
return this.linkPets;
}
public void setLinkPets(boolean linkPets) {
this.linkPets = linkPets;
}
public boolean isLinkProjectiles() {
return this.linkProjectiles;
}
public void setLinkProjectiles(boolean linkProjectiles) {
this.linkProjectiles = linkProjectiles;
}
public boolean isLinkFishingRod() {
return this.linkFishingRod;
}
public void setLinkFishingRod(boolean linkFishingRod) {
this.linkFishingRod = linkFishingRod;
}
public boolean isLinkTnt() {
return this.linkTnt;
}
public void setLinkTnt(boolean linkTnt) {
this.linkTnt = linkTnt;
}
public boolean isLinkEndCrystals() {
return this.linkEndCrystals;
}
public void setLinkEndCrystals(boolean linkEndCrystals) {
this.linkEndCrystals = linkEndCrystals;
}
public @NotNull Set<EntityType> getIgnoredProjectiles() {
return Collections.unmodifiableSet(this.ignoredProjectileSet);
}
public void setIgnoredProjectiles(@NotNull Collection<EntityType> ignoredProjectiles) {
this.ignoredProjectileSet.clear();
this.ignoredProjectileSet.addAll(ignoredProjectiles);
}
public @NotNull TimerType getTimerType() {
return this.timerType;
}
public void setTimerType(@NotNull TimerType timerType) {
this.timerType = timerType;
}
public int getDefaultTimer() {
return defaultTimer;
}
public void setDefaultTimer(int defaultTimer) {
this.defaultTimer = defaultTimer;
}
public @Nullable String getBypassPermissionName() {
return this.bypassPermissionName;
}
public void setBypassPermissionName(@Nullable String bypassPermissionName) {
this.bypassPermissionName = bypassPermissionName;
this.bypassPermission = null;
}
public Permission getBypassPermission() {
if (this.bypassPermission != null) {
return this.bypassPermission;
}
String permissionName = getBypassPermissionName();
if (permissionName == null || permissionName.isEmpty()) {
return null;
}
String description = "CombatLogX bypass tagging permission.";
this.bypassPermission = new Permission(permissionName, description, PermissionDefault.FALSE);
return this.bypassPermission;
}
public boolean isSelfCombat() {
return this.selfCombat;
}
public void setSelfCombat(boolean selfCombat) {
this.selfCombat = selfCombat;
}
public boolean isUntagOnSelfDeath() {
return this.untagOnSelfDeath;
}
public void setUntagOnSelfDeath(boolean untagOnSelfDeath) {
this.untagOnSelfDeath = untagOnSelfDeath;
}
public boolean isUntagOnEnemyDeath() {
return this.untagOnEnemyDeath;
}
public void setUntagOnEnemyDeath(boolean untagOnEnemyDeath) {
this.untagOnEnemyDeath = untagOnEnemyDeath;
}
public boolean isRemoveNoDamageCooldown() {
return this.removeNoDamageCooldown;
}
public void setRemoveNoDamageCooldown(boolean removeNoDamageCooldown) {
this.removeNoDamageCooldown = removeNoDamageCooldown;
}
public int getForgiveRequestCooldown() {
return this.forgiveRequestCooldown;
}
public void setForgiveRequestCooldown(int forgiveRequestCooldown) {
this.forgiveRequestCooldown = forgiveRequestCooldown;
}
public int getForgiveRequestExpire() {
return this.forgiveRequestExpire;
}
public void setForgiveRequestExpire(int forgiveRequestExpire) {
this.forgiveRequestExpire = forgiveRequestExpire;
}
public double getMinimumTps() {
return this.minimumTps;
}
public void setMinimumTps(double minimumTps) {
this.minimumTps = minimumTps;
}
public boolean isDisabled(@NotNull World world) {
Set<String> worldNameSet = getWorlds();
boolean inverted = isWorldListInverted();
String worldName = world.getName();
boolean contains = worldNameSet.contains(worldName);
return (inverted != contains);
}
public boolean isProjectileIgnored(@NotNull EntityType type) {
Set<EntityType> ignoredProjectileSet = getIgnoredProjectiles();
return ignoredProjectileSet.contains(type);
}
public @NotNull Set<TagReason> getEnabledTagReasons() {
return Collections.unmodifiableSet(this.enabledTagReasons);
}
public void setEnabledTagReasons(@NotNull Collection<TagReason> reasons) {
this.enabledTagReasons.clear();
this.enabledTagReasons.addAll(reasons);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/PunishConfiguration.java
================================================
package com.github.sirblobman.combatlogx.api.configuration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.bukkit.configuration.ConfigurationSection;
import com.github.sirblobman.api.configuration.IConfigurable;
import com.github.sirblobman.combatlogx.api.object.KillTime;
import static com.github.sirblobman.api.utility.ConfigurationHelper.parseEnum;
public final class PunishConfiguration implements IConfigurable {
private final List<String> kickIgnoreList;
private final List<String> customDeathMessageList;
private boolean onDisconnect;
private boolean onKick;
private boolean onExpire;
private KillTime killTime;
private boolean enablePunishmentCounter;
private boolean kickIgnoreListInverted;
public PunishConfiguration() {
this.onDisconnect = true;
this.onKick = false;
this.onExpire = false;
this.killTime = KillTime.QUIT;
this.enablePunishmentCounter = true;
this.kickIgnoreListInverted = false;
this.kickIgnoreList = new ArrayList<>();
this.customDeathMessageList = new ArrayList<>();
}
@Override
public void load(ConfigurationSection config) {
setOnDisconnect(config.getBoolean("on-disconnect", true));
setOnKick(config.getBoolean("on-kick", false));
setOnExpire(config.getBoolean("on-expire", false));
setEnablePunishmentCounter(config.getBoolean("enable-punishment-counter"));
String killTimeName = config.getString("kill-time", "QUIT");
setKillTime(parseEnum(KillTime.class, killTimeName, KillTime.QUIT));
setKickIgnoreList(config.getStringList("kick-ignore-list"));
setCustomDeathMessages(config.getStringList("custom-death-message-list"));
}
public boolean isOnDisconnect() {
return this.onDisconnect;
}
public void setOnDisconnect(boolean onDisconnect) {
this.onDisconnect = onDisconnect;
}
public boolean isOnKick() {
return this.onKick;
}
public void setOnKick(boolean onKick) {
this.onKick = onKick;
}
public boolean isOnExpire() {
return this.onExpire;
}
public void setOnExpire(boolean onExpire) {
this.onExpire = onExpire;
}
public @NotNull KillTime getKillTime() {
return this.killTime;
}
public void setKillTime(@NotNull KillTime killTime) {
this.killTime = killTime;
}
public boolean isEnablePunishmentCounter() {
return enablePunishmentCounter;
}
public void setEnablePunishmentCounter(boolean enablePunishmentCounter) {
this.enablePunishmentCounter = enablePunishmentCounter;
}
public @NotNull List<String> getKickIgnoreList() {
return Collections.unmodifiableList(this.kickIgnoreList);
}
public void setKickIgnoreList(@NotNull Collection<String> kickIgnores) {
this.kickIgnoreList.clear();
this.kickIgnoreList.addAll(kickIgnores);
}
public boolean isKickIgnoreListInverted() {
return this.kickIgnoreListInverted;
}
public void setKickIgnoreListInverted(boolean inverted) {
this.kickIgnoreListInverted = inverted;
}
public boolean isKickIgnored(@NotNull String reason) {
boolean ignore = isInIgnoreList(reason);
boolean inverted = isKickIgnoreListInverted();
return (inverted != ignore);
}
private boolean isInIgnoreList(@NotNull String reason) {
List<String> kickIgnoreList = getKickIgnoreList();
if (kickIgnoreList.contains("*")) {
return true;
}
for (String part : kickIgnoreList) {
if (reason.contains(part)) {
return true;
}
}
return false;
}
public List<String> getCustomDeathMessages() {
return Collections.unmodifiableList(this.customDeathMessageList);
}
public void setCustomDeathMessages(@NotNull Collection<String> deathMessages) {
this.customDeathMessageList.clear();
this.customDeathMessageList.addAll(deathMessages);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/CustomPlayerEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerEvent;
public abstract class CustomPlayerEvent extends PlayerEvent {
public CustomPlayerEvent(@NotNull Player player) {
super(player);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/CustomPlayerEventCancellable.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
public abstract class CustomPlayerEventCancellable extends CustomPlayerEvent implements Cancellable {
private boolean cancelled;
public CustomPlayerEventCancellable(@NotNull Player player) {
super(player);
this.cancelled = false;
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/NPCDropItemEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
import com.github.sirblobman.combatlogx.api.object.CitizensSlotType;
/**
* A custom event that will be called when an item is dropped from a combat logged NPC.
*
* @author SizzleMcGrizzle
*/
public final class NPCDropItemEvent extends Event implements Cancellable {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final OfflinePlayer player;
private final Location location;
private final CitizensSlotType slotType;
private boolean cancelled;
private ItemStack item;
public NPCDropItemEvent(@NotNull ItemStack item, @NotNull OfflinePlayer player, @NotNull Location location,
@NotNull CitizensSlotType slotType) {
this.player = player;
this.location = location;
this.item = item;
this.slotType = slotType;
this.cancelled = false;
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The player who combat logged
*/
public @NotNull OfflinePlayer getPlayer() {
return player;
}
/**
* @return The location at which the player combat logged
*/
public @NotNull Location getLocation() {
return location;
}
/**
* @return The item being dropped from the location
* @see CitizensSlotType for various inventory slot locations this item could be from
*/
public @NotNull ItemStack getItem() {
return item;
}
public void setItem(@NotNull ItemStack item) {
this.item = item.clone();
}
/**
* @return The type of slot the item is from
*/
public @NotNull CitizensSlotType getSlotType() {
return slotType;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerEnemyRemoveEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import com.github.sirblobman.combatlogx.api.object.UntagReason;
/**
* A custom event that is fired when a player is removed from combat with a specific enemy.
* The event may not be called for enemy entities that have already been removed from the server.
*
* @author SirBlobman
* @see PlayerUntagEvent
*/
public final class PlayerEnemyRemoveEvent extends CustomPlayerEvent {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final UntagReason untagReason;
private final Entity enemy;
public PlayerEnemyRemoveEvent(@NotNull Player player, @NotNull UntagReason untagReason, @NotNull Entity enemy) {
super(player);
this.untagReason = untagReason;
this.enemy = enemy;
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public @NotNull HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The reason that the player was removed from combat with the enemy.
* @see #getPlayer()
*/
public @NotNull UntagReason getUntagReason() {
return this.untagReason;
}
/**
* @return The previous enemy of the player./
*/
public @NotNull Entity getEnemy() {
return this.enemy;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerPreTagEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import com.github.sirblobman.combatlogx.api.object.TagReason;
import com.github.sirblobman.combatlogx.api.object.TagType;
/**
* A custom event that will be fired before a player is put into combat.
* If the event is cancelled, the player will not be tagged.
*
* @author SirBlobman
*/
public final class PlayerPreTagEvent extends CustomPlayerEventCancellable {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final Entity enemy;
private final TagType tagType;
private final TagReason tagReason;
public PlayerPreTagEvent(@NotNull Player player, @Nullable Entity enemy, @NotNull TagType tagType,
@NotNull TagReason tagReason) {
super(player);
this.enemy = enemy;
this.tagType = tagType;
this.tagReason = tagReason;
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The enemy that will tag the player or null if an enemy does not exist
* @see #getPlayer()
*/
public @Nullable Entity getEnemy() {
return this.enemy;
}
/**
* @return The type of entity that will cause this player to be tagged
* @see #getPlayer()
*/
public @NotNull TagType getTagType() {
return this.tagType;
}
/**
* @return The reason that will cause this player to be tagged.
* @see #getPlayer()
*/
public @NotNull TagReason getTagReason() {
return this.tagReason;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerPunishEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import com.github.sirblobman.combatlogx.api.object.UntagReason;
/**
* A custom event that will fire before a player is punished.
* If the event is cancelled, the player will not be punished.
*
* @author SirBlobman
*/
public final class PlayerPunishEvent extends CustomPlayerEventCancellable {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final UntagReason punishReason;
private final List<Entity> enemyList;
public PlayerPunishEvent(@NotNull Player player, @NotNull UntagReason punishReason,
@NotNull List<Entity> enemyList) {
super(player);
this.punishReason = punishReason;
this.enemyList = new ArrayList<>(enemyList);
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The original {@link UntagReason} that the player was punished for.
*/
public @NotNull UntagReason getPunishReason() {
return this.punishReason;
}
/**
* @return The list of enemies the player had when punished.
*/
public @NotNull List<Entity> getEnemies() {
return Collections.unmodifiableList(this.enemyList);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerReTagEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.object.TagReason;
import com.github.sirblobman.combatlogx.api.object.TagType;
/**
* A custom event that will be fired when a player's timer is extended
*
* @author SirBlobman
*/
public final class PlayerReTagEvent extends CustomPlayerEventCancellable {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final Entity enemy;
private final TagType tagType;
private final TagReason tagReason;
private long combatEndMillis;
public PlayerReTagEvent(@NotNull Player player, @Nullable Entity enemy, @NotNull TagType tagType,
@NotNull TagReason tagReason, long combatEndMillis) {
super(player);
this.enemy = enemy;
this.tagType = tagType;
this.tagReason = tagReason;
this.combatEndMillis = combatEndMillis;
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public @NotNull HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The enemy that will tag the player or null if an enemy does not exist
* @see #getPlayer()
*/
public @Nullable Entity getEnemy() {
return this.enemy;
}
/**
* @return The type of entity that will cause this player to be tagged
* @see #getPlayer()
*/
public @NotNull TagType getTagType() {
return this.tagType;
}
/**
* @return The reason that will cause this player to be tagged.
* @see #getPlayer()
*/
public @NotNull TagReason getTagReason() {
return this.tagReason;
}
/**
* @return The time (in millis) that the combat timer will end. This can change if the player is tagged again
* @see #getPlayer()
*/
public long getEndTime() {
return this.combatEndMillis;
}
/**
* Set the amount of time to wait before the player escapes from combat.
*
* @param millis The epoch time (in milliseconds) that the timer will end.
* @see ICombatManager#getMaxTimerSeconds(Player)
*/
public void setEndTime(long millis) {
this.combatEndMillis = millis;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerTagEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.object.TagReason;
import com.github.sirblobman.combatlogx.api.object.TagType;
/**
* A custom event that will be fired when a player is put into combat.
* If you want to prevent a player from being tagged, check {@link PlayerPreTagEvent}
*
* @author SirBlobman
*/
public final class PlayerTagEvent extends CustomPlayerEvent {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final Entity enemy;
private final TagType tagType;
private final TagReason tagReason;
private long combatEndMillis;
public PlayerTagEvent(@NotNull Player player, @Nullable Entity enemy, @NotNull TagType tagType,
@NotNull TagReason tagReason, long combatEndMillis) {
super(player);
this.enemy = enemy;
this.tagType = tagType;
this.tagReason = tagReason;
this.combatEndMillis = combatEndMillis;
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public @NotNull HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The enemy that will tag the player or null if an enemy does not exist
* @see #getPlayer()
*/
public @Nullable Entity getEnemy() {
return this.enemy;
}
/**
* @return The type of entity that will cause this player to be tagged
* @see #getPlayer()
*/
public @NotNull TagType getTagType() {
return this.tagType;
}
/**
* @return The reason that will cause this player to be tagged.
* @see #getPlayer()
*/
public @NotNull TagReason getTagReason() {
return this.tagReason;
}
/**
* @return The time (in millis) that the combat timer will end. This can change if the player is tagged again
* @see #getPlayer()
*/
public long getEndTime() {
return this.combatEndMillis;
}
/**
* Set the amount of time to wait before the player escapes from combat.
*
* @param millis The epoch time (in milliseconds) that the timer will end.
* @see ICombatManager#getMaxTimerSeconds(Player)
*/
public void setEndTime(long millis) {
this.combatEndMillis = millis;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerUntagEvent.java
================================================
package com.github.sirblobman.combatlogx.api.event;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import com.github.sirblobman.combatlogx.api.object.UntagReason;
/**
* A custom event that is fired when a player is removed from combat.
*
* @author SirBlobman
*/
public final class PlayerUntagEvent extends CustomPlayerEvent {
private static final HandlerList HANDLER_LIST;
static {
HANDLER_LIST = new HandlerList();
}
private final UntagReason untagReason;
private final List<Entity> previousEnemyList;
public PlayerUntagEvent(@NotNull Player player, @NotNull UntagReason untagReason,
@NotNull List<Entity> previousEnemyList) {
super(player);
this.untagReason = untagReason;
this.previousEnemyList = new ArrayList<>(previousEnemyList);
}
public static @NotNull HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public @NotNull HandlerList getHandlers() {
return getHandlerList();
}
/**
* @return The reason that the player was removed from combat.
* @see #getPlayer()
*/
public @NotNull UntagReason getUntagReason() {
return this.untagReason;
}
public @NotNull List<Entity> getPreviousEnemies() {
return Collections.unmodifiableList(this.previousEnemyList);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/Expansion.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import com.github.sirblobman.api.configuration.ConfigurationManager;
import com.github.sirblobman.api.configuration.IResourceHolder;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
public abstract class Expansion implements IResourceHolder {
private final ICombatLogX plugin;
private final List<Listener> listenerList;
private State state;
private File dataFolder, file;
private ExpansionLogger logger;
private ExpansionDescription description;
private ConfigurationManager configurationManager;
public Expansion(@NotNull ICombatLogX plugin) {
this.plugin = plugin;
this.listenerList = new ArrayList<>();
this.state = State.UNLOADED;
this.description = null;
this.dataFolder = null;
this.file = null;
}
final @NotNull List<Listener> getListeners() {
return this.listenerList;
}
public final @NotNull State getState() {
return this.state;
}
final void setState(@NotNull State state) {
this.state = state;
}
public final @NotNull ICombatLogX getPlugin() {
return this.plugin;
}
public final @NotNull Logger getLogger() {
if (this.logger == null) {
this.logger = new ExpansionLogger(this);
}
return this.logger;
}
protected final @NotNull ConfigurationManager getConfigurationManager() {
if (this.configurationManager == null) {
this.configurationManager = new ConfigurationManager(this);
}
return this.configurationManager;
}
public final @NotNull File getDataFolder() {
return this.dataFolder;
}
final void setDataFolder(@NotNull File dataFolder) {
if (!dataFolder.isDirectory()) {
throw new IllegalArgumentException("dataFolder must be a directory!");
}
this.dataFolder = dataFolder;
}
public final @NotNull File getFile() {
return this.file;
}
final void setFile(@NotNull File file) {
if (file.isDirectory()) {
throw new IllegalArgumentException("file must not be a directory!");
}
this.file = file;
}
public final @NotNull ExpansionDescription getDescription() {
return this.description;
}
final void setDescription(@NotNull ExpansionDescription description) {
this.description = description;
}
public final @NotNull String getName() {
ExpansionDescription description = getDescription();
return description.getName();
}
public final @NotNull String getPrefix() {
ExpansionDescription description = getDescription();
return description.getPrefix();
}
@Override
public final @NotNull String getKeyName() {
String name = getName();
return name.toLowerCase(Locale.US);
}
@Override
public final @Nullable InputStream getResource(@NotNull String name) {
try {
Class<? extends Expansion> thisClass = getClass();
URLClassLoader classLoader = (URLClassLoader) thisClass.getClassLoader();
URL url = classLoader.findResource(name);
if (url == null) {
return null;
}
URLConnection connection = url.openConnection();
connection.setUseCaches(false);
return connection.getInputStream();
} catch (IOException ex) {
Logger logger = getLogger();
logger.log(Level.WARNING, "Failed to get resource '" + name + "':", ex);
return null;
}
}
protected final boolean checkDependency(@NotNull String pluginName, boolean checkEnabled) {
PluginManager pluginManager = Bukkit.getPluginManager();
Logger logger = getLogger();
Plugin plugin = pluginManager.getPlugin(pluginName);
if (plugin == null) {
logger.warning("A dependency is not installed on the server: " + pluginName);
return false;
}
if (checkEnabled && !plugin.isEnabled()) {
logger.warning("A dependency was found but it was not enabled: " + pluginName);
return false;
}
PluginDescriptionFile description = plugin.getDescription();
String fullName = description.getFullName();
logger.info("Successfully found a dependency: " + fullName);
return true;
}
protected final boolean checkDependency(@NotNull String pluginName, boolean checkEnabled,
@NotNull String versionStartsWith) {
if (!checkDependency(pluginName, checkEnabled)) {
return false;
}
PluginManager pluginManager = Bukkit.getPluginManager();
Logger logger = getLogger();
Plugin plugin = pluginManager.getPlugin(pluginName);
if (plugin == null) {
return false;
}
PluginDescriptionFile description = plugin.getDescription();
String version = description.getVersion();
if (!version.startsWith(versionStartsWith)) {
logger.info("Dependency '" + pluginName + "' is not the correct version!");
return false;
}
return true;
}
protected final void registerListener(@NotNull Listener listener) {
ICombatLogX plugin = getPlugin();
JavaPlugin javaPlugin = plugin.getPlugin();
PluginManager pluginManager = Bukkit.getPluginManager();
pluginManager.registerEvents(listener, javaPlugin);
this.listenerList.add(listener);
}
protected final void selfDisable() {
ICombatLogX plugin = getPlugin();
ExpansionManager expansionManager = plugin.getExpansionManager();
expansionManager.disableExpansion(this);
}
public abstract void onLoad();
public abstract void onEnable();
public abstract void onDisable();
public abstract void reloadConfig();
public enum State {
LOADED, UNLOADED, ENABLED, ENABLING, DISABLED
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionClassLoader.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.io.File;
import java.lang.reflect.Constructor;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.configuration.file.YamlConfiguration;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
class ExpansionClassLoader extends URLClassLoader {
private final ExpansionManager manager;
private final Map<String, Class<?>> classes;
private Expansion expansion;
ExpansionClassLoader(@NotNull ExpansionManager manager, @NotNull YamlConfiguration description,
@NotNull File path, @NotNull ClassLoader parent)
throws MalformedURLException {
super(new URL[]{path.toURI().toURL()}, parent);
this.manager = manager;
this.classes = new HashMap<>();
registerExpansion(description, path);
}
@Override
protected @Nullable Class<?> findClass(String name) {
return findClass(name, true);
}
public @Nullable Class<?> findClass(String name, boolean checkGlobal) {
Class<?> result = classes.get(name);
if (result == null) {
if (checkGlobal) {
result = this.manager.getClassByName(name);
}
if (result == null) {
try {
result = super.findClass(name);
} catch (ClassNotFoundException | NoClassDefFoundError e) {
// Do nothing.
} catch (UnsupportedClassVersionError e) {
ICombatLogX plugin = this.manager.getPlugin();
Logger logger = plugin.getLogger();
logger.warning("Could not load class with name=" + name + ", global=" + checkGlobal
+ " because an error occurred:");
logger.warning(e.getMessage());
}
if (result != null) {
this.manager.setClass(name, result);
}
}
classes.put(name, result);
}
return result;
}
public @Nullable Expansion getExpansion() {
return this.expansion;
}
public @NotNull Set<String> getClasses() {
return this.classes.keySet();
}
private void registerExpansion(@NotNull YamlConfiguration description, @NotNull File path) {
Class<?> mainClass;
try {
String mainClassName = description.getString("main");
if (mainClassName == null) {
throw new IllegalStateException("Could not find `main` in expansion.yml");
}
mainClass = Class.forName(mainClassName, true, this);
} catch (ReflectiveOperationException ex) {
String newError = ("Could not load '" + path.getName() + "' from folder '" + path.getParent() + "'");
throw new IllegalStateException(newError, ex);
}
Class<? extends Expansion> expansionClass;
try {
expansionClass = mainClass.asSubclass(Expansion.class);
} catch (ClassCastException ex) {
String newError = ("Main class is not an instance of 'Expansion'");
throw new IllegalStateException(newError, ex);
}
try {
ICombatLogX plugin = this.manager.getPlugin();
Constructor<? extends Expansion> constructor = expansionClass.getDeclaredConstructor(ICombatLogX.class);
this.expansion = constructor.newInstance(plugin);
ExpansionDescription expansionDescription = createDescription(description);
this.expansion.setDescription(expansionDescription);
} catch (ReflectiveOperationException ex) {
String pathName = path.getName();
String pathParent = path.getParent();
String errorMessageFormat = "Could not load '%s' from folder '%s'.";
String errorMessage = String.format(Locale.US, errorMessageFormat, pathName, pathParent);
throw new IllegalStateException(errorMessage, ex);
}
}
private ExpansionDescription createDescription(@NotNull YamlConfiguration configuration)
throws IllegalStateException {
String mainClass = configuration.getString("main");
if (mainClass == null) {
throw new IllegalStateException("'main' is required in expansion.yml");
}
String name = configuration.getString("name");
if (name == null) {
throw new IllegalStateException("'name' is required in expansion.yml");
}
String version = configuration.getString("version");
if (version == null) {
throw new IllegalStateException("'version' is required in expansion.yml");
}
String prefix = configuration.getString("display-name");
if (prefix == null) {
prefix = configuration.getString("prefix");
}
if (prefix == null) {
prefix = name;
}
String description = configuration.getString("description", "");
String website = configuration.getString("website", null);
List<String> authorList = configuration.getStringList("authors");
if (authorList.isEmpty()) {
authorList = new ArrayList<>();
}
String author = configuration.getString("author", null);
if (author != null) {
authorList.add(author);
}
List<String> pluginDependList = configuration.getStringList("plugin-depend");
List<String> pluginSoftDependList = configuration.getStringList("plugin-soft-depend");
List<String> expansionDependList = configuration.getStringList("expansion-depend");
List<String> expansionSoftDependList = configuration.getStringList("expansion-soft-depend");
boolean lateLoad = configuration.getBoolean("late-load", false);
ExpansionDescriptionBuilder builder = new ExpansionDescriptionBuilder(mainClass, name, version)
.withPrefix(prefix)
.withDescription(description)
.withWebsite(website)
.withAuthors(authorList)
.withPluginDependencies(pluginDependList)
.withPluginSoftDependencies(pluginSoftDependList)
.withExpansionDependencies(expansionDependList)
.withExpansionSoftDependencies(expansionSoftDependList)
.withLateLoad(lateLoad);
return builder.build();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionComparator.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.util.Comparator;
import java.util.List;
import org.jetbrains.annotations.NotNull;
public final class ExpansionComparator implements Comparator<Expansion> {
@Override
public int compare(@NotNull Expansion e1, @NotNull Expansion e2) {
ExpansionDescription description1 = e1.getDescription();
ExpansionDescription description2 = e2.getDescription();
String expansionName1 = description1.getName();
String expansionName2 = description2.getName();
List<String> expansionDependencyList1 = description1.getExpansionDependencies();
List<String> expansionDependencyList2 = description2.getExpansionDependencies();
if (expansionDependencyList1.contains(expansionName2) && expansionDependencyList2.contains(expansionName1)) {
throw new IllegalStateException("Cyclic Dependency: " + expansionName1 + ", " + expansionName2);
}
if (expansionDependencyList1.contains(expansionName2)) {
return -1;
}
if (expansionDependencyList2.contains(expansionName1)) {
return 1;
}
return expansionName1.compareTo(expansionName2);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionDescription.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class ExpansionDescription {
private final String mainClass;
private final String name;
private final String version;
private final String prefix;
private final String description;
private final String website;
private final List<String> authorList;
private final List<String> pluginDependList;
private final List<String> pluginSoftDependList;
private final List<String> expansionDependList;
private final List<String> expansionSoftDependList;
private final boolean lateLoad;
ExpansionDescription(@NotNull String mainClass, @NotNull String name, @NotNull String version,
@NotNull String prefix, @NotNull String description, @Nullable String website,
@NotNull List<String> authorList, @NotNull List<String> pluginDependList,
@NotNull List<String> pluginSoftDependList, @NotNull List<String> expansionDependList,
@NotNull List<String> expansionSoftDependList, boolean lateLoad) {
this.mainClass = mainClass;
this.name = name;
this.version = version;
this.prefix = prefix;
this.description = description;
this.website = website;
this.authorList = authorList;
this.pluginDependList = pluginDependList;
this.pluginSoftDependList = pluginSoftDependList;
this.expansionDependList = expansionDependList;
this.expansionSoftDependList = expansionSoftDependList;
this.lateLoad = lateLoad;
}
public @NotNull String getMainClass() {
return this.mainClass;
}
public @NotNull String getName() {
return this.name;
}
public @NotNull String getPrefix() {
return this.prefix;
}
public @NotNull String getVersion() {
return this.version;
}
public @NotNull String getDescription() {
return this.description;
}
public @Nullable String getWebsite() {
return this.website;
}
public @NotNull List<String> getAuthors() {
return Collections.unmodifiableList(this.authorList);
}
public @NotNull List<String> getPluginDependencies() {
return Collections.unmodifiableList(this.pluginDependList);
}
public @NotNull List<String> getPluginSoftDependencies() {
return Collections.unmodifiableList(this.pluginSoftDependList);
}
public @NotNull List<String> getExpansionDependencies() {
return Collections.unmodifiableList(this.expansionDependList);
}
public @NotNull List<String> getExpansionSoftDependencies() {
return Collections.unmodifiableList(this.expansionSoftDependList);
}
public @NotNull String getFullName() {
String displayName = getPrefix();
String version = getVersion();
return (displayName + " v" + version);
}
public boolean isLateLoad() {
return this.lateLoad;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionDescriptionBuilder.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class ExpansionDescriptionBuilder {
private final String mainClass;
private final String name;
private final String version;
private String prefix;
private String description;
private String website;
private List<String> authorList;
private List<String> pluginDependencyList;
private List<String> expansionDependencyList;
private List<String> pluginSoftDependencyList;
private List<String> expansionSoftDependencyList;
private boolean lateLoad;
public ExpansionDescriptionBuilder(@NotNull String mainClass, @NotNull String name, @NotNull String version) {
this.mainClass = mainClass;
this.name = name;
this.version = version;
this.prefix = null;
this.description = null;
this.website = null;
this.authorList = new ArrayList<>();
this.pluginDependencyList = new ArrayList<>();
this.expansionDependencyList = new ArrayList<>();
this.pluginSoftDependencyList = new ArrayList<>();
this.expansionSoftDependencyList = new ArrayList<>();
this.lateLoad = false;
}
public @NotNull ExpansionDescriptionBuilder withPrefix(@Nullable String prefix) {
this.prefix = prefix;
return this;
}
public @NotNull ExpansionDescriptionBuilder withDescription(@Nullable String description) {
this.description = description;
return this;
}
public @NotNull ExpansionDescriptionBuilder withWebsite(@Nullable String website) {
this.website = website;
return this;
}
public @NotNull ExpansionDescriptionBuilder withAuthors(@NotNull List<String> authorList) {
this.authorList = new ArrayList<>(authorList);
return this;
}
public @NotNull ExpansionDescriptionBuilder withPluginDependencies(@NotNull List<String> list) {
this.pluginDependencyList = new ArrayList<>(list);
return this;
}
public @NotNull ExpansionDescriptionBuilder withPluginSoftDependencies(@NotNull List<String> list) {
this.pluginSoftDependencyList = new ArrayList<>(list);
return this;
}
public @NotNull ExpansionDescriptionBuilder withExpansionDependencies(@NotNull List<String> list) {
this.expansionDependencyList = new ArrayList<>(list);
return this;
}
public @NotNull ExpansionDescriptionBuilder withExpansionSoftDependencies(@NotNull List<String> list) {
this.expansionSoftDependencyList = new ArrayList<>(list);
return this;
}
public @NotNull ExpansionDescriptionBuilder withLateLoad(boolean lateLoad) {
this.lateLoad = lateLoad;
return this;
}
public @NotNull ExpansionDescription build() {
String prefix = (this.prefix == null ? this.name : this.prefix);
String description = (this.description == null ? "" : this.description);
return new ExpansionDescription(this.mainClass, this.name, this.version, prefix, description, this.website,
this.authorList, this.pluginDependencyList, this.pluginSoftDependencyList,
this.expansionDependencyList, this.expansionSoftDependencyList, this.lateLoad);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.github.sirblobman.combatlogx.api.listener.CombatListener;
public abstract class ExpansionListener extends CombatListener {
private final Expansion expansion;
public ExpansionListener(@NotNull Expansion expansion) {
super(expansion.getPlugin());
this.expansion = expansion;
}
@Override
public final void register() {
Expansion expansion = getExpansion();
expansion.registerListener(this);
}
@Override
protected final void printDebug(@NotNull String message) {
printDebug(message, null);
}
protected final void printDebug(@NotNull String message, @Nullable Throwable throwable) {
if (isDebugModeDisabled()) {
return;
}
Class<?> thisClass = getClass();
String className = thisClass.getSimpleName();
String logMessage = String.format(Locale.US, "[Debug] [%s] %s", className, message);
Logger expansionLogger = getExpansionLogger();
if (throwable == null) {
expansionLogger.info(logMessage);
} else {
expansionLogger.log(Level.WARNING, logMessage, throwable);
}
}
protected final @NotNull Expansion getExpansion() {
return this.expansion;
}
protected final @NotNull Logger getExpansionLogger() {
Expansion expansion = getExpansion();
return expansion.getLogger();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionLogger.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.bukkit.plugin.java.JavaPlugin;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
public final class ExpansionLogger extends Logger {
private final Expansion expansion;
public ExpansionLogger(@NotNull Expansion expansion) {
super(expansion.getName(), null);
this.expansion = expansion;
}
public @NotNull Expansion getExpansion() {
return this.expansion;
}
@Override
public void log(@NotNull LogRecord record) {
Expansion expansion = getExpansion();
String expansionPrefix = expansion.getPrefix();
ICombatLogX combatLogX = expansion.getPlugin();
JavaPlugin plugin = combatLogX.getPlugin();
String pluginName = plugin.getName();
String originalMessage = record.getMessage();
String newMessage = ("[" + expansionPrefix + "] " + originalMessage);
record.setMessage(newMessage);
record.setLoggerName(pluginName);
Logger logger = plugin.getLogger();
logger.log(record);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionManager.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.io.BufferedReader;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import com.github.sirblobman.api.folia.details.TaskDetails;
import com.github.sirblobman.api.folia.scheduler.TaskScheduler;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.expansion.Expansion.State;
public final class ExpansionManager {
private final ICombatLogX plugin;
private final Map<String, Expansion> expansionMap;
private final Map<Expansion, ExpansionClassLoader> expansionClassLoaderMap;
private final Map<String, Class<?>> classNameMap;
public ExpansionManager(@NotNull ICombatLogX plugin) {
this.plugin = plugin;
this.expansionMap = new HashMap<>();
this.expansionClassLoaderMap = new HashMap<>();
this.classNameMap = new HashMap<>();
}
public @NotNull ICombatLogX getPlugin() {
return this.plugin;
}
public void loadExpansions() {
ICombatLogX plugin = getPlugin();
Logger logger = plugin.getLogger();
logger.info("Loading expansions...");
File dataFolder = plugin.getDataFolder();
if (!dataFolder.exists() && !dataFolder.mkdirs()) {
logger.warning("The CombatLogX folder does not exist and could not be created!");
return;
}
File expansionsFolder = new File(dataFolder, "expansions");
if (!expansionsFolder.exists() && !expansionsFolder.mkdirs()) {
logger.warning("The expansions folder does not exist and could not be created!");
return;
}
FilenameFilter filter = (folder, fileName) -> fileName.endsWith(".jar");
File[] fileArray = expansionsFolder.listFiles(filter);
if (fileArray == null || fileArray.length == 0) {
logger.info("There were no expansions to load.");
return;
}
for (File file : fileArray) {
if (file.isDirectory()) {
continue;
}
loadExpansion(file);
logger.info(" ");
}
List<Expansion> expansionList = sortExpansions(getLoadedExpansions());
int expansionListSize = expansionList.size();
String message = ("Successfully loaded " + expansionListSize + " expansion" +
(expansionListSize == 1 ? "" : "s") + ".");
logger.info(message);
}
public void enableExpansions() {
ICombatLogX plugin = getPlugin();
Logger logger = plugin.getLogger();
logger.info("Enabling expansions...");
List<Expansion> loadedExpansionList = getLoadedExpansions();
if (loadedExpansionList.isEmpty()) {
logger.info("There were no expansions to enable.");
return;
}
sortExpansions(loadedExpansionList);
List<Expansion> lateLoadExpansionList = new ArrayList<>();
for (Expansion expansion : loadedExpansionList) {
ExpansionDescription description = expansion.getDescription();
if (description.isLateLoad()) {
lateLoadExpansionList.add(expansion);
continue;
}
enableExpansion(expansion);
logger.info(" ");
}
List<Expansion> enabledExpansionList = getEnabledExpansions();
int expansionListSize = enabledExpansionList.size();
String message = ("Successfully enabled " + expansionListSize + " expansion"
+ (expansionListSize == 1 ? "" : "s") + ".");
logger.info(message);
TaskDetails task = new TaskDetails(plugin.getPlugin()) {
@Override
public void run() {
for (Expansion expansion : lateLoadExpansionList) {
enableExpansion(expansion);
logger.info(" ");
}
List<Expansion> newEnabledExpansionList = getEnabledExpansions();
int newExpansionListSize = newEnabledExpansionList.size();
int newExpansionCount = (newExpansionListSize - expansionListSize);
String newMessage = ("Successfully enabled " + newExpansionCount + " late-load expansion"
+ (expansionListSize == 1 ? "" : "s") + ".");
logger.info(newMessage);
}
};
task.setDelay(1L);
TaskScheduler scheduler = plugin.getFoliaHelper().getScheduler();
scheduler.scheduleTask(task);
}
public void disableExpansions() {
ICombatLogX plugin = getPlugin();
Logger logger = plugin.getLogger();
logger.info("Disabling expansions...");
List<Expansion> enabledExpansionList = getEnabledExpansions();
if (enabledExpansionList.isEmpty()) {
logger.info("There were no expansions to disable.");
} else {
for (Expansion expansion : enabledExpansionList) {
disableExpansion(expansion);
logger.info(" ");
}
}
this.expansionMap.clear();
this.classNameMap.clear();
this.expansionClassLoaderMap.clear();
logger.info("Successfully disabled all expansions.");
}
public void reloadConfigs() {
List<Expansion> expansionList = getEnabledExpansions();
expansionList.forEach(Expansion::reloadConfig);
}
public @NotNull Optional<Expansion> getExpansion(String name) {
if (name == null) {
return Optional.empty();
}
Expansion expansion = this.expansionMap.getOrDefault(name, null);
return Optional.ofNullable(expansion);
}
public @NotNull List<Expansion> getAllExpansions() {
Collection<Expansion> expansionCollection = this.expansionMap.values();
return new ArrayList<>(expansionCollection);
}
public @NotNull List<Expansion> getLoadedExpansions() {
List<Expansion> expansionList = getAllExpansions();
return expansionList.stream()
.filter(expansion -> expansion.getState() == State.LOADED)
.collect(Collectors.toList());
}
public @NotNull List<Expansion> getEnabledExpansions() {
List<Expansion> expansionList = getAllExpansions();
return expansionList.stream()
.filter(expansion -> expansion.getState() == State.ENABLED)
.sorted(Comparator.comparing(Expansion::getName))
.collect(Collectors.toList());
}
public @Nullable ExpansionClassLoader getClassLoader(Expansion expansion) {
return this.expansionClassLoaderMap.getOrDefault(expansion, null);
}
public @Nullable Class<?> getClassByName(String name) {
try {
Class<?> defaultValue = this.expansionClassLoaderMap.values()
.stream().map(loader -> loader.findClass(name, false))
.filter(Objects::nonNull).findFirst().orElse(null);
return this.classNameMap.getOrDefault(name, defaultValue);
} catch (Exception ex) {
return null;
}
}
public void setClass(@NotNull String name, @NotNull Class<?> clazz) {
this.classNameMap.putIfAbsent(name, clazz);
}
private void loadExpansion(@NotNull File expansionFile) {
ICombatLogX plugin = getPlugin();
Logger logger = plugin.getLogger();
plugin.printDebug("Attempting to load expansion from file '" + expansionFile + "'...");
Expansion expansion;
ExpansionClassLoader expansionClassLoader;
try (JarFile jarFile = new JarFile(expansionFile)) {
YamlConfiguration description = getExpansionDescription(jarFile);
Class<? extends ExpansionManager> managerClass = getClass();
ClassLoader managerClassLoader = managerClass.getClassLoader();
PluginManager pluginManager = Bukkit.getPluginManager();
if (description.isList("plugin-depend")) {
List<String> pluginDependList = description.getStringList("plugin-depend");
for (String pluginName : pluginDependList) {
Plugin dependencyPlugin = pluginManager.getPlugin(pluginName);
if (dependencyPlugin != null) {
continue;
}
logger.warning("Failed to load expansion '" + expansionFile + "' because a plugin " +
"dependency was not loaded: " + pluginName);
return;
}
}
if (description.isList("expansion-depend")) {
List<String> expansionDependList = description.getStringList("expansion-depend");
for (String expansionName : expansionDependList) {
if (this.expansionMap.containsKey(expansionName)) {
continue;
}
logger.warning("Failed to load expansion '" + expansionFile + "' because an expansion" +
" dependency was missing: " + expansionName);
return;
}
}
expansionClassLoader = new ExpansionClassLoader(this, description, expansionFile,
managerClassLoader);
expansion = expansionClassLoader.getExpansion();
} catch (Exception ex) {
logger.warning("An expansion failed to load because an error occurred.");
logger.warning("If debug-mode is enabled, the full error will be displayed below.");
this.plugin.printDebug(ex);
return;
}
File pluginFolder = plugin.getDataFolder();
File expansionsFolder = new File(pluginFolder, "expansions");
String expansionName = expansion.getName();
File dataFolder = new File(expansionsFolder, expansionName);
if (!dataFolder.exists() && !dataFolder.mkdirs()) {
logger.warning("Failed to create folder for expansion '" + expansionName + "'.");
return;
}
expansion.setFile(expansionFile);
expansion.setDataFolder(dataFolder);
this.expansionMap.put(expansionName, expansion);
this.expansionClassLoaderMap.put(expansion, expansionClassLoader);
try {
ExpansionDescription description = expansion.getDescription();
String fullName = description.getFullName();
logger.info("Loading expansion '" + fullName + "'...");
expansion.onLoad();
expansion.setState(State.LOADED);
} catch (Throwable ex) {
logger.log(Level.SEVERE, "An error occurred while loading an expansion:", ex);
logger.warning("Failed to load expansion from file '" + expansionFile + "'.");
}
}
public void enableExpansion(@NotNull Expansion expansion) {
State state = expansion.getState();
if (state == State.ENABLED) {
return;
}
ICombatLogX plugin = getPlugin();
Logger logger = plugin.getLogger();
try {
ExpansionDescription description = expansion.getDescription();
String fullName = description.getFullName();
logger.info("Enabling expansion '" + fullName + "'...");
expansion.setState(State.ENABLING);
expansion.onEnable();
if (expansion.getState() == State.ENABLING) {
expansion.setState(State.ENABLED);
}
} catch (Throwable ex) {
logger.log(Level.SEVERE, "An error occurred while enabling an expansion:", ex);
}
}
public void disableExpansion(@NotNull Expansion expansion) {
State state = expansion.getState();
if (state != State.ENABLED && state != State.ENABLING) {
return;
}
ICombatLogX plugin = getPlugin();
Logger logger = plugin.getLogger();
try {
ExpansionDescription description = expansion.getDescription();
String fullName = description.getFullName();
logger.info("Disabling expansion '" + fullName + "'...");
List<Listener> listenerList = expansion.getListeners();
listenerList.forEach(HandlerList::unregisterAll);
listenerList.clear();
expansion.setState(State.DISABLED);
expansion.onDisable();
} catch (Throwable ex) {
logger.log(Level.SEVERE, "An error occurred while disabling an expansion:", ex);
}
}
private @NotNull List<Expansion> sortExpansions(@NotNull List<Expansion> original) {
ExpansionComparator comparator = new ExpansionComparator();
original.sort(comparator);
return original;
}
private @NotNull YamlConfiguration getExpansionDescription(@NotNull JarFile jarFile)
throws IllegalStateException, IOException, InvalidConfigurationException {
JarEntry entry = jarFile.getJarEntry("expansion.yml");
if (entry == null) {
String errorMessage = ("Expansion file '" + jarFile.getName() + "' does not contain an " +
"expansion.yml file.");
throw new IllegalStateException(errorMessage);
}
InputStream inputStream = jarFile.getInputStream(entry);
InputStreamReader reader = new InputStreamReader(inputStream);
BufferedReader buffer = new BufferedReader(reader);
YamlConfiguration description = new YamlConfiguration();
description.load(buffer);
return description;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionWithDependencies.java
================================================
package com.github.sirblobman.combatlogx.api.expansion;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
public abstract class ExpansionWithDependencies extends Expansion {
private boolean enabledSuccessfully;
public ExpansionWithDependencies(@NotNull ICombatLogX plugin) {
super(plugin);
this.enabledSuccessfully = false;
}
@Override
public final void onEnable() {
if (!checkDependencies()) {
Logger logger = getLogger();
logger.info("Some dependencies for this expansion are missing!");
selfDisable();
return;
}
onCheckedEnable();
this.enabledSuccessfully = true;
}
@Override
public final void onDisable() {
if (!isEnabledSuccessfully()) {
return;
}
onCheckedDisable();
this.enabledSuccessfully = false;
}
public boolean isEnabledSuccessfully() {
return this.enabledSuccessfully;
}
public abstract boolean checkDependencies();
public abstract void onCheckedEnable();
public abstract void onCheckedDisable();
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseExpansion.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.disguise;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionWithDependencies;
public abstract class DisguiseExpansion extends ExpansionWithDependencies {
public DisguiseExpansion(@NotNull ICombatLogX plugin) {
super(plugin);
}
@Override
public void onLoad() {
// Do Nothing
}
@Override
public final void onCheckedEnable() {
reloadConfig();
registerListeners();
afterEnable();
}
@Override
public final void onCheckedDisable() {
afterDisable();
}
@Override
public void reloadConfig() {
// Do Nothing
}
private void registerListeners() {
new DisguiseListener(this).register();
}
/**
* You can override this method if you need to do something when the expansion is enabled.
*/
public void afterEnable() {
// Do Nothing
}
/**
* You can override this method if you need to do something when the expansion is disabled.
*/
public void afterDisable() {
// Do Nothing
}
public abstract @NotNull DisguiseHandler<?> getDisguiseHandler();
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseExpansionListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.disguise;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionListener;
public abstract class DisguiseExpansionListener extends ExpansionListener {
private final DisguiseExpansion expansion;
public DisguiseExpansionListener(@NotNull DisguiseExpansion expansion) {
super(expansion);
this.expansion = expansion;
}
protected final @NotNull DisguiseExpansion getDisguiseExpansion() {
return this.expansion;
}
protected final @NotNull DisguiseHandler<?> getDisguiseHandler() {
DisguiseExpansion expansion = getDisguiseExpansion();
return expansion.getDisguiseHandler();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseHandler.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.disguise;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Player;
public abstract class DisguiseHandler<DE extends DisguiseExpansion> {
private final DE expansion;
public DisguiseHandler(@NotNull DE expansion) {
this.expansion = expansion;
}
protected final DE getExpansion() {
return this.expansion;
}
public abstract boolean hasDisguise(@NotNull Player player);
public abstract void removeDisguise(@NotNull Player player);
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.disguise;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import com.github.sirblobman.api.language.LanguageManager;
import com.github.sirblobman.combatlogx.api.event.PlayerTagEvent;
public final class DisguiseListener extends DisguiseExpansionListener {
public DisguiseListener(@NotNull DisguiseExpansion expansion) {
super(expansion);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onTag(PlayerTagEvent e) {
Player player = e.getPlayer();
DisguiseHandler<?> handler = getDisguiseHandler();
if (handler.hasDisguise(player)) {
handler.removeDisguise(player);
LanguageManager languageManager = getLanguageManager();
languageManager.sendMessageWithPrefix(player, "expansion.disguise-compatibility.remove-disguise");
}
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/RegionExpansion.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.bukkit.configuration.file.YamlConfiguration;
import com.github.sirblobman.api.configuration.ConfigurationManager;
import com.github.sirblobman.api.plugin.ConfigurablePlugin;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionWithDependencies;
import com.github.sirblobman.combatlogx.api.expansion.region.configuration.RegionExpansionConfiguration;
import com.github.sirblobman.combatlogx.api.expansion.region.listener.RegionMoveListener;
import com.github.sirblobman.combatlogx.api.expansion.region.listener.RegionTeleportListener;
import com.github.sirblobman.combatlogx.api.expansion.region.listener.RegionVulnerableListener;
public abstract class RegionExpansion extends ExpansionWithDependencies {
private final RegionExpansionConfiguration configuration;
public RegionExpansion(@NotNull ICombatLogX plugin) {
super(plugin);
this.configuration = new RegionExpansionConfiguration();
}
@Override
public void onLoad() {
File dataFolder = getDataFolder();
File configFile = new File(dataFolder, "config.yml");
if (!configFile.exists()) {
saveDefaultRegionConfig(configFile);
}
}
@Override
public final void onCheckedEnable() {
reloadConfig();
registerListeners();
afterEnable();
}
@Override
public final void onCheckedDisable() {
afterDisable();
}
private void registerListeners() {
new RegionMoveListener(this).register();
new RegionTeleportListener(this).register();
new RegionVulnerableListener(this).register();
}
@Override
public void reloadConfig() {
ConfigurationManager configurationManager = getConfigurationManager();
configurationManager.reload("config.yml");
getConfiguration().load(configurationManager.get("config.yml"));
}
public final @NotNull RegionExpansionConfiguration getConfiguration() {
return this.configuration;
}
/**
* You can override this method if you need to do something when the expansion is enabled.
*/
public void afterEnable() {
// Do Nothing
}
/**
* You can override this method if you need to do something when the expansion is disabled.
*/
public void afterDisable() {
// Do Nothing
}
public abstract @NotNull RegionHandler<?> getRegionHandler();
private void saveDefaultRegionConfig(File file) {
ConfigurablePlugin plugin = getPlugin().getPlugin();
ConfigurationManager pluginConfigManager = plugin.getConfigurationManager();
try {
String defaultConfigName = "default-region-expansion-config.yml";
YamlConfiguration defaultConfig = pluginConfigManager.getInternal(defaultConfigName);
if (defaultConfig == null) {
throw new IOException("Missing file 'default-region-expansion-config.yml' in jar.");
}
defaultConfig.save(file);
} catch (IOException ex) {
Logger logger = getLogger();
logger.log(Level.WARNING, "Failed to create the default region configuration:", ex);
}
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/RegionHandler.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region;
import java.util.Locale;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.util.Vector;
import com.github.sirblobman.api.folia.FoliaHelper;
import com.github.sirblobman.api.folia.scheduler.TaskScheduler;
import com.github.sirblobman.api.folia.teleport.TeleportHandler;
import com.github.sirblobman.api.language.LanguageManager;
import com.github.sirblobman.api.utility.VersionUtility;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.configuration.MainConfiguration;
import com.github.sirblobman.combatlogx.api.expansion.region.configuration.RegionExpansionConfiguration;
import com.github.sirblobman.combatlogx.api.expansion.region.task.KnockbackPlayerTask;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.object.NoEntryMode;
import com.github.sirblobman.combatlogx.api.object.TagInformation;
import com.github.sirblobman.combatlogx.api.object.TagType;
public abstract class RegionHandler<RE extends RegionExpansion> {
private final RE expansion;
private final Map<UUID, Long> cooldownMap;
public RegionHandler(@NotNull RE expansion) {
this.expansion = expansion;
this.cooldownMap = new ConcurrentHashMap<>();
}
protected final @NotNull RE getExpansion() {
return this.expansion;
}
protected final @NotNull Logger getLogger() {
RE expansion = getExpansion();
return expansion.getLogger();
}
protected final void printDebug(@NotNull String message) {
RE expansion = getExpansion();
ICombatLogX combatLogX = expansion.getPlugin();
MainConfiguration configuration = combatLogX.getConfiguration();
if (!configuration.isDebugMode()) {
return;
}
Class<?> thisClass = getClass();
String className = thisClass.getSimpleName();
String logMessage = String.format(Locale.US, "[Debug] [%s] %s", className, message);
Logger expansionLogger = getLogger();
expansionLogger.info(logMessage);
}
private @NotNull RegionExpansionConfiguration getConfiguration() {
RegionExpansion expansion = getExpansion();
return expansion.getConfiguration();
}
public final void sendEntryDeniedMessage(@NotNull Player player, @NotNull TagInformation tagInformation) {
TagType tagType = tagInformation.getCurrentTagType();
String messagePath = getEntryDeniedMessagePath(tagType);
if (messagePath == null) {
return;
}
UUID playerId = player.getUniqueId();
if (this.cooldownMap.containsKey(playerId)) {
long expireMillis = this.cooldownMap.getOrDefault(playerId, 0L);
long systemMillis = System.currentTimeMillis();
if (systemMillis < expireMillis) {
return;
}
}
ICombatLogX plugin = this.expansion.getPlugin();
LanguageManager languageManager = plugin.getLanguageManager();
languageManager.sendMessageWithPrefix(player, messagePath);
long cooldownSeconds = getEntryDeniedMessageCooldown();
long cooldownMillis = TimeUnit.SECONDS.toMillis(cooldownSeconds);
long systemMillis = System.currentTimeMillis();
long expireMillis = (systemMillis + cooldownMillis);
this.cooldownMap.put(playerId, expireMillis);
}
public final void preventEntry(@NotNull Cancellable e, @NotNull Player player,
@NotNull TagInformation tagInformation, @NotNull Location fromLocation,
@NotNull Location toLocation) {
RegionExpansion expansion = getExpansion();
ICombatLogX combatLogX = expansion.getPlugin();
ICombatManager combatManager = combatLogX.getCombatManager();
if (!combatManager.isInCombat(player)) {
return;
}
Entity enemy = tagInformation.getCurrentEnemy();
NoEntryMode noEntryMode = getNoEntryMode();
if (noEntryMode != NoEntryMode.DISABLED) {
if (player.isInsideVehicle()) {
if (!player.leaveVehicle()) {
printDebug("Failed to make a player leave their vehicle, there may be region entry prevention bugs.");
}
}
}
switch (noEntryMode) {
case KILL_PLAYER:
player.setHealth(0.0D);
break;
case TELEPORT_TO_ENEMY:
teleportToEnemy(player, e, enemy);
break;
case CANCEL_EVENT:
e.setCancelled(true);
break;
case KNOCKBACK_PLAYER:
knockbackPlayer(player, e, fromLocation, toLocation);
break;
default:
break;
}
sendEntryDeniedMessage(player, tagInformation);
customPreventEntry(e, player, tagInformation, fromLocation, toLocation);
}
private void teleportToEnemy(@NotNull Player player, @NotNull Cancellable e, @Nullable Entity enemy) {
if (enemy == null) {
e.setCancelled(true);
return;
}
FoliaHelper foliaHelper = getExpansion().getPlugin().getFoliaHelper();
TeleportHandler teleporter = foliaHelper.getTeleporter();
boolean teleport = teleporter.teleport(player, enemy).join();
if (teleport) {
e.setCancelled(true);
}
}
private void knockbackPlayer(@NotNull Player player, @NotNull Cancellable e,
@NotNull Location fromLocation, @NotNull Location toLocation) {
e.setCancelled(true);
if (isGliding(player)) {
player.setGliding(false);
Vector zero = new Vector(0.0D, 0.0D, 0.0D);
player.setVelocity(zero);
}
RegionExpansion expansion = getExpansion();
ICombatLogX combatLogX = expansion.getPlugin();
FoliaHelper foliaHelper = combatLogX.getFoliaHelper();
TaskScheduler scheduler = foliaHelper.getScheduler();
double strength = getKnockbackStrength();
KnockbackPlayerTask task = new KnockbackPlayerTask(combatLogX, player, fromLocation, toLocation, strength);
scheduler.scheduleEntityTask(task);
}
protected void customPreventEntry(@NotNull Cancellable e, @NotNull Player player,
@NotNull TagInformation tagInformation, @NotNull Location fromLocation,
@NotNull Location toLocation) {
// Override this to add custom stuff
}
public final long getEntryDeniedMessageCooldown() {
RegionExpansionConfiguration configuration = getConfiguration();
return configuration.getMessageCooldown();
}
public final @NotNull NoEntryMode getNoEntryMode() {
RegionExpansionConfiguration configuration = getConfiguration();
return configuration.getNoEntryMode();
}
public final double getKnockbackStrength() {
RegionExpansionConfiguration configuration = getConfiguration();
return configuration.getKnockbackStrength();
}
private boolean isGliding(@NotNull Player player) {
int minorVersion = VersionUtility.getMinorVersion();
if (minorVersion < 9) {
return false;
}
return player.isGliding();
}
public abstract String getEntryDeniedMessagePath(@NotNull TagType tagType);
public abstract boolean isSafeZone(@NotNull Player player, @NotNull Location location, @NotNull TagInformation tag);
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/configuration/RegionExpansionConfiguration.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region.configuration;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import com.github.sirblobman.api.configuration.IConfigurable;
import com.github.sirblobman.combatlogx.api.object.NoEntryMode;
import static com.github.sirblobman.api.utility.ConfigurationHelper.parseEnum;
import static com.github.sirblobman.api.utility.ConfigurationHelper.parseEnums;
public final class RegionExpansionConfiguration implements IConfigurable {
private NoEntryMode noEntryMode;
private double knockbackStrength;
private int messageCooldown;
private boolean preventTeleport;
private Set<TeleportCause> ignoredTeleportCauseSet;
public RegionExpansionConfiguration() {
this.noEntryMode = NoEntryMode.KNOCKBACK_PLAYER;
this.knockbackStrength = 1.5D;
this.messageCooldown = 30;
this.preventTeleport = true;
this.ignoredTeleportCauseSet = EnumSet.noneOf(TeleportCause.class);
}
@Override
public void load(ConfigurationSection config) {
setKnockbackStrength(config.getDouble("knockback-strength", 1.5D));
setMessageCooldown(config.getInt("message-cooldown", 30));
setPreventTeleport(config.getBoolean("prevent-teleport", true));
String noEntryModeName = config.getString("no-entry-mode", "KNOCKBACK_PLAYER");
setNoEntryMode(parseEnum(NoEntryMode.class, noEntryModeName, NoEntryMode.KNOCKBACK_PLAYER));
List<String> ignoredTeleportCauseNameList = config.getStringList("ignored-teleport-cause-list");
setIgnoredTeleportCauses(parseEnums(ignoredTeleportCauseNameList, TeleportCause.class));
}
public boolean isPreventTeleport() {
return this.preventTeleport;
}
public void setPreventTeleport(boolean preventTeleport) {
this.preventTeleport = preventTeleport;
}
public @NotNull NoEntryMode getNoEntryMode() {
return this.noEntryMode;
}
public void setNoEntryMode(@NotNull NoEntryMode noEntryMode) {
this.noEntryMode = noEntryMode;
}
public double getKnockbackStrength() {
return this.knockbackStrength;
}
public void setKnockbackStrength(double knockbackStrength) {
this.knockbackStrength = knockbackStrength;
}
public int getMessageCooldown() {
return this.messageCooldown;
}
public void setMessageCooldown(int messageCooldown) {
this.messageCooldown = messageCooldown;
}
public @NotNull Set<TeleportCause> getIgnoredTeleportCauses() {
return Collections.unmodifiableSet(this.ignoredTeleportCauseSet);
}
public void setIgnoredTeleportCauses(@NotNull Collection<TeleportCause> causes) {
this.ignoredTeleportCauseSet.clear();
this.ignoredTeleportCauseSet.addAll(causes);
}
public boolean isIgnored(@NotNull TeleportCause cause) {
Set<TeleportCause> causes = getIgnoredTeleportCauses();
return causes.contains(cause);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionExpansionListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region.listener;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionListener;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionExpansion;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionHandler;
import com.github.sirblobman.combatlogx.api.expansion.region.configuration.RegionExpansionConfiguration;
public abstract class RegionExpansionListener extends ExpansionListener {
private final RegionExpansion regionExpansion;
public RegionExpansionListener(@NotNull RegionExpansion expansion) {
super(expansion);
this.regionExpansion = expansion;
}
protected final @NotNull RegionExpansion getRegionExpansion() {
return this.regionExpansion;
}
protected final @NotNull RegionExpansionConfiguration getConfiguration() {
RegionExpansion expansion = getRegionExpansion();
return expansion.getConfiguration();
}
protected final @NotNull RegionHandler<?> getRegionHandler() {
RegionExpansion regionExpansion = getRegionExpansion();
return regionExpansion.getRegionHandler();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionMoveListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region.listener;
import org.jetbrains.annotations.NotNull;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerMoveEvent;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionExpansion;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionHandler;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.object.TagInformation;
public final class RegionMoveListener extends RegionExpansionListener {
public RegionMoveListener(@NotNull RegionExpansion expansion) {
super(expansion);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onMove(PlayerMoveEvent e) {
Location toLocation = e.getTo();
if (toLocation == null) {
return;
}
Player player = e.getPlayer();
if (!isInCombat(player)) {
return;
}
ICombatLogX combatLogX = getCombatLogX();
ICombatManager combatManager = combatLogX.getCombatManager();
TagInformation tagInformation = combatManager.getTagInformation(player);
if (tagInformation == null) {
return;
}
RegionHandler<?> regionHandler = getRegionHandler();
if (regionHandler.isSafeZone(player, toLocation, tagInformation)) {
Location fromLocation = e.getFrom();
if (!regionHandler.isSafeZone(player, fromLocation, tagInformation)) {
regionHandler.preventEntry(e, player, tagInformation, fromLocation, toLocation);
}
}
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionTeleportListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region.listener;
import org.jetbrains.annotations.NotNull;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionExpansion;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionHandler;
import com.github.sirblobman.combatlogx.api.expansion.region.configuration.RegionExpansionConfiguration;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.object.TagInformation;
public final class RegionTeleportListener extends RegionExpansionListener {
public RegionTeleportListener(@NotNull RegionExpansion expansion) {
super(expansion);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onTeleport(PlayerTeleportEvent e) {
TeleportCause cause = e.getCause();
RegionExpansionConfiguration configuration = getConfiguration();
if (configuration.isIgnored(cause)) {
return;
}
Location toLocation = e.getTo();
if (toLocation == null) {
return;
}
Player player = e.getPlayer();
if (!isInCombat(player)) {
return;
}
ICombatManager combatManager = getCombatManager();
TagInformation tagInformation = combatManager.getTagInformation(player);
if (tagInformation == null) {
return;
}
RegionHandler<?> regionHandler = getRegionHandler();
if (regionHandler.isSafeZone(player, toLocation, tagInformation)) {
e.setCancelled(true);
}
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionVulnerableListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region.listener;
import java.util.Collections;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import com.github.sirblobman.api.utility.VersionUtility;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionExpansion;
import com.github.sirblobman.combatlogx.api.expansion.region.RegionHandler;
import com.github.sirblobman.combatlogx.api.expansion.region.configuration.RegionExpansionConfiguration;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.object.NoEntryMode;
import com.github.sirblobman.combatlogx.api.object.TagInformation;
public final class RegionVulnerableListener extends RegionExpansionListener {
public RegionVulnerableListener(@NotNull RegionExpansion expansion) {
super(expansion);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onDamage(EntityDamageByEntityEvent e) {
RegionExpansionConfiguration configuration = getConfiguration();
NoEntryMode noEntryMode = configuration.getNoEntryMode();
if (noEntryMode != NoEntryMode.VULNERABLE) {
return;
}
Entity damaged = e.getEntity();
Player player = getPlayerOrPassenger(damaged);
if (player == null) {
return;
}
if (!isInCombat(player)) {
return;
}
ICombatManager combatManager = getCombatManager();
TagInformation tagInformation = combatManager.getTagInformation(player);
if (tagInformation == null) {
return;
}
Entity damager = e.getDamager();
if (!tagInformation.isEnemy(damager)) {
return;
}
Location location = player.getLocation();
RegionHandler<?> regionHandler = getRegionHandler();
if (regionHandler.isSafeZone(player, location, tagInformation)) {
e.setCancelled(false);
}
}
private @Nullable Player getPlayerOrPassenger(@NotNull Entity entity) {
if (entity instanceof Player) {
return (Player) entity;
}
List<Entity> passengerList = getPassengers(entity);
if (passengerList.isEmpty()) {
return null;
}
for (Entity passenger : passengerList) {
if (passenger instanceof Player) {
return (Player) passenger;
}
}
return null;
}
private @NotNull List<Entity> getPassengers(@NotNull Entity entity) {
int minorVersion = VersionUtility.getMinorVersion();
return (minorVersion < 11 ? getPassengersLegacy(entity) : getPassengersModern(entity));
}
private @NotNull List<Entity> getPassengersModern(@NotNull Entity entity) {
List<Entity> passengerList = entity.getPassengers();
if (passengerList == null) {
return Collections.emptyList();
}
return Collections.unmodifiableList(passengerList);
}
@SuppressWarnings("deprecation") // Legacy Method
private @NotNull List<Entity> getPassengersLegacy(@NotNull Entity entity) {
Entity passenger = entity.getPassenger();
if (passenger == null) {
return Collections.emptyList();
}
return Collections.singletonList(passenger);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/task/KnockbackPlayerTask.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.region.task;
import org.jetbrains.annotations.NotNull;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import com.github.sirblobman.api.folia.details.EntityTaskDetails;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
public final class KnockbackPlayerTask extends EntityTaskDetails<Player> {
private final Location from;
private final Location to;
private final double strength;
public KnockbackPlayerTask(@NotNull ICombatLogX plugin, @NotNull Player entity,
@NotNull Location from, @NotNull Location to, double strength) {
super(plugin.getPlugin(), entity);
this.from = from;
this.to = to;
this.strength = strength;
}
private @NotNull Location getFrom() {
return this.from;
}
private @NotNull Location getTo() {
return this.to;
}
private double getKnockbackStrength() {
return this.strength;
}
@Override
public void run() {
Player player = getEntity();
if (player == null) {
return;
}
Location from = getFrom();
Location to = getTo();
knockbackPlayer(player, from, to);
}
private void knockbackPlayer(@NotNull Player player, @NotNull Location from, @NotNull Location to) {
Vector velocity = getKnockback(from, to);
player.setVelocity(velocity);
}
private @NotNull Vector getKnockback(@NotNull Location from, @NotNull Location to) {
Vector fromVector = from.toVector();
Vector toVector = to.toVector();
Vector subtract = fromVector.subtract(toVector);
Vector normal = subtract.normalize();
double strength = getKnockbackStrength();
Vector multiply = normal.multiply(strength);
return makeFinite(multiply);
}
private @NotNull Vector makeFinite(@NotNull Vector original) {
double originalX = original.getX();
double originalY = original.getY();
double originalZ = original.getZ();
double newX = makeFinite(originalX);
double newY = makeFinite(originalY);
double newZ = makeFinite(originalZ);
return new Vector(newX, newY, newZ);
}
private double makeFinite(double original) {
if (Double.isNaN(original)) {
return 0.0D;
}
if (Double.isInfinite(original)) {
return (original < 0 ? -1.0D : 1.0D);
}
return original;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/IslandWrapper.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.skyblock;
import java.util.Set;
import java.util.UUID;
import org.jetbrains.annotations.NotNull;
import org.bukkit.OfflinePlayer;
public abstract class IslandWrapper {
public abstract @NotNull Set<UUID> getMembers();
public boolean isMember(@NotNull OfflinePlayer player) {
UUID playerId = player.getUniqueId();
Set<UUID> memberIdSet = getMembers();
return memberIdSet.contains(playerId);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockExpansion.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.skyblock;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionWithDependencies;
public abstract class SkyBlockExpansion extends ExpansionWithDependencies {
public SkyBlockExpansion(@NotNull ICombatLogX plugin) {
super(plugin);
}
@Override
public void onLoad() {
// Do Nothing
}
@Override
public final void onCheckedEnable() {
reloadConfig();
registerListeners();
afterEnable();
}
@Override
public final void onCheckedDisable() {
afterDisable();
}
@Override
public void reloadConfig() {
// Do Nothing
}
private void registerListeners() {
new SkyBlockListener(this).register();
}
/**
* You can override this method if you need to do something when the expansion is enabled.
*/
public void afterEnable() {
// Do Nothing
}
/**
* You can override this method if you need to do something when the expansion is disabled.
*/
public void afterDisable() {
// Do Nothing
}
public abstract @NotNull SkyBlockHandler<?> getSkyBlockHandler();
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockExpansionListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.skyblock;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionListener;
public abstract class SkyBlockExpansionListener extends ExpansionListener {
private final SkyBlockExpansion expansion;
public SkyBlockExpansionListener(@NotNull SkyBlockExpansion expansion) {
super(expansion);
this.expansion = expansion;
}
protected final @NotNull SkyBlockExpansion getSkyBlockExpansion() {
return this.expansion;
}
protected final @NotNull SkyBlockHandler<?> getSkyBlockHandler() {
SkyBlockExpansion expansion = getSkyBlockExpansion();
return expansion.getSkyBlockHandler();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockHandler.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.skyblock;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
public abstract class SkyBlockHandler<SE extends SkyBlockExpansion> {
private final SE expansion;
public SkyBlockHandler(@NotNull SE expansion) {
this.expansion = expansion;
}
protected final SE getExpansion() {
return this.expansion;
}
public abstract @Nullable IslandWrapper getIsland(@NotNull Location location);
public abstract @Nullable IslandWrapper getIsland(@NotNull OfflinePlayer player);
public abstract boolean doesIslandMatch(@NotNull OfflinePlayer player1, @NotNull OfflinePlayer player2);
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.skyblock;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import com.github.sirblobman.combatlogx.api.event.PlayerPreTagEvent;
public final class SkyBlockListener extends SkyBlockExpansionListener {
public SkyBlockListener(@NotNull SkyBlockExpansion expansion) {
super(expansion);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void beforeTag(PlayerPreTagEvent e) {
Entity enemy = e.getEnemy();
if (!(enemy instanceof Player)) {
return;
}
Player player = e.getPlayer();
Player enemyPlayer = (Player) enemy;
SkyBlockHandler<?> handler = getSkyBlockHandler();
if (handler.doesIslandMatch(player, enemyPlayer)) {
e.setCancelled(true);
}
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansion.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.vanish;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.api.configuration.ConfigurationManager;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionWithDependencies;
public abstract class VanishExpansion extends ExpansionWithDependencies {
private final VanishExpansionConfiguration configuration;
public VanishExpansion(@NotNull ICombatLogX plugin) {
super(plugin);
this.configuration = new VanishExpansionConfiguration();
}
@Override
public void onLoad() {
ConfigurationManager configurationManager = getConfigurationManager();
configurationManager.saveDefault("config.yml");
}
@Override
public final void onCheckedEnable() {
reloadConfig();
registerListeners();
afterEnable();
}
@Override
public final void onCheckedDisable() {
afterDisable();
}
private void registerListeners() {
new VanishListener(this).register();
}
@Override
public void reloadConfig() {
ConfigurationManager configurationManager = getConfigurationManager();
configurationManager.reload("config.yml");
getConfiguration().load(configurationManager.get("config.yml"));
}
public final @NotNull VanishExpansionConfiguration getConfiguration() {
return this.configuration;
}
/**
* You can override this method if you need to do something when the expansion is enabled.
*/
public void afterEnable() {
// Do Nothing
}
/**
* You can override this method if you need to do something when the expansion is disabled.
*/
public void afterDisable() {
// Do Nothing
}
public abstract @NotNull VanishHandler<?> getVanishHandler();
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansionConfiguration.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.vanish;
import org.jetbrains.annotations.NotNull;
import org.bukkit.configuration.ConfigurationSection;
import com.github.sirblobman.api.configuration.IConfigurable;
public final class VanishExpansionConfiguration implements IConfigurable {
private boolean preventVanishTaggingSelf;
private boolean preventVanishTaggingOther;
public VanishExpansionConfiguration() {
this.preventVanishTaggingSelf = true;
this.preventVanishTaggingOther = true;
}
@Override
public void load(@NotNull ConfigurationSection section) {
setPreventVanishTaggingSelf(section.getBoolean("prevent-vanish-tagging-self", true));
setPreventVanishTaggingOther(section.getBoolean("prevent-vanish-tagging-other", true));
}
public boolean isPreventVanishTaggingSelf() {
return this.preventVanishTaggingSelf;
}
public void setPreventVanishTaggingSelf(boolean preventVanishTaggingSelf) {
this.preventVanishTaggingSelf = preventVanishTaggingSelf;
}
public boolean isPreventVanishTaggingOther() {
return this.preventVanishTaggingOther;
}
public void setPreventVanishTaggingOther(boolean preventVanishTaggingOther) {
this.preventVanishTaggingOther = preventVanishTaggingOther;
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansionListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.vanish;
import org.jetbrains.annotations.NotNull;
import com.github.sirblobman.combatlogx.api.expansion.ExpansionListener;
public abstract class VanishExpansionListener extends ExpansionListener {
private final VanishExpansion expansion;
;
public VanishExpansionListener(@NotNull VanishExpansion expansion) {
super(expansion);
this.expansion = expansion;
}
protected final @NotNull VanishExpansion getVanishExpansion() {
return this.expansion;
}
protected final @NotNull VanishHandler<?> getVanishHandler() {
VanishExpansion expansion = getVanishExpansion();
return expansion.getVanishHandler();
}
protected final @NotNull VanishExpansionConfiguration getConfiguration() {
VanishExpansion expansion = getVanishExpansion();
return expansion.getConfiguration();
}
protected final boolean isPreventSelfTag() {
VanishExpansionConfiguration configuration = getConfiguration();
return configuration.isPreventVanishTaggingSelf();
}
protected final boolean isPreventOtherTag() {
VanishExpansionConfiguration configuration = getConfiguration();
return configuration.isPreventVanishTaggingOther();
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishHandler.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.vanish;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Player;
public abstract class VanishHandler<VE extends VanishExpansion> {
private final VE expansion;
public VanishHandler(@NotNull VE expansion) {
this.expansion = expansion;
}
protected final VE getExpansion() {
return this.expansion;
}
public abstract boolean isVanished(@NotNull Player player);
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishListener.java
================================================
package com.github.sirblobman.combatlogx.api.expansion.vanish;
import org.jetbrains.annotations.NotNull;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import com.github.sirblobman.combatlogx.api.event.PlayerPreTagEvent;
public final class VanishListener extends VanishExpansionListener {
public VanishListener(@NotNull VanishExpansion expansion) {
super(expansion);
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void beforeTag(PlayerPreTagEvent e) {
Player player = e.getPlayer();
VanishHandler<?> vanishHandler = getVanishHandler();
if (vanishHandler.isVanished(player) && isPreventSelfTag()) {
e.setCancelled(true);
return;
}
Entity enemy = e.getEnemy();
if (enemy instanceof Player) {
Player other = (Player) enemy;
if (vanishHandler.isVanished(other) && isPreventOtherTag()) {
e.setCancelled(true);
}
}
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/listener/CombatListener.java
================================================
package com.github.sirblobman.combatlogx.api.listener;
import java.util.Locale;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import com.github.sirblobman.api.configuration.PlayerDataManager;
import com.github.sirblobman.api.language.LanguageManager;
import com.github.sirblobman.api.plugin.ConfigurablePlugin;
import com.github.sirblobman.combatlogx.api.ICombatLogX;
import com.github.sirblobman.combatlogx.api.configuration.MainConfiguration;
import com.github.sirblobman.combatlogx.api.manager.ICombatManager;
import com.github.sirblobman.combatlogx.api.manager.IDeathManager;
public abstract class CombatListener implements Listener {
private final ICombatLogX plugin;
public CombatListener(@NotNull ICombatLogX plugin) {
this.plugin = plugin;
}
public void register() {
ICombatLogX combatLogX = getCombatLogX();
JavaPlugin plugin = combatLogX.getPlugin();
PluginManager pluginManager = Bukkit.getPluginManager();
pluginManager.registerEvents(this, plugin);
}
protected final @NotNull ICombatLogX getCombatLogX() {
return this.plugin;
}
protected final @NotNull ConfigurablePlugin getJavaPlugin() {
ICombatLogX combatLogX = getCombatLogX();
return combatLogX.getPlugin();
}
protected final @NotNull Logger getPluginLogger() {
ICombatLogX plugin = getCombatLogX();
return plugin.getLogger();
}
protected final @NotNull LanguageManager getLanguageManager() {
ICombatLogX combatLogX = getCombatLogX();
return combatLogX.getLanguageManager();
}
protected final @NotNull PlayerDataManager getPlayerDataManager() {
ICombatLogX combatLogX = getCombatLogX();
return combatLogX.getPlayerDataManager();
}
protected final @NotNull ICombatManager getCombatManager() {
ICombatLogX plugin = getCombatLogX();
return plugin.getCombatManager();
}
protected final @NotNull IDeathManager getDeathManager() {
ICombatLogX plugin = getCombatLogX();
return plugin.getDeathManager();
}
protected final boolean isInCombat(@NotNull Player player) {
ICombatManager combatManager = getCombatManager();
return combatManager.isInCombat(player);
}
protected final boolean isDebugModeDisabled() {
ICombatLogX plugin = getCombatLogX();
return plugin.isDebugModeDisabled();
}
protected void printDebug(@NotNull String message) {
if (isDebugModeDisabled()) {
return;
}
Class<?> thisClass = getClass();
String className = thisClass.getSimpleName();
String logMessage = String.format(Locale.US, "[Debug] [%s] %s", className, message);
Logger pluginLogger = getPluginLogger();
pluginLogger.info(logMessage);
}
protected final boolean isWorldDisabled(@NotNull Entity entity) {
World world = entity.getWorld();
return isWorldDisabled(world);
}
protected final boolean isWorldDisabled(@NotNull World world) {
ICombatLogX combatLogX = getCombatLogX();
MainConfiguration configuration = combatLogX.getConfiguration();
return configuration.isDisabled(world);
}
}
================================================
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ICombatManager.java
================================================
package com.github.sirblobman.combatlogx.api.manager;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import com.github.sirblobman.combatlogx.api.ICombatLogXNeeded;
import com.github.sirblobman.combatlogx.api.object.TagInformation;
import com.github.sirblobman.combatlogx.api.object.TagReason;
import com.github.sirblobman.combatlogx.api.object.TagType;
import com.github.sirblobman.combatlogx.api.object.UntagReason;
public interface ICombatManager extends ICombatLogXNeeded {
/**
* CombatTag a player into combat.
*
* @param player The {@link Player} to tag.
* @param enemy The enemy that caused the player to be tagged. Can be {@code null}
* @param tagType The type of tag, can be {@link TagType#UNKNOWN}
* @param tagReason The reason for being tagged, can be {@link TagReason#UNKNOWN}
* @return {@code true} if the player was successfully tagged.
*/
boolean tag(@NotNull Player player, @Nullable Entity enemy, @NotNull TagType tagType,
@NotNull TagReason tagReason);
/**
* CombatTag a player into combat.
*
* @param player The {@link Player} to tag.
* @param enemy The enemy that caused the player to be tagged. Can be {@code null}
* @param tagType The type of tag, can be {@link TagType#UNKNOWN}
* @param tagReason The reason for being tagged, can be {@link TagReason#UNKNOWN}
* @param customEndMillis A custom timestamp for ending combat if the player is not tagged again.
* @return {@code true} if the player was successfully tagged.
*/
boolean tag(@NotNull Player player, @Nullable Entity enemy, @NotNull TagType tagType,
@NotNull TagReason tagReason, long customEndMillis);
/**
* Remove a player from combat with all enemies.
*
* @param player The {@link Player} to remove.
* @param untagReason The reason for removing the player. Usually
gitextract_cpkbyraw/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ ├── config.yml │ │ ├── expansion-request.yml │ │ └── feature-requests.yml │ ├── PULL_REQUEST_TEMPLATE/ │ │ └── default.md │ ├── dependabot.yml │ └── funding.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.MD ├── Jenkinsfile ├── LICENSE ├── README.MD ├── SECURITY.md ├── api/ │ ├── README.MD │ ├── build.gradle.kts │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── github/ │ │ └── sirblobman/ │ │ └── combatlogx/ │ │ └── api/ │ │ ├── ICombatLogX.java │ │ ├── ICombatLogXNeeded.java │ │ ├── command/ │ │ │ ├── CombatLogCommand.java │ │ │ └── CombatLogPlayerCommand.java │ │ ├── configuration/ │ │ │ ├── CommandConfiguration.java │ │ │ ├── MainConfiguration.java │ │ │ └── PunishConfiguration.java │ │ ├── event/ │ │ │ ├── CustomPlayerEvent.java │ │ │ ├── CustomPlayerEventCancellable.java │ │ │ ├── NPCDropItemEvent.java │ │ │ ├── PlayerEnemyRemoveEvent.java │ │ │ ├── PlayerPreTagEvent.java │ │ │ ├── PlayerPunishEvent.java │ │ │ ├── PlayerReTagEvent.java │ │ │ ├── PlayerTagEvent.java │ │ │ └── PlayerUntagEvent.java │ │ ├── expansion/ │ │ │ ├── Expansion.java │ │ │ ├── ExpansionClassLoader.java │ │ │ ├── ExpansionComparator.java │ │ │ ├── ExpansionDescription.java │ │ │ ├── ExpansionDescriptionBuilder.java │ │ │ ├── ExpansionListener.java │ │ │ ├── ExpansionLogger.java │ │ │ ├── ExpansionManager.java │ │ │ ├── ExpansionWithDependencies.java │ │ │ ├── disguise/ │ │ │ │ ├── DisguiseExpansion.java │ │ │ │ ├── DisguiseExpansionListener.java │ │ │ │ ├── DisguiseHandler.java │ │ │ │ └── DisguiseListener.java │ │ │ ├── region/ │ │ │ │ ├── RegionExpansion.java │ │ │ │ ├── RegionHandler.java │ │ │ │ ├── configuration/ │ │ │ │ │ └── RegionExpansionConfiguration.java │ │ │ │ ├── listener/ │ │ │ │ │ ├── RegionExpansionListener.java │ │ │ │ │ ├── RegionMoveListener.java │ │ │ │ │ ├── RegionTeleportListener.java │ │ │ │ │ └── RegionVulnerableListener.java │ │ │ │ └── task/ │ │ │ │ └── KnockbackPlayerTask.java │ │ │ ├── skyblock/ │ │ │ │ ├── IslandWrapper.java │ │ │ │ ├── SkyBlockExpansion.java │ │ │ │ ├── SkyBlockExpansionListener.java │ │ │ │ ├── SkyBlockHandler.java │ │ │ │ └── SkyBlockListener.java │ │ │ └── vanish/ │ │ │ ├── VanishExpansion.java │ │ │ ├── VanishExpansionConfiguration.java │ │ │ ├── VanishExpansionListener.java │ │ │ ├── VanishHandler.java │ │ │ └── VanishListener.java │ │ ├── listener/ │ │ │ └── CombatListener.java │ │ ├── manager/ │ │ │ ├── ICombatManager.java │ │ │ ├── ICrystalManager.java │ │ │ ├── IDeathManager.java │ │ │ ├── IForgiveManager.java │ │ │ ├── IPlaceholderManager.java │ │ │ ├── IPunishManager.java │ │ │ └── ITimerManager.java │ │ ├── object/ │ │ │ ├── CitizensSlotType.java │ │ │ ├── CombatTag.java │ │ │ ├── KillTime.java │ │ │ ├── NoEntryMode.java │ │ │ ├── SpecialPunishCommand.java │ │ │ ├── TagInformation.java │ │ │ ├── TagReason.java │ │ │ ├── TagType.java │ │ │ ├── TimerType.java │ │ │ ├── TimerUpdater.java │ │ │ └── UntagReason.java │ │ ├── placeholder/ │ │ │ ├── IPlaceholderExpansion.java │ │ │ └── PlaceholderHelper.java │ │ └── utility/ │ │ ├── CommandHelper.java │ │ └── EntityHelper.java │ └── resources/ │ └── default-region-expansion-config.yml ├── build.gradle.kts ├── builder/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── resources/ │ └── README.TXT ├── crowdin.yml ├── expansion/ │ ├── action-bar/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── action/ │ │ │ └── bar/ │ │ │ ├── ActionBarExpansion.java │ │ │ ├── ActionBarUpdater.java │ │ │ └── configuration/ │ │ │ └── ActionBarConfiguration.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── boss-bar/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── boss/ │ │ │ └── bar/ │ │ │ ├── BossBarConfiguration.java │ │ │ ├── BossBarExpansion.java │ │ │ └── BossBarUpdater.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── build.gradle.kts │ ├── cheat-prevention/ │ │ ├── abstract/ │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── cheat/ │ │ │ └── prevention/ │ │ │ ├── ICheatPreventionExpansion.java │ │ │ ├── configuration/ │ │ │ │ ├── IBlockConfiguration.java │ │ │ │ ├── IBucketConfiguration.java │ │ │ │ ├── IChatConfiguration.java │ │ │ │ ├── ICommandConfiguration.java │ │ │ │ ├── IConfiguration.java │ │ │ │ ├── IEntityConfiguration.java │ │ │ │ ├── IFlightConfiguration.java │ │ │ │ ├── IGameModeConfiguration.java │ │ │ │ ├── IInventoryConfiguration.java │ │ │ │ ├── IItemConfiguration.java │ │ │ │ ├── IPotionConfiguration.java │ │ │ │ └── ITeleportConfiguration.java │ │ │ └── listener/ │ │ │ └── CheatPreventionListener.java │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ ├── legacy/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── cheat/ │ │ │ └── prevention/ │ │ │ └── listener/ │ │ │ └── legacy/ │ │ │ ├── ListenerChat.java │ │ │ ├── ListenerLegacyItemPickup.java │ │ │ ├── ListenerLegacyPortalCreate.java │ │ │ └── ListenerLegacyPotions.java │ │ ├── modern/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── cheat/ │ │ │ └── prevention/ │ │ │ └── listener/ │ │ │ └── modern/ │ │ │ └── ListenerInventoriesModern.java │ │ ├── paper/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── cheat/ │ │ │ └── prevention/ │ │ │ └── listener/ │ │ │ └── paper/ │ │ │ ├── ListenerPaperChat.java │ │ │ └── ListenerPaperEntityInsideBlock.java │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── cheat/ │ │ │ └── prevention/ │ │ │ ├── CheatPreventionExpansion.java │ │ │ ├── configuration/ │ │ │ │ ├── BlockConfiguration.java │ │ │ │ ├── BucketConfiguration.java │ │ │ │ ├── ChatConfiguration.java │ │ │ │ ├── CheatPreventionConfiguration.java │ │ │ │ ├── CommandConfiguration.java │ │ │ │ ├── EntityConfiguration.java │ │ │ │ ├── FlightConfiguration.java │ │ │ │ ├── GameModeConfiguration.java │ │ │ │ ├── InventoryConfiguration.java │ │ │ │ ├── ItemConfiguration.java │ │ │ │ ├── PotionConfiguration.java │ │ │ │ └── TeleportConfiguration.java │ │ │ ├── listener/ │ │ │ │ ├── ListenerBlocks.java │ │ │ │ ├── ListenerBuckets.java │ │ │ │ ├── ListenerCommands.java │ │ │ │ ├── ListenerDrop.java │ │ │ │ ├── ListenerElytra.java │ │ │ │ ├── ListenerEnderPearl.java │ │ │ │ ├── ListenerEntities.java │ │ │ │ ├── ListenerFlight.java │ │ │ │ ├── ListenerGameMode.java │ │ │ │ ├── ListenerInventories.java │ │ │ │ ├── ListenerRiptide.java │ │ │ │ ├── ListenerTeleport.java │ │ │ │ ├── ListenerTotem.java │ │ │ │ └── modern/ │ │ │ │ ├── ListenerModernItemPickup.java │ │ │ │ ├── ListenerModernPortalCreate.java │ │ │ │ └── ListenerModernPotions.java │ │ │ └── task/ │ │ │ ├── ElytraRetagTask.java │ │ │ └── FlightRetagTask.java │ │ └── resources/ │ │ ├── blocks.yml │ │ ├── buckets.yml │ │ ├── chat.yml │ │ ├── commands.yml │ │ ├── config.yml │ │ ├── entities.yml │ │ ├── expansion.yml │ │ ├── flight.yml │ │ ├── game-mode.yml │ │ ├── inventories.yml │ │ ├── items.yml │ │ ├── potions.yml │ │ └── teleportation.yml │ ├── compatibility/ │ │ ├── ASkyBlock/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── askyblock/ │ │ │ │ ├── ASkyBlockExpansion.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerASkyBlock.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── AngelChest/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── angelchest/ │ │ │ │ ├── AngelChestConfiguration.java │ │ │ │ ├── AngelChestExpansion.java │ │ │ │ └── ListenerAngelChest.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── BSkyBlock/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── bskyblock/ │ │ │ │ ├── BSkyBlockExpansion.java │ │ │ │ ├── hook/ │ │ │ │ │ └── HookBentoBox.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerBSkyBlock.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── CMI/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── cmi/ │ │ │ │ ├── CMIExpansion.java │ │ │ │ └── VanishHandlerCMI.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── Citizens/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── citizens/ │ │ │ │ ├── CitizensExpansion.java │ │ │ │ ├── configuration/ │ │ │ │ │ ├── CitizensConfiguration.java │ │ │ │ │ ├── Configuration.java │ │ │ │ │ └── SentinelConfiguration.java │ │ │ │ ├── listener/ │ │ │ │ │ ├── CitizensExpansionListener.java │ │ │ │ │ ├── ListenerCombat.java │ │ │ │ │ ├── ListenerConvert.java │ │ │ │ │ ├── ListenerDeath.java │ │ │ │ │ ├── ListenerJoin.java │ │ │ │ │ ├── ListenerPunish.java │ │ │ │ │ ├── ListenerQuit.java │ │ │ │ │ └── ListenerResurrect.java │ │ │ │ ├── manager/ │ │ │ │ │ ├── CombatNpcManager.java │ │ │ │ │ └── InventoryManager.java │ │ │ │ ├── object/ │ │ │ │ │ ├── CombatNPC.java │ │ │ │ │ └── StoredInventory.java │ │ │ │ └── task/ │ │ │ │ └── PunishTask.java │ │ │ └── resources/ │ │ │ ├── citizens.yml │ │ │ ├── config.yml │ │ │ ├── expansion.yml │ │ │ └── sentinel.yml │ │ ├── CrackShot/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── crackshot/ │ │ │ │ ├── CrackShotExpansion.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerCrackShot.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── CrashClaim/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── crash/ │ │ │ │ └── claim/ │ │ │ │ ├── CrashClaimExpansion.java │ │ │ │ └── CrashClaimRegionHandler.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── EssentialsX/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── essentials/ │ │ │ │ ├── EssentialsExpansion.java │ │ │ │ ├── EssentialsExpansionConfiguration.java │ │ │ │ ├── VanishHandlerEssentialsX.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerEssentials.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── FabledSkyBlock/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── fabled/ │ │ │ │ └── skyblock/ │ │ │ │ ├── FabledSkyBlockExpansion.java │ │ │ │ ├── IslandWrapperFabled.java │ │ │ │ └── SkyBlockHandlerFabled.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── Factions/ │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── factions/ │ │ │ │ ├── FactionsExpansion.java │ │ │ │ └── RegionHandlerFactions.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── FeatherBoard/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── featherboard/ │ │ │ │ ├── FeatherBoardConfiguration.java │ │ │ │ ├── FeatherBoardExpansion.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerFeatherBoard.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── GriefDefender/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── grief/ │ │ │ │ └── defender/ │ │ │ │ ├── GriefDefenderExpansion.java │ │ │ │ └── RegionHandlerGriefDefender.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── GriefPrevention/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── grief/ │ │ │ │ └── prevention/ │ │ │ │ ├── GriefPreventionExpansion.java │ │ │ │ └── RegionHandlerGriefPrevention.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── HuskHomes/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── huskhomes/ │ │ │ │ ├── HuskHomesExpansion.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerHuskHomes.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── HuskSync/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── husksync/ │ │ │ │ ├── DropItemsTask.java │ │ │ │ ├── HuskSyncExpansion.java │ │ │ │ ├── ListenerHuskSync.java │ │ │ │ └── PlayerData.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── HuskTowns/ │ │ │ ├── README.MD │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── husktowns/ │ │ │ │ ├── HuskTownsExpansion.java │ │ │ │ └── RegionHandlerHuskTowns.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── IridiumSkyblock/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── iridium/ │ │ │ │ └── skyblock/ │ │ │ │ ├── IridiumSkyblockExpansion.java │ │ │ │ ├── IslandWrapperIridium.java │ │ │ │ └── SkyBlockHandlerIridium.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── KingdomsX/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── kingdomsx/ │ │ │ │ ├── ExpansionKingdomsX.java │ │ │ │ └── RegionHandlerKingdomsX.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── Konquest/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── konquest/ │ │ │ │ ├── KonquestExpansion.java │ │ │ │ └── RegionHandlerKonquest.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── Lands/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── lands/ │ │ │ │ ├── LandsConfiguration.java │ │ │ │ ├── LandsExpansion.java │ │ │ │ ├── RegionHandlerLands.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerLands.java │ │ │ └── resources/ │ │ │ ├── expansion.yml │ │ │ └── lands.yml │ │ ├── LibsDisguises/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── libsdisguises/ │ │ │ │ ├── DisguiseHandlerLibsDisguises.java │ │ │ │ └── LibsDisguisesExpansion.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── LuckPerms/ │ │ │ ├── README.MD │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── luckperms/ │ │ │ │ ├── LuckPermsExpansion.java │ │ │ │ ├── context/ │ │ │ │ │ ├── AbstractContext.java │ │ │ │ │ ├── ContextInCombat.java │ │ │ │ │ ├── ContextNewbieHelperProtected.java │ │ │ │ │ └── ContextNewbieHelperPvpStatus.java │ │ │ │ └── hook/ │ │ │ │ └── HookNewbieHelper.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── MCPets/ │ │ │ ├── README.md │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── mcpets/ │ │ │ │ ├── ListenerMcPets.java │ │ │ │ └── McPetsExpansion.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── MarriageMaster/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── marriagemaster/ │ │ │ │ ├── MarriageMasterExpansion.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerMarriageMaster.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── MythicMobs/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── mythicmobs/ │ │ │ │ ├── ListenerMythicMobs.java │ │ │ │ ├── MythicMobsConfiguration.java │ │ │ │ └── MythicMobsExpansion.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── PlaceholderAPI/ │ │ │ ├── README.MD │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── placeholderapi/ │ │ │ │ ├── HookPlaceholderAPI.java │ │ │ │ └── PlaceholderAPIExpansion.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── PlayerParticles/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── player/ │ │ │ │ └── particles/ │ │ │ │ ├── ListenerPlayerParticles.java │ │ │ │ ├── PlayerParticlesConfiguration.java │ │ │ │ └── PlayerParticlesExpansion.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── PreciousStones/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── preciousstones/ │ │ │ │ ├── ListenerPreciousStones.java │ │ │ │ ├── PreciousStonesConfiguration.java │ │ │ │ ├── PreciousStonesExpansion.java │ │ │ │ └── RegionHandlerPreciousStones.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── ProtectionStones/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── protectionstones/ │ │ │ │ ├── ProtectionStonesConfiguration.java │ │ │ │ ├── ProtectionStonesExpansion.java │ │ │ │ ├── ProtectionStonesListener.java │ │ │ │ └── RegionHandlerProtectionStones.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── README.MD │ │ ├── RedProtect/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── redprotect/ │ │ │ │ ├── RedProtectExpansion.java │ │ │ │ └── RegionHandlerRedProtect.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── Residence/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── residence/ │ │ │ │ ├── RegionHandlerResidence.java │ │ │ │ └── ResidenceExpansion.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── SuperVanish/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── supervanish/ │ │ │ │ ├── SuperVanishExpansion.java │ │ │ │ └── VanishHandlerSuper.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── SuperiorSkyblock/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── superior/ │ │ │ │ └── skyblock/ │ │ │ │ ├── IslandWrapperSuperior.java │ │ │ │ ├── SkyBlockHandlerSuperior.java │ │ │ │ └── SuperiorSkyblockExpansion.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── Towny/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── towny/ │ │ │ │ ├── RegionHandlerTowny.java │ │ │ │ ├── TownyConfiguration.java │ │ │ │ ├── TownyExpansion.java │ │ │ │ └── listener/ │ │ │ │ └── ListenerPrison.java │ │ │ └── resources/ │ │ │ ├── expansion.yml │ │ │ └── towny.yml │ │ ├── UltimateClaims/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── ultimateclaims/ │ │ │ │ ├── RegionHandlerUltimateClaims.java │ │ │ │ └── UltimateClaimsExpansion.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ ├── VanishNoPacket/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── vnp/ │ │ │ │ ├── VanishHandlerNoPacket.java │ │ │ │ └── VanishNoPacketExpansion.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ └── expansion.yml │ │ ├── WorldGuard/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── region/ │ │ │ │ └── world/ │ │ │ │ └── guard/ │ │ │ │ ├── WorldGuardConfiguration.java │ │ │ │ ├── WorldGuardExpansion.java │ │ │ │ ├── handler/ │ │ │ │ │ └── WorldGuardRegionHandler.java │ │ │ │ ├── hook/ │ │ │ │ │ └── HookWorldGuard.java │ │ │ │ └── listener/ │ │ │ │ ├── ListenerPreventLeaving.java │ │ │ │ └── ListenerWorldGuard.java │ │ │ └── resources/ │ │ │ ├── expansion.yml │ │ │ └── worldguard.yml │ │ ├── ZNPCsPlus/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── znpc/ │ │ │ │ ├── CombatNpc.java │ │ │ │ ├── CombatNpcManager.java │ │ │ │ ├── ZNPCExpansion.java │ │ │ │ ├── configuration/ │ │ │ │ │ ├── Configuration.java │ │ │ │ │ └── NpcConfiguration.java │ │ │ │ ├── listener/ │ │ │ │ │ └── NpcExpansionListener.java │ │ │ │ └── task/ │ │ │ │ └── NpcRemoveTask.java │ │ │ └── resources/ │ │ │ ├── config.yml │ │ │ ├── expansion.yml │ │ │ └── npcs.yml │ │ ├── build.gradle.kts │ │ ├── iDisguise/ │ │ │ ├── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── combatlogx/ │ │ │ │ └── expansion/ │ │ │ │ └── compatibility/ │ │ │ │ └── idisguise/ │ │ │ │ ├── DisguiseHandler_iDisguise.java │ │ │ │ └── Expansion_iDisguise.java │ │ │ └── resources/ │ │ │ └── expansion.yml │ │ └── uSkyBlock/ │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── compatibility/ │ │ │ └── uskyblock/ │ │ │ ├── IslandWrapper_uSkyBlock.java │ │ │ ├── SkyBlockHandler_uSkyBlock.java │ │ │ └── uSkyBlockExpansion.java │ │ └── resources/ │ │ └── expansion.yml │ ├── damage-effects/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── damage/ │ │ │ └── effects/ │ │ │ ├── DamageEffectsConfiguration.java │ │ │ ├── DamageEffectsExpansion.java │ │ │ ├── ListenerDamageEffects.java │ │ │ └── effect/ │ │ │ ├── Blood.java │ │ │ ├── DamageEffect.java │ │ │ └── Offset.java │ │ └── resources/ │ │ ├── effects.yml │ │ └── expansion.yml │ ├── damage-tagger/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── damage/ │ │ │ └── tagger/ │ │ │ ├── DamageTaggerExpansion.java │ │ │ ├── configuration/ │ │ │ │ └── DamageTaggerConfiguration.java │ │ │ └── listener/ │ │ │ └── ListenerDamage.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── death-effects/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── death/ │ │ │ └── effects/ │ │ │ ├── DeathEffectsConfiguration.java │ │ │ ├── DeathEffectsExpansion.java │ │ │ ├── ListenerDeathEffects.java │ │ │ └── task/ │ │ │ └── ItemRemoveTask.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── end-crystal/ │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ ├── legacy/ │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── endcrystals/ │ │ │ ├── CheckEndCrystalTask.java │ │ │ └── ListenerCrystals_Legacy.java │ │ ├── modern/ │ │ │ ├── gradle.properties │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── endcrystals/ │ │ │ └── ListenerCrystals_Modern.java │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── endcrystals/ │ │ │ └── EndCrystalExpansion.java │ │ └── resources/ │ │ └── expansion.yml │ ├── force-field/ │ │ ├── README.MD │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── force/ │ │ │ └── field/ │ │ │ ├── ForceFieldExpansion.java │ │ │ ├── configuration/ │ │ │ │ └── ForceFieldConfiguration.java │ │ │ └── task/ │ │ │ ├── ForceFieldAdapter.java │ │ │ └── ForceFieldTask.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── glowing/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── glowing/ │ │ │ ├── GlowingExpansion.java │ │ │ └── listener/ │ │ │ └── ListenerGlow.java │ │ └── resources/ │ │ └── expansion.yml │ ├── logger/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── logger/ │ │ │ ├── LoggerExpansion.java │ │ │ ├── configuration/ │ │ │ │ ├── LogEntryOptions.java │ │ │ │ ├── LogFileInfo.java │ │ │ │ ├── LogOptions.java │ │ │ │ ├── LogType.java │ │ │ │ └── LoggerConfiguration.java │ │ │ └── listener/ │ │ │ └── ListenerLogger.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── loot-protection/ │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── loot/ │ │ │ └── protection/ │ │ │ ├── LootProtectionExpansion.java │ │ │ ├── configuration/ │ │ │ │ └── LootProtectionConfiguration.java │ │ │ ├── event/ │ │ │ │ └── QueryPickupEvent.java │ │ │ ├── listener/ │ │ │ │ └── ListenerLootProtection.java │ │ │ └── object/ │ │ │ └── ProtectedItem.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── mob-tagger/ │ │ ├── README.MD │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── mob/ │ │ │ └── tagger/ │ │ │ ├── MobTaggerExpansion.java │ │ │ ├── configuration/ │ │ │ │ └── MobTaggerConfiguration.java │ │ │ ├── listener/ │ │ │ │ └── ListenerDamage.java │ │ │ └── manager/ │ │ │ ├── ISpawnReasonManager.java │ │ │ ├── SpawnReasonManager_Legacy.java │ │ │ └── SpawnReasonManager_New.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ ├── newbie-helper/ │ │ ├── README.MD │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── newbie/ │ │ │ └── helper/ │ │ │ ├── NewbieHelperExpansion.java │ │ │ ├── command/ │ │ │ │ ├── CommandTogglePVP.java │ │ │ │ ├── SubCommandCheck.java │ │ │ │ ├── SubCommandOff.java │ │ │ │ ├── SubCommandOn.java │ │ │ │ └── admin/ │ │ │ │ ├── SubCommandAdmin.java │ │ │ │ ├── SubCommandAdminOff.java │ │ │ │ └── SubCommandAdminOn.java │ │ │ ├── configuration/ │ │ │ │ ├── NewbieHelperConfiguration.java │ │ │ │ └── WorldsConfiguration.java │ │ │ ├── listener/ │ │ │ │ ├── ListenerDamage.java │ │ │ │ ├── ListenerJoin.java │ │ │ │ └── ListenerLavaFire.java │ │ │ ├── manager/ │ │ │ │ ├── CooldownManager.java │ │ │ │ ├── PVPManager.java │ │ │ │ └── ProtectionManager.java │ │ │ └── placeholder/ │ │ │ └── NewbieHelperPlaceholderExpansion.java │ │ └── resources/ │ │ ├── config.yml │ │ ├── expansion.yml │ │ └── worlds.yml │ ├── rewards/ │ │ ├── README.MD │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── combatlogx/ │ │ │ └── expansion/ │ │ │ └── rewards/ │ │ │ ├── RewardExpansion.java │ │ │ ├── configuration/ │ │ │ │ ├── Reward.java │ │ │ │ ├── RewardConfiguration.java │ │ │ │ └── requirement/ │ │ │ │ ├── EconomyRequirement.java │ │ │ │ ├── ExperienceRequirement.java │ │ │ │ └── Requirement.java │ │ │ ├── hook/ │ │ │ │ └── HookVault.java │ │ │ └── listener/ │ │ │ └── ListenerRewards.java │ │ └── resources/ │ │ ├── config.yml │ │ └── expansion.yml │ └── scoreboard/ │ ├── README.MD │ ├── build.gradle.kts │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── java/ │ │ └── combatlogx/ │ │ └── expansion/ │ │ └── scoreboard/ │ │ ├── ScoreboardConfiguration.java │ │ ├── ScoreboardExpansion.java │ │ ├── ScoreboardUpdater.java │ │ ├── manager/ │ │ │ └── CustomScoreboardManager.java │ │ └── scoreboard/ │ │ ├── CustomLine.java │ │ ├── CustomScoreboard.java │ │ └── PaperScoreboard.java │ └── resources/ │ ├── config.yml │ └── expansion.yml ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── plugin/ │ ├── README.MD │ ├── build.gradle.kts │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── github/ │ │ └── sirblobman/ │ │ └── combatlogx/ │ │ ├── CombatPlugin.java │ │ ├── command/ │ │ │ ├── CommandCombatTimer.java │ │ │ ├── CommandTogglePVP.java │ │ │ └── combatlogx/ │ │ │ ├── CommandCombatLogX.java │ │ │ ├── SubCommandAbout.java │ │ │ ├── SubCommandHelp.java │ │ │ ├── SubCommandReload.java │ │ │ ├── SubCommandTag.java │ │ │ ├── SubCommandToggle.java │ │ │ ├── SubCommandUntag.java │ │ │ ├── SubCommandVersion.java │ │ │ └── forgive/ │ │ │ ├── SubCommandForgive.java │ │ │ ├── SubCommandForgiveAccept.java │ │ │ ├── SubCommandForgiveReject.java │ │ │ ├── SubCommandForgiveRequest.java │ │ │ └── SubCommandForgiveToggle.java │ │ ├── configuration/ │ │ │ └── ConfigurationChecker.java │ │ ├── listener/ │ │ │ ├── ListenerConfiguration.java │ │ │ ├── ListenerDamage.java │ │ │ ├── ListenerDeath.java │ │ │ ├── ListenerEndCrystal.java │ │ │ ├── ListenerInvulnerable.java │ │ │ ├── ListenerPunish.java │ │ │ └── ListenerUntag.java │ │ ├── manager/ │ │ │ ├── CombatManager.java │ │ │ ├── CrystalManager.java │ │ │ ├── DeathManager.java │ │ │ ├── ForgiveManager.java │ │ │ ├── Manager.java │ │ │ ├── PlaceholderManager.java │ │ │ └── PunishManager.java │ │ ├── placeholder/ │ │ │ └── BasePlaceholderExpansion.java │ │ └── task/ │ │ ├── PlayerVulnerableTask.java │ │ ├── TimerUpdateTask.java │ │ └── UntagTask.java │ └── resources/ │ ├── commands.yml │ ├── config.yml │ ├── language/ │ │ ├── ar_sa.lang.yml │ │ ├── cs_cz.lang.yml │ │ ├── da_dk.lang.yml │ │ ├── de_at.lang.yml │ │ ├── de_ch.lang.yml │ │ ├── de_de.lang.yml │ │ ├── el_gr.lang.yml │ │ ├── en_us.lang.yml │ │ ├── es_ar.lang.yml │ │ ├── es_cl.lang.yml │ │ ├── es_ec.lang.yml │ │ ├── es_es.lang.yml │ │ ├── es_mx.lang.yml │ │ ├── es_uy.lang.yml │ │ ├── es_ve.lang.yml │ │ ├── fi_fi.lang.yml │ │ ├── fr_ca.lang.yml │ │ ├── fr_fr.lang.yml │ │ ├── hu_hu.lang.yml │ │ ├── it_it.lang.yml │ │ ├── ka_ge.lang.yml │ │ ├── nl_be.yml │ │ ├── nl_nl.yml │ │ ├── nn_no.yml │ │ ├── no_no.yml │ │ ├── pl_pl.lang.yml │ │ ├── pt_br.lang.yml │ │ ├── pt_pt.lang.yml │ │ ├── ru_ru.lang.yml │ │ ├── sv_se.lang.yml │ │ ├── tr_tr.lang.yml │ │ ├── uk_ua.lang.yml │ │ └── zh_cn.lang.yml │ ├── language.yml │ └── punish.yml ├── settings.gradle.kts ├── spigot.documentation.bbcode └── spigot.overview.bbcode
Showing preview only (301K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2998 symbols across 365 files)
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/ICombatLogX.java
type ICombatLogX (line 22) | public interface ICombatLogX extends IResourceHolder, IMultiVersionPlugin {
method getPlugin (line 26) | @NotNull ConfigurablePlugin getPlugin();
method onReload (line 31) | void onReload();
method getPlayerDataManager (line 36) | @NotNull PlayerDataManager getPlayerDataManager();
method getLanguageManager (line 41) | @NotNull LanguageManager getLanguageManager();
method getExpansionManager (line 46) | @NotNull ExpansionManager getExpansionManager();
method getCombatManager (line 51) | @NotNull ICombatManager getCombatManager();
method getTimerManager (line 56) | @NotNull ITimerManager getTimerManager();
method getPunishManager (line 61) | @NotNull IPunishManager getPunishManager();
method getDeathManager (line 66) | @NotNull IDeathManager getDeathManager();
method getPlaceholderManager (line 71) | @NotNull IPlaceholderManager getPlaceholderManager();
method getForgiveManager (line 76) | @NotNull IForgiveManager getForgiveManager();
method isDebugModeDisabled (line 81) | boolean isDebugModeDisabled();
method printDebug (line 90) | void printDebug(String @NotNull ... messageArray);
method printDebug (line 100) | void printDebug(@NotNull Throwable ex);
method getConfiguration (line 105) | @NotNull MainConfiguration getConfiguration();
method getCommandConfiguration (line 110) | @NotNull CommandConfiguration getCommandConfiguration();
method getPunishConfiguration (line 115) | @NotNull PunishConfiguration getPunishConfiguration();
method getCrystalManager (line 117) | @NotNull ICrystalManager getCrystalManager();
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/ICombatLogXNeeded.java
type ICombatLogXNeeded (line 7) | public interface ICombatLogXNeeded {
method getCombatLogX (line 8) | @NotNull ICombatLogX getCombatLogX();
method getLogger (line 10) | default @NotNull Logger getLogger() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/command/CombatLogCommand.java
class CombatLogCommand (line 17) | public abstract class CombatLogCommand extends Command {
method CombatLogCommand (line 20) | public CombatLogCommand(@NotNull ICombatLogX plugin, @NotNull String c...
method getCombatLogX (line 25) | protected final @NotNull ICombatLogX getCombatLogX() {
method getLanguageManager (line 29) | @Override
method onTabComplete (line 35) | @Override
method execute (line 40) | @Override
method getExpansionManager (line 45) | protected final @NotNull ExpansionManager getExpansionManager() {
method isWorldDisabled (line 50) | protected final boolean isWorldDisabled(World world) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/command/CombatLogPlayerCommand.java
class CombatLogPlayerCommand (line 17) | public abstract class CombatLogPlayerCommand extends PlayerCommand {
method CombatLogPlayerCommand (line 20) | public CombatLogPlayerCommand(ICombatLogX plugin, String commandName) {
method getCombatLogX (line 25) | protected final @NotNull ICombatLogX getCombatLogX() {
method getLanguageManager (line 29) | @Override
method onTabComplete (line 35) | @Override
method execute (line 40) | @Override
method getExpansionManager (line 45) | protected final @NotNull ExpansionManager getExpansionManager() {
method isWorldDisabled (line 50) | protected final boolean isWorldDisabled(World world) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/CommandConfiguration.java
class CommandConfiguration (line 19) | public final class CommandConfiguration implements IConfigurable {
method CommandConfiguration (line 26) | public CommandConfiguration() {
method load (line 35) | @Override
method getTagCommands (line 58) | public @NotNull List<String> getTagCommands() {
method setTagCommands (line 62) | public void setTagCommands(@NotNull Collection<String> commands) {
method getUntagCommands (line 67) | public @NotNull List<String> getUntagCommands() {
method setUntagCommands (line 71) | public void setUntagCommands(@NotNull Collection<String> commands) {
method getPunishCommands (line 76) | public @NotNull List<String> getPunishCommands() {
method setPunishCommands (line 80) | public void setPunishCommands(@NotNull Collection<String> commands) {
method getSpecialPunishCommands (line 85) | public @NotNull Map<String, SpecialPunishCommand> getSpecialPunishComm...
method getSpecialPunishCommandList (line 89) | public @NotNull List<SpecialPunishCommand> getSpecialPunishCommandList...
method getSpecialPunishCommand (line 94) | public @Nullable SpecialPunishCommand getSpecialPunishCommand(String i...
method addSpecialPunishCommand (line 98) | public void addSpecialPunishCommand(SpecialPunishCommand command) {
method removeSpecialPunishCommands (line 103) | public void removeSpecialPunishCommands() {
method isSpecialPunishCommandsEnabled (line 107) | public boolean isSpecialPunishCommandsEnabled() {
method setSpecialPunishCommandsEnabled (line 111) | public void setSpecialPunishCommandsEnabled(boolean specialPunishComma...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/MainConfiguration.java
class MainConfiguration (line 27) | public final class MainConfiguration implements IConfigurable {
method MainConfiguration (line 60) | public MainConfiguration(@NotNull ICombatLogX plugin) {
method load (line 97) | @Override
method getGeneratedByVersion (line 142) | public @NotNull String getGeneratedByVersion() {
method setGeneratedByVersion (line 146) | public void setGeneratedByVersion(@NotNull String generatedByVersion) {
method isDebugMode (line 150) | public boolean isDebugMode() {
method setDebugMode (line 154) | public void setDebugMode(boolean debugMode) {
method isBroadcastOnLoad (line 158) | public boolean isBroadcastOnLoad() {
method setBroadcastOnLoad (line 162) | public void setBroadcastOnLoad(boolean broadcastOnLoad) {
method isBroadcastOnEnable (line 166) | public boolean isBroadcastOnEnable() {
method setBroadcastOnEnable (line 170) | public void setBroadcastOnEnable(boolean broadcastOnEnable) {
method isBroadcastOnDisable (line 174) | public boolean isBroadcastOnDisable() {
method setBroadcastOnDisable (line 178) | public void setBroadcastOnDisable(boolean broadcastOnDisable) {
method getWorlds (line 182) | public @NotNull Set<String> getWorlds() {
method setWorlds (line 186) | public void setWorlds(@NotNull Collection<String> worlds) {
method isWorldListInverted (line 191) | public boolean isWorldListInverted() {
method setWorldListInverted (line 195) | public void setWorldListInverted(boolean worldListInverted) {
method isLinkPets (line 199) | public boolean isLinkPets() {
method setLinkPets (line 203) | public void setLinkPets(boolean linkPets) {
method isLinkProjectiles (line 207) | public boolean isLinkProjectiles() {
method setLinkProjectiles (line 211) | public void setLinkProjectiles(boolean linkProjectiles) {
method isLinkFishingRod (line 215) | public boolean isLinkFishingRod() {
method setLinkFishingRod (line 219) | public void setLinkFishingRod(boolean linkFishingRod) {
method isLinkTnt (line 223) | public boolean isLinkTnt() {
method setLinkTnt (line 227) | public void setLinkTnt(boolean linkTnt) {
method isLinkEndCrystals (line 231) | public boolean isLinkEndCrystals() {
method setLinkEndCrystals (line 235) | public void setLinkEndCrystals(boolean linkEndCrystals) {
method getIgnoredProjectiles (line 239) | public @NotNull Set<EntityType> getIgnoredProjectiles() {
method setIgnoredProjectiles (line 243) | public void setIgnoredProjectiles(@NotNull Collection<EntityType> igno...
method getTimerType (line 248) | public @NotNull TimerType getTimerType() {
method setTimerType (line 252) | public void setTimerType(@NotNull TimerType timerType) {
method getDefaultTimer (line 256) | public int getDefaultTimer() {
method setDefaultTimer (line 260) | public void setDefaultTimer(int defaultTimer) {
method getBypassPermissionName (line 264) | public @Nullable String getBypassPermissionName() {
method setBypassPermissionName (line 268) | public void setBypassPermissionName(@Nullable String bypassPermissionN...
method getBypassPermission (line 273) | public Permission getBypassPermission() {
method isSelfCombat (line 288) | public boolean isSelfCombat() {
method setSelfCombat (line 292) | public void setSelfCombat(boolean selfCombat) {
method isUntagOnSelfDeath (line 296) | public boolean isUntagOnSelfDeath() {
method setUntagOnSelfDeath (line 300) | public void setUntagOnSelfDeath(boolean untagOnSelfDeath) {
method isUntagOnEnemyDeath (line 304) | public boolean isUntagOnEnemyDeath() {
method setUntagOnEnemyDeath (line 308) | public void setUntagOnEnemyDeath(boolean untagOnEnemyDeath) {
method isRemoveNoDamageCooldown (line 312) | public boolean isRemoveNoDamageCooldown() {
method setRemoveNoDamageCooldown (line 316) | public void setRemoveNoDamageCooldown(boolean removeNoDamageCooldown) {
method getForgiveRequestCooldown (line 320) | public int getForgiveRequestCooldown() {
method setForgiveRequestCooldown (line 324) | public void setForgiveRequestCooldown(int forgiveRequestCooldown) {
method getForgiveRequestExpire (line 328) | public int getForgiveRequestExpire() {
method setForgiveRequestExpire (line 332) | public void setForgiveRequestExpire(int forgiveRequestExpire) {
method getMinimumTps (line 336) | public double getMinimumTps() {
method setMinimumTps (line 340) | public void setMinimumTps(double minimumTps) {
method isDisabled (line 344) | public boolean isDisabled(@NotNull World world) {
method isProjectileIgnored (line 353) | public boolean isProjectileIgnored(@NotNull EntityType type) {
method getEnabledTagReasons (line 358) | public @NotNull Set<TagReason> getEnabledTagReasons() {
method setEnabledTagReasons (line 362) | public void setEnabledTagReasons(@NotNull Collection<TagReason> reason...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/PunishConfiguration.java
class PunishConfiguration (line 17) | public final class PunishConfiguration implements IConfigurable {
method PunishConfiguration (line 27) | public PunishConfiguration() {
method load (line 39) | @Override
method isOnDisconnect (line 53) | public boolean isOnDisconnect() {
method setOnDisconnect (line 57) | public void setOnDisconnect(boolean onDisconnect) {
method isOnKick (line 61) | public boolean isOnKick() {
method setOnKick (line 65) | public void setOnKick(boolean onKick) {
method isOnExpire (line 69) | public boolean isOnExpire() {
method setOnExpire (line 73) | public void setOnExpire(boolean onExpire) {
method getKillTime (line 77) | public @NotNull KillTime getKillTime() {
method setKillTime (line 81) | public void setKillTime(@NotNull KillTime killTime) {
method isEnablePunishmentCounter (line 85) | public boolean isEnablePunishmentCounter() {
method setEnablePunishmentCounter (line 89) | public void setEnablePunishmentCounter(boolean enablePunishmentCounter) {
method getKickIgnoreList (line 93) | public @NotNull List<String> getKickIgnoreList() {
method setKickIgnoreList (line 97) | public void setKickIgnoreList(@NotNull Collection<String> kickIgnores) {
method isKickIgnoreListInverted (line 102) | public boolean isKickIgnoreListInverted() {
method setKickIgnoreListInverted (line 106) | public void setKickIgnoreListInverted(boolean inverted) {
method isKickIgnored (line 110) | public boolean isKickIgnored(@NotNull String reason) {
method isInIgnoreList (line 116) | private boolean isInIgnoreList(@NotNull String reason) {
method getCustomDeathMessages (line 131) | public List<String> getCustomDeathMessages() {
method setCustomDeathMessages (line 135) | public void setCustomDeathMessages(@NotNull Collection<String> deathMe...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/CustomPlayerEvent.java
class CustomPlayerEvent (line 8) | public abstract class CustomPlayerEvent extends PlayerEvent {
method CustomPlayerEvent (line 9) | public CustomPlayerEvent(@NotNull Player player) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/CustomPlayerEventCancellable.java
class CustomPlayerEventCancellable (line 8) | public abstract class CustomPlayerEventCancellable extends CustomPlayerE...
method CustomPlayerEventCancellable (line 11) | public CustomPlayerEventCancellable(@NotNull Player player) {
method isCancelled (line 16) | @Override
method setCancelled (line 21) | @Override
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/NPCDropItemEvent.java
class NPCDropItemEvent (line 19) | public final class NPCDropItemEvent extends Event implements Cancellable {
method NPCDropItemEvent (line 32) | public NPCDropItemEvent(@NotNull ItemStack item, @NotNull OfflinePlaye...
method getHandlerList (line 41) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 45) | @Override
method getPlayer (line 53) | public @NotNull OfflinePlayer getPlayer() {
method getLocation (line 60) | public @NotNull Location getLocation() {
method getItem (line 68) | public @NotNull ItemStack getItem() {
method setItem (line 72) | public void setItem(@NotNull ItemStack item) {
method getSlotType (line 79) | public @NotNull CitizensSlotType getSlotType() {
method isCancelled (line 83) | @Override
method setCancelled (line 88) | @Override
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerEnemyRemoveEvent.java
class PlayerEnemyRemoveEvent (line 18) | public final class PlayerEnemyRemoveEvent extends CustomPlayerEvent {
method PlayerEnemyRemoveEvent (line 28) | public PlayerEnemyRemoveEvent(@NotNull Player player, @NotNull UntagRe...
method getHandlerList (line 34) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 38) | @Override
method getUntagReason (line 47) | public @NotNull UntagReason getUntagReason() {
method getEnemy (line 54) | public @NotNull Entity getEnemy() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerPreTagEvent.java
class PlayerPreTagEvent (line 19) | public final class PlayerPreTagEvent extends CustomPlayerEventCancellable {
method PlayerPreTagEvent (line 30) | public PlayerPreTagEvent(@NotNull Player player, @Nullable Entity enem...
method getHandlerList (line 38) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 42) | @Override
method getEnemy (line 51) | public @Nullable Entity getEnemy() {
method getTagType (line 59) | public @NotNull TagType getTagType() {
method getTagReason (line 67) | public @NotNull TagReason getTagReason() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerPunishEvent.java
class PlayerPunishEvent (line 21) | public final class PlayerPunishEvent extends CustomPlayerEventCancellable {
method PlayerPunishEvent (line 31) | public PlayerPunishEvent(@NotNull Player player, @NotNull UntagReason ...
method getHandlerList (line 38) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 42) | @Override
method getPunishReason (line 50) | public @NotNull UntagReason getPunishReason() {
method getEnemies (line 57) | public @NotNull List<Entity> getEnemies() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerReTagEvent.java
class PlayerReTagEvent (line 19) | public final class PlayerReTagEvent extends CustomPlayerEventCancellable {
method PlayerReTagEvent (line 31) | public PlayerReTagEvent(@NotNull Player player, @Nullable Entity enemy...
method getHandlerList (line 40) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 44) | @Override
method getEnemy (line 53) | public @Nullable Entity getEnemy() {
method getTagType (line 61) | public @NotNull TagType getTagType() {
method getTagReason (line 69) | public @NotNull TagReason getTagReason() {
method getEndTime (line 77) | public long getEndTime() {
method setEndTime (line 87) | public void setEndTime(long millis) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerTagEvent.java
class PlayerTagEvent (line 20) | public final class PlayerTagEvent extends CustomPlayerEvent {
method PlayerTagEvent (line 32) | public PlayerTagEvent(@NotNull Player player, @Nullable Entity enemy, ...
method getHandlerList (line 41) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 45) | @Override
method getEnemy (line 54) | public @Nullable Entity getEnemy() {
method getTagType (line 62) | public @NotNull TagType getTagType() {
method getTagReason (line 70) | public @NotNull TagReason getTagReason() {
method getEndTime (line 78) | public long getEndTime() {
method setEndTime (line 88) | public void setEndTime(long millis) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerUntagEvent.java
class PlayerUntagEvent (line 20) | public final class PlayerUntagEvent extends CustomPlayerEvent {
method PlayerUntagEvent (line 30) | public PlayerUntagEvent(@NotNull Player player, @NotNull UntagReason u...
method getHandlerList (line 37) | public static @NotNull HandlerList getHandlerList() {
method getHandlers (line 41) | @Override
method getUntagReason (line 50) | public @NotNull UntagReason getUntagReason() {
method getPreviousEnemies (line 54) | public @NotNull List<Entity> getPreviousEnemies() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/Expansion.java
class Expansion (line 29) | public abstract class Expansion implements IResourceHolder {
method Expansion (line 38) | public Expansion(@NotNull ICombatLogX plugin) {
method getListeners (line 48) | final @NotNull List<Listener> getListeners() {
method getState (line 52) | public final @NotNull State getState() {
method setState (line 56) | final void setState(@NotNull State state) {
method getPlugin (line 60) | public final @NotNull ICombatLogX getPlugin() {
method getLogger (line 64) | public final @NotNull Logger getLogger() {
method getConfigurationManager (line 72) | protected final @NotNull ConfigurationManager getConfigurationManager() {
method getDataFolder (line 80) | public final @NotNull File getDataFolder() {
method setDataFolder (line 84) | final void setDataFolder(@NotNull File dataFolder) {
method getFile (line 92) | public final @NotNull File getFile() {
method setFile (line 96) | final void setFile(@NotNull File file) {
method getDescription (line 104) | public final @NotNull ExpansionDescription getDescription() {
method setDescription (line 108) | final void setDescription(@NotNull ExpansionDescription description) {
method getName (line 112) | public final @NotNull String getName() {
method getPrefix (line 117) | public final @NotNull String getPrefix() {
method getKeyName (line 122) | @Override
method getResource (line 128) | @Override
method checkDependency (line 149) | protected final boolean checkDependency(@NotNull String pluginName, bo...
method checkDependency (line 170) | protected final boolean checkDependency(@NotNull String pluginName, bo...
method registerListener (line 194) | protected final void registerListener(@NotNull Listener listener) {
method selfDisable (line 203) | protected final void selfDisable() {
method onLoad (line 209) | public abstract void onLoad();
method onEnable (line 211) | public abstract void onEnable();
method onDisable (line 213) | public abstract void onDisable();
method reloadConfig (line 215) | public abstract void reloadConfig();
type State (line 217) | public enum State {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionClassLoader.java
class ExpansionClassLoader (line 23) | class ExpansionClassLoader extends URLClassLoader {
method ExpansionClassLoader (line 28) | ExpansionClassLoader(@NotNull ExpansionManager manager, @NotNull YamlC...
method findClass (line 38) | @Override
method findClass (line 43) | public @Nullable Class<?> findClass(String name, boolean checkGlobal) {
method getExpansion (line 72) | public @Nullable Expansion getExpansion() {
method getClasses (line 76) | public @NotNull Set<String> getClasses() {
method registerExpansion (line 80) | private void registerExpansion(@NotNull YamlConfiguration description,...
method createDescription (line 119) | private ExpansionDescription createDescription(@NotNull YamlConfigurat...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionComparator.java
class ExpansionComparator (line 8) | public final class ExpansionComparator implements Comparator<Expansion> {
method compare (line 9) | @Override
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionDescription.java
class ExpansionDescription (line 9) | public class ExpansionDescription {
method ExpansionDescription (line 25) | ExpansionDescription(@NotNull String mainClass, @NotNull String name, ...
method getMainClass (line 47) | public @NotNull String getMainClass() {
method getName (line 51) | public @NotNull String getName() {
method getPrefix (line 55) | public @NotNull String getPrefix() {
method getVersion (line 59) | public @NotNull String getVersion() {
method getDescription (line 63) | public @NotNull String getDescription() {
method getWebsite (line 67) | public @Nullable String getWebsite() {
method getAuthors (line 71) | public @NotNull List<String> getAuthors() {
method getPluginDependencies (line 75) | public @NotNull List<String> getPluginDependencies() {
method getPluginSoftDependencies (line 79) | public @NotNull List<String> getPluginSoftDependencies() {
method getExpansionDependencies (line 83) | public @NotNull List<String> getExpansionDependencies() {
method getExpansionSoftDependencies (line 87) | public @NotNull List<String> getExpansionSoftDependencies() {
method getFullName (line 91) | public @NotNull String getFullName() {
method isLateLoad (line 97) | public boolean isLateLoad() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionDescriptionBuilder.java
class ExpansionDescriptionBuilder (line 9) | public final class ExpansionDescriptionBuilder {
method ExpansionDescriptionBuilder (line 26) | public ExpansionDescriptionBuilder(@NotNull String mainClass, @NotNull...
method withPrefix (line 42) | public @NotNull ExpansionDescriptionBuilder withPrefix(@Nullable Strin...
method withDescription (line 47) | public @NotNull ExpansionDescriptionBuilder withDescription(@Nullable ...
method withWebsite (line 52) | public @NotNull ExpansionDescriptionBuilder withWebsite(@Nullable Stri...
method withAuthors (line 57) | public @NotNull ExpansionDescriptionBuilder withAuthors(@NotNull List<...
method withPluginDependencies (line 62) | public @NotNull ExpansionDescriptionBuilder withPluginDependencies(@No...
method withPluginSoftDependencies (line 67) | public @NotNull ExpansionDescriptionBuilder withPluginSoftDependencies...
method withExpansionDependencies (line 72) | public @NotNull ExpansionDescriptionBuilder withExpansionDependencies(...
method withExpansionSoftDependencies (line 77) | public @NotNull ExpansionDescriptionBuilder withExpansionSoftDependenc...
method withLateLoad (line 82) | public @NotNull ExpansionDescriptionBuilder withLateLoad(boolean lateL...
method build (line 87) | public @NotNull ExpansionDescription build() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionListener.java
class ExpansionListener (line 12) | public abstract class ExpansionListener extends CombatListener {
method ExpansionListener (line 15) | public ExpansionListener(@NotNull Expansion expansion) {
method register (line 20) | @Override
method printDebug (line 26) | @Override
method printDebug (line 31) | protected final void printDebug(@NotNull String message, @Nullable Thr...
method getExpansion (line 48) | protected final @NotNull Expansion getExpansion() {
method getExpansionLogger (line 52) | protected final @NotNull Logger getExpansionLogger() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionLogger.java
class ExpansionLogger (line 12) | public final class ExpansionLogger extends Logger {
method ExpansionLogger (line 15) | public ExpansionLogger(@NotNull Expansion expansion) {
method getExpansion (line 20) | public @NotNull Expansion getExpansion() {
method log (line 24) | @Override
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionManager.java
class ExpansionManager (line 39) | public final class ExpansionManager {
method ExpansionManager (line 45) | public ExpansionManager(@NotNull ICombatLogX plugin) {
method getPlugin (line 52) | public @NotNull ICombatLogX getPlugin() {
method loadExpansions (line 56) | public void loadExpansions() {
method enableExpansions (line 97) | public void enableExpansions() {
method disableExpansions (line 151) | public void disableExpansions() {
method reloadConfigs (line 172) | public void reloadConfigs() {
method getExpansion (line 177) | public @NotNull Optional<Expansion> getExpansion(String name) {
method getAllExpansions (line 186) | public @NotNull List<Expansion> getAllExpansions() {
method getLoadedExpansions (line 191) | public @NotNull List<Expansion> getLoadedExpansions() {
method getEnabledExpansions (line 198) | public @NotNull List<Expansion> getEnabledExpansions() {
method getClassLoader (line 206) | public @Nullable ExpansionClassLoader getClassLoader(Expansion expansi...
method getClassByName (line 210) | public @Nullable Class<?> getClassByName(String name) {
method setClass (line 221) | public void setClass(@NotNull String name, @NotNull Class<?> clazz) {
method loadExpansion (line 225) | private void loadExpansion(@NotNull File expansionFile) {
method enableExpansion (line 303) | public void enableExpansion(@NotNull Expansion expansion) {
method disableExpansion (line 328) | public void disableExpansion(@NotNull Expansion expansion) {
method sortExpansions (line 353) | private @NotNull List<Expansion> sortExpansions(@NotNull List<Expansio...
method getExpansionDescription (line 359) | private @NotNull YamlConfiguration getExpansionDescription(@NotNull Ja...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionWithDependencies.java
class ExpansionWithDependencies (line 9) | public abstract class ExpansionWithDependencies extends Expansion {
method ExpansionWithDependencies (line 12) | public ExpansionWithDependencies(@NotNull ICombatLogX plugin) {
method onEnable (line 17) | @Override
method onDisable (line 30) | @Override
method isEnabledSuccessfully (line 40) | public boolean isEnabledSuccessfully() {
method checkDependencies (line 44) | public abstract boolean checkDependencies();
method onCheckedEnable (line 46) | public abstract void onCheckedEnable();
method onCheckedDisable (line 48) | public abstract void onCheckedDisable();
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseExpansion.java
class DisguiseExpansion (line 8) | public abstract class DisguiseExpansion extends ExpansionWithDependencies {
method DisguiseExpansion (line 9) | public DisguiseExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 13) | @Override
method onCheckedEnable (line 18) | @Override
method onCheckedDisable (line 25) | @Override
method reloadConfig (line 30) | @Override
method registerListeners (line 35) | private void registerListeners() {
method afterEnable (line 42) | public void afterEnable() {
method afterDisable (line 49) | public void afterDisable() {
method getDisguiseHandler (line 53) | public abstract @NotNull DisguiseHandler<?> getDisguiseHandler();
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseExpansionListener.java
class DisguiseExpansionListener (line 7) | public abstract class DisguiseExpansionListener extends ExpansionListener {
method DisguiseExpansionListener (line 10) | public DisguiseExpansionListener(@NotNull DisguiseExpansion expansion) {
method getDisguiseExpansion (line 15) | protected final @NotNull DisguiseExpansion getDisguiseExpansion() {
method getDisguiseHandler (line 19) | protected final @NotNull DisguiseHandler<?> getDisguiseHandler() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseHandler.java
class DisguiseHandler (line 7) | public abstract class DisguiseHandler<DE extends DisguiseExpansion> {
method DisguiseHandler (line 10) | public DisguiseHandler(@NotNull DE expansion) {
method getExpansion (line 14) | protected final DE getExpansion() {
method hasDisguise (line 18) | public abstract boolean hasDisguise(@NotNull Player player);
method removeDisguise (line 20) | public abstract void removeDisguise(@NotNull Player player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseListener.java
class DisguiseListener (line 12) | public final class DisguiseListener extends DisguiseExpansionListener {
method DisguiseListener (line 13) | public DisguiseListener(@NotNull DisguiseExpansion expansion) {
method onTag (line 17) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/RegionExpansion.java
class RegionExpansion (line 21) | public abstract class RegionExpansion extends ExpansionWithDependencies {
method RegionExpansion (line 24) | public RegionExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 29) | @Override
method onCheckedEnable (line 38) | @Override
method onCheckedDisable (line 45) | @Override
method registerListeners (line 50) | private void registerListeners() {
method reloadConfig (line 56) | @Override
method getConfiguration (line 63) | public final @NotNull RegionExpansionConfiguration getConfiguration() {
method afterEnable (line 70) | public void afterEnable() {
method afterDisable (line 77) | public void afterDisable() {
method getRegionHandler (line 81) | public abstract @NotNull RegionHandler<?> getRegionHandler();
method saveDefaultRegionConfig (line 83) | private void saveDefaultRegionConfig(File file) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/RegionHandler.java
class RegionHandler (line 33) | public abstract class RegionHandler<RE extends RegionExpansion> {
method RegionHandler (line 37) | public RegionHandler(@NotNull RE expansion) {
method getExpansion (line 42) | protected final @NotNull RE getExpansion() {
method getLogger (line 46) | protected final @NotNull Logger getLogger() {
method printDebug (line 51) | protected final void printDebug(@NotNull String message) {
method getConfiguration (line 67) | private @NotNull RegionExpansionConfiguration getConfiguration() {
method sendEntryDeniedMessage (line 72) | public final void sendEntryDeniedMessage(@NotNull Player player, @NotN...
method preventEntry (line 99) | public final void preventEntry(@NotNull Cancellable e, @NotNull Player...
method teleportToEnemy (line 145) | private void teleportToEnemy(@NotNull Player player, @NotNull Cancella...
method knockbackPlayer (line 159) | private void knockbackPlayer(@NotNull Player player, @NotNull Cancella...
method customPreventEntry (line 179) | protected void customPreventEntry(@NotNull Cancellable e, @NotNull Pla...
method getEntryDeniedMessageCooldown (line 185) | public final long getEntryDeniedMessageCooldown() {
method getNoEntryMode (line 190) | public final @NotNull NoEntryMode getNoEntryMode() {
method getKnockbackStrength (line 195) | public final double getKnockbackStrength() {
method isGliding (line 200) | private boolean isGliding(@NotNull Player player) {
method getEntryDeniedMessagePath (line 209) | public abstract String getEntryDeniedMessagePath(@NotNull TagType tagT...
method isSafeZone (line 211) | public abstract boolean isSafeZone(@NotNull Player player, @NotNull Lo...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/configuration/RegionExpansionConfiguration.java
class RegionExpansionConfiguration (line 20) | public final class RegionExpansionConfiguration implements IConfigurable {
method RegionExpansionConfiguration (line 27) | public RegionExpansionConfiguration() {
method load (line 35) | @Override
method isPreventTeleport (line 48) | public boolean isPreventTeleport() {
method setPreventTeleport (line 52) | public void setPreventTeleport(boolean preventTeleport) {
method getNoEntryMode (line 56) | public @NotNull NoEntryMode getNoEntryMode() {
method setNoEntryMode (line 60) | public void setNoEntryMode(@NotNull NoEntryMode noEntryMode) {
method getKnockbackStrength (line 64) | public double getKnockbackStrength() {
method setKnockbackStrength (line 68) | public void setKnockbackStrength(double knockbackStrength) {
method getMessageCooldown (line 72) | public int getMessageCooldown() {
method setMessageCooldown (line 76) | public void setMessageCooldown(int messageCooldown) {
method getIgnoredTeleportCauses (line 80) | public @NotNull Set<TeleportCause> getIgnoredTeleportCauses() {
method setIgnoredTeleportCauses (line 84) | public void setIgnoredTeleportCauses(@NotNull Collection<TeleportCause...
method isIgnored (line 89) | public boolean isIgnored(@NotNull TeleportCause cause) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionExpansionListener.java
class RegionExpansionListener (line 10) | public abstract class RegionExpansionListener extends ExpansionListener {
method RegionExpansionListener (line 13) | public RegionExpansionListener(@NotNull RegionExpansion expansion) {
method getRegionExpansion (line 18) | protected final @NotNull RegionExpansion getRegionExpansion() {
method getConfiguration (line 22) | protected final @NotNull RegionExpansionConfiguration getConfiguration...
method getRegionHandler (line 27) | protected final @NotNull RegionHandler<?> getRegionHandler() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionMoveListener.java
class RegionMoveListener (line 17) | public final class RegionMoveListener extends RegionExpansionListener {
method RegionMoveListener (line 18) | public RegionMoveListener(@NotNull RegionExpansion expansion) {
method onMove (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionTeleportListener.java
class RegionTeleportListener (line 18) | public final class RegionTeleportListener extends RegionExpansionListener {
method RegionTeleportListener (line 19) | public RegionTeleportListener(@NotNull RegionExpansion expansion) {
method onTeleport (line 23) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionVulnerableListener.java
class RegionVulnerableListener (line 24) | public final class RegionVulnerableListener extends RegionExpansionListe...
method RegionVulnerableListener (line 25) | public RegionVulnerableListener(@NotNull RegionExpansion expansion) {
method onDamage (line 29) | @EventHandler(priority = EventPriority.HIGHEST)
method getPlayerOrPassenger (line 65) | private @Nullable Player getPlayerOrPassenger(@NotNull Entity entity) {
method getPassengers (line 84) | private @NotNull List<Entity> getPassengers(@NotNull Entity entity) {
method getPassengersModern (line 89) | private @NotNull List<Entity> getPassengersModern(@NotNull Entity enti...
method getPassengersLegacy (line 98) | @SuppressWarnings("deprecation") // Legacy Method
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/task/KnockbackPlayerTask.java
class KnockbackPlayerTask (line 12) | public final class KnockbackPlayerTask extends EntityTaskDetails<Player> {
method KnockbackPlayerTask (line 17) | public KnockbackPlayerTask(@NotNull ICombatLogX plugin, @NotNull Playe...
method getFrom (line 25) | private @NotNull Location getFrom() {
method getTo (line 29) | private @NotNull Location getTo() {
method getKnockbackStrength (line 33) | private double getKnockbackStrength() {
method run (line 37) | @Override
method knockbackPlayer (line 49) | private void knockbackPlayer(@NotNull Player player, @NotNull Location...
method getKnockback (line 54) | private @NotNull Vector getKnockback(@NotNull Location from, @NotNull ...
method makeFinite (line 67) | private @NotNull Vector makeFinite(@NotNull Vector original) {
method makeFinite (line 78) | private double makeFinite(double original) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/IslandWrapper.java
class IslandWrapper (line 10) | public abstract class IslandWrapper {
method getMembers (line 11) | public abstract @NotNull Set<UUID> getMembers();
method isMember (line 13) | public boolean isMember(@NotNull OfflinePlayer player) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockExpansion.java
class SkyBlockExpansion (line 8) | public abstract class SkyBlockExpansion extends ExpansionWithDependencies {
method SkyBlockExpansion (line 9) | public SkyBlockExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 13) | @Override
method onCheckedEnable (line 18) | @Override
method onCheckedDisable (line 25) | @Override
method reloadConfig (line 30) | @Override
method registerListeners (line 35) | private void registerListeners() {
method afterEnable (line 42) | public void afterEnable() {
method afterDisable (line 49) | public void afterDisable() {
method getSkyBlockHandler (line 53) | public abstract @NotNull SkyBlockHandler<?> getSkyBlockHandler();
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockExpansionListener.java
class SkyBlockExpansionListener (line 7) | public abstract class SkyBlockExpansionListener extends ExpansionListener {
method SkyBlockExpansionListener (line 10) | public SkyBlockExpansionListener(@NotNull SkyBlockExpansion expansion) {
method getSkyBlockExpansion (line 15) | protected final @NotNull SkyBlockExpansion getSkyBlockExpansion() {
method getSkyBlockHandler (line 19) | protected final @NotNull SkyBlockHandler<?> getSkyBlockHandler() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockHandler.java
class SkyBlockHandler (line 9) | public abstract class SkyBlockHandler<SE extends SkyBlockExpansion> {
method SkyBlockHandler (line 12) | public SkyBlockHandler(@NotNull SE expansion) {
method getExpansion (line 16) | protected final SE getExpansion() {
method getIsland (line 20) | public abstract @Nullable IslandWrapper getIsland(@NotNull Location lo...
method getIsland (line 22) | public abstract @Nullable IslandWrapper getIsland(@NotNull OfflinePlay...
method doesIslandMatch (line 24) | public abstract boolean doesIslandMatch(@NotNull OfflinePlayer player1...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockListener.java
class SkyBlockListener (line 12) | public final class SkyBlockListener extends SkyBlockExpansionListener {
method SkyBlockListener (line 13) | public SkyBlockListener(@NotNull SkyBlockExpansion expansion) {
method beforeTag (line 17) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansion.java
class VanishExpansion (line 9) | public abstract class VanishExpansion extends ExpansionWithDependencies {
method VanishExpansion (line 12) | public VanishExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 17) | @Override
method onCheckedEnable (line 23) | @Override
method onCheckedDisable (line 30) | @Override
method registerListeners (line 35) | private void registerListeners() {
method reloadConfig (line 39) | @Override
method getConfiguration (line 46) | public final @NotNull VanishExpansionConfiguration getConfiguration() {
method afterEnable (line 53) | public void afterEnable() {
method afterDisable (line 60) | public void afterDisable() {
method getVanishHandler (line 64) | public abstract @NotNull VanishHandler<?> getVanishHandler();
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansionConfiguration.java
class VanishExpansionConfiguration (line 9) | public final class VanishExpansionConfiguration implements IConfigurable {
method VanishExpansionConfiguration (line 13) | public VanishExpansionConfiguration() {
method load (line 18) | @Override
method isPreventVanishTaggingSelf (line 24) | public boolean isPreventVanishTaggingSelf() {
method setPreventVanishTaggingSelf (line 28) | public void setPreventVanishTaggingSelf(boolean preventVanishTaggingSe...
method isPreventVanishTaggingOther (line 32) | public boolean isPreventVanishTaggingOther() {
method setPreventVanishTaggingOther (line 36) | public void setPreventVanishTaggingOther(boolean preventVanishTaggingO...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansionListener.java
class VanishExpansionListener (line 7) | public abstract class VanishExpansionListener extends ExpansionListener {
method VanishExpansionListener (line 11) | public VanishExpansionListener(@NotNull VanishExpansion expansion) {
method getVanishExpansion (line 16) | protected final @NotNull VanishExpansion getVanishExpansion() {
method getVanishHandler (line 20) | protected final @NotNull VanishHandler<?> getVanishHandler() {
method getConfiguration (line 25) | protected final @NotNull VanishExpansionConfiguration getConfiguration...
method isPreventSelfTag (line 30) | protected final boolean isPreventSelfTag() {
method isPreventOtherTag (line 35) | protected final boolean isPreventOtherTag() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishHandler.java
class VanishHandler (line 7) | public abstract class VanishHandler<VE extends VanishExpansion> {
method VanishHandler (line 10) | public VanishHandler(@NotNull VE expansion) {
method getExpansion (line 14) | protected final VE getExpansion() {
method isVanished (line 18) | public abstract boolean isVanished(@NotNull Player player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishListener.java
class VanishListener (line 12) | public final class VanishListener extends VanishExpansionListener {
method VanishListener (line 13) | public VanishListener(@NotNull VanishExpansion expansion) {
method beforeTag (line 17) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/listener/CombatListener.java
class CombatListener (line 24) | public abstract class CombatListener implements Listener {
method CombatListener (line 27) | public CombatListener(@NotNull ICombatLogX plugin) {
method register (line 31) | public void register() {
method getCombatLogX (line 39) | protected final @NotNull ICombatLogX getCombatLogX() {
method getJavaPlugin (line 43) | protected final @NotNull ConfigurablePlugin getJavaPlugin() {
method getPluginLogger (line 48) | protected final @NotNull Logger getPluginLogger() {
method getLanguageManager (line 53) | protected final @NotNull LanguageManager getLanguageManager() {
method getPlayerDataManager (line 58) | protected final @NotNull PlayerDataManager getPlayerDataManager() {
method getCombatManager (line 63) | protected final @NotNull ICombatManager getCombatManager() {
method getDeathManager (line 68) | protected final @NotNull IDeathManager getDeathManager() {
method isInCombat (line 73) | protected final boolean isInCombat(@NotNull Player player) {
method isDebugModeDisabled (line 78) | protected final boolean isDebugModeDisabled() {
method printDebug (line 83) | protected void printDebug(@NotNull String message) {
method isWorldDisabled (line 96) | protected final boolean isWorldDisabled(@NotNull Entity entity) {
method isWorldDisabled (line 101) | protected final boolean isWorldDisabled(@NotNull World world) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ICombatManager.java
type ICombatManager (line 20) | public interface ICombatManager extends ICombatLogXNeeded {
method tag (line 30) | boolean tag(@NotNull Player player, @Nullable Entity enemy, @NotNull T...
method tag (line 43) | boolean tag(@NotNull Player player, @Nullable Entity enemy, @NotNull T...
method untag (line 52) | void untag(@NotNull Player player, @NotNull UntagReason untagReason);
method untag (line 61) | void untag(@NotNull Player player, @NotNull Entity enemy, @NotNull Unt...
method isInCombat (line 69) | boolean isInCombat(@NotNull Player player);
method getPlayerIdsInCombat (line 75) | @NotNull Set<UUID> getPlayerIdsInCombat();
method getPlayersInCombat (line 80) | @NotNull List<Player> getPlayersInCombat();
method getTagInformation (line 88) | @Nullable TagInformation getTagInformation(@NotNull Player player);
method getMaxTimerSeconds (line 96) | int getMaxTimerSeconds(@NotNull Player player);
method getBypassPermission (line 101) | @Nullable Permission getBypassPermission();
method canBypass (line 109) | boolean canBypass(@NotNull Player player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ICrystalManager.java
type ICrystalManager (line 13) | public interface ICrystalManager extends ICombatLogXNeeded {
method getPlacer (line 14) | @Nullable Player getPlacer(@NotNull Entity crystal);
method setPlacer (line 16) | void setPlacer(@NotNull Entity crystal, @NotNull Player player);
method remove (line 18) | void remove(@NotNull UUID crystalId);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IDeathManager.java
type IDeathManager (line 12) | public interface IDeathManager extends ICombatLogXNeeded {
method kill (line 19) | void kill(@NotNull Player player, @NotNull List<Entity> enemyList);
method wasPunishKilled (line 28) | boolean wasPunishKilled(@NotNull Player player);
method stopTracking (line 36) | boolean stopTracking(@NotNull Player player);
method getTrackedEnemies (line 42) | @NotNull List<Entity> getTrackedEnemies(@NotNull Player player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IForgiveManager.java
type IForgiveManager (line 11) | public interface IForgiveManager extends ICombatLogXNeeded {
method getToggleValue (line 12) | boolean getToggleValue(@NotNull OfflinePlayer player);
method setToggle (line 14) | void setToggle(@NotNull OfflinePlayer player, boolean value);
method getActiveRequest (line 16) | @Nullable CombatTag getActiveRequest(@NotNull OfflinePlayer player);
method setRequest (line 18) | void setRequest(@NotNull OfflinePlayer player, @NotNull CombatTag requ...
method removeRequest (line 20) | void removeRequest(@NotNull OfflinePlayer player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IPlaceholderManager.java
type IPlaceholderManager (line 15) | public interface IPlaceholderManager extends ICombatLogXNeeded {
method registerPlaceholderExpansion (line 16) | void registerPlaceholderExpansion(@NotNull IPlaceholderExpansion expan...
method getPlaceholderExpansion (line 18) | @Nullable IPlaceholderExpansion getPlaceholderExpansion(@NotNull Strin...
method getPlaceholderExpansions (line 20) | @NotNull List<IPlaceholderExpansion> getPlaceholderExpansions();
method getPlaceholderReplacement (line 22) | @Nullable String getPlaceholderReplacement(@NotNull Player player, @No...
method getPlaceholderReplacementComponent (line 25) | @Nullable Component getPlaceholderReplacementComponent(@NotNull Player...
method replaceAll (line 28) | @NotNull String replaceAll(@NotNull Player player, @NotNull List<Entit...
method runReplacedCommands (line 30) | void runReplacedCommands(@NotNull Player player, @NotNull List<Entity>...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IPunishManager.java
type IPunishManager (line 14) | public interface IPunishManager extends ICombatLogXNeeded {
method punish (line 24) | boolean punish(@NotNull Player player, @NotNull UntagReason punishReas...
method getPunishmentCount (line 33) | long getPunishmentCount(@NotNull OfflinePlayer player);
method resetPunishmentCount (line 35) | void resetPunishmentCount(@NotNull OfflinePlayer player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ITimerManager.java
type ITimerManager (line 12) | public interface ITimerManager extends ICombatLogXNeeded {
method getTimerUpdaters (line 16) | @NotNull Set<TimerUpdater> getTimerUpdaters();
method addUpdaterTask (line 23) | void addUpdaterTask(@NotNull TimerUpdater task);
method remove (line 30) | void remove(@NotNull Player player);
method register (line 35) | void register();
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/CitizensSlotType.java
type CitizensSlotType (line 10) | public enum CitizensSlotType {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/CombatTag.java
class CombatTag (line 11) | public final class CombatTag implements Comparable<CombatTag> {
method CombatTag (line 18) | public CombatTag(@Nullable Entity enemy, @NotNull TagType tagType, @No...
method getEnemyId (line 33) | public @Nullable UUID getEnemyId() {
method getEnemy (line 37) | public @Nullable Entity getEnemy() {
method doesEnemyMatch (line 45) | public boolean doesEnemyMatch(@NotNull Entity entity) {
method getTagType (line 50) | public @NotNull TagType getTagType() {
method getTagReason (line 54) | public @NotNull TagReason getTagReason() {
method getExpireMillis (line 58) | public long getExpireMillis() {
method isExpired (line 62) | public boolean isExpired() {
method compareTo (line 68) | @Override
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/KillTime.java
type KillTime (line 10) | public enum KillTime {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/NoEntryMode.java
type NoEntryMode (line 6) | public enum NoEntryMode {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/SpecialPunishCommand.java
class SpecialPunishCommand (line 15) | public final class SpecialPunishCommand implements IConfigurable {
method SpecialPunishCommand (line 22) | public SpecialPunishCommand(@NotNull String id) {
method getId (line 31) | public @NotNull String getId() {
method load (line 35) | @Override
method getAmountMin (line 45) | public int getAmountMin() {
method setAmountMin (line 49) | public void setAmountMin(int amountMin) {
method getAmountMax (line 53) | public int getAmountMax() {
method setAmountMax (line 57) | public void setAmountMax(int amountMax) {
method isReset (line 61) | public boolean isReset() {
method setReset (line 65) | public void setReset(boolean reset) {
method getCommands (line 69) | public @NotNull List<String> getCommands() {
method setCommands (line 73) | public void setCommands(@NotNull Collection<String> commands) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/TagInformation.java
class TagInformation (line 18) | public final class TagInformation {
method TagInformation (line 22) | public TagInformation(@NotNull OfflinePlayer player) {
method TagInformation (line 26) | public TagInformation(@NotNull UUID playerId) {
method getPlayerId (line 34) | public @NotNull UUID getPlayerId() {
method getOfflinePlayer (line 43) | public @Nullable OfflinePlayer getOfflinePlayer() {
method getPlayer (line 54) | public @Nullable Player getPlayer() {
method getTags (line 63) | public @NotNull List<CombatTag> getTags() {
method getEnemyIds (line 73) | public @NotNull List<UUID> getEnemyIds() {
method getEnemies (line 91) | public @NotNull List<Entity> getEnemies() {
method isEnemy (line 105) | public boolean isEnemy(@NotNull Entity entity) {
method addTag (line 116) | public void addTag(@NotNull CombatTag combatTag) {
method removeEnemy (line 129) | public void removeEnemy(@NotNull Entity entity) {
method getExpireMillisCombined (line 133) | public long getExpireMillisCombined() {
method getMillisLeftCombined (line 143) | public long getMillisLeftCombined() {
method isExpired (line 154) | public boolean isExpired() {
method getTagTypes (line 159) | public @NotNull List<TagType> getTagTypes() {
method getCurrentTagType (line 171) | public @NotNull TagType getCurrentTagType() {
method getCurrentEnemy (line 180) | public @Nullable Entity getCurrentEnemy() {
method getTagForEnemy (line 189) | public @Nullable CombatTag getTagForEnemy(Entity entity) {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/TagReason.java
type TagReason (line 6) | public enum TagReason {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/TagType.java
type TagType (line 6) | public enum TagType {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/TimerType.java
type TimerType (line 6) | public enum TimerType {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/TimerUpdater.java
type TimerUpdater (line 15) | public interface TimerUpdater {
method update (line 22) | void update(@NotNull Player player, long timeLeftMillis);
method remove (line 29) | void remove(@NotNull Player player);
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/object/UntagReason.java
type UntagReason (line 6) | public enum UntagReason {
method UntagReason (line 39) | UntagReason() {
method UntagReason (line 43) | UntagReason(boolean expire) {
method isExpire (line 47) | public boolean isExpire() {
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/placeholder/IPlaceholderExpansion.java
type IPlaceholderExpansion (line 27) | public interface IPlaceholderExpansion extends ICombatLogXNeeded {
method getId (line 28) | @NotNull String getId();
method getReplacementString (line 30) | default @Nullable String getReplacementString(@NotNull Player player, ...
method getReplacement (line 41) | @SuppressWarnings("UnnecessaryUnicodeEscape")
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/placeholder/PlaceholderHelper.java
class PlaceholderHelper (line 21) | public final class PlaceholderHelper {
method getEnemyName (line 22) | public static @NotNull Component getEnemyName(@NotNull ICombatLogX plu...
method getUnknownEnemy (line 41) | public static @NotNull Component getUnknownEnemy(@NotNull ICombatLogX ...
method replacePlaceholderAPI (line 46) | public static @NotNull String replacePlaceholderAPI(@NotNull Player pl...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/utility/CommandHelper.java
class CommandHelper (line 18) | public final class CommandHelper {
method runSync (line 19) | public static void runSync(@NotNull ICombatLogX plugin, @NotNull Runna...
method runAsConsole (line 26) | public static void runAsConsole(@NotNull ICombatLogX plugin, @NotNull ...
method runAsPlayer (line 39) | public static void runAsPlayer(@NotNull ICombatLogX plugin, @NotNull P...
method runAsOperator (line 52) | public static void runAsOperator(@NotNull ICombatLogX plugin, @NotNull...
FILE: api/src/main/java/com/github/sirblobman/combatlogx/api/utility/EntityHelper.java
class EntityHelper (line 16) | public final class EntityHelper {
method linkTNT (line 17) | public static @NotNull Entity linkTNT(@NotNull Entity original) {
method linkPet (line 27) | public static @NotNull Entity linkPet(@NotNull Entity original) {
method linkProjectile (line 41) | public static @NotNull Entity linkProjectile(@NotNull ICombatLogX plug...
method isNPC (line 59) | public static boolean isNPC(@NotNull Entity entity) {
method isProjectileIgnored (line 63) | private static boolean isProjectileIgnored(@NotNull ICombatLogX plugin...
FILE: expansion/action-bar/src/main/java/combatlogx/expansion/action/bar/ActionBarExpansion.java
class ActionBarExpansion (line 13) | public final class ActionBarExpansion extends Expansion {
method ActionBarExpansion (line 16) | public ActionBarExpansion(ICombatLogX plugin) {
method onLoad (line 21) | @Override
method onEnable (line 27) | @Override
method onDisable (line 44) | @Override
method reloadConfig (line 49) | @Override
method getConfiguration (line 56) | ActionBarConfiguration getConfiguration() {
FILE: expansion/action-bar/src/main/java/combatlogx/expansion/action/bar/ActionBarUpdater.java
class ActionBarUpdater (line 26) | public final class ActionBarUpdater implements TimerUpdater {
method ActionBarUpdater (line 29) | public ActionBarUpdater(ActionBarExpansion expansion) {
method getExpansion (line 33) | private ActionBarExpansion getExpansion() {
method getConfiguration (line 37) | private ActionBarConfiguration getConfiguration() {
method getCombatLogX (line 42) | private ICombatLogX getCombatLogX() {
method getLanguageManager (line 47) | private LanguageManager getLanguageManager() {
method getPlayerDataManager (line 52) | private PlayerDataManager getPlayerDataManager() {
method update (line 57) | @Override
method remove (line 66) | @Override
method isGlobalEnabled (line 71) | private boolean isGlobalEnabled() {
method isDisabled (line 76) | private boolean isDisabled(Player player) {
method sendActionBar (line 86) | private void sendActionBar(Player player, long timeLeftMillis) {
method getBarsReplacement (line 122) | private TextReplacementConfig getBarsReplacement(Player player, long t...
method getBars (line 129) | private Component getBars(Player player, long timeLeftMillis) {
method clamp (line 164) | private double clamp(double value) {
FILE: expansion/action-bar/src/main/java/combatlogx/expansion/action/bar/configuration/ActionBarConfiguration.java
class ActionBarConfiguration (line 11) | public final class ActionBarConfiguration implements IConfigurable {
method ActionBarConfiguration (line 23) | public ActionBarConfiguration() {
method load (line 32) | @Override
method isEnabled (line 42) | public boolean isEnabled() {
method setEnabled (line 46) | public void setEnabled(boolean enabled) {
method getScale (line 50) | public long getScale() {
method setScale (line 54) | public void setScale(long scale) {
method getLeftColorString (line 58) | public String getLeftColorString() {
method setLeftColorString (line 62) | public void setLeftColorString(@NotNull String leftColorString) {
method getRightColorString (line 67) | public @NotNull String getRightColorString() {
method setRightColorString (line 71) | public void setRightColorString(@NotNull String rightColorString) {
method getLeftSymbol (line 76) | public @NotNull String getLeftSymbol() {
method setLeftSymbol (line 80) | public void setLeftSymbol(@NotNull String leftSymbol) {
method getRightSymbol (line 84) | public @NotNull String getRightSymbol() {
method setRightSymbol (line 88) | public void setRightSymbol(@NotNull String rightSymbol) {
method getLeftColor (line 92) | public @NotNull TextColor getLeftColor() {
method getRightColor (line 101) | public @NotNull TextColor getRightColor() {
method parseTextColor (line 110) | private @NotNull TextColor parseTextColor(@NotNull String colorString,...
FILE: expansion/boss-bar/src/main/java/combatlogx/expansion/boss/bar/BossBarConfiguration.java
class BossBarConfiguration (line 12) | public final class BossBarConfiguration implements IConfigurable {
method BossBarConfiguration (line 28) | public BossBarConfiguration() {
method load (line 40) | @Override
method isEnabled (line 53) | public boolean isEnabled() {
method setEnabled (line 57) | public void setEnabled(boolean enabled) {
method getScale (line 61) | public long getScale() {
method setScale (line 65) | public void setScale(long scale) {
method getLeftColorString (line 69) | public String getLeftColorString() {
method setLeftColorString (line 73) | public void setLeftColorString(String leftColorString) {
method getRightColorString (line 78) | public String getRightColorString() {
method setRightColorString (line 82) | public void setRightColorString(String rightColorString) {
method getLeftSymbol (line 87) | public String getLeftSymbol() {
method setLeftSymbol (line 91) | public void setLeftSymbol(String leftSymbol) {
method getRightSymbol (line 95) | public String getRightSymbol() {
method setRightSymbol (line 99) | public void setRightSymbol(String rightSymbol) {
method getLeftColor (line 103) | @NotNull
method getRightColor (line 113) | @NotNull
method parseTextColor (line 123) | @NotNull
method getBossBarColorName (line 143) | public String getBossBarColorName() {
method setBossBarColorName (line 147) | public void setBossBarColorName(String bossBarColorName) {
method getBossBarStyleName (line 152) | public String getBossBarStyleName() {
method setBossBarStyleName (line 156) | public void setBossBarStyleName(String bossBarStyleName) {
method getBossBarColor (line 161) | @NotNull
method getBossBarStyle (line 171) | @NotNull
method parseBossBarColor (line 181) | private BossBar.Color parseBossBarColor(String name) {
method parseBossBarStyle (line 193) | private BossBar.Overlay parseBossBarStyle(String name) {
FILE: expansion/boss-bar/src/main/java/combatlogx/expansion/boss/bar/BossBarExpansion.java
class BossBarExpansion (line 12) | public final class BossBarExpansion extends Expansion {
method BossBarExpansion (line 15) | public BossBarExpansion(ICombatLogX plugin) {
method onLoad (line 20) | @Override
method onEnable (line 26) | @Override
method onDisable (line 33) | @Override
method reloadConfig (line 38) | @Override
method getConfiguration (line 48) | public @NotNull BossBarConfiguration getConfiguration() {
method getTimerManager (line 52) | private @NotNull ITimerManager getTimerManager() {
FILE: expansion/boss-bar/src/main/java/combatlogx/expansion/boss/bar/BossBarUpdater.java
class BossBarUpdater (line 39) | public final class BossBarUpdater implements TimerUpdater {
method BossBarUpdater (line 43) | public BossBarUpdater(BossBarExpansion expansion) {
method update (line 48) | @Override
method remove (line 75) | @Override
method getExpansion (line 98) | private BossBarExpansion getExpansion() {
method getCombatLogX (line 102) | private ICombatLogX getCombatLogX() {
method getLanguageManager (line 107) | private LanguageManager getLanguageManager() {
method getPlayerDataManager (line 112) | private PlayerDataManager getPlayerDataManager() {
method getCombatManager (line 117) | private ICombatManager getCombatManager() {
method isGlobalEnabled (line 122) | private boolean isGlobalEnabled() {
method isDisabled (line 127) | private boolean isDisabled(Player player) {
method getBossBar (line 137) | @Contract("_, true -> !null")
method getAudience (line 154) | private Audience getAudience(Player player) {
method actualRemove (line 159) | private void actualRemove(Player player) {
method getBossBarColor (line 172) | private Color getBossBarColor() {
method getBossBarOverlay (line 182) | private Overlay getBossBarOverlay() {
method getProgress (line 192) | private float getProgress(Player player, float timeLeftMillis) {
method getTitle (line 205) | private Component getTitle(Player player, long timeLeftMillis) {
method getBarsReplacement (line 240) | private TextReplacementConfig getBarsReplacement(Player player, long t...
method getConfiguration (line 247) | private BossBarConfiguration getConfiguration() {
method getBars (line 252) | private Component getBars(Player player, long timeLeftMillis) {
method clamp (line 287) | private double clamp(double value) {
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/ICheatPreventionExpansion.java
type ICheatPreventionExpansion (line 20) | public interface ICheatPreventionExpansion {
method getExpansion (line 21) | @NotNull Expansion getExpansion();
method getConfiguration (line 23) | @NotNull IConfiguration getConfiguration();
method getBlockConfiguration (line 25) | @NotNull IBlockConfiguration getBlockConfiguration();
method getBucketConfiguration (line 27) | @NotNull IBucketConfiguration getBucketConfiguration();
method getChatConfiguration (line 29) | @NotNull IChatConfiguration getChatConfiguration();
method getCommandConfiguration (line 31) | @NotNull ICommandConfiguration getCommandConfiguration();
method getEntityConfiguration (line 33) | @NotNull IEntityConfiguration getEntityConfiguration();
method getFlightConfiguration (line 35) | @NotNull IFlightConfiguration getFlightConfiguration();
method getGameModeConfiguration (line 37) | @NotNull IGameModeConfiguration getGameModeConfiguration();
method getInventoryConfiguration (line 39) | @NotNull IInventoryConfiguration getInventoryConfiguration();
method getItemConfiguration (line 41) | @NotNull IItemConfiguration getItemConfiguration();
method getPotionConfiguration (line 43) | @NotNull IPotionConfiguration getPotionConfiguration();
method getTeleportConfiguration (line 45) | @NotNull ITeleportConfiguration getTeleportConfiguration();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IBlockConfiguration.java
type IBlockConfiguration (line 8) | public interface IBlockConfiguration extends IConfigurable {
method isPreventInteraction (line 9) | boolean isPreventInteraction();
method isPreventBreaking (line 11) | boolean isPreventBreaking();
method isPreventPlacing (line 13) | boolean isPreventPlacing();
method isPreventPortalCreation (line 15) | boolean isPreventPortalCreation();
method isPreventInteraction (line 17) | boolean isPreventInteraction(@NotNull XMaterial blockType);
method isPreventBreaking (line 19) | boolean isPreventBreaking(@NotNull XMaterial blockType);
method isPreventPlacing (line 21) | boolean isPreventPlacing(@NotNull XMaterial blockType);
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IBucketConfiguration.java
type IBucketConfiguration (line 8) | public interface IBucketConfiguration extends IConfigurable {
method isPreventBucketEmpty (line 9) | boolean isPreventBucketEmpty();
method isPreventBucketFill (line 11) | boolean isPreventBucketFill();
method isPreventEmpty (line 13) | boolean isPreventEmpty(@NotNull XMaterial material);
method isPreventFill (line 15) | boolean isPreventFill(@NotNull XMaterial material);
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IChatConfiguration.java
type IChatConfiguration (line 5) | public interface IChatConfiguration extends IConfigurable {
method isDisableChat (line 6) | boolean isDisableChat();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ICommandConfiguration.java
type ICommandConfiguration (line 10) | public interface ICommandConfiguration extends IConfigurable {
method getDelayAfterCombat (line 11) | int getDelayAfterCombat();
method isBlocked (line 13) | boolean isBlocked(@NotNull String command);
method isAllowed (line 15) | boolean isAllowed(@NotNull String command);
method getBypassPermission (line 17) | @Nullable Permission getBypassPermission();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IConfiguration.java
type IConfiguration (line 5) | public interface IConfiguration extends IConfigurable {
method getMessageCooldown (line 6) | int getMessageCooldown();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IEntityConfiguration.java
type IEntityConfiguration (line 5) | public interface IEntityConfiguration extends IConfigurable {
method isPreventInteraction (line 6) | boolean isPreventInteraction();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IFlightConfiguration.java
type IFlightConfiguration (line 5) | public interface IFlightConfiguration extends IConfigurable {
method isPreventFlying (line 6) | boolean isPreventFlying();
method isPreventFallDamage (line 8) | boolean isPreventFallDamage();
method isForceDisableFlight (line 10) | boolean isForceDisableFlight();
method isFlightRetag (line 12) | boolean isFlightRetag();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IGameModeConfiguration.java
type IGameModeConfiguration (line 7) | public interface IGameModeConfiguration extends IConfigurable {
method isPreventSwitching (line 8) | boolean isPreventSwitching();
method isUntagOnSwitch (line 10) | boolean isUntagOnSwitch();
method isForceSwitch (line 12) | boolean isForceSwitch();
method getForceMode (line 14) | GameMode getForceMode();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IInventoryConfiguration.java
type IInventoryConfiguration (line 9) | public interface IInventoryConfiguration extends IConfigurable {
method isClose (line 10) | boolean isClose();
method isCloseOnRetag (line 12) | boolean isCloseOnRetag();
method isPreventOpening (line 14) | boolean isPreventOpening();
method isNoMessage (line 16) | boolean isNoMessage(@NotNull InventoryType type);
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IItemConfiguration.java
type IItemConfiguration (line 5) | public interface IItemConfiguration extends IConfigurable {
method isPreventDrop (line 6) | boolean isPreventDrop();
method isPreventPickup (line 8) | boolean isPreventPickup();
method isPreventElytra (line 10) | boolean isPreventElytra();
method isForcePreventElytra (line 12) | boolean isForcePreventElytra();
method isPreventFireworks (line 14) | boolean isPreventFireworks();
method isElytraRetag (line 16) | boolean isElytraRetag();
method isPreventTotem (line 18) | boolean isPreventTotem();
method isPreventRiptide (line 20) | boolean isPreventRiptide();
method isRiptideRetag (line 22) | boolean isRiptideRetag();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IPotionConfiguration.java
type IPotionConfiguration (line 9) | public interface IPotionConfiguration extends IConfigurable {
method isBlocked (line 10) | boolean isBlocked(@NotNull PotionEffectType effectType);
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ITeleportConfiguration.java
type ITeleportConfiguration (line 9) | public interface ITeleportConfiguration extends IConfigurable {
method isPreventPortals (line 10) | boolean isPreventPortals();
method isPreventTeleportation (line 12) | boolean isPreventTeleportation();
method isEnderPearlRetag (line 14) | boolean isEnderPearlRetag();
method isUntag (line 16) | boolean isUntag();
method isAllowed (line 18) | boolean isAllowed(@NotNull TeleportCause cause);
method isForceDisableEnderPearl (line 20) | boolean isForceDisableEnderPearl();
FILE: expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/listener/CheatPreventionListener.java
class CheatPreventionListener (line 20) | public abstract class CheatPreventionListener extends ExpansionListener {
method CheatPreventionListener (line 24) | public CheatPreventionListener(@NotNull ICheatPreventionExpansion expa...
method getCheatPrevention (line 30) | protected final @NotNull ICheatPreventionExpansion getCheatPrevention() {
method sendMessageIgnoreCooldown (line 34) | protected final void sendMessageIgnoreCooldown(@NotNull Player player,...
method sendMessage (line 41) | protected final void sendMessage(@NotNull Player player, @NotNull Stri...
method getNewMessageCooldownExpireTime (line 51) | private long getNewMessageCooldownExpireTime() {
method getCooldownExpireTime (line 61) | private long getCooldownExpireTime(Player player, String key) {
method addMessageCooldown (line 67) | private void addMessageCooldown(Player player, String key) {
FILE: expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerChat.java
class ListenerChat (line 14) | public final class ListenerChat extends CheatPreventionListener {
method ListenerChat (line 15) | public ListenerChat(@NotNull ICheatPreventionExpansion expansion) {
method onChat (line 19) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getChatConfiguration (line 32) | private @NotNull IChatConfiguration getChatConfiguration() {
method isChatDisabled (line 37) | private boolean isChatDisabled() {
FILE: expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerLegacyItemPickup.java
class ListenerLegacyItemPickup (line 14) | public final class ListenerLegacyItemPickup extends CheatPreventionListe...
method ListenerLegacyItemPickup (line 15) | public ListenerLegacyItemPickup(@NotNull ICheatPreventionExpansion exp...
method onPickup (line 19) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getItemConfiguration (line 32) | private @NotNull IItemConfiguration getItemConfiguration() {
method isPreventPickup (line 37) | private boolean isPreventPickup() {
FILE: expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerLegacyPortalCreate.java
class ListenerLegacyPortalCreate (line 15) | public final class ListenerLegacyPortalCreate extends CheatPreventionLis...
method ListenerLegacyPortalCreate (line 16) | public ListenerLegacyPortalCreate(@NotNull ICheatPreventionExpansion e...
method onPortalCreate (line 20) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getBlockConfiguration (line 34) | private @NotNull IBlockConfiguration getBlockConfiguration() {
method isPreventPortalCreation (line 39) | private boolean isPreventPortalCreation() {
FILE: expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerLegacyPotions.java
class ListenerLegacyPotions (line 26) | public final class ListenerLegacyPotions extends CheatPreventionListener {
method ListenerLegacyPotions (line 27) | public ListenerLegacyPotions(@NotNull ICheatPreventionExpansion expans...
method onTag (line 31) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onSplash (line 43) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onPotionConsume (line 71) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getPotionConfiguration (line 95) | private @NotNull IPotionConfiguration getPotionConfiguration() {
method isBlocked (line 100) | private boolean isBlocked(@NotNull PotionEffectType effectType) {
FILE: expansion/cheat-prevention/modern/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerInventoriesModern.java
class ListenerInventoriesModern (line 22) | public final class ListenerInventoriesModern extends CheatPreventionList...
method ListenerInventoriesModern (line 23) | public ListenerInventoriesModern(@NotNull ICheatPreventionExpansion ex...
method onTag (line 27) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onReTag (line 41) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onOpen (line 55) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getInventoryConfiguration (line 69) | private @NotNull IInventoryConfiguration getInventoryConfiguration() {
method isClose (line 74) | private boolean isClose() {
method isCloseOnRetag (line 79) | private boolean isCloseOnRetag() {
method isPreventOpening (line 84) | private boolean isPreventOpening() {
method isMessage (line 89) | private boolean isMessage(@NotNull InventoryType type) {
FILE: expansion/cheat-prevention/paper/src/main/java/combatlogx/expansion/cheat/prevention/listener/paper/ListenerPaperChat.java
class ListenerPaperChat (line 14) | public final class ListenerPaperChat extends CheatPreventionListener {
method ListenerPaperChat (line 15) | public ListenerPaperChat(@NotNull ICheatPreventionExpansion expansion) {
method onChat (line 19) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getChatConfiguration (line 28) | private @NotNull IChatConfiguration getChatConfiguration() {
method isChatDisabled (line 33) | private boolean isChatDisabled() {
FILE: expansion/cheat-prevention/paper/src/main/java/combatlogx/expansion/cheat/prevention/listener/paper/ListenerPaperEntityInsideBlock.java
class ListenerPaperEntityInsideBlock (line 17) | public final class ListenerPaperEntityInsideBlock extends CheatPreventio...
method ListenerPaperEntityInsideBlock (line 18) | public ListenerPaperEntityInsideBlock(@NotNull ICheatPreventionExpansi...
method onEntityInsideBlock (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method check (line 35) | private void check(@NotNull Player player, @NotNull EntityInsideBlockE...
method getTeleportationConfiguration (line 47) | private @NotNull ITeleportConfiguration getTeleportationConfiguration() {
method isPreventPortals (line 52) | private boolean isPreventPortals() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/CheatPreventionExpansion.java
class CheatPreventionExpansion (line 50) | public final class CheatPreventionExpansion extends Expansion implements...
method CheatPreventionExpansion (line 64) | public CheatPreventionExpansion(ICombatLogX plugin) {
method onLoad (line 80) | @Override
method onEnable (line 97) | @Override
method onDisable (line 110) | @Override
method reloadConfig (line 115) | @Override
method getExpansion (line 145) | @Override
method getConfiguration (line 150) | @Override
method getBlockConfiguration (line 155) | @Override
method getBucketConfiguration (line 160) | @Override
method getChatConfiguration (line 165) | @Override
method getCommandConfiguration (line 170) | @Override
method getEntityConfiguration (line 175) | @Override
method getFlightConfiguration (line 180) | @Override
method getGameModeConfiguration (line 185) | @Override
method getInventoryConfiguration (line 190) | @Override
method getItemConfiguration (line 195) | @Override
method getPotionConfiguration (line 200) | @Override
method getTeleportConfiguration (line 205) | @Override
method registerListeners (line 210) | private void registerListeners() {
method registerVersionListeners (line 222) | private void registerVersionListeners(int minorVersion) {
method isAbstractInventoryView (line 267) | private boolean isAbstractInventoryView() {
method registerTasks (line 277) | private void registerTasks() {
method registerVersionTasks (line 281) | private void registerVersionTasks(int minorVersion) {
method registerPaperListeners (line 289) | private void registerPaperListeners() {
method checkPaperClass (line 301) | private boolean checkPaperClass(String className) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/BlockConfiguration.java
class BlockConfiguration (line 16) | public final class BlockConfiguration implements IBlockConfiguration {
method BlockConfiguration (line 25) | public BlockConfiguration() {
method load (line 36) | @Override
method isPreventInteraction (line 48) | @Override
method setPreventInteraction (line 53) | public void setPreventInteraction(boolean value) {
method isPreventBreaking (line 57) | @Override
method setPreventBreaking (line 62) | public void setPreventBreaking(boolean value) {
method isPreventPlacing (line 66) | @Override
method setPreventPlacing (line 71) | public void setPreventPlacing(boolean value) {
method isPreventPortalCreation (line 75) | @Override
method setPreventPortalCreation (line 80) | public void setPreventPortalCreation(boolean value) {
method getPreventInteractionTypes (line 84) | public @NotNull Set<XMaterial> getPreventInteractionTypes() {
method setPreventInteractionTypes (line 88) | public void setPreventInteractionTypes(@NotNull Collection<XMaterial> ...
method getPreventBreakingTypes (line 93) | public @NotNull Set<XMaterial> getPreventBreakingTypes() {
method setPreventBreakingTypes (line 97) | public void setPreventBreakingTypes(@NotNull Collection<XMaterial> typ...
method getPreventPlacingTypes (line 102) | public @NotNull Set<XMaterial> getPreventPlacingTypes() {
method setPreventPlacingTypes (line 106) | public void setPreventPlacingTypes(@NotNull Collection<XMaterial> type...
method isPreventInteraction (line 111) | @Override
method isPreventBreaking (line 117) | @Override
method isPreventPlacing (line 123) | @Override
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/BucketConfiguration.java
class BucketConfiguration (line 16) | public final class BucketConfiguration implements IBucketConfiguration {
method BucketConfiguration (line 22) | public BucketConfiguration() {
method load (line 29) | @Override
method isPreventBucketEmpty (line 38) | @Override
method setPreventBucketEmpty (line 43) | public void setPreventBucketEmpty(boolean value) {
method isPreventBucketFill (line 47) | @Override
method setPreventBucketFill (line 52) | public void setPreventBucketFill(boolean value) {
method getPreventBucketEmptyTypes (line 56) | public @NotNull Set<XMaterial> getPreventBucketEmptyTypes() {
method setPreventBucketEmptyTypes (line 60) | public void setPreventBucketEmptyTypes(@NotNull Collection<XMaterial> ...
method getPreventBucketFillTypes (line 65) | public @NotNull Set<XMaterial> getPreventBucketFillTypes() {
method setPreventBucketFillTypes (line 69) | public void setPreventBucketFillTypes(@NotNull Collection<XMaterial> t...
method isPreventEmpty (line 74) | @Override
method isPreventFill (line 80) | @Override
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ChatConfiguration.java
class ChatConfiguration (line 5) | public final class ChatConfiguration implements IChatConfiguration {
method ChatConfiguration (line 8) | public ChatConfiguration() {
method load (line 12) | @Override
method isDisableChat (line 17) | @Override
method setDisableChat (line 22) | public void setDisableChat(boolean disableChat) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/CheatPreventionConfiguration.java
class CheatPreventionConfiguration (line 5) | public final class CheatPreventionConfiguration implements IConfiguration {
method CheatPreventionConfiguration (line 8) | public CheatPreventionConfiguration() {
method load (line 12) | @Override
method getMessageCooldown (line 17) | @Override
method setMessageCooldown (line 22) | public void setMessageCooldown(int messageCooldown) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/CommandConfiguration.java
class CommandConfiguration (line 16) | public final class CommandConfiguration implements ICommandConfiguration {
method CommandConfiguration (line 23) | public CommandConfiguration() {
method load (line 31) | @Override
method getDelayAfterCombat (line 39) | @Override
method setDelayAfterCombat (line 44) | public void setDelayAfterCombat(int delay) {
method getBypassPermissionName (line 48) | public @Nullable String getBypassPermissionName() {
method setBypassPermissionName (line 52) | public void setBypassPermissionName(@Nullable String permissionName) {
method getBypassPermission (line 57) | @Override
method getAllowedCommands (line 73) | public @NotNull List<String> getAllowedCommands() {
method setAllowedCommands (line 77) | public void setAllowedCommands(@NotNull Collection<String> commands) {
method isAllowed (line 82) | @Override
method getBlockedCommands (line 105) | public @NotNull List<String> getBlockedCommands() {
method setBlockedCommands (line 109) | public void setBlockedCommands(@NotNull Collection<String> commands) {
method isBlocked (line 114) | @Override
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/EntityConfiguration.java
class EntityConfiguration (line 5) | public final class EntityConfiguration implements IEntityConfiguration {
method EntityConfiguration (line 8) | public EntityConfiguration() {
method load (line 12) | @Override
method isPreventInteraction (line 17) | @Override
method setPreventInteraction (line 22) | public void setPreventInteraction(boolean value) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/FlightConfiguration.java
class FlightConfiguration (line 5) | public final class FlightConfiguration implements IFlightConfiguration {
method FlightConfiguration (line 11) | public FlightConfiguration() {
method load (line 18) | @Override
method isPreventFlying (line 26) | @Override
method setPreventFlying (line 31) | public void setPreventFlying(boolean preventFlying) {
method isPreventFallDamage (line 35) | @Override
method setPreventFallDamage (line 40) | public void setPreventFallDamage(boolean preventFallDamage) {
method isForceDisableFlight (line 44) | @Override
method setForceDisableFlight (line 49) | public void setForceDisableFlight(boolean forceDisableFlight) {
method isFlightRetag (line 53) | @Override
method setFlightRetag (line 58) | public void setFlightRetag(boolean flightRetag) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/GameModeConfiguration.java
class GameModeConfiguration (line 10) | public final class GameModeConfiguration implements IGameModeConfigurati...
method GameModeConfiguration (line 16) | public GameModeConfiguration() {
method load (line 23) | @Override
method isPreventSwitching (line 33) | @Override
method setPreventSwitching (line 38) | public void setPreventSwitching(boolean preventSwitching) {
method isUntagOnSwitch (line 42) | @Override
method setUntagOnSwitch (line 47) | public void setUntagOnSwitch(boolean untagOnSwitch) {
method isForceSwitch (line 51) | @Override
method setForceSwitch (line 56) | public void setForceSwitch(boolean forceSwitch) {
method getForceMode (line 60) | @Override
method setForceMode (line 65) | public void setForceMode(@NotNull GameMode forceMode) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/InventoryConfiguration.java
class InventoryConfiguration (line 16) | public final class InventoryConfiguration implements IInventoryConfigura...
method InventoryConfiguration (line 22) | public InventoryConfiguration() {
method load (line 29) | @Override
method isClose (line 39) | @Override
method setClose (line 44) | public void setClose(boolean close) {
method isCloseOnRetag (line 48) | @Override
method setCloseOnRetag (line 53) | public void setCloseOnRetag(boolean closeOnRetag) {
method isPreventOpening (line 57) | @Override
method setPreventOpening (line 62) | public void setPreventOpening(boolean preventOpening) {
method getNoCloseMessageTypes (line 66) | public @NotNull Set<InventoryType> getNoCloseMessageTypes() {
method setNoCloseMessageTypes (line 70) | public void setNoCloseMessageTypes(@NotNull Collection<InventoryType> ...
method isNoMessage (line 75) | @Override
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ItemConfiguration.java
class ItemConfiguration (line 5) | public final class ItemConfiguration implements IItemConfiguration {
method ItemConfiguration (line 16) | public ItemConfiguration() {
method load (line 28) | @Override
method isPreventDrop (line 41) | @Override
method setPreventDrop (line 46) | public void setPreventDrop(boolean preventDrop) {
method isPreventPickup (line 50) | @Override
method setPreventPickup (line 55) | public void setPreventPickup(boolean preventPickup) {
method isPreventElytra (line 59) | @Override
method setPreventElytra (line 64) | public void setPreventElytra(boolean preventElytra) {
method isForcePreventElytra (line 68) | @Override
method setForcePreventElytra (line 73) | public void setForcePreventElytra(boolean forcePreventElytra) {
method isElytraRetag (line 77) | @Override
method setElytraRetag (line 82) | public void setElytraRetag(boolean elytraRetag) {
method isPreventTotem (line 86) | @Override
method setPreventTotem (line 91) | public void setPreventTotem(boolean preventTotem) {
method isPreventRiptide (line 95) | @Override
method setPreventRiptide (line 100) | public void setPreventRiptide(boolean preventRiptide) {
method isRiptideRetag (line 104) | @Override
method setRiptideRetag (line 109) | public void setRiptideRetag(boolean riptideRetag) {
method isPreventFireworks (line 113) | @Override
method setPreventFireworks (line 118) | public void setPreventFireworks(boolean preventFireworks) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/PotionConfiguration.java
class PotionConfiguration (line 15) | public final class PotionConfiguration implements IPotionConfiguration {
method PotionConfiguration (line 19) | public PotionConfiguration() {
method load (line 24) | @Override
method isBlockedPotionTypeSetInverted (line 40) | public boolean isBlockedPotionTypeSetInverted() {
method setBlockedPotionTypeSetInverted (line 44) | public void setBlockedPotionTypeSetInverted(boolean blockedPotionTypeS...
method getBlockedPotionTypes (line 48) | public @NotNull Set<PotionEffectType> getBlockedPotionTypes() {
method setBlockedPotionTypes (line 52) | public void setBlockedPotionTypes(@NotNull Collection<PotionEffectType...
method isBlocked (line 57) | @Override
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/TeleportConfiguration.java
class TeleportConfiguration (line 16) | public final class TeleportConfiguration implements ITeleportConfigurati...
method TeleportConfiguration (line 24) | public TeleportConfiguration() {
method load (line 33) | @Override
method isPreventPortals (line 45) | @Override
method setPreventPortals (line 50) | public void setPreventPortals(boolean preventPortals) {
method isPreventTeleportation (line 54) | @Override
method setPreventTeleportation (line 59) | public void setPreventTeleportation(boolean preventTeleportation) {
method isEnderPearlRetag (line 63) | @Override
method setEnderPearlRetag (line 68) | public void setEnderPearlRetag(boolean enderPearlRetag) {
method isUntag (line 72) | @Override
method setUntag (line 77) | public void setUntag(boolean untag) {
method getAllowedTeleportCauses (line 81) | public @NotNull Set<TeleportCause> getAllowedTeleportCauses() {
method setAllowedTeleportCauses (line 85) | public void setAllowedTeleportCauses(@NotNull Collection<TeleportCause...
method isAllowed (line 90) | @Override
method isForceDisableEnderPearl (line 96) | @Override
method setForceDisableEnderPearl (line 101) | public void setForceDisableEnderPearl(boolean forceDisableEnderPearl) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerBlocks.java
class ListenerBlocks (line 23) | public final class ListenerBlocks extends CheatPreventionListener {
method ListenerBlocks (line 24) | public ListenerBlocks(@NotNull ICheatPreventionExpansion expansion) {
method onInteract (line 28) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onBreak (line 47) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onPlace (line 58) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getBlockConfiguration (line 69) | private @NotNull IBlockConfiguration getBlockConfiguration() {
method isPreventBreak (line 74) | private boolean isPreventBreak(@NotNull XMaterial material) {
method isPreventPlace (line 83) | private boolean isPreventPlace(@NotNull XMaterial material) {
method isPreventInteract (line 92) | private boolean isPreventInteract(@NotNull XMaterial material) {
method fetchMaterial (line 101) | @SuppressWarnings("deprecation")
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerBuckets.java
class ListenerBuckets (line 17) | public final class ListenerBuckets extends CheatPreventionListener {
method ListenerBuckets (line 18) | public ListenerBuckets(@NotNull ICheatPreventionExpansion expansion) {
method onBucketEmpty (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onBucketEmpty (line 34) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getBucketConfiguration (line 46) | private @NotNull IBucketConfiguration getBucketConfiguration() {
method isPreventEmpty (line 51) | private boolean isPreventEmpty(@NotNull XMaterial material) {
method isPreventFill (line 56) | private boolean isPreventFill(@NotNull XMaterial material) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerCommands.java
class ListenerCommands (line 24) | public final class ListenerCommands extends CheatPreventionListener {
method ListenerCommands (line 27) | public ListenerCommands(@NotNull ICheatPreventionExpansion expansion) {
method beforeCommandLowest (line 32) | @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
method beforeCommandHigh (line 37) | @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
method onUntag (line 42) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method getCommandConfiguration (line 53) | private @NotNull ICommandConfiguration getCommandConfiguration() {
method hasBypassPermission (line 58) | private boolean hasBypassPermission(Player player) {
method getNewExpireTime (line 68) | private long getNewExpireTime() {
method isInCooldown (line 77) | private boolean isInCooldown(Player player) {
method addCooldown (line 93) | private void addCooldown(Player player) {
method fixCommand (line 99) | private String fixCommand(String command) {
method isBlocked (line 107) | private boolean isBlocked(String command) {
method isAllowed (line 112) | private boolean isAllowed(String command) {
method checkEvent (line 117) | private void checkEvent(PlayerCommandPreprocessEvent e) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerDrop.java
class ListenerDrop (line 13) | public final class ListenerDrop extends CheatPreventionListener {
method ListenerDrop (line 14) | public ListenerDrop(@NotNull ICheatPreventionExpansion expansion) {
method onDrop (line 18) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getItemConfiguration (line 27) | private @NotNull IItemConfiguration getItemConfiguration() {
method isPreventDrop (line 32) | private boolean isPreventDrop() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerElytra.java
class ListenerElytra (line 20) | public final class ListenerElytra extends CheatPreventionListener {
method ListenerElytra (line 21) | public ListenerElytra(@NotNull ICheatPreventionExpansion expansion) {
method onTag (line 25) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onToggle (line 34) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onLaunch (line 51) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getItemConfiguration (line 67) | private @NotNull IItemConfiguration getItemConfiguration() {
method isPreventElytra (line 72) | private boolean isPreventElytra() {
method isForcePreventElytra (line 76) | private boolean isForcePreventElytra() {
method isPreventFireworks (line 80) | private boolean isPreventFireworks() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerEnderPearl.java
class ListenerEnderPearl (line 14) | public final class ListenerEnderPearl extends CheatPreventionListener {
method ListenerEnderPearl (line 15) | public ListenerEnderPearl(@NotNull ICheatPreventionExpansion expansion) {
method onLand (line 19) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerEntities.java
class ListenerEntities (line 13) | public final class ListenerEntities extends CheatPreventionListener {
method ListenerEntities (line 14) | public ListenerEntities(@NotNull ICheatPreventionExpansion expansion) {
method onInteract (line 18) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getEntityConfiguration (line 27) | private @NotNull IEntityConfiguration getEntityConfiguration() {
method isPreventInteraction (line 32) | private boolean isPreventInteraction() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerFlight.java
class ListenerFlight (line 22) | public final class ListenerFlight extends CheatPreventionListener {
method ListenerFlight (line 25) | public ListenerFlight(@NotNull ICheatPreventionExpansion expansion) {
method onTag (line 30) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onToggle (line 42) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onDamage (line 51) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getFlightConfiguration (line 70) | private @NotNull IFlightConfiguration getFlightConfiguration() {
method isPreventFlight (line 75) | private boolean isPreventFlight() {
method isForceDisableFlight (line 80) | private boolean isForceDisableFlight() {
method isPreventFallDamage (line 85) | private boolean isPreventFallDamage() {
method checkFlight (line 90) | private void checkFlight(Player player) {
method checkAllowFlight (line 103) | private void checkAllowFlight(Player player) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerGameMode.java
class ListenerGameMode (line 20) | public final class ListenerGameMode extends CheatPreventionListener {
method ListenerGameMode (line 21) | public ListenerGameMode(@NotNull ICheatPreventionExpansion expansion) {
method onSwitch (line 25) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onTag (line 45) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method checkUntag (line 58) | private void checkUntag(@NotNull Player player) {
method getGameModeConfiguration (line 65) | private @NotNull IGameModeConfiguration getGameModeConfiguration() {
method isPreventSwitching (line 70) | private boolean isPreventSwitching() {
method isForceSwitch (line 75) | private boolean isForceSwitch() {
method isUntagOnSwitch (line 80) | private boolean isUntagOnSwitch() {
method getForceSwitchMode (line 85) | private @NotNull GameMode getForceSwitchMode() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerInventories.java
class ListenerInventories (line 19) | public final class ListenerInventories extends CheatPreventionListener {
method ListenerInventories (line 20) | public ListenerInventories(@NotNull ICheatPreventionExpansion expansio...
method onTag (line 24) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onReTag (line 38) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onOpen (line 52) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getInventoryConfiguration (line 66) | private @NotNull IInventoryConfiguration getInventoryConfiguration() {
method isClose (line 71) | private boolean isClose() {
method isCloseOnRetag (line 76) | private boolean isCloseOnRetag() {
method isPreventOpening (line 81) | private boolean isPreventOpening() {
method isMessage (line 86) | private boolean isMessage(@NotNull InventoryType type) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerRiptide.java
class ListenerRiptide (line 17) | public final class ListenerRiptide extends CheatPreventionListener {
method ListenerRiptide (line 18) | public ListenerRiptide(@NotNull ICheatPreventionExpansion expansion) {
method onMove (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getItemConfiguration (line 44) | private @NotNull IItemConfiguration getItemConfiguration() {
method isPreventRiptide (line 49) | private boolean isPreventRiptide() {
method isRiptideRetag (line 54) | private boolean isRiptideRetag() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerTeleport.java
class ListenerTeleport (line 20) | public final class ListenerTeleport extends CheatPreventionListener {
method ListenerTeleport (line 21) | public ListenerTeleport(@NotNull ICheatPreventionExpansion expansion) {
method onTeleport (line 25) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onPortal (line 35) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method checkPrevention (line 44) | private void checkPrevention(PlayerTeleportEvent e) {
method checkEnderPearlRetag (line 67) | private void checkEnderPearlRetag(PlayerTeleportEvent e) {
method checkUntag (line 82) | private void checkUntag(PlayerTeleportEvent e) {
method getMessagePath (line 97) | private String getMessagePath(TeleportCause cause) {
method getTeleportConfiguration (line 103) | private @NotNull ITeleportConfiguration getTeleportConfiguration() {
method isPreventTeleportation (line 108) | private boolean isPreventTeleportation() {
method isPreventPortals (line 113) | private boolean isPreventPortals() {
method isEnderPearlRetag (line 118) | private boolean isEnderPearlRetag() {
method isUntag (line 123) | private boolean isUntag() {
method isAllowed (line 128) | private boolean isAllowed(@NotNull TeleportCause cause) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerTotem.java
class ListenerTotem (line 14) | public final class ListenerTotem extends CheatPreventionListener {
method ListenerTotem (line 15) | public ListenerTotem(@NotNull ICheatPreventionExpansion expansion) {
method onResurrect (line 19) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method getItemConfiguration (line 33) | private @NotNull IItemConfiguration getItemConfiguration() {
method isPreventTotem (line 38) | private boolean isPreventTotem() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerModernItemPickup.java
class ListenerModernItemPickup (line 15) | public final class ListenerModernItemPickup extends CheatPreventionListe...
method ListenerModernItemPickup (line 16) | public ListenerModernItemPickup(@NotNull ICheatPreventionExpansion exp...
method onPickup (line 20) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getItemConfiguration (line 34) | private @NotNull IItemConfiguration getItemConfiguration() {
method isPreventPickup (line 39) | private boolean isPreventPickup() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerModernPortalCreate.java
class ListenerModernPortalCreate (line 15) | public final class ListenerModernPortalCreate extends CheatPreventionLis...
method ListenerModernPortalCreate (line 16) | public ListenerModernPortalCreate(@NotNull ICheatPreventionExpansion e...
method onPortalCreate (line 20) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getBlockConfiguration (line 34) | private @NotNull IBlockConfiguration getBlockConfiguration() {
method isPreventPortalCreation (line 39) | private boolean isPreventPortalCreation() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerModernPotions.java
class ListenerModernPotions (line 22) | public class ListenerModernPotions extends CheatPreventionListener {
method ListenerModernPotions (line 23) | public ListenerModernPotions(@NotNull ICheatPreventionExpansion expans...
method onTag (line 27) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onAddEffect (line 39) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getPotionConfiguration (line 62) | private @NotNull IPotionConfiguration getPotionConfiguration() {
method isBlocked (line 67) | private boolean isBlocked(@NotNull PotionEffectType effectType) {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/task/ElytraRetagTask.java
class ElytraRetagTask (line 21) | public final class ElytraRetagTask extends TaskDetails {
method ElytraRetagTask (line 24) | public ElytraRetagTask(@NotNull ICheatPreventionExpansion expansion) {
method run (line 29) | @Override
method run0 (line 37) | private void run0() {
method register (line 48) | public void register() {
method getCheatPrevention (line 55) | private @NotNull ICheatPreventionExpansion getCheatPrevention() {
method getItemConfiguration (line 59) | private @NotNull IItemConfiguration getItemConfiguration() {
method getExpansion (line 64) | private @NotNull Expansion getExpansion() {
method getCombatLogX (line 69) | private @NotNull ICombatLogX getCombatLogX() {
FILE: expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/task/FlightRetagTask.java
class FlightRetagTask (line 20) | public final class FlightRetagTask extends TaskDetails {
method FlightRetagTask (line 23) | public FlightRetagTask(@NotNull ICheatPreventionExpansion expansion) {
method run (line 28) | @Override
method run0 (line 36) | private void run0() {
method register (line 47) | public void register() {
method getCheatPrevention (line 54) | private @NotNull ICheatPreventionExpansion getCheatPrevention() {
method getFlightConfiguration (line 58) | private @NotNull IFlightConfiguration getFlightConfiguration() {
method getExpansion (line 63) | private @NotNull Expansion getExpansion() {
method getCombatLogX (line 68) | private @NotNull ICombatLogX getCombatLogX() {
FILE: expansion/compatibility/ASkyBlock/src/main/java/combatlogx/expansion/compatibility/askyblock/ASkyBlockExpansion.java
class ASkyBlockExpansion (line 8) | public final class ASkyBlockExpansion extends Expansion {
method ASkyBlockExpansion (line 9) | public ASkyBlockExpansion(ICombatLogX plugin) {
method onLoad (line 13) | @Override
method onEnable (line 18) | @Override
method onDisable (line 27) | @Override
method reloadConfig (line 32) | @Override
FILE: expansion/compatibility/ASkyBlock/src/main/java/combatlogx/expansion/compatibility/askyblock/listener/ListenerASkyBlock.java
class ListenerASkyBlock (line 20) | public final class ListenerASkyBlock extends ExpansionListener {
method ListenerASkyBlock (line 21) | public ListenerASkyBlock(Expansion expansion) {
method beforeTag (line 25) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getIsland (line 39) | @Nullable
method doesTeamMatch (line 50) | private boolean doesTeamMatch(Player player1, Player player2) {
FILE: expansion/compatibility/AngelChest/src/main/java/combatlogx/expansion/compatibility/angelchest/AngelChestConfiguration.java
class AngelChestConfiguration (line 9) | public class AngelChestConfiguration implements IConfigurable {
method AngelChestConfiguration (line 14) | public AngelChestConfiguration() {
method load (line 20) | @Override
method isPreventBreaking (line 27) | public boolean isPreventBreaking() {
method setPreventBreaking (line 31) | public void setPreventBreaking(boolean preventBreaking) {
method isPreventOpening (line 35) | public boolean isPreventOpening() {
method setPreventOpening (line 39) | public void setPreventOpening(boolean preventOpening) {
method isPreventFastLooting (line 43) | public boolean isPreventFastLooting() {
method setPreventFastLooting (line 47) | public void setPreventFastLooting(boolean preventFastLooting) {
FILE: expansion/compatibility/AngelChest/src/main/java/combatlogx/expansion/compatibility/angelchest/AngelChestExpansion.java
class AngelChestExpansion (line 9) | public final class AngelChestExpansion extends Expansion {
method AngelChestExpansion (line 12) | public AngelChestExpansion(ICombatLogX plugin) {
method onLoad (line 17) | @Override
method onEnable (line 23) | @Override
method onDisable (line 34) | @Override
method reloadConfig (line 39) | @Override
method getConfiguration (line 46) | public @NotNull AngelChestConfiguration getConfiguration() {
FILE: expansion/compatibility/AngelChest/src/main/java/combatlogx/expansion/compatibility/angelchest/ListenerAngelChest.java
class ListenerAngelChest (line 16) | public final class ListenerAngelChest extends ExpansionListener {
method ListenerAngelChest (line 19) | public ListenerAngelChest(@NotNull AngelChestExpansion expansion) {
method onAngelChestOpen (line 24) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getAngelChestExpansion (line 47) | private @NotNull AngelChestExpansion getAngelChestExpansion() {
method getConfiguration (line 51) | private @NotNull AngelChestConfiguration getConfiguration() {
method checkBreaking (line 56) | private void checkBreaking(Player player, Cancellable e) {
method checkOpening (line 65) | private void checkOpening(Player player, Cancellable e) {
method checkFastLooting (line 74) | private void checkFastLooting(Player player, Cancellable e) {
FILE: expansion/compatibility/BSkyBlock/src/main/java/combatlogx/expansion/compatibility/bskyblock/BSkyBlockExpansion.java
class BSkyBlockExpansion (line 9) | public final class BSkyBlockExpansion extends Expansion {
method BSkyBlockExpansion (line 10) | public BSkyBlockExpansion(ICombatLogX plugin) {
method onLoad (line 14) | @Override
method onEnable (line 19) | @Override
method onDisable (line 34) | @Override
method reloadConfig (line 39) | @Override
FILE: expansion/compatibility/BSkyBlock/src/main/java/combatlogx/expansion/compatibility/bskyblock/hook/HookBentoBox.java
class HookBentoBox (line 15) | public final class HookBentoBox {
method findBSkyBlock (line 16) | public static boolean findBSkyBlock(BSkyBlockExpansion expansion) {
FILE: expansion/compatibility/BSkyBlock/src/main/java/combatlogx/expansion/compatibility/bskyblock/listener/ListenerBSkyBlock.java
class ListenerBSkyBlock (line 24) | public final class ListenerBSkyBlock extends ExpansionListener {
method ListenerBSkyBlock (line 25) | public ListenerBSkyBlock(Expansion expansion) {
method beforeTag (line 29) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getIsland (line 42) | private Island getIsland(Player player) {
method doesTeamMatch (line 63) | private boolean doesTeamMatch(Player player1, Player player2) {
FILE: expansion/compatibility/CMI/src/main/java/combatlogx/expansion/compatibility/cmi/CMIExpansion.java
class CMIExpansion (line 9) | public final class CMIExpansion extends VanishExpansion {
method CMIExpansion (line 12) | public CMIExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getVanishHandler (line 22) | @Override
FILE: expansion/compatibility/CMI/src/main/java/combatlogx/expansion/compatibility/cmi/VanishHandlerCMI.java
class VanishHandlerCMI (line 14) | public final class VanishHandlerCMI extends VanishHandler<CMIExpansion> {
method VanishHandlerCMI (line 15) | public VanishHandlerCMI(@NotNull CMIExpansion expansion) {
method isVanished (line 19) | @Override
method getCMI (line 25) | private @NotNull CMI getCMI() {
method getPlayerManager (line 29) | private @NotNull PlayerManager getPlayerManager() {
method getUser (line 34) | private @Nullable CMIUser getUser(@NotNull Player player) {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/CitizensExpansion.java
class CitizensExpansion (line 31) | public final class CitizensExpansion extends Expansion {
method CitizensExpansion (line 44) | public CitizensExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 54) | @Override
method onEnable (line 62) | @Override
method onDisable (line 89) | @Override
method reloadConfig (line 95) | @Override
method getCombatNpcManager (line 107) | public @NotNull CombatNpcManager getCombatNpcManager() {
method getInventoryManager (line 111) | public @NotNull InventoryManager getInventoryManager() {
method isSentinelEnabled (line 115) | public boolean isSentinelEnabled() {
method registerListeners (line 121) | private void registerListeners() {
method isCitizensSupported (line 140) | private boolean isCitizensSupported(@NotNull String version) {
method getConfiguration (line 150) | public @NotNull Configuration getConfiguration() {
method getCitizensConfiguration (line 154) | public @NotNull CitizensConfiguration getCitizensConfiguration() {
method getSentinelConfiguration (line 158) | public @NotNull SentinelConfiguration getSentinelConfiguration() {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/configuration/CitizensConfiguration.java
class CitizensConfiguration (line 16) | public final class CitizensConfiguration implements IConfigurable {
method CitizensConfiguration (line 34) | public CitizensConfiguration(@NotNull CitizensExpansion expansion) {
method getExpansion (line 52) | private @NotNull CitizensExpansion getExpansion() {
method getLogger (line 56) | private @NotNull Logger getLogger() {
method load (line 61) | @Override
method isPreventPunishments (line 79) | public boolean isPreventPunishments() {
method setPreventPunishments (line 83) | public void setPreventPunishments(boolean preventPunishments) {
method isPreventLogin (line 87) | public boolean isPreventLogin() {
method setPreventLogin (line 91) | public void setPreventLogin(boolean preventLogin) {
method getMobType (line 95) | public @NotNull EntityType getMobType() {
method setMobType (line 99) | public void setMobType(@NotNull EntityType mobType) {
method setMobType (line 103) | private void setMobType(@Nullable String mobTypeName) {
method isStoreInventory (line 126) | public boolean isStoreInventory() {
method setStoreInventory (line 130) | public void setStoreInventory(boolean storeInventory) {
method isStoreLocation (line 134) | public boolean isStoreLocation() {
method setStoreLocation (line 138) | public void setStoreLocation(boolean storeLocation) {
method isMobTarget (line 142) | public boolean isMobTarget() {
method setMobTarget (line 146) | public void setMobTarget(boolean mobTarget) {
method getMobTargetRadius (line 150) | public double getMobTargetRadius() {
method setMobTargetRadius (line 154) | public void setMobTargetRadius(double mobTargetRadius) {
method getSurvivalTime (line 158) | public int getSurvivalTime() {
method setSurvivalTime (line 162) | public void setSurvivalTime(int survivalTime) {
method isStayUntilEnemyEscapes (line 166) | public boolean isStayUntilEnemyEscapes() {
method setStayUntilEnemyEscapes (line 170) | public void setStayUntilEnemyEscapes(boolean stayUntilEnemyEscapes) {
method isStayUntilNoDamage (line 174) | public boolean isStayUntilNoDamage() {
method setStayUntilNoDamage (line 178) | public void setStayUntilNoDamage(boolean stayUntilNoDamage) {
method isPreventResurrect (line 182) | public boolean isPreventResurrect() {
method setPreventResurrect (line 186) | public void setPreventResurrect(boolean preventResurrect) {
method isTagPlayer (line 190) | public boolean isTagPlayer() {
method setTagPlayer (line 194) | public void setTagPlayer(boolean tagPlayer) {
method isAlwaysSpawnNpcOnQuit (line 198) | public boolean isAlwaysSpawnNpcOnQuit() {
method setAlwaysSpawnNpcOnQuit (line 202) | public void setAlwaysSpawnNpcOnQuit(boolean alwaysSpawnNpcOnQuit) {
method getCustomNpcNameFormat (line 206) | public @NotNull String getCustomNpcNameFormat() {
method setCustomNpcNameFormat (line 210) | public void setCustomNpcNameFormat(@Nullable String customNpcNameForma...
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/configuration/Configuration.java
class Configuration (line 9) | public final class Configuration implements IConfigurable {
method Configuration (line 13) | public Configuration() {
method load (line 18) | @Override
method isNpcTagging (line 24) | public boolean isNpcTagging() {
method setNpcTagging (line 28) | public void setNpcTagging(boolean npcTagging) {
method isEnableSentinel (line 32) | public boolean isEnableSentinel() {
method setEnableSentinel (line 36) | public void setEnableSentinel(boolean enableSentinel) {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/configuration/SentinelConfiguration.java
class SentinelConfiguration (line 13) | public final class SentinelConfiguration implements IConfigurable {
method SentinelConfiguration (line 20) | public SentinelConfiguration(@NotNull CitizensExpansion expansion) {
method getExpansion (line 26) | private @NotNull CitizensExpansion getExpansion() {
method load (line 30) | @Override
method isAttackFirst (line 44) | public boolean isAttackFirst() {
method setAttackFirst (line 48) | public void setAttackFirst(boolean attackFirst) {
method isSentinelPluginEnabled (line 52) | public boolean isSentinelPluginEnabled() {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/CitizensExpansionListener.java
class CitizensExpansionListener (line 21) | public abstract class CitizensExpansionListener extends ExpansionListener {
method CitizensExpansionListener (line 24) | public CitizensExpansionListener(@NotNull CitizensExpansion expansion) {
method getCitizensExpansion (line 29) | protected final @NotNull CitizensExpansion getCitizensExpansion() {
method getConfiguration (line 33) | protected final @NotNull Configuration getConfiguration() {
method getCitizensConfiguration (line 38) | protected final @NotNull CitizensConfiguration getCitizensConfiguratio...
method getSentinelConfiguration (line 43) | protected final @NotNull SentinelConfiguration getSentinelConfiguratio...
method getCombatNpcManager (line 48) | protected final @NotNull CombatNpcManager getCombatNpcManager() {
method getInventoryManager (line 53) | protected final @NotNull InventoryManager getInventoryManager() {
method getCombatNPC (line 58) | protected final @Nullable CombatNPC getCombatNPC(NPC npc) {
method getNPC (line 63) | protected final @Nullable NPC getNPC(@NotNull Entity entity) {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerCombat.java
class ListenerCombat (line 15) | public final class ListenerCombat extends CitizensExpansionListener {
method ListenerCombat (line 16) | public ListenerCombat(@NotNull CitizensExpansion expansion) {
method beforeTag (line 20) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerConvert.java
class ListenerConvert (line 16) | public final class ListenerConvert extends CitizensExpansionListener {
method ListenerConvert (line 17) | public ListenerConvert(@NotNull CitizensExpansion expansion) {
method onConvert (line 21) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerDeath.java
class ListenerDeath (line 27) | public final class ListenerDeath extends CitizensExpansionListener {
method ListenerDeath (line 28) | public ListenerDeath(@NotNull CitizensExpansion expansion) {
method onDeathNPC (line 32) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onDamageNPC (line 49) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onDespawnNPC (line 70) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method checkForDeathMessages (line 111) | private void checkForDeathMessages(@NotNull NPCDeathEvent e, @NotNull ...
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerJoin.java
class ListenerJoin (line 29) | public final class ListenerJoin extends CitizensExpansionListener {
method ListenerJoin (line 30) | public ListenerJoin(@NotNull CitizensExpansion expansion) {
method beforeLogin (line 34) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onJoin (line 52) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method shouldAllowLogin (line 74) | private boolean shouldAllowLogin(@NotNull UUID uuid) {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerPunish.java
class ListenerPunish (line 19) | public final class ListenerPunish extends CitizensExpansionListener {
method ListenerPunish (line 20) | public ListenerPunish(@NotNull CitizensExpansion expansion) {
method beforePunish (line 24) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerQuit.java
class ListenerQuit (line 17) | public final class ListenerQuit extends CitizensExpansionListener {
method ListenerQuit (line 18) | public ListenerQuit(@NotNull CitizensExpansion expansion) {
method onQuit (line 22) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method isAlwaysSpawnOnQuit (line 38) | private boolean isAlwaysSpawnOnQuit() {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/listener/ListenerResurrect.java
class ListenerResurrect (line 17) | public final class ListenerResurrect extends CitizensExpansionListener {
method ListenerResurrect (line 18) | public ListenerResurrect(@NotNull CitizensExpansion expansion) {
method onResurrect (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/manager/CombatNpcManager.java
class CombatNpcManager (line 44) | public final class CombatNpcManager {
method CombatNpcManager (line 49) | public CombatNpcManager(@NotNull CitizensExpansion expansion) {
method getExpansion (line 55) | private @NotNull CitizensExpansion getExpansion() {
method getCombatLogX (line 59) | private @NotNull ICombatLogX getCombatLogX() {
method getCombatNPC (line 64) | public @Nullable CombatNPC getCombatNPC(@Nullable NPC npc) {
method getData (line 73) | public @NotNull YamlConfiguration getData(@NotNull OfflinePlayer playe...
method saveData (line 79) | public void saveData(@NotNull OfflinePlayer player) {
method remove (line 85) | public void remove(@NotNull CombatNPC combatNPC) {
method removeAll (line 103) | public void removeAll() {
method createNPC (line 111) | public void createNPC(@NotNull Player player, @NotNull List<Entity> en...
method forceTargetAllNearby (line 214) | private void forceTargetAllNearby(@NotNull LivingEntity entity, double...
method getNPC (line 223) | public @Nullable CombatNPC getNPC(@NotNull OfflinePlayer player) {
method saveNPC (line 228) | private void saveNPC(@NotNull OfflinePlayer owner, @NotNull NPC npc) {
method saveHealth (line 237) | private void saveHealth(@NotNull OfflinePlayer owner, @NotNull NPC npc) {
method saveLocation (line 244) | private void saveLocation(@NotNull OfflinePlayer owner, @NotNull NPC n...
method saveInventory (line 251) | public void saveInventory(@NotNull Player player) {
method equipNPC (line 266) | public void equipNPC(@NotNull Player player, @NotNull NPC npc) {
method loadHealth (line 272) | public double loadHealth(@NotNull Player player) {
method loadLocation (line 277) | public @Nullable Location loadLocation(@NotNull Player player) {
method getHealth (line 287) | private double getHealth(@NotNull NPC npc) {
method getLocation (line 300) | public @NotNull Location getLocation(@NotNull NPC npc) {
method getConfiguration (line 309) | private @NotNull CitizensConfiguration getConfiguration() {
method getEntityType (line 314) | private @NotNull EntityType getEntityType() {
method printDebug (line 319) | private void printDebug(@NotNull String message) {
method checkSentinel (line 329) | private void checkSentinel(@NotNull NPC npc, @NotNull List<Entity> ene...
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/manager/InventoryManager.java
class InventoryManager (line 36) | public final class InventoryManager {
method InventoryManager (line 40) | public InventoryManager(@NotNull CitizensExpansion expansion) {
method storeInventory (line 45) | public void storeInventory(@NotNull Player player) {
method getStoredInventory (line 65) | public @Nullable StoredInventory getStoredInventory(@NotNull OfflinePl...
method removeStoredInventory (line 83) | public void removeStoredInventory(@NotNull OfflinePlayer player) {
method restoreInventory (line 95) | public void restoreInventory(@NotNull Player player) {
method dropInventory (line 129) | public void dropInventory(@NotNull OfflinePlayer player, @NotNull Loca...
method dropItem (line 165) | private void dropItem(@NotNull ItemStack item, @NotNull OfflinePlayer ...
method equipNPC (line 181) | public void equipNPC(@NotNull OfflinePlayer player, @NotNull NPC npc) {
method getExpansion (line 211) | private @NotNull CitizensExpansion getExpansion() {
method getICombatLogX (line 215) | private @NotNull ICombatLogX getICombatLogX() {
method getPlayerDataManager (line 220) | private @NotNull PlayerDataManager getPlayerDataManager() {
method restoreHandsLegacy (line 225) | @SuppressWarnings("deprecation")
method restoreHandsModern (line 231) | private void restoreHandsModern(@NotNull StoredInventory storedInvento...
method getNpcSlotFromBukkitSlot (line 238) | private Equipment.EquipmentSlot getNpcSlotFromBukkitSlot(@NotNull Equi...
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/object/CombatNPC.java
class CombatNPC (line 22) | public final class CombatNPC extends TaskDetails {
method CombatNPC (line 30) | public CombatNPC(@NotNull CitizensExpansion expansion, @NotNull NPC or...
method run (line 37) | @Override
method start (line 64) | public void start() {
method getOriginalNPC (line 73) | public @NotNull NPC getOriginalNPC() {
method getOwnerId (line 77) | public @NotNull UUID getOwnerId() {
method getOfflineOwner (line 81) | public @NotNull OfflinePlayer getOfflineOwner() {
method resetSurvivalTime (line 86) | public void resetSurvivalTime() {
method setEnemy (line 93) | public void setEnemy(@NotNull Player enemy) {
method getExpansion (line 97) | private @NotNull CitizensExpansion getExpansion() {
method getCombatLogX (line 101) | private @NotNull ICombatLogX getCombatLogX() {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/object/StoredInventory.java
class StoredInventory (line 23) | public final class StoredInventory {
method StoredInventory (line 29) | private StoredInventory() {
method createFrom (line 36) | public static @NotNull StoredInventory createFrom(@NotNull PlayerInven...
method createFrom (line 58) | public static @NotNull StoredInventory createFrom(@NotNull CitizensExp...
method setHandLegacy (line 84) | @SuppressWarnings("deprecation")
method setHandModern (line 91) | private static void setHandModern(@NotNull StoredInventory stored, @No...
method loadItemStack (line 96) | private static @Nullable ItemStack loadItemStack(@NotNull CitizensExpa...
method saveItemStack (line 117) | private static void saveItemStack(@NotNull CitizensExpansion expansion...
method getMainHandItem (line 132) | public @Nullable ItemStack getMainHandItem() {
method getOffHandItem (line 136) | public @Nullable ItemStack getOffHandItem() {
method getArmor (line 140) | public @Nullable ItemStack getArmor(@NotNull ArmorType type) {
method getItem (line 145) | public @Nullable ItemStack getItem(int slot) {
method save (line 150) | public void save(@NotNull CitizensExpansion expansion, @NotNull Config...
method setItemStack (line 173) | private void setItemStack(int slot, @Nullable ItemStack item) {
method setArmor (line 181) | private void setArmor(@NotNull ArmorType type, @Nullable ItemStack ite...
method setMainHand (line 189) | private void setMainHand(@Nullable ItemStack item) {
method setOffHand (line 193) | private void setOffHand(@Nullable ItemStack item) {
FILE: expansion/compatibility/Citizens/src/main/java/combatlogx/expansion/compatibility/citizens/task/PunishTask.java
class PunishTask (line 25) | public final class PunishTask extends EntityTaskDetails<Player> {
method PunishTask (line 28) | public PunishTask(@NotNull CitizensExpansion expansion, @NotNull Playe...
method run (line 35) | @Override
method getExpansion (line 46) | private @NotNull CitizensExpansion getExpansion() {
method getCitizensConfiguration (line 50) | private @NotNull CitizensConfiguration getCitizensConfiguration() {
method getCombatNpcManager (line 55) | private @NotNull CombatNpcManager getCombatNpcManager() {
method getInventoryManager (line 60) | private @NotNull InventoryManager getInventoryManager() {
method getCombatLogX (line 65) | private @NotNull ICombatLogX getCombatLogX() {
method getCombatManager (line 70) | private @NotNull ICombatManager getCombatManager() {
method punish (line 75) | private void punish(@NotNull Player player) {
method setHealth (line 125) | private void setHealth(@NotNull Player player, double health) {
FILE: expansion/compatibility/CrackShot/src/main/java/combatlogx/expansion/compatibility/crackshot/CrackShotExpansion.java
class CrackShotExpansion (line 10) | public final class CrackShotExpansion extends Expansion {
method CrackShotExpansion (line 11) | public CrackShotExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 15) | @Override
method onEnable (line 20) | @Override
method onDisable (line 30) | @Override
method reloadConfig (line 35) | @Override
FILE: expansion/compatibility/CrackShot/src/main/java/combatlogx/expansion/compatibility/crackshot/listener/ListenerCrackShot.java
class ListenerCrackShot (line 18) | public final class ListenerCrackShot extends ExpansionListener {
method ListenerCrackShot (line 19) | public ListenerCrackShot(@NotNull CrackShotExpansion expansion) {
method onAttack (line 23) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
FILE: expansion/compatibility/CrashClaim/src/main/java/combatlogx/expansion/compatibility/region/crash/claim/CrashClaimExpansion.java
class CrashClaimExpansion (line 9) | public final class CrashClaimExpansion extends RegionExpansion {
method CrashClaimExpansion (line 12) | public CrashClaimExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/CrashClaim/src/main/java/combatlogx/expansion/compatibility/region/crash/claim/CrashClaimRegionHandler.java
class CrashClaimRegionHandler (line 18) | public final class CrashClaimRegionHandler extends RegionHandler<CrashCl...
method CrashClaimRegionHandler (line 19) | public CrashClaimRegionHandler(@NotNull CrashClaimExpansion expansion) {
method getEntryDeniedMessagePath (line 23) | @Override
method isSafeZone (line 28) | @Override
method getCrashClaim (line 34) | private @NotNull CrashClaim getCrashClaim() {
method getAPI (line 38) | private @NotNull CrashClaimAPI getAPI() {
method getClaim (line 43) | private @Nullable Claim getClaim(@NotNull Location location) {
FILE: expansion/compatibility/EssentialsX/src/main/java/combatlogx/expansion/compatibility/essentials/EssentialsExpansion.java
class EssentialsExpansion (line 14) | public final class EssentialsExpansion extends VanishExpansion {
method EssentialsExpansion (line 19) | public EssentialsExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 25) | @Override
method afterEnable (line 41) | @Override
method reloadConfig (line 46) | @Override
method getVanishHandler (line 53) | @Override
method getEssentialsConfiguration (line 62) | public @NotNull EssentialsExpansionConfiguration getEssentialsConfigur...
FILE: expansion/compatibility/EssentialsX/src/main/java/combatlogx/expansion/compatibility/essentials/EssentialsExpansionConfiguration.java
class EssentialsExpansionConfiguration (line 9) | public final class EssentialsExpansionConfiguration implements IConfigur...
method EssentialsExpansionConfiguration (line 12) | public EssentialsExpansionConfiguration() {
method load (line 16) | @Override
method isPreventTeleportRequest (line 21) | public boolean isPreventTeleportRequest() {
method setPreventTeleportRequest (line 25) | public void setPreventTeleportRequest(boolean preventTeleportRequest) {
FILE: expansion/compatibility/EssentialsX/src/main/java/combatlogx/expansion/compatibility/essentials/VanishHandlerEssentialsX.java
class VanishHandlerEssentialsX (line 13) | public final class VanishHandlerEssentialsX extends VanishHandler<Essent...
method VanishHandlerEssentialsX (line 14) | public VanishHandlerEssentialsX(@NotNull EssentialsExpansion expansion) {
method isVanished (line 18) | @Override
method getEssentials (line 24) | private @NotNull Essentials getEssentials() {
method getUser (line 28) | private @NotNull User getUser(@NotNull Player player) {
FILE: expansion/compatibility/EssentialsX/src/main/java/combatlogx/expansion/compatibility/essentials/listener/ListenerEssentials.java
class ListenerEssentials (line 18) | public final class ListenerEssentials extends VanishExpansionListener {
method ListenerEssentials (line 21) | public ListenerEssentials(@NotNull EssentialsExpansion expansion) {
method onTeleportRequest (line 26) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getEssentialsExpansion (line 59) | private @NotNull EssentialsExpansion getEssentialsExpansion() {
method getEssentialsConfiguration (line 63) | private @NotNull EssentialsExpansionConfiguration getEssentialsConfigu...
method isPreventTeleportRequest (line 68) | private boolean isPreventTeleportRequest() {
FILE: expansion/compatibility/FabledSkyBlock/src/main/java/combatlogx/expansion/compatibility/fabled/skyblock/FabledSkyBlockExpansion.java
class FabledSkyBlockExpansion (line 9) | public final class FabledSkyBlockExpansion extends SkyBlockExpansion {
method FabledSkyBlockExpansion (line 12) | public FabledSkyBlockExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getSkyBlockHandler (line 22) | @Override
FILE: expansion/compatibility/FabledSkyBlock/src/main/java/combatlogx/expansion/compatibility/fabled/skyblock/IslandWrapperFabled.java
class IslandWrapperFabled (line 16) | public final class IslandWrapperFabled extends IslandWrapper {
method IslandWrapperFabled (line 19) | public IslandWrapperFabled(@NotNull Island island) {
method getIsland (line 23) | private @NotNull Island getIsland() {
method isMember (line 27) | @Override
method getMembers (line 38) | @Override
FILE: expansion/compatibility/FabledSkyBlock/src/main/java/combatlogx/expansion/compatibility/fabled/skyblock/SkyBlockHandlerFabled.java
class SkyBlockHandlerFabled (line 18) | public final class SkyBlockHandlerFabled extends SkyBlockHandler<FabledS...
method SkyBlockHandlerFabled (line 19) | public SkyBlockHandlerFabled(@NotNull FabledSkyBlockExpansion expansio...
method getIsland (line 23) | @Override
method getIsland (line 29) | @Override
method doesIslandMatch (line 35) | @Override
method getIslandManager (line 50) | private @NotNull IslandManager getIslandManager() {
method wrap (line 54) | private @Nullable IslandWrapper wrap(@Nullable Island island) {
FILE: expansion/compatibility/Factions/src/main/java/combatlogx/expansion/compatibility/region/factions/FactionsExpansion.java
class FactionsExpansion (line 13) | public final class FactionsExpansion extends RegionExpansion {
method FactionsExpansion (line 17) | public FactionsExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 23) | @Override
method getRegionHandler (line 33) | @Override
method getFactionsHandler (line 42) | public @NotNull FactionsHandler getFactionsHandler() {
FILE: expansion/compatibility/Factions/src/main/java/combatlogx/expansion/compatibility/region/factions/RegionHandlerFactions.java
class RegionHandlerFactions (line 14) | public final class RegionHandlerFactions extends RegionHandler<FactionsE...
method RegionHandlerFactions (line 17) | public RegionHandlerFactions(@NotNull FactionsExpansion expansion) {
method getFactionsHandler (line 22) | private @NotNull FactionsHandler getFactionsHandler() {
method getEntryDeniedMessagePath (line 26) | @Override
method isSafeZone (line 31) | @Override
FILE: expansion/compatibility/FeatherBoard/src/main/java/combatlogx/expansion/compatibility/featherboard/FeatherBoardConfiguration.java
class FeatherBoardConfiguration (line 9) | public class FeatherBoardConfiguration implements IConfigurable {
method FeatherBoardConfiguration (line 12) | public FeatherBoardConfiguration() {
method load (line 16) | @Override
method getTriggerName (line 21) | public @NotNull String getTriggerName() {
method setTriggerName (line 25) | public void setTriggerName(@NotNull String triggerName) {
FILE: expansion/compatibility/FeatherBoard/src/main/java/combatlogx/expansion/compatibility/featherboard/FeatherBoardExpansion.java
class FeatherBoardExpansion (line 11) | public final class FeatherBoardExpansion extends Expansion {
method FeatherBoardExpansion (line 14) | public FeatherBoardExpansion(ICombatLogX plugin) {
method onLoad (line 19) | @Override
method onEnable (line 25) | @Override
method onDisable (line 35) | @Override
method reloadConfig (line 40) | @Override
method getConfiguration (line 47) | public @NotNull FeatherBoardConfiguration getConfiguration() {
FILE: expansion/compatibility/FeatherBoard/src/main/java/combatlogx/expansion/compatibility/featherboard/listener/ListenerFeatherBoard.java
class ListenerFeatherBoard (line 17) | public final class ListenerFeatherBoard extends ExpansionListener {
method ListenerFeatherBoard (line 20) | public ListenerFeatherBoard(@NotNull FeatherBoardExpansion expansion) {
method onTag (line 25) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onUntag (line 31) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method getFeatherBoardExpansion (line 37) | private @NotNull FeatherBoardExpansion getFeatherBoardExpansion() {
method getConfiguration (line 41) | private @NotNull FeatherBoardConfiguration getConfiguration() {
method getTriggerName (line 46) | private @NotNull String getTriggerName() {
method showTrigger (line 52) | private void showTrigger(@NotNull Player player) {
method removeTrigger (line 57) | private void removeTrigger(@NotNull Player player) {
FILE: expansion/compatibility/GriefDefender/src/main/java/combatlogx/expansion/compatibility/region/grief/defender/GriefDefenderExpansion.java
class GriefDefenderExpansion (line 9) | public final class GriefDefenderExpansion extends RegionExpansion {
method GriefDefenderExpansion (line 12) | public GriefDefenderExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/GriefDefender/src/main/java/combatlogx/expansion/compatibility/region/grief/defender/RegionHandlerGriefDefender.java
class RegionHandlerGriefDefender (line 21) | public final class RegionHandlerGriefDefender extends RegionHandler<Grie...
method RegionHandlerGriefDefender (line 22) | public RegionHandlerGriefDefender(@NotNull GriefDefenderExpansion expa...
method getEntryDeniedMessagePath (line 26) | @Override
method isSafeZone (line 31) | @Override
method getCore (line 51) | private @NotNull Core getCore() {
method getClaimAt (line 55) | private @Nullable Claim getClaimAt(Location location) {
method getUser (line 65) | private @Nullable User getUser(Player player) {
FILE: expansion/compatibility/GriefPrevention/src/main/java/combatlogx/expansion/compatibility/region/grief/prevention/GriefPreventionExpansion.java
class GriefPreventionExpansion (line 9) | public final class GriefPreventionExpansion extends RegionExpansion {
method GriefPreventionExpansion (line 12) | public GriefPreventionExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/GriefPrevention/src/main/java/combatlogx/expansion/compatibility/region/grief/prevention/RegionHandlerGriefPrevention.java
class RegionHandlerGriefPrevention (line 17) | public final class RegionHandlerGriefPrevention extends RegionHandler<Gr...
method RegionHandlerGriefPrevention (line 18) | public RegionHandlerGriefPrevention(GriefPreventionExpansion expansion) {
method getEntryDeniedMessagePath (line 22) | @Override
method isSafeZone (line 27) | @Override
method getGriefPrevention (line 39) | private @NotNull GriefPrevention getGriefPrevention() {
method getClaim (line 43) | private @Nullable Claim getClaim(@NotNull Location location) {
FILE: expansion/compatibility/HuskHomes/src/main/java/combatlogx/expansion/compatibility/huskhomes/HuskHomesExpansion.java
class HuskHomesExpansion (line 11) | public final class HuskHomesExpansion extends Expansion {
method HuskHomesExpansion (line 12) | public HuskHomesExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 16) | @Override
method onEnable (line 22) | @Override
method onDisable (line 32) | @Override
method reloadConfig (line 37) | @Override
FILE: expansion/compatibility/HuskHomes/src/main/java/combatlogx/expansion/compatibility/huskhomes/listener/ListenerHuskHomes.java
class ListenerHuskHomes (line 21) | public final class ListenerHuskHomes extends ExpansionListener {
method ListenerHuskHomes (line 22) | public ListenerHuskHomes(@NotNull HuskHomesExpansion expansion) {
method beforeTeleport (line 26) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/HuskSync/src/main/java/combatlogx/expansion/compatibility/husksync/DropItemsTask.java
class DropItemsTask (line 15) | public final class DropItemsTask extends LocationTaskDetails {
method DropItemsTask (line 18) | public DropItemsTask(@NotNull Plugin plugin, @NotNull Location locatio...
method run (line 24) | @Override
FILE: expansion/compatibility/HuskSync/src/main/java/combatlogx/expansion/compatibility/husksync/HuskSyncExpansion.java
class HuskSyncExpansion (line 12) | public final class HuskSyncExpansion extends Expansion {
method HuskSyncExpansion (line 13) | public HuskSyncExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 17) | @Override
method onEnable (line 22) | @Override
method onDisable (line 32) | @Override
method reloadConfig (line 38) | @Override
FILE: expansion/compatibility/HuskSync/src/main/java/combatlogx/expansion/compatibility/husksync/ListenerHuskSync.java
class ListenerHuskSync (line 29) | public final class ListenerHuskSync extends ExpansionListener {
method ListenerHuskSync (line 35) | public ListenerHuskSync(@NotNull HuskSyncExpansion expansion) {
method onPunish (line 43) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onDeath (line 60) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onJoin (line 87) | @EventHandler
method onBukkitDataSave (line 97) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getHuskSyncAPI (line 120) | private @NotNull HuskSyncAPI getHuskSyncAPI() {
method checkData (line 124) | private void checkData(@NotNull PlayerData playerData, @NotNull DataSn...
method edit (line 133) | private void edit(@NotNull PlayerData playerData, @NotNull DataSnapsho...
FILE: expansion/compatibility/HuskSync/src/main/java/combatlogx/expansion/compatibility/husksync/PlayerData.java
class PlayerData (line 9) | public final class PlayerData {
method PlayerData (line 20) | public PlayerData(@NotNull Player player, @NotNull Location location) {
method getPlayer (line 32) | public @NotNull Player getPlayer() {
method getLocation (line 36) | public @NotNull Location getLocation() {
method isKeepInventory (line 40) | public boolean isKeepInventory() {
method setKeepInventory (line 44) | public void setKeepInventory(boolean keepInventory) {
method isKeepLevel (line 48) | public boolean isKeepLevel() {
method setKeepLevel (line 52) | public void setKeepLevel(boolean keepLevel) {
method getTotalExperience (line 56) | public int getTotalExperience() {
method setTotalExperience (line 60) | public void setTotalExperience(int totalExperience) {
method getNewLevel (line 64) | public int getNewLevel() {
method setNewLevel (line 68) | public void setNewLevel(int newLevel) {
method getNewExperience (line 72) | public float getNewExperience() {
method setNewExperience (line 76) | public void setNewExperience(float newExperience) {
method setOldInventory (line 80) | public void setOldInventory(ItemStack @NotNull [] clone) {
method getOldInventory (line 84) | public ItemStack @NotNull [] getOldInventory() {
FILE: expansion/compatibility/HuskTowns/src/main/java/combatlogx/expansion/compatibility/region/husktowns/HuskTownsExpansion.java
class HuskTownsExpansion (line 9) | public final class HuskTownsExpansion extends RegionExpansion {
method HuskTownsExpansion (line 12) | public HuskTownsExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/HuskTowns/src/main/java/combatlogx/expansion/compatibility/region/husktowns/RegionHandlerHuskTowns.java
class RegionHandlerHuskTowns (line 18) | public final class RegionHandlerHuskTowns extends RegionHandler<HuskTown...
method RegionHandlerHuskTowns (line 19) | public RegionHandlerHuskTowns(@NotNull HuskTownsExpansion expansion) {
method getEntryDeniedMessagePath (line 23) | @Override
method isSafeZone (line 28) | @Override
FILE: expansion/compatibility/IridiumSkyblock/src/main/java/combatlogx/expansion/compatibility/iridium/skyblock/IridiumSkyblockExpansion.java
class IridiumSkyblockExpansion (line 9) | public final class IridiumSkyblockExpansion extends SkyBlockExpansion {
method IridiumSkyblockExpansion (line 12) | public IridiumSkyblockExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getSkyBlockHandler (line 22) | @Override
FILE: expansion/compatibility/IridiumSkyblock/src/main/java/combatlogx/expansion/compatibility/iridium/skyblock/IslandWrapperIridium.java
class IslandWrapperIridium (line 18) | public class IslandWrapperIridium extends IslandWrapper {
method IslandWrapperIridium (line 21) | public IslandWrapperIridium(@NotNull Island island) {
method getIsland (line 25) | private @NotNull Island getIsland() {
method getMembers (line 29) | @Override
method getSkyBlock (line 44) | private @NotNull IridiumSkyblock getSkyBlock() {
method getIslandManager (line 48) | private @NotNull IslandManager getIslandManager() {
FILE: expansion/compatibility/IridiumSkyblock/src/main/java/combatlogx/expansion/compatibility/iridium/skyblock/SkyBlockHandlerIridium.java
class SkyBlockHandlerIridium (line 20) | public final class SkyBlockHandlerIridium extends SkyBlockHandler<Iridiu...
method SkyBlockHandlerIridium (line 21) | public SkyBlockHandlerIridium(@NotNull IridiumSkyblockExpansion expans...
method getIsland (line 25) | @Override
method getIsland (line 37) | @Override
method doesIslandMatch (line 49) | @Override
method getAPI (line 68) | private @NotNull IridiumSkyblock getAPI() {
method getIslandManager (line 72) | private @NotNull IslandManager getIslandManager() {
method getUserManager (line 77) | private @NotNull UserManager getUserManager() {
method getUser (line 82) | private @NotNull User getUser(@NotNull OfflinePlayer player) {
method wrap (line 87) | private @NotNull IslandWrapper wrap(@NotNull Island island) {
FILE: expansion/compatibility/KingdomsX/src/main/java/combatlogx/expansion/compatibility/region/kingdomsx/ExpansionKingdomsX.java
class ExpansionKingdomsX (line 9) | public final class ExpansionKingdomsX extends RegionExpansion {
method ExpansionKingdomsX (line 12) | public ExpansionKingdomsX(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/KingdomsX/src/main/java/combatlogx/expansion/compatibility/region/kingdomsx/RegionHandlerKingdomsX.java
class RegionHandlerKingdomsX (line 18) | public final class RegionHandlerKingdomsX extends RegionHandler<Expansio...
method RegionHandlerKingdomsX (line 19) | public RegionHandlerKingdomsX(@NotNull ExpansionKingdomsX expansion) {
method getEntryDeniedMessagePath (line 23) | @Override
method isSafeZone (line 28) | @Override
FILE: expansion/compatibility/Konquest/src/main/java/combatlogx/expansion/compatibility/region/konquest/KonquestExpansion.java
class KonquestExpansion (line 9) | public final class KonquestExpansion extends RegionExpansion {
method KonquestExpansion (line 12) | public KonquestExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/Konquest/src/main/java/combatlogx/expansion/compatibility/region/konquest/RegionHandlerKonquest.java
class RegionHandlerKonquest (line 18) | public class RegionHandlerKonquest extends RegionHandler<KonquestExpansi...
method RegionHandlerKonquest (line 19) | public RegionHandlerKonquest(@NotNull KonquestExpansion expansion) {
method getEntryDeniedMessagePath (line 23) | @Override
method isSafeZone (line 28) | @Override
method getAPI (line 41) | private @NotNull KonquestAPI getAPI() {
FILE: expansion/compatibility/Lands/src/main/java/combatlogx/expansion/compatibility/region/lands/LandsConfiguration.java
class LandsConfiguration (line 9) | public final class LandsConfiguration implements IConfigurable {
method LandsConfiguration (line 12) | public LandsConfiguration() {
method load (line 16) | @Override
method isPreventAllLandEntries (line 21) | public boolean isPreventAllLandEntries() {
method setPreventAllLandEntries (line 25) | public void setPreventAllLandEntries(boolean preventAllLandEntries) {
FILE: expansion/compatibility/Lands/src/main/java/combatlogx/expansion/compatibility/region/lands/LandsExpansion.java
class LandsExpansion (line 14) | public final class LandsExpansion extends RegionExpansion {
method LandsExpansion (line 18) | public LandsExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 24) | @Override
method onLoad (line 29) | @Override
method afterEnable (line 36) | @Override
method getRegionHandler (line 46) | @Override
method reloadConfig (line 55) | @Override
method getLandsConfiguration (line 64) | public @NotNull LandsConfiguration getLandsConfiguration() {
FILE: expansion/compatibility/Lands/src/main/java/combatlogx/expansion/compatibility/region/lands/RegionHandlerLands.java
class RegionHandlerLands (line 26) | public final class RegionHandlerLands extends RegionHandler<LandsExpansi...
method RegionHandlerLands (line 29) | public RegionHandlerLands(@NotNull LandsExpansion expansion) {
method getEntryDeniedMessagePath (line 34) | @Override
method isSafeZone (line 39) | @Override
method getLandsIntegration (line 72) | private @NotNull LandsIntegration getLandsIntegration() {
method getArea (line 83) | private @Nullable Area getArea(@NotNull Location location) {
method getRoleFlag (line 88) | private @Nullable RoleFlag getRoleFlag(@NotNull TagType tagType, @Null...
method getRoleFlag (line 96) | private @Nullable RoleFlag getRoleFlag(@Nullable Entity enemy) {
FILE: expansion/compatibility/Lands/src/main/java/combatlogx/expansion/compatibility/region/lands/listener/ListenerLands.java
class ListenerLands (line 25) | public final class ListenerLands extends ExpansionListener {
method ListenerLands (line 26) | public ListenerLands(LandsExpansion expansion) {
method onWarDeclare (line 30) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method disableNewbieProtection (line 39) | private void disableNewbieProtection(MemberHolder memberHolder) {
method disableNewbieProtection (line 46) | private void disableNewbieProtection(Player player) {
method getNewbieHelperExpansion (line 60) | private @NotNull NewbieHelperExpansion getNewbieHelperExpansion() {
FILE: expansion/compatibility/LibsDisguises/src/main/java/combatlogx/expansion/compatibility/libsdisguises/DisguiseHandlerLibsDisguises.java
class DisguiseHandlerLibsDisguises (line 11) | public class DisguiseHandlerLibsDisguises extends DisguiseHandler<LibsDi...
method DisguiseHandlerLibsDisguises (line 12) | public DisguiseHandlerLibsDisguises(@NotNull LibsDisguisesExpansion ex...
method hasDisguise (line 16) | @Override
method removeDisguise (line 21) | @Override
FILE: expansion/compatibility/LibsDisguises/src/main/java/combatlogx/expansion/compatibility/libsdisguises/LibsDisguisesExpansion.java
class LibsDisguisesExpansion (line 9) | public final class LibsDisguisesExpansion extends DisguiseExpansion {
method LibsDisguisesExpansion (line 12) | public LibsDisguisesExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getDisguiseHandler (line 22) | @Override
FILE: expansion/compatibility/LuckPerms/src/main/java/combatlogx/expansion/compatibility/luckperms/LuckPermsExpansion.java
class LuckPermsExpansion (line 9) | public final class LuckPermsExpansion extends Expansion {
method LuckPermsExpansion (line 10) | public LuckPermsExpansion(ICombatLogX plugin) {
method onLoad (line 14) | @Override
method onEnable (line 19) | @Override
method onDisable (line 29) | @Override
method reloadConfig (line 34) | @Override
method registerContexts (line 39) | private void registerContexts() {
FILE: expansion/compatibility/LuckPerms/src/main/java/combatlogx/expansion/compatibility/luckperms/context/AbstractContext.java
class AbstractContext (line 12) | public abstract class AbstractContext<T> implements ContextCalculator<T> {
method AbstractContext (line 15) | public AbstractContext(LuckPermsExpansion expansion) {
method getExpansion (line 19) | protected final LuckPermsExpansion getExpansion() {
method getCombatLogX (line 23) | protected final ICombatLogX getCombatLogX() {
method register (line 28) | public final void register() {
FILE: expansion/compatibility/LuckPerms/src/main/java/combatlogx/expansion/compatibility/luckperms/context/ContextInCombat.java
class ContextInCombat (line 13) | public final class ContextInCombat extends AbstractContext<Player> {
method ContextInCombat (line 14) | public ContextInCombat(LuckPermsExpansion expansion) {
method calculate (line 18) | @Override
FILE: expansion/compatibility/LuckPerms/src/main/java/combatlogx/expansion/compatibility/luckperms/context/ContextNewbieHelperProtected.java
class ContextNewbieHelperProtected (line 14) | public final class ContextNewbieHelperProtected extends AbstractContext<...
method ContextNewbieHelperProtected (line 17) | public ContextNewbieHelperProtected(LuckPermsExpansion expansion, Newb...
method getNewbieHelper (line 22) | private NewbieHelperExpansion getNewbieHelper() {
method calculate (line 26) | @Override
FILE: expansion/compatibility/LuckPerms/src/main/java/combatlogx/expansion/compatibility/luckperms/context/ContextNewbieHelperPvpStatus.java
class ContextNewbieHelperPvpStatus (line 14) | public final class ContextNewbieHelperPvpStatus extends AbstractContext<...
method ContextNewbieHelperPvpStatus (line 17) | public ContextNewbieHelperPvpStatus(LuckPermsExpansion expansion, Newb...
method getNewbieHelper (line 22) | private NewbieHelperExpansion getNewbieHelper() {
method calculate (line 26) | @Override
FILE: expansion/compatibility/LuckPerms/src/main/java/combatlogx/expansion/compatibility/luckperms/hook/HookNewbieHelper.java
class HookNewbieHelper (line 14) | public final class HookNewbieHelper {
method registerContexts (line 15) | public static void registerContexts(LuckPermsExpansion instance) {
FILE: expansion/compatibility/MCPets/src/main/java/combatlogx/expansion/compatibility/mcpets/ListenerMcPets.java
class ListenerMcPets (line 20) | public final class ListenerMcPets extends ExpansionListener {
method ListenerMcPets (line 21) | public ListenerMcPets(@NotNull McPetsExpansion expansion) {
method onPetSpawn (line 25) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onTag (line 37) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/MCPets/src/main/java/combatlogx/expansion/compatibility/mcpets/McPetsExpansion.java
class McPetsExpansion (line 8) | public final class McPetsExpansion extends Expansion {
method McPetsExpansion (line 9) | public McPetsExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 13) | @Override
method onEnable (line 18) | @Override
method onDisable (line 28) | @Override
method reloadConfig (line 33) | @Override
FILE: expansion/compatibility/MarriageMaster/src/main/java/combatlogx/expansion/compatibility/marriagemaster/MarriageMasterExpansion.java
class MarriageMasterExpansion (line 10) | public final class MarriageMasterExpansion extends Expansion {
method MarriageMasterExpansion (line 11) | public MarriageMasterExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 15) | @Override
method onEnable (line 20) | @Override
method onDisable (line 30) | @Override
method reloadConfig (line 35) | @Override
FILE: expansion/compatibility/MarriageMaster/src/main/java/combatlogx/expansion/compatibility/marriagemaster/listener/ListenerMarriageMaster.java
class ListenerMarriageMaster (line 15) | public final class ListenerMarriageMaster extends ExpansionListener {
method ListenerMarriageMaster (line 16) | public ListenerMarriageMaster(Expansion expansion) {
method onTeleport (line 20) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
FILE: expansion/compatibility/MythicMobs/src/main/java/combatlogx/expansion/compatibility/mythicmobs/ListenerMythicMobs.java
class ListenerMythicMobs (line 23) | public final class ListenerMythicMobs extends ExpansionListener {
method ListenerMythicMobs (line 26) | public ListenerMythicMobs(MythicMobsExpansion expansion) {
method onDamage (line 31) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method beforeTag (line 54) | @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
method getAPI (line 72) | private @NotNull BukkitAPIHelper getAPI() {
method isMythicMob (line 77) | private boolean isMythicMob(@NotNull Entity entity) {
method getActiveMob (line 82) | private @Nullable ActiveMob getActiveMob(@NotNull Entity entity) {
method getMythicMobName (line 87) | private @Nullable String getMythicMobName(@NotNull Entity entity) {
method linkMainMythicMob (line 96) | private @NotNull Entity linkMainMythicMob(@NotNull Entity original) {
method getMythicMobsExpansion (line 110) | private @NotNull MythicMobsExpansion getMythicMobsExpansion() {
method getConfiguration (line 114) | private @NotNull MythicMobsConfiguration getConfiguration() {
method isForceTag (line 119) | private boolean isForceTag(@NotNull String mobName) {
method isNoTag (line 124) | private boolean isNoTag(@NotNull String mobName) {
FILE: expansion/compatibility/MythicMobs/src/main/java/combatlogx/expansion/compatibility/mythicmobs/MythicMobsConfiguration.java
class MythicMobsConfiguration (line 14) | public final class MythicMobsConfiguration implements IConfigurable {
method MythicMobsConfiguration (line 18) | public MythicMobsConfiguration() {
method load (line 23) | @Override
method getNoTagTypes (line 29) | public @NotNull Set<String> getNoTagTypes() {
method setNoTagTypes (line 33) | public void setNoTagTypes(@NotNull Collection<String> types) {
method getForceTagTypes (line 38) | public @NotNull Set<String> getForceTagTypes() {
method setForceTagTypes (line 42) | public void setForceTagTypes(@NotNull Collection<String> types) {
method isForceTag (line 47) | public boolean isForceTag(@NotNull String mobName) {
method isNoTag (line 52) | public boolean isNoTag(@NotNull String mobName) {
FILE: expansion/compatibility/MythicMobs/src/main/java/combatlogx/expansion/compatibility/mythicmobs/MythicMobsExpansion.java
class MythicMobsExpansion (line 9) | public final class MythicMobsExpansion extends Expansion {
method MythicMobsExpansion (line 12) | public MythicMobsExpansion(ICombatLogX plugin) {
method onLoad (line 17) | @Override
method onEnable (line 23) | @Override
method onDisable (line 34) | @Override
method reloadConfig (line 39) | @Override
method getConfiguration (line 46) | public @NotNull MythicMobsConfiguration getConfiguration() {
FILE: expansion/compatibility/PlaceholderAPI/src/main/java/combatlogx/expansion/compatibility/placeholderapi/HookPlaceholderAPI.java
class HookPlaceholderAPI (line 22) | public final class HookPlaceholderAPI extends PlaceholderExpansion {
method HookPlaceholderAPI (line 25) | public HookPlaceholderAPI(@NotNull PlaceholderAPIExpansion expansion) {
method canRegister (line 29) | @Override
method persist (line 34) | @Override
method getIdentifier (line 39) | @Override
method getAuthor (line 46) | @Override
method getVersion (line 53) | @Override
method onPlaceholderRequest (line 60) | @Override
method getExpansion (line 78) | private @NotNull PlaceholderAPIExpansion getExpansion() {
method getCombatLogX (line 82) | private @NotNull ICombatLogX getCombatLogX() {
method getDescriptionFile (line 87) | private @NotNull PluginDescriptionFile getDescriptionFile() {
FILE: expansion/compatibility/PlaceholderAPI/src/main/java/combatlogx/expansion/compatibility/placeholderapi/PlaceholderAPIExpansion.java
class PlaceholderAPIExpansion (line 8) | public final class PlaceholderAPIExpansion extends Expansion {
method PlaceholderAPIExpansion (line 9) | public PlaceholderAPIExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 13) | @Override
method onEnable (line 18) | @Override
method onDisable (line 28) | @Override
method reloadConfig (line 33) | @Override
FILE: expansion/compatibility/PlayerParticles/src/main/java/combatlogx/expansion/compatibility/player/particles/ListenerPlayerParticles.java
class ListenerPlayerParticles (line 15) | public final class ListenerPlayerParticles extends ExpansionListener {
method ListenerPlayerParticles (line 18) | public ListenerPlayerParticles(@NotNull PlayerParticlesExpansion expan...
method onTag (line 23) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method onUntag (line 32) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method getPlayerParticlesExpansion (line 41) | private @NotNull PlayerParticlesExpansion getPlayerParticlesExpansion() {
method getConfiguration (line 45) | private @NotNull PlayerParticlesConfiguration getConfiguration() {
method isTagDisablesParticles (line 50) | private boolean isTagDisablesParticles() {
method isUntagEnablesParticles (line 55) | private boolean isUntagEnablesParticles() {
FILE: expansion/compatibility/PlayerParticles/src/main/java/combatlogx/expansion/compatibility/player/particles/PlayerParticlesConfiguration.java
class PlayerParticlesConfiguration (line 9) | public final class PlayerParticlesConfiguration implements IConfigurable {
method PlayerParticlesConfiguration (line 13) | public PlayerParticlesConfiguration() {
method load (line 18) | @Override
method isTagDisablesParticles (line 24) | public boolean isTagDisablesParticles() {
method setTagDisablesParticles (line 28) | public void setTagDisablesParticles(boolean tagDisablesParticles) {
method isUntagEnablesParticles (line 32) | public boolean isUntagEnablesParticles() {
method setUntagEnablesParticles (line 36) | public void setUntagEnablesParticles(boolean untagEnablesParticles) {
FILE: expansion/compatibility/PlayerParticles/src/main/java/combatlogx/expansion/compatibility/player/particles/PlayerParticlesExpansion.java
class PlayerParticlesExpansion (line 9) | public final class PlayerParticlesExpansion extends Expansion {
method PlayerParticlesExpansion (line 12) | public PlayerParticlesExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 17) | @Override
method onEnable (line 23) | @Override
method reloadConfig (line 33) | @Override
method onDisable (line 40) | @Override
method getConfiguration (line 45) | public @NotNull PlayerParticlesConfiguration getConfiguration() {
FILE: expansion/compatibility/PreciousStones/src/main/java/combatlogx/expansion/compatibility/region/preciousstones/ListenerPreciousStones.java
class ListenerPreciousStones (line 14) | public final class ListenerPreciousStones extends ExpansionListener {
method ListenerPreciousStones (line 17) | public ListenerPreciousStones(@NotNull PreciousStonesExpansion expansi...
method beforeFieldCreation (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getPreciousStonesExpansion (line 33) | private @NotNull PreciousStonesExpansion getPreciousStonesExpansion() {
method getConfiguration (line 37) | private @NotNull PreciousStonesConfiguration getConfiguration() {
method isPreventFieldCreation (line 42) | private boolean isPreventFieldCreation() {
FILE: expansion/compatibility/PreciousStones/src/main/java/combatlogx/expansion/compatibility/region/preciousstones/PreciousStonesConfiguration.java
class PreciousStonesConfiguration (line 9) | public final class PreciousStonesConfiguration implements IConfigurable {
method PreciousStonesConfiguration (line 12) | public PreciousStonesConfiguration() {
method load (line 16) | @Override
method isPreventFieldCreation (line 21) | public boolean isPreventFieldCreation() {
method setPreventFieldCreation (line 25) | public void setPreventFieldCreation(boolean preventFieldCreation) {
FILE: expansion/compatibility/PreciousStones/src/main/java/combatlogx/expansion/compatibility/region/preciousstones/PreciousStonesExpansion.java
class PreciousStonesExpansion (line 10) | public final class PreciousStonesExpansion extends RegionExpansion {
method PreciousStonesExpansion (line 14) | public PreciousStonesExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 20) | @Override
method getRegionHandler (line 25) | @Override
method reloadConfig (line 34) | @Override
method afterEnable (line 41) | @Override
method getPreciousStonesConfiguration (line 46) | public @NotNull PreciousStonesConfiguration getPreciousStonesConfigura...
FILE: expansion/compatibility/PreciousStones/src/main/java/combatlogx/expansion/compatibility/region/preciousstones/RegionHandlerPreciousStones.java
class RegionHandlerPreciousStones (line 17) | public final class RegionHandlerPreciousStones extends RegionHandler<Pre...
method RegionHandlerPreciousStones (line 18) | public RegionHandlerPreciousStones(@NotNull PreciousStonesExpansion ex...
method getEntryDeniedMessagePath (line 22) | @Override
method isSafeZone (line 27) | @Override
method getAPI (line 39) | private @NotNull IApi getAPI() {
method getFieldFlag (line 43) | private @Nullable FieldFlag getFieldFlag(@NotNull TagType tagType) {
FILE: expansion/compatibility/ProtectionStones/src/main/java/combatlogx/expansion/compatibility/region/protectionstones/ProtectionStonesConfiguration.java
class ProtectionStonesConfiguration (line 9) | public final class ProtectionStonesConfiguration implements IConfigurable {
method ProtectionStonesConfiguration (line 12) | public ProtectionStonesConfiguration() {
method load (line 16) | @Override
method isPreventAreaCreation (line 21) | public boolean isPreventAreaCreation() {
method setPreventAreaCreation (line 25) | public void setPreventAreaCreation(boolean preventAreaCreation) {
FILE: expansion/compatibility/ProtectionStones/src/main/java/combatlogx/expansion/compatibility/region/protectionstones/ProtectionStonesExpansion.java
class ProtectionStonesExpansion (line 10) | public final class ProtectionStonesExpansion extends RegionExpansion {
method ProtectionStonesExpansion (line 14) | public ProtectionStonesExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 20) | @Override
method getRegionHandler (line 27) | @Override
method afterEnable (line 36) | @Override
method reloadConfig (line 41) | @Override
method getProtectionStonesConfiguration (line 48) | public @NotNull ProtectionStonesConfiguration getProtectionStonesConfi...
FILE: expansion/compatibility/ProtectionStones/src/main/java/combatlogx/expansion/compatibility/region/protectionstones/ProtectionStonesListener.java
class ProtectionStonesListener (line 14) | public final class ProtectionStonesListener extends ExpansionListener {
method ProtectionStonesListener (line 17) | public ProtectionStonesListener(@NotNull ProtectionStonesExpansion exp...
method onCreateRegion (line 22) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method getProtectionStonesExpansion (line 33) | private @NotNull ProtectionStonesExpansion getProtectionStonesExpansio...
method getConfiguration (line 37) | private @NotNull ProtectionStonesConfiguration getConfiguration() {
method isPreventAreaCreation (line 42) | private boolean isPreventAreaCreation() {
FILE: expansion/compatibility/ProtectionStones/src/main/java/combatlogx/expansion/compatibility/region/protectionstones/RegionHandlerProtectionStones.java
class RegionHandlerProtectionStones (line 18) | public final class RegionHandlerProtectionStones extends RegionHandler<P...
method RegionHandlerProtectionStones (line 19) | public RegionHandlerProtectionStones(@NotNull ProtectionStonesExpansio...
method getEntryDeniedMessagePath (line 23) | @Override
method isSafeZone (line 28) | @Override
method getRegion (line 44) | private @Nullable PSRegion getRegion(@NotNull Location location) {
method getWorldGuardRegion (line 48) | private @Nullable ProtectedRegion getWorldGuardRegion(@NotNull Locatio...
FILE: expansion/compatibility/RedProtect/src/main/java/combatlogx/expansion/compatibility/region/redprotect/RedProtectExpansion.java
class RedProtectExpansion (line 9) | public final class RedProtectExpansion extends RegionExpansion {
method RedProtectExpansion (line 12) | public RedProtectExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/RedProtect/src/main/java/combatlogx/expansion/compatibility/region/redprotect/RegionHandlerRedProtect.java
class RegionHandlerRedProtect (line 17) | public class RegionHandlerRedProtect extends RegionHandler<RedProtectExp...
method RegionHandlerRedProtect (line 18) | public RegionHandlerRedProtect(@NotNull RedProtectExpansion expansion) {
method getEntryDeniedMessagePath (line 22) | @Override
method isSafeZone (line 27) | @Override
method getRedProtection (line 42) | private @NotNull RedProtect getRedProtection() {
method getAPI (line 46) | private @NotNull RedProtectAPI getAPI() {
method getRegion (line 51) | private @Nullable Region getRegion(@NotNull Location location) {
FILE: expansion/compatibility/Residence/src/main/java/combatlogx/expansion/compatibility/region/residence/RegionHandlerResidence.java
class RegionHandlerResidence (line 19) | public final class RegionHandlerResidence extends RegionHandler<Residenc...
method RegionHandlerResidence (line 20) | public RegionHandlerResidence(@NotNull ResidenceExpansion expansion) {
method getEntryDeniedMessagePath (line 24) | @Override
method isSafeZone (line 29) | @Override
method getInterface (line 45) | private @NotNull ResidenceInterface getInterface() {
method getResidence (line 49) | private @Nullable ClaimedResidence getResidence(@NotNull Location loca...
method getPermissions (line 54) | private @Nullable ResidencePermissions getPermissions(@NotNull Locatio...
method getFlag (line 63) | private @Nullable Flags getFlag(@NotNull TagType tagType) {
FILE: expansion/compatibility/Residence/src/main/java/combatlogx/expansion/compatibility/region/residence/ResidenceExpansion.java
class ResidenceExpansion (line 9) | public final class ResidenceExpansion extends RegionExpansion {
method ResidenceExpansion (line 12) | public ResidenceExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/SuperVanish/src/main/java/combatlogx/expansion/compatibility/supervanish/SuperVanishExpansion.java
class SuperVanishExpansion (line 9) | public final class SuperVanishExpansion extends VanishExpansion {
method SuperVanishExpansion (line 12) | public SuperVanishExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getVanishHandler (line 27) | @Override
FILE: expansion/compatibility/SuperVanish/src/main/java/combatlogx/expansion/compatibility/supervanish/VanishHandlerSuper.java
class VanishHandlerSuper (line 11) | public final class VanishHandlerSuper extends VanishHandler<SuperVanishE...
method VanishHandlerSuper (line 12) | public VanishHandlerSuper(@NotNull SuperVanishExpansion expansion) {
method isVanished (line 16) | @Override
FILE: expansion/compatibility/SuperiorSkyblock/src/main/java/combatlogx/expansion/compatibility/superior/skyblock/IslandWrapperSuperior.java
class IslandWrapperSuperior (line 16) | public class IslandWrapperSuperior extends IslandWrapper {
method IslandWrapperSuperior (line 19) | public IslandWrapperSuperior(@NotNull Island island) {
method getIsland (line 23) | private @NotNull Island getIsland() {
method getMembers (line 27) | @Override
FILE: expansion/compatibility/SuperiorSkyblock/src/main/java/combatlogx/expansion/compatibility/superior/skyblock/SkyBlockHandlerSuperior.java
class SkyBlockHandlerSuperior (line 18) | public final class SkyBlockHandlerSuperior extends SkyBlockHandler<Super...
method SkyBlockHandlerSuperior (line 19) | public SkyBlockHandlerSuperior(@NotNull SuperiorSkyblockExpansion expa...
method getIsland (line 23) | @Override
method getIsland (line 28) | @Override
method doesIslandMatch (line 33) | @Override
method getUser (line 46) | private @Nullable SuperiorPlayer getUser(@NotNull OfflinePlayer player) {
method getUnwrappedIsland (line 51) | private @Nullable Island getUnwrappedIsland(@NotNull OfflinePlayer pla...
method wrap (line 60) | private @Nullable IslandWrapper wrap(@Nullable Island island) {
FILE: expansion/compatibility/SuperiorSkyblock/src/main/java/combatlogx/expansion/compatibility/superior/skyblock/SuperiorSkyblockExpansion.java
class SuperiorSkyblockExpansion (line 9) | public final class SuperiorSkyblockExpansion extends SkyBlockExpansion {
method SuperiorSkyblockExpansion (line 12) | public SuperiorSkyblockExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getSkyBlockHandler (line 22) | @Override
FILE: expansion/compatibility/Towny/src/main/java/combatlogx/expansion/compatibility/region/towny/RegionHandlerTowny.java
class RegionHandlerTowny (line 22) | public final class RegionHandlerTowny extends RegionHandler<TownyExpansi...
method RegionHandlerTowny (line 23) | public RegionHandlerTowny(@NotNull TownyExpansion expansion) {
method getEntryDeniedMessagePath (line 27) | @Override
method isSafeZone (line 32) | @Override
method getConfiguration (line 66) | private @NotNull TownyConfiguration getConfiguration() {
method isPreventAllTownEntries (line 71) | private boolean isPreventAllTownEntries() {
method getAPI (line 76) | private @NotNull TownyAPI getAPI() {
method getTownBlock (line 80) | private @Nullable TownBlock getTownBlock(@NotNull Location location) {
method getTown (line 85) | private @Nullable Town getTown(@NotNull Location location) {
method getTownyWorld (line 94) | private @Nullable TownyWorld getTownyWorld(@NotNull Location location) {
method isOwnTown (line 103) | private boolean isOwnTown(@NotNull Player player, @NotNull Location lo...
method isUnderAttack (line 112) | private boolean isUnderAttack(@NotNull Town town) {
FILE: expansion/compatibility/Towny/src/main/java/combatlogx/expansion/compatibility/region/towny/TownyConfiguration.java
class TownyConfiguration (line 9) | public final class TownyConfiguration implements IConfigurable {
method TownyConfiguration (line 13) | public TownyConfiguration() {
method load (line 18) | @Override
method isPreventAllTownEntries (line 24) | public boolean isPreventAllTownEntries() {
method setPreventAllTownEntries (line 28) | public void setPreventAllTownEntries(boolean preventAllTownEntries) {
method isPreventJailDuringCombat (line 32) | public boolean isPreventJailDuringCombat() {
method setPreventJailDuringCombat (line 36) | public void setPreventJailDuringCombat(boolean preventJailDuringCombat) {
FILE: expansion/compatibility/Towny/src/main/java/combatlogx/expansion/compatibility/region/towny/TownyExpansion.java
class TownyExpansion (line 22) | public final class TownyExpansion extends RegionExpansion {
method TownyExpansion (line 26) | public TownyExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 32) | @Override
method checkDependencies (line 39) | @Override
method parseTownyMinorVersion (line 64) | private int parseTownyMinorVersion(@NotNull String version) {
method afterEnable (line 84) | @Override
method reloadConfig (line 90) | @Override
method getRegionHandler (line 99) | @Override
method getTownyConfiguration (line 108) | public @NotNull TownyConfiguration getTownyConfiguration() {
FILE: expansion/compatibility/Towny/src/main/java/combatlogx/expansion/compatibility/region/towny/listener/ListenerPrison.java
class ListenerPrison (line 17) | public final class ListenerPrison extends ExpansionListener {
method ListenerPrison (line 20) | public ListenerPrison(@NotNull TownyExpansion expansion) {
method onPrison (line 25) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method isPreventJailDuringCombat (line 47) | private boolean isPreventJailDuringCombat() {
FILE: expansion/compatibility/UltimateClaims/src/main/java/combatlogx/expansion/compatibility/region/ultimateclaims/RegionHandlerUltimateClaims.java
class RegionHandlerUltimateClaims (line 21) | public final class RegionHandlerUltimateClaims extends RegionHandler<Ult...
method RegionHandlerUltimateClaims (line 22) | public RegionHandlerUltimateClaims(@NotNull UltimateClaimsExpansion ex...
method getEntryDeniedMessagePath (line 26) | @Override
method isSafeZone (line 31) | @Override
method getUltimateClaims (line 46) | private @NotNull UltimateClaims getUltimateClaims() {
method getClaimManager (line 50) | private @NotNull ClaimManager getClaimManager() {
method getClaim (line 55) | private @Nullable Claim getClaim(@NotNull Location location) {
method getClaimSettings (line 61) | private @Nullable ClaimSettings getClaimSettings(@NotNull Location loc...
FILE: expansion/compatibility/UltimateClaims/src/main/java/combatlogx/expansion/compatibility/region/ultimateclaims/UltimateClaimsExpansion.java
class UltimateClaimsExpansion (line 9) | public final class UltimateClaimsExpansion extends RegionExpansion {
method UltimateClaimsExpansion (line 12) | public UltimateClaimsExpansion(@NotNull ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getRegionHandler (line 22) | @Override
FILE: expansion/compatibility/VanishNoPacket/src/main/java/combatlogx/expansion/compatibility/vnp/VanishHandlerNoPacket.java
class VanishHandlerNoPacket (line 13) | public final class VanishHandlerNoPacket extends VanishHandler<VanishNoP...
method VanishHandlerNoPacket (line 14) | public VanishHandlerNoPacket(@NotNull VanishNoPacketExpansion expansio...
method isVanished (line 18) | @Override
method getVanish (line 24) | private @NotNull VanishPlugin getVanish() {
method getVanishManager (line 28) | private @NotNull VanishManager getVanishManager() {
FILE: expansion/compatibility/VanishNoPacket/src/main/java/combatlogx/expansion/compatibility/vnp/VanishNoPacketExpansion.java
class VanishNoPacketExpansion (line 9) | public final class VanishNoPacketExpansion extends VanishExpansion {
method VanishNoPacketExpansion (line 12) | public VanishNoPacketExpansion(ICombatLogX plugin) {
method checkDependencies (line 17) | @Override
method getVanishHandler (line 22) | @Override
FILE: expansion/compatibility/WorldGuard/src/main/java/combatlogx/expansion/compatibility/region/world/guard/WorldGuardConfiguration.java
class WorldGuardConfiguration (line 9) | public final class WorldGuardConfiguration implements IConfigurable {
method WorldGuardConfiguration (line 12) | public WorldGuardConfiguration() {
method load (line 16) | @Override
method isUsePvpFlag (line 21) | public boolean isUsePvpFlag() {
method setUsePvpFlag (line 25) | public void setUsePvpFlag(boolean usePvpFlag) {
FILE: expansion/compatibility/WorldGuard/src/main/java/combatlogx/expansion/compatibility/region/world/guard/WorldGuardExpansion.java
class WorldGuardExpansion (line 15) | public final class WorldGuardExpansion extends RegionExpansion {
method WorldGuardExpansion (line 20) | public WorldGuardExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 27) | @Override
method checkDependencies (line 42) | @Override
method afterEnable (line 47) | @Override
method getRegionHandler (line 53) | @Override
method reloadConfig (line 62) | @Override
method getHookWorldGuard (line 71) | public @NotNull HookWorldGuard getHookWorldGuard() {
method getWorldGuardConfiguration (line 75) | public @NotNull WorldGuardConfiguration getWorldGuardConfiguration() {
FILE: expansion/compatibility/WorldGuard/src/main/java/combatlogx/expansion/compatibility/region/world/guard/handler/WorldGuardRegionHandler.java
class WorldGuardRegionHandler (line 28) | public final class WorldGuardRegionHandler extends RegionHandler<WorldGu...
method WorldGuardRegionHandler (line 29) | public WorldGuardRegionHandler(@NotNull WorldGuardExpansion expansion) {
method getEntryDeniedMessagePath (line 33) | @Override
method isSafeZone (line 41) | @Override
method getPvpState (line 74) | private @Nullable WrappedState getPvpState(@NotNull Player player, @No...
method getFlag (line 88) | private IWrappedFlag<WrappedState> getFlag(TagType tagType) {
method customPreventEntry (line 110) | @Override
FILE: expansion/compatibility/WorldGuard/src/main/java/combatlogx/expansion/compatibility/region/world/guard/hook/HookWorldGuard.java
class HookWorldGuard (line 14) | public final class HookWorldGuard {
method HookWorldGuard (line 26) | public HookWorldGuard(@NotNull WorldGuardExpansion expansion) {
method getExpansion (line 38) | private @NotNull WorldGuardExpansion getExpansion() {
method getLogger (line 42) | private @NotNull Logger getLogger() {
method registerFlags (line 47) | public void registerFlags() {
method getMythicMobCombatFlag (line 68) | public @Nullable IWrappedFlag<WrappedState> getMythicMobCombatFlag() {
method getUnknownCombatFlag (line 72) | public @Nullable IWrappedFlag<WrappedState> getUnknownCombatFlag() {
method getPlayerCombatFlag (line 76) | public @Nullable IWrappedFlag<WrappedState> getPlayerCombatFlag() {
method getDamageCombatFlag (line 80) | public @Nullable IWrappedFlag<WrappedState> getDamageCombatFlag() {
method getMobCombatFlag (line 84) | public @Nullable IWrappedFlag<WrappedState> getMobCombatFlag() {
method getNoTaggingFlag (line 88) | public @Nullable IWrappedFlag<Boolean> getNoTaggingFlag() {
method getRetagFlag (line 92) | public @Nullable IWrappedFlag<Boolean> getRetagFlag() {
method getPreventLeavingFlag (line 96) | public @Nullable IWrappedFlag<String> getPreventLeavingFlag() {
FILE: expansion/compatibility/WorldGuard/src/main/java/combatlogx/expansion/compatibility/region/world/guard/listener/ListenerPreventLeaving.java
class ListenerPreventLeaving (line 20) | public final class ListenerPreventLeaving extends RegionExpansionListener {
method ListenerPreventLeaving (line 23) | public ListenerPreventLeaving(@NotNull WorldGuardExpansion expansion) {
method onPlayerMove (line 28) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method getWorldGuardExpansion (line 42) | private @NotNull WorldGuardExpansion getWorldGuardExpansion() {
method getPreventLeavingId (line 46) | private @NotNull Optional<String> getPreventLeavingId(@NotNull Player ...
method isPreventLeaving (line 58) | private boolean isPreventLeaving(@NotNull Player player, @NotNull Loca...
FILE: expansion/compatibility/WorldGuard/src/main/java/combatlogx/expansion/compatibility/region/world/guard/listener/ListenerWorldGuard.java
class ListenerWorldGuard (line 27) | public final class ListenerWorldGuard extends ExpansionListener {
method ListenerWorldGuard (line 31) | public ListenerWorldGuard(@NotNull WorldGuardExpansion expansion) {
method beforeCombat (line 37) | @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
method onTeleport (line 48) | @EventHandler(priority = EventPriority.HIGHEST)
method onQuit (line 61) | @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
method getWorldGuardExpansion (line 68) | private @NotNull WorldGuardExpansion getWorldGuardExpansion() {
method isNoTaggingRegion (line 72) | private boolean isNoTaggingRegion(@NotNull Player player, @NotNull Loc...
FILE: expansion/compatibility/ZNPCsPlus/src/main/java/combatlogx/expansion/compatibility/znpc/CombatNpc.java
class CombatNpc (line 19) | public final class CombatNpc extends TaskDetails {
method CombatNpc (line 27) | public CombatNpc(@NotNull ZNPCExpansion expansion, @NotNull Npc origin...
method run (line 34) | @Override
method start (line 53) | public void start() {
method getOriginalNpc (line 62) | public @NotNull Npc getOriginalNpc() {
method getOwnerId (line 66) | public @NotNull UUID getOwnerId() {
method getOfflineOwner (line 70) | public @NotNull OfflinePlayer getOfflineOwner() {
method resetSurvivalTime (line 74) | public void resetSurvivalTime() {
method setEnemy (line 80) | public void setEnemy(@NotNull Player enemy) {
method getExpansion (line 84) | private @NotNull ZNPCExpansion getExpansion() {
method updateEnemySurvivalTicks (line 88) | private boolean updateEnemySurvivalTicks() {
FILE: expansion/compatibility/ZNPCsPlus/src/main/java/combatlogx/expansion/compatibility/znpc/CombatNpcManager.java
class CombatNpcManager (line 39) | public final class CombatNpcManager {
method CombatNpcManager (line 44) | public CombatNpcManager(@NotNull ZNPCExpansion expansion) {
method getExpansion (line 50) | private @NotNull ZNPCExpansion getExpansion() {
method getCombatLogX (line 54) | private @NotNull ICombatLogX getCombatLogX() {
method getData (line 58) | public @NotNull YamlConfiguration getData(@NotNull OfflinePlayer playe...
method saveData (line 63) | public void saveData(@NotNull OfflinePlayer player) {
method createCombatNpc (line 68) | public @NotNull CombatNpc createCombatNpc(@NotNull Player player, @Not...
method getCombatNpc (line 116) | public @Nullable CombatNpc getCombatNpc(@Nullable NPC npc) {
method getCombatNpc (line 125) | public @Nullable CombatNpc getCombatNpc(@NotNull OfflinePlayer player) {
method remove (line 130) | public void remove(@NotNull CombatNpc combatNpc) {
method removeAll (line 149) | public void removeAll() {
method saveNpc (line 159) | private void saveNpc(@NotNull OfflinePlayer player, @NotNull Npc npc) {
method saveHealth (line 168) | private void saveHealth(@NotNull OfflinePlayer player, @NotNull Npc np...
method saveLocation (line 172) | private void saveLocation(@NotNull OfflinePlayer player, @NotNull Npc ...
FILE: expansion/compatibility/ZNPCsPlus/src/main/java/combatlogx/expansion/compatibility/znpc/ZNPCExpansion.java
class ZNPCExpansion (line 13) | public final class ZNPCExpansion extends Expansion {
method ZNPCExpansion (line 20) | public ZNPCExpansion(@NotNull ICombatLogX plugin) {
method onLoad (line 30) | @Override
method onEnable (line 37) | @Override
method onDisable (line 49) | @Override
method reloadConfig (line 55) | @Override
method getConfiguration (line 65) | public @NotNull Configuration getConfiguration() {
method getNpcConfiguration (line 69) | public @NotNull NpcConfiguration getNpcConfiguration() {
method getCombatNpcManager (line 73) | public @NotNull CombatNpcManager getCombatNpcManager() {
method getInventoryManager (line 77) | public @NotNull InventoryManager getInventoryManager() {
method registerListeners (line 81) | private void registerListeners() {
FILE: expansion/compatibility/ZNPCsPlus/src/main/java/combatlogx/expansion/compatibility/znpc/configuration/Configuration.java
class Configuration (line 9) | public final class Configuration implements IConfigurable {
method Configuration (line 12) | public Configuration() {
method load (line 16) | @Override
method isNpcTagging (line 21) | public boolean isNpcTagging() {
method setNpcTagging (line 25) | public void setNpcTagging(boolean npcTagging) {
FILE: expansion/compatibility/ZNPCsPlus/src/main/java/combatlogx/expansion/compatibility/znpc/configuration/NpcConfiguration.java
class NpcConfiguration (line 16) | public final class NpcConfiguration implements IConfigurable {
method NpcConfiguration (line 35) | public NpcConfiguration(@NotNull ZNPCExpansion expansion) {
method getExpansion (line 55) | private @NotNull ZNPCExpansion getExpansion() {
method getLogger (line 59) | private @NotNull Logger getLogger() {
method load (line 63) | @Override
method isPreventPunishments (line 81) | public boolean isPreventPunishments() {
method setPreventPunishments (line 85) | public void setPreventPunishments(boolean preventPunishments) {
method isPreventLogin (line 89) | public boolean isPreventLogin() {
method setPreventLogin (line 93) | public void setPreventLogin(boolean preventLogin) {
method getMobType (line 97) | public @NotNull EntityType getMobType() {
method setMobType (line 101) | public void setMobType(@NotNull EntityType mobType) {
method setMobType (line 105) | private void setMobType(@Nullable String mobTypeName) {
method isStoreInventory (line 129) | public boolean isStoreInventory() {
method setStoreInventory (line 133) | public void setStoreInventory(boolean storeInventory) {
method isStoreLocation (line 137) | public boolean isStoreLocation() {
method setStoreLocation (line 141) | public void setStoreLocation(boolean storeLocation) {
method isMobTarget (line 145) | public boolean isMobTarget() {
method setMobTarget (line 149) | public void setMobTarget(boolean mobTarget) {
method getMobTargetRadius (line 153) | public double getMobTargetRadius() {
method setMobTargetRadius (line 157) | public void setMobTargetRadius(double mobTargetRadius) {
method getSurvivalTime (line 161) | public int getSurvivalTime() {
method setSurvivalTime (line 165) | public void setSurvivalTime(int survivalTime) {
method isStayUntilEnemyEscape (line 169) | public boolean isStayUntilEnemyEscape() {
method setStayUntilEnemyEscape (line 173) | public void setStayUntilEnemyEscape(boolean stayUntilEnemyEscape) {
method isStayUntilNoDamage (line 177) | public boolean isStayUntilNoDamage() {
method setStayUntilNoDamage (line 181) | public void setStayUntilNoDamage(boolean stayUntilNoDamage) {
method isPreventResurrect (line 185) | public boolean isPreventResurrect() {
method setPreventResurrect (line 189) | public void setPreventResurrect(boolean preventResurrect) {
method isTagPlayer (line 193) | public boolean isTagPlayer() {
method setTagPlayer (line 197) | public void setTagPlayer(boolean tagPlayer) {
method isAlwaysSpawnNpcOnQuit (line 201) | public boolean isAlwaysSpawnNpcOnQuit() {
method setAlwaysSpawnNpcOnQuit (line 205) | public void setAlwaysSpawnNpcOnQuit(boolean alwaysSpawnNpcOnQuit) {
method getCustomNpcNameFormat (line 209) | public @NotNull String getCustomNpcNameFormat() {
method setCustomNpcNameFormat (line 213) | public void setCustomNpcNameFormat(String customNpcNameFormat) {
FILE: expansion/compatibility/ZNPCsPlus/src/main/java/combatlogx/expansion/compatibility/znpc/listener/NpcExpansionListener.java
class NpcExpansionListener (line 18) | public abstract class NpcExpansionListener extends ExpansionListener {
method NpcExpansionListener (line 21) | public NpcExpansionListener(@NotNull ZNPCExpansion expansion) {
method getNpcExpansion (line 26) | protected final @NotN
Condensed preview — 662 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,052K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug-report.yml",
"chars": 2352,
"preview": "name: Bug Report\ndescription: Create a report that will help us resolve an issue.\nlabels:\n - Bug\n\nbody:\n - type: markd"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 314,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: \"Discord Server\"\n url: \"https://discord.gg/XMq2agT\"\n about: \""
},
{
"path": ".github/ISSUE_TEMPLATE/expansion-request.yml",
"chars": 1888,
"preview": "name: Expansion Request\ndescription: Make a suggestion for a new plugin compatibility expansion.\nlabels:\n - Feature Req"
},
{
"path": ".github/ISSUE_TEMPLATE/feature-requests.yml",
"chars": 1438,
"preview": "name: Feature Request\ndescription: Make a suggestion or submit a feature you already coded\nlabels:\n - Feature Request\n\n"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/default.md",
"chars": 781,
"preview": "## Description\n\n<!-- Please describe your pull request here. -->\n\n### Testing done\n\n<!-- Comment:\nProvide a clear descri"
},
{
"path": ".github/dependabot.yml",
"chars": 138,
"preview": "version: 2\nupdates:\n - package-ecosystem: gradle\n directory: \"/\"\n schedule:\n interval: daily\n open-pull-r"
},
{
"path": ".github/funding.yml",
"chars": 72,
"preview": "github:\n - \"SirBlobman\"\n\ncustom:\n - \"https://bit.ly/SirBlobmanDonate\"\n"
},
{
"path": ".gitignore",
"chars": 1310,
"preview": "##############################\n## Java\n##############################\n.mtj.tmp/\n*.class\n*.jar\n*.war\n*.ear\n*.nar\nhs_err_p"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 5222,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
},
{
"path": "CONTRIBUTING.MD",
"chars": 355,
"preview": "# CombatLogX Contribution Guide\n\n1) Try to keep the code style the same. Do not change the import order if possible.\n2) "
},
{
"path": "Jenkinsfile",
"chars": 1455,
"preview": "pipeline {\n agent any\n\n options {\n githubProjectProperty(projectUrlStr: \"https://github.com/SirBlobman/Comb"
},
{
"path": "LICENSE",
"chars": 35128,
"preview": "GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation,"
},
{
"path": "README.MD",
"chars": 3654,
"preview": "# CombatLogX\n\n[](https://github.com"
},
{
"path": "SECURITY.md",
"chars": 624,
"preview": "# Security Policy\n\n## Supported Versions\n\n| Version | Supported |\n|-------------------|--------------"
},
{
"path": "api/README.MD",
"chars": 3554,
"preview": "# CombatLogX API\n\nThis is the API module for CombatLogX. \nYou can use it to create new expansions or to check stuff wit"
},
{
"path": "api/build.gradle.kts",
"chars": 1387,
"preview": "fun getEnvOrProp(variableName: String, propertyName: String): String {\n val environmentProvider = providers.environme"
},
{
"path": "api/gradle.properties",
"chars": 36,
"preview": "version.spigot=1.11.2-R0.1-SNAPSHOT\n"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/ICombatLogX.java",
"chars": 3803,
"preview": "package com.github.sirblobman.combatlogx.api;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.github.sirblobman.a"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/ICombatLogXNeeded.java",
"chars": 343,
"preview": "package com.github.sirblobman.combatlogx.api;\n\nimport java.util.logging.Logger;\n\nimport org.jetbrains.annotations.NotNul"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/command/CombatLogCommand.java",
"chars": 1775,
"preview": "package com.github.sirblobman.combatlogx.api.command;\n\nimport java.util.Collections;\nimport java.util.List;\n\nimport org."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/command/CombatLogPlayerCommand.java",
"chars": 1759,
"preview": "package com.github.sirblobman.combatlogx.api.command;\n\nimport java.util.Collections;\nimport java.util.List;\n\nimport org."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/CommandConfiguration.java",
"chars": 4136,
"preview": "package com.github.sirblobman.combatlogx.api.configuration;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nim"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/MainConfiguration.java",
"chars": 11890,
"preview": "package com.github.sirblobman.combatlogx.api.configuration;\n\nimport java.util.Collection;\nimport java.util.Collections;\n"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/configuration/PunishConfiguration.java",
"chars": 4203,
"preview": "package com.github.sirblobman.combatlogx.api.configuration;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nim"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/CustomPlayerEvent.java",
"chars": 322,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.entity"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/CustomPlayerEventCancellable.java",
"chars": 618,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.entity"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/NPCDropItemEvent.java",
"chars": 2354,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.Locati"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerEnemyRemoveEvent.java",
"chars": 1539,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.entity"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerPreTagEvent.java",
"chars": 1898,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.jetbrains.anno"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerPunishEvent.java",
"chars": 1635,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport ja"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerReTagEvent.java",
"chars": 2564,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.jetbrains.anno"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerTagEvent.java",
"chars": 2633,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.jetbrains.anno"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/event/PlayerUntagEvent.java",
"chars": 1546,
"preview": "package com.github.sirblobman.combatlogx.api.event;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport ja"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/Expansion.java",
"chars": 6712,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.io"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionClassLoader.java",
"chars": 6785,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.io.File;\nimport java.lang.reflect.Constructor;\nimpo"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionComparator.java",
"chars": 1234,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.util.Comparator;\nimport java.util.List;\n\nimport org"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionDescription.java",
"chars": 3147,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.util.Collections;\nimport java.util.List;\n\nimport or"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionDescriptionBuilder.java",
"chars": 3396,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionListener.java",
"chars": 1649,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.util.Locale;\nimport java.util.logging.Level;\nimport"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionLogger.java",
"chars": 1207,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.util.logging.LogRecord;\nimport java.util.logging.Lo"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionManager.java",
"chars": 14448,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.io.BufferedReader;\nimport java.io.File;\nimport java"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/ExpansionWithDependencies.java",
"chars": 1212,
"preview": "package com.github.sirblobman.combatlogx.api.expansion;\n\nimport java.util.logging.Logger;\n\nimport org.jetbrains.annotati"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseExpansion.java",
"chars": 1298,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.disguise;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseExpansionListener.java",
"chars": 751,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.disguise;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseHandler.java",
"chars": 552,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.disguise;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/disguise/DisguiseListener.java",
"chars": 1018,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.disguise;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/RegionExpansion.java",
"chars": 3465,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region;\n\nimport java.io.File;\nimport java.io.IOException;\nimport "
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/RegionHandler.java",
"chars": 8033,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region;\n\nimport java.util.Locale;\nimport java.util.Map;\nimport ja"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/configuration/RegionExpansionConfiguration.java",
"chars": 3242,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region.configuration;\n\nimport java.util.Collection;\nimport java.u"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionExpansionListener.java",
"chars": 1214,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimpo"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionMoveListener.java",
"chars": 1821,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimpo"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionTeleportListener.java",
"chars": 1879,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimpo"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/listener/RegionVulnerableListener.java",
"chars": 3624,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region.listener;\n\nimport java.util.Collections;\nimport java.util."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/region/task/KnockbackPlayerTask.java",
"chars": 2570,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.region.task;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport o"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/IslandWrapper.java",
"chars": 489,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.skyblock;\n\nimport java.util.Set;\nimport java.util.UUID;\n\nimport o"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockExpansion.java",
"chars": 1298,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.skyblock;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockExpansionListener.java",
"chars": 751,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.skyblock;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockHandler.java",
"chars": 772,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.skyblock;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.j"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/skyblock/SkyBlockListener.java",
"chars": 985,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.skyblock;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org."
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansion.java",
"chars": 1895,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.vanish;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.gi"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansionConfiguration.java",
"chars": 1330,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.vanish;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishExpansionListener.java",
"chars": 1300,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.vanish;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.gi"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishHandler.java",
"chars": 477,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.vanish;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/expansion/vanish/VanishListener.java",
"chars": 1108,
"preview": "package com.github.sirblobman.combatlogx.api.expansion.vanish;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/listener/CombatListener.java",
"chars": 3507,
"preview": "package com.github.sirblobman.combatlogx.api.listener;\n\nimport java.util.Locale;\nimport java.util.logging.Logger;\n\nimpor"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ICombatManager.java",
"chars": 4186,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport java.util.List;\nimport java.util.Set;\nimport java.util.UUI"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ICrystalManager.java",
"chars": 529,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport java.util.UUID;\n\nimport org.jetbrains.annotations.NotNull;"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IDeathManager.java",
"chars": 1280,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport java.util.List;\n\nimport org.jetbrains.annotations.NotNull;"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IForgiveManager.java",
"chars": 701,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.jetbrains.an"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IPlaceholderManager.java",
"chars": 1396,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport java.util.List;\n\nimport org.jetbrains.annotations.NotNull;"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/IPunishManager.java",
"chars": 1417,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport java.util.List;\n\nimport org.jetbrains.annotations.NotNull;"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/manager/ITimerManager.java",
"chars": 924,
"preview": "package com.github.sirblobman.combatlogx.api.manager;\n\nimport java.util.Set;\n\nimport org.jetbrains.annotations.NotNull;\n"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/CitizensSlotType.java",
"chars": 572,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\nimport com.github.sirblobman.combatlogx.api.event.NPCDropItemEvent"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/CombatTag.java",
"chars": 2061,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\nimport java.lang.ref.WeakReference;\nimport java.util.UUID;\n\nimport"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/KillTime.java",
"chars": 531,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\nimport com.github.sirblobman.combatlogx.api.configuration.PunishCo"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/NoEntryMode.java",
"chars": 785,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\n/**\n * No Entry Mode is used in region compatibility expansions.\n "
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/SpecialPunishCommand.java",
"chars": 2023,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport ja"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/TagInformation.java",
"chars": 5764,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport j"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/TagReason.java",
"chars": 458,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\n/**\n * The reason for putting a player into combat.\n */\npublic enu"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/TagType.java",
"chars": 591,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\n/**\n * The type of combat that a player was tagged with.\n */\npubli"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/TimerType.java",
"chars": 377,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\n/**\n * The type of timer that will be used by CombatLogX\n */\npubli"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/TimerUpdater.java",
"chars": 895,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.entit"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/object/UntagReason.java",
"chars": 936,
"preview": "package com.github.sirblobman.combatlogx.api.object;\n\n/**\n * The reason for removing a player from combat.\n */\npublic en"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/placeholder/IPlaceholderExpansion.java",
"chars": 2643,
"preview": "package com.github.sirblobman.combatlogx.api.placeholder;\n\nimport java.util.List;\n\nimport org.jetbrains.annotations.NotN"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/placeholder/PlaceholderHelper.java",
"chars": 2154,
"preview": "package com.github.sirblobman.combatlogx.api.placeholder;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.jetbrain"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/utility/CommandHelper.java",
"chars": 2779,
"preview": "package com.github.sirblobman.combatlogx.api.utility;\n\nimport java.util.Locale;\nimport java.util.logging.Level;\nimport j"
},
{
"path": "api/src/main/java/com/github/sirblobman/combatlogx/api/utility/EntityHelper.java",
"chars": 2189,
"preview": "package com.github.sirblobman.combatlogx.api.utility;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.enti"
},
{
"path": "api/src/main/resources/default-region-expansion-config.yml",
"chars": 1461,
"preview": "# How should CombatLogX prevent players from entering non-pvp areas?\n# Valid Modes:\n# DISABLED - Ignore players.\n# KNO"
},
{
"path": "build.gradle.kts",
"chars": 1288,
"preview": "val baseVersion = providers.gradleProperty(\"version.base\").get()\nval betaVersion = providers.gradleProperty(\"version.bet"
},
{
"path": "builder/build.gradle.kts",
"chars": 4604,
"preview": "plugins {\n id(\"distribution\")\n}\n\nval coreJar: Configuration by configurations.creating\nval pluginJar: Configuration b"
},
{
"path": "builder/src/main/resources/README.TXT",
"chars": 1752,
"preview": "Installation Guide:\n\n1. Download the CombatLogX.zip file from Jenkins or SpigotMC.\n\n2. Extract the contents of the Comba"
},
{
"path": "crowdin.yml",
"chars": 242,
"preview": "project_id: '459244'\npull_request_title: 'Automatic Crowdin Translation Updates'\nfiles:\n - source: \"/plugin/src/main/re"
},
{
"path": "expansion/action-bar/README.MD",
"chars": 348,
"preview": "# CombatLogX Expansion: Action Bar\n\nThe action bar expansion shows an action bar to every player that is in combat.\n\n## "
},
{
"path": "expansion/action-bar/gradle.properties",
"chars": 53,
"preview": "expansion.name=ActionBar\nexpansion.prefix=Action Bar\n"
},
{
"path": "expansion/action-bar/src/main/java/combatlogx/expansion/action/bar/ActionBarExpansion.java",
"chars": 1927,
"preview": "package combatlogx.expansion.action.bar;\n\nimport java.util.logging.Logger;\n\nimport com.github.sirblobman.api.configurati"
},
{
"path": "expansion/action-bar/src/main/java/combatlogx/expansion/action/bar/ActionBarUpdater.java",
"chars": 6490,
"preview": "package combatlogx.expansion.action.bar;\n\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport java.util."
},
{
"path": "expansion/action-bar/src/main/java/combatlogx/expansion/action/bar/configuration/ActionBarConfiguration.java",
"chars": 3846,
"preview": "package combatlogx.expansion.action.bar.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.con"
},
{
"path": "expansion/action-bar/src/main/resources/config.yml",
"chars": 1596,
"preview": "# This option is here to quickly toggle this expansion on a live server that must stay online.\n# We recommend that you r"
},
{
"path": "expansion/action-bar/src/main/resources/expansion.yml",
"chars": 190,
"preview": "name: \"${expansionName}\"\nprefix: \"${expansionPrefix}\"\ndescription: \"${expansionDescription}\"\n\nmain: \"combatlogx.expansio"
},
{
"path": "expansion/boss-bar/README.MD",
"chars": 357,
"preview": "# CombatLogX Expansion: Boss Bar\n\nThe boss bar expansion shows a boss bar to every player that is in combat.\n\n## Feature"
},
{
"path": "expansion/boss-bar/gradle.properties",
"chars": 49,
"preview": "expansion.name=BossBar\nexpansion.prefix=Boss Bar\n"
},
{
"path": "expansion/boss-bar/src/main/java/combatlogx/expansion/boss/bar/BossBarConfiguration.java",
"chars": 5930,
"preview": "package combatlogx.expansion.boss.bar;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.configuration.Confi"
},
{
"path": "expansion/boss-bar/src/main/java/combatlogx/expansion/boss/bar/BossBarExpansion.java",
"chars": 1729,
"preview": "package combatlogx.expansion.boss.bar;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.configuration.file."
},
{
"path": "expansion/boss-bar/src/main/java/combatlogx/expansion/boss/bar/BossBarUpdater.java",
"chars": 10748,
"preview": "package combatlogx.expansion.boss.bar;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.UUID;\nimport java."
},
{
"path": "expansion/boss-bar/src/main/resources/config.yml",
"chars": 2124,
"preview": "# This option is here to quickly toggle this expansion on a live server that must stay online.\n# We recommend that you r"
},
{
"path": "expansion/boss-bar/src/main/resources/expansion.yml",
"chars": 186,
"preview": "name: \"${expansionName}\"\nprefix: \"${expansionPrefix}\"\ndescription: \"${expansionDescription}\"\n\nmain: \"combatlogx.expansio"
},
{
"path": "expansion/build.gradle.kts",
"chars": 843,
"preview": "tasks.named(\"jar\") {\n enabled = false\n}\n\nsubprojects {\n val expansionName = findProperty(\"expansion.name\") ?: \"inv"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/ICheatPreventionExpansion.java",
"chars": 1939,
"preview": "package combatlogx.expansion.cheat.prevention;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.github.sirblobman."
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IBlockConfiguration.java",
"chars": 621,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.gith"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IBucketConfiguration.java",
"chars": 478,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.gith"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IChatConfiguration.java",
"chars": 216,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport com.github.sirblobman.api.configuration.IConfigurab"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ICommandConfiguration.java",
"chars": 497,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\nimport org.jetbr"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IConfiguration.java",
"chars": 213,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport com.github.sirblobman.api.configuration.IConfigurab"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IEntityConfiguration.java",
"chars": 225,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport com.github.sirblobman.api.configuration.IConfigurab"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IFlightConfiguration.java",
"chars": 323,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport com.github.sirblobman.api.configuration.IConfigurab"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IGameModeConfiguration.java",
"chars": 346,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.bukkit.GameMode;\n\nimport com.github.sirblobman."
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IInventoryConfiguration.java",
"chars": 427,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukk"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IItemConfiguration.java",
"chars": 477,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport com.github.sirblobman.api.configuration.IConfigurab"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/IPotionConfiguration.java",
"chars": 337,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukk"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ITeleportConfiguration.java",
"chars": 525,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukk"
},
{
"path": "expansion/cheat-prevention/abstract/src/main/java/combatlogx/expansion/cheat/prevention/listener/CheatPreventionListener.java",
"chars": 3002,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.uti"
},
{
"path": "expansion/cheat-prevention/build.gradle.kts",
"chars": 855,
"preview": "import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar\n\nplugins {\n id(\"com.gradleup.shadow\") version \"9.2."
},
{
"path": "expansion/cheat-prevention/gradle.properties",
"chars": 101,
"preview": "version.spigot=1.16.5-R0.1-SNAPSHOT\nexpansion.name=CheatPrevention\nexpansion.prefix=Cheat Prevention\n"
},
{
"path": "expansion/cheat-prevention/legacy/build.gradle.kts",
"chars": 82,
"preview": "dependencies {\n compileOnly(project(\":expansion:cheat-prevention:abstract\"))\n}\n"
},
{
"path": "expansion/cheat-prevention/legacy/gradle.properties",
"chars": 35,
"preview": "version.spigot=1.8.8-R0.1-SNAPSHOT\n"
},
{
"path": "expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerChat.java",
"chars": 1441,
"preview": "package combatlogx.expansion.cheat.prevention.listener.legacy;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerLegacyItemPickup.java",
"chars": 1469,
"preview": "package combatlogx.expansion.cheat.prevention.listener.legacy;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerLegacyPortalCreate.java",
"chars": 1608,
"preview": "package combatlogx.expansion.cheat.prevention.listener.legacy;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "expansion/cheat-prevention/legacy/src/main/java/combatlogx/expansion/cheat/prevention/listener/legacy/ListenerLegacyPotions.java",
"chars": 3893,
"preview": "package combatlogx.expansion.cheat.prevention.listener.legacy;\n\nimport java.util.Collection;\n\nimport org.jetbrains.annot"
},
{
"path": "expansion/cheat-prevention/modern/build.gradle.kts",
"chars": 229,
"preview": "repositories {\n maven(\"https://repo.papermc.io/repository/maven-public/\")\n}\n\ndependencies {\n compileOnly(project(\""
},
{
"path": "expansion/cheat-prevention/modern/gradle.properties",
"chars": 36,
"preview": "version.spigot=1.21.1-R0.1-SNAPSHOT\n"
},
{
"path": "expansion/cheat-prevention/modern/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerInventoriesModern.java",
"chars": 3552,
"preview": "package combatlogx.expansion.cheat.prevention.listener.modern;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "expansion/cheat-prevention/paper/build.gradle.kts",
"chars": 291,
"preview": "repositories {\n maven(\"https://repo.papermc.io/repository/maven-public/\")\n}\n\ndependencies {\n val spigotVersion = p"
},
{
"path": "expansion/cheat-prevention/paper/gradle.properties",
"chars": 36,
"preview": "version.spigot=1.16.5-R0.1-SNAPSHOT\n"
},
{
"path": "expansion/cheat-prevention/paper/src/main/java/combatlogx/expansion/cheat/prevention/listener/paper/ListenerPaperChat.java",
"chars": 1384,
"preview": "package combatlogx.expansion.cheat.prevention.listener.paper;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.buk"
},
{
"path": "expansion/cheat-prevention/paper/src/main/java/combatlogx/expansion/cheat/prevention/listener/paper/ListenerPaperEntityInsideBlock.java",
"chars": 2078,
"preview": "package combatlogx.expansion.cheat.prevention.listener.paper;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.buk"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/CheatPreventionExpansion.java",
"chars": 13048,
"preview": "package combatlogx.expansion.cheat.prevention;\n\nimport java.util.logging.Logger;\n\nimport combatlogx.expansion.cheat.prev"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/BlockConfiguration.java",
"chars": 4272,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport java.util.Collection;\nimport java.util.Collections;"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/BucketConfiguration.java",
"chars": 2896,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport java.util.Collection;\nimport java.util.Collections;"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ChatConfiguration.java",
"chars": 626,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.bukkit.configuration.ConfigurationSection;\n\npub"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/CheatPreventionConfiguration.java",
"chars": 663,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.bukkit.configuration.ConfigurationSection;\n\npub"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/CommandConfiguration.java",
"chars": 4492,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\ni"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/EntityConfiguration.java",
"chars": 676,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.bukkit.configuration.ConfigurationSection;\n\npub"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/FlightConfiguration.java",
"chars": 1755,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.bukkit.configuration.ConfigurationSection;\n\npub"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/GameModeConfiguration.java",
"chars": 1944,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukk"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/InventoryConfiguration.java",
"chars": 2403,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport java.util.Collection;\nimport java.util.Collections;"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/ItemConfiguration.java",
"chars": 3430,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport org.bukkit.configuration.ConfigurationSection;\n\npub"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/PotionConfiguration.java",
"chars": 2319,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\ni"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/configuration/TeleportConfiguration.java",
"chars": 3338,
"preview": "package combatlogx.expansion.cheat.prevention.configuration;\n\nimport java.util.Collection;\nimport java.util.Collections;"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerBlocks.java",
"chars": 4070,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport java.util.Locale;\n\nimport org.jetbrains.annotations.NotN"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerBuckets.java",
"chars": 2383,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.Ma"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerCommands.java",
"chars": 4587,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.uti"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerDrop.java",
"chars": 1289,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerElytra.java",
"chars": 2827,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerEnderPearl.java",
"chars": 1517,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport combatlogx.expansion.cheat.prevention.ICheatPreventionEx"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerEntities.java",
"chars": 1354,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerFlight.java",
"chars": 3727,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport java.util.HashSet;\nimport java.util.Set;\nimport java.uti"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerGameMode.java",
"chars": 3323,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.Ga"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerInventories.java",
"chars": 3333,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerRiptide.java",
"chars": 1947,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerTeleport.java",
"chars": 5026,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/ListenerTotem.java",
"chars": 1453,
"preview": "package combatlogx.expansion.cheat.prevention.listener;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.en"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerModernItemPickup.java",
"chars": 1557,
"preview": "package combatlogx.expansion.cheat.prevention.listener.modern;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerModernPortalCreate.java",
"chars": 1595,
"preview": "package combatlogx.expansion.cheat.prevention.listener.modern;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bu"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/listener/modern/ListenerModernPotions.java",
"chars": 2557,
"preview": "package combatlogx.expansion.cheat.prevention.listener.modern;\n\nimport java.util.Collection;\n\nimport org.jetbrains.annot"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/task/ElytraRetagTask.java",
"chars": 2567,
"preview": "package combatlogx.expansion.cheat.prevention.task;\n\nimport java.util.List;\n\nimport org.jetbrains.annotations.NotNull;\n\n"
},
{
"path": "expansion/cheat-prevention/src/main/java/combatlogx/expansion/cheat/prevention/task/FlightRetagTask.java",
"chars": 2482,
"preview": "package combatlogx.expansion.cheat.prevention.task;\n\nimport java.util.List;\n\nimport org.jetbrains.annotations.NotNull;\n\n"
},
{
"path": "expansion/cheat-prevention/src/main/resources/blocks.yml",
"chars": 1201,
"preview": "# Should players be prevented from interacting with blocks during combat?\n# Default: false\nprevent-interaction: false\n\n#"
},
{
"path": "expansion/cheat-prevention/src/main/resources/buckets.yml",
"chars": 846,
"preview": "# Should players be prevented from emptying buckets during combat?\n# Default: false\nprevent-bucket-empty: false\n\n# Shoul"
},
{
"path": "expansion/cheat-prevention/src/main/resources/chat.yml",
"chars": 102,
"preview": "# Should players be prevented from typing in chat during combat?\n# Default: false\ndisable-chat: false\n"
},
{
"path": "expansion/cheat-prevention/src/main/resources/commands.yml",
"chars": 938,
"preview": "# How much time do players have to wait to run commands AFTER the combat timer has ended?\n# The time is in seconds\n# Def"
},
{
"path": "expansion/cheat-prevention/src/main/resources/config.yml",
"chars": 121,
"preview": "# How long should the expansion wait before sending the same message again?\n# Default: 30 (seconds)\nmessage-cooldown: 30"
},
{
"path": "expansion/cheat-prevention/src/main/resources/entities.yml",
"chars": 118,
"preview": "# Should players be prevented from right-clicking entities during combat?\n# Default: false\nprevent-interaction: false\n"
},
{
"path": "expansion/cheat-prevention/src/main/resources/expansion.yml",
"chars": 203,
"preview": "name: \"${expansionName}\"\nprefix: \"${expansionPrefix}\"\ndescription: \"${expansionDescription}\"\n\nmain: \"combatlogx.expansio"
},
{
"path": "expansion/cheat-prevention/src/main/resources/flight.yml",
"chars": 707,
"preview": "# Should players be prevented from flying during combat?\n# Default: true\nprevent-flying: true\n\n# If a players flight is "
},
{
"path": "expansion/cheat-prevention/src/main/resources/game-mode.yml",
"chars": 552,
"preview": "# Should players be prevented from changing game modes during combat?\n# Default: true\nprevent-switching: true\n\n# If 'pre"
},
{
"path": "expansion/cheat-prevention/src/main/resources/inventories.yml",
"chars": 622,
"preview": "# Should CombatLogX close a player's inventory when they are first tagged into combat?\n# Default: true\nclose: true\n\n# Sh"
},
{
"path": "expansion/cheat-prevention/src/main/resources/items.yml",
"chars": 1292,
"preview": "# Should players be prevented from dropping items during combat?\n# Default: true\nprevent-drop: true\n\n# Should players be"
},
{
"path": "expansion/cheat-prevention/src/main/resources/potions.yml",
"chars": 521,
"preview": "# This is a list of potion effects that will be removed when a player is tagged.\n# You can find a list of valid potion t"
},
{
"path": "expansion/cheat-prevention/src/main/resources/teleportation.yml",
"chars": 1249,
"preview": "# Should players be prevented from using nether/end portals during combat?\n# Default: true\nprevent-portals: true\n\n# Shou"
},
{
"path": "expansion/compatibility/ASkyBlock/build.gradle.kts",
"chars": 152,
"preview": "repositories {\n maven(\"https://repo.codemc.io/repository/maven-public/\")\n}\n\ndependencies {\n compileOnly(\"com.waste"
},
{
"path": "expansion/compatibility/ASkyBlock/gradle.properties",
"chars": 72,
"preview": "expansion.name=CompatASkyBlock\nexpansion.prefix=ASkyBlock Compatibility\n"
},
{
"path": "expansion/compatibility/ASkyBlock/src/main/java/combatlogx/expansion/compatibility/askyblock/ASkyBlockExpansion.java",
"chars": 806,
"preview": "package combatlogx.expansion.compatibility.askyblock;\n\nimport com.github.sirblobman.combatlogx.api.ICombatLogX;\nimport c"
},
{
"path": "expansion/compatibility/ASkyBlock/src/main/java/combatlogx/expansion/compatibility/askyblock/listener/ListenerASkyBlock.java",
"chars": 1918,
"preview": "package combatlogx.expansion.compatibility.askyblock.listener;\n\nimport java.util.List;\nimport java.util.UUID;\n\nimport or"
},
{
"path": "expansion/compatibility/ASkyBlock/src/main/resources/expansion.yml",
"chars": 235,
"preview": "name: \"${expansionName}\"\nprefix: \"${expansionPrefix}\"\ndescription: \"${expansionDescription}\"\n\nmain: \"combatlogx.expansio"
},
{
"path": "expansion/compatibility/AngelChest/build.gradle.kts",
"chars": 141,
"preview": "repositories {\n maven(\"https://nexus.sirblobman.xyz/proxy-public\")\n}\n\ndependencies {\n compileOnly(\"de.jeff_media:A"
},
{
"path": "expansion/compatibility/AngelChest/gradle.properties",
"chars": 74,
"preview": "expansion.name=CompatAngelChest\nexpansion.prefix=AngelChest Compatibility\n"
},
{
"path": "expansion/compatibility/AngelChest/src/main/java/combatlogx/expansion/compatibility/angelchest/AngelChestConfiguration.java",
"chars": 1483,
"preview": "package combatlogx.expansion.compatibility.angelchest;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.con"
},
{
"path": "expansion/compatibility/AngelChest/src/main/java/combatlogx/expansion/compatibility/angelchest/AngelChestExpansion.java",
"chars": 1405,
"preview": "package combatlogx.expansion.compatibility.angelchest;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport com.github.sir"
},
{
"path": "expansion/compatibility/AngelChest/src/main/java/combatlogx/expansion/compatibility/angelchest/ListenerAngelChest.java",
"chars": 2903,
"preview": "package combatlogx.expansion.compatibility.angelchest;\n\nimport org.jetbrains.annotations.NotNull;\n\nimport org.bukkit.ent"
},
{
"path": "expansion/compatibility/AngelChest/src/main/resources/config.yml",
"chars": 356,
"preview": "# Should CombatLogX prevent players from breaking AngelChests during combat?\n# Default: true\nprevent-breaking: true\n\n# S"
},
{
"path": "expansion/compatibility/AngelChest/src/main/resources/expansion.yml",
"chars": 237,
"preview": "name: \"${expansionName}\"\nprefix: \"${expansionPrefix}\"\ndescription: \"${expansionDescription}\"\n\nmain: \"combatlogx.expansio"
},
{
"path": "expansion/compatibility/BSkyBlock/build.gradle.kts",
"chars": 365,
"preview": "repositories {\n maven(\"https://repo.codemc.io/repository/bentoboxworld/\")\n maven(\"https://repo.codemc.io/repositor"
},
{
"path": "expansion/compatibility/BSkyBlock/gradle.properties",
"chars": 72,
"preview": "expansion.name=CompatBSkyBlock\nexpansion.prefix=BSkyBlock Compatibility\n"
},
{
"path": "expansion/compatibility/BSkyBlock/src/main/java/combatlogx/expansion/compatibility/bskyblock/BSkyBlockExpansion.java",
"chars": 1003,
"preview": "package combatlogx.expansion.compatibility.bskyblock;\n\nimport com.github.sirblobman.combatlogx.api.ICombatLogX;\nimport c"
},
{
"path": "expansion/compatibility/BSkyBlock/src/main/java/combatlogx/expansion/compatibility/bskyblock/hook/HookBentoBox.java",
"chars": 1446,
"preview": "package combatlogx.expansion.compatibility.bskyblock.hook;\n\nimport java.util.Locale;\nimport java.util.Optional;\nimport j"
},
{
"path": "expansion/compatibility/BSkyBlock/src/main/java/combatlogx/expansion/compatibility/bskyblock/listener/ListenerBSkyBlock.java",
"chars": 2727,
"preview": "package combatlogx.expansion.compatibility.bskyblock.listener;\n\nimport java.util.Optional;\nimport java.util.Set;\nimport "
},
{
"path": "expansion/compatibility/BSkyBlock/src/main/resources/expansion.yml",
"chars": 234,
"preview": "name: \"${expansionName}\"\nprefix: \"${expansionPrefix}\"\ndescription: \"${expansionDescription}\"\n\nmain: \"combatlogx.expansio"
},
{
"path": "expansion/compatibility/CMI/build.gradle.kts",
"chars": 62,
"preview": "dependencies {\n compileOnly(\"net.zrips:CMI-API:9.7.4.1\")\n}\n"
},
{
"path": "expansion/compatibility/CMI/gradle.properties",
"chars": 60,
"preview": "expansion.name=CompatCMI\nexpansion.prefix=CMI Compatibility\n"
}
]
// ... and 462 more files (download for full content)
About this extraction
This page contains the full source code of the SirBlobman/CombatLogX GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 662 files (1.8 MB), approximately 470.1k tokens, and a symbol index with 2998 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.