Full Code of DenizenScript/Denizen for AI

dev ed356260423a cached
1151 files
7.6 MB
2.1M tokens
11067 symbols
1 requests
Download .txt
Showing preview only (8,279K chars total). Download the full file or copy to clipboard to get everything.
Repository: DenizenScript/Denizen
Branch: dev
Commit: ed356260423a
Files: 1151
Total size: 7.6 MB

Directory structure:
gitextract_bj40aszd/

├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   └── ISSUE_TEMPLATE/
│       ├── bug-report.md
│       ├── feature-request.md
│       └── i-m-having-trouble.md
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE.txt
├── README.md
├── dist/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── dist/
│                               └── Dist.java
├── paper/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── paper/
│                               ├── PaperEventHelpers.java
│                               ├── PaperModule.java
│                               ├── datacomponents/
│                               │   ├── ComponentAdaptersRegistry.java
│                               │   ├── DataComponentAdapter.java
│                               │   ├── FoodAdapter.java
│                               │   ├── GliderAdapter.java
│                               │   ├── ItemModelAdapter.java
│                               │   ├── MaxDurabilityAdapter.java
│                               │   ├── MaxStackSizeAdapter.java
│                               │   └── RarityAdapter.java
│                               ├── events/
│                               │   ├── AnvilBlockDamagedScriptEvent.java
│                               │   ├── AreaEnterExitScriptEventPaperImpl.java
│                               │   ├── BellRingScriptEvent.java
│                               │   ├── BlockPreDispenseScriptEvent.java
│                               │   ├── CreeperIgnitesScriptEvent.java
│                               │   ├── DragonEggFormScriptEvent.java
│                               │   ├── EntityAddToWorldScriptEvent.java
│                               │   ├── EntityKnocksbackEntityScriptEvent.java
│                               │   ├── EntityLoadCrossbowScriptEvent.java
│                               │   ├── EntityPathfindScriptEvent.java
│                               │   ├── EntityRemoveFromWorldScriptEvent.java
│                               │   ├── EntityStepsOnScriptEvent.java
│                               │   ├── EntityTeleportedByPortalScriptEvent.java
│                               │   ├── ExperienceOrbMergeScriptEvent.java
│                               │   ├── PlayerAbsorbsExperienceScriptEvent.java
│                               │   ├── PlayerBeaconEffectScriptEvent.java
│                               │   ├── PlayerChangesFramedItemScriptEvent.java
│                               │   ├── PlayerChoosesArrowScriptEvent.java
│                               │   ├── PlayerChunkUnloadScriptEvent.java
│                               │   ├── PlayerClicksFakeEntityScriptEvent.java
│                               │   ├── PlayerClicksInRecipeBookScriptEvent.java
│                               │   ├── PlayerClientOptionsChangeScriptEvent.java
│                               │   ├── PlayerCompletesAdvancementScriptEventPaperImpl.java
│                               │   ├── PlayerDeepSleepScriptEvent.java
│                               │   ├── PlayerElytraBoostScriptEvent.java
│                               │   ├── PlayerEquipsArmorScriptEvent.java
│                               │   ├── PlayerGrantedAdvancementCriterionScriptEvent.java
│                               │   ├── PlayerInventorySlotChangeScriptEvent.java
│                               │   ├── PlayerItemTakesDamageScriptEventPaperImpl.java
│                               │   ├── PlayerJumpsScriptEventPaperImpl.java
│                               │   ├── PlayerLecternPageChangeScriptEvent.java
│                               │   ├── PlayerLoomPatternSelectScriptEvent.java
│                               │   ├── PlayerNamesEntityScriptEvent.java
│                               │   ├── PlayerOpenSignScriptEvent.java
│                               │   ├── PlayerPreparesGrindstoneCraftScriptEvent.java
│                               │   ├── PlayerQuitsScriptEventPaperImpl.java
│                               │   ├── PlayerRaiseLowerItemScriptEventPaperImpl.java
│                               │   ├── PlayerReceivesLinksScriptEvent.java
│                               │   ├── PlayerSelectsStonecutterRecipeScriptEvent.java
│                               │   ├── PlayerSetSpawnScriptEvent.java
│                               │   ├── PlayerShieldDisableScriptEvent.java
│                               │   ├── PlayerSpectatesEntityScriptEvent.java
│                               │   ├── PlayerStopsSpectatingScriptEvent.java
│                               │   ├── PlayerTracksEntityScriptEvent.java
│                               │   ├── PlayerTradesWithMerchantScriptEvent.java
│                               │   ├── PreEntitySpawnScriptEvent.java
│                               │   ├── PrePlayerAttackEntityScriptEvent.java
│                               │   ├── ProjectileCollideScriptEvent.java
│                               │   ├── ServerListPingScriptEventPaperImpl.java
│                               │   ├── ServerResourcesReloadedScriptEvent.java
│                               │   ├── SkeletonHorseTrapScriptEvent.java
│                               │   ├── TNTPrimesScriptEvent.java
│                               │   ├── TargetBlockHitScriptEvent.java
│                               │   ├── UnknownCommandScriptEvent.java
│                               │   ├── VaultChangesStateScriptEvent.java
│                               │   ├── WardenChangesAngerLevelScriptEvent.java
│                               │   └── WorldGameRuleChangeScriptEvent.java
│                               ├── properties/
│                               │   ├── EntityArmsRaised.java
│                               │   ├── EntityAutoExpire.java
│                               │   ├── EntityBodyStingers.java
│                               │   ├── EntityCanTick.java
│                               │   ├── EntityCarryingEgg.java
│                               │   ├── EntityDrinkingPotion.java
│                               │   ├── EntityEggLayTime.java
│                               │   ├── EntityFriction.java
│                               │   ├── EntityLeftHanded.java
│                               │   ├── EntityReputation.java
│                               │   ├── EntityShouldBurn.java
│                               │   ├── EntitySneaking.java
│                               │   ├── EntityWitherInvulnerable.java
│                               │   ├── ItemArmorStand.java
│                               │   ├── ItemRemovedComponents.java
│                               │   ├── PaperElementExtensions.java
│                               │   ├── PaperEntityExtensions.java
│                               │   ├── PaperItemExtensions.java
│                               │   ├── PaperPlayerExtensions.java
│                               │   └── PaperWorldExtensions.java
│                               ├── tags/
│                               │   └── PaperTagBase.java
│                               └── utilities/
│                                   ├── BlockTagsSetter.java
│                                   └── PaperAPIToolsImpl.java
├── plugin/
│   ├── lib/
│   │   └── Vault.jar
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── denizenscript/
│           │           └── denizen/
│           │               ├── Denizen.java
│           │               ├── events/
│           │               │   ├── BukkitScriptEvent.java
│           │               │   ├── ScriptEventRegistry.java
│           │               │   ├── block/
│           │               │   │   ├── BellRingScriptEvent.java
│           │               │   │   ├── BlockBuiltScriptEvent.java
│           │               │   │   ├── BlockBurnsScriptEvent.java
│           │               │   │   ├── BlockCooksSmeltsItemScriptEvent.java
│           │               │   │   ├── BlockDestroyedByExplosionEvent.java
│           │               │   │   ├── BlockDispensesScriptEvent.java
│           │               │   │   ├── BlockEquipsItemScriptEvent.java
│           │               │   │   ├── BlockExplodesScriptEvent.java
│           │               │   │   ├── BlockFadesScriptEvent.java
│           │               │   │   ├── BlockFallsScriptEvent.java
│           │               │   │   ├── BlockFormsScriptEvent.java
│           │               │   │   ├── BlockGrowsScriptEvent.java
│           │               │   │   ├── BlockIgnitesScriptEvent.java
│           │               │   │   ├── BlockPhysicsScriptEvent.java
│           │               │   │   ├── BlockShearEntityScriptEvent.java
│           │               │   │   ├── BlockSpreadsScriptEvent.java
│           │               │   │   ├── BrewingStandFueledScriptEvent.java
│           │               │   │   ├── BrewingStartsScriptEvent.java
│           │               │   │   ├── BrewsScriptEvent.java
│           │               │   │   ├── CauldronLevelChangeScriptEvent.java
│           │               │   │   ├── CrafterCraftsScriptEvent.java
│           │               │   │   ├── DragonEggMovesScriptEvent.java
│           │               │   │   ├── FurnaceBurnsItemScriptEvent.java
│           │               │   │   ├── FurnaceStartsSmeltingScriptEvent.java
│           │               │   │   ├── LeafDecaysScriptEvent.java
│           │               │   │   ├── LiquidLevelChangeScriptEvent.java
│           │               │   │   ├── LiquidSpreadScriptEvent.java
│           │               │   │   ├── LootDispensesFromBlockScriptEvent.java
│           │               │   │   ├── MoistureChangeScriptEvent.java
│           │               │   │   ├── NoteBlockPlaysNoteScriptEvent.java
│           │               │   │   ├── PistonExtendsScriptEvent.java
│           │               │   │   ├── PistonRetractsScriptEvent.java
│           │               │   │   ├── RedstoneScriptEvent.java
│           │               │   │   ├── SpongeAbsorbsScriptEvent.java
│           │               │   │   ├── TNTPrimesScriptEvent.java
│           │               │   │   └── VaultDisplaysItemScriptEvent.java
│           │               │   ├── bukkit/
│           │               │   │   ├── ExhaustedNPCEvent.java
│           │               │   │   ├── SavesReloadEvent.java
│           │               │   │   └── ScriptReloadEvent.java
│           │               │   ├── entity/
│           │               │   │   ├── AreaEffectCloudApplyScriptEvent.java
│           │               │   │   ├── AreaEnterExitScriptEvent.java
│           │               │   │   ├── CreeperPoweredScriptEvent.java
│           │               │   │   ├── DragonPhaseChangeScriptEvent.java
│           │               │   │   ├── EntityAirLevelChangeScriptEvent.java
│           │               │   │   ├── EntityBreaksHangingScriptEvent.java
│           │               │   │   ├── EntityBreedScriptEvent.java
│           │               │   │   ├── EntityChangesBlockScriptEvent.java
│           │               │   │   ├── EntityChangesPoseScriptEvent.java
│           │               │   │   ├── EntityCombustsScriptEvent.java
│           │               │   │   ├── EntityCreatePortalScriptEvent.java
│           │               │   │   ├── EntityDamagedScriptEvent.java
│           │               │   │   ├── EntityDeathScriptEvent.java
│           │               │   │   ├── EntityDespawnScriptEvent.java
│           │               │   │   ├── EntityDropsItemScriptEvent.java
│           │               │   │   ├── EntityEntersPortalScriptEvent.java
│           │               │   │   ├── EntityEntersVehicleScriptEvent.java
│           │               │   │   ├── EntityExitsPortalScriptEvent.java
│           │               │   │   ├── EntityExitsVehicleScriptEvent.java
│           │               │   │   ├── EntityExplodesScriptEvent.java
│           │               │   │   ├── EntityExplosionPrimesScriptEvent.java
│           │               │   │   ├── EntityFoodLevelChangeScriptEvent.java
│           │               │   │   ├── EntityFormsBlockScriptEvent.java
│           │               │   │   ├── EntityGlideScriptEvent.java
│           │               │   │   ├── EntityGoesIntoBlockScriptEvent.java
│           │               │   │   ├── EntityHealsScriptEvent.java
│           │               │   │   ├── EntityInteractScriptEvent.java
│           │               │   │   ├── EntityKilledScriptEvent.java
│           │               │   │   ├── EntityPicksUpItemScriptEvent.java
│           │               │   │   ├── EntityPotionEffectScriptEvent.java
│           │               │   │   ├── EntityResurrectScriptEvent.java
│           │               │   │   ├── EntityShootsBowScriptEvent.java
│           │               │   │   ├── EntitySpawnScriptEvent.java
│           │               │   │   ├── EntitySpawnerSpawnScriptEvent.java
│           │               │   │   ├── EntitySpellCastScriptEvent.java
│           │               │   │   ├── EntitySwimScriptEvent.java
│           │               │   │   ├── EntityTamesScriptEvent.java
│           │               │   │   ├── EntityTargetsScriptEvent.java
│           │               │   │   ├── EntityTeleportScriptEvent.java
│           │               │   │   ├── EntityTransformScriptEvent.java
│           │               │   │   ├── EntityUnleashedScriptEvent.java
│           │               │   │   ├── ExperienceBottleBreaksScriptEvent.java
│           │               │   │   ├── FireworkBurstsScriptEvent.java
│           │               │   │   ├── HangingBreaksScriptEvent.java
│           │               │   │   ├── HorseJumpsScriptEvent.java
│           │               │   │   ├── PigZappedScriptEvent.java
│           │               │   │   ├── PiglinBarterScriptEvent.java
│           │               │   │   ├── ProjectileHitScriptEvent.java
│           │               │   │   ├── ProjectileLaunchedScriptEvent.java
│           │               │   │   ├── SheepDyedScriptEvent.java
│           │               │   │   ├── SheepRegrowsScriptEvent.java
│           │               │   │   ├── SlimeSplitsScriptEvent.java
│           │               │   │   ├── VillagerAcquiresTradeScriptEvent.java
│           │               │   │   ├── VillagerChangesProfessionScriptEvent.java
│           │               │   │   └── VillagerReplenishesTradeScriptEvent.java
│           │               │   ├── item/
│           │               │   │   ├── InventoryPicksUpItemScriptEvent.java
│           │               │   │   ├── ItemDespawnsScriptEvent.java
│           │               │   │   ├── ItemEnchantedScriptEvent.java
│           │               │   │   ├── ItemMergesScriptEvent.java
│           │               │   │   ├── ItemMoveScriptEvent.java
│           │               │   │   ├── ItemRecipeFormedScriptEvent.java
│           │               │   │   └── ItemSpawnsScriptEvent.java
│           │               │   ├── npc/
│           │               │   │   ├── NPCNavigationScriptEvent.java
│           │               │   │   ├── NPCOpensScriptEvent.java
│           │               │   │   ├── NPCSpawnScriptEvent.java
│           │               │   │   └── NPCStuckScriptEvent.java
│           │               │   ├── player/
│           │               │   │   ├── BiomeEnterExitScriptEvent.java
│           │               │   │   ├── BlockDropsItemScriptEvent.java
│           │               │   │   ├── ChatScriptEvent.java
│           │               │   │   ├── HotbarScrollScriptEvent.java
│           │               │   │   ├── PlayerAnimatesScriptEvent.java
│           │               │   │   ├── PlayerArmorStandManipulateScriptEvent.java
│           │               │   │   ├── PlayerBreaksBlockScriptEvent.java
│           │               │   │   ├── PlayerBreaksItemScriptEvent.java
│           │               │   │   ├── PlayerChangesGamemodeScriptEvent.java
│           │               │   │   ├── PlayerChangesMainHandScriptEvent.java
│           │               │   │   ├── PlayerChangesSignScriptEvent.java
│           │               │   │   ├── PlayerChangesWorldScriptEvent.java
│           │               │   │   ├── PlayerChangesXPScriptEvent.java
│           │               │   │   ├── PlayerClicksBlockScriptEvent.java
│           │               │   │   ├── PlayerClicksInInventoryScriptEvent.java
│           │               │   │   ├── PlayerClosesInvScriptEvent.java
│           │               │   │   ├── PlayerCompletesAdvancementScriptEvent.java
│           │               │   │   ├── PlayerConsumesScriptEvent.java
│           │               │   │   ├── PlayerCraftsItemScriptEvent.java
│           │               │   │   ├── PlayerDamagesBlockScriptEvent.java
│           │               │   │   ├── PlayerDragsInInvScriptEvent.java
│           │               │   │   ├── PlayerEditsBookScriptEvent.java
│           │               │   │   ├── PlayerEmptiesBucketScriptEvent.java
│           │               │   │   ├── PlayerEntersBedScriptEvent.java
│           │               │   │   ├── PlayerFillsBucketScriptEvent.java
│           │               │   │   ├── PlayerFishesScriptEvent.java
│           │               │   │   ├── PlayerFlyingScriptEvent.java
│           │               │   │   ├── PlayerHearsSoundScriptEvent.java
│           │               │   │   ├── PlayerIncreasesExhaustionLevelScriptEvent.java
│           │               │   │   ├── PlayerInputScriptEvent.java
│           │               │   │   ├── PlayerItemTakesDamageScriptEvent.java
│           │               │   │   ├── PlayerJoinsScriptEvent.java
│           │               │   │   ├── PlayerJumpScriptEvent.java
│           │               │   │   ├── PlayerKickedScriptEvent.java
│           │               │   │   ├── PlayerLeashesEntityScriptEvent.java
│           │               │   │   ├── PlayerLeavesBedScriptEvent.java
│           │               │   │   ├── PlayerLevelsUpScriptEvent.java
│           │               │   │   ├── PlayerLocaleChangeScriptEvent.java
│           │               │   │   ├── PlayerLoginScriptEvent.java
│           │               │   │   ├── PlayerMendsItemScriptEvent.java
│           │               │   │   ├── PlayerOpensInvScriptEvent.java
│           │               │   │   ├── PlayerPickupArrowScriptEvent.java
│           │               │   │   ├── PlayerPlacesBlockScriptEvent.java
│           │               │   │   ├── PlayerPlacesHangingScriptEvent.java
│           │               │   │   ├── PlayerPreLoginScriptEvent.java
│           │               │   │   ├── PlayerPreparesAnvilCraftScriptEvent.java
│           │               │   │   ├── PlayerPreparesEnchantScriptEvent.java
│           │               │   │   ├── PlayerPreparesSmithingTableScriptEvent.java
│           │               │   │   ├── PlayerQuitsScriptEvent.java
│           │               │   │   ├── PlayerRaiseLowerItemScriptEvent.java
│           │               │   │   ├── PlayerReceivesActionbarScriptEvent.java
│           │               │   │   ├── PlayerReceivesCommandsScriptEvent.java
│           │               │   │   ├── PlayerReceivesMessageScriptEvent.java
│           │               │   │   ├── PlayerReceivesPacketScriptEvent.java
│           │               │   │   ├── PlayerReceivesTablistUpdateScriptEvent.java
│           │               │   │   ├── PlayerRecipeDiscoverScriptEvent.java
│           │               │   │   ├── PlayerRespawnsScriptEvent.java
│           │               │   │   ├── PlayerRightClicksEntityScriptEvent.java
│           │               │   │   ├── PlayerRiptideScriptEvent.java
│           │               │   │   ├── PlayerSendPacketScriptEvent.java
│           │               │   │   ├── PlayerShearsScriptEvent.java
│           │               │   │   ├── PlayerSmithsItemScriptEvent.java
│           │               │   │   ├── PlayerSneakScriptEvent.java
│           │               │   │   ├── PlayerSprintScriptEvent.java
│           │               │   │   ├── PlayerStandsOnScriptEvent.java
│           │               │   │   ├── PlayerStatisticIncrementsScriptEvent.java
│           │               │   │   ├── PlayerSteersEntityScriptEvent.java
│           │               │   │   ├── PlayerStepsOnScriptEvent.java
│           │               │   │   ├── PlayerStopsDamagingBlockScriptEvent.java
│           │               │   │   ├── PlayerSwapsItemsScriptEvent.java
│           │               │   │   ├── PlayerTakesFromFurnaceScriptEvent.java
│           │               │   │   ├── PlayerTakesFromLecternScriptEvent.java
│           │               │   │   ├── PlayerThrowsEggScriptEvent.java
│           │               │   │   ├── PlayerTriggersRaidScriptEvent.java
│           │               │   │   ├── PlayerUsesPortalScriptEvent.java
│           │               │   │   ├── PlayerWalkScriptEvent.java
│           │               │   │   ├── PlayerWalksOverScriptEvent.java
│           │               │   │   └── ResourcePackStatusScriptEvent.java
│           │               │   ├── server/
│           │               │   │   ├── CommandScriptEvent.java
│           │               │   │   ├── InternalEventScriptEvent.java
│           │               │   │   ├── ListPingScriptEvent.java
│           │               │   │   ├── ServerPrestartScriptEvent.java
│           │               │   │   ├── ServerStartScriptEvent.java
│           │               │   │   └── TabCompleteScriptEvent.java
│           │               │   ├── vehicle/
│           │               │   │   ├── VehicleCollidesBlockScriptEvent.java
│           │               │   │   ├── VehicleCollidesEntityScriptEvent.java
│           │               │   │   ├── VehicleCreatedScriptEvent.java
│           │               │   │   ├── VehicleDamagedScriptEvent.java
│           │               │   │   ├── VehicleDestroyedScriptEvent.java
│           │               │   │   └── VehicleMoveScriptEvent.java
│           │               │   └── world/
│           │               │       ├── ChunkLoadEntitiesScriptEvent.java
│           │               │       ├── ChunkLoadScriptEvent.java
│           │               │       ├── ChunkUnloadEntitiesScriptEvent.java
│           │               │       ├── ChunkUnloadScriptEvent.java
│           │               │       ├── GenericGameEventScriptEvent.java
│           │               │       ├── LightningStrikesScriptEvent.java
│           │               │       ├── LingeringPotionSplashScriptEvent.java
│           │               │       ├── LootGenerateScriptEvent.java
│           │               │       ├── PortalCreateScriptEvent.java
│           │               │       ├── PotionSplashScriptEvent.java
│           │               │       ├── RaidFinishesScriptEvent.java
│           │               │       ├── RaidScriptEvent.java
│           │               │       ├── RaidSpawnsWaveScriptEvent.java
│           │               │       ├── RaidStopsScriptEvent.java
│           │               │       ├── SpawnChangeScriptEvent.java
│           │               │       ├── StructureGrowsScriptEvent.java
│           │               │       ├── ThunderChangesScriptEvent.java
│           │               │       ├── TimeChangeScriptEvent.java
│           │               │       ├── WeatherChangesScriptEvent.java
│           │               │       ├── WorldInitsScriptEvent.java
│           │               │       ├── WorldLoadsScriptEvent.java
│           │               │       ├── WorldSavesScriptEvent.java
│           │               │       └── WorldUnloadsScriptEvent.java
│           │               ├── nms/
│           │               │   ├── NMSHandler.java
│           │               │   ├── NMSVersion.java
│           │               │   ├── abstracts/
│           │               │   │   ├── AnimationHelper.java
│           │               │   │   ├── BiomeNMS.java
│           │               │   │   ├── BlockLight.java
│           │               │   │   ├── ImprovedOfflinePlayer.java
│           │               │   │   ├── ProfileEditor.java
│           │               │   │   └── Sidebar.java
│           │               │   ├── enums/
│           │               │   │   └── CustomEntityType.java
│           │               │   ├── interfaces/
│           │               │   │   ├── AdvancementHelper.java
│           │               │   │   ├── BlockHelper.java
│           │               │   │   ├── ChunkHelper.java
│           │               │   │   ├── CustomEntity.java
│           │               │   │   ├── CustomEntityHelper.java
│           │               │   │   ├── EnchantmentHelper.java
│           │               │   │   ├── EntityAnimation.java
│           │               │   │   ├── EntityHelper.java
│           │               │   │   ├── FakeArrow.java
│           │               │   │   ├── FakePlayer.java
│           │               │   │   ├── FishingHelper.java
│           │               │   │   ├── ItemHelper.java
│           │               │   │   ├── ItemProjectile.java
│           │               │   │   ├── PacketHelper.java
│           │               │   │   ├── PlayerHelper.java
│           │               │   │   ├── WorldHelper.java
│           │               │   │   └── packets/
│           │               │   │       ├── PacketInResourcePackStatus.java
│           │               │   │       ├── PacketInSteerVehicle.java
│           │               │   │       ├── PacketOutChat.java
│           │               │   │       ├── PacketOutSetSlot.java
│           │               │   │       ├── PacketOutSpawnEntity.java
│           │               │   │       ├── PacketOutTradeList.java
│           │               │   │       └── PacketOutWindowItems.java
│           │               │   └── util/
│           │               │       ├── Advancement.java
│           │               │       ├── PlayerProfile.java
│           │               │       └── TradeOffer.java
│           │               ├── npc/
│           │               │   ├── DenizenNPCHelper.java
│           │               │   ├── TraitRegistry.java
│           │               │   ├── actions/
│           │               │   │   └── ActionHandler.java
│           │               │   ├── speech/
│           │               │   │   └── DenizenSpeechContext.java
│           │               │   └── traits/
│           │               │       ├── AssignmentTrait.java
│           │               │       ├── ConstantsTrait.java
│           │               │       ├── DenizenFlagsTrait.java
│           │               │       ├── FishingTrait.java
│           │               │       ├── HealthTrait.java
│           │               │       ├── HungerTrait.java
│           │               │       ├── InvisibleTrait.java
│           │               │       ├── MirrorEquipmentTrait.java
│           │               │       ├── MirrorNameTrait.java
│           │               │       ├── MirrorTrait.java
│           │               │       ├── MobproxTrait.java
│           │               │       ├── NicknameTrait.java
│           │               │       ├── PushableTrait.java
│           │               │       ├── SittingTrait.java
│           │               │       ├── SleepingTrait.java
│           │               │       ├── SneakingTrait.java
│           │               │       └── TriggerTrait.java
│           │               ├── objects/
│           │               │   ├── AreaContainmentObject.java
│           │               │   ├── BiomeTag.java
│           │               │   ├── ChunkTag.java
│           │               │   ├── CuboidTag.java
│           │               │   ├── EllipsoidTag.java
│           │               │   ├── EnchantmentTag.java
│           │               │   ├── EntityFormObject.java
│           │               │   ├── EntityTag.java
│           │               │   ├── InventoryTag.java
│           │               │   ├── ItemTag.java
│           │               │   ├── LocationTag.java
│           │               │   ├── MaterialTag.java
│           │               │   ├── NPCTag.java
│           │               │   ├── PlayerTag.java
│           │               │   ├── PluginTag.java
│           │               │   ├── PolygonTag.java
│           │               │   ├── TradeTag.java
│           │               │   ├── WorldTag.java
│           │               │   └── properties/
│           │               │       ├── PropertyRegistry.java
│           │               │       ├── bukkit/
│           │               │       │   ├── BukkitBinaryTagExtensions.java
│           │               │       │   ├── BukkitColorExtensions.java
│           │               │       │   ├── BukkitElementExtensions.java
│           │               │       │   ├── BukkitListExtensions.java
│           │               │       │   ├── BukkitMapExtensions.java
│           │               │       │   ├── BukkitQueueExtensions.java
│           │               │       │   └── BukkitScriptExtensions.java
│           │               │       ├── entity/
│           │               │       │   ├── EntityAI.java
│           │               │       │   ├── EntityAge.java
│           │               │       │   ├── EntityAgeLocked.java
│           │               │       │   ├── EntityAggressive.java
│           │               │       │   ├── EntityAnger.java
│           │               │       │   ├── EntityAngry.java
│           │               │       │   ├── EntityAreaEffectCloud.java
│           │               │       │   ├── EntityArmorBonus.java
│           │               │       │   ├── EntityArmorPose.java
│           │               │       │   ├── EntityArms.java
│           │               │       │   ├── EntityArrowDamage.java
│           │               │       │   ├── EntityArrowPierceLevel.java
│           │               │       │   ├── EntityAttributeBaseValues.java
│           │               │       │   ├── EntityAttributeModifiers.java
│           │               │       │   ├── EntityAwake.java
│           │               │       │   ├── EntityAware.java
│           │               │       │   ├── EntityBackgroundColor.java
│           │               │       │   ├── EntityBasePlate.java
│           │               │       │   ├── EntityBeamTarget.java
│           │               │       │   ├── EntityBoatType.java
│           │               │       │   ├── EntityBodyArrows.java
│           │               │       │   ├── EntityBoundingBox.java
│           │               │       │   ├── EntityBrightness.java
│           │               │       │   ├── EntityCanBreakDoors.java
│           │               │       │   ├── EntityCanJoinRaid.java
│           │               │       │   ├── EntityCannotEnterHive.java
│           │               │       │   ├── EntityCharged.java
│           │               │       │   ├── EntityChestCarrier.java
│           │               │       │   ├── EntityColor.java
│           │               │       │   ├── EntityConversionPlayer.java
│           │               │       │   ├── EntityConversionTime.java
│           │               │       │   ├── EntityCritical.java
│           │               │       │   ├── EntityCustomName.java
│           │               │       │   ├── EntityCustomNameVisible.java
│           │               │       │   ├── EntityDarkDuration.java
│           │               │       │   ├── EntityDefaultBackground.java
│           │               │       │   ├── EntityDirection.java
│           │               │       │   ├── EntityDisabledSlots.java
│           │               │       │   ├── EntityDisplay.java
│           │               │       │   ├── EntityDropsItem.java
│           │               │       │   ├── EntityEquipment.java
│           │               │       │   ├── EntityEquipmentDropChance.java
│           │               │       │   ├── EntityExploredLocations.java
│           │               │       │   ├── EntityExplosionFire.java
│           │               │       │   ├── EntityExplosionRadius.java
│           │               │       │   ├── EntityEyeTargetLocation.java
│           │               │       │   ├── EntityFirework.java
│           │               │       │   ├── EntityFireworkLifetime.java
│           │               │       │   ├── EntityFixed.java
│           │               │       │   ├── EntityFlags.java
│           │               │       │   ├── EntityFlower.java
│           │               │       │   ├── EntityFramed.java
│           │               │       │   ├── EntityFreezeDuration.java
│           │               │       │   ├── EntityGlowColor.java
│           │               │       │   ├── EntityGravity.java
│           │               │       │   ├── EntityHasNectar.java
│           │               │       │   ├── EntityHasStung.java
│           │               │       │   ├── EntityHealth.java
│           │               │       │   ├── EntityHeight.java
│           │               │       │   ├── EntityHive.java
│           │               │       │   ├── EntityHorns.java
│           │               │       │   ├── EntityImmune.java
│           │               │       │   ├── EntityInWaterTime.java
│           │               │       │   ├── EntityInterpolationDuration.java
│           │               │       │   ├── EntityInterpolationStart.java
│           │               │       │   ├── EntityInventory.java
│           │               │       │   ├── EntityInvulnerable.java
│           │               │       │   ├── EntityIsShowingBottom.java
│           │               │       │   ├── EntityItem.java
│           │               │       │   ├── EntityItemInHand.java
│           │               │       │   ├── EntityItemInOffHand.java
│           │               │       │   ├── EntityJumpStrength.java
│           │               │       │   ├── EntityKnockback.java
│           │               │       │   ├── EntityLeftRotation.java
│           │               │       │   ├── EntityLineWidth.java
│           │               │       │   ├── EntityMarker.java
│           │               │       │   ├── EntityMaterial.java
│           │               │       │   ├── EntityMaxFuseTicks.java
│           │               │       │   ├── EntityMaxTemper.java
│           │               │       │   ├── EntityOnBack.java
│           │               │       │   ├── EntityOpacity.java
│           │               │       │   ├── EntityPainting.java
│           │               │       │   ├── EntityPatrolLeader.java
│           │               │       │   ├── EntityPatrolTarget.java
│           │               │       │   ├── EntityPickupStatus.java
│           │               │       │   ├── EntityPivot.java
│           │               │       │   ├── EntityPlayerCreated.java
│           │               │       │   ├── EntityPlayingDead.java
│           │               │       │   ├── EntityPotion.java
│           │               │       │   ├── EntityPotionEffects.java
│           │               │       │   ├── EntityPotionType.java
│           │               │       │   ├── EntityPowered.java
│           │               │       │   ├── EntityProfession.java
│           │               │       │   ├── EntityProperty.java
│           │               │       │   ├── EntityRightRotation.java
│           │               │       │   ├── EntityRiptide.java
│           │               │       │   ├── EntityRolling.java
│           │               │       │   ├── EntityRotation.java
│           │               │       │   ├── EntityScale.java
│           │               │       │   ├── EntityScoreboardTags.java
│           │               │       │   ├── EntitySeeThrough.java
│           │               │       │   ├── EntityShadowRadius.java
│           │               │       │   ├── EntityShadowStrength.java
│           │               │       │   ├── EntitySheared.java
│           │               │       │   ├── EntityShivering.java
│           │               │       │   ├── EntityShotAtAngle.java
│           │               │       │   ├── EntityShulkerPeek.java
│           │               │       │   ├── EntitySilent.java
│           │               │       │   ├── EntitySitting.java
│           │               │       │   ├── EntitySize.java
│           │               │       │   ├── EntitySmall.java
│           │               │       │   ├── EntitySneezing.java
│           │               │       │   ├── EntitySpeed.java
│           │               │       │   ├── EntitySpell.java
│           │               │       │   ├── EntityState.java
│           │               │       │   ├── EntityStepHeight.java
│           │               │       │   ├── EntityStrength.java
│           │               │       │   ├── EntityTame.java
│           │               │       │   ├── EntityTeleportDuration.java
│           │               │       │   ├── EntityTemper.java
│           │               │       │   ├── EntityText.java
│           │               │       │   ├── EntityTextShadowed.java
│           │               │       │   ├── EntityTrades.java
│           │               │       │   ├── EntityTranslation.java
│           │               │       │   ├── EntityTrapTime.java
│           │               │       │   ├── EntityTrapped.java
│           │               │       │   ├── EntityVariant.java
│           │               │       │   ├── EntityViewRange.java
│           │               │       │   ├── EntityVillagerExperience.java
│           │               │       │   ├── EntityVillagerLevel.java
│           │               │       │   ├── EntityVisible.java
│           │               │       │   ├── EntityVisualFire.java
│           │               │       │   └── EntityWidth.java
│           │               │       ├── inventory/
│           │               │       │   ├── InventoryContents.java
│           │               │       │   ├── InventoryHolder.java
│           │               │       │   ├── InventorySize.java
│           │               │       │   ├── InventoryTitle.java
│           │               │       │   ├── InventoryTrades.java
│           │               │       │   └── InventoryUniquifier.java
│           │               │       ├── item/
│           │               │       │   ├── ItemArmorPose.java
│           │               │       │   ├── ItemAttributeModifiers.java
│           │               │       │   ├── ItemAttributeNBT.java
│           │               │       │   ├── ItemBaseColor.java
│           │               │       │   ├── ItemBlockMaterial.java
│           │               │       │   ├── ItemBook.java
│           │               │       │   ├── ItemBookGeneration.java
│           │               │       │   ├── ItemCanDestroy.java
│           │               │       │   ├── ItemCanPlaceOn.java
│           │               │       │   ├── ItemChargedProjectile.java
│           │               │       │   ├── ItemColor.java
│           │               │       │   ├── ItemComponentsPatch.java
│           │               │       │   ├── ItemCustomData.java
│           │               │       │   ├── ItemCustomModel.java
│           │               │       │   ├── ItemDisplayname.java
│           │               │       │   ├── ItemDurability.java
│           │               │       │   ├── ItemEnchantments.java
│           │               │       │   ├── ItemFirework.java
│           │               │       │   ├── ItemFireworkPower.java
│           │               │       │   ├── ItemFlags.java
│           │               │       │   ├── ItemFrameInvisible.java
│           │               │       │   ├── ItemHidden.java
│           │               │       │   ├── ItemInstrument.java
│           │               │       │   ├── ItemInventoryContents.java
│           │               │       │   ├── ItemKnowledgeBookRecipes.java
│           │               │       │   ├── ItemLock.java
│           │               │       │   ├── ItemLodestoneLocation.java
│           │               │       │   ├── ItemLodestoneTracked.java
│           │               │       │   ├── ItemLore.java
│           │               │       │   ├── ItemMap.java
│           │               │       │   ├── ItemNBT.java
│           │               │       │   ├── ItemPatterns.java
│           │               │       │   ├── ItemPotion.java
│           │               │       │   ├── ItemProperty.java
│           │               │       │   ├── ItemQuantity.java
│           │               │       │   ├── ItemRawNBT.java
│           │               │       │   ├── ItemRepairCost.java
│           │               │       │   ├── ItemScript.java
│           │               │       │   ├── ItemSignContents.java
│           │               │       │   ├── ItemSignIsWaxed.java
│           │               │       │   ├── ItemSkullskin.java
│           │               │       │   ├── ItemSpawnerCount.java
│           │               │       │   ├── ItemSpawnerDelay.java
│           │               │       │   ├── ItemSpawnerMaxNearbyEntities.java
│           │               │       │   ├── ItemSpawnerPlayerRange.java
│           │               │       │   ├── ItemSpawnerRange.java
│           │               │       │   ├── ItemSpawnerType.java
│           │               │       │   ├── ItemTrim.java
│           │               │       │   └── ItemUnbreakable.java
│           │               │       ├── material/
│           │               │       │   ├── MaterialAge.java
│           │               │       │   ├── MaterialAttached.java
│           │               │       │   ├── MaterialAttachmentFace.java
│           │               │       │   ├── MaterialBlockType.java
│           │               │       │   ├── MaterialBrewingStand.java
│           │               │       │   ├── MaterialCampfire.java
│           │               │       │   ├── MaterialCount.java
│           │               │       │   ├── MaterialDelay.java
│           │               │       │   ├── MaterialDirectional.java
│           │               │       │   ├── MaterialDistance.java
│           │               │       │   ├── MaterialDrags.java
│           │               │       │   ├── MaterialFaces.java
│           │               │       │   ├── MaterialHalf.java
│           │               │       │   ├── MaterialHinge.java
│           │               │       │   ├── MaterialInstrument.java
│           │               │       │   ├── MaterialLeafSize.java
│           │               │       │   ├── MaterialLevel.java
│           │               │       │   ├── MaterialLightable.java
│           │               │       │   ├── MaterialLocked.java
│           │               │       │   ├── MaterialMode.java
│           │               │       │   ├── MaterialNote.java
│           │               │       │   ├── MaterialOminous.java
│           │               │       │   ├── MaterialPersistent.java
│           │               │       │   ├── MaterialPower.java
│           │               │       │   ├── MaterialProperty.java
│           │               │       │   ├── MaterialShape.java
│           │               │       │   ├── MaterialSides.java
│           │               │       │   ├── MaterialSnowable.java
│           │               │       │   ├── MaterialSwitchable.java
│           │               │       │   ├── MaterialUnstable.java
│           │               │       │   └── MaterialWaterlogged.java
│           │               │       └── trade/
│           │               │           ├── TradeDemand.java
│           │               │           ├── TradeHasXp.java
│           │               │           ├── TradeInputs.java
│           │               │           ├── TradeMaxUses.java
│           │               │           ├── TradePriceMultiplier.java
│           │               │           ├── TradeProperty.java
│           │               │           ├── TradeResult.java
│           │               │           ├── TradeSpecialPrice.java
│           │               │           ├── TradeUses.java
│           │               │           └── TradeVillagerXP.java
│           │               ├── scripts/
│           │               │   ├── commands/
│           │               │   │   ├── BukkitCommandRegistry.java
│           │               │   │   ├── core/
│           │               │   │   │   ├── CooldownCommand.java
│           │               │   │   │   ├── ResetCommand.java
│           │               │   │   │   └── ZapCommand.java
│           │               │   │   ├── entity/
│           │               │   │   │   ├── AgeCommand.java
│           │               │   │   │   ├── AnimateCommand.java
│           │               │   │   │   ├── AttachCommand.java
│           │               │   │   │   ├── AttackCommand.java
│           │               │   │   │   ├── BurnCommand.java
│           │               │   │   │   ├── CastCommand.java
│           │               │   │   │   ├── EquipCommand.java
│           │               │   │   │   ├── FakeEquipCommand.java
│           │               │   │   │   ├── FakeInternalDataCommand.java
│           │               │   │   │   ├── FeedCommand.java
│           │               │   │   │   ├── FlyCommand.java
│           │               │   │   │   ├── FollowCommand.java
│           │               │   │   │   ├── GlowCommand.java
│           │               │   │   │   ├── HeadCommand.java
│           │               │   │   │   ├── HealCommand.java
│           │               │   │   │   ├── HealthCommand.java
│           │               │   │   │   ├── HurtCommand.java
│           │               │   │   │   ├── InvisibleCommand.java
│           │               │   │   │   ├── KillCommand.java
│           │               │   │   │   ├── LeashCommand.java
│           │               │   │   │   ├── LookCommand.java
│           │               │   │   │   ├── MountCommand.java
│           │               │   │   │   ├── PushCommand.java
│           │               │   │   │   ├── RemoveCommand.java
│           │               │   │   │   ├── RenameCommand.java
│           │               │   │   │   ├── RotateCommand.java
│           │               │   │   │   ├── ShootCommand.java
│           │               │   │   │   ├── SneakCommand.java
│           │               │   │   │   ├── SpawnCommand.java
│           │               │   │   │   ├── TeleportCommand.java
│           │               │   │   │   ├── WalkCommand.java
│           │               │   │   │   └── WalkCommandCitizensEvents.java
│           │               │   │   ├── item/
│           │               │   │   │   ├── DisplayItemCommand.java
│           │               │   │   │   ├── FakeItemCommand.java
│           │               │   │   │   ├── GiveCommand.java
│           │               │   │   │   ├── InventoryCommand.java
│           │               │   │   │   ├── MapCommand.java
│           │               │   │   │   └── TakeCommand.java
│           │               │   │   ├── npc/
│           │               │   │   │   ├── ActionCommand.java
│           │               │   │   │   ├── AnchorCommand.java
│           │               │   │   │   ├── AssignmentCommand.java
│           │               │   │   │   ├── BreakCommand.java
│           │               │   │   │   ├── CreateCommand.java
│           │               │   │   │   ├── DespawnCommand.java
│           │               │   │   │   ├── DisengageCommand.java
│           │               │   │   │   ├── EngageCommand.java
│           │               │   │   │   ├── FishCommand.java
│           │               │   │   │   ├── LookcloseCommand.java
│           │               │   │   │   ├── NPCBossBarCommand.java
│           │               │   │   │   ├── PauseCommand.java
│           │               │   │   │   ├── PoseCommand.java
│           │               │   │   │   ├── PushableCommand.java
│           │               │   │   │   ├── SitCommand.java
│           │               │   │   │   ├── SleepCommand.java
│           │               │   │   │   ├── StandCommand.java
│           │               │   │   │   ├── TraitCommand.java
│           │               │   │   │   ├── TriggerCommand.java
│           │               │   │   │   └── VulnerableCommand.java
│           │               │   │   ├── player/
│           │               │   │   │   ├── ActionBarCommand.java
│           │               │   │   │   ├── AdvancementCommand.java
│           │               │   │   │   ├── BlockCrackCommand.java
│           │               │   │   │   ├── ChatCommand.java
│           │               │   │   │   ├── ClickableCommand.java
│           │               │   │   │   ├── CompassCommand.java
│           │               │   │   │   ├── DebugBlockCommand.java
│           │               │   │   │   ├── DisguiseCommand.java
│           │               │   │   │   ├── ExperienceCommand.java
│           │               │   │   │   ├── FakeSpawnCommand.java
│           │               │   │   │   ├── GroupCommand.java
│           │               │   │   │   ├── ItemCooldownCommand.java
│           │               │   │   │   ├── KickCommand.java
│           │               │   │   │   ├── MoneyCommand.java
│           │               │   │   │   ├── NarrateCommand.java
│           │               │   │   │   ├── OpenTradesCommand.java
│           │               │   │   │   ├── OxygenCommand.java
│           │               │   │   │   ├── PermissionCommand.java
│           │               │   │   │   ├── ResourcePackCommand.java
│           │               │   │   │   ├── ShowFakeCommand.java
│           │               │   │   │   ├── SidebarCommand.java
│           │               │   │   │   ├── StatisticCommand.java
│           │               │   │   │   ├── TablistCommand.java
│           │               │   │   │   ├── TeamCommand.java
│           │               │   │   │   ├── TitleCommand.java
│           │               │   │   │   └── ToastCommand.java
│           │               │   │   ├── server/
│           │               │   │   │   ├── AnnounceCommand.java
│           │               │   │   │   ├── BanCommand.java
│           │               │   │   │   ├── BossBarCommand.java
│           │               │   │   │   ├── ExecuteCommand.java
│           │               │   │   │   └── ScoreboardCommand.java
│           │               │   │   └── world/
│           │               │   │       ├── AdjustBlockCommand.java
│           │               │   │       ├── AnimateChestCommand.java
│           │               │   │       ├── ChunkLoadCommand.java
│           │               │   │       ├── CopyBlockCommand.java
│           │               │   │       ├── CreateWorldCommand.java
│           │               │   │       ├── DropCommand.java
│           │               │   │       ├── ExplodeCommand.java
│           │               │   │       ├── FireworkCommand.java
│           │               │   │       ├── GameRuleCommand.java
│           │               │   │       ├── LightCommand.java
│           │               │   │       ├── MidiCommand.java
│           │               │   │       ├── ModifyBlockCommand.java
│           │               │   │       ├── PlayEffectCommand.java
│           │               │   │       ├── PlaySoundCommand.java
│           │               │   │       ├── SchematicCommand.java
│           │               │   │       ├── SignCommand.java
│           │               │   │       ├── StrikeCommand.java
│           │               │   │       ├── SwitchCommand.java
│           │               │   │       ├── TickCommand.java
│           │               │   │       ├── TimeCommand.java
│           │               │   │       ├── WeatherCommand.java
│           │               │   │       └── WorldBorderCommand.java
│           │               │   ├── containers/
│           │               │   │   ├── ContainerRegistry.java
│           │               │   │   └── core/
│           │               │   │       ├── AssignmentScriptContainer.java
│           │               │   │       ├── BookScriptContainer.java
│           │               │   │       ├── BukkitWorldScriptHelper.java
│           │               │   │       ├── CommandScriptContainer.java
│           │               │   │       ├── CommandScriptHelper.java
│           │               │   │       ├── EconomyScriptContainer.java
│           │               │   │       ├── EnchantmentScriptContainer.java
│           │               │   │       ├── EntityScriptContainer.java
│           │               │   │       ├── EntityScriptHelper.java
│           │               │   │       ├── InteractScriptContainer.java
│           │               │   │       ├── InteractScriptHelper.java
│           │               │   │       ├── InventoryScriptContainer.java
│           │               │   │       ├── InventoryScriptHelper.java
│           │               │   │       ├── ItemScriptContainer.java
│           │               │   │       ├── ItemScriptHelper.java
│           │               │   │       ├── MapScriptContainer.java
│           │               │   │       └── VersionScriptContainer.java
│           │               │   └── triggers/
│           │               │       ├── AbstractTrigger.java
│           │               │       ├── TriggerRegistry.java
│           │               │       └── core/
│           │               │           ├── ChatTrigger.java
│           │               │           ├── ClickTrigger.java
│           │               │           ├── DamageTrigger.java
│           │               │           └── ProximityTrigger.java
│           │               ├── tags/
│           │               │   ├── BukkitTagContext.java
│           │               │   └── core/
│           │               │       ├── CustomColorTagBase.java
│           │               │       ├── NPCTagBase.java
│           │               │       ├── PlayerTagBase.java
│           │               │       ├── ServerTagBase.java
│           │               │       └── TextTagBase.java
│           │               └── utilities/
│           │                   ├── BukkitImplDeprecations.java
│           │                   ├── CommonRegistries.java
│           │                   ├── Conversion.java
│           │                   ├── DataPersistenceHelper.java
│           │                   ├── FormattedTextHelper.java
│           │                   ├── HoverFormatHelper.java
│           │                   ├── LegacyParticleNaming.java
│           │                   ├── LegacySavesUpdater.java
│           │                   ├── MultiVersionHelper1_18.java
│           │                   ├── MultiVersionHelper1_19.java
│           │                   ├── NotedAreaTracker.java
│           │                   ├── PaperAPITools.java
│           │                   ├── ScoreboardHelper.java
│           │                   ├── Settings.java
│           │                   ├── TextWidthHelper.java
│           │                   ├── Utilities.java
│           │                   ├── VanillaTagHelper.java
│           │                   ├── blocks/
│           │                   │   ├── BlockSet.java
│           │                   │   ├── ChunkCoordinate.java
│           │                   │   ├── CuboidBlockSet.java
│           │                   │   ├── FakeBlock.java
│           │                   │   ├── FullBlockData.java
│           │                   │   ├── SpawnableHelper.java
│           │                   │   └── SpongeSchematicHelper.java
│           │                   ├── command/
│           │                   │   ├── CommandEvents.java
│           │                   │   ├── DenizenCommandHandler.java
│           │                   │   ├── ExCommandHandler.java
│           │                   │   ├── ExSustainedCommandHandler.java
│           │                   │   ├── NPCCommandHandler.java
│           │                   │   ├── TabCompleteHelper.java
│           │                   │   ├── manager/
│           │                   │   │   ├── Command.java
│           │                   │   │   ├── CommandAnnotationProcessor.java
│           │                   │   │   ├── CommandContext.java
│           │                   │   │   ├── CommandManager.java
│           │                   │   │   ├── Injector.java
│           │                   │   │   ├── Paginator.java
│           │                   │   │   ├── Requirements.java
│           │                   │   │   ├── RequirementsProcessor.java
│           │                   │   │   ├── exceptions/
│           │                   │   │   │   ├── CommandException.java
│           │                   │   │   │   ├── CommandUsageException.java
│           │                   │   │   │   ├── NoPermissionsException.java
│           │                   │   │   │   ├── RequirementMissingException.java
│           │                   │   │   │   ├── ServerCommandException.java
│           │                   │   │   │   ├── UnhandledCommandException.java
│           │                   │   │   │   └── WrappedCommandException.java
│           │                   │   │   └── messaging/
│           │                   │   │       ├── Colorizer.java
│           │                   │   │       └── Messaging.java
│           │                   │   └── scripted/
│           │                   │       ├── DenizenAliasHelpTopic.java
│           │                   │       ├── DenizenCommand.java
│           │                   │       ├── DenizenCommandHelpTopic.java
│           │                   │       └── DenizenCommandSender.java
│           │                   ├── debugging/
│           │                   │   ├── BStatsMetricsLite.java
│           │                   │   ├── Debug.java
│           │                   │   ├── DebugConsoleSender.java
│           │                   │   ├── DebugSubmit.java
│           │                   │   └── StatsRecord.java
│           │                   ├── depends/
│           │                   │   └── Depends.java
│           │                   ├── entity/
│           │                   │   ├── AreaEffectCloudHelper.java
│           │                   │   ├── BossBarHelper.java
│           │                   │   ├── DenizenEntityType.java
│           │                   │   ├── EntityAttachmentHelper.java
│           │                   │   ├── EntityMetadataCommandHelper.java
│           │                   │   ├── FakeEntity.java
│           │                   │   ├── Gravity.java
│           │                   │   ├── HideEntitiesHelper.java
│           │                   │   ├── Position.java
│           │                   │   ├── SpawnEntityHelper.java
│           │                   │   └── Velocity.java
│           │                   ├── flags/
│           │                   │   ├── DataPersistenceFlagTracker.java
│           │                   │   ├── LocationFlagSearchHelper.java
│           │                   │   ├── PlayerFlagHandler.java
│           │                   │   └── WorldFlagHandler.java
│           │                   ├── implementation/
│           │                   │   ├── BukkitScriptEntryData.java
│           │                   │   └── DenizenCoreImplementation.java
│           │                   ├── inventory/
│           │                   │   ├── InventoryTrackerSystem.java
│           │                   │   ├── InventoryViewUtil.java
│           │                   │   ├── RecipeHelper.java
│           │                   │   └── SlotHelper.java
│           │                   ├── maps/
│           │                   │   ├── DenizenMapManager.java
│           │                   │   ├── DenizenMapRenderer.java
│           │                   │   ├── MapCursor.java
│           │                   │   ├── MapDot.java
│           │                   │   ├── MapImage.java
│           │                   │   ├── MapObject.java
│           │                   │   └── MapText.java
│           │                   ├── midi/
│           │                   │   ├── MidiUtil.java
│           │                   │   ├── NoteBlockReceiver.java
│           │                   │   └── ToneUtil.java
│           │                   ├── nbt/
│           │                   │   ├── CustomNBT.java
│           │                   │   └── LeatherColorer.java
│           │                   ├── packets/
│           │                   │   ├── DenizenPacketHandler.java
│           │                   │   ├── HideParticles.java
│           │                   │   ├── ItemChangeMessage.java
│           │                   │   ├── NetworkInterceptCodeGen.java
│           │                   │   └── NetworkInterceptHelper.java
│           │                   └── world/
│           │                       ├── GameRuleReflect.java
│           │                       ├── PathFinder.java
│           │                       ├── VoidGenerator.java
│           │                       └── WorldListChangeTracker.java
│           └── resources/
│               ├── Denizen.mid
│               ├── config.yml
│               └── plugin.yml
├── pom.xml
├── v1_17/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_17/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   └── FakeBlockHelper.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               ├── PacketOutChatImpl.java
│                                               ├── PacketOutSetSlotImpl.java
│                                               ├── PacketOutSpawnEntityImpl.java
│                                               ├── PacketOutTradeListImpl.java
│                                               └── PacketOutWindowItemsImpl.java
├── v1_18/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_18/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   └── FakeBlockHelper.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
├── v1_19/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_19/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   └── FakeBlockHelper.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
├── v1_20/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_20/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityDataNameMapper.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   ├── FakeBlockHelper.java
│                                           │   └── packet/
│                                           │       ├── ActionBarEventPacketHandlers.java
│                                           │       ├── AttachPacketHandlers.java
│                                           │       ├── BlockLightPacketHandlers.java
│                                           │       ├── DenizenPacketHandlerPacketHandlers.java
│                                           │       ├── DisguisePacketHandlers.java
│                                           │       ├── EntityMetadataPacketHandlers.java
│                                           │       ├── FakeBlocksPacketHandlers.java
│                                           │       ├── FakeEquipmentPacketHandlers.java
│                                           │       ├── FakePlayerPacketHandlers.java
│                                           │       ├── HiddenEntitiesPacketHandlers.java
│                                           │       ├── HideParticlesPacketHandlers.java
│                                           │       ├── PlayerHearsSoundEventPacketHandlers.java
│                                           │       └── TablistUpdateEventPacketHandlers.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
├── v1_21/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_21/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityDataNameMapper.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   ├── FakeBlockHelper.java
│                                           │   └── packet/
│                                           │       ├── ActionBarEventPacketHandlers.java
│                                           │       ├── AttachPacketHandlers.java
│                                           │       ├── BlockLightPacketHandlers.java
│                                           │       ├── DenizenPacketHandlerPacketHandlers.java
│                                           │       ├── DisguisePacketHandlers.java
│                                           │       ├── EntityMetadataPacketHandlers.java
│                                           │       ├── FakeBlocksPacketHandlers.java
│                                           │       ├── FakeEquipmentPacketHandlers.java
│                                           │       ├── FakePlayerPacketHandlers.java
│                                           │       ├── HiddenEntitiesPacketHandlers.java
│                                           │       ├── HideParticlesPacketHandlers.java
│                                           │       ├── PlayerHearsSoundEventPacketHandlers.java
│                                           │       └── TablistUpdateEventPacketHandlers.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
└── v26_1/
    ├── pom.xml
    └── src/
        └── main/
            └── java/
                └── com/
                    └── denizenscript/
                        └── denizen/
                            └── nms/
                                └── v26_1/
                                    ├── Handler.java
                                    ├── helpers/
                                    │   ├── AdvancementHelperImpl.java
                                    │   ├── AnimationHelperImpl.java
                                    │   ├── BlockHelperImpl.java
                                    │   ├── ChunkHelperImpl.java
                                    │   ├── CustomEntityHelperImpl.java
                                    │   ├── EnchantmentHelperImpl.java
                                    │   ├── EntityDataNameMapper.java
                                    │   ├── EntityHelperImpl.java
                                    │   ├── FishingHelperImpl.java
                                    │   ├── ItemHelperImpl.java
                                    │   ├── NBTAdapter.java
                                    │   ├── PacketHelperImpl.java
                                    │   ├── PlayerHelperImpl.java
                                    │   └── WorldHelperImpl.java
                                    └── impl/
                                        ├── BiomeNMSImpl.java
                                        ├── ImprovedOfflinePlayerImpl.java
                                        ├── ProfileEditorImpl.java
                                        ├── SidebarImpl.java
                                        ├── blocks/
                                        │   └── BlockLightImpl.java
                                        ├── entities/
                                        │   ├── CraftFakeArrowImpl.java
                                        │   ├── CraftFakePlayerImpl.java
                                        │   ├── CraftItemProjectileImpl.java
                                        │   ├── EntityFakeArrowImpl.java
                                        │   ├── EntityFakePlayerImpl.java
                                        │   └── EntityItemProjectileImpl.java
                                        └── network/
                                            ├── fakes/
                                            │   ├── FakeChannelImpl.java
                                            │   ├── FakeNetworkManagerImpl.java
                                            │   └── FakePlayerConnectionImpl.java
                                            ├── handlers/
                                            │   ├── AbstractListenerPlayInImpl.java
                                            │   ├── DenizenNetworkManagerImpl.java
                                            │   ├── DenizenPacketListenerImpl.java
                                            │   ├── FakeBlockHelper.java
                                            │   └── packet/
                                            │       ├── ActionBarEventPacketHandlers.java
                                            │       ├── AttachPacketHandlers.java
                                            │       ├── BlockLightPacketHandlers.java
                                            │       ├── DenizenPacketHandlerPacketHandlers.java
                                            │       ├── DisguisePacketHandlers.java
                                            │       ├── EntityMetadataPacketHandlers.java
                                            │       ├── FakeBlocksPacketHandlers.java
                                            │       ├── FakeEquipmentPacketHandlers.java
                                            │       ├── FakePlayerPacketHandlers.java
                                            │       ├── HiddenEntitiesPacketHandlers.java
                                            │       ├── HideParticlesPacketHandlers.java
                                            │       ├── PlayerHearsSoundEventPacketHandlers.java
                                            │       └── TablistUpdateEventPacketHandlers.java
                                            └── packets/
                                                ├── PacketInResourcePackStatusImpl.java
                                                ├── PacketInSteerVehicleImpl.java
                                                └── PacketOutChatImpl.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Disable LF normalization for all files
* -text


================================================
FILE: .github/FUNDING.yml
================================================
github: mcmonkey4eva


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: Bug Report
about: Describe an issue with Denizen not working as expected. DO NOT POST HERE UNLESS SOMEONE TOLD YOU TO ON DISCORD.

---

<!--
IMPORTANT: Support is on Discord @ https://discord.gg/Q6pZGSR
You should only post on GitHub if you've been directed here from the Discord.

Please fill in the asterisks sections below.
Use https://paste.denizenscript.com/ to pastebin any scripts.
 -->
The output of `/version` on my server is: **paste here**
The output of `/version denizen` on my server is: **paste here**
(If relevant) A link to a paste of a script demonstrating the issue: **paste here**
The issue is:
**Describe your issue in full here**


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: Feature Request
about: Suggest something new to add. DO NOT POST HERE UNLESS SOMEONE TOLD YOU TO ON DISCORD.

---

<!--
IMPORTANT: Support is on Discord @ https://discord.gg/Q6pZGSR
You should only post on GitHub if you've been directed here from the Discord.

Please ensure you're running the latest version of Denizen (new features are not backported).
Please also ensure that what you're asking is not already present in Denizen.
Describe your request below.
-->


================================================
FILE: .github/ISSUE_TEMPLATE/i-m-having-trouble.md
================================================
---
name: I'm Having Trouble
about: Make an issue post that seems to be trouble on your end (not a bug in Denizen itself) - ASK ON DISCORD https://discord.gg/Q6pZGSR

---

**STOP**
You shouldn't be on GitHub issues!
Ask for help on Discord: https://discord.gg/Q6pZGSR


================================================
FILE: .gitignore
================================================
# Maven
target/
dependency-reduced-pom.xml

# IntelliJ
.idea/
*.iml

# Temporary/etc.
*.bak
*.exe
.DS_Store


================================================
FILE: CONTRIBUTING.md
================================================
Contribution to Denizen
-----------------------

Please talk to us on Discord @ https://discord.gg/Q6pZGSR prior to contributing.

## Signing

Please sign [the Contributor License Agreement](https://cla-assistant.io/DenizenScript/Denizen-For-Bukkit).

## Pull Requests

For pull requests:
- You MUST: own the code you submit OR it is free/open/safe to use, EG it is in the public domain. Code gathered from within any open source DenizenScript project is valid to include here as well.
	- If your code is under any pre-existing license, you MUST note it in the pull request.
- Any and all code you submit is subject to the mini-license below.
- In general, you should confirm your PR is functional in any ways that it may vary.
	- EG if your code adds an NMS call, it should be tested across multiple game versions.
- USUALLY, your pull request should fix an open issue or feature request made in a Discord thread.
	- If there is no issue or thread for it, please open a thread.
	- If issues or threads for it have been closed with a refusal statement, ensure you want to be making a PR at all before bothering with it. Generally, refused requests means PRs are also refused.
		- The exception to this is when an issue is only partially related to what you're doing, or you believe in good faith that the issue was refused on grounds made irrelevant by your adaptation of it.
			- In these cases, please open a new issue or thread.
- Do NOT click the `Resolve conversation` button on any PR comments. Ever.

## Code Style / Formatting

Match the general format/style of existing code within the project. For the most part, this is standard Oracle Java code conventions. As a particular difference from some standards, there must always be a newline after `}`.

## Mini-license pre-warning

By contributing to the project, you give up all rights to your contribution\*.

If you later decide you don't want us using your code - you may make a polite request and it will be treated as such, but that is the extent of your abilities.

\* This does not include your rights to continue making use of any involved code yourself, which you of course may continue to do. You give up specifically your rights to the contribution *within this project*. Or to put it another way: your rights to the specific copy of the contribution that is now contained within this project, as specifically opposed to ideas and/or expressions thereof within the code or other work contributed, which you remain free to do with as you wish (excluding actions that conflict with our ownership of the copy given to us).

### You agree by contributing:

- That you have read and agree to this document.
- To not attempt to "revoke rights to your code" or any similar action.
- That you have the right to publicly contribute any assets/code given. (IE, no contributing someone else's code without their permission)
- That the code submitted is either your own work, dedicated now to this project, OR it is under a license specified directly in the contribution.


================================================
FILE: LICENSE.txt
================================================
The MIT License (MIT)

Copyright (c) 2019-2026 The Denizen Script Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
The Denizen Scripting Language - Spigot Impl
--------------------------------------------

An implementation of the Denizen Scripting Language for Spigot servers, with strong Citizens interlinks to emphasize the power of using Denizen with NPCs!

**Version 1.3.2**: Compatible with Spigot 1.17.1, 1.18.2, 1.19.4, 1.20.6, 1.21.11, and 26.1.2!

**Learn about Denizen from the Beginner's guide:** https://guide.denizenscript.com/guides/background/index.html

#### Download Links:

- **Release builds**: https://ci.citizensnpcs.co/job/Denizen/
- **Developmental builds**: https://ci.citizensnpcs.co/job/Denizen_Developmental/
- **SpigotMC - VERY SLOW releases**: https://www.spigotmc.org/resources/denizen.21039/

#### Need help using Denizen? Try one of these places:

- **Discord** - chat room (Modern, strongly recommended): https://discord.gg/Q6pZGSR
- **Denizen Home Page** - a link directory (Modern): https://denizenscript.com/
- **Forum and script sharing** (Modern): https://forum.denizenscript.com/
- **Meta Documentation** - command/tag/event/etc. search (Modern): https://meta.denizenscript.com/
- **Beginner's Guide** - text form (Modern): https://guide.denizenscript.com/

#### Also check out:

- **Citizens2 (NPC support)**: https://github.com/CitizensDev/Citizens2/
- **Depenizen (Other plugin support)**: https://github.com/DenizenScript/Depenizen
- **dDiscordBot (Adds a Discord bot to Denizen)**: https://github.com/DenizenScript/dDiscordBot
- **DenizenCore (Our core, needed for building)**: https://github.com/DenizenScript/Denizen-Core
- **DenizenVSCode (extension for writing Denizen scripts in VS Code)**: https://github.com/DenizenScript/DenizenVSCode

### Building

- Built against JDK 17, using maven `pom.xml` as project file.
- Requires building all listed versions of Spigot via Spigot BuildTools: https://www.spigotmc.org/wiki/buildtools/

### Maven

```xml
    <repository>
        <id>citizens-repo</id>
        <url>https://maven.citizensnpcs.co/repo</url>
    </repository>
    <dependencies>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen</artifactId>
            <version>1.3.2-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
```

### Licensing pre-note:

This is an open source project, provided entirely freely, for everyone to use and contribute to.

If you make any changes that could benefit the community as a whole, please contribute upstream.

### The short of the license is:

You can do basically whatever you want, except you may not hold any developer liable for what you do with the software.

### Previous License

Copyright (C) 2012-2013 Aufdemrand, All Rights Reserved.

Copyright (C) 2013-2019 The Denizen Script Team, All Rights Reserved.

### The long version of the license follows:

The MIT License (MIT)

Copyright (c) 2019-2026 The Denizen Script Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: dist/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.denizenscript</groupId>
        <artifactId>denizen-parent</artifactId>
        <version>1.3.2-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>denizen-dist</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <BUILD_NUMBER>Unknown</BUILD_NUMBER>
        <BUILD_CLASS>CUSTOM</BUILD_CLASS>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizencore</artifactId>
            <version>1.91.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-v1_17</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-v1_18</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-v1_19</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-v1_20</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-v1_21</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-v26_1</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen-paper</artifactId>
            <version>${project.parent.version}</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <filtering>false</filtering>
                <directory>${basedir}/src/main/resources</directory>
                <includes>
                    <include>*.mid</include>
                </includes>
            </resource>
            <resource>
                <filtering>true</filtering>
                <directory>${basedir}/src/main/resources</directory>
                <includes>
                    <include>*.yml</include>
                    <include>*.dsc</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.4.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <minimizeJar>true</minimizeJar>
                            <filters>
                                <filter>
                                    <artifact>com.denizenscript:denizencore</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                                <filter>
                                    <artifact>com.denizenscript:denizen</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                                <filter>
                                    <artifact>org.json:json</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                                <filter>
                                    <artifact>com.denizenscript:denizen-v**</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                                <filter>
                                    <artifact>com.denizenscript:denizen-paper</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                                <filter>
                                    <artifact>com.denizenscript:denizen-nmshandler</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                                <filter>
                                    <artifact>net.kyori:adventure-nbt</artifact>
                                    <includes>
                                        <include>**</include>
                                    </includes>
                                </filter>
                            </filters>
                            <relocations>
                                <relocation>
                                    <pattern>com.freneticllc</pattern>
                                    <shadedPattern>com.denizenscript.shaded.com.freneticllc</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.json</pattern>
                                    <shadedPattern>com.denizenscript.shaded.org.json</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.ow2.asm</pattern>
                                    <shadedPattern>com.denizenscript.shaded.org.ow2.asm</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.objectweb</pattern>
                                    <shadedPattern>com.denizenscript.shaded.org.objectweb</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.apache</pattern>
                                    <shadedPattern>com.denizenscript.shaded.org.apache</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>net.kyori.option</pattern>
                                    <shadedPattern>com.denizenscript.shaded.net.kyori.option</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>net.kyori.adventure.nbt</pattern>
                                    <shadedPattern>com.denizenscript.shaded.net.adventure.nbt</shadedPattern>
                                </relocation>
                            </relocations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <finalName>Denizen-${DENIZEN_VERSION}-b${BUILD_NUMBER}-${BUILD_CLASS}</finalName>
                    <outputDirectory>../target</outputDirectory>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>Denizen/lib/</classpathPrefix>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>16</source>
                    <target>16</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>


================================================
FILE: dist/src/main/java/com/denizenscript/denizen/dist/Dist.java
================================================
package com.denizenscript.denizen.dist;

public class Dist {
    // Empty class just to make things work.
}


================================================
FILE: paper/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.denizenscript</groupId>
    <artifactId>denizen-paper</artifactId>
    <version>1.3.2-SNAPSHOT</version>

    <repositories>
        <repository>
            <id>papermc</id>
            <url>https://repo.papermc.io/repository/maven-public/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.denizenscript</groupId>
            <artifactId>denizen</artifactId>
            <version>${project.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.papermc.paper</groupId>
            <artifactId>paper-api</artifactId>
            <version>[26.1.2.build,)</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.citizensnpcs</groupId>
            <artifactId>citizens-main</artifactId>
            <version>2.0.42-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>16</source>
                    <target>16</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/PaperEventHelpers.java
================================================
package com.denizenscript.denizen.paper;

import com.denizenscript.denizen.objects.InventoryTag;
import com.denizenscript.denizen.scripts.containers.core.InventoryScriptContainer;
import com.denizenscript.denizen.utilities.VanillaTagHelper;
import com.denizenscript.denizen.utilities.inventory.InventoryViewUtil;
import com.denizenscript.denizencore.objects.core.ScriptTag;
import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent;
import io.papermc.paper.event.server.ServerResourcesReloadedEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;

public class PaperEventHelpers implements Listener {

    @EventHandler
    public void onRecipeBookClick(PlayerRecipeBookClickEvent event) {
        InventoryTag inventory = InventoryTag.mirrorBukkitInventory(InventoryViewUtil.getTopInventory(event.getPlayer().getOpenInventory()));
        if (inventory.getIdHolder() instanceof ScriptTag) {
            if (((InventoryScriptContainer) ((ScriptTag) inventory.getIdHolder()).getContainer()).gui) {
                event.setCancelled(true);
            }
        }
    }

    @EventHandler(priority = EventPriority.LOWEST)
    public void onServerResourcesReloaded(ServerResourcesReloadedEvent event) {
        VanillaTagHelper.loadTagsCache();
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/PaperModule.java
================================================
package com.denizenscript.denizen.paper;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.nms.interfaces.packets.PacketOutChat;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.paper.datacomponents.ComponentAdaptersRegistry;
import com.denizenscript.denizen.paper.events.*;
import com.denizenscript.denizen.paper.properties.*;
import com.denizenscript.denizen.paper.tags.PaperTagBase;
import com.denizenscript.denizen.paper.utilities.PaperAPIToolsImpl;
import com.denizenscript.denizen.utilities.FormattedTextHelper;
import com.denizenscript.denizen.utilities.PaperAPITools;
import com.denizenscript.denizencore.events.ScriptEvent;
import com.denizenscript.denizencore.objects.properties.PropertyParser;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;

public class PaperModule {

    public static void init() {
        Debug.log("Loading Paper support module...");

        ScriptEvent.notNameParts.add(0, "PaperImpl");
        // Events
        ScriptEvent.registerScriptEvent(AnvilBlockDamagedScriptEvent.class);
        ScriptEvent.registerScriptEvent(AreaEnterExitScriptEventPaperImpl.class);
        if (NMSHandler.getVersion().isAtMost(NMSVersion.v1_18)) {
            ScriptEvent.registerScriptEvent(BellRingScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(BlockPreDispenseScriptEvent.class);
        ScriptEvent.registerScriptEvent(CreeperIgnitesScriptEvent.class);
        ScriptEvent.registerScriptEvent(DragonEggFormScriptEvent.class);
        ScriptEvent.registerScriptEvent(EntityAddToWorldScriptEvent.class);
        ScriptEvent.registerScriptEvent(EntityKnocksbackEntityScriptEvent.class);
        ScriptEvent.registerScriptEvent(EntityLoadCrossbowScriptEvent.class);
        ScriptEvent.registerScriptEvent(EntityPathfindScriptEvent.class);
        ScriptEvent.registerScriptEvent(EntityRemoveFromWorldScriptEvent.class);
        ScriptEvent.registerScriptEvent(EntityStepsOnScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            ScriptEvent.registerScriptEvent(EntityTeleportedByPortalScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(ExperienceOrbMergeScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerAbsorbsExperienceScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerBeaconEffectScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_18)) {
            ScriptEvent.registerScriptEvent(PlayerChangesFramedItemScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(PlayerChoosesArrowScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerChunkUnloadScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerClicksFakeEntityScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerClicksInRecipeBookScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerClientOptionsChangeScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerCompletesAdvancementScriptEventPaperImpl.class);
        ScriptEvent.registerScriptEvent(PlayerDeepSleepScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerElytraBoostScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerEquipsArmorScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerGrantedAdvancementCriterionScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            ScriptEvent.registerScriptEvent(PlayerInventorySlotChangeScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(PlayerItemTakesDamageScriptEventPaperImpl.class);
        ScriptEvent.registerScriptEvent(PlayerJumpsScriptEventPaperImpl.class);
        ScriptEvent.registerScriptEvent(PlayerLecternPageChangeScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerLoomPatternSelectScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerNamesEntityScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_20)) {
            ScriptEvent.registerScriptEvent(PlayerOpenSignScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(PlayerPreparesGrindstoneCraftScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerQuitsScriptEventPaperImpl.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_18)) {
            ScriptEvent.registerScriptEvent(PlayerRaiseLowerItemScriptEventPaperImpl.class);
        }
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
            ScriptEvent.registerScriptEvent(PlayerReceivesLinksScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(PlayerSelectsStonecutterRecipeScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerSetSpawnScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_20)) {
            ScriptEvent.registerScriptEvent(PlayerShieldDisableScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(PlayerSpectatesEntityScriptEvent.class);
        ScriptEvent.registerScriptEvent(PlayerStopsSpectatingScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            ScriptEvent.registerScriptEvent(PlayerTracksEntityScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(PlayerTradesWithMerchantScriptEvent.class);
        ScriptEvent.registerScriptEvent(PreEntitySpawnScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            ScriptEvent.registerScriptEvent(PrePlayerAttackEntityScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(ProjectileCollideScriptEvent.class);
        ScriptEvent.registerScriptEvent(ServerListPingScriptEventPaperImpl.class);
        ScriptEvent.registerScriptEvent(ServerResourcesReloadedScriptEvent.class);
        ScriptEvent.registerScriptEvent(SkeletonHorseTrapScriptEvent.class);
        ScriptEvent.registerScriptEvent(TargetBlockHitScriptEvent.class);
        if (NMSHandler.getVersion().isAtMost(NMSVersion.v1_18)) {
            ScriptEvent.registerScriptEvent(TNTPrimesScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(UnknownCommandScriptEvent.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
            ScriptEvent.registerScriptEvent(VaultChangesStateScriptEvent.class);
        }
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            ScriptEvent.registerScriptEvent(WardenChangesAngerLevelScriptEvent.class);
        }
        ScriptEvent.registerScriptEvent(WorldGameRuleChangeScriptEvent.class);

        // Properties
        PropertyParser.registerProperty(EntityArmsRaised.class, EntityTag.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_18)) {
            PropertyParser.registerProperty(EntityAutoExpire.class, EntityTag.class);
        }
        PropertyParser.registerProperty(EntityBodyStingers.class, EntityTag.class);
        PropertyParser.registerProperty(EntityCarryingEgg.class, EntityTag.class);
        PropertyParser.registerProperty(EntityCanTick.class, EntityTag.class);
        PropertyParser.registerProperty(EntityDrinkingPotion.class, EntityTag.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            PropertyParser.registerProperty(EntityEggLayTime.class, EntityTag.class);
            PropertyParser.registerProperty(EntityFriction.class, EntityTag.class);
        }
        PropertyParser.registerProperty(EntityLeftHanded.class, EntityTag.class);
        PropertyParser.registerProperty(EntityReputation.class, EntityTag.class);
        PropertyParser.registerProperty(EntityShouldBurn.class, EntityTag.class);
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19)) {
            PropertyParser.registerProperty(EntitySneaking.class, EntityTag.class);
        }
        PropertyParser.registerProperty(EntityWitherInvulnerable.class, EntityTag.class);
        PropertyParser.registerProperty(ItemArmorStand.class, ItemTag.class);

        // Components system
        if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_21)) {
            PropertyParser.registerProperty(ItemRemovedComponents.class, ItemTag.class);
            ComponentAdaptersRegistry.register();
        }

        // Paper object extensions
        PaperElementExtensions.register();
        PaperEntityExtensions.register();
        PaperItemExtensions.register();
        PaperPlayerExtensions.register();
        PaperWorldExtensions.register();
        // Paper Tags
        new PaperTagBase();

        // Other helpers
        Bukkit.getPluginManager().registerEvents(new PaperEventHelpers(), Denizen.getInstance());
        PaperAPITools.instance = new PaperAPIToolsImpl();
        PacketOutChat.convertComponentToJsonString = (o) -> componentToJson((Component) o);
    }

    public static Component parseFormattedText(String text, ChatColor baseColor) {
        if (text == null) {
            return null;
        }
        try {
            return jsonToComponent(FormattedTextHelper.componentToJson(FormattedTextHelper.parse(text, baseColor)));
        }
        catch (Exception ex) {
            Debug.verboseLog("Failed to parse formatted text: " + text.replace(ChatColor.COLOR_CHAR, '&'));
            throw ex;
        }
    }

    public static String stringifyComponent(Component component) {
        if (component == null) {
            return null;
        }
        return FormattedTextHelper.stringify(FormattedTextHelper.parseJson(componentToJson(component)));
    }

    public static Component jsonToComponent(String json) {
        if (json == null) {
            return null;
        }
        try {
            return GsonComponentSerializer.gson().deserialize(json);
        }
        catch (Exception ex) {
            Debug.verboseLog("Failed to parse json to component: " + json);
            throw ex;
        }
    }

    public static String componentToJson(Component component) {
        if (component == null) {
            return null;
        }
        return GsonComponentSerializer.gson().serialize(component);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ComponentAdaptersRegistry.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

public class ComponentAdaptersRegistry {

    public static void register() {
        DataComponentAdapter.register(new FoodAdapter());
        DataComponentAdapter.register(new GliderAdapter());
        DataComponentAdapter.register(new ItemModelAdapter());
        DataComponentAdapter.register(new MaxDurabilityAdapter());
        DataComponentAdapter.register(new MaxStackSizeAdapter());
        DataComponentAdapter.register(new RarityAdapter());
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/DataComponentAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.properties.item.ItemComponentsPatch;
import com.denizenscript.denizen.objects.properties.item.ItemProperty;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.MapTag;
import com.denizenscript.denizencore.objects.properties.PropertyParser;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import io.papermc.paper.datacomponent.DataComponentType;
import org.bukkit.Registry;
import org.bukkit.inventory.ItemStack;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;

public abstract class DataComponentAdapter<D extends ObjectTag, C extends DataComponentType> {

    // <--[language]
    // @name Item Components
    // @group Minecraft Logic
    // @description
    // Minecraft item components (see <@link url https://minecraft.wiki/w/Data_component_format>) are managed as follows:
    // Each item type has a default set of component values; a food item will have food components by default, a tool item will have tool components by default, etc.
    // Different items can override their type's default components, either by setting values that weren't there previously (e.g. making an inedible item edible), or by removing values that are there by default (e.g. making a shield item that can't block).
    // Items' overrides can later be reset, making them use their type's default values again.
    //
    // In Denizen, different item components are represented by item properties.
    // These properties allow both setting a component override on an item, and clearing/resetting it by providing no input.
    // Item properties' name will generally match their respective item component's name, but not always!
    // Due to this, features that take item component names as input (such as <@link tag ItemTag.is_overridden>) accept both Minecraft component names and Denizen property names.
    //
    // Here is an example of applying all of this in a script:
    // <code>
    // # We define a default apple item
    // - define apple <item[apple]>
    // # We remove the apple's "food" component, making eating it restore no food points (it is still consumable due to the "consumable" component).
    // - adjust def:apple remove_component:food
    // # This check will pass, as the apple's "food" component is overridden to have no value.
    // - if <[apple].is_overridden[food]>:
    //   - narrate "The apple has a modified food component! It will behave differently to a normal apple."
    // # We reset the apple item's food component by adjusting with no value, making it a normal apple.
    // - adjust def:apple food:
    // </code>
    // -->

    public static final Map<String, DataComponentType> COMPONENTS_BY_PROPERTY = new HashMap<>();
    public static final String[] EMPTY_STRING_ARRAY = new String[0];

    public static DataComponentType getComponentType(String name) {
        String nameLower = CoreUtilities.toLowerCase(name);
        DataComponentType componentType = Registry.DATA_COMPONENT_TYPE.get(Utilities.parseNamespacedKey(nameLower));
        if (componentType == null) {
            componentType = COMPONENTS_BY_PROPERTY.get(nameLower);
        }
        return componentType;
    }

    public static void register(DataComponentAdapter<?, ?> adapter) {
        DataComponentAdapter.Property.currentlyRegisteringComponentAdapter = adapter;
        PropertyParser.registerPropertyGetter(
                item -> !item.getItemStack().isEmpty() ? adapter.new Property(item) : null,
                ItemTag.class, EMPTY_STRING_ARRAY, EMPTY_STRING_ARRAY, DataComponentAdapter.Property.class);
        DataComponentAdapter.Property.currentlyRegisteringComponentAdapter = null;
        String componentName = adapter.componentType.key().asMinimalString();
        ItemComponentsPatch.registerHandledComponent(componentName);
        if (!adapter.name.equals(componentName)) {
            COMPONENTS_BY_PROPERTY.put(adapter.name, adapter.componentType);
        }
    }

    static {

        // <--[tag]
        // @attribute <ItemTag.is_overridden[<component>]>
        // @returns ElementTag(Boolean)
        // @description
        // Returns whether an item has a specific item component type overridden, see <@link language Item Components>.
        // -->
        ItemTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "is_overridden", (attribute, object, param) -> {
            DataComponentType componentType = getComponentType(param.asString());
            if (componentType == null) {
                attribute.echoError("Invalid type specified, must be a valid item component type or property name.");
                return null;
            }
            return new ElementTag(object.getItemStack().isDataOverridden(componentType));
        });
    }

    public final C componentType;
    public final Class<D> denizenType;
    public final String name;

    public DataComponentAdapter(C componentType, Class<D> denizenType, String name) {
        this.componentType = componentType;
        this.denizenType = denizenType;
        this.name = name;
    }

    public abstract D getValue(ItemStack item);

    public abstract void setValue(ItemStack item, D value, Mechanism mechanism);

    public boolean isDefaultValue(D value) {
        return false;
    }

    public static abstract class NonValued extends DataComponentAdapter<ElementTag, DataComponentType.NonValued> {

        public NonValued(DataComponentType.NonValued componentType, String name) {
            super(componentType, ElementTag.class, name);
        }

        @Override
        public ElementTag getValue(ItemStack item) {
            return new ElementTag(item.hasData(componentType));
        }

        @Override
        public void setValue(ItemStack item, ElementTag value, Mechanism mechanism) {
            if (!mechanism.requireBoolean()) {
                return;
            }
            if (value.asBoolean()) {
                item.setData(componentType);
            }
            else {
                item.unsetData(componentType);
            }
        }

        // Overridden and false = removed, managed by ItemTag.removed_components
        @Override
        public boolean isDefaultValue(ElementTag value) {
            return !value.asBoolean();
        }
    }

    public static abstract class Valued<D extends ObjectTag, P> extends DataComponentAdapter<D, DataComponentType.Valued<P>> {

        public static <T, D extends ObjectTag> void setIfValid(Consumer<T> setter, MapTag data, String key, Class<D> objectType, Predicate<D> checker, Function<D, T> converter, String type, Mechanism mechanism) {
            D value = data.getObjectAs(key, objectType, mechanism.context);
            if (value == null) {
                return;
            }
            T converted;
            if ((checker != null && !checker.test(value)) || (converted = converter.apply(value)) == null) {
                mechanism.echoError("Invalid '" + key + "' specified: must be a " + type + '.');
                return;
            }
            setter.accept(converted);
        }

        public Valued(Class<D> denizenType, DataComponentType.Valued<P> componentType, String name) {
            super(componentType, denizenType, name);
        }

        public abstract D toDenizen(P value);

        public abstract P fromDenizen(D value, Mechanism mechanism);

        @Override
        public D getValue(ItemStack item) {
            P data = item.getData(componentType);
            return data != null ? toDenizen(data) : null;
        }

        @Override
        public void setValue(ItemStack item, D value, Mechanism mechanism) {
            P converted = fromDenizen(value, mechanism);
            if (converted != null) {
                item.setData(componentType, converted);
            }
        }
    }

    public class Property extends ItemProperty<D> {

        private static DataComponentAdapter<?, ?> currentlyRegisteringComponentAdapter;

        public Property(ItemTag item) {
            this.object = item;
        }

        @Override
        public D getPropertyValue() {
            return getValue(getItemStack());
        }

        @Override
        public D getPropertyValueNoDefault() {
            if (!getItemStack().isDataOverridden(componentType)) {
                return null;
            }
            return super.getPropertyValueNoDefault();
        }

        @Override
        public boolean isDefaultValue(D value) {
            return DataComponentAdapter.this.isDefaultValue(value);
        }

        @Override
        public void setPropertyValue(D value, Mechanism mechanism) {
            if (value == null) {
                getItemStack().resetData(componentType);
                return;
            }
            setValue(getItemStack(), value, mechanism);
        }

        @Override
        public String getPropertyId() {
            return name;
        }

        public static void register() {
            autoRegisterNullable(currentlyRegisteringComponentAdapter.name, DataComponentAdapter.Property.class, currentlyRegisteringComponentAdapter.denizenType, false);
        }
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/FoodAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.MapTag;
import io.papermc.paper.datacomponent.DataComponentTypes;
import io.papermc.paper.datacomponent.item.FoodProperties;

public class FoodAdapter extends DataComponentAdapter.Valued<MapTag, FoodProperties> {

    // <--[property]
    // @object ItemTag
    // @name food
    // @input MapTag
    // @description
    // Controls an item's food <@link language Item Components>.
    // The map includes keys:
    // - "nutrition", ElementTag(Number) representing the amount of food points restored by this item.
    // - "saturation", ElementTag(Decimal) representing the amount of saturation points restored by this item.
    // - "can_always_eat", ElementTag(Boolean) controlling whether the item can always be eaten, even if the player isn't hungry.
    // @mechanism
    // Provide no input to reset the item to its default value.
    // -->

    public FoodAdapter() {
        super(MapTag.class, DataComponentTypes.FOOD, "food");
    }

    @Override
    public MapTag toDenizen(FoodProperties value) {
        MapTag foodData = new MapTag();
        foodData.putObject("nutrition", new ElementTag(value.nutrition()));
        foodData.putObject("saturation", new ElementTag(value.saturation()));
        foodData.putObject("can_always_eat", new ElementTag(value.canAlwaysEat()));
        return foodData;
    }

    @Override
    public FoodProperties fromDenizen(MapTag value, Mechanism mechanism) {
        FoodProperties.Builder builder = FoodProperties.food();
        setIfValid(builder::nutrition, value, "nutrition", ElementTag.class, ElementTag::isInt, ElementTag::asInt, "number", mechanism);
        setIfValid(builder::saturation, value, "saturation", ElementTag.class, ElementTag::isFloat, ElementTag::asFloat, "decimal number", mechanism);
        setIfValid(builder::canAlwaysEat, value, "can_always_eat", ElementTag.class, ElementTag::isBoolean, ElementTag::asBoolean, "boolean", mechanism);
        return builder.build();
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/GliderAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import io.papermc.paper.datacomponent.DataComponentTypes;

public class GliderAdapter extends DataComponentAdapter.NonValued {

    // <--[property]
    // @object ItemTag
    // @name glider
    // @input ElementTag(Boolean)
    // @description
    // Controls whether an item can be used to glide when equipped (like elytras by default), see <@link language Item Components>.
    // @mechanism
    // Provide no input to reset the item to its default value.
    // -->

    public GliderAdapter() {
        super(DataComponentTypes.GLIDER, "glider");
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ItemModelAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.datacomponent.DataComponentTypes;
import net.kyori.adventure.key.Key;

public class ItemModelAdapter extends DataComponentAdapter.Valued<ElementTag, Key> {

    // <--[property]
    // @object ItemTag
    // @name item_model
    // @input ElementTag
    // @description
    // Controls an item's model <@link language Item Components> in namespaced key format.
    // The default namespace is "minecraft", so for example an input of "stone" becomes "minecraft:stone", and will set the item model to a stone block.
    // This can also be used to display item models from your own custom resource packs.
    // @mechanism
    // Provide no input to reset the item to its default value.
    // -->

    public ItemModelAdapter() {
        super(ElementTag.class, DataComponentTypes.ITEM_MODEL, "item_model");
    }

    @Override
    public ElementTag toDenizen(Key value) {
        return new ElementTag(value.asMinimalString(), true);
    }

    @Override
    public Key fromDenizen(ElementTag value, Mechanism mechanism) {
        return Utilities.parseNamespacedKey(value.asString());
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxDurabilityAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.datacomponent.DataComponentTypes;

public class MaxDurabilityAdapter extends DataComponentAdapter.Valued<ElementTag, Integer> {

    // <--[property]
    // @object ItemTag
    // @name max_durability
    // @input ElementTag(Number)
    // @description
    // Controls an item's max durability <@link language Item Components>.
    // @mechanism
    // Provide no input to reset the item to its default value.
    // -->

    public MaxDurabilityAdapter() {
        super(ElementTag.class, DataComponentTypes.MAX_DAMAGE, "max_durability");
    }

    @Override
    public ElementTag toDenizen(Integer value) {
        return new ElementTag(value);
    }

    @Override
    public Integer fromDenizen(ElementTag value, Mechanism mechanism) {
        return mechanism.requireInteger() ? value.asInt() : null;
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxStackSizeAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.datacomponent.DataComponentTypes;

public class MaxStackSizeAdapter extends DataComponentAdapter.Valued<ElementTag, Integer> {

    // <--[property]
    // @object ItemTag
    // @name max_stack_size
    // @input ElementTag(Number)
    // @description
    // Controls an item's max stack size <@link language Item Components>.
    // @mechanism
    // Provide no input to reset the item to its default value.
    // -->

    public MaxStackSizeAdapter() {
        super(ElementTag.class, DataComponentTypes.MAX_STACK_SIZE, "max_stack_size");
    }

    @Override
    public ElementTag toDenizen(Integer value) {
        return new ElementTag(value);
    }

    @Override
    public Integer fromDenizen(ElementTag value, Mechanism mechanism) {
        return mechanism.requireInteger() ? value.asInt() : null;
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/RarityAdapter.java
================================================
package com.denizenscript.denizen.paper.datacomponents;

import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.datacomponent.DataComponentTypes;
import org.bukkit.inventory.ItemRarity;

public class RarityAdapter extends DataComponentAdapter.Valued<ElementTag, ItemRarity> {

    // <--[property]
    // @object ItemTag
    // @name rarity
    // @input ElementTag
    // @description
    // Controls an item's rarity <@link language Item Components>.
    // See <@link url https://jd.papermc.io/paper/org/bukkit/inventory/ItemRarity.html> for valid rarity values.
    // @mechanism
    // Provide no input to reset the item to its default value.
    // -->

    public RarityAdapter() {
        super(ElementTag.class, DataComponentTypes.RARITY, "rarity");
    }

    @Override
    public ElementTag toDenizen(ItemRarity value) {
        return new ElementTag(value);
    }

    @Override
    public ItemRarity fromDenizen(ElementTag value, Mechanism mechanism) {
        return mechanism.requireEnum(ItemRarity.class) ? value.asEnum(ItemRarity.class) : null;
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/AnvilBlockDamagedScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.InventoryTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.utilities.inventory.InventoryViewUtil;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.block.AnvilDamagedEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class AnvilBlockDamagedScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // anvil block damaged|breaks
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Cancellable true
    //
    // @Switch state:<state> to only process the event if the anvil's new damage state matches the specified state.
    //
    // @Triggers when an anvil is damaged from being used.
    //
    // @Context
    // <context.state> returns an ElementTag of the anvil's new damage state. Refer to <@link url https://jd.papermc.io/paper/1.19/com/destroystokyo/paper/event/block/AnvilDamagedEvent.DamageState.html>.
    // <context.break> returns an ElementTag(Boolean) that signifies whether the anvil will break.
    // <context.inventory> returns the InventoryTag of the anvil's inventory.
    //
    // @Determine
    // "STATE:<ElementTag>" to set the anvil's new damage state.
    // "BREAK:<ElementTag(Boolean)>" to set weather the anvil will break.
    // -->

    public AnvilBlockDamagedScriptEvent() {
        registerCouldMatcher("anvil block damaged|breaks");
        registerSwitches("state");
        this.<AnvilBlockDamagedScriptEvent, ElementTag>registerOptionalDetermination("state", ElementTag.class, (evt, context, state) -> {
            if (state.matchesEnum(AnvilDamagedEvent.DamageState.class)) {
                evt.event.setDamageState(state.asEnum(AnvilDamagedEvent.DamageState.class));
                return true;
            }
            return false;
        });
        this.<AnvilBlockDamagedScriptEvent, ElementTag>registerOptionalDetermination("break", ElementTag.class, (evt, context, value) -> {
            if (value.isBoolean()) {
                evt.event.setBreaking(value.asBoolean());
                return true;
            }
            return false;
        });
    }

    public AnvilDamagedEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (path.eventArgLowerAt(2).equals("breaks") && !event.isBreaking()) {
            return false;
        }
        if (!runInCheck(path, event.getInventory().getLocation())) {
            return false;
        }
        if (!runGenericSwitchCheck(path, "state", event.getDamageState().name())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "state" -> new ElementTag(event.getDamageState());
            case "inventory" -> InventoryTag.mirrorBukkitInventory(event.getInventory());
            case "break" -> new ElementTag(event.isBreaking());
            default -> super.getContext(name);
        };
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(InventoryViewUtil.getPlayer(event.getView()));
    }

    @EventHandler
    public void onAnvilDamaged(AnvilDamagedEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.entity.AreaEnterExitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.event.entity.EntityMoveEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDeathEvent;

public class AreaEnterExitScriptEventPaperImpl extends AreaEnterExitScriptEvent {

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("cause") && currentEvent instanceof EntityMoveEvent) {
            return new ElementTag("WALK");
        }
        else if (name.equals("from") && currentEvent instanceof EntityMoveEvent) {
            return new LocationTag(((EntityMoveEvent) currentEvent).getFrom());
        }
        return super.getContext(name);
    }

    @Override
    public void registerCorrectClass() {
        if (onlyTrackPlayers) {
            initListener(new SpigotListeners());
        }
        else {
            initListener(new PaperListeners());
        }
    }

    public class PaperListeners extends SpigotListeners {

        @EventHandler
        public void onEntityMove(EntityMoveEvent event) {
            if (event.getEntity().isValid()) {
                processNewPosition(new EntityTag(event.getEntity()), event.getTo(), event);
            }
        }

        @EventHandler
        public void onEntityDeath(EntityDeathEvent event) {
            processNewPosition(new EntityTag(event.getEntity()), null, event);
        }
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/BellRingScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.block.BellRingEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class BellRingScriptEvent extends BukkitScriptEvent implements Listener {


    public BellRingScriptEvent() {
        registerCouldMatcher("bell rings");
    }

    public BellRingEvent event;
    public LocationTag location;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, location)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getEntity());
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "entity":
                return event.getEntity() == null ? null : new EntityTag(event.getEntity()).getDenizenObject();
            case "location": return location;
        }
        return super.getContext(name);
    }

    @EventHandler
    public void bellRingEvent(BellRingEvent event) {
        this.event = event;
        location = new LocationTag(event.getBlock().getLocation());
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/BlockPreDispenseScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.event.block.BlockPreDispenseEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class BlockPreDispenseScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <block> tries to dispense <item>
    //
    // @Group Block
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Triggers before a block dispenses an item.
    // This event fires before the dispenser fully processes a drop, allowing access to the dispensing slot and cancellation of sound effects.
    //
    // @Context
    // <context.location> returns the LocationTag of the dispenser.
    // <context.item> returns the ItemTag of the item about to be dispensed.
    // <context.slot> returns a ElementTag(Number) of the slot that will be dispensed from.
    //
    // -->

    public BlockPreDispenseScriptEvent() {
        registerCouldMatcher("<block> tries to dispense <item>");
    }

    public BlockPreDispenseEvent event;
    public ItemTag item;
    public LocationTag location;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, location)) {
            return false;
        }
        if (!path.tryArgObject(0, location)) {
            return false;
        }
        if (!path.tryArgObject(4, item)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "item" -> item;
            case "location" -> location;
            case "slot" -> new ElementTag(event.getSlot() + 1);
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onBlockPreDispense(BlockPreDispenseEvent event) {
        this.event = event;
        item = new ItemTag(event.getItemStack());
        location = new LocationTag(event.getBlock().getLocation());
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/CreeperIgnitesScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import com.destroystokyo.paper.event.entity.CreeperIgniteEvent;

public class CreeperIgnitesScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // creeper ignites
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Triggers when a creeper is ignited by flint and steel, or by certain plugin-based activations.
    //
    // @Context
    // <context.entity> returns the EntityTag of the creeper.
    // <context.ignited> returns true if the creeper is ignited, or false if not. NOTE: In most cases, this will return true.
    //
    // -->

    public CreeperIgnitesScriptEvent() {
        registerCouldMatcher("creeper ignites");
    }

    public EntityTag entity;
    public CreeperIgniteEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, entity.getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "entity":
                return entity;
            case "ignited":
                return new ElementTag(event.isIgnited());
        }
        return super.getContext(name);
    }

    @EventHandler
    public void onCreeperIgnites(CreeperIgniteEvent event) {
        entity = new EntityTag(event.getEntity());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/DragonEggFormScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import io.papermc.paper.event.block.DragonEggFormEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class DragonEggFormScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // dragon egg forms
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Triggers when the ender dragon is defeated and the dragon egg forms.
    //
    // @Context
    // <context.entity> returns the EntityTag of the ender dragon right before it's removed.
    // <context.location> returns the LocationTag of the dragon egg.
    // <context.end_portal_location> returns the LocationTag of the end portal.
    // <context.previously_killed> returns an ElementTag(Boolean) of whether the dragon has been previously killed.
    // <context.respawn_phase> returns an ElementTag of the respawn phase. Valid values can be found at <@link url https://jd.papermc.io/paper/1.21.3/org/bukkit/boss/DragonBattle.RespawnPhase.html>.
    // <context.healing_crystals> returns a ListTag(EntityTag) of the healing end crystals.
    // <context.respawn_crystals> returns a ListTag(EntityTag) of the respawn end crystals.
    //
    // -->

    public DragonEggFormScriptEvent() {
        registerCouldMatcher("dragon egg forms");
    }

    public LocationTag location;
    public EntityTag entity;
    public DragonEggFormEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, location)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity;
            case "location" -> location;
            case "end_portal_location" -> new LocationTag(event.getDragonBattle().getEndPortalLocation());
            case "previously_killed" -> new ElementTag(event.getDragonBattle().hasBeenPreviouslyKilled());
            case "respawn_phase" -> new ElementTag(event.getDragonBattle().getRespawnPhase());
            case "healing_crystals" -> new ListTag(event.getDragonBattle().getHealingCrystals(), EntityTag::new);
            case "respawn_crystals" -> new ListTag(event.getDragonBattle().getRespawnCrystals(), EntityTag::new);
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onDragonEggForms(DragonEggFormEvent event) {
        location = new LocationTag(event.getBlock().getLocation());
        entity = new EntityTag(event.getDragonBattle().getEnderDragon());
        this.event = event;
        EntityTag.rememberEntity(entity.getBukkitEntity());
        fire(event);
        EntityTag.forgetEntity(entity.getBukkitEntity());
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityAddToWorldScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.entity.EntityAddToWorldEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityAddToWorldScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> added to world
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Triggers any time an entity is added to the world for any reason, including chunks loading pre-existing entities.
    //
    // @Context
    // <context.entity> returns the EntityTag that will be added. Note that this entity will not necessarily be fully spawned yet, so usage will be limited.
    // <context.location> returns the LocationTag that the entity will be added at.
    //
    // -->

    public EntityAddToWorldScriptEvent() {
        registerCouldMatcher("<entity> added to world");
    }

    public EntityTag entity;
    public LocationTag location;
    public EntityAddToWorldEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(0, entity)) {
            return false;
        }
        if (!runInCheck(path, location)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(null, null);
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "entity": return entity;
            case "location": return location;
        }
        return super.getContext(name);
    }

    @EventHandler
    public void onPreCreatureSpawn(EntityAddToWorldEvent event) {
        this.entity = new EntityTag(event.getEntity());
        this.location = new LocationTag(event.getEntity().getLocation());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityKnocksbackEntityScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.entity.EntityKnockbackByEntityEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityKnocksbackEntityScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> knocks back <entity>
    //
    // @Location true
    //
    // @Warning this event may in some cases double-fire, requiring usage of the 'ratelimit' command (like 'ratelimit <player> 1t') to prevent doubling actions.
    //
    // @Switch with:<item> to only process the event when the item used to cause damage (in the damager's hand) is a specified item.
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when an entity is knocked back from the hit of another entity.
    //
    // @Context
    // <context.entity> returns the EntityTag that was knocked back.
    // <context.damager> returns the EntityTag of the one who knocked.
    // <context.acceleration> returns the knockback applied as a vector.
    // <context.cause> returns the cause of the knockback (only on MC 1.20+). Causes list: <@link url https://jd.papermc.io/paper/1.21.1/io/papermc/paper/event/entity/EntityKnockbackEvent.Cause.html>
    //
    // @Determine
    // LocationTag as a vector to change the acceleration applied.
    //
    // @Player when the damager or damaged entity is a player. Cannot be both.
    //
    // @NPC when the damager or damaged entity is an NPC. Cannot be both.
    //
    // -->

    public EntityKnocksbackEntityScriptEvent() {
        registerCouldMatcher("<entity> knocks back <entity>");
        registerSwitches("with");
    }


    public EntityTag entity;
    public EntityTag hitBy;
    public ItemTag held;
    public EntityKnockbackByEntityEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        String attacker = path.eventArgLowerAt(0);
        String target = path.eventArgLowerAt(3);
        if (!hitBy.tryAdvancedMatcher(attacker, path.context) || (!entity.tryAdvancedMatcher(target, path.context))) {
            return false;
        }
        if (!runInCheck(path, entity.getLocation())) {
            return false;
        }
        if (!runWithCheck(path, held)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
        if (determinationObj.canBeType(LocationTag.class)) {
            event.getAcceleration().copy(determinationObj.asType(LocationTag.class, getTagContext(path)).toVector());
            return true;
        }
        return super.applyDetermination(path, determinationObj);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(
                hitBy.isPlayer() ? hitBy.getDenizenPlayer() : entity.isPlayer() ? entity.getDenizenPlayer() : null,
                hitBy.isCitizensNPC() ? hitBy.getDenizenNPC() : entity.isCitizensNPC() ? entity.getDenizenNPC() : null);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity.getDenizenObject();
            case "damager" -> hitBy.getDenizenObject();
            case "acceleration" -> new LocationTag(event.getAcceleration());
            case "cause" -> new ElementTag(event.getCause().name(), true); // TODO: once 1.20 is the minimum supported version, use the enum constructor
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onEntityKnockbackEntity(EntityKnockbackByEntityEvent event) {
        entity = new EntityTag(event.getEntity());
        hitBy = new EntityTag(event.getHitBy());
        held = hitBy.getItemInHand();
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityLoadCrossbowScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.entity.EntityLoadCrossbowEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityLoadCrossbowScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> loads crossbow
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Switch crossbow:<item> to only process the event if the crossbow is a specified item.
    //
    // @Triggers when a living entity loads a crossbow with a projectile.
    //
    // @Context
    // <context.entity> returns the EntityTag that is loading the crossbow.
    // <context.crossbow> returns the ItemTag of the crossbow.
    // <context.consumes> returns true if the loading will consume a projectile item, otherwise false.
    // <context.hand> returns "HAND" or "OFF_HAND" depending on which hand is holding the crossbow item.
    //
    // @Determine
    // "KEEP_ITEM" to keep the projectile item in the shooter's inventory.
    //
    // @Player when the entity is a player.
    //
    // @NPC when the entity is an NPC.
    //
    // -->

    public EntityLoadCrossbowScriptEvent() {
        registerCouldMatcher("<entity> loads crossbow");
        registerSwitches("crossbow");
        this.<EntityLoadCrossbowScriptEvent>registerTextDetermination("keep_item", (evt) -> {
            evt.event.setConsumeItem(false);
        });
    }

    public EntityLoadCrossbowEvent event;
    public EntityTag entity;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(0, entity)) {
            return false;
        }
        if (!runWithCheck(path, new ItemTag(event.getCrossbow()), "crossbow")) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(entity);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity.getDenizenObject();
            case "crossbow" -> new ItemTag(event.getCrossbow());
            case "hand" -> new ElementTag(event.getHand());
            case "consumes" -> new ElementTag(event.shouldConsumeItem());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onLoadCrossbow(EntityLoadCrossbowEvent event) {
        this.event = event;
        this.entity = new EntityTag(event.getEntity());
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityPathfindScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityPathfindScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> pathfinds
    //
    // @Location true
    // @Switch to:<area> to only process the event if the entity is pathfinding into a specified area.
    // @Switch at:<entity> to only process the event when the entity is pathfinding at a specified entity.
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when an entity starts pathfinding towards a location or entity.
    //
    // @Context
    // <context.entity> returns the EntityTag that is pathfinding.
    // <context.location> returns the LocationTag that is being pathfound to.
    // <context.target> returns the EntityTag that is being targeted, if any.
    //
    // @Player when the target entity is a player.
    //
    // @NPC when the target entity is an NPC.
    //
    // -->

    public EntityPathfindScriptEvent() {
        registerCouldMatcher("<entity> pathfinds");
        registerSwitches("to", "at");
    }


    public EntityTag entity;
    public EntityTag target;
    public EntityPathfindEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(0, entity)) {
            return false;
        }
        if (!runInCheck(path, entity.getLocation())) {
            return false;
        }
        if (!runInCheck(path, event.getLoc(), "to")) {
            return false;
        }
        if (!path.tryObjectSwitch("at", target)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(target);
    }

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("entity")) {
            return entity.getDenizenObject();
        }
        else if (name.equals("target") && target != null) {
            return target.getDenizenObject();
        }
        else if (name.equals("location")) {
            return new LocationTag(event.getLoc());
        }
        return super.getContext(name);
    }

    @EventHandler
    public void onEntityPathfind(EntityPathfindEvent event) {
        this.event = event;
        this.entity = new EntityTag(event.getEntity());
        Entity target = event.getTargetEntity();
        this.target = target != null ? new EntityTag(target) : null;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityRemoveFromWorldScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityRemoveFromWorldScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> removed from world
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Triggers any time an entity is removed from the world for any reason, including chunks unloading.
    //
    // @Context
    // <context.entity> returns the EntityTag that will be removed. Note that this entity will not necessarily be fully spawned at time of firing, so usage will be limited.
    //
    // -->

    public EntityRemoveFromWorldScriptEvent() {
        registerCouldMatcher("<entity> removed from world");
    }

    public EntityTag entity;
    public EntityRemoveFromWorldEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(0, entity)) {
            return false;
        }
        if (!runInCheck(path, entity.getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(null, null);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity;
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onPreCreatureSpawn(EntityRemoveFromWorldEvent event) {
        this.entity = new EntityTag(event.getEntity());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityStepsOnScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.objects.MaterialTag;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizencore.objects.ObjectTag;
import io.papermc.paper.event.entity.EntityMoveEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityStepsOnScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // entity steps on block
    // <entity> steps on <material>
    //
    // @Location true
    //
    // @Group Paper
    //
    // @Plugin Paper
    //
    // @Warning This event may fire very rapidly.
    //
    // @Cancellable true
    //
    // @Triggers when a non-player entity steps onto a specific block material. For players, use <@link event player steps on block>.
    //
    // @Context
    // <context.entity> returns an EntityTag of the entity stepping onto the block.
    // <context.location> returns a LocationTag of the block the entity is stepping on.
    // <context.previous_location> returns a LocationTag of where the entity was before stepping onto the block.
    // <context.new_location> returns a LocationTag of where the entity is now.
    //
    // @Example
    // # Announce the name of the entity stepping on the block and the material of block.
    // on entity steps on block:
    // - announce "<context.entity.name> stepped on a <context.location.material.name>!"
    //
    // @Example
    // # Announce the material of the block a sheep has stepped on.
    // on sheep steps on block:
    // - announce "A sheep has stepped on a <context.location.material.name>!"
    //
    // @Example
    // # Announce that a sheep has stepped on a diamond block.
    // on sheep steps on diamond_block:
    // - announce "A sheep has stepped on a diamond block! Must be a wealthy sheep!"
    // -->

    public EntityStepsOnScriptEvent() {
        registerCouldMatcher("<entity> steps on <block>");
    }

    public EntityMoveEvent event;
    public EntityTag entity;
    public LocationTag location;
    public MaterialTag material;

    @Override
    public boolean couldMatch(ScriptPath path) {
        if (!super.couldMatch(path)) {
            return false;
        }
        if (path.eventLower.startsWith("player")) {
            return false;
        }
        return true;
    }

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, location)) {
            return false;
        }
        if (!path.tryArgObject(0, entity)) {
            return false;
        }
        if (!path.tryArgObject(3, material)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity;
            case "location" -> location;
            case "previous_location" -> new LocationTag(event.getFrom());
            case "new_location" -> new LocationTag(event.getTo());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void entityStepsOnBlockEvent(EntityMoveEvent event) {
        if (!event.hasChangedBlock()) {
            return;
        }
        location = new LocationTag(event.getTo().clone().subtract(0.0, 0.05, 0.0));
        if (!Utilities.isLocationYSafe(location)) {
            return;
        }
        material = new MaterialTag(location.getBlock());
        entity = new EntityTag(event.getEntity());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityTeleportedByPortalScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.WorldTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.event.entity.EntityPortalReadyEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class EntityTeleportedByPortalScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> teleported by portal
    //
    // @Switch to:<world> to only process the event if the world the entity is being teleported to matches the specified WorldTag matcher.
    // @Switch portal_type:<type> to only process the event if the portal's type matches the specified portal type.
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Triggers When an entity is about to be teleported by a portal (currently only fires for nether portals).
    //
    // @Context
    // <context.entity> returns an EntityTag of the entity being teleported.
    // <context.target_world> returns a WorldTag of the world the entity is being teleported to.
    // <context.portal_type> returns an ElementTag of the portal's type. Will be one of <@link url https://jd.papermc.io/paper/1.19/org/bukkit/PortalType.html>.
    //
    // @Determine
    // "TARGET_WORLD:<WorldTag>" to set the world the entity will be teleported to.
    // "REMOVE_TARGET_WORLD" to remove the target world. Should usually cancel the event instead of using this.
    //
    // -->

    public EntityTeleportedByPortalScriptEvent() {
        registerCouldMatcher("<entity> teleported by portal");
        registerSwitches("to", "portal_type");
        this.<EntityTeleportedByPortalScriptEvent, WorldTag>registerDetermination("target_world", WorldTag.class, (evt, context, targetWorld) -> {
            evt.event.setTargetWorld(targetWorld.getWorld());
        });
        this.<EntityTeleportedByPortalScriptEvent>registerTextDetermination("remove_target_world", (evt) -> {
            evt.event.setTargetWorld(null);
        });
    }

    EntityPortalReadyEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryObjectSwitch("to", event.getTargetWorld() == null ? null : new WorldTag(event.getTargetWorld()))) {
            return false;
        }
        if (!runGenericSwitchCheck(path, "portal_type", event.getPortalType().name())) {
            return false;
        }
        if (!path.tryArgObject(0, new EntityTag(event.getEntity()))) {
            return false;
        }
        if (!runInCheck(path, event.getEntity().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> new EntityTag(event.getEntity());
            case "target_world" -> event.getTargetWorld() != null ? new WorldTag(event.getTargetWorld()) : null;
            case "portal_type" -> new ElementTag(event.getPortalType());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onEntityPortalReady(EntityPortalReadyEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/ExperienceOrbMergeScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.entity.ExperienceOrbMergeEvent;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ExperienceOrbMergeScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // experience orbs merge
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when two experience orbs are about to merge.
    //
    // @Context
    // <context.target> returns the EntityTag of the orb that will absorb the other experience orb.
    // <context.source> returns the EntityTag of the orb that will be removed and merged into the target.
    //
    // -->

    public ExperienceOrbMergeScriptEvent() {
        registerCouldMatcher("experience orbs merge");
    }

    public ExperienceOrbMergeEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getMergeTarget().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(null, null);
    }

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("target")) {
            return new EntityTag(event.getMergeTarget()).getDenizenObject();
        }
        else if (name.equals("source")) {
            return new EntityTag(event.getMergeSource()).getDenizenObject();
        }
        return super.getContext(name);
    }

    @EventHandler
    public void experienceOrbsMerge(ExperienceOrbMergeEvent event) {
        this.event = event;
        Entity target = event.getMergeTarget();
        EntityTag.rememberEntity(target);
        fire(event);
        EntityTag.forgetEntity(target);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerAbsorbsExperienceScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.events.ScriptEvent;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerAbsorbsExperienceScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player absorbs experience
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player is absorbing an experience orb.
    //
    // @Context
    // <context.entity> returns the EntityTag of the experience orb.
    //
    // @Player Always.
    //
    // -->

    public PlayerAbsorbsExperienceScriptEvent() {
        registerCouldMatcher("player absorbs experience");
    }

    public PlayerPickupExperienceEvent event;

    @Override
    public boolean matches(ScriptEvent.ScriptPath path) {
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("entity")) {
            return new EntityTag(event.getExperienceOrb());
        }
        return super.getContext(name);
    }

    @EventHandler
    public void absorbsExperience(PlayerPickupExperienceEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerBeaconEffectScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.objects.properties.item.ItemPotion;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.block.BeaconEffectEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerBeaconEffectScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player beacon effect applied
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a beacon applies an effect to a player.
    //
    // @Context
    // <context.location> returns the LocationTag of the beacon applying an effect.
    // <context.effect_data> returns a MapTag of the potion effect in <@link language Potion Effect Format>.
    // <context.effect_type> returns an ElementTag of the effect type.
    // <context.is_primary> returns an ElementTag(Boolean) of whether the beacon effect is the primary effect.
    //
    // @Determine
    // ElementTag to change the applied potion effect (in the same format as <@link tag EntityTag.list_effects>).
    //
    // @Player Always.
    //
    // -->

    public PlayerBeaconEffectScriptEvent() {
        registerCouldMatcher("player beacon effect applied");
    }

    public BeaconEffectEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
        try {
            event.setEffect(ItemPotion.parseLegacyEffectString(determinationObj.toString(), getTagContext(path)));
            return true;
        }
        catch (Exception e) {
            Debug.echoError(e);
        }
        return super.applyDetermination(path, determinationObj);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "location" -> new LocationTag(event.getBlock().getLocation());
            case "effect" -> new ElementTag(ItemPotion.effectToLegacyString(event.getEffect(), null));
            case "effect_data" -> ItemPotion.effectToMap(event.getEffect(), true);
            case "effect_type" -> new ElementTag(event.getEffect().getType().getName());
            case "is_primary" -> new ElementTag(event.isPrimary());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void beaconEffectEvent(BeaconEffectEvent event) {
        if (EntityTag.isNPC(event.getPlayer())) {
            return;
        }
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChangesFramedItemScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerItemFrameChangeEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerChangesFramedItemScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player changes framed <item>
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player interacts with an item frame by adding, removing, or rotating the item held in it.
    //
    // @Switch frame:<entity> to only process the event if the item frame entity being matches the input.
    // @Switch action:<action> to only process the event if the change matches the input.
    //
    // @Context
    // <context.frame> returns the EntityTag of the item frame.
    // <context.item> returns the ItemTag of the item held in the item frame.
    // <context.action> returns the ElementTag of the action being performed, based on <@link url https://jd.papermc.io/paper/1.20/io/papermc/paper/event/player/PlayerItemFrameChangeEvent.ItemFrameChangeAction.html>
    //
    // @Determine
    // "ITEM:<ItemTag>" to change the item held by the item frame. If there is an item already in the frame, it will be replaced. To remove the item, set it to air.
    //
    // @Player Always.
    // -->

    public PlayerChangesFramedItemScriptEvent() {
        registerCouldMatcher("player changes framed <item>");
        registerSwitches("frame", "action");
        this.<PlayerChangesFramedItemScriptEvent, ItemTag>registerDetermination("item", ItemTag.class, (evt, context, item) -> {
            evt.event.setItemStack(item.getItemStack());
        });
    }

    public ItemTag item;
    public EntityTag frame;
    public ElementTag action;
    public PlayerItemFrameChangeEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(3, item)) {
            return false;
        }
        if (!path.tryObjectSwitch("frame", frame)) {
            return false;
        }
        if (!path.tryObjectSwitch("action", action)) {
            return false;
        }
        if (!runInCheck(path, frame.getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "frame" -> frame;
            case "item" -> new ItemTag(event.getItemStack());
            case "action" -> action;
            default -> super.getContext(name);
        };
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @EventHandler
    public void onPlayerChangesFramedItem(PlayerItemFrameChangeEvent event) {
        item = new ItemTag(event.getItemStack());
        frame = new EntityTag(event.getItemFrame());
        action = new ElementTag(event.getAction());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChoosesArrowScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.*;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerReadyArrowEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerChoosesArrowScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player chooses arrow
    //
    // @Cancellable true
    //
    // @Group Player
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Triggers when a player chooses an arrow to load a bow/crossbow.
    //
    // @Switch arrow:<item> to only process the event when the players chosen arrow matches the input.
    // @Switch bow:<item> to only process the event when the players bow matches the input.
    //
    // @Context
    // <context.arrow> returns the ItemTag of the arrow that was chosen.
    // <context.bow> returns the ItemTag of the bow that is about to get loaded.
    //
    // @Player Always.
    //
    // @Example
    // # This example prevents using any arrow but spectral_arrows.
    // on player chooses arrow arrow:!spectral_arrow:
    // - determine cancelled
    // -->

    public PlayerChoosesArrowScriptEvent() {
        registerCouldMatcher("player chooses arrow");
        registerSwitches("arrow", "bow");
    }

    public PlayerReadyArrowEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryObjectSwitch("arrow", new ItemTag(event.getArrow()))) {
            return false;
        }
        if (!path.tryObjectSwitch("bow", new ItemTag(event.getBow()))) {
            return false;
        }
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "arrow": return new ItemTag(event.getArrow());
            case "bow": return new ItemTag(event.getBow());
        }
        return super.getContext(name);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(new PlayerTag(event.getPlayer()), null);
    }

    @Override
    public void cancellationChanged() {
        if (cancelled) {
            final Player p = event.getPlayer();
            Bukkit.getScheduler().scheduleSyncDelayedTask(Denizen.getInstance(), p::updateInventory, 1);
        }
        super.cancellationChanged();
    }

    @EventHandler
    public void onPlayerChoosesArrow(PlayerReadyArrowEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChunkUnloadScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.ChunkTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.packet.PlayerChunkUnloadEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerChunkUnloadScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player receives chunk unload
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Warning This event will fire *extremely* rapidly and almost guarantees lag. Use with maximum caution.
    //
    // @Triggers when a Player receives a chunk unload packet.
    // Should only be used for packet/clientside related stuff. Not intended for modifying server side.
    // Generally prefer <@link event chunk unloads> in most cases.
    //
    // @Context
    // <context.chunk> returns a ChunkTag of the chunk being unloaded.
    //
    // @Player Always.
    // -->

    public PlayerChunkUnloadScriptEvent() {
        registerCouldMatcher("player receives chunk unload");
    }

    public PlayerChunkUnloadEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "chunk" -> new ChunkTag(event.getChunk());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void playerChunkUnloadEvent(PlayerChunkUnloadEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksFakeEntityScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.entity.FakeEntity;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.events.ScriptEvent;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerUseUnknownEntityEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerClicksFakeEntityScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player (right|left) clicks fake entity
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Triggers when a player clicks a fake entity, one that is only shown to the player and not tracked by the server.
    //
    // @Context
    // <context.entity> returns the EntityTag of the entity that was clicked. Note that this entity is not being tracked by the server, so many operations may not be possible on it.
    // This will return null if the player clicks a fake entity that was not spawned via <@link command fakespawn>.
    // <context.hand> returns an ElementTag of the hand used to click.
    // <context.click_type> returns an ElementTag of the click type (left/right).
    //
    // @Player Always.
    //
    // -->

    public PlayerClicksFakeEntityScriptEvent() {
        registerCouldMatcher("player (right|left) clicks fake entity");
    }

    public PlayerUseUnknownEntityEvent event;

    @Override
    public boolean matches(ScriptEvent.ScriptPath path) {
        if (path.eventArgLowerAt(1).equals("left") && !event.isAttack()) {
            return false;
        }
        else if (path.eventArgLowerAt(1).equals("right") && event.isAttack()) {
            return false;
        }
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "entity":
                FakeEntity fakeEntity = FakeEntity.getFakeEntityFor(event.getPlayer().getUniqueId(), event.getEntityId());
                if (fakeEntity != null) {
                    return fakeEntity.entity;
                }
                break;
            case "hand":
                return new ElementTag(event.getHand());
            case "click_type":
                return new ElementTag(event.isAttack() ? "left" : "right");
        }
        return super.getContext(name);
    }

    @EventHandler
    public void clickFakeEntity(PlayerUseUnknownEntityEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksInRecipeBookScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerClicksInRecipeBookScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player uses recipe book
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player interacts with their recipe book.
    //
    // @Context
    // <context.recipe> returns the key of the recipe that was clicked.
    // <context.is_all> returns 'true' if the player is trying to make the maximum amount of items from the recipe, otherwise 'false'.
    //
    // @Player Always.
    //
    // -->

    public PlayerClicksInRecipeBookScriptEvent() {
        registerCouldMatcher("player uses recipe book");
    }

    public PlayerRecipeBookClickEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "recipe":
                return new ElementTag(event.getRecipe().toString());
            case "is_all":
                return new ElementTag(event.isMakeAll());
        }
        return super.getContext(name);
    }

    @EventHandler
    public void playerUsesRecipeBook(PlayerRecipeBookClickEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClientOptionsChangeScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.MapTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.SkinParts;
import com.destroystokyo.paper.event.player.PlayerClientOptionsChangeEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerClientOptionsChangeScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player client options change
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Player Always.
    //
    // @Triggers when a player changes their client options.
    //
    // @Context
    // <context.server_listings_enabled> returns a ElementTag(Boolean) of whether the player has server listings enabled. Available only on MC 1.19+.
    // <context.chat_visibility> returns an ElementTag of the player's chat visibility. Valid chat visibility options can be found at <@link url https://jd.papermc.io/paper/1.20/com/destroystokyo/paper/ClientOption.ChatVisibility.html>
    // <context.locale> returns an ElementTag of the player's current locale.
    // <context.main_hand> returns a ElementTag of the player's main hand. Can either be LEFT or RIGHT.
    // <context.skin_parts> returns a MapTag of whether the player's skin parts are enabled or not. For example: [cape=true;jacket=false;left_sleeve=true;right_sleeve=false;left_pants=true;right_pants=false;hat=true]
    // <context.view_distance> returns a ElementTag(Number) of the player's view distance.
    // <context.server_listings_changed> returns a ElementTag(Boolean) of whether the player's server listings have changed. Available only on MC 1.19+.
    // <context.chat_colors> returns a ElementTag(Boolean) of whether the player has chat colors enabled.
    // <context.chat_colors_changed> returns a ElementTag(Boolean) of whether the player has toggled their chat colors.
    // <context.chat_visibility_changed> returns a ElementTag(Boolean) of whether the player's chat visibility has changed. Available only on MC 1.19+.
    // <context.locale_changed> returns a ElementTag(Boolean) of whether the player's locale has changed.
    // <context.main_hand_changed> returns a ElementTag(Boolean) of whether the player's main hand has changed.
    // <context.skin_parts_changed> returns a ElementTag(Boolean) of whether the player's skin parts have changed.
    // <context.text_filtering_changed> returns a ElementTag(Boolean) of whether the player's text filtering has changed. Available only on MC 1.19+.
    // <context.text_filtering_enabled> returns a ElementTag(Boolean) of whether the player has text filtering enabled. Available only on MC 1.19+.
    // <context.view_distance_changed> returns a ElementTag(Boolean) of whether the player's view distance has changed.
    //
    // @Player Always.
    //
    // -->

    public PlayerClientOptionsChangeScriptEvent() {
        registerCouldMatcher("player client options change");
    }

    public PlayerClientOptionsChangeEvent event;

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "server_listings_enabled" -> NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) ? new ElementTag(event.allowsServerListings()) : null;
            case "chat_visibility" -> new ElementTag(event.getChatVisibility());
            case "locale" -> new ElementTag(event.getLocale());
            case "main_hand" -> new ElementTag(event.getMainHand());
            case "skin_parts" -> {
                MapTag map = new MapTag();
                SkinParts skinParts = event.getSkinParts();
                map.putObject("cape", new ElementTag(skinParts.hasCapeEnabled()));
                map.putObject("jacket", new ElementTag(skinParts.hasJacketEnabled()));
                map.putObject("left_sleeve", new ElementTag(skinParts.hasLeftSleeveEnabled()));
                map.putObject("right_sleeve", new ElementTag(skinParts.hasRightSleeveEnabled()));
                map.putObject("left_pants", new ElementTag(skinParts.hasLeftPantsEnabled()));
                map.putObject("right_pants", new ElementTag(skinParts.hasRightPantsEnabled()));
                map.putObject("hat", new ElementTag(skinParts.hasHatsEnabled()));
                yield map;
            }
            case "view_distance" -> new ElementTag(event.getViewDistance());
            case "server_listings_changed" -> NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) ? new ElementTag(event.hasAllowServerListingsChanged()) : null;
            case "chat_colors_enabled" -> new ElementTag(event.hasChatColorsEnabled());
            case "chat_colors_changed" -> new ElementTag(event.hasChatColorsEnabledChanged());
            case "chat_visibility_changed" -> NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) ? new ElementTag(event.hasChatVisibilityChanged()) : null;
            case "locale_changed" -> new ElementTag(event.hasLocaleChanged());
            case "main_hand_changed" -> new ElementTag(event.hasMainHandChanged());
            case "skin_parts_changed" -> new ElementTag(event.hasSkinPartsChanged());
            case "text_filtering_changed" -> NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) ? new ElementTag(event.hasTextFilteringChanged()) : null;
            case "text_filtering_enabled" -> NMSHandler.getVersion().isAtLeast(NMSVersion.v1_19) ? new ElementTag(event.hasTextFilteringEnabled()) : null;
            case "view_distance_changed" -> new ElementTag(event.hasViewDistanceChanged());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onPlayerClientOptionsChange(PlayerClientOptionsChangeEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerCompletesAdvancementScriptEventPaperImpl.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.player.PlayerCompletesAdvancementScriptEvent;
import com.denizenscript.denizen.paper.PaperModule;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import net.md_5.bungee.api.ChatColor;

public class PlayerCompletesAdvancementScriptEventPaperImpl extends PlayerCompletesAdvancementScriptEvent {

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "message": return new ElementTag(PaperModule.stringifyComponent(event.message()));
        }
        return super.getContext(name);
    }

    @Override
    public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
        if (determinationObj instanceof ElementTag) {
            String determination = determinationObj.toString();
            String lower = CoreUtilities.toLowerCase(determination);
            if (lower.equals("no_message")) {
                event.message(null);
                return true;
            }
            event.message(PaperModule.parseFormattedText(determination, ChatColor.WHITE));
            return true;
        }
        else {
            return super.applyDetermination(path, determinationObj);
        }
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerDeepSleepScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerDeepSleepEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerDeepSleepScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player deep sleeps
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player has slept long enough in a bed to count as being in deep sleep and thus skip the night. Cancelling the event prevents the player from qualifying to skip the night.
    //
    // @Player Always.
    //
    // -->

    public PlayerDeepSleepScriptEvent() {
        registerCouldMatcher("player deep sleeps");
    }

    public PlayerDeepSleepEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @EventHandler
    public void playerDeepSleep(PlayerDeepSleepEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerElytraBoostScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerElytraBoostEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerElytraBoostScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player boosts elytra
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Switch with:<item> to only process the event if the firework item used matches the specified item.
    // @Switch elytra:<item> to only process the event if the elytra used matches the specified item.
    //
    // @Triggers when a player boosts their elytra with a firework rocket while gliding.
    //
    // @Context
    // <context.item> returns the firework item used to boost.
    // <context.entity> returns the firework entity that was spawned.
    // <context.should_keep> returns whether the firework item gets consumed.
    //
    // @Player Always.
    //
    // @Determine
    // "KEEP:<ElementTag(Boolean)>" to set whether the firework item should be kept.
    //
    // -->

    public PlayerElytraBoostScriptEvent() {
        registerCouldMatcher("player boosts elytra");
        registerSwitches("with", "elytra");
        this.<PlayerElytraBoostScriptEvent, ElementTag>registerOptionalDetermination("keep", ElementTag.class, (evt, context, value) -> {
            if (value.isBoolean()) {
                evt.event.setShouldConsume(!value.asBoolean());
                return true;
            }
            return false;
        });
    }

    public PlayerElytraBoostEvent event;
    public ItemTag firework;
    public PlayerTag player;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, player.getLocation())) {
            return false;
        }
        if (!runWithCheck(path, firework)) {
            return false;
        }
        if (!path.tryObjectSwitch("elytra", new ItemTag(player.getPlayerEntity().getEquipment().getChestplate()))) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(player, null);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "item" -> firework;
            case "entity" -> new EntityTag(event.getFirework());
            case "should_keep" -> new ElementTag(!event.shouldConsume());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onPlayerElytraBoost(PlayerElytraBoostEvent event) {
        firework = new ItemTag(event.getItemStack());
        player = new PlayerTag(event.getPlayer());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerEquipsArmorScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;

import java.util.HashMap;

public class PlayerEquipsArmorScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player equips|unequips armor|helmet|chestplate|leggings|boots
    // player equips|unequips <item>
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Triggers when a player (un)equips armor.
    //
    // @Warning This event is not reliable, and may miss some types of equipment changes or fire when equipment hasn't actually changed.
    //
    // @Context
    // <context.new_item> returns the ItemTag that is now in the slot.
    // <context.old_item> returns the ItemTag that used to be in the slot.
    // <context.slot> returns the name of the slot.
    //
    // @Player Always.
    //
    // -->

    public static HashMap<String, PlayerArmorChangeEvent.SlotType> slotsByName = new HashMap<>();
    public static HashMap<PlayerArmorChangeEvent.SlotType, String> namesBySlot = new HashMap<>();

    public static void registerSlot(String name, PlayerArmorChangeEvent.SlotType slot) {
        slotsByName.put(name, slot);
        namesBySlot.put(slot, name);
    }

    public PlayerEquipsArmorScriptEvent() {
        registerSlot("helmet", PlayerArmorChangeEvent.SlotType.HEAD);
        registerSlot("chestplate", PlayerArmorChangeEvent.SlotType.CHEST);
        registerSlot("leggings", PlayerArmorChangeEvent.SlotType.LEGS);
        registerSlot("boots", PlayerArmorChangeEvent.SlotType.FEET);
        registerCouldMatcher("player (equips|unequips) armor|helmet|chestplate|leggings|boots");
        registerCouldMatcher("player (equips|unequips) <item>");
    }

    public ItemTag oldItem;
    public ItemTag newItem;
    public PlayerArmorChangeEvent.SlotType slot;
    public PlayerTag player;

    @Override
    public boolean matches(ScriptPath path) {
        String type = path.eventArgLowerAt(1);
        String itemCompare = path.eventArgLowerAt(2);
        PlayerArmorChangeEvent.SlotType slotType = slotsByName.get(itemCompare);
        if (slotType != null && slot != slotType) {
            return false;
        }
        if (type.equals("equips")) {
            if (slotType != null) {
                if (newItem.getMaterial().getMaterial() == Material.AIR) {
                    return false;
                }
            }
            else if (!itemCompare.equals("armor") && !newItem.tryAdvancedMatcher(itemCompare, path.context)) {
                return false;
            }
        }
        else { // unequips
            if (slotType != null) {
                if (oldItem.getMaterial().getMaterial() == Material.AIR) {
                    return false;
                }
            }
            else if (!itemCompare.equals("armor") && !oldItem.tryAdvancedMatcher(itemCompare, path.context)) {
                return false;
            }
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(player, null);
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "new_item":
                return newItem;
            case "old_item":
                return oldItem;
            case "slot":
                return new ElementTag(namesBySlot.get(slot));
        }
        return super.getContext(name);
    }

    public String simpleComparisonString(ItemStack stack) {
        if (stack == null) {
            return "null";
        }
        stack = stack.clone();
        stack.setAmount(1);
        stack.setDurability((short) 0);
        return CoreUtilities.toLowerCase(new ItemTag(stack).identify());
    }

    @EventHandler
    public void armorChangeEvent(PlayerArmorChangeEvent event) {
        if (EntityTag.isCitizensNPC(event.getPlayer())) {
            return;
        }
        if (simpleComparisonString(event.getOldItem()).equals(simpleComparisonString(event.getNewItem()))) {
            return;
        }
        newItem = new ItemTag(event.getNewItem());
        oldItem = new ItemTag(event.getOldItem());
        slot = event.getSlotType();
        player = new PlayerTag(event.getPlayer());
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerGrantedAdvancementCriterionScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerAdvancementCriterionGrantEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerGrantedAdvancementCriterionScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player granted advancement criterion
    //
    // @Group Paper
    //
    // @Plugin Paper
    //
    // @Cancellable true
    //
    // @Switch advancement:<name> to only fire if the advancement for the criterion has the specified name.
    // @Switch criterion:<name> to only fire if the criterion being granted has the specified name.
    //
    // @Triggers when a player is granted a single criterion for an advancement.
    // To fire when ALL the criteria for an advancement is met, use <@link event player completes advancement>
    //
    // @Context
    // <context.advancement> returns the advancement's minecraft ID key.
    // <context.criterion> returns the criterion minecraft ID key.
    //
    // @Player Always.
    //
    // @Example
    // # Prevent a player from being granted an advancement criterion.
    // on player granted advancement criterion:
    // - determine cancelled
    //
    // @Example
    // # This will only narrate when the player is granted the criterion for taming a Calico cat
    // # for the "A Complete Catalogue" advancement.
    // on player granted advancement criterion advancement:husbandry/complete_catalogue criterion:calico:
    // - narrate "That is a pretty cute Calico cat you have there!"
    //
    // @Example
    // # This will fire for a custom Denizen advancement called "my_advancement".
    // on player granted advancement criterion advancement:denizen:my_advancement:
    // - narrate "You got the advancement!"
    // -->

    public PlayerGrantedAdvancementCriterionScriptEvent() {
        registerCouldMatcher("player granted advancement criterion");
        registerSwitches("advancement", "criterion");
    }

    public ElementTag criterion;
    public ElementTag advancement;
    public PlayerAdvancementCriterionGrantEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryObjectSwitch("advancement", advancement)) {
            return false;
        }
        if (!path.tryObjectSwitch("criterion", criterion)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "criterion" -> criterion;
            case "advancement" -> advancement;
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void playerGrantedAdvancementCriterionEvent(PlayerAdvancementCriterionGrantEvent event) {
        this.event = event;
        criterion = new ElementTag(Utilities.namespacedKeyToString(Utilities.parseNamespacedKey(event.getCriterion())));
        advancement = new ElementTag(Utilities.namespacedKeyToString(event.getAdvancement().getKey()));
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerInventorySlotChangeScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerInventorySlotChangeEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerInventorySlotChangeScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player inventory slot changes
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Switch from:<item> to only process the event if the previous item in the slot matches the specified item.
    // @Switch to:<item> to only process the event if the new item in the slot matches the specified item.
    // @Switch slot:<slot> to only process the event if a specific slot was clicked. For slot input options, see <@link language Slot Inputs>.
    //
    // @Triggers when the item in a slot of a player's inventory changes.
    // Note that this fires for every item in the player's inventory when they join.
    //
    // @Context
    // <context.new_item> returns an ItemTag of the new item in the slot.
    // <context.old_item> returns an ItemTag of the previous item in the slot.
    // <context.slot> returns an ElementTag(Number) of the slot that was changed.
    // <context.raw_slot> returns an ElementTag(Number) of the raw number of the slot that was changed.
    //
    // @Player Always.
    //
    // -->

    public PlayerInventorySlotChangeScriptEvent() {
        registerCouldMatcher("player inventory slot changes");
        registerSwitches("from", "to", "slot");
    }

    public PlayerInventorySlotChangeEvent event;
    public ItemTag oldItem;
    public ItemTag newItem;

    @Override
    public boolean matches(ScriptPath path) {
        if (!trySlot(path, "slot", event.getPlayer(), event.getSlot())) {
            return false;
        }
        if (!runWithCheck(path, oldItem, "from")) {
            return false;
        }
        if (!runWithCheck(path, newItem, "to")) {
            return false;
        }
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "new_item": return newItem;
            case "old_item": return oldItem;
            case "slot": return new ElementTag(event.getSlot() + 1);
            case "raw_slot": return new ElementTag(event.getRawSlot());
        }
        return super.getContext(name);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @EventHandler
    public void onPlayerInventorySlotChange(PlayerInventorySlotChangeEvent event) {
        if (EntityTag.isNPC(event.getPlayer())) {
            return;
        }
        oldItem = new ItemTag(event.getOldItemStack());
        newItem = new ItemTag(event.getNewItemStack());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerItemTakesDamageScriptEventPaperImpl.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.player.PlayerItemTakesDamageScriptEvent;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.nms.NMSVersion;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;

public class PlayerItemTakesDamageScriptEventPaperImpl extends PlayerItemTakesDamageScriptEvent {

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "original_damage": return NMSHandler.getVersion().isAtLeast(NMSVersion.v1_18) ? new ElementTag(event.getOriginalDamage()) : null;
        }
        return super.getContext(name);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerJumpsScriptEventPaperImpl.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.player.PlayerJumpScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.destroystokyo.paper.event.player.PlayerJumpEvent;
import org.bukkit.event.EventHandler;

public class PlayerJumpsScriptEventPaperImpl extends PlayerJumpScriptEvent {

    @EventHandler
    public void onPlayerJumps(PlayerJumpEvent event) {
        if (EntityTag.isNPC(event.getPlayer())) {
            return;
        }
        location = new LocationTag(event.getFrom());
        player = new PlayerTag(event.getPlayer());
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLecternPageChangeScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerLecternPageChangeEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerLecternPageChangeScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player flips lectern page
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Player Always.
    //
    // @Triggers when the player flips to a page in a lectern.
    //
    // @Switch book:<item> to only process the event if the book on the lectern matches the given item.
    //
    // @Context
    // <context.book> returns an ItemTag of the book in the lectern.
    // <context.lectern> returns a LocationTag of the lectern.
    // <context.old_page> returns an ElementTag(Number) of the last page the player was on.
    // <context.new_page> returns an ElementTag(Number) of the new page that the player flipped to.
    // <context.flip_direction> returns the direction in which the player flips the lectern book page, can be either LEFT or RIGHT.
    //
    // @Determine
    // "PAGE:<ElementTag(Number)>" to set the page that the player will flip to.
    //
    // @Example
    // # Announce the page the player flipped to.
    // on player flips lectern page:
    // - announce "<player.name> flipped to page #<context.new_page>!"
    //
    // @Example
    // # Flips the player to page 5 if they are flagged with "pancakes".
    // on player flips lectern page flagged:pancakes:
    // - determine page:5
    //
    // -->

    public PlayerLecternPageChangeScriptEvent() {
        registerCouldMatcher("player flips lectern page");
        registerSwitches("book");
        this.<PlayerLecternPageChangeScriptEvent, ElementTag>registerOptionalDetermination("page", ElementTag.class, (evt, context, page) -> {
            if (page.isInt()) {
                evt.event.setNewPage(page.asInt() - 1);
                return true;
            }
            return false;
        });
    }

    public PlayerLecternPageChangeEvent event;
    
    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getLectern().getLocation())) {
            return false;
        }
        if (!path.tryObjectSwitch("book", new ItemTag(event.getBook()))) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "book" -> new ItemTag(event.getBook());
            case "lectern" -> new LocationTag(event.getLectern().getLocation());
            case "old_page" -> new ElementTag(event.getOldPage() + 1);
            case "new_page" -> new ElementTag(event.getNewPage() + 1);
            case "flip_direction" -> new ElementTag(event.getPageChangeDirection());
            default -> super.getContext(name);
        };
    }
    
    @EventHandler
    public void onPlayerFlipsLecternPage(PlayerLecternPageChangeEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLoomPatternSelectScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.InventoryTag;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerLoomPatternSelectEvent;
import org.bukkit.block.banner.PatternType;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerLoomPatternSelectScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player selects loom pattern
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Player Always.
    //
    // @Triggers when a player selects a loom pattern.
    //
    // @Switch type:<pattern> to only process the event if the specified pattern is selected.
    //
    // @Context
    // <context.loom> returns an InventoryTag of the loom.
    // <context.pattern> returns an ElementTag of the selected pattern. Valid pattern types can be found at: <@link url https://jd.papermc.io/paper/1.19/org/bukkit/block/banner/PatternType.html>
    //
    // @Determine
    // "PATTERN:<ElementTag>" to set the pattern type of the loom.
    //
    // @Example
    // # Announce the player's selected loom pattern.
    // on player selects loom pattern:
    // - announce "<player.name> selected the <context.pattern> pattern!"
    //
    // @Example
    // # If the player selects the "CREEPER" pattern type, publicly shames them before setting the pattern to "SKULL".
    // on player selects loom pattern type:CREEPER:
    // - announce "Shame on <player.name> for selecting the creeper pattern!"
    // - determine pattern:SKULL
    //
    // -->

    public PlayerLoomPatternSelectScriptEvent() {
        registerCouldMatcher("player selects loom pattern");
        registerSwitches("type");
        this.<PlayerLoomPatternSelectScriptEvent, ElementTag>registerOptionalDetermination("pattern", ElementTag.class, (evt, context, pattern) -> {
            if (Utilities.matchesEnumlike(pattern, PatternType.class)) {
                evt.event.setPatternType(Utilities.elementToEnumlike(pattern, PatternType.class));
                return true;
            }
            return false;
        });
    }

    public PlayerLoomPatternSelectEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getLoomInventory().getLocation())) {
            return false;
        }
        if (!path.tryObjectSwitch("type", Utilities.enumlikeToElement(event.getPatternType()))) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "loom" -> InventoryTag.mirrorBukkitInventory(event.getLoomInventory());
            case "pattern" -> Utilities.enumlikeToElement(event.getPatternType());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onPlayerSelectsLoomPattern(PlayerLoomPatternSelectEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerNamesEntityScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.paper.PaperModule;
import com.denizenscript.denizen.utilities.PaperAPITools;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerNameEntityEvent;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerNamesEntityScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player names <entity>
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player attempts to rename an entity with a name tag.
    //
    // @Context
    // <context.entity> returns an EntityTag of the renamed entity.
    // <context.old_name> returns the old name of the entity, if any.
    // <context.name> returns the new name of the entity.
    // <context.persistent> returns whether this will cause the entity to persist through server restarts.
    //
    // @Determine
    // "NAME:<ElementTag>" to set a different name for the entity.
    // "PERSISTENT:<ElementTag(Boolean)>" to set whether the event will cause the entity to persist through restarts. NOTE: Entities may still persist for other reasons. To ensure they do not, use <@link mechanism EntityTag.force_no_persist>.
    //
    // @Player Always.
    //
    // -->

    public PlayerNamesEntityScriptEvent() {
        registerCouldMatcher("player names <entity>");
        this.<PlayerNamesEntityScriptEvent, ElementTag>registerOptionalDetermination("persistent", ElementTag.class, (evt, context, determination) -> {
            if (determination.isBoolean()) {
                evt.event.setPersistent(determination.asBoolean());
                return true;
            }
            return false;
        });
        this.<PlayerNamesEntityScriptEvent, ElementTag>registerDetermination("name", ElementTag.class, (evt, context, determination) -> {
            evt.event.setName(PaperModule.parseFormattedText(determination.toString(), ChatColor.WHITE));
        });
    }

    public PlayerNameEntityEvent event;
    public EntityTag entity;
    public ElementTag oldName;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, entity.getLocation())) {
            return false;
        }
        if (!path.tryArgObject(2, entity)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity.getDenizenObject();
            case "name" -> new ElementTag(PaperModule.stringifyComponent(event.getName()), true);
            case "old_name" -> oldName;
            case "persistent" -> new ElementTag(event.isPersistent());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void playerNamesEntity(PlayerNameEntityEvent event) {
        this.event = event;
        entity = new EntityTag(event.getEntity());
        String name = PaperAPITools.instance.getCustomName(entity.getBukkitEntity());
        oldName = name == null ? null : new ElementTag(name, true);
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerOpenSignScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerOpenSignEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerOpenSignScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player opens sign
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Triggers When a player opens a sign (eg after placing a sign, or by clicking on it to edit it).
    //
    // @Context
    // <context.side> returns an ElementTag of the side of the sign that was clicked (FRONT or BACK).
    // <context.cause> returns an ElementTag of reason the sign was opened - see <@link url https://jd.papermc.io/paper/1.20/io/papermc/paper/event/player/PlayerOpenSignEvent.Cause.html>.
    // <context.location> returns a LocationTag of the sign's location.
    //
    // @Player Always.
    //
    // -->

    public PlayerOpenSignScriptEvent() {
        registerCouldMatcher("player opens sign");
    }

    public PlayerOpenSignEvent event;
    public LocationTag location;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, location)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "side" -> new ElementTag(event.getSide());
            case "cause" -> new ElementTag(event.getCause());
            case "location" -> location;
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void playerOpenSignEvent(PlayerOpenSignEvent event) {
        location = new LocationTag(event.getSign().getLocation());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerPreparesGrindstoneCraftScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.*;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.inventory.PrepareResultEvent;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.GrindstoneInventory;

public class PlayerPreparesGrindstoneCraftScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player prepares grindstone craft <item>
    //
    // @Group Player
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Triggers when a player prepares to grind an item.
    //
    // @Context
    // <context.inventory> returns the InventoryTag of the grindstone inventory.
    // <context.result> returns the ItemTag to be crafted.
    //
    // @Determine
    // "RESULT:<ItemTag>" to change the item that is crafted.
    //
    // @Player Always.
    //
    // @Warning The player doing the grinding is estimated and may be inaccurate.
    //
    // @Example
    // # This example removes the usually not removable curse of binding enchantment.
    // on player prepares grindstone craft item:
    // - determine result:<context.result.with[remove_enchantments=binding_curse]>
    //
    // -->


    public PlayerPreparesGrindstoneCraftScriptEvent() {
        registerCouldMatcher("player prepares grindstone craft <item>");
        this.<PlayerPreparesGrindstoneCraftScriptEvent, ItemTag>registerDetermination("result", ItemTag.class, (evt, context, item) -> {
            evt.event.setResult(item.getItemStack());
        });
    }

    public PrepareResultEvent event;
    public PlayerTag player;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(4, new ItemTag(event.getResult()))) {
            return false;
        }
        if (!runInCheck(path, event.getInventory().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "inventory" -> InventoryTag.mirrorBukkitInventory(event.getInventory());
            case "result" -> new ItemTag(event.getResult());
            default -> super.getContext(name);
        };
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(player, null);
    }

    @EventHandler
    public void onPlayerPreparesGrindstoneCraft(PrepareResultEvent event) {
        if (!(event.getInventory() instanceof GrindstoneInventory)) {
            return;
        }
        if (event.getViewers().isEmpty()) {
            return;
        }
        HumanEntity humanEntity = event.getViewers().get(0);
        if (EntityTag.isNPC(humanEntity)) {
            return;
        }
        player = EntityTag.getPlayerFrom(humanEntity);
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerQuitsScriptEventPaperImpl.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.player.PlayerQuitsScriptEvent;
import com.denizenscript.denizen.paper.PaperModule;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import net.md_5.bungee.api.ChatColor;


public class PlayerQuitsScriptEventPaperImpl extends PlayerQuitsScriptEvent {

    public PlayerQuitsScriptEventPaperImpl() {
        registerSwitches("cause");
        this.<PlayerQuitsScriptEventPaperImpl>registerTextDetermination("none", (evt) -> {
            event.quitMessage(null);
        });
        this.<PlayerQuitsScriptEventPaperImpl, ElementTag>registerDetermination(null, ElementTag.class, (evt, context, determination) -> {
            event.quitMessage(PaperModule.parseFormattedText(determination.toString(), ChatColor.WHITE));
        });
    }

    @Override
    public boolean matches(ScriptPath path) {
        if (!runGenericSwitchCheck(path, "cause", event.getReason().name())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "message" -> new ElementTag(PaperModule.stringifyComponent(event.quitMessage()));
            case "cause" -> new ElementTag(event.getReason());
            default -> super.getContext(name);
        };
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerRaiseLowerItemScriptEventPaperImpl.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.player.PlayerRaiseLowerItemScriptEvent;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.DurationTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import io.papermc.paper.event.player.PlayerStopUsingItemEvent;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;

public class PlayerRaiseLowerItemScriptEventPaperImpl extends PlayerRaiseLowerItemScriptEvent {

    public DurationTag heldFor;
    public ElementTag hand;

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "held_for" -> heldFor;
            case "hand" -> hand;
            case "item" -> item;
            default -> super.getContext(name);
        };
    }

    @Override
    public void run(Player pl, String reason) {
        this.reason = new ElementTag(reason);
        player = new PlayerTag(pl);
        item = new ItemTag(pl.getActiveItem());
        hand = new ElementTag(pl.getHandRaised());
        if (item.getBukkitMaterial() == Material.AIR) {
            item = new ItemTag(pl.getEquipment().getItemInMainHand());
            hand = new ElementTag("HAND");
        }
        if (item.getBukkitMaterial() == Material.AIR) {
            item = new ItemTag(pl.getEquipment().getItemInOffHand());
            hand = new ElementTag("OFF_HAND");
        }
        if (item.getBukkitMaterial() == Material.AIR) {
            return;
        }
        heldFor = state ? null : new DurationTag((long) pl.getHandRaisedTime());
        fire();
    }

    @EventHandler
    public void onStopUsingItem(PlayerStopUsingItemEvent event) {
        signalDidLower(event.getPlayer(), "lower");
    }

    public boolean isHandRaised(Player player, EquipmentSlot slot) {
        if (player.isHandRaised()) {
            return slot == player.getHandRaised();
        }
        return raisedItems.contains(player.getUniqueId());
    }

    @EventHandler
    public void onPlayerDropItem(PlayerDropItemEvent event) {
        // You can only drop items from your main hand, so if the player's main hand isn't raised, ignore
        if (isHandRaised(event.getPlayer(), EquipmentSlot.HAND) && raisedItems.remove(event.getPlayer().getUniqueId())) {
            cancelled = false;
            state = false;
            Player pl = event.getPlayer();
            player = new PlayerTag(pl);
            // Work around Player#getActiveItem being air in the drop item event
            ItemStack loweredItem = event.getItemDrop().getItemStack();
            item = new ItemTag(loweredItem);
            heldFor = new DurationTag((long) loweredItem.getMaxItemUseDuration() - pl.getItemUseRemainingTime());
            hand = new ElementTag(pl.getHandRaised());
            reason = new ElementTag("drop");
            fire();
        }
    }

    @EventHandler
    public void onPlayerChangeHeldItem(PlayerItemHeldEvent event) {
        if (isHandRaised(event.getPlayer(), EquipmentSlot.HAND)) {
            signalDidLower(event.getPlayer(), "hold");
        }
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerReceivesLinksScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.Utilities;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.connection.PlayerConfigurationConnection;
import io.papermc.paper.connection.PlayerGameConnection;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLinksSendEvent;

public class PlayerReceivesLinksScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player receives links
    //
    // @Group Paper
    //
    // @Plugin Paper
    //
    // @Triggers when a player receives a list of server links.
    //
    // @Determine
    // "LINKS:<ListTag(MapTag)>" to set the links sent to the player. Each item in the list must be a MapTag in <@link language Server Links Format>.
    // "ADD_LINKS:<ListTag(MapTag)>" to send additional links to the player. Each item in the list must be a MapTag in <@link language Server Links Format>.
    //
    // @Player Always.
    //
    // @Warning this may fire early in the player login process, during which the linked player is essentially an offline player.
    //
    // -->

    public PlayerLinksSendEvent event;
    public PlayerTag player;

    public PlayerReceivesLinksScriptEvent() {
        registerCouldMatcher("player receives links");
        this.<PlayerReceivesLinksScriptEvent, ListTag>registerDetermination("links", ListTag.class, (evt, context, value) -> {
            Utilities.replaceServerLinks(evt.event.getLinks(), value, context);
        });
        this.<PlayerReceivesLinksScriptEvent, ListTag>registerDetermination("add_links", ListTag.class, (evt, context, value) -> {
            Utilities.fillServerLinks(evt.event.getLinks(), value, context);
        });
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(player, null);
    }

    @EventHandler
    public void onPlayerLinksSend(PlayerLinksSendEvent event) {
        if (event.getConnection() instanceof PlayerGameConnection gameConnection) {
            player = new PlayerTag(gameConnection.getPlayer());
        }
        else if (event.getConnection() instanceof PlayerConfigurationConnection configConnection) {
            player = new PlayerTag(configConnection.getProfile().getId());
        }
        else {
            throw new IllegalStateException("Links send event fired with unknown connection type! " + event.getConnection() + " / " + event.getConnection().getClass().getName());
        }
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSelectsStonecutterRecipeScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.InventoryTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerStonecutterRecipeSelectEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerSelectsStonecutterRecipeScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player selects stonecutter recipe
    //
    // @Group Player
    //
    // @Cancellable true
    //
    // @Location true
    //
    // @Triggers when a player selects a recipe in a stonecutter.
    //
    // @Switch recipe_id:<recipe_id> to only process the event if the recipe matches the recipe ID.
    //
    // @Context
    // <context.inventory> returns the InventoryTag of the stonecutter inventory.
    // <context.input> returns an ItemTag of the item in the input slot.
    // <context.result> returns an ItemTag of the item in the result slot.
    // <context.recipe_id> returns the ID of the recipe that was selected.
    //
    // @Player Always.
    //
    // -->

    public PlayerSelectsStonecutterRecipeScriptEvent() {
        registerCouldMatcher("player selects stonecutter recipe");
        registerSwitches("recipe_id");
    }

    public PlayerStonecutterRecipeSelectEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getStonecutterInventory().getLocation())) {
            return false;
        }
        if (!runGenericSwitchCheck(path, "recipe_id", event.getStonecuttingRecipe().getKey().toString())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        switch (name) {
            case "inventory": return InventoryTag.mirrorBukkitInventory(event.getStonecutterInventory());
            case "input": return new ItemTag(event.getStonecutterInventory().getInputItem());
            case "result": return new ItemTag(event.getStonecuttingRecipe().getResult());
            case "recipe_id": return new ElementTag(String.valueOf(event.getStonecuttingRecipe().getKey()));
        }
        return super.getContext(name);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @EventHandler
    public void onPlayerSelectsStonecutterRecipe(PlayerStonecutterRecipeSelectEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSetSpawnScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.paper.PaperModule;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerSetSpawnEvent;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerSetSpawnScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player sets spawn
    //
    // @Cancellable true
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Triggers when a player's spawn point changes.
    //
    // @Switch cause:<cause> to only process when the cause for the event matches the input.
    //
    // @Context
    // <context.cause> returns the reason the player's spawn point changed. A list of causes can be found at <@link url https://jd.papermc.io/paper/1.21.5/com/destroystokyo/paper/event/player/PlayerSetSpawnEvent.Cause.html>.
    // <context.forced> returns whether this event will persist through source block (bed or respawn anchor) removal.
    // <context.location> returns a LocationTag of the new respawn location, if any.
    // <context.message> returns the notification message that is sent to the player.
    // <context.notify> returns whether the player will be notified their spawn point changed.
    //
    // @Determine
    // "FORCED:<ElementTag(Boolean)>" to set whether the player's new spawnpoint will persist even if the bed or respawn anchor that triggered the event is removed.
    // "MESSAGE:<ElementTag>" to set the notification message that is sent to the player.
    // "NOTIFY:<ElementTag(Boolean)>" to set whether the player will be notified their spawnpoint changed.
    // LocationTag to change the respawn location.
    //
    // @Player Always.
    //
    // -->

    public PlayerSetSpawnScriptEvent() {
        registerCouldMatcher("player sets spawn");
        registerSwitches("cause");
        this.<PlayerSetSpawnScriptEvent, ElementTag>registerOptionalDetermination("forced", ElementTag.class, (evt, context, value) -> {
            if (value.isBoolean()) {
                evt.event.setForced(value.asBoolean());
                return true;
            }
            return false;
        });
        this.<PlayerSetSpawnScriptEvent, ElementTag>registerDetermination("message", ElementTag.class, (evt, context, message) -> {
            evt.event.setNotification(PaperModule.parseFormattedText(message.toString(), ChatColor.WHITE));
        });
        this.<PlayerSetSpawnScriptEvent, ElementTag>registerOptionalDetermination("notify", ElementTag.class, (evt, context, value) -> {
            if (value.isBoolean()) {
                evt.event.setNotifyPlayer(value.asBoolean());
                return true;
            }
            return false;
        });
        this.<PlayerSetSpawnScriptEvent, LocationTag>registerDetermination(null, LocationTag.class, (evt, context, location) -> {
            evt.event.setLocation(location);
            evt.event.setForced(true); // required if the cause is a bed or respawn anchor
        });
    }

    public PlayerSetSpawnEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getLocation())) {
            return false;
        }
        if (!runGenericSwitchCheck(path, "cause", event.getCause().toString())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "cause" -> new ElementTag(event.getCause());
            case "forced" -> new ElementTag(event.isForced());
            case "location" -> event.getLocation() != null ? new LocationTag(event.getLocation()) : null;
            case "message" -> event.getNotification() != null ? new ElementTag(PaperModule.stringifyComponent(event.getNotification()), true) : null;
            case "notify" -> new ElementTag(event.willNotifyPlayer());
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onPlayerSetsSpawn(PlayerSetSpawnEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerShieldDisableScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.DurationTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerShieldDisableEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerShieldDisableScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player shield disables
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Triggers When a players shield is disabled.
    //
    // @Context
    // <context.damager> returns an EntityTag of the attacker who disabled the shield.
    // <context.cooldown> returns a DurationTag of the cooldown the shield is disabled for.
    //
    // @Determine
    // "COOLDOWN:<DurationTag>" to change the cooldown.
    //
    // @Player Always.
    //
    // -->

    public PlayerShieldDisableScriptEvent() {
        registerCouldMatcher("player shield disables");
        this.<PlayerShieldDisableScriptEvent, DurationTag>registerDetermination("cooldown", DurationTag.class, (evt, context, duration) -> {
            evt.event.setCooldown(duration.getTicksAsInt());
        });
    }

    public PlayerShieldDisableEvent event;
    public LocationTag location;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, location)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "damager" -> new EntityTag(event.getDamager()).getDenizenObject();
            case "cooldown" -> new DurationTag((long) event.getCooldown());
            default -> super.getContext(name);
        };
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @EventHandler
    public void playerShieldDisableEvent(PlayerShieldDisableEvent event) {
        location = new LocationTag(event.getPlayer().getLocation());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSpectatesEntityScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerStartSpectatingEntityEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerSpectatesEntityScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player spectates <entity>
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player starts spectating an entity.
    //
    // @Context
    // <context.entity> returns the entity that is being spectated.
    // <context.old_entity> returns the entity that was previously being spectated (or the player themself if they weren't spectating anything).
    //
    // @Player Always.
    //
    // -->

    public PlayerSpectatesEntityScriptEvent() {
        registerCouldMatcher("player spectates <entity>");
    }

    public PlayerStartSpectatingEntityEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(2, new EntityTag(event.getNewSpectatorTarget()))) {
            return false;
        }
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("entity")) {
            return new EntityTag(event.getNewSpectatorTarget()).getDenizenObject();
        }
        else if (name.equals("old_entity")) {
            return new EntityTag(event.getCurrentSpectatorTarget()).getDenizenObject();
        }
        return super.getContext(name);
    }

    @EventHandler
    public void playerSpectateEvent(PlayerStartSpectatingEntityEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerStopsSpectatingScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.player.PlayerStopSpectatingEntityEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerStopsSpectatingScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player stops spectating (<entity>)
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player stops spectating an entity.
    //
    // @Context
    // <context.entity> returns the entity that was being spectated.
    //
    // @Player Always.
    //
    // -->

    public PlayerStopsSpectatingScriptEvent() {
        registerCouldMatcher("player stops spectating (<entity>)");
    }

    public PlayerStopSpectatingEntityEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (path.eventArgLowerAt(3).length() > 0 && !path.tryArgObject(3, new EntityTag(event.getSpectatorTarget()))) {
            return false;
        }
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("entity")) {
            return new EntityTag(event.getSpectatorTarget()).getDenizenObject();
        }
        return super.getContext(name);
    }

    @EventHandler
    public void playerSpectateEvent(PlayerStopSpectatingEntityEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTracksEntityScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerTrackEntityEvent;
import io.papermc.paper.event.player.PlayerUntrackEntityEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerTracksEntityScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player tracks|untracks <entity>
    //
    // @Location true
    //
    // @Group Paper
    //
    // @Plugin Paper
    //
    // @Warning This event may fire very rapidly.
    //
    // @Triggers when a player starts or stops tracking an entity. An entity is tracked/untracked by a player's client when the player moves in/out of its <@link mechanism EntityTag.tracking_range>.
    //
    // @Context
    // <context.entity> returns an EntityTag of the entity being tracked or untracked.
    //
    // @Player Always.
    //
    // @Example
    // # Narrate when the player tracks any entities except for item frames.
    // on player tracks !item_frame:
    // - narrate "You are now tracking <context.entity.name> at <context.entity.location.simple>"
    //
    // @Example
    // on player untracks chicken:
    // - narrate "CHICKEN: No! Come back! :("
    // -->

    public PlayerTracksEntityScriptEvent() {
        registerCouldMatcher("player tracks|untracks <entity>");
    }

    public String type;
    public Player player;
    public EntityTag entity;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.eventArgLowerAt(1).equals(type)) {
            return false;
        }
        if (!path.tryArgObject(2, entity)) {
            return false;
        }
        if (!runInCheck(path, entity.getLocation())) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(player);
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "entity" -> entity;
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void onPlayerTracksEntityEvent(PlayerTrackEntityEvent event) {
        entity = new EntityTag(event.getEntity());
        player = event.getPlayer();
        type = "tracks";
        fire(event);
    }

    @EventHandler
    public void onPlayerUntracksEntityEvent(PlayerUntrackEntityEvent event) {
        entity = new EntityTag(event.getEntity());
        player = event.getPlayer();
        type = "untracks";
        EntityTag.rememberEntity(event.getEntity());
        fire(event);
        EntityTag.forgetEntity(event.getEntity());
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTradesWithMerchantScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.objects.TradeTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import io.papermc.paper.event.player.PlayerPurchaseEvent;
import io.papermc.paper.event.player.PlayerTradeEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PlayerTradesWithMerchantScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // player trades with merchant
    //
    // @Switch result:<result> to only process the event if the player received a specific result item.
    //
    // @Location true
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Cancellable true
    //
    // @Triggers when a player trades with a merchant (villager).
    //
    // @Context
    // <context.merchant> returns the villager that was traded with, if any (may be null for example with 'opentrades' command usage).
    // <context.trade> returns a TradeTag of the trade that was done.
    //
    // @Determine
    // TradeTag to change the trade that should be processed.
    //
    //
    // @Player Always.
    //
    // -->

    public PlayerTradesWithMerchantScriptEvent() {
        registerCouldMatcher("player trades with merchant");
        registerSwitches("result");
        this.<PlayerTradesWithMerchantScriptEvent, TradeTag>registerDetermination(null, TradeTag.class, (evt, context, trade) -> {
            evt.event.setTrade(trade.getRecipe());
        });
    }

    public PlayerPurchaseEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!runInCheck(path, event.getPlayer().getLocation())) {
            return false;
        }
        if (!path.tryObjectSwitch("result", new ItemTag(event.getTrade().getResult()))) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(event.getPlayer());
    }

    @Override
    public ObjectTag getContext(String name) {
        return switch (name) {
            case "merchant" -> event instanceof PlayerTradeEvent tradeEvent ? new EntityTag(tradeEvent.getVillager()) : null;
            case "trade" -> new TradeTag(event.getTrade()).duplicate();
            default -> super.getContext(name);
        };
    }

    @EventHandler
    public void playerTradeEvent(PlayerPurchaseEvent event) {
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PreEntitySpawnScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent;
import com.destroystokyo.paper.event.entity.PreSpawnerSpawnEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class PreEntitySpawnScriptEvent extends BukkitScriptEvent implements Listener {

    // <--[event]
    // @Events
    // <entity> prespawns (because <'cause'>)
    //
    // @Plugin Paper
    //
    // @Group Paper
    //
    // @Location true
    //
    // @Cancellable true
    //
    // @Warning This event may fire very rapidly, and only fires for NATURAL and SPAWNER reasons.
    //
    // @Triggers before a mob spawns and before the mob is created for spawning. Note that this has a limited number of use cases.
    // The intent of this event is to save server resources for blanket mob banning/limiting scripts. Use the entity spawn event as a backup.
    //
    // @Context
    // <context.entity> returns the EntityTag that will be spawned. Note that this entity will not be spawned yet, so usage will be limited.
    // <context.location> returns the LocationTag the entity will spawn at.
    // <context.reason> returns an ElementTag of the reason for spawning. Currently, this event only fires for NATURAL and SPAWNER reasons.
    // <context.spawner_location> returns the LocationTag of the spawner's location if this mob is spawning from a spawner.
    //
    // -->

    public PreEntitySpawnScriptEvent() {
        registerCouldMatcher("<entity> prespawns (because <'cause'>)");
    }

    public EntityTag entity;
    public LocationTag location;
    public PreCreatureSpawnEvent event;

    @Override
    public boolean matches(ScriptPath path) {
        if (!path.tryArgObject(0, entity)) {
            return false;
        }
        if (path.eventArgLowerAt(2).equals("because")
                && !path.eventArgLowerAt(3).equalsIgnoreCase(event.getReason().name())) {
            return false;
        }
        if (!runInCheck(path, location)) {
            return false;
        }
        return super.matches(path);
    }

    @Override
    public void cancellationChanged() {
        event.setShouldAbortSpawn(cancelled);
        super.cancellationChanged();
    }

    @Override
    public ScriptEntryData getScriptEntryData() {
        return new BukkitScriptEntryData(null, null);
    }

    @Override
    public ObjectTag getContext(String name) {
        if (name.equals("entity")) {
            return entity;
        }
        else if (name.equals("location")) {
            return location;
        }
        else if (name.equals("reason")) {
            return new ElementTag(event.getReason());
        }
        else if (name.equals("spawner_location") && event instanceof PreSpawnerSpawnEvent) {
            return new LocationTag(((PreSpawnerSpawnEvent) event).getSpawnerLocation());
        }
        return super.getContext(name);
    }

    @EventHandler
    public void onPreCreatureSpawn(PreCreatureSpawnEvent event) {
        this.entity = new EntityTag(event.getType());
        this.location = new LocationTag(event.getSpawnLocation());
        this.event = event;
        fire(event);
    }
}


================================================
FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PrePlayerAttackEntityScriptEvent.java
================================================
package com.denizenscript.denizen.paper.events;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.ItemTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.deni
Download .txt
gitextract_bj40aszd/

├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   └── ISSUE_TEMPLATE/
│       ├── bug-report.md
│       ├── feature-request.md
│       └── i-m-having-trouble.md
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE.txt
├── README.md
├── dist/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── dist/
│                               └── Dist.java
├── paper/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── paper/
│                               ├── PaperEventHelpers.java
│                               ├── PaperModule.java
│                               ├── datacomponents/
│                               │   ├── ComponentAdaptersRegistry.java
│                               │   ├── DataComponentAdapter.java
│                               │   ├── FoodAdapter.java
│                               │   ├── GliderAdapter.java
│                               │   ├── ItemModelAdapter.java
│                               │   ├── MaxDurabilityAdapter.java
│                               │   ├── MaxStackSizeAdapter.java
│                               │   └── RarityAdapter.java
│                               ├── events/
│                               │   ├── AnvilBlockDamagedScriptEvent.java
│                               │   ├── AreaEnterExitScriptEventPaperImpl.java
│                               │   ├── BellRingScriptEvent.java
│                               │   ├── BlockPreDispenseScriptEvent.java
│                               │   ├── CreeperIgnitesScriptEvent.java
│                               │   ├── DragonEggFormScriptEvent.java
│                               │   ├── EntityAddToWorldScriptEvent.java
│                               │   ├── EntityKnocksbackEntityScriptEvent.java
│                               │   ├── EntityLoadCrossbowScriptEvent.java
│                               │   ├── EntityPathfindScriptEvent.java
│                               │   ├── EntityRemoveFromWorldScriptEvent.java
│                               │   ├── EntityStepsOnScriptEvent.java
│                               │   ├── EntityTeleportedByPortalScriptEvent.java
│                               │   ├── ExperienceOrbMergeScriptEvent.java
│                               │   ├── PlayerAbsorbsExperienceScriptEvent.java
│                               │   ├── PlayerBeaconEffectScriptEvent.java
│                               │   ├── PlayerChangesFramedItemScriptEvent.java
│                               │   ├── PlayerChoosesArrowScriptEvent.java
│                               │   ├── PlayerChunkUnloadScriptEvent.java
│                               │   ├── PlayerClicksFakeEntityScriptEvent.java
│                               │   ├── PlayerClicksInRecipeBookScriptEvent.java
│                               │   ├── PlayerClientOptionsChangeScriptEvent.java
│                               │   ├── PlayerCompletesAdvancementScriptEventPaperImpl.java
│                               │   ├── PlayerDeepSleepScriptEvent.java
│                               │   ├── PlayerElytraBoostScriptEvent.java
│                               │   ├── PlayerEquipsArmorScriptEvent.java
│                               │   ├── PlayerGrantedAdvancementCriterionScriptEvent.java
│                               │   ├── PlayerInventorySlotChangeScriptEvent.java
│                               │   ├── PlayerItemTakesDamageScriptEventPaperImpl.java
│                               │   ├── PlayerJumpsScriptEventPaperImpl.java
│                               │   ├── PlayerLecternPageChangeScriptEvent.java
│                               │   ├── PlayerLoomPatternSelectScriptEvent.java
│                               │   ├── PlayerNamesEntityScriptEvent.java
│                               │   ├── PlayerOpenSignScriptEvent.java
│                               │   ├── PlayerPreparesGrindstoneCraftScriptEvent.java
│                               │   ├── PlayerQuitsScriptEventPaperImpl.java
│                               │   ├── PlayerRaiseLowerItemScriptEventPaperImpl.java
│                               │   ├── PlayerReceivesLinksScriptEvent.java
│                               │   ├── PlayerSelectsStonecutterRecipeScriptEvent.java
│                               │   ├── PlayerSetSpawnScriptEvent.java
│                               │   ├── PlayerShieldDisableScriptEvent.java
│                               │   ├── PlayerSpectatesEntityScriptEvent.java
│                               │   ├── PlayerStopsSpectatingScriptEvent.java
│                               │   ├── PlayerTracksEntityScriptEvent.java
│                               │   ├── PlayerTradesWithMerchantScriptEvent.java
│                               │   ├── PreEntitySpawnScriptEvent.java
│                               │   ├── PrePlayerAttackEntityScriptEvent.java
│                               │   ├── ProjectileCollideScriptEvent.java
│                               │   ├── ServerListPingScriptEventPaperImpl.java
│                               │   ├── ServerResourcesReloadedScriptEvent.java
│                               │   ├── SkeletonHorseTrapScriptEvent.java
│                               │   ├── TNTPrimesScriptEvent.java
│                               │   ├── TargetBlockHitScriptEvent.java
│                               │   ├── UnknownCommandScriptEvent.java
│                               │   ├── VaultChangesStateScriptEvent.java
│                               │   ├── WardenChangesAngerLevelScriptEvent.java
│                               │   └── WorldGameRuleChangeScriptEvent.java
│                               ├── properties/
│                               │   ├── EntityArmsRaised.java
│                               │   ├── EntityAutoExpire.java
│                               │   ├── EntityBodyStingers.java
│                               │   ├── EntityCanTick.java
│                               │   ├── EntityCarryingEgg.java
│                               │   ├── EntityDrinkingPotion.java
│                               │   ├── EntityEggLayTime.java
│                               │   ├── EntityFriction.java
│                               │   ├── EntityLeftHanded.java
│                               │   ├── EntityReputation.java
│                               │   ├── EntityShouldBurn.java
│                               │   ├── EntitySneaking.java
│                               │   ├── EntityWitherInvulnerable.java
│                               │   ├── ItemArmorStand.java
│                               │   ├── ItemRemovedComponents.java
│                               │   ├── PaperElementExtensions.java
│                               │   ├── PaperEntityExtensions.java
│                               │   ├── PaperItemExtensions.java
│                               │   ├── PaperPlayerExtensions.java
│                               │   └── PaperWorldExtensions.java
│                               ├── tags/
│                               │   └── PaperTagBase.java
│                               └── utilities/
│                                   ├── BlockTagsSetter.java
│                                   └── PaperAPIToolsImpl.java
├── plugin/
│   ├── lib/
│   │   └── Vault.jar
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── denizenscript/
│           │           └── denizen/
│           │               ├── Denizen.java
│           │               ├── events/
│           │               │   ├── BukkitScriptEvent.java
│           │               │   ├── ScriptEventRegistry.java
│           │               │   ├── block/
│           │               │   │   ├── BellRingScriptEvent.java
│           │               │   │   ├── BlockBuiltScriptEvent.java
│           │               │   │   ├── BlockBurnsScriptEvent.java
│           │               │   │   ├── BlockCooksSmeltsItemScriptEvent.java
│           │               │   │   ├── BlockDestroyedByExplosionEvent.java
│           │               │   │   ├── BlockDispensesScriptEvent.java
│           │               │   │   ├── BlockEquipsItemScriptEvent.java
│           │               │   │   ├── BlockExplodesScriptEvent.java
│           │               │   │   ├── BlockFadesScriptEvent.java
│           │               │   │   ├── BlockFallsScriptEvent.java
│           │               │   │   ├── BlockFormsScriptEvent.java
│           │               │   │   ├── BlockGrowsScriptEvent.java
│           │               │   │   ├── BlockIgnitesScriptEvent.java
│           │               │   │   ├── BlockPhysicsScriptEvent.java
│           │               │   │   ├── BlockShearEntityScriptEvent.java
│           │               │   │   ├── BlockSpreadsScriptEvent.java
│           │               │   │   ├── BrewingStandFueledScriptEvent.java
│           │               │   │   ├── BrewingStartsScriptEvent.java
│           │               │   │   ├── BrewsScriptEvent.java
│           │               │   │   ├── CauldronLevelChangeScriptEvent.java
│           │               │   │   ├── CrafterCraftsScriptEvent.java
│           │               │   │   ├── DragonEggMovesScriptEvent.java
│           │               │   │   ├── FurnaceBurnsItemScriptEvent.java
│           │               │   │   ├── FurnaceStartsSmeltingScriptEvent.java
│           │               │   │   ├── LeafDecaysScriptEvent.java
│           │               │   │   ├── LiquidLevelChangeScriptEvent.java
│           │               │   │   ├── LiquidSpreadScriptEvent.java
│           │               │   │   ├── LootDispensesFromBlockScriptEvent.java
│           │               │   │   ├── MoistureChangeScriptEvent.java
│           │               │   │   ├── NoteBlockPlaysNoteScriptEvent.java
│           │               │   │   ├── PistonExtendsScriptEvent.java
│           │               │   │   ├── PistonRetractsScriptEvent.java
│           │               │   │   ├── RedstoneScriptEvent.java
│           │               │   │   ├── SpongeAbsorbsScriptEvent.java
│           │               │   │   ├── TNTPrimesScriptEvent.java
│           │               │   │   └── VaultDisplaysItemScriptEvent.java
│           │               │   ├── bukkit/
│           │               │   │   ├── ExhaustedNPCEvent.java
│           │               │   │   ├── SavesReloadEvent.java
│           │               │   │   └── ScriptReloadEvent.java
│           │               │   ├── entity/
│           │               │   │   ├── AreaEffectCloudApplyScriptEvent.java
│           │               │   │   ├── AreaEnterExitScriptEvent.java
│           │               │   │   ├── CreeperPoweredScriptEvent.java
│           │               │   │   ├── DragonPhaseChangeScriptEvent.java
│           │               │   │   ├── EntityAirLevelChangeScriptEvent.java
│           │               │   │   ├── EntityBreaksHangingScriptEvent.java
│           │               │   │   ├── EntityBreedScriptEvent.java
│           │               │   │   ├── EntityChangesBlockScriptEvent.java
│           │               │   │   ├── EntityChangesPoseScriptEvent.java
│           │               │   │   ├── EntityCombustsScriptEvent.java
│           │               │   │   ├── EntityCreatePortalScriptEvent.java
│           │               │   │   ├── EntityDamagedScriptEvent.java
│           │               │   │   ├── EntityDeathScriptEvent.java
│           │               │   │   ├── EntityDespawnScriptEvent.java
│           │               │   │   ├── EntityDropsItemScriptEvent.java
│           │               │   │   ├── EntityEntersPortalScriptEvent.java
│           │               │   │   ├── EntityEntersVehicleScriptEvent.java
│           │               │   │   ├── EntityExitsPortalScriptEvent.java
│           │               │   │   ├── EntityExitsVehicleScriptEvent.java
│           │               │   │   ├── EntityExplodesScriptEvent.java
│           │               │   │   ├── EntityExplosionPrimesScriptEvent.java
│           │               │   │   ├── EntityFoodLevelChangeScriptEvent.java
│           │               │   │   ├── EntityFormsBlockScriptEvent.java
│           │               │   │   ├── EntityGlideScriptEvent.java
│           │               │   │   ├── EntityGoesIntoBlockScriptEvent.java
│           │               │   │   ├── EntityHealsScriptEvent.java
│           │               │   │   ├── EntityInteractScriptEvent.java
│           │               │   │   ├── EntityKilledScriptEvent.java
│           │               │   │   ├── EntityPicksUpItemScriptEvent.java
│           │               │   │   ├── EntityPotionEffectScriptEvent.java
│           │               │   │   ├── EntityResurrectScriptEvent.java
│           │               │   │   ├── EntityShootsBowScriptEvent.java
│           │               │   │   ├── EntitySpawnScriptEvent.java
│           │               │   │   ├── EntitySpawnerSpawnScriptEvent.java
│           │               │   │   ├── EntitySpellCastScriptEvent.java
│           │               │   │   ├── EntitySwimScriptEvent.java
│           │               │   │   ├── EntityTamesScriptEvent.java
│           │               │   │   ├── EntityTargetsScriptEvent.java
│           │               │   │   ├── EntityTeleportScriptEvent.java
│           │               │   │   ├── EntityTransformScriptEvent.java
│           │               │   │   ├── EntityUnleashedScriptEvent.java
│           │               │   │   ├── ExperienceBottleBreaksScriptEvent.java
│           │               │   │   ├── FireworkBurstsScriptEvent.java
│           │               │   │   ├── HangingBreaksScriptEvent.java
│           │               │   │   ├── HorseJumpsScriptEvent.java
│           │               │   │   ├── PigZappedScriptEvent.java
│           │               │   │   ├── PiglinBarterScriptEvent.java
│           │               │   │   ├── ProjectileHitScriptEvent.java
│           │               │   │   ├── ProjectileLaunchedScriptEvent.java
│           │               │   │   ├── SheepDyedScriptEvent.java
│           │               │   │   ├── SheepRegrowsScriptEvent.java
│           │               │   │   ├── SlimeSplitsScriptEvent.java
│           │               │   │   ├── VillagerAcquiresTradeScriptEvent.java
│           │               │   │   ├── VillagerChangesProfessionScriptEvent.java
│           │               │   │   └── VillagerReplenishesTradeScriptEvent.java
│           │               │   ├── item/
│           │               │   │   ├── InventoryPicksUpItemScriptEvent.java
│           │               │   │   ├── ItemDespawnsScriptEvent.java
│           │               │   │   ├── ItemEnchantedScriptEvent.java
│           │               │   │   ├── ItemMergesScriptEvent.java
│           │               │   │   ├── ItemMoveScriptEvent.java
│           │               │   │   ├── ItemRecipeFormedScriptEvent.java
│           │               │   │   └── ItemSpawnsScriptEvent.java
│           │               │   ├── npc/
│           │               │   │   ├── NPCNavigationScriptEvent.java
│           │               │   │   ├── NPCOpensScriptEvent.java
│           │               │   │   ├── NPCSpawnScriptEvent.java
│           │               │   │   └── NPCStuckScriptEvent.java
│           │               │   ├── player/
│           │               │   │   ├── BiomeEnterExitScriptEvent.java
│           │               │   │   ├── BlockDropsItemScriptEvent.java
│           │               │   │   ├── ChatScriptEvent.java
│           │               │   │   ├── HotbarScrollScriptEvent.java
│           │               │   │   ├── PlayerAnimatesScriptEvent.java
│           │               │   │   ├── PlayerArmorStandManipulateScriptEvent.java
│           │               │   │   ├── PlayerBreaksBlockScriptEvent.java
│           │               │   │   ├── PlayerBreaksItemScriptEvent.java
│           │               │   │   ├── PlayerChangesGamemodeScriptEvent.java
│           │               │   │   ├── PlayerChangesMainHandScriptEvent.java
│           │               │   │   ├── PlayerChangesSignScriptEvent.java
│           │               │   │   ├── PlayerChangesWorldScriptEvent.java
│           │               │   │   ├── PlayerChangesXPScriptEvent.java
│           │               │   │   ├── PlayerClicksBlockScriptEvent.java
│           │               │   │   ├── PlayerClicksInInventoryScriptEvent.java
│           │               │   │   ├── PlayerClosesInvScriptEvent.java
│           │               │   │   ├── PlayerCompletesAdvancementScriptEvent.java
│           │               │   │   ├── PlayerConsumesScriptEvent.java
│           │               │   │   ├── PlayerCraftsItemScriptEvent.java
│           │               │   │   ├── PlayerDamagesBlockScriptEvent.java
│           │               │   │   ├── PlayerDragsInInvScriptEvent.java
│           │               │   │   ├── PlayerEditsBookScriptEvent.java
│           │               │   │   ├── PlayerEmptiesBucketScriptEvent.java
│           │               │   │   ├── PlayerEntersBedScriptEvent.java
│           │               │   │   ├── PlayerFillsBucketScriptEvent.java
│           │               │   │   ├── PlayerFishesScriptEvent.java
│           │               │   │   ├── PlayerFlyingScriptEvent.java
│           │               │   │   ├── PlayerHearsSoundScriptEvent.java
│           │               │   │   ├── PlayerIncreasesExhaustionLevelScriptEvent.java
│           │               │   │   ├── PlayerInputScriptEvent.java
│           │               │   │   ├── PlayerItemTakesDamageScriptEvent.java
│           │               │   │   ├── PlayerJoinsScriptEvent.java
│           │               │   │   ├── PlayerJumpScriptEvent.java
│           │               │   │   ├── PlayerKickedScriptEvent.java
│           │               │   │   ├── PlayerLeashesEntityScriptEvent.java
│           │               │   │   ├── PlayerLeavesBedScriptEvent.java
│           │               │   │   ├── PlayerLevelsUpScriptEvent.java
│           │               │   │   ├── PlayerLocaleChangeScriptEvent.java
│           │               │   │   ├── PlayerLoginScriptEvent.java
│           │               │   │   ├── PlayerMendsItemScriptEvent.java
│           │               │   │   ├── PlayerOpensInvScriptEvent.java
│           │               │   │   ├── PlayerPickupArrowScriptEvent.java
│           │               │   │   ├── PlayerPlacesBlockScriptEvent.java
│           │               │   │   ├── PlayerPlacesHangingScriptEvent.java
│           │               │   │   ├── PlayerPreLoginScriptEvent.java
│           │               │   │   ├── PlayerPreparesAnvilCraftScriptEvent.java
│           │               │   │   ├── PlayerPreparesEnchantScriptEvent.java
│           │               │   │   ├── PlayerPreparesSmithingTableScriptEvent.java
│           │               │   │   ├── PlayerQuitsScriptEvent.java
│           │               │   │   ├── PlayerRaiseLowerItemScriptEvent.java
│           │               │   │   ├── PlayerReceivesActionbarScriptEvent.java
│           │               │   │   ├── PlayerReceivesCommandsScriptEvent.java
│           │               │   │   ├── PlayerReceivesMessageScriptEvent.java
│           │               │   │   ├── PlayerReceivesPacketScriptEvent.java
│           │               │   │   ├── PlayerReceivesTablistUpdateScriptEvent.java
│           │               │   │   ├── PlayerRecipeDiscoverScriptEvent.java
│           │               │   │   ├── PlayerRespawnsScriptEvent.java
│           │               │   │   ├── PlayerRightClicksEntityScriptEvent.java
│           │               │   │   ├── PlayerRiptideScriptEvent.java
│           │               │   │   ├── PlayerSendPacketScriptEvent.java
│           │               │   │   ├── PlayerShearsScriptEvent.java
│           │               │   │   ├── PlayerSmithsItemScriptEvent.java
│           │               │   │   ├── PlayerSneakScriptEvent.java
│           │               │   │   ├── PlayerSprintScriptEvent.java
│           │               │   │   ├── PlayerStandsOnScriptEvent.java
│           │               │   │   ├── PlayerStatisticIncrementsScriptEvent.java
│           │               │   │   ├── PlayerSteersEntityScriptEvent.java
│           │               │   │   ├── PlayerStepsOnScriptEvent.java
│           │               │   │   ├── PlayerStopsDamagingBlockScriptEvent.java
│           │               │   │   ├── PlayerSwapsItemsScriptEvent.java
│           │               │   │   ├── PlayerTakesFromFurnaceScriptEvent.java
│           │               │   │   ├── PlayerTakesFromLecternScriptEvent.java
│           │               │   │   ├── PlayerThrowsEggScriptEvent.java
│           │               │   │   ├── PlayerTriggersRaidScriptEvent.java
│           │               │   │   ├── PlayerUsesPortalScriptEvent.java
│           │               │   │   ├── PlayerWalkScriptEvent.java
│           │               │   │   ├── PlayerWalksOverScriptEvent.java
│           │               │   │   └── ResourcePackStatusScriptEvent.java
│           │               │   ├── server/
│           │               │   │   ├── CommandScriptEvent.java
│           │               │   │   ├── InternalEventScriptEvent.java
│           │               │   │   ├── ListPingScriptEvent.java
│           │               │   │   ├── ServerPrestartScriptEvent.java
│           │               │   │   ├── ServerStartScriptEvent.java
│           │               │   │   └── TabCompleteScriptEvent.java
│           │               │   ├── vehicle/
│           │               │   │   ├── VehicleCollidesBlockScriptEvent.java
│           │               │   │   ├── VehicleCollidesEntityScriptEvent.java
│           │               │   │   ├── VehicleCreatedScriptEvent.java
│           │               │   │   ├── VehicleDamagedScriptEvent.java
│           │               │   │   ├── VehicleDestroyedScriptEvent.java
│           │               │   │   └── VehicleMoveScriptEvent.java
│           │               │   └── world/
│           │               │       ├── ChunkLoadEntitiesScriptEvent.java
│           │               │       ├── ChunkLoadScriptEvent.java
│           │               │       ├── ChunkUnloadEntitiesScriptEvent.java
│           │               │       ├── ChunkUnloadScriptEvent.java
│           │               │       ├── GenericGameEventScriptEvent.java
│           │               │       ├── LightningStrikesScriptEvent.java
│           │               │       ├── LingeringPotionSplashScriptEvent.java
│           │               │       ├── LootGenerateScriptEvent.java
│           │               │       ├── PortalCreateScriptEvent.java
│           │               │       ├── PotionSplashScriptEvent.java
│           │               │       ├── RaidFinishesScriptEvent.java
│           │               │       ├── RaidScriptEvent.java
│           │               │       ├── RaidSpawnsWaveScriptEvent.java
│           │               │       ├── RaidStopsScriptEvent.java
│           │               │       ├── SpawnChangeScriptEvent.java
│           │               │       ├── StructureGrowsScriptEvent.java
│           │               │       ├── ThunderChangesScriptEvent.java
│           │               │       ├── TimeChangeScriptEvent.java
│           │               │       ├── WeatherChangesScriptEvent.java
│           │               │       ├── WorldInitsScriptEvent.java
│           │               │       ├── WorldLoadsScriptEvent.java
│           │               │       ├── WorldSavesScriptEvent.java
│           │               │       └── WorldUnloadsScriptEvent.java
│           │               ├── nms/
│           │               │   ├── NMSHandler.java
│           │               │   ├── NMSVersion.java
│           │               │   ├── abstracts/
│           │               │   │   ├── AnimationHelper.java
│           │               │   │   ├── BiomeNMS.java
│           │               │   │   ├── BlockLight.java
│           │               │   │   ├── ImprovedOfflinePlayer.java
│           │               │   │   ├── ProfileEditor.java
│           │               │   │   └── Sidebar.java
│           │               │   ├── enums/
│           │               │   │   └── CustomEntityType.java
│           │               │   ├── interfaces/
│           │               │   │   ├── AdvancementHelper.java
│           │               │   │   ├── BlockHelper.java
│           │               │   │   ├── ChunkHelper.java
│           │               │   │   ├── CustomEntity.java
│           │               │   │   ├── CustomEntityHelper.java
│           │               │   │   ├── EnchantmentHelper.java
│           │               │   │   ├── EntityAnimation.java
│           │               │   │   ├── EntityHelper.java
│           │               │   │   ├── FakeArrow.java
│           │               │   │   ├── FakePlayer.java
│           │               │   │   ├── FishingHelper.java
│           │               │   │   ├── ItemHelper.java
│           │               │   │   ├── ItemProjectile.java
│           │               │   │   ├── PacketHelper.java
│           │               │   │   ├── PlayerHelper.java
│           │               │   │   ├── WorldHelper.java
│           │               │   │   └── packets/
│           │               │   │       ├── PacketInResourcePackStatus.java
│           │               │   │       ├── PacketInSteerVehicle.java
│           │               │   │       ├── PacketOutChat.java
│           │               │   │       ├── PacketOutSetSlot.java
│           │               │   │       ├── PacketOutSpawnEntity.java
│           │               │   │       ├── PacketOutTradeList.java
│           │               │   │       └── PacketOutWindowItems.java
│           │               │   └── util/
│           │               │       ├── Advancement.java
│           │               │       ├── PlayerProfile.java
│           │               │       └── TradeOffer.java
│           │               ├── npc/
│           │               │   ├── DenizenNPCHelper.java
│           │               │   ├── TraitRegistry.java
│           │               │   ├── actions/
│           │               │   │   └── ActionHandler.java
│           │               │   ├── speech/
│           │               │   │   └── DenizenSpeechContext.java
│           │               │   └── traits/
│           │               │       ├── AssignmentTrait.java
│           │               │       ├── ConstantsTrait.java
│           │               │       ├── DenizenFlagsTrait.java
│           │               │       ├── FishingTrait.java
│           │               │       ├── HealthTrait.java
│           │               │       ├── HungerTrait.java
│           │               │       ├── InvisibleTrait.java
│           │               │       ├── MirrorEquipmentTrait.java
│           │               │       ├── MirrorNameTrait.java
│           │               │       ├── MirrorTrait.java
│           │               │       ├── MobproxTrait.java
│           │               │       ├── NicknameTrait.java
│           │               │       ├── PushableTrait.java
│           │               │       ├── SittingTrait.java
│           │               │       ├── SleepingTrait.java
│           │               │       ├── SneakingTrait.java
│           │               │       └── TriggerTrait.java
│           │               ├── objects/
│           │               │   ├── AreaContainmentObject.java
│           │               │   ├── BiomeTag.java
│           │               │   ├── ChunkTag.java
│           │               │   ├── CuboidTag.java
│           │               │   ├── EllipsoidTag.java
│           │               │   ├── EnchantmentTag.java
│           │               │   ├── EntityFormObject.java
│           │               │   ├── EntityTag.java
│           │               │   ├── InventoryTag.java
│           │               │   ├── ItemTag.java
│           │               │   ├── LocationTag.java
│           │               │   ├── MaterialTag.java
│           │               │   ├── NPCTag.java
│           │               │   ├── PlayerTag.java
│           │               │   ├── PluginTag.java
│           │               │   ├── PolygonTag.java
│           │               │   ├── TradeTag.java
│           │               │   ├── WorldTag.java
│           │               │   └── properties/
│           │               │       ├── PropertyRegistry.java
│           │               │       ├── bukkit/
│           │               │       │   ├── BukkitBinaryTagExtensions.java
│           │               │       │   ├── BukkitColorExtensions.java
│           │               │       │   ├── BukkitElementExtensions.java
│           │               │       │   ├── BukkitListExtensions.java
│           │               │       │   ├── BukkitMapExtensions.java
│           │               │       │   ├── BukkitQueueExtensions.java
│           │               │       │   └── BukkitScriptExtensions.java
│           │               │       ├── entity/
│           │               │       │   ├── EntityAI.java
│           │               │       │   ├── EntityAge.java
│           │               │       │   ├── EntityAgeLocked.java
│           │               │       │   ├── EntityAggressive.java
│           │               │       │   ├── EntityAnger.java
│           │               │       │   ├── EntityAngry.java
│           │               │       │   ├── EntityAreaEffectCloud.java
│           │               │       │   ├── EntityArmorBonus.java
│           │               │       │   ├── EntityArmorPose.java
│           │               │       │   ├── EntityArms.java
│           │               │       │   ├── EntityArrowDamage.java
│           │               │       │   ├── EntityArrowPierceLevel.java
│           │               │       │   ├── EntityAttributeBaseValues.java
│           │               │       │   ├── EntityAttributeModifiers.java
│           │               │       │   ├── EntityAwake.java
│           │               │       │   ├── EntityAware.java
│           │               │       │   ├── EntityBackgroundColor.java
│           │               │       │   ├── EntityBasePlate.java
│           │               │       │   ├── EntityBeamTarget.java
│           │               │       │   ├── EntityBoatType.java
│           │               │       │   ├── EntityBodyArrows.java
│           │               │       │   ├── EntityBoundingBox.java
│           │               │       │   ├── EntityBrightness.java
│           │               │       │   ├── EntityCanBreakDoors.java
│           │               │       │   ├── EntityCanJoinRaid.java
│           │               │       │   ├── EntityCannotEnterHive.java
│           │               │       │   ├── EntityCharged.java
│           │               │       │   ├── EntityChestCarrier.java
│           │               │       │   ├── EntityColor.java
│           │               │       │   ├── EntityConversionPlayer.java
│           │               │       │   ├── EntityConversionTime.java
│           │               │       │   ├── EntityCritical.java
│           │               │       │   ├── EntityCustomName.java
│           │               │       │   ├── EntityCustomNameVisible.java
│           │               │       │   ├── EntityDarkDuration.java
│           │               │       │   ├── EntityDefaultBackground.java
│           │               │       │   ├── EntityDirection.java
│           │               │       │   ├── EntityDisabledSlots.java
│           │               │       │   ├── EntityDisplay.java
│           │               │       │   ├── EntityDropsItem.java
│           │               │       │   ├── EntityEquipment.java
│           │               │       │   ├── EntityEquipmentDropChance.java
│           │               │       │   ├── EntityExploredLocations.java
│           │               │       │   ├── EntityExplosionFire.java
│           │               │       │   ├── EntityExplosionRadius.java
│           │               │       │   ├── EntityEyeTargetLocation.java
│           │               │       │   ├── EntityFirework.java
│           │               │       │   ├── EntityFireworkLifetime.java
│           │               │       │   ├── EntityFixed.java
│           │               │       │   ├── EntityFlags.java
│           │               │       │   ├── EntityFlower.java
│           │               │       │   ├── EntityFramed.java
│           │               │       │   ├── EntityFreezeDuration.java
│           │               │       │   ├── EntityGlowColor.java
│           │               │       │   ├── EntityGravity.java
│           │               │       │   ├── EntityHasNectar.java
│           │               │       │   ├── EntityHasStung.java
│           │               │       │   ├── EntityHealth.java
│           │               │       │   ├── EntityHeight.java
│           │               │       │   ├── EntityHive.java
│           │               │       │   ├── EntityHorns.java
│           │               │       │   ├── EntityImmune.java
│           │               │       │   ├── EntityInWaterTime.java
│           │               │       │   ├── EntityInterpolationDuration.java
│           │               │       │   ├── EntityInterpolationStart.java
│           │               │       │   ├── EntityInventory.java
│           │               │       │   ├── EntityInvulnerable.java
│           │               │       │   ├── EntityIsShowingBottom.java
│           │               │       │   ├── EntityItem.java
│           │               │       │   ├── EntityItemInHand.java
│           │               │       │   ├── EntityItemInOffHand.java
│           │               │       │   ├── EntityJumpStrength.java
│           │               │       │   ├── EntityKnockback.java
│           │               │       │   ├── EntityLeftRotation.java
│           │               │       │   ├── EntityLineWidth.java
│           │               │       │   ├── EntityMarker.java
│           │               │       │   ├── EntityMaterial.java
│           │               │       │   ├── EntityMaxFuseTicks.java
│           │               │       │   ├── EntityMaxTemper.java
│           │               │       │   ├── EntityOnBack.java
│           │               │       │   ├── EntityOpacity.java
│           │               │       │   ├── EntityPainting.java
│           │               │       │   ├── EntityPatrolLeader.java
│           │               │       │   ├── EntityPatrolTarget.java
│           │               │       │   ├── EntityPickupStatus.java
│           │               │       │   ├── EntityPivot.java
│           │               │       │   ├── EntityPlayerCreated.java
│           │               │       │   ├── EntityPlayingDead.java
│           │               │       │   ├── EntityPotion.java
│           │               │       │   ├── EntityPotionEffects.java
│           │               │       │   ├── EntityPotionType.java
│           │               │       │   ├── EntityPowered.java
│           │               │       │   ├── EntityProfession.java
│           │               │       │   ├── EntityProperty.java
│           │               │       │   ├── EntityRightRotation.java
│           │               │       │   ├── EntityRiptide.java
│           │               │       │   ├── EntityRolling.java
│           │               │       │   ├── EntityRotation.java
│           │               │       │   ├── EntityScale.java
│           │               │       │   ├── EntityScoreboardTags.java
│           │               │       │   ├── EntitySeeThrough.java
│           │               │       │   ├── EntityShadowRadius.java
│           │               │       │   ├── EntityShadowStrength.java
│           │               │       │   ├── EntitySheared.java
│           │               │       │   ├── EntityShivering.java
│           │               │       │   ├── EntityShotAtAngle.java
│           │               │       │   ├── EntityShulkerPeek.java
│           │               │       │   ├── EntitySilent.java
│           │               │       │   ├── EntitySitting.java
│           │               │       │   ├── EntitySize.java
│           │               │       │   ├── EntitySmall.java
│           │               │       │   ├── EntitySneezing.java
│           │               │       │   ├── EntitySpeed.java
│           │               │       │   ├── EntitySpell.java
│           │               │       │   ├── EntityState.java
│           │               │       │   ├── EntityStepHeight.java
│           │               │       │   ├── EntityStrength.java
│           │               │       │   ├── EntityTame.java
│           │               │       │   ├── EntityTeleportDuration.java
│           │               │       │   ├── EntityTemper.java
│           │               │       │   ├── EntityText.java
│           │               │       │   ├── EntityTextShadowed.java
│           │               │       │   ├── EntityTrades.java
│           │               │       │   ├── EntityTranslation.java
│           │               │       │   ├── EntityTrapTime.java
│           │               │       │   ├── EntityTrapped.java
│           │               │       │   ├── EntityVariant.java
│           │               │       │   ├── EntityViewRange.java
│           │               │       │   ├── EntityVillagerExperience.java
│           │               │       │   ├── EntityVillagerLevel.java
│           │               │       │   ├── EntityVisible.java
│           │               │       │   ├── EntityVisualFire.java
│           │               │       │   └── EntityWidth.java
│           │               │       ├── inventory/
│           │               │       │   ├── InventoryContents.java
│           │               │       │   ├── InventoryHolder.java
│           │               │       │   ├── InventorySize.java
│           │               │       │   ├── InventoryTitle.java
│           │               │       │   ├── InventoryTrades.java
│           │               │       │   └── InventoryUniquifier.java
│           │               │       ├── item/
│           │               │       │   ├── ItemArmorPose.java
│           │               │       │   ├── ItemAttributeModifiers.java
│           │               │       │   ├── ItemAttributeNBT.java
│           │               │       │   ├── ItemBaseColor.java
│           │               │       │   ├── ItemBlockMaterial.java
│           │               │       │   ├── ItemBook.java
│           │               │       │   ├── ItemBookGeneration.java
│           │               │       │   ├── ItemCanDestroy.java
│           │               │       │   ├── ItemCanPlaceOn.java
│           │               │       │   ├── ItemChargedProjectile.java
│           │               │       │   ├── ItemColor.java
│           │               │       │   ├── ItemComponentsPatch.java
│           │               │       │   ├── ItemCustomData.java
│           │               │       │   ├── ItemCustomModel.java
│           │               │       │   ├── ItemDisplayname.java
│           │               │       │   ├── ItemDurability.java
│           │               │       │   ├── ItemEnchantments.java
│           │               │       │   ├── ItemFirework.java
│           │               │       │   ├── ItemFireworkPower.java
│           │               │       │   ├── ItemFlags.java
│           │               │       │   ├── ItemFrameInvisible.java
│           │               │       │   ├── ItemHidden.java
│           │               │       │   ├── ItemInstrument.java
│           │               │       │   ├── ItemInventoryContents.java
│           │               │       │   ├── ItemKnowledgeBookRecipes.java
│           │               │       │   ├── ItemLock.java
│           │               │       │   ├── ItemLodestoneLocation.java
│           │               │       │   ├── ItemLodestoneTracked.java
│           │               │       │   ├── ItemLore.java
│           │               │       │   ├── ItemMap.java
│           │               │       │   ├── ItemNBT.java
│           │               │       │   ├── ItemPatterns.java
│           │               │       │   ├── ItemPotion.java
│           │               │       │   ├── ItemProperty.java
│           │               │       │   ├── ItemQuantity.java
│           │               │       │   ├── ItemRawNBT.java
│           │               │       │   ├── ItemRepairCost.java
│           │               │       │   ├── ItemScript.java
│           │               │       │   ├── ItemSignContents.java
│           │               │       │   ├── ItemSignIsWaxed.java
│           │               │       │   ├── ItemSkullskin.java
│           │               │       │   ├── ItemSpawnerCount.java
│           │               │       │   ├── ItemSpawnerDelay.java
│           │               │       │   ├── ItemSpawnerMaxNearbyEntities.java
│           │               │       │   ├── ItemSpawnerPlayerRange.java
│           │               │       │   ├── ItemSpawnerRange.java
│           │               │       │   ├── ItemSpawnerType.java
│           │               │       │   ├── ItemTrim.java
│           │               │       │   └── ItemUnbreakable.java
│           │               │       ├── material/
│           │               │       │   ├── MaterialAge.java
│           │               │       │   ├── MaterialAttached.java
│           │               │       │   ├── MaterialAttachmentFace.java
│           │               │       │   ├── MaterialBlockType.java
│           │               │       │   ├── MaterialBrewingStand.java
│           │               │       │   ├── MaterialCampfire.java
│           │               │       │   ├── MaterialCount.java
│           │               │       │   ├── MaterialDelay.java
│           │               │       │   ├── MaterialDirectional.java
│           │               │       │   ├── MaterialDistance.java
│           │               │       │   ├── MaterialDrags.java
│           │               │       │   ├── MaterialFaces.java
│           │               │       │   ├── MaterialHalf.java
│           │               │       │   ├── MaterialHinge.java
│           │               │       │   ├── MaterialInstrument.java
│           │               │       │   ├── MaterialLeafSize.java
│           │               │       │   ├── MaterialLevel.java
│           │               │       │   ├── MaterialLightable.java
│           │               │       │   ├── MaterialLocked.java
│           │               │       │   ├── MaterialMode.java
│           │               │       │   ├── MaterialNote.java
│           │               │       │   ├── MaterialOminous.java
│           │               │       │   ├── MaterialPersistent.java
│           │               │       │   ├── MaterialPower.java
│           │               │       │   ├── MaterialProperty.java
│           │               │       │   ├── MaterialShape.java
│           │               │       │   ├── MaterialSides.java
│           │               │       │   ├── MaterialSnowable.java
│           │               │       │   ├── MaterialSwitchable.java
│           │               │       │   ├── MaterialUnstable.java
│           │               │       │   └── MaterialWaterlogged.java
│           │               │       └── trade/
│           │               │           ├── TradeDemand.java
│           │               │           ├── TradeHasXp.java
│           │               │           ├── TradeInputs.java
│           │               │           ├── TradeMaxUses.java
│           │               │           ├── TradePriceMultiplier.java
│           │               │           ├── TradeProperty.java
│           │               │           ├── TradeResult.java
│           │               │           ├── TradeSpecialPrice.java
│           │               │           ├── TradeUses.java
│           │               │           └── TradeVillagerXP.java
│           │               ├── scripts/
│           │               │   ├── commands/
│           │               │   │   ├── BukkitCommandRegistry.java
│           │               │   │   ├── core/
│           │               │   │   │   ├── CooldownCommand.java
│           │               │   │   │   ├── ResetCommand.java
│           │               │   │   │   └── ZapCommand.java
│           │               │   │   ├── entity/
│           │               │   │   │   ├── AgeCommand.java
│           │               │   │   │   ├── AnimateCommand.java
│           │               │   │   │   ├── AttachCommand.java
│           │               │   │   │   ├── AttackCommand.java
│           │               │   │   │   ├── BurnCommand.java
│           │               │   │   │   ├── CastCommand.java
│           │               │   │   │   ├── EquipCommand.java
│           │               │   │   │   ├── FakeEquipCommand.java
│           │               │   │   │   ├── FakeInternalDataCommand.java
│           │               │   │   │   ├── FeedCommand.java
│           │               │   │   │   ├── FlyCommand.java
│           │               │   │   │   ├── FollowCommand.java
│           │               │   │   │   ├── GlowCommand.java
│           │               │   │   │   ├── HeadCommand.java
│           │               │   │   │   ├── HealCommand.java
│           │               │   │   │   ├── HealthCommand.java
│           │               │   │   │   ├── HurtCommand.java
│           │               │   │   │   ├── InvisibleCommand.java
│           │               │   │   │   ├── KillCommand.java
│           │               │   │   │   ├── LeashCommand.java
│           │               │   │   │   ├── LookCommand.java
│           │               │   │   │   ├── MountCommand.java
│           │               │   │   │   ├── PushCommand.java
│           │               │   │   │   ├── RemoveCommand.java
│           │               │   │   │   ├── RenameCommand.java
│           │               │   │   │   ├── RotateCommand.java
│           │               │   │   │   ├── ShootCommand.java
│           │               │   │   │   ├── SneakCommand.java
│           │               │   │   │   ├── SpawnCommand.java
│           │               │   │   │   ├── TeleportCommand.java
│           │               │   │   │   ├── WalkCommand.java
│           │               │   │   │   └── WalkCommandCitizensEvents.java
│           │               │   │   ├── item/
│           │               │   │   │   ├── DisplayItemCommand.java
│           │               │   │   │   ├── FakeItemCommand.java
│           │               │   │   │   ├── GiveCommand.java
│           │               │   │   │   ├── InventoryCommand.java
│           │               │   │   │   ├── MapCommand.java
│           │               │   │   │   └── TakeCommand.java
│           │               │   │   ├── npc/
│           │               │   │   │   ├── ActionCommand.java
│           │               │   │   │   ├── AnchorCommand.java
│           │               │   │   │   ├── AssignmentCommand.java
│           │               │   │   │   ├── BreakCommand.java
│           │               │   │   │   ├── CreateCommand.java
│           │               │   │   │   ├── DespawnCommand.java
│           │               │   │   │   ├── DisengageCommand.java
│           │               │   │   │   ├── EngageCommand.java
│           │               │   │   │   ├── FishCommand.java
│           │               │   │   │   ├── LookcloseCommand.java
│           │               │   │   │   ├── NPCBossBarCommand.java
│           │               │   │   │   ├── PauseCommand.java
│           │               │   │   │   ├── PoseCommand.java
│           │               │   │   │   ├── PushableCommand.java
│           │               │   │   │   ├── SitCommand.java
│           │               │   │   │   ├── SleepCommand.java
│           │               │   │   │   ├── StandCommand.java
│           │               │   │   │   ├── TraitCommand.java
│           │               │   │   │   ├── TriggerCommand.java
│           │               │   │   │   └── VulnerableCommand.java
│           │               │   │   ├── player/
│           │               │   │   │   ├── ActionBarCommand.java
│           │               │   │   │   ├── AdvancementCommand.java
│           │               │   │   │   ├── BlockCrackCommand.java
│           │               │   │   │   ├── ChatCommand.java
│           │               │   │   │   ├── ClickableCommand.java
│           │               │   │   │   ├── CompassCommand.java
│           │               │   │   │   ├── DebugBlockCommand.java
│           │               │   │   │   ├── DisguiseCommand.java
│           │               │   │   │   ├── ExperienceCommand.java
│           │               │   │   │   ├── FakeSpawnCommand.java
│           │               │   │   │   ├── GroupCommand.java
│           │               │   │   │   ├── ItemCooldownCommand.java
│           │               │   │   │   ├── KickCommand.java
│           │               │   │   │   ├── MoneyCommand.java
│           │               │   │   │   ├── NarrateCommand.java
│           │               │   │   │   ├── OpenTradesCommand.java
│           │               │   │   │   ├── OxygenCommand.java
│           │               │   │   │   ├── PermissionCommand.java
│           │               │   │   │   ├── ResourcePackCommand.java
│           │               │   │   │   ├── ShowFakeCommand.java
│           │               │   │   │   ├── SidebarCommand.java
│           │               │   │   │   ├── StatisticCommand.java
│           │               │   │   │   ├── TablistCommand.java
│           │               │   │   │   ├── TeamCommand.java
│           │               │   │   │   ├── TitleCommand.java
│           │               │   │   │   └── ToastCommand.java
│           │               │   │   ├── server/
│           │               │   │   │   ├── AnnounceCommand.java
│           │               │   │   │   ├── BanCommand.java
│           │               │   │   │   ├── BossBarCommand.java
│           │               │   │   │   ├── ExecuteCommand.java
│           │               │   │   │   └── ScoreboardCommand.java
│           │               │   │   └── world/
│           │               │   │       ├── AdjustBlockCommand.java
│           │               │   │       ├── AnimateChestCommand.java
│           │               │   │       ├── ChunkLoadCommand.java
│           │               │   │       ├── CopyBlockCommand.java
│           │               │   │       ├── CreateWorldCommand.java
│           │               │   │       ├── DropCommand.java
│           │               │   │       ├── ExplodeCommand.java
│           │               │   │       ├── FireworkCommand.java
│           │               │   │       ├── GameRuleCommand.java
│           │               │   │       ├── LightCommand.java
│           │               │   │       ├── MidiCommand.java
│           │               │   │       ├── ModifyBlockCommand.java
│           │               │   │       ├── PlayEffectCommand.java
│           │               │   │       ├── PlaySoundCommand.java
│           │               │   │       ├── SchematicCommand.java
│           │               │   │       ├── SignCommand.java
│           │               │   │       ├── StrikeCommand.java
│           │               │   │       ├── SwitchCommand.java
│           │               │   │       ├── TickCommand.java
│           │               │   │       ├── TimeCommand.java
│           │               │   │       ├── WeatherCommand.java
│           │               │   │       └── WorldBorderCommand.java
│           │               │   ├── containers/
│           │               │   │   ├── ContainerRegistry.java
│           │               │   │   └── core/
│           │               │   │       ├── AssignmentScriptContainer.java
│           │               │   │       ├── BookScriptContainer.java
│           │               │   │       ├── BukkitWorldScriptHelper.java
│           │               │   │       ├── CommandScriptContainer.java
│           │               │   │       ├── CommandScriptHelper.java
│           │               │   │       ├── EconomyScriptContainer.java
│           │               │   │       ├── EnchantmentScriptContainer.java
│           │               │   │       ├── EntityScriptContainer.java
│           │               │   │       ├── EntityScriptHelper.java
│           │               │   │       ├── InteractScriptContainer.java
│           │               │   │       ├── InteractScriptHelper.java
│           │               │   │       ├── InventoryScriptContainer.java
│           │               │   │       ├── InventoryScriptHelper.java
│           │               │   │       ├── ItemScriptContainer.java
│           │               │   │       ├── ItemScriptHelper.java
│           │               │   │       ├── MapScriptContainer.java
│           │               │   │       └── VersionScriptContainer.java
│           │               │   └── triggers/
│           │               │       ├── AbstractTrigger.java
│           │               │       ├── TriggerRegistry.java
│           │               │       └── core/
│           │               │           ├── ChatTrigger.java
│           │               │           ├── ClickTrigger.java
│           │               │           ├── DamageTrigger.java
│           │               │           └── ProximityTrigger.java
│           │               ├── tags/
│           │               │   ├── BukkitTagContext.java
│           │               │   └── core/
│           │               │       ├── CustomColorTagBase.java
│           │               │       ├── NPCTagBase.java
│           │               │       ├── PlayerTagBase.java
│           │               │       ├── ServerTagBase.java
│           │               │       └── TextTagBase.java
│           │               └── utilities/
│           │                   ├── BukkitImplDeprecations.java
│           │                   ├── CommonRegistries.java
│           │                   ├── Conversion.java
│           │                   ├── DataPersistenceHelper.java
│           │                   ├── FormattedTextHelper.java
│           │                   ├── HoverFormatHelper.java
│           │                   ├── LegacyParticleNaming.java
│           │                   ├── LegacySavesUpdater.java
│           │                   ├── MultiVersionHelper1_18.java
│           │                   ├── MultiVersionHelper1_19.java
│           │                   ├── NotedAreaTracker.java
│           │                   ├── PaperAPITools.java
│           │                   ├── ScoreboardHelper.java
│           │                   ├── Settings.java
│           │                   ├── TextWidthHelper.java
│           │                   ├── Utilities.java
│           │                   ├── VanillaTagHelper.java
│           │                   ├── blocks/
│           │                   │   ├── BlockSet.java
│           │                   │   ├── ChunkCoordinate.java
│           │                   │   ├── CuboidBlockSet.java
│           │                   │   ├── FakeBlock.java
│           │                   │   ├── FullBlockData.java
│           │                   │   ├── SpawnableHelper.java
│           │                   │   └── SpongeSchematicHelper.java
│           │                   ├── command/
│           │                   │   ├── CommandEvents.java
│           │                   │   ├── DenizenCommandHandler.java
│           │                   │   ├── ExCommandHandler.java
│           │                   │   ├── ExSustainedCommandHandler.java
│           │                   │   ├── NPCCommandHandler.java
│           │                   │   ├── TabCompleteHelper.java
│           │                   │   ├── manager/
│           │                   │   │   ├── Command.java
│           │                   │   │   ├── CommandAnnotationProcessor.java
│           │                   │   │   ├── CommandContext.java
│           │                   │   │   ├── CommandManager.java
│           │                   │   │   ├── Injector.java
│           │                   │   │   ├── Paginator.java
│           │                   │   │   ├── Requirements.java
│           │                   │   │   ├── RequirementsProcessor.java
│           │                   │   │   ├── exceptions/
│           │                   │   │   │   ├── CommandException.java
│           │                   │   │   │   ├── CommandUsageException.java
│           │                   │   │   │   ├── NoPermissionsException.java
│           │                   │   │   │   ├── RequirementMissingException.java
│           │                   │   │   │   ├── ServerCommandException.java
│           │                   │   │   │   ├── UnhandledCommandException.java
│           │                   │   │   │   └── WrappedCommandException.java
│           │                   │   │   └── messaging/
│           │                   │   │       ├── Colorizer.java
│           │                   │   │       └── Messaging.java
│           │                   │   └── scripted/
│           │                   │       ├── DenizenAliasHelpTopic.java
│           │                   │       ├── DenizenCommand.java
│           │                   │       ├── DenizenCommandHelpTopic.java
│           │                   │       └── DenizenCommandSender.java
│           │                   ├── debugging/
│           │                   │   ├── BStatsMetricsLite.java
│           │                   │   ├── Debug.java
│           │                   │   ├── DebugConsoleSender.java
│           │                   │   ├── DebugSubmit.java
│           │                   │   └── StatsRecord.java
│           │                   ├── depends/
│           │                   │   └── Depends.java
│           │                   ├── entity/
│           │                   │   ├── AreaEffectCloudHelper.java
│           │                   │   ├── BossBarHelper.java
│           │                   │   ├── DenizenEntityType.java
│           │                   │   ├── EntityAttachmentHelper.java
│           │                   │   ├── EntityMetadataCommandHelper.java
│           │                   │   ├── FakeEntity.java
│           │                   │   ├── Gravity.java
│           │                   │   ├── HideEntitiesHelper.java
│           │                   │   ├── Position.java
│           │                   │   ├── SpawnEntityHelper.java
│           │                   │   └── Velocity.java
│           │                   ├── flags/
│           │                   │   ├── DataPersistenceFlagTracker.java
│           │                   │   ├── LocationFlagSearchHelper.java
│           │                   │   ├── PlayerFlagHandler.java
│           │                   │   └── WorldFlagHandler.java
│           │                   ├── implementation/
│           │                   │   ├── BukkitScriptEntryData.java
│           │                   │   └── DenizenCoreImplementation.java
│           │                   ├── inventory/
│           │                   │   ├── InventoryTrackerSystem.java
│           │                   │   ├── InventoryViewUtil.java
│           │                   │   ├── RecipeHelper.java
│           │                   │   └── SlotHelper.java
│           │                   ├── maps/
│           │                   │   ├── DenizenMapManager.java
│           │                   │   ├── DenizenMapRenderer.java
│           │                   │   ├── MapCursor.java
│           │                   │   ├── MapDot.java
│           │                   │   ├── MapImage.java
│           │                   │   ├── MapObject.java
│           │                   │   └── MapText.java
│           │                   ├── midi/
│           │                   │   ├── MidiUtil.java
│           │                   │   ├── NoteBlockReceiver.java
│           │                   │   └── ToneUtil.java
│           │                   ├── nbt/
│           │                   │   ├── CustomNBT.java
│           │                   │   └── LeatherColorer.java
│           │                   ├── packets/
│           │                   │   ├── DenizenPacketHandler.java
│           │                   │   ├── HideParticles.java
│           │                   │   ├── ItemChangeMessage.java
│           │                   │   ├── NetworkInterceptCodeGen.java
│           │                   │   └── NetworkInterceptHelper.java
│           │                   └── world/
│           │                       ├── GameRuleReflect.java
│           │                       ├── PathFinder.java
│           │                       ├── VoidGenerator.java
│           │                       └── WorldListChangeTracker.java
│           └── resources/
│               ├── Denizen.mid
│               ├── config.yml
│               └── plugin.yml
├── pom.xml
├── v1_17/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_17/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   └── FakeBlockHelper.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               ├── PacketOutChatImpl.java
│                                               ├── PacketOutSetSlotImpl.java
│                                               ├── PacketOutSpawnEntityImpl.java
│                                               ├── PacketOutTradeListImpl.java
│                                               └── PacketOutWindowItemsImpl.java
├── v1_18/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_18/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   └── FakeBlockHelper.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
├── v1_19/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_19/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   └── FakeBlockHelper.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
├── v1_20/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_20/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityDataNameMapper.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   ├── FakeBlockHelper.java
│                                           │   └── packet/
│                                           │       ├── ActionBarEventPacketHandlers.java
│                                           │       ├── AttachPacketHandlers.java
│                                           │       ├── BlockLightPacketHandlers.java
│                                           │       ├── DenizenPacketHandlerPacketHandlers.java
│                                           │       ├── DisguisePacketHandlers.java
│                                           │       ├── EntityMetadataPacketHandlers.java
│                                           │       ├── FakeBlocksPacketHandlers.java
│                                           │       ├── FakeEquipmentPacketHandlers.java
│                                           │       ├── FakePlayerPacketHandlers.java
│                                           │       ├── HiddenEntitiesPacketHandlers.java
│                                           │       ├── HideParticlesPacketHandlers.java
│                                           │       ├── PlayerHearsSoundEventPacketHandlers.java
│                                           │       └── TablistUpdateEventPacketHandlers.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
├── v1_21/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── denizenscript/
│                       └── denizen/
│                           └── nms/
│                               └── v1_21/
│                                   ├── Handler.java
│                                   ├── ReflectionMappingsInfo.java
│                                   ├── helpers/
│                                   │   ├── AdvancementHelperImpl.java
│                                   │   ├── AnimationHelperImpl.java
│                                   │   ├── BlockHelperImpl.java
│                                   │   ├── ChunkHelperImpl.java
│                                   │   ├── CustomEntityHelperImpl.java
│                                   │   ├── EnchantmentHelperImpl.java
│                                   │   ├── EntityDataNameMapper.java
│                                   │   ├── EntityHelperImpl.java
│                                   │   ├── FishingHelperImpl.java
│                                   │   ├── ItemHelperImpl.java
│                                   │   ├── NBTAdapter.java
│                                   │   ├── PacketHelperImpl.java
│                                   │   ├── PlayerHelperImpl.java
│                                   │   └── WorldHelperImpl.java
│                                   └── impl/
│                                       ├── BiomeNMSImpl.java
│                                       ├── ImprovedOfflinePlayerImpl.java
│                                       ├── ProfileEditorImpl.java
│                                       ├── SidebarImpl.java
│                                       ├── blocks/
│                                       │   └── BlockLightImpl.java
│                                       ├── entities/
│                                       │   ├── CraftFakeArrowImpl.java
│                                       │   ├── CraftFakePlayerImpl.java
│                                       │   ├── CraftItemProjectileImpl.java
│                                       │   ├── EntityFakeArrowImpl.java
│                                       │   ├── EntityFakePlayerImpl.java
│                                       │   └── EntityItemProjectileImpl.java
│                                       └── network/
│                                           ├── fakes/
│                                           │   ├── FakeChannelImpl.java
│                                           │   ├── FakeNetworkManagerImpl.java
│                                           │   └── FakePlayerConnectionImpl.java
│                                           ├── handlers/
│                                           │   ├── AbstractListenerPlayInImpl.java
│                                           │   ├── DenizenNetworkManagerImpl.java
│                                           │   ├── DenizenPacketListenerImpl.java
│                                           │   ├── FakeBlockHelper.java
│                                           │   └── packet/
│                                           │       ├── ActionBarEventPacketHandlers.java
│                                           │       ├── AttachPacketHandlers.java
│                                           │       ├── BlockLightPacketHandlers.java
│                                           │       ├── DenizenPacketHandlerPacketHandlers.java
│                                           │       ├── DisguisePacketHandlers.java
│                                           │       ├── EntityMetadataPacketHandlers.java
│                                           │       ├── FakeBlocksPacketHandlers.java
│                                           │       ├── FakeEquipmentPacketHandlers.java
│                                           │       ├── FakePlayerPacketHandlers.java
│                                           │       ├── HiddenEntitiesPacketHandlers.java
│                                           │       ├── HideParticlesPacketHandlers.java
│                                           │       ├── PlayerHearsSoundEventPacketHandlers.java
│                                           │       └── TablistUpdateEventPacketHandlers.java
│                                           └── packets/
│                                               ├── PacketInResourcePackStatusImpl.java
│                                               ├── PacketInSteerVehicleImpl.java
│                                               └── PacketOutChatImpl.java
└── v26_1/
    ├── pom.xml
    └── src/
        └── main/
            └── java/
                └── com/
                    └── denizenscript/
                        └── denizen/
                            └── nms/
                                └── v26_1/
                                    ├── Handler.java
                                    ├── helpers/
                                    │   ├── AdvancementHelperImpl.java
                                    │   ├── AnimationHelperImpl.java
                                    │   ├── BlockHelperImpl.java
                                    │   ├── ChunkHelperImpl.java
                                    │   ├── CustomEntityHelperImpl.java
                                    │   ├── EnchantmentHelperImpl.java
                                    │   ├── EntityDataNameMapper.java
                                    │   ├── EntityHelperImpl.java
                                    │   ├── FishingHelperImpl.java
                                    │   ├── ItemHelperImpl.java
                                    │   ├── NBTAdapter.java
                                    │   ├── PacketHelperImpl.java
                                    │   ├── PlayerHelperImpl.java
                                    │   └── WorldHelperImpl.java
                                    └── impl/
                                        ├── BiomeNMSImpl.java
                                        ├── ImprovedOfflinePlayerImpl.java
                                        ├── ProfileEditorImpl.java
                                        ├── SidebarImpl.java
                                        ├── blocks/
                                        │   └── BlockLightImpl.java
                                        ├── entities/
                                        │   ├── CraftFakeArrowImpl.java
                                        │   ├── CraftFakePlayerImpl.java
                                        │   ├── CraftItemProjectileImpl.java
                                        │   ├── EntityFakeArrowImpl.java
                                        │   ├── EntityFakePlayerImpl.java
                                        │   └── EntityItemProjectileImpl.java
                                        └── network/
                                            ├── fakes/
                                            │   ├── FakeChannelImpl.java
                                            │   ├── FakeNetworkManagerImpl.java
                                            │   └── FakePlayerConnectionImpl.java
                                            ├── handlers/
                                            │   ├── AbstractListenerPlayInImpl.java
                                            │   ├── DenizenNetworkManagerImpl.java
                                            │   ├── DenizenPacketListenerImpl.java
                                            │   ├── FakeBlockHelper.java
                                            │   └── packet/
                                            │       ├── ActionBarEventPacketHandlers.java
                                            │       ├── AttachPacketHandlers.java
                                            │       ├── BlockLightPacketHandlers.java
                                            │       ├── DenizenPacketHandlerPacketHandlers.java
                                            │       ├── DisguisePacketHandlers.java
                                            │       ├── EntityMetadataPacketHandlers.java
                                            │       ├── FakeBlocksPacketHandlers.java
                                            │       ├── FakeEquipmentPacketHandlers.java
                                            │       ├── FakePlayerPacketHandlers.java
                                            │       ├── HiddenEntitiesPacketHandlers.java
                                            │       ├── HideParticlesPacketHandlers.java
                                            │       ├── PlayerHearsSoundEventPacketHandlers.java
                                            │       └── TablistUpdateEventPacketHandlers.java
                                            └── packets/
                                                ├── PacketInResourcePackStatusImpl.java
                                                ├── PacketInSteerVehicleImpl.java
                                                └── PacketOutChatImpl.java
Download .txt
Showing preview only (889K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11067 symbols across 1126 files)

FILE: dist/src/main/java/com/denizenscript/denizen/dist/Dist.java
  class Dist (line 3) | public class Dist {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/PaperEventHelpers.java
  class PaperEventHelpers (line 14) | public class PaperEventHelpers implements Listener {
    method onRecipeBookClick (line 16) | @EventHandler
    method onServerResourcesReloaded (line 26) | @EventHandler(priority = EventPriority.LOWEST)

FILE: paper/src/main/java/com/denizenscript/denizen/paper/PaperModule.java
  class PaperModule (line 24) | public class PaperModule {
    method init (line 26) | public static void init() {
    method parseFormattedText (line 158) | public static Component parseFormattedText(String text, ChatColor base...
    method stringifyComponent (line 171) | public static String stringifyComponent(Component component) {
    method jsonToComponent (line 178) | public static Component jsonToComponent(String json) {
    method componentToJson (line 191) | public static String componentToJson(Component component) {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ComponentAdaptersRegistry.java
  class ComponentAdaptersRegistry (line 3) | public class ComponentAdaptersRegistry {
    method register (line 5) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/DataComponentAdapter.java
  class DataComponentAdapter (line 23) | public abstract class DataComponentAdapter<D extends ObjectTag, C extend...
    method getComponentType (line 56) | public static DataComponentType getComponentType(String name) {
    method register (line 65) | public static void register(DataComponentAdapter<?, ?> adapter) {
    method DataComponentAdapter (line 100) | public DataComponentAdapter(C componentType, Class<D> denizenType, Str...
    method getValue (line 106) | public abstract D getValue(ItemStack item);
    method setValue (line 108) | public abstract void setValue(ItemStack item, D value, Mechanism mecha...
    method isDefaultValue (line 110) | public boolean isDefaultValue(D value) {
    class NonValued (line 114) | public static abstract class NonValued extends DataComponentAdapter<El...
      method NonValued (line 116) | public NonValued(DataComponentType.NonValued componentType, String n...
      method getValue (line 120) | @Override
      method setValue (line 125) | @Override
      method isDefaultValue (line 139) | @Override
    class Valued (line 145) | public static abstract class Valued<D extends ObjectTag, P> extends Da...
      method setIfValid (line 147) | public static <T, D extends ObjectTag> void setIfValid(Consumer<T> s...
      method Valued (line 160) | public Valued(Class<D> denizenType, DataComponentType.Valued<P> comp...
      method toDenizen (line 164) | public abstract D toDenizen(P value);
      method fromDenizen (line 166) | public abstract P fromDenizen(D value, Mechanism mechanism);
      method getValue (line 168) | @Override
      method setValue (line 174) | @Override
    class Property (line 183) | public class Property extends ItemProperty<D> {
      method Property (line 187) | public Property(ItemTag item) {
      method getPropertyValue (line 191) | @Override
      method getPropertyValueNoDefault (line 196) | @Override
      method isDefaultValue (line 204) | @Override
      method setPropertyValue (line 209) | @Override
      method getPropertyId (line 218) | @Override
      method register (line 223) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/FoodAdapter.java
  class FoodAdapter (line 9) | public class FoodAdapter extends DataComponentAdapter.Valued<MapTag, Foo...
    method FoodAdapter (line 25) | public FoodAdapter() {
    method toDenizen (line 29) | @Override
    method fromDenizen (line 38) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/GliderAdapter.java
  class GliderAdapter (line 5) | public class GliderAdapter extends DataComponentAdapter.NonValued {
    method GliderAdapter (line 17) | public GliderAdapter() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ItemModelAdapter.java
  class ItemModelAdapter (line 9) | public class ItemModelAdapter extends DataComponentAdapter.Valued<Elemen...
    method ItemModelAdapter (line 23) | public ItemModelAdapter() {
    method toDenizen (line 27) | @Override
    method fromDenizen (line 32) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxDurabilityAdapter.java
  class MaxDurabilityAdapter (line 7) | public class MaxDurabilityAdapter extends DataComponentAdapter.Valued<El...
    method MaxDurabilityAdapter (line 19) | public MaxDurabilityAdapter() {
    method toDenizen (line 23) | @Override
    method fromDenizen (line 28) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxStackSizeAdapter.java
  class MaxStackSizeAdapter (line 7) | public class MaxStackSizeAdapter extends DataComponentAdapter.Valued<Ele...
    method MaxStackSizeAdapter (line 19) | public MaxStackSizeAdapter() {
    method toDenizen (line 23) | @Override
    method fromDenizen (line 28) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/RarityAdapter.java
  class RarityAdapter (line 8) | public class RarityAdapter extends DataComponentAdapter.Valued<ElementTa...
    method RarityAdapter (line 21) | public RarityAdapter() {
    method toDenizen (line 25) | @Override
    method fromDenizen (line 30) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/AnvilBlockDamagedScriptEvent.java
  class AnvilBlockDamagedScriptEvent (line 14) | public class AnvilBlockDamagedScriptEvent extends BukkitScriptEvent impl...
    method AnvilBlockDamagedScriptEvent (line 42) | public AnvilBlockDamagedScriptEvent() {
    method matches (line 63) | @Override
    method getContext (line 77) | @Override
    method getScriptEntryData (line 87) | @Override
    method onAnvilDamaged (line 92) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java
  class AreaEnterExitScriptEventPaperImpl (line 12) | public class AreaEnterExitScriptEventPaperImpl extends AreaEnterExitScri...
    method getContext (line 14) | @Override
    method registerCorrectClass (line 25) | @Override
    class PaperListeners (line 35) | public class PaperListeners extends SpigotListeners {
      method onEntityMove (line 37) | @EventHandler
      method onEntityDeath (line 44) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/BellRingScriptEvent.java
  class BellRingScriptEvent (line 13) | public class BellRingScriptEvent extends BukkitScriptEvent implements Li...
    method BellRingScriptEvent (line 16) | public BellRingScriptEvent() {
    method matches (line 23) | @Override
    method getScriptEntryData (line 31) | @Override
    method getContext (line 36) | @Override
    method bellRingEvent (line 46) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/BlockPreDispenseScriptEvent.java
  class BlockPreDispenseScriptEvent (line 12) | public class BlockPreDispenseScriptEvent extends BukkitScriptEvent imple...
    method BlockPreDispenseScriptEvent (line 34) | public BlockPreDispenseScriptEvent() {
    method matches (line 42) | @Override
    method getContext (line 56) | @Override
    method onBlockPreDispense (line 66) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/CreeperIgnitesScriptEvent.java
  class CreeperIgnitesScriptEvent (line 11) | public class CreeperIgnitesScriptEvent extends BukkitScriptEvent impleme...
    method CreeperIgnitesScriptEvent (line 33) | public CreeperIgnitesScriptEvent() {
    method matches (line 40) | @Override
    method getContext (line 48) | @Override
    method onCreeperIgnites (line 59) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/DragonEggFormScriptEvent.java
  class DragonEggFormScriptEvent (line 13) | public class DragonEggFormScriptEvent extends BukkitScriptEvent implemen...
    method DragonEggFormScriptEvent (line 38) | public DragonEggFormScriptEvent() {
    method matches (line 46) | @Override
    method getContext (line 54) | @Override
    method onDragonEggForms (line 68) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityAddToWorldScriptEvent.java
  class EntityAddToWorldScriptEvent (line 13) | public class EntityAddToWorldScriptEvent extends BukkitScriptEvent imple...
    method EntityAddToWorldScriptEvent (line 33) | public EntityAddToWorldScriptEvent() {
    method matches (line 41) | @Override
    method getScriptEntryData (line 52) | @Override
    method getContext (line 57) | @Override
    method onPreCreatureSpawn (line 66) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityKnocksbackEntityScriptEvent.java
  class EntityKnocksbackEntityScriptEvent (line 15) | public class EntityKnocksbackEntityScriptEvent extends BukkitScriptEvent...
    method EntityKnocksbackEntityScriptEvent (line 50) | public EntityKnocksbackEntityScriptEvent() {
    method matches (line 61) | @Override
    method applyDetermination (line 77) | @Override
    method getScriptEntryData (line 86) | @Override
    method getContext (line 93) | @Override
    method onEntityKnockbackEntity (line 104) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityLoadCrossbowScriptEvent.java
  class EntityLoadCrossbowScriptEvent (line 14) | public class EntityLoadCrossbowScriptEvent extends BukkitScriptEvent imp...
    method EntityLoadCrossbowScriptEvent (line 47) | public EntityLoadCrossbowScriptEvent() {
    method matches (line 58) | @Override
    method getScriptEntryData (line 69) | @Override
    method getContext (line 74) | @Override
    method onLoadCrossbow (line 85) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityPathfindScriptEvent.java
  class EntityPathfindScriptEvent (line 14) | public class EntityPathfindScriptEvent extends BukkitScriptEvent impleme...
    method EntityPathfindScriptEvent (line 43) | public EntityPathfindScriptEvent() {
    method matches (line 53) | @Override
    method getScriptEntryData (line 70) | @Override
    method getContext (line 75) | @Override
    method onEntityPathfind (line 89) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityRemoveFromWorldScriptEvent.java
  class EntityRemoveFromWorldScriptEvent (line 12) | public class EntityRemoveFromWorldScriptEvent extends BukkitScriptEvent ...
    method EntityRemoveFromWorldScriptEvent (line 31) | public EntityRemoveFromWorldScriptEvent() {
    method matches (line 38) | @Override
    method getScriptEntryData (line 49) | @Override
    method getContext (line 54) | @Override
    method onPreCreatureSpawn (line 62) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityStepsOnScriptEvent.java
  class EntityStepsOnScriptEvent (line 13) | public class EntityStepsOnScriptEvent extends BukkitScriptEvent implemen...
    method EntityStepsOnScriptEvent (line 54) | public EntityStepsOnScriptEvent() {
    method couldMatch (line 63) | @Override
    method matches (line 74) | @Override
    method getContext (line 88) | @Override
    method entityStepsOnBlockEvent (line 99) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/EntityTeleportedByPortalScriptEvent.java
  class EntityTeleportedByPortalScriptEvent (line 12) | public class EntityTeleportedByPortalScriptEvent extends BukkitScriptEve...
    method EntityTeleportedByPortalScriptEvent (line 42) | public EntityTeleportedByPortalScriptEvent() {
    method matches (line 55) | @Override
    method getContext (line 72) | @Override
    method onEntityPortalReady (line 82) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/ExperienceOrbMergeScriptEvent.java
  class ExperienceOrbMergeScriptEvent (line 13) | public class ExperienceOrbMergeScriptEvent extends BukkitScriptEvent imp...
    method ExperienceOrbMergeScriptEvent (line 35) | public ExperienceOrbMergeScriptEvent() {
    method matches (line 41) | @Override
    method getScriptEntryData (line 49) | @Override
    method getContext (line 54) | @Override
    method experienceOrbsMerge (line 65) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerAbsorbsExperienceScriptEvent.java
  class PlayerAbsorbsExperienceScriptEvent (line 13) | public class PlayerAbsorbsExperienceScriptEvent extends BukkitScriptEven...
    method PlayerAbsorbsExperienceScriptEvent (line 36) | public PlayerAbsorbsExperienceScriptEvent() {
    method matches (line 42) | @Override
    method getScriptEntryData (line 50) | @Override
    method getContext (line 55) | @Override
    method absorbsExperience (line 63) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerBeaconEffectScriptEvent.java
  class PlayerBeaconEffectScriptEvent (line 16) | public class PlayerBeaconEffectScriptEvent extends BukkitScriptEvent imp...
    method PlayerBeaconEffectScriptEvent (line 45) | public PlayerBeaconEffectScriptEvent() {
    method matches (line 51) | @Override
    method applyDetermination (line 59) | @Override
    method getScriptEntryData (line 71) | @Override
    method getContext (line 76) | @Override
    method beaconEffectEvent (line 88) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChangesFramedItemScriptEvent.java
  class PlayerChangesFramedItemScriptEvent (line 14) | public class PlayerChangesFramedItemScriptEvent extends BukkitScriptEven...
    method PlayerChangesFramedItemScriptEvent (line 44) | public PlayerChangesFramedItemScriptEvent() {
    method matches (line 57) | @Override
    method getContext (line 74) | @Override
    method getScriptEntryData (line 84) | @Override
    method onPlayerChangesFramedItem (line 89) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChoosesArrowScriptEvent.java
  class PlayerChoosesArrowScriptEvent (line 15) | public class PlayerChoosesArrowScriptEvent extends BukkitScriptEvent imp...
    method PlayerChoosesArrowScriptEvent (line 46) | public PlayerChoosesArrowScriptEvent() {
    method matches (line 53) | @Override
    method getContext (line 67) | @Override
    method getScriptEntryData (line 76) | @Override
    method cancellationChanged (line 81) | @Override
    method onPlayerChoosesArrow (line 90) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChunkUnloadScriptEvent.java
  class PlayerChunkUnloadScriptEvent (line 12) | public class PlayerChunkUnloadScriptEvent extends BukkitScriptEvent impl...
    method PlayerChunkUnloadScriptEvent (line 36) | public PlayerChunkUnloadScriptEvent() {
    method matches (line 42) | @Override
    method getScriptEntryData (line 50) | @Override
    method getContext (line 55) | @Override
    method playerChunkUnloadEvent (line 63) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksFakeEntityScriptEvent.java
  class PlayerClicksFakeEntityScriptEvent (line 14) | public class PlayerClicksFakeEntityScriptEvent extends BukkitScriptEvent...
    method PlayerClicksFakeEntityScriptEvent (line 38) | public PlayerClicksFakeEntityScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 58) | @Override
    method getContext (line 63) | @Override
    method clickFakeEntity (line 80) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksInRecipeBookScriptEvent.java
  class PlayerClicksInRecipeBookScriptEvent (line 12) | public class PlayerClicksInRecipeBookScriptEvent extends BukkitScriptEve...
    method PlayerClicksInRecipeBookScriptEvent (line 36) | public PlayerClicksInRecipeBookScriptEvent() {
    method matches (line 42) | @Override
    method getScriptEntryData (line 50) | @Override
    method getContext (line 55) | @Override
    method playerUsesRecipeBook (line 66) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClientOptionsChangeScriptEvent.java
  class PlayerClientOptionsChangeScriptEvent (line 16) | public class PlayerClientOptionsChangeScriptEvent extends BukkitScriptEv...
    method PlayerClientOptionsChangeScriptEvent (line 52) | public PlayerClientOptionsChangeScriptEvent() {
    method getScriptEntryData (line 58) | @Override
    method getContext (line 63) | @Override
    method onPlayerClientOptionsChange (line 97) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerCompletesAdvancementScriptEventPaperImpl.java
  class PlayerCompletesAdvancementScriptEventPaperImpl (line 10) | public class PlayerCompletesAdvancementScriptEventPaperImpl extends Play...
    method getContext (line 12) | @Override
    method applyDetermination (line 20) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerDeepSleepScriptEvent.java
  class PlayerDeepSleepScriptEvent (line 10) | public class PlayerDeepSleepScriptEvent extends BukkitScriptEvent implem...
    method PlayerDeepSleepScriptEvent (line 30) | public PlayerDeepSleepScriptEvent() {
    method matches (line 36) | @Override
    method getScriptEntryData (line 44) | @Override
    method playerDeepSleep (line 49) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerElytraBoostScriptEvent.java
  class PlayerElytraBoostScriptEvent (line 15) | public class PlayerElytraBoostScriptEvent extends BukkitScriptEvent impl...
    method PlayerElytraBoostScriptEvent (line 46) | public PlayerElytraBoostScriptEvent() {
    method matches (line 62) | @Override
    method getScriptEntryData (line 76) | @Override
    method getContext (line 81) | @Override
    method onPlayerElytraBoost (line 91) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerEquipsArmorScriptEvent.java
  class PlayerEquipsArmorScriptEvent (line 20) | public class PlayerEquipsArmorScriptEvent extends BukkitScriptEvent impl...
    method registerSlot (line 47) | public static void registerSlot(String name, PlayerArmorChangeEvent.Sl...
    method PlayerEquipsArmorScriptEvent (line 52) | public PlayerEquipsArmorScriptEvent() {
    method matches (line 66) | @Override
    method getScriptEntryData (line 97) | @Override
    method getContext (line 102) | @Override
    method simpleComparisonString (line 115) | public String simpleComparisonString(ItemStack stack) {
    method armorChangeEvent (line 125) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerGrantedAdvancementCriterionScriptEvent.java
  class PlayerGrantedAdvancementCriterionScriptEvent (line 13) | public class PlayerGrantedAdvancementCriterionScriptEvent extends Bukkit...
    method PlayerGrantedAdvancementCriterionScriptEvent (line 54) | public PlayerGrantedAdvancementCriterionScriptEvent() {
    method matches (line 63) | @Override
    method getScriptEntryData (line 74) | @Override
    method getContext (line 79) | @Override
    method playerGrantedAdvancementCriterionEvent (line 88) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerInventorySlotChangeScriptEvent.java
  class PlayerInventorySlotChangeScriptEvent (line 14) | public class PlayerInventorySlotChangeScriptEvent extends BukkitScriptEv...
    method PlayerInventorySlotChangeScriptEvent (line 43) | public PlayerInventorySlotChangeScriptEvent() {
    method matches (line 52) | @Override
    method getContext (line 69) | @Override
    method getScriptEntryData (line 80) | @Override
    method onPlayerInventorySlotChange (line 85) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerItemTakesDamageScriptEventPaperImpl.java
  class PlayerItemTakesDamageScriptEventPaperImpl (line 9) | public class PlayerItemTakesDamageScriptEventPaperImpl extends PlayerIte...
    method getContext (line 11) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerJumpsScriptEventPaperImpl.java
  class PlayerJumpsScriptEventPaperImpl (line 10) | public class PlayerJumpsScriptEventPaperImpl extends PlayerJumpScriptEve...
    method onPlayerJumps (line 12) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLecternPageChangeScriptEvent.java
  class PlayerLecternPageChangeScriptEvent (line 14) | public class PlayerLecternPageChangeScriptEvent extends BukkitScriptEven...
    method PlayerLecternPageChangeScriptEvent (line 56) | public PlayerLecternPageChangeScriptEvent() {
    method matches (line 70) | @Override
    method getScriptEntryData (line 81) | @Override
    method getContext (line 86) | @Override
    method onPlayerFlipsLecternPage (line 98) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLoomPatternSelectScriptEvent.java
  class PlayerLoomPatternSelectScriptEvent (line 15) | public class PlayerLoomPatternSelectScriptEvent extends BukkitScriptEven...
    method PlayerLoomPatternSelectScriptEvent (line 55) | public PlayerLoomPatternSelectScriptEvent() {
    method matches (line 69) | @Override
    method getScriptEntryData (line 80) | @Override
    method getContext (line 85) | @Override
    method onPlayerSelectsLoomPattern (line 94) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerNamesEntityScriptEvent.java
  class PlayerNamesEntityScriptEvent (line 16) | public class PlayerNamesEntityScriptEvent extends BukkitScriptEvent impl...
    method PlayerNamesEntityScriptEvent (line 46) | public PlayerNamesEntityScriptEvent() {
    method matches (line 64) | @Override
    method getScriptEntryData (line 75) | @Override
    method getContext (line 80) | @Override
    method playerNamesEntity (line 91) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerOpenSignScriptEvent.java
  class PlayerOpenSignScriptEvent (line 13) | public class PlayerOpenSignScriptEvent extends BukkitScriptEvent impleme...
    method PlayerOpenSignScriptEvent (line 38) | public PlayerOpenSignScriptEvent() {
    method matches (line 45) | @Override
    method getScriptEntryData (line 53) | @Override
    method getContext (line 58) | @Override
    method playerOpenSignEvent (line 68) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerPreparesGrindstoneCraftScriptEvent.java
  class PlayerPreparesGrindstoneCraftScriptEvent (line 14) | public class PlayerPreparesGrindstoneCraftScriptEvent extends BukkitScri...
    method PlayerPreparesGrindstoneCraftScriptEvent (line 47) | public PlayerPreparesGrindstoneCraftScriptEvent() {
    method matches (line 57) | @Override
    method getContext (line 68) | @Override
    method getScriptEntryData (line 77) | @Override
    method onPlayerPreparesGrindstoneCraft (line 82) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerQuitsScriptEventPaperImpl.java
  class PlayerQuitsScriptEventPaperImpl (line 10) | public class PlayerQuitsScriptEventPaperImpl extends PlayerQuitsScriptEv...
    method PlayerQuitsScriptEventPaperImpl (line 12) | public PlayerQuitsScriptEventPaperImpl() {
    method matches (line 22) | @Override
    method getContext (line 30) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerRaiseLowerItemScriptEventPaperImpl.java
  class PlayerRaiseLowerItemScriptEventPaperImpl (line 18) | public class PlayerRaiseLowerItemScriptEventPaperImpl extends PlayerRais...
    method getContext (line 23) | @Override
    method run (line 33) | @Override
    method onStopUsingItem (line 54) | @EventHandler
    method isHandRaised (line 59) | public boolean isHandRaised(Player player, EquipmentSlot slot) {
    method onPlayerDropItem (line 66) | @EventHandler
    method onPlayerChangeHeldItem (line 84) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerReceivesLinksScriptEvent.java
  class PlayerReceivesLinksScriptEvent (line 15) | public class PlayerReceivesLinksScriptEvent extends BukkitScriptEvent im...
    method PlayerReceivesLinksScriptEvent (line 40) | public PlayerReceivesLinksScriptEvent() {
    method getScriptEntryData (line 50) | @Override
    method onPlayerLinksSend (line 55) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSelectsStonecutterRecipeScriptEvent.java
  class PlayerSelectsStonecutterRecipeScriptEvent (line 14) | public class PlayerSelectsStonecutterRecipeScriptEvent extends BukkitScr...
    method PlayerSelectsStonecutterRecipeScriptEvent (line 40) | public PlayerSelectsStonecutterRecipeScriptEvent() {
    method matches (line 47) | @Override
    method getContext (line 58) | @Override
    method getScriptEntryData (line 69) | @Override
    method onPlayerSelectsStonecutterRecipe (line 74) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSetSpawnScriptEvent.java
  class PlayerSetSpawnScriptEvent (line 15) | public class PlayerSetSpawnScriptEvent extends BukkitScriptEvent impleme...
    method PlayerSetSpawnScriptEvent (line 50) | public PlayerSetSpawnScriptEvent() {
    method matches (line 78) | @Override
    method getScriptEntryData (line 89) | @Override
    method getContext (line 94) | @Override
    method onPlayerSetsSpawn (line 106) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerShieldDisableScriptEvent.java
  class PlayerShieldDisableScriptEvent (line 14) | public class PlayerShieldDisableScriptEvent extends BukkitScriptEvent im...
    method PlayerShieldDisableScriptEvent (line 41) | public PlayerShieldDisableScriptEvent() {
    method matches (line 51) | @Override
    method getContext (line 59) | @Override
    method getScriptEntryData (line 68) | @Override
    method playerShieldDisableEvent (line 73) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSpectatesEntityScriptEvent.java
  class PlayerSpectatesEntityScriptEvent (line 12) | public class PlayerSpectatesEntityScriptEvent extends BukkitScriptEvent ...
    method PlayerSpectatesEntityScriptEvent (line 36) | public PlayerSpectatesEntityScriptEvent() {
    method matches (line 42) | @Override
    method getScriptEntryData (line 53) | @Override
    method getContext (line 58) | @Override
    method playerSpectateEvent (line 69) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerStopsSpectatingScriptEvent.java
  class PlayerStopsSpectatingScriptEvent (line 12) | public class PlayerStopsSpectatingScriptEvent extends BukkitScriptEvent ...
    method PlayerStopsSpectatingScriptEvent (line 35) | public PlayerStopsSpectatingScriptEvent() {
    method matches (line 41) | @Override
    method getScriptEntryData (line 52) | @Override
    method getContext (line 57) | @Override
    method playerSpectateEvent (line 65) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTracksEntityScriptEvent.java
  class PlayerTracksEntityScriptEvent (line 14) | public class PlayerTracksEntityScriptEvent extends BukkitScriptEvent imp...
    method PlayerTracksEntityScriptEvent (line 45) | public PlayerTracksEntityScriptEvent() {
    method matches (line 53) | @Override
    method getScriptEntryData (line 67) | @Override
    method getContext (line 72) | @Override
    method onPlayerTracksEntityEvent (line 80) | @EventHandler
    method onPlayerUntracksEntityEvent (line 88) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTradesWithMerchantScriptEvent.java
  class PlayerTradesWithMerchantScriptEvent (line 15) | public class PlayerTradesWithMerchantScriptEvent extends BukkitScriptEve...
    method PlayerTradesWithMerchantScriptEvent (line 45) | public PlayerTradesWithMerchantScriptEvent() {
    method matches (line 55) | @Override
    method getScriptEntryData (line 66) | @Override
    method getContext (line 71) | @Override
    method playerTradeEvent (line 80) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PreEntitySpawnScriptEvent.java
  class PreEntitySpawnScriptEvent (line 15) | public class PreEntitySpawnScriptEvent extends BukkitScriptEvent impleme...
    method PreEntitySpawnScriptEvent (line 42) | public PreEntitySpawnScriptEvent() {
    method matches (line 50) | @Override
    method cancellationChanged (line 65) | @Override
    method getScriptEntryData (line 71) | @Override
    method getContext (line 76) | @Override
    method onPreCreatureSpawn (line 93) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/PrePlayerAttackEntityScriptEvent.java
  class PrePlayerAttackEntityScriptEvent (line 14) | public class PrePlayerAttackEntityScriptEvent extends BukkitScriptEvent ...
    method PrePlayerAttackEntityScriptEvent (line 40) | public PrePlayerAttackEntityScriptEvent() {
    method matches (line 49) | @Override
    method getScriptEntryData (line 60) | @Override
    method getContext (line 65) | @Override
    method onPrePlayerAttackEntity (line 74) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/ProjectileCollideScriptEvent.java
  class ProjectileCollideScriptEvent (line 15) | public class ProjectileCollideScriptEvent extends BukkitScriptEvent impl...
    method ProjectileCollideScriptEvent (line 42) | public ProjectileCollideScriptEvent() {
    method couldMatch (line 46) | @Override
    method matches (line 61) | @Override
    method getScriptEntryData (line 75) | @Override
    method getContext (line 80) | @Override
    method projectileCollideEvent (line 89) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/ServerListPingScriptEventPaperImpl.java
  class ServerListPingScriptEventPaperImpl (line 27) | public class ServerListPingScriptEventPaperImpl extends ListPingScriptEv...
    method ServerListPingScriptEventPaperImpl (line 29) | public ServerListPingScriptEventPaperImpl() {
    method getEvent (line 75) | public PaperServerListPingEvent getEvent() {
    class ListedPlayersEditor (line 80) | public static class ListedPlayersEditor {
      method setListedPlayerInfo (line 81) | public static void setListedPlayerInfo(PaperServerListPingEvent even...
      method excludeListedPlayers (line 88) | public static void excludeListedPlayers(PaperServerListPingEvent eve...
    class FakeProfile (line 93) | public static class FakeProfile implements PlayerProfile {
      method getName (line 95) | @Override public @Nullable String getName() {
      method setName (line 98) | @Override public @NotNull String setName(@Nullable String s) {
      method getUniqueId (line 103) | @Override public @Nullable UUID getUniqueId() { return null; }
      method getId (line 104) | @Override public @Nullable UUID getId() { return null; }
      method setId (line 105) | @Override public @Nullable UUID setId(@Nullable UUID uuid) { return ...
      method getTextures (line 106) | @Override public @NotNull PlayerTextures getTextures() { return null; }
      method setTextures (line 107) | @Override public void setTextures(@Nullable PlayerTextures playerTex...
      method getProperties (line 108) | @Override public @NotNull Set<ProfileProperty> getProperties() { ret...
      method hasProperty (line 109) | @Override public boolean hasProperty(@Nullable String s) { return fa...
      method setProperty (line 110) | @Override public void setProperty(@NotNull ProfileProperty profilePr...
      method setProperties (line 111) | @Override public void setProperties(@NotNull Collection<ProfilePrope...
      method removeProperty (line 112) | @Override public boolean removeProperty(@Nullable String s) { return...
      method clearProperties (line 113) | @Override public void clearProperties() { }
      method isComplete (line 114) | @Override public boolean isComplete() { return false; }
      method update (line 115) | @Override public @NotNull CompletableFuture<PlayerProfile> update() ...
      method clone (line 116) | @Override public com.destroystokyo.paper.profile.@NotNull PlayerProf...
      method completeFromCache (line 117) | @Override public boolean completeFromCache() { return false; }
      method completeFromCache (line 118) | @Override public boolean completeFromCache(boolean b) { return false; }
      method completeFromCache (line 119) | @Override public boolean completeFromCache(boolean b, boolean b1) { ...
      method complete (line 120) | @Override public boolean complete(boolean b) { return false; }
      method complete (line 121) | @Override public boolean complete(boolean b, boolean b1) { return fa...
      method serialize (line 122) | @Override public @NotNull Map<String, Object> serialize() { return n...
    method setMotd (line 125) | @Override
    method getContext (line 130) | @Override
    method onListPing (line 141) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/ServerResourcesReloadedScriptEvent.java
  class ServerResourcesReloadedScriptEvent (line 10) | public class ServerResourcesReloadedScriptEvent extends BukkitScriptEven...
    method ServerResourcesReloadedScriptEvent (line 29) | public ServerResourcesReloadedScriptEvent() {
    method matches (line 36) | @Override
    method getContext (line 44) | @Override
    method onServerResourcesReloaded (line 52) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/SkeletonHorseTrapScriptEvent.java
  class SkeletonHorseTrapScriptEvent (line 14) | public class SkeletonHorseTrapScriptEvent extends BukkitScriptEvent impl...
    method SkeletonHorseTrapScriptEvent (line 33) | public SkeletonHorseTrapScriptEvent() {
    method matches (line 40) | @Override
    method getContext (line 48) | @Override
    method onSkeletonHorseTrap (line 65) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/TNTPrimesScriptEvent.java
  class TNTPrimesScriptEvent (line 14) | public class TNTPrimesScriptEvent extends BukkitScriptEvent implements L...
    method TNTPrimesScriptEvent (line 16) | public TNTPrimesScriptEvent() {
    method matches (line 23) | @Override
    method getScriptEntryData (line 31) | @Override
    method getContext (line 36) | @Override
    method tntPrimeEvent (line 50) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/TargetBlockHitScriptEvent.java
  class TargetBlockHitScriptEvent (line 15) | public class TargetBlockHitScriptEvent extends BukkitScriptEvent impleme...
    method TargetBlockHitScriptEvent (line 41) | public TargetBlockHitScriptEvent() {
    method matches (line 50) | @Override
    method getContext (line 58) | @Override
    method getScriptEntryData (line 70) | @Override
    method onProjectileHit (line 75) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/UnknownCommandScriptEvent.java
  class UnknownCommandScriptEvent (line 24) | public class UnknownCommandScriptEvent extends BukkitScriptEvent impleme...
    method UnknownCommandScriptEvent (line 55) | public UnknownCommandScriptEvent() {
    method getScriptEntryData (line 70) | @Override
    method getContext (line 75) | @Override
    method unknownCommandEvent (line 90) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/VaultChangesStateScriptEvent.java
  class VaultChangesStateScriptEvent (line 13) | public class VaultChangesStateScriptEvent extends BukkitScriptEvent impl...
    method VaultChangesStateScriptEvent (line 38) | public VaultChangesStateScriptEvent() {
    method matches (line 45) | @Override
    method getScriptEntryData (line 53) | @Override
    method getContext (line 58) | @Override
    method onVaultChangesStateEvent (line 68) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/WardenChangesAngerLevelScriptEvent.java
  class WardenChangesAngerLevelScriptEvent (line 13) | public class WardenChangesAngerLevelScriptEvent extends BukkitScriptEven...
    method WardenChangesAngerLevelScriptEvent (line 49) | public WardenChangesAngerLevelScriptEvent() {
    method matches (line 62) | @Override
    method getContext (line 70) | @Override
    method getScriptEntryData (line 81) | @Override
    method onWardenAngerChange (line 86) | @EventHandler

FILE: paper/src/main/java/com/denizenscript/denizen/paper/events/WorldGameRuleChangeScriptEvent.java
  class WorldGameRuleChangeScriptEvent (line 22) | public class WorldGameRuleChangeScriptEvent extends BukkitScriptEvent im...
    method WorldGameRuleChangeScriptEvent (line 51) | public WorldGameRuleChangeScriptEvent() {
    method matches (line 68) | @Override
    method getContext (line 79) | @Override
    method getScriptEntryData (line 92) | @Override
    method onGameRuleChanged (line 101) | @EventHandler
    method getCommandBlock (line 109) | public LocationTag getCommandBlock() {
    method getCommandMinecart (line 115) | public EntityTag getCommandMinecart() {
    method getSourceType (line 121) | public ElementTag getSourceType() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityArmsRaised.java
  class EntityArmsRaised (line 11) | @Deprecated
    method describes (line 14) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 19) | public static EntityArmsRaised getFrom(ObjectTag _entity) {
    method EntityArmsRaised (line 28) | public EntityArmsRaised(EntityTag _entity) {
    method getPropertyString (line 34) | @Override
    method getPropertyId (line 39) | @Override
    method register (line 44) | public static void register() {
    method getRanged (line 81) | public RangedEntity getRanged() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityAutoExpire.java
  class EntityAutoExpire (line 11) | public class EntityAutoExpire implements Property {
    method describes (line 13) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 18) | public static EntityAutoExpire getFrom(ObjectTag _entity) {
    method EntityAutoExpire (line 31) | public EntityAutoExpire(EntityTag _entity) {
    method register (line 37) | public static void register() {
    method getFallingBlock (line 54) | public FallingBlock getFallingBlock() {
    method doesAutoExpire (line 58) | public boolean doesAutoExpire() {
    method getPropertyString (line 62) | @Override
    method getPropertyId (line 67) | @Override
    method adjust (line 73) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityBodyStingers.java
  class EntityBodyStingers (line 8) | public class EntityBodyStingers extends EntityProperty<ElementTag> {
    method describes (line 20) | public static boolean describes(EntityTag entity) {
    method isDefaultValue (line 24) | @Override
    method getPropertyValue (line 29) | @Override
    method getPropertyId (line 34) | @Override
    method setPropertyValue (line 39) | @Override
    method register (line 46) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityCanTick.java
  class EntityCanTick (line 11) | public class EntityCanTick implements Property {
    method describes (line 13) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 18) | public static EntityCanTick getFrom(ObjectTag entity) {
    method EntityCanTick (line 29) | public EntityCanTick(EntityTag entity) {
    method getPropertyString (line 35) | @Override
    method getPropertyId (line 40) | @Override
    method register (line 45) | public static void register() {
    method adjust (line 61) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityCarryingEgg.java
  class EntityCarryingEgg (line 11) | public class EntityCarryingEgg implements Property {
    method describes (line 13) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 18) | public static EntityCarryingEgg getFrom(ObjectTag entity) {
    method EntityCarryingEgg (line 31) | public EntityCarryingEgg(EntityTag _entity) {
    method register (line 37) | public static void register() {
    method getPropertyString (line 53) | @Override
    method getPropertyId (line 58) | @Override
    method adjust (line 63) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityDrinkingPotion.java
  class EntityDrinkingPotion (line 13) | public class EntityDrinkingPotion implements Property {
    method describes (line 15) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 20) | public static EntityDrinkingPotion getFrom(ObjectTag _entity) {
    method EntityDrinkingPotion (line 33) | public EntityDrinkingPotion(EntityTag _entity) {
    method register (line 39) | public static void register() {
    method getWitch (line 68) | public Witch getWitch() {
    method getPropertyString (line 72) | @Override
    method getPropertyId (line 77) | @Override
    method adjust (line 83) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityEggLayTime.java
  class EntityEggLayTime (line 9) | public class EntityEggLayTime extends EntityProperty<DurationTag> {
    method describes (line 20) | public static boolean describes(EntityTag entity) {
    method getPropertyValue (line 24) | @Override
    method getPropertyId (line 29) | @Override
    method setPropertyValue (line 34) | @Override
    method register (line 39) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityFriction.java
  class EntityFriction (line 11) | public class EntityFriction implements Property {
    method describes (line 13) | public static boolean describes(ObjectTag object) {
    method getFrom (line 17) | public static EntityFriction getFrom(ObjectTag entity) {
    method EntityFriction (line 24) | public EntityFriction(EntityTag ent) {
    method getFrictional (line 30) | public Frictional getFrictional() {
    method getPropertyString (line 34) | @Override
    method getPropertyId (line 43) | @Override
    method register (line 48) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityLeftHanded.java
  class EntityLeftHanded (line 9) | public class EntityLeftHanded extends EntityProperty<ElementTag> {
    method describes (line 20) | public static boolean describes(EntityTag entity) {
    method getPropertyValue (line 24) | @Override
    method getPropertyId (line 29) | @Override
    method setPropertyValue (line 34) | @Override
    method register (line 41) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityReputation.java
  class EntityReputation (line 17) | public class EntityReputation implements Property {
    method describes (line 19) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 24) | public static EntityReputation getFrom(ObjectTag _entity) {
    method EntityReputation (line 33) | public EntityReputation(EntityTag _entity) {
    method getPropertyString (line 39) | @Override
    method getPropertyId (line 44) | @Override
    method register (line 49) | public static void register() {
    method getVillager (line 108) | public Villager getVillager() {
    method getReputationMap (line 112) | public MapTag getReputationMap() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityShouldBurn.java
  class EntityShouldBurn (line 11) | public class EntityShouldBurn extends EntityProperty<ElementTag> {
    method describes (line 22) | public static boolean describes(EntityTag entity) {
    method getPropertyValue (line 30) | @Override
    method getPropertyId (line 49) | @Override
    method setPropertyValue (line 54) | @Override
    method register (line 75) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntitySneaking.java
  class EntitySneaking (line 10) | public class EntitySneaking extends EntityProperty<ElementTag> {
    method describes (line 23) | public static boolean describes(EntityTag entity) {
    method getPropertyValue (line 27) | @Override
    method isDefaultValue (line 32) | @Override
    method setPropertyValue (line 37) | @Override
    method getPropertyId (line 55) | @Override
    method register (line 60) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityWitherInvulnerable.java
  class EntityWitherInvulnerable (line 11) | public class EntityWitherInvulnerable implements Property {
    method describes (line 13) | public static boolean describes(ObjectTag entity) {
    method getFrom (line 18) | public static EntityWitherInvulnerable getFrom(ObjectTag _entity) {
    method EntityWitherInvulnerable (line 31) | public EntityWitherInvulnerable(EntityTag _entity) {
    method register (line 37) | public static void register() {
    method getWither (line 53) | public Wither getWither() {
    method getPropertyString (line 57) | @Override
    method getPropertyId (line 66) | @Override
    method adjust (line 71) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemArmorStand.java
  class ItemArmorStand (line 13) | public class ItemArmorStand implements Property {
    method describes (line 15) | public static boolean describes(ObjectTag item) {
    method getFrom (line 20) | public static ItemArmorStand getFrom(ObjectTag item) {
    method ItemArmorStand (line 31) | public ItemArmorStand(ItemTag item) {
    method getDataMap (line 37) | public MapTag getDataMap() {
    method getPropertyString (line 51) | @Override
    method getPropertyId (line 60) | @Override
    method register (line 65) | public static void register() {
    method adjust (line 82) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemRemovedComponents.java
  class ItemRemovedComponents (line 12) | public class ItemRemovedComponents extends ItemProperty<ListTag> {
    method describes (line 25) | public static boolean describes(ItemTag item) {
    method isRemoved (line 29) | public boolean isRemoved(DataComponentType componentType) {
    method getPropertyValue (line 33) | @Override
    method isDefaultValue (line 38) | @Override
    method setPropertyValue (line 43) | @Override
    method getPropertyId (line 60) | @Override
    method register (line 65) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperElementExtensions.java
  class PaperElementExtensions (line 10) | public class PaperElementExtensions {
    method register (line 13) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java
  class PaperEntityExtensions (line 20) | public class PaperEntityExtensions {
    method register (line 22) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperItemExtensions.java
  class PaperItemExtensions (line 8) | public class PaperItemExtensions {
    method register (line 10) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java
  class PaperPlayerExtensions (line 16) | public class PaperPlayerExtensions {
    method register (line 18) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperWorldExtensions.java
  class PaperWorldExtensions (line 13) | public class PaperWorldExtensions  {
    method register (line 15) | public static void register() {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/tags/PaperTagBase.java
  class PaperTagBase (line 8) | public class PaperTagBase extends PseudoObjectTagBase<PaperTagBase> {
    method PaperTagBase (line 12) | public PaperTagBase() {
    method register (line 17) | @Override

FILE: paper/src/main/java/com/denizenscript/denizen/paper/utilities/BlockTagsSetter.java
  class BlockTagsSetter (line 28) | public class BlockTagsSetter implements Listener {
    method BlockTagsSetter (line 47) | public BlockTagsSetter(Denizen plugin) {
    method onServerTickEnd (line 76) | @EventHandler
    method setTags (line 84) | public void setTags(Material material, Set<NamespacedKey> tags) {

FILE: paper/src/main/java/com/denizenscript/denizen/paper/utilities/PaperAPIToolsImpl.java
  class PaperAPIToolsImpl (line 48) | public class PaperAPIToolsImpl extends PaperAPITools {
    method createInventory (line 50) | @Override
    method createInventory (line 55) | @Override
    method parseComponent (line 60) | @Override
    method getTitle (line 71) | @Override
    method setCustomName (line 77) | @Override
    method getCustomName (line 82) | @Override
    method getCustomNameComponent (line 87) | @Override
    method setPlayerListName (line 93) | @Override
    method getPlayerListName (line 98) | @Override
    method getSignLines (line 103) | @Override
    method setSignLine (line 113) | @Override
    method sendResourcePack (line 118) | @Override
    method sendSignUpdate (line 128) | @Override
    method getCustomName (line 137) | @Override
    method setCustomName (line 142) | @Override
    method sendConsoleMessage (line 147) | @Override
    method openAnvil (line 152) | @Override
    method teleport (line 157) | @Override
    method registerBrewingRecipe (line 180) | @Override
    method clearBrewingRecipes (line 199) | @Override
    method parseBrewingRecipeChoice (line 211) | public static RecipeChoice parseBrewingRecipeChoice(ItemScriptContaine...
    method getBrewingRecipeInputMatcher (line 235) | @Override
    method getBrewingRecipeIngredientMatcher (line 240) | @Override
    method createPredicateRecipeChoice (line 245) | @Override
    method getDeathMessage (line 250) | @Override
    method setDeathMessage (line 255) | @Override
    method setSkin (line 262) | @Override
    method setSkinBlob (line 292) | @Override
    method getProfileProperty (line 311) | public ProfileProperty getProfileProperty(PlayerProfile profile, Strin...
    method spawnEntity (line 320) | @Override
    method setTeamPrefix (line 338) | @Override
    method setTeamSuffix (line 343) | @Override
    method getTeamPrefix (line 348) | @Override
    method getTeamSuffix (line 353) | @Override
    method convertTextToMiniMessage (line 358) | @Override
    method createMerchant (line 368) | @Override
    method getText (line 373) | @Override
    method setText (line 378) | @Override
    method kickPlayer (line 383) | @Override
    method getClientBrand (line 388) | @Override
    method canUseEquipmentSlot (line 394) | @Override
    method hasCustomName (line 399) | @Override
    method setMaterialTags (line 404) | @Override
    method addLink (line 413) | @Override
    method getRecentTps (line 418) | @Override
    method getCopperGolemState (line 423) | @Override
    method setCopperGolemState (line 428) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/Denizen.java
  class Denizen (line 80) | public class Denizen extends JavaPlugin {
    method getInstance (line 84) | public static Denizen getInstance() {
    method onEnable (line 111) | @Override
    method onDisable (line 486) | @Override
    method reloadConfig (line 506) | @Override
    method reloadSaves (line 521) | public void reloadSaves() {
    method getScoreboards (line 543) | public FileConfiguration getScoreboards() {
    method saveSaves (line 554) | public void saveSaves(boolean lockUntilDone) {
    method onCommand (line 572) | @Override
    method onTabComplete (line 604) | @Override
    method suggestClosestModifier (line 612) | private boolean suggestClosestModifier(CommandSender sender, String co...
    method getDefaultWorldGenerator (line 622) | @Override
    method getFile (line 631) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java
  class BukkitScriptEvent (line 43) | public abstract class BukkitScriptEvent extends ScriptEvent {
    method couldMatchLegacyInArea (line 150) | public static boolean couldMatchLegacyInArea(String lower) {
    method couldMatchArea (line 171) | public static boolean couldMatchArea(String text) {
    method exactMatchesEnum (line 200) | public static boolean exactMatchesEnum(String text, final Enum<?>[] en...
    method couldMatchEnum (line 210) | public static boolean couldMatchEnum(String text, final Enum<?>[] enum...
    method couldMatchRegistry (line 226) | public static boolean couldMatchRegistry(String text, Registry<?> regi...
    method couldMatchInventory (line 247) | public static boolean couldMatchInventory(String text) {
    method couldMatchEntity (line 287) | public static boolean couldMatchEntity(String text) {
    method exactMatchEntity (line 310) | public static boolean exactMatchEntity(String text) {
    method exactMatchesVehicle (line 329) | public static boolean exactMatchesVehicle(String text) {
    method couldMatchVehicle (line 361) | public static boolean couldMatchVehicle(String text) {
    method couldMatchBlockOrItem (line 382) | public static boolean couldMatchBlockOrItem(String text) {
    method couldMatchBlock (line 422) | public static boolean couldMatchBlock(String text) {
    method couldMatchBlock (line 429) | public static boolean couldMatchBlock(String text, Function<Material, ...
    method couldMatchItem (line 468) | public static boolean couldMatchItem(String text) {
    method nonSwitchWithCheck (line 510) | public static boolean nonSwitchWithCheck(ScriptPath path, ItemTag held) {
    method getTagContext (line 529) | @Override
    method getRegistrationClass (line 534) | public static Class<? extends Event> getRegistrationClass(Class<? exte...
    method getEventListeners (line 549) | public static HandlerList getEventListeners(Class<? extends Event> typ...
    method getExecutor (line 572) | public static EventExecutor getExecutor(RegisteredListener listener) {
    method fire (line 600) | @Override
    method cancellationChanged (line 618) | @Override
    method fire (line 628) | public void fire(Event event) {
    method getContext (line 639) | @Override
    method destroy (line 647) | @Override
    method init (line 663) | @Override
    method initListener (line 670) | public void initListener(Listener listener) {
    method initForPriority (line 702) | public void initForPriority(EventPriority priority, Listener listener) {
    method runInCheck (line 718) | public boolean runInCheck(ScriptPath path, Location location) {
    method runFlaggedCheck (line 722) | public static boolean runFlaggedCheck(ScriptPath path, String switchNa...
    method runLocationFlaggedCheck (line 727) | public boolean runLocationFlaggedCheck(ScriptPath path, String switchN...
    class BoolHolder (line 734) | public static class BoolHolder {
    method runInCheck (line 738) | public boolean runInCheck(ScriptPath path, Location location, String i...
    method inCheckInternal (line 786) | public static boolean inCheckInternal(TagContext context, String name,...
    method trySlot (line 878) | public static boolean trySlot(ScriptPath path, String switchName, Enti...
    method runWithCheck (line 886) | public static boolean runWithCheck(ScriptPath path, ItemTag held) {
    method runWithCheck (line 890) | public static boolean runWithCheck(ScriptPath path, ItemTag held, Stri...
    method runFlaggedCheck (line 903) | public static boolean runFlaggedCheck(ScriptPath path, PlayerTag playe...
    method runFlaggedCheck (line 907) | public static boolean runFlaggedCheck(ScriptPath path, String switchNa...
    method runPermissionCheck (line 918) | public static boolean runPermissionCheck(ScriptPath path, PlayerTag pl...
    method runPermissionCheck (line 922) | public static boolean runPermissionCheck(ScriptPath path, String switc...
    method runAutomaticPlayerSwitches (line 943) | public static boolean runAutomaticPlayerSwitches(ScriptEvent event, Sc...
    method runAssignedCheck (line 960) | public static boolean runAssignedCheck(ScriptPath path, NPCTag npc) {
    method runAutomaticNPCSwitches (line 980) | public static boolean runAutomaticNPCSwitches(ScriptEvent event, Scrip...

FILE: plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java
  class ScriptEventRegistry (line 23) | public class ScriptEventRegistry {
    method registerCitizensEvents (line 25) | public static void registerCitizensEvents() {
    method registerMainEvents (line 33) | public static void registerMainEvents() {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BellRingScriptEvent.java
  class BellRingScriptEvent (line 14) | public class BellRingScriptEvent extends BukkitScriptEvent implements Li...
    method BellRingScriptEvent (line 37) | public BellRingScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 52) | @Override
    method getContext (line 57) | @Override
    method bellRingEvent (line 67) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockBuiltScriptEvent.java
  class BlockBuiltScriptEvent (line 14) | public class BlockBuiltScriptEvent extends BukkitScriptEvent implements ...
    method BlockBuiltScriptEvent (line 41) | public BlockBuiltScriptEvent() {
    method matches (line 53) | @Override
    method getScriptEntryData (line 67) | @Override
    method cancellationChanged (line 72) | @Override
    method getContext (line 78) | @Override
    method onBlockBuilt (line 89) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockBurnsScriptEvent.java
  class BlockBurnsScriptEvent (line 11) | public class BlockBurnsScriptEvent extends BukkitScriptEvent implements ...
    method BlockBurnsScriptEvent (line 31) | public BlockBurnsScriptEvent() {
    method matches (line 39) | @Override
    method getContext (line 50) | @Override
    method onBlockBurns (line 59) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockCooksSmeltsItemScriptEvent.java
  class BlockCooksSmeltsItemScriptEvent (line 11) | public class BlockCooksSmeltsItemScriptEvent extends BukkitScriptEvent i...
    method BlockCooksSmeltsItemScriptEvent (line 35) | public BlockCooksSmeltsItemScriptEvent() {
    method matches (line 47) | @Override
    method getContext (line 66) | @Override
    method onBlockCooks (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockDestroyedByExplosionEvent.java
  class BlockDestroyedByExplosionEvent (line 17) | public class BlockDestroyedByExplosionEvent extends BukkitScriptEvent im...
    method BlockDestroyedByExplosionEvent (line 44) | public BlockDestroyedByExplosionEvent() {
    method matches (line 54) | @Override
    method getContext (line 71) | @Override
    method cancellationChanged (line 82) | @Override
    method onBlockExplodes (line 92) | @EventHandler
    method onEntityExplodes (line 103) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockDispensesScriptEvent.java
  class BlockDispensesScriptEvent (line 13) | public class BlockDispensesScriptEvent extends BukkitScriptEvent impleme...
    method BlockDispensesScriptEvent (line 38) | public BlockDispensesScriptEvent() {
    method matches (line 70) | @Override
    method getContext (line 84) | @Override
    method onBlockDispenses (line 94) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockEquipsItemScriptEvent.java
  class BlockEquipsItemScriptEvent (line 14) | public class BlockEquipsItemScriptEvent extends BukkitScriptEvent implem...
    method BlockEquipsItemScriptEvent (line 55) | public BlockEquipsItemScriptEvent() {
    method matches (line 67) | @Override
    method getContext (line 81) | @Override
    method getScriptEntryData (line 91) | @Override
    method onBlockEquipsItemOntoEntity (line 96) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockExplodesScriptEvent.java
  class BlockExplodesScriptEvent (line 17) | public class BlockExplodesScriptEvent extends BukkitScriptEvent implemen...
    method BlockExplodesScriptEvent (line 42) | public BlockExplodesScriptEvent() {
    method matches (line 78) | @Override
    method getContext (line 89) | @Override
    method onBlockExplodes (line 99) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockFadesScriptEvent.java
  class BlockFadesScriptEvent (line 11) | public class BlockFadesScriptEvent extends BukkitScriptEvent implements ...
    method BlockFadesScriptEvent (line 31) | public BlockFadesScriptEvent() {
    method matches (line 39) | @Override
    method getContext (line 50) | @Override
    method onBlockFades (line 59) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockFallsScriptEvent.java
  class BlockFallsScriptEvent (line 13) | public class BlockFallsScriptEvent extends BukkitScriptEvent implements ...
    method BlockFallsScriptEvent (line 35) | public BlockFallsScriptEvent() {
    method matches (line 43) | @Override
    method getContext (line 54) | @Override
    method onBlockFalls (line 65) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockFormsScriptEvent.java
  class BlockFormsScriptEvent (line 11) | public class BlockFormsScriptEvent extends BukkitScriptEvent implements ...
    method BlockFormsScriptEvent (line 31) | public BlockFormsScriptEvent() {
    method matches (line 39) | @Override
    method getContext (line 51) | @Override
    method onBlockForms (line 60) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockGrowsScriptEvent.java
  class BlockGrowsScriptEvent (line 13) | public class BlockGrowsScriptEvent extends BukkitScriptEvent implements ...
    method BlockGrowsScriptEvent (line 34) | public BlockGrowsScriptEvent() {
    method couldMatch (line 43) | @Override
    method matches (line 52) | @Override
    method getContext (line 81) | @Override
    method onBlockGrows (line 90) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockIgnitesScriptEvent.java
  class BlockIgnitesScriptEvent (line 13) | public class BlockIgnitesScriptEvent extends BukkitScriptEvent implement...
    method BlockIgnitesScriptEvent (line 36) | public BlockIgnitesScriptEvent() {
    method matches (line 46) | @Override
    method getContext (line 57) | @Override
    method onBlockIgnites (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockPhysicsScriptEvent.java
  class BlockPhysicsScriptEvent (line 18) | public class BlockPhysicsScriptEvent extends BukkitScriptEvent implement...
    method BlockPhysicsScriptEvent (line 42) | public BlockPhysicsScriptEvent() {
    method matches (line 52) | @Override
    method getContext (line 79) | @Override
    method onBlockPhysics (line 95) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockShearEntityScriptEvent.java
  class BlockShearEntityScriptEvent (line 12) | public class BlockShearEntityScriptEvent extends BukkitScriptEvent imple...
    method BlockShearEntityScriptEvent (line 33) | public BlockShearEntityScriptEvent() {
    method matches (line 41) | @Override
    method getContext (line 55) | @Override
    method onShear (line 65) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BlockSpreadsScriptEvent.java
  class BlockSpreadsScriptEvent (line 12) | public class BlockSpreadsScriptEvent extends BukkitScriptEvent implement...
    method BlockSpreadsScriptEvent (line 35) | public BlockSpreadsScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 59) | @Override
    method getContext (line 74) | @Override
    method onBlockSpreads (line 84) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BrewingStandFueledScriptEvent.java
  class BrewingStandFueledScriptEvent (line 13) | public class BrewingStandFueledScriptEvent extends BukkitScriptEvent imp...
    method BrewingStandFueledScriptEvent (line 39) | public BrewingStandFueledScriptEvent() {
    method matches (line 65) | @Override
    method getContext (line 76) | @Override
    method onBrewingStandFueled (line 87) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BrewingStartsScriptEvent.java
  class BrewingStartsScriptEvent (line 12) | public class BrewingStartsScriptEvent extends BukkitScriptEvent implemen...
    method BrewingStartsScriptEvent (line 34) | public BrewingStartsScriptEvent() {
    method matches (line 43) | @Override
    method getContext (line 51) | @Override
    method onBrewingStart (line 61) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/BrewsScriptEvent.java
  class BrewsScriptEvent (line 14) | public class BrewsScriptEvent extends BukkitScriptEvent implements Liste...
    method BrewsScriptEvent (line 39) | public BrewsScriptEvent() {
    method matches (line 52) | @Override
    method getContext (line 60) | @Override
    method onBrews (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/CauldronLevelChangeScriptEvent.java
  class CauldronLevelChangeScriptEvent (line 15) | public class CauldronLevelChangeScriptEvent extends BukkitScriptEvent im...
    method CauldronLevelChangeScriptEvent (line 42) | public CauldronLevelChangeScriptEvent() {
    method matches (line 77) | @Override
    method getContext (line 102) | @Override
    method onCauldronLevelChange (line 114) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/CrafterCraftsScriptEvent.java
  class CrafterCraftsScriptEvent (line 13) | public class CrafterCraftsScriptEvent extends BukkitScriptEvent implemen...
    method CrafterCraftsScriptEvent (line 37) | public CrafterCraftsScriptEvent() {
    method matches (line 48) | @Override
    method getContext (line 59) | @Override
    method onCrafterCrafts (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/DragonEggMovesScriptEvent.java
  class DragonEggMovesScriptEvent (line 12) | public class DragonEggMovesScriptEvent extends BukkitScriptEvent impleme...
    method DragonEggMovesScriptEvent (line 32) | public DragonEggMovesScriptEvent() {
    method matches (line 40) | @Override
    method getContext (line 48) | @Override
    method onDragonEggMove (line 58) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/FurnaceBurnsItemScriptEvent.java
  class FurnaceBurnsItemScriptEvent (line 13) | public class FurnaceBurnsItemScriptEvent extends BukkitScriptEvent imple...
    method FurnaceBurnsItemScriptEvent (line 36) | public FurnaceBurnsItemScriptEvent() {
    method matches (line 55) | @Override
    method getContext (line 66) | @Override
    method onFurnaceBurns (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/FurnaceStartsSmeltingScriptEvent.java
  class FurnaceStartsSmeltingScriptEvent (line 13) | public class FurnaceStartsSmeltingScriptEvent extends BukkitScriptEvent ...
    method FurnaceStartsSmeltingScriptEvent (line 36) | public FurnaceStartsSmeltingScriptEvent() {
    method matches (line 47) | @Override
    method getContext (line 58) | @Override
    method onFurnaceStartsSmelting (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/LeafDecaysScriptEvent.java
  class LeafDecaysScriptEvent (line 11) | public class LeafDecaysScriptEvent extends BukkitScriptEvent implements ...
    method LeafDecaysScriptEvent (line 32) | public LeafDecaysScriptEvent() {
    method matches (line 41) | @Override
    method getContext (line 53) | @Override
    method onLeafDecays (line 62) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/LiquidLevelChangeScriptEvent.java
  class LiquidLevelChangeScriptEvent (line 11) | public class LiquidLevelChangeScriptEvent extends BukkitScriptEvent impl...
    method LiquidLevelChangeScriptEvent (line 32) | public LiquidLevelChangeScriptEvent() {
    method couldMatch (line 40) | @Override
    method matches (line 51) | @Override
    method getContext (line 63) | @Override
    method onLiquidLevelChange (line 73) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/LiquidSpreadScriptEvent.java
  class LiquidSpreadScriptEvent (line 12) | public class LiquidSpreadScriptEvent extends BukkitScriptEvent implement...
    method LiquidSpreadScriptEvent (line 35) | public LiquidSpreadScriptEvent() {
    method matches (line 45) | @Override
    method getContext (line 56) | @Override
    method onLiquidSpreads (line 66) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/LootDispensesFromBlockScriptEvent.java
  class LootDispensesFromBlockScriptEvent (line 17) | public class LootDispensesFromBlockScriptEvent extends BukkitScriptEvent...
    method LootDispensesFromBlockScriptEvent (line 42) | public LootDispensesFromBlockScriptEvent() {
    method matches (line 57) | @Override
    method getScriptEntryData (line 68) | @Override
    method getContext (line 73) | @Override
    method onLootDispensesFromBlock (line 82) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/MoistureChangeScriptEvent.java
  class MoistureChangeScriptEvent (line 13) | public class MoistureChangeScriptEvent extends BukkitScriptEvent impleme...
    method MoistureChangeScriptEvent (line 43) | public MoistureChangeScriptEvent() {
    method matches (line 53) | @Override
    method getContext (line 67) | @Override
    method onMoistureChange (line 78) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/NoteBlockPlaysNoteScriptEvent.java
  class NoteBlockPlaysNoteScriptEvent (line 15) | public class NoteBlockPlaysNoteScriptEvent extends BukkitScriptEvent imp...
    method NoteBlockPlaysNoteScriptEvent (line 42) | public NoteBlockPlaysNoteScriptEvent() {
    method matches (line 50) | @Override
    method getSound (line 61) | public Sound getSound() {
    method getContext (line 86) | @Override
    method onNotePlay (line 100) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/PistonExtendsScriptEvent.java
  class PistonExtendsScriptEvent (line 13) | public class PistonExtendsScriptEvent extends BukkitScriptEvent implemen...
    method PistonExtendsScriptEvent (line 38) | public PistonExtendsScriptEvent() {
    method matches (line 47) | @Override
    method getContext (line 59) | @Override
    method onPistonExtends (line 73) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/PistonRetractsScriptEvent.java
  class PistonRetractsScriptEvent (line 13) | public class PistonRetractsScriptEvent extends BukkitScriptEvent impleme...
    method PistonRetractsScriptEvent (line 38) | public PistonRetractsScriptEvent() {
    method matches (line 47) | @Override
    method getContext (line 59) | @Override
    method onPistonRetracts (line 73) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/RedstoneScriptEvent.java
  class RedstoneScriptEvent (line 11) | public class RedstoneScriptEvent extends BukkitScriptEvent implements Li...
    method RedstoneScriptEvent (line 35) | public RedstoneScriptEvent() {
    method matches (line 49) | @Override
    method getContext (line 57) | @Override
    method onBlockRedstone (line 67) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/SpongeAbsorbsScriptEvent.java
  class SpongeAbsorbsScriptEvent (line 11) | public class SpongeAbsorbsScriptEvent extends BukkitScriptEvent implemen...
    method SpongeAbsorbsScriptEvent (line 33) | public SpongeAbsorbsScriptEvent() {
    method getContext (line 39) | @Override
    method onSpongeAbsorbEvent (line 48) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/TNTPrimesScriptEvent.java
  class TNTPrimesScriptEvent (line 14) | public class TNTPrimesScriptEvent extends BukkitScriptEvent implements L...
    method TNTPrimesScriptEvent (line 39) | public TNTPrimesScriptEvent() {
    method matches (line 46) | @Override
    method getScriptEntryData (line 54) | @Override
    method getContext (line 59) | @Override
    method onTntPrimesEvent (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/block/VaultDisplaysItemScriptEvent.java
  class VaultDisplaysItemScriptEvent (line 11) | public class VaultDisplaysItemScriptEvent extends BukkitScriptEvent impl...
    method VaultDisplaysItemScriptEvent (line 34) | public VaultDisplaysItemScriptEvent() {
    method matches (line 45) | @Override
    method getContext (line 56) | @Override
    method onVaultDisplayItemEvent (line 65) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/bukkit/ExhaustedNPCEvent.java
  class ExhaustedNPCEvent (line 13) | public class ExhaustedNPCEvent extends NPCEvent implements Cancellable {
    method ExhaustedNPCEvent (line 18) | public ExhaustedNPCEvent(NPC npc) {
    method getHandlers (line 22) | public HandlerList getHandlers() {
    method getHandlerList (line 26) | public static HandlerList getHandlerList() {
    method isCancelled (line 30) | @Override
    method setCancelled (line 35) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/bukkit/SavesReloadEvent.java
  class SavesReloadEvent (line 9) | public class SavesReloadEvent extends Event {
    method getHandlers (line 13) | public HandlerList getHandlers() {
    method getHandlerList (line 17) | public static HandlerList getHandlerList() {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/bukkit/ScriptReloadEvent.java
  class ScriptReloadEvent (line 10) | public class ScriptReloadEvent extends Event {
    method getHandlers (line 14) | public HandlerList getHandlers() {
    method getHandlerList (line 18) | public static HandlerList getHandlerList() {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEffectCloudApplyScriptEvent.java
  class AreaEffectCloudApplyScriptEvent (line 12) | public class AreaEffectCloudApplyScriptEvent extends BukkitScriptEvent i...
    method AreaEffectCloudApplyScriptEvent (line 36) | public AreaEffectCloudApplyScriptEvent() {
    method getContext (line 54) | @Override
    method onAreaEffectCloudApply (line 63) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEnterExitScriptEvent.java
  class AreaEnterExitScriptEvent (line 29) | public class AreaEnterExitScriptEvent extends BukkitScriptEvent implemen...
    method AreaEnterExitScriptEvent (line 54) | public AreaEnterExitScriptEvent() {
    method matches (line 63) | @Override
    method getScriptEntryData (line 84) | @Override
    method getContext (line 89) | @Override
    method registerCorrectClass (line 135) | public void registerCorrectClass() {
    method init (line 139) | @Override
    method cancellationChanged (line 189) | @Override
    method anyMatch (line 203) | public boolean anyMatch(String name, FlaggableObject flaggable) {
    method processSingle (line 225) | public void processSingle(AreaContainmentObject obj, EntityTag entity,...
    method processNewPosition (line 250) | public void processNewPosition(EntityTag entity, Location pos, Event e...
    class SpigotListeners (line 291) | public class SpigotListeners implements Listener {
      method onQuit (line 293) | @EventHandler
      method onJoin (line 299) | @EventHandler
      method onMove (line 304) | @EventHandler
      method onTeleport (line 312) | @EventHandler
      method onTeleport (line 317) | @EventHandler
      method onWorldChange (line 324) | @EventHandler
      method onVehicleMove (line 329) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/CreeperPoweredScriptEvent.java
  class CreeperPoweredScriptEvent (line 12) | public class CreeperPoweredScriptEvent extends BukkitScriptEvent impleme...
    method CreeperPoweredScriptEvent (line 33) | public CreeperPoweredScriptEvent() {
    method matches (line 42) | @Override
    method getContext (line 54) | @Override
    method onCreeperPowered (line 64) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/DragonPhaseChangeScriptEvent.java
  class DragonPhaseChangeScriptEvent (line 12) | public class DragonPhaseChangeScriptEvent extends BukkitScriptEvent impl...
    method DragonPhaseChangeScriptEvent (line 39) | public DragonPhaseChangeScriptEvent() {
    method matches (line 47) | @Override
    method applyDetermination (line 65) | @Override
    method getContext (line 75) | @Override
    method onEnderDragonChangePhase (line 88) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityAirLevelChangeScriptEvent.java
  class EntityAirLevelChangeScriptEvent (line 15) | public class EntityAirLevelChangeScriptEvent extends BukkitScriptEvent i...
    method EntityAirLevelChangeScriptEvent (line 44) | public EntityAirLevelChangeScriptEvent() {
    method matches (line 51) | @Override
    method applyDetermination (line 63) | @Override
    method getScriptEntryData (line 76) | @Override
    method getContext (line 81) | @Override
    method onEntityAirLevelChanged (line 95) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityBreaksHangingScriptEvent.java
  class EntityBreaksHangingScriptEvent (line 17) | public class EntityBreaksHangingScriptEvent extends BukkitScriptEvent im...
    method EntityBreaksHangingScriptEvent (line 42) | public EntityBreaksHangingScriptEvent() {
    method couldMatch (line 54) | @Override
    method matches (line 65) | @Override
    method getScriptEntryData (line 84) | @Override
    method getContext (line 89) | @Override
    method onHangingBreaks (line 100) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityBreedScriptEvent.java
  class EntityBreedScriptEvent (line 13) | public class EntityBreedScriptEvent extends BukkitScriptEvent implements...
    method EntityBreedScriptEvent (line 40) | public EntityBreedScriptEvent() {
    method matches (line 59) | @Override
    method getContext (line 70) | @Override
    method cancellationChanged (line 83) | @Override
    method onEntityBreeds (line 97) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityChangesBlockScriptEvent.java
  class EntityChangesBlockScriptEvent (line 15) | public class EntityChangesBlockScriptEvent extends BukkitScriptEvent imp...
    method EntityChangesBlockScriptEvent (line 39) | public EntityChangesBlockScriptEvent() {
    method matches (line 49) | @Override
    method getScriptEntryData (line 74) | @Override
    method getContext (line 79) | @Override
    method onEntityChangesBlock (line 90) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityChangesPoseScriptEvent.java
  class EntityChangesPoseScriptEvent (line 14) | public class EntityChangesPoseScriptEvent extends BukkitScriptEvent impl...
    method EntityChangesPoseScriptEvent (line 38) | public EntityChangesPoseScriptEvent() {
    method matches (line 47) | @Override
    method getScriptEntryData (line 64) | @Override
    method getContext (line 69) | @Override
    method onPoseChange (line 79) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCombustsScriptEvent.java
  class EntityCombustsScriptEvent (line 18) | public class EntityCombustsScriptEvent extends BukkitScriptEvent impleme...
    method EntityCombustsScriptEvent (line 47) | public EntityCombustsScriptEvent() {
    method matches (line 65) | @Override
    method getScriptEntryData (line 76) | @Override
    method getContext (line 81) | @Override
    method onEntityCombusts (line 103) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java
  class EntityCreatePortalScriptEvent (line 15) | public class EntityCreatePortalScriptEvent extends BukkitScriptEvent imp...
    method EntityCreatePortalScriptEvent (line 38) | public EntityCreatePortalScriptEvent() {
    method matches (line 45) | @Override
    method getScriptEntryData (line 56) | @Override
    method getContext (line 61) | @Override
    method onEntityCreatesPortal (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDamagedScriptEvent.java
  class EntityDamagedScriptEvent (line 25) | public class EntityDamagedScriptEvent extends BukkitScriptEvent implemen...
    method EntityDamagedScriptEvent (line 92) | public EntityDamagedScriptEvent() {
    method couldMatch (line 106) | @Override
    method matches (line 128) | @Override
    method applyDetermination (line 171) | @Override
    method getScriptEntryData (line 190) | @Override
    method calculateWasCritical (line 196) | public boolean calculateWasCritical() {
    method getContext (line 228) | @Override
    method onEntityDamaged (line 274) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDeathScriptEvent.java
  class EntityDeathScriptEvent (line 25) | public class EntityDeathScriptEvent extends BukkitScriptEvent implements...
    method EntityDeathScriptEvent (line 68) | public EntityDeathScriptEvent() {
    method matches (line 79) | @Override
    method applyDetermination (line 97) | @Override
    method getScriptEntryData (line 151) | @Override
    method getContext (line 156) | @Override
    method cancellationChanged (line 176) | @Override
    method onEntityDeath (line 184) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDespawnScriptEvent.java
  class EntityDespawnScriptEvent (line 10) | public class EntityDespawnScriptEvent extends BukkitScriptEvent {
    method EntityDespawnScriptEvent (line 34) | public EntityDespawnScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 59) | @Override
    method getContext (line 64) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDropsItemScriptEvent.java
  class EntityDropsItemScriptEvent (line 16) | public class EntityDropsItemScriptEvent extends BukkitScriptEvent implem...
    method EntityDropsItemScriptEvent (line 40) | public EntityDropsItemScriptEvent() {
    method matches (line 49) | @Override
    method getScriptEntryData (line 64) | @Override
    method getContext (line 69) | @Override
    method onPlayerDropsItem (line 80) | @EventHandler
    method onEntityDropsItem (line 90) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityEntersPortalScriptEvent.java
  class EntityEntersPortalScriptEvent (line 13) | public class EntityEntersPortalScriptEvent extends BukkitScriptEvent imp...
    method EntityEntersPortalScriptEvent (line 35) | public EntityEntersPortalScriptEvent() {
    method matches (line 43) | @Override
    method getScriptEntryData (line 55) | @Override
    method getContext (line 60) | @Override
    method onEntityEntersPortal (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityEntersVehicleScriptEvent.java
  class EntityEntersVehicleScriptEvent (line 15) | public class EntityEntersVehicleScriptEvent extends BukkitScriptEvent im...
    method EntityEntersVehicleScriptEvent (line 40) | public EntityEntersVehicleScriptEvent() {
    method couldMatch (line 49) | @Override
    method matches (line 60) | @Override
    method getScriptEntryData (line 75) | @Override
    method getContext (line 80) | @Override
    method getName (line 89) | @Override
    method fire (line 94) | public void fire(EntityEvent event, Entity vehicle) {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExitsPortalScriptEvent.java
  class EntityExitsPortalScriptEvent (line 13) | public class EntityExitsPortalScriptEvent extends BukkitScriptEvent impl...
    method EntityExitsPortalScriptEvent (line 35) | public EntityExitsPortalScriptEvent() {
    method matches (line 43) | @Override
    method getScriptEntryData (line 55) | @Override
    method getContext (line 60) | @Override
    method onEntityExitsPortal (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExitsVehicleScriptEvent.java
  class EntityExitsVehicleScriptEvent (line 12) | public class EntityExitsVehicleScriptEvent extends BukkitScriptEvent imp...
    method EntityExitsVehicleScriptEvent (line 37) | public EntityExitsVehicleScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 59) | @Override
    method getContext (line 64) | @Override
    method getName (line 73) | @Override
    method fire (line 78) | public void fire(EntityEvent event, Entity vehicle) {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExplodesScriptEvent.java
  class EntityExplodesScriptEvent (line 18) | public class EntityExplodesScriptEvent extends BukkitScriptEvent impleme...
    method EntityExplodesScriptEvent (line 44) | public EntityExplodesScriptEvent() {
    method matches (line 52) | @Override
    method applyDetermination (line 64) | @Override
    method getScriptEntryData (line 87) | @Override
    method getContext (line 92) | @Override
    method onEntityExplodes (line 111) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExplosionPrimesScriptEvent.java
  class EntityExplosionPrimesScriptEvent (line 12) | public class EntityExplosionPrimesScriptEvent extends BukkitScriptEvent ...
    method EntityExplosionPrimesScriptEvent (line 36) | public EntityExplosionPrimesScriptEvent() {
    method matches (line 62) | @Override
    method getContext (line 73) | @Override
    method onEntityExplosionPrimes (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityFoodLevelChangeScriptEvent.java
  class EntityFoodLevelChangeScriptEvent (line 14) | public class EntityFoodLevelChangeScriptEvent extends BukkitScriptEvent ...
    method EntityFoodLevelChangeScriptEvent (line 46) | public EntityFoodLevelChangeScriptEvent() {
    method matches (line 55) | @Override
    method applyDetermination (line 70) | @Override
    method getScriptEntryData (line 79) | @Override
    method getContext (line 84) | @Override
    method onEntityFoodLevelChanged (line 94) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityFormsBlockScriptEvent.java
  class EntityFormsBlockScriptEvent (line 14) | public class EntityFormsBlockScriptEvent extends BukkitScriptEvent imple...
    method EntityFormsBlockScriptEvent (line 36) | public EntityFormsBlockScriptEvent() {
    method matches (line 45) | @Override
    method getScriptEntryData (line 59) | @Override
    method getContext (line 64) | @Override
    method onEntityFormsBlock (line 74) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityGlideScriptEvent.java
  class EntityGlideScriptEvent (line 13) | public class EntityGlideScriptEvent extends BukkitScriptEvent implements...
    method EntityGlideScriptEvent (line 37) | public EntityGlideScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 62) | @Override
    method getContext (line 67) | @Override
    method onEntityToggleGlide (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityGoesIntoBlockScriptEvent.java
  class EntityGoesIntoBlockScriptEvent (line 14) | public class EntityGoesIntoBlockScriptEvent extends BukkitScriptEvent im...
    method EntityGoesIntoBlockScriptEvent (line 36) | public EntityGoesIntoBlockScriptEvent() {
    method matches (line 45) | @Override
    method getScriptEntryData (line 59) | @Override
    method getContext (line 64) | @Override
    method onEntityEntersBlock (line 74) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityHealsScriptEvent.java
  class EntityHealsScriptEvent (line 13) | public class EntityHealsScriptEvent extends BukkitScriptEvent implements...
    method EntityHealsScriptEvent (line 41) | public EntityHealsScriptEvent() {
    method matches (line 49) | @Override
    method applyDetermination (line 63) | @Override
    method getScriptEntryData (line 72) | @Override
    method getContext (line 77) | @Override
    method onEntityHeals (line 90) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityInteractScriptEvent.java
  class EntityInteractScriptEvent (line 14) | public class EntityInteractScriptEvent extends BukkitScriptEvent impleme...
    method EntityInteractScriptEvent (line 34) | public EntityInteractScriptEvent() {
    method matches (line 43) | @Override
    method getScriptEntryData (line 57) | @Override
    method getContext (line 62) | @Override
    method onEntityInteract (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityKilledScriptEvent.java
  class EntityKilledScriptEvent (line 20) | public class EntityKilledScriptEvent extends BukkitScriptEvent implement...
    method EntityKilledScriptEvent (line 56) | public EntityKilledScriptEvent() {
    method matches (line 69) | @Override
    method applyDetermination (line 96) | @Override
    method getScriptEntryData (line 105) | @Override
    method getContext (line 118) | @Override
    method onEntityKilled (line 145) | @EventHandler(priority = EventPriority.HIGH)

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityPicksUpItemScriptEvent.java
  class EntityPicksUpItemScriptEvent (line 18) | public class EntityPicksUpItemScriptEvent extends BukkitScriptEvent impl...
    method EntityPicksUpItemScriptEvent (line 48) | public EntityPicksUpItemScriptEvent() {
    method matches (line 64) | @Override
    method getScriptEntryData (line 78) | @Override
    method getContext (line 83) | @Override
    method onEntityPicksUpItem (line 94) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityPotionEffectScriptEvent.java
  class EntityPotionEffectScriptEvent (line 15) | public class EntityPotionEffectScriptEvent extends BukkitScriptEvent imp...
    method EntityPotionEffectScriptEvent (line 50) | public EntityPotionEffectScriptEvent() {
    method couldMatch (line 59) | @Override
    method matches (line 71) | @Override
    method applyDetermination (line 94) | @Override
    method getScriptEntryData (line 106) | @Override
    method getContext (line 111) | @Override
    method onEntityPotionEffect (line 127) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityResurrectScriptEvent.java
  class EntityResurrectScriptEvent (line 15) | public class EntityResurrectScriptEvent extends BukkitScriptEvent implem...
    method EntityResurrectScriptEvent (line 37) | public EntityResurrectScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 55) | @Override
    method getContext (line 60) | @Override
    method onEntityResurrect (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityShootsBowScriptEvent.java
  class EntityShootsBowScriptEvent (line 25) | public class EntityShootsBowScriptEvent extends BukkitScriptEvent implem...
    method EntityShootsBowScriptEvent (line 58) | public EntityShootsBowScriptEvent() {
    method matches (line 67) | @Override
    method applyDetermination (line 84) | @Override
    method getScriptEntryData (line 126) | @Override
    method getContext (line 131) | @Override
    method cancellationChanged (line 144) | @Override
    method onEntityShootsBow (line 153) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpawnScriptEvent.java
  class EntitySpawnScriptEvent (line 17) | public class EntitySpawnScriptEvent extends BukkitScriptEvent implements...
    method EntitySpawnScriptEvent (line 41) | public EntitySpawnScriptEvent() {
    method couldMatch (line 50) | @Override
    method matches (line 61) | @Override
    method getScriptEntryData (line 75) | @Override
    method getContext (line 80) | @Override
    method onEntitySpawn (line 91) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpawnerSpawnScriptEvent.java
  class EntitySpawnerSpawnScriptEvent (line 14) | public class EntitySpawnerSpawnScriptEvent extends BukkitScriptEvent imp...
    method EntitySpawnerSpawnScriptEvent (line 37) | public EntitySpawnerSpawnScriptEvent() {
    method matches (line 46) | @Override
    method getScriptEntryData (line 60) | @Override
    method getContext (line 65) | @Override
    method onSpawnerSpawn (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpellCastScriptEvent.java
  class EntitySpellCastScriptEvent (line 11) | public class EntitySpellCastScriptEvent extends BukkitScriptEvent implem...
    method EntitySpellCastScriptEvent (line 31) | public EntitySpellCastScriptEvent() {
    method matches (line 38) | @Override
    method getContext (line 52) | @Override
    method onSpellCast (line 61) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySwimScriptEvent.java
  class EntitySwimScriptEvent (line 13) | public class EntitySwimScriptEvent extends BukkitScriptEvent implements ...
    method EntitySwimScriptEvent (line 37) | public EntitySwimScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 62) | @Override
    method getContext (line 67) | @Override
    method onEntityToggleSwim (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTamesScriptEvent.java
  class EntityTamesScriptEvent (line 13) | public class EntityTamesScriptEvent extends BukkitScriptEvent implements...
    method EntityTamesScriptEvent (line 38) | public EntityTamesScriptEvent() {
    method matches (line 47) | @Override
    method getScriptEntryData (line 61) | @Override
    method getContext (line 66) | @Override
    method onEntityTames (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTargetsScriptEvent.java
  class EntityTargetsScriptEvent (line 14) | public class EntityTargetsScriptEvent extends BukkitScriptEvent implemen...
    method EntityTargetsScriptEvent (line 40) | public EntityTargetsScriptEvent() {
    method matches (line 50) | @Override
    method applyDetermination (line 69) | @Override
    method getScriptEntryData (line 79) | @Override
    method getContext (line 84) | @Override
    method onEntityTargets (line 94) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTeleportScriptEvent.java
  class EntityTeleportScriptEvent (line 18) | public class EntityTeleportScriptEvent extends BukkitScriptEvent impleme...
    method EntityTeleportScriptEvent (line 64) | public EntityTeleportScriptEvent() {
    method couldMatch (line 74) | @Override
    method matches (line 85) | @Override
    method applyDetermination (line 99) | @Override
    method getScriptEntryData (line 145) | @Override
    method getContext (line 150) | @Override
    method onEntityTeleports (line 165) | @EventHandler
    method onPlayerTeleports (line 179) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTransformScriptEvent.java
  class EntityTransformScriptEvent (line 13) | public class EntityTransformScriptEvent extends BukkitScriptEvent implem...
    method EntityTransformScriptEvent (line 38) | public EntityTransformScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 55) | @Override
    method getContext (line 72) | @Override
    method onEntityTransform (line 89) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityUnleashedScriptEvent.java
  class EntityUnleashedScriptEvent (line 11) | public class EntityUnleashedScriptEvent extends BukkitScriptEvent implem...
    method EntityUnleashedScriptEvent (line 32) | public EntityUnleashedScriptEvent() {
    method matches (line 40) | @Override
    method getContext (line 54) | @Override
    method onEntityUnleashed (line 65) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/ExperienceBottleBreaksScriptEvent.java
  class ExperienceBottleBreaksScriptEvent (line 12) | public class ExperienceBottleBreaksScriptEvent extends BukkitScriptEvent...
    method ExperienceBottleBreaksScriptEvent (line 39) | public ExperienceBottleBreaksScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 52) | @Override
    method applyDetermination (line 60) | @Override
    method getContext (line 77) | @Override
    method onExperienceBottleBreaks (line 90) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/FireworkBurstsScriptEvent.java
  class FireworkBurstsScriptEvent (line 14) | public class FireworkBurstsScriptEvent extends BukkitScriptEvent impleme...
    method FireworkBurstsScriptEvent (line 37) | public FireworkBurstsScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 52) | @Override
    method getContext (line 60) | @Override
    method onFireworkBursts (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/HangingBreaksScriptEvent.java
  class HangingBreaksScriptEvent (line 14) | public class HangingBreaksScriptEvent extends BukkitScriptEvent implemen...
    method HangingBreaksScriptEvent (line 34) | public HangingBreaksScriptEvent() {
    method matches (line 43) | @Override
    method getScriptEntryData (line 58) | @Override
    method getContext (line 63) | @Override
    method onHangingBreaks (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/HorseJumpsScriptEvent.java
  class HorseJumpsScriptEvent (line 14) | public class HorseJumpsScriptEvent extends BukkitScriptEvent implements ...
    method HorseJumpsScriptEvent (line 39) | public HorseJumpsScriptEvent() {
    method couldMatch (line 47) | @Override
    method matches (line 62) | @Override
    method applyDetermination (line 79) | @Override
    method getContext (line 88) | @Override
    method onHorseJumps (line 101) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/PigZappedScriptEvent.java
  class PigZappedScriptEvent (line 13) | public class PigZappedScriptEvent extends BukkitScriptEvent implements L...
    method PigZappedScriptEvent (line 36) | public PigZappedScriptEvent() {
    method matches (line 45) | @Override
    method getContext (line 53) | @Override
    method getScriptEntryData (line 63) | @Override
    method onPigZapped (line 68) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/PiglinBarterScriptEvent.java
  class PiglinBarterScriptEvent (line 13) | public class PiglinBarterScriptEvent extends BukkitScriptEvent implement...
    method PiglinBarterScriptEvent (line 39) | public PiglinBarterScriptEvent() {
    method matches (line 53) | @Override
    method getContext (line 64) | @Override
    method onBarter (line 80) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/ProjectileHitScriptEvent.java
  class ProjectileHitScriptEvent (line 15) | public class ProjectileHitScriptEvent extends BukkitScriptEvent implemen...
    method ProjectileHitScriptEvent (line 57) | public ProjectileHitScriptEvent() {
    method couldMatch (line 70) | @Override
    method matches (line 90) | @Override
    method getContext (line 129) | @Override
    method getScriptEntryData (line 145) | @Override
    method onProjectileHit (line 150) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/ProjectileLaunchedScriptEvent.java
  class ProjectileLaunchedScriptEvent (line 13) | public class ProjectileLaunchedScriptEvent extends BukkitScriptEvent imp...
    method ProjectileLaunchedScriptEvent (line 36) | public ProjectileLaunchedScriptEvent() {
    method matches (line 46) | @Override
    method getContext (line 60) | @Override
    method onProjectileLaunched (line 73) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/SheepDyedScriptEvent.java
  class SheepDyedScriptEvent (line 13) | public class SheepDyedScriptEvent extends BukkitScriptEvent implements L...
    method SheepDyedScriptEvent (line 38) | public SheepDyedScriptEvent() {
    method matches (line 47) | @Override
    method applyDetermination (line 60) | @Override
    method getContext (line 70) | @Override
    method onSheepDyed (line 81) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/SheepRegrowsScriptEvent.java
  class SheepRegrowsScriptEvent (line 11) | public class SheepRegrowsScriptEvent extends BukkitScriptEvent implement...
    method SheepRegrowsScriptEvent (line 32) | public SheepRegrowsScriptEvent() {
    method couldMatch (line 39) | @Override
    method matches (line 47) | @Override
    method getContext (line 57) | @Override
    method onSheepRegrows (line 65) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/SlimeSplitsScriptEvent.java
  class SlimeSplitsScriptEvent (line 11) | public class SlimeSplitsScriptEvent extends BukkitScriptEvent implements...
    method SlimeSplitsScriptEvent (line 34) | public SlimeSplitsScriptEvent() {
    method matches (line 41) | @Override
    method applyDetermination (line 63) | @Override
    method getContext (line 72) | @Override
    method onSlimeSplits (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerAcquiresTradeScriptEvent.java
  class VillagerAcquiresTradeScriptEvent (line 11) | public class VillagerAcquiresTradeScriptEvent extends BukkitScriptEvent ...
    method VillagerAcquiresTradeScriptEvent (line 35) | public VillagerAcquiresTradeScriptEvent() {
    method couldMatch (line 41) | @Override
    method matches (line 46) | @Override
    method applyDetermination (line 55) | @Override
    method getContext (line 64) | @Override
    method onVillagerAcquiresTrade (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerChangesProfessionScriptEvent.java
  class VillagerChangesProfessionScriptEvent (line 13) | public class VillagerChangesProfessionScriptEvent extends BukkitScriptEv...
    method VillagerChangesProfessionScriptEvent (line 38) | public VillagerChangesProfessionScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 49) | @Override
    method applyDetermination (line 58) | @Override
    method getContext (line 69) | @Override
    method onVillagerChangesProfession (line 82) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerReplenishesTradeScriptEvent.java
  class VillagerReplenishesTradeScriptEvent (line 12) | public class VillagerReplenishesTradeScriptEvent extends BukkitScriptEve...
    method VillagerReplenishesTradeScriptEvent (line 36) | public VillagerReplenishesTradeScriptEvent() {
    method matches (line 43) | @Override
    method applyDetermination (line 52) | @Override
    method getContext (line 65) | @Override
    method onVillagerReplenishesTrade (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/InventoryPicksUpItemScriptEvent.java
  class InventoryPicksUpItemScriptEvent (line 12) | public class InventoryPicksUpItemScriptEvent extends BukkitScriptEvent i...
    method InventoryPicksUpItemScriptEvent (line 33) | public InventoryPicksUpItemScriptEvent() {
    method couldMatch (line 41) | @Override
    method matches (line 52) | @Override
    method getContext (line 66) | @Override
    method onInvPicksUpItem (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/ItemDespawnsScriptEvent.java
  class ItemDespawnsScriptEvent (line 12) | public class ItemDespawnsScriptEvent extends BukkitScriptEvent implement...
    method ItemDespawnsScriptEvent (line 33) | public ItemDespawnsScriptEvent() {
    method matches (line 42) | @Override
    method getContext (line 53) | @Override
    method onItemDespawns (line 63) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/ItemEnchantedScriptEvent.java
  class ItemEnchantedScriptEvent (line 20) | public class ItemEnchantedScriptEvent extends BukkitScriptEvent implemen...
    method ItemEnchantedScriptEvent (line 54) | public ItemEnchantedScriptEvent() {
    method matches (line 67) | @Override
    method applyDetermination (line 90) | @Override
    method getScriptEntryData (line 126) | @Override
    method getContext (line 131) | @Override
    method onItemEnchanted (line 151) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/ItemMergesScriptEvent.java
  class ItemMergesScriptEvent (line 13) | public class ItemMergesScriptEvent extends BukkitScriptEvent implements ...
    method ItemMergesScriptEvent (line 35) | public ItemMergesScriptEvent() {
    method matches (line 44) | @Override
    method getContext (line 55) | @Override
    method onItemMerges (line 66) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/ItemMoveScriptEvent.java
  class ItemMoveScriptEvent (line 11) | public class ItemMoveScriptEvent extends BukkitScriptEvent implements Li...
    method ItemMoveScriptEvent (line 36) | public ItemMoveScriptEvent() {
    method matches (line 46) | @Override
    method applyDetermination (line 63) | @Override
    method getContext (line 73) | @Override
    method onInventoryMoveItemEvent (line 84) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/ItemRecipeFormedScriptEvent.java
  class ItemRecipeFormedScriptEvent (line 21) | public class ItemRecipeFormedScriptEvent extends BukkitScriptEvent imple...
    method ItemRecipeFormedScriptEvent (line 46) | public ItemRecipeFormedScriptEvent() {
    method matches (line 62) | @Override
    method getScriptEntryData (line 70) | @Override
    method getContext (line 75) | @Override
    method cancellationChanged (line 87) | @Override
    method onRecipeFormed (line 95) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/item/ItemSpawnsScriptEvent.java
  class ItemSpawnsScriptEvent (line 13) | public class ItemSpawnsScriptEvent extends BukkitScriptEvent implements ...
    method ItemSpawnsScriptEvent (line 34) | public ItemSpawnsScriptEvent() {
    method matches (line 43) | @Override
    method getContext (line 54) | @Override
    method onItemSpawns (line 64) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/npc/NPCNavigationScriptEvent.java
  class NPCNavigationScriptEvent (line 13) | public class NPCNavigationScriptEvent extends BukkitScriptEvent implemen...
    method NPCNavigationScriptEvent (line 36) | public NPCNavigationScriptEvent() {
    method matches (line 44) | @Override
    method getScriptEntryData (line 58) | @Override
    method navComplete (line 63) | @EventHandler
    method navBegin (line 70) | @EventHandler
    method navCancel (line 77) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/npc/NPCOpensScriptEvent.java
  class NPCOpensScriptEvent (line 15) | public class NPCOpensScriptEvent extends BukkitScriptEvent implements Li...
    method NPCOpensScriptEvent (line 38) | public NPCOpensScriptEvent() {
    method matches (line 46) | @Override
    method getScriptEntryData (line 60) | @Override
    method getContext (line 65) | @Override
    method NPCOpenDoor (line 73) | @EventHandler
    method NPCOpenGate (line 80) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/npc/NPCSpawnScriptEvent.java
  class NPCSpawnScriptEvent (line 14) | public class NPCSpawnScriptEvent extends BukkitScriptEvent implements Li...
    method NPCSpawnScriptEvent (line 39) | public NPCSpawnScriptEvent() {
    method matches (line 48) | @Override
    method getScriptEntryData (line 62) | @Override
    method getContext (line 67) | @Override
    method onNPCSpawn (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/npc/NPCStuckScriptEvent.java
  class NPCStuckScriptEvent (line 14) | public class NPCStuckScriptEvent extends BukkitScriptEvent implements Li...
    method NPCStuckScriptEvent (line 39) | public NPCStuckScriptEvent() {
    method matches (line 50) | @Override
    method getScriptEntryData (line 61) | @Override
    method getContext (line 66) | @Override
    method navStuck (line 74) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/BiomeEnterExitScriptEvent.java
  class BiomeEnterExitScriptEvent (line 17) | public class BiomeEnterExitScriptEvent extends BukkitScriptEvent impleme...
    method BiomeEnterExitScriptEvent (line 45) | public BiomeEnterExitScriptEvent() {
    method couldMatch (line 57) | @Override
    method matches (line 68) | @Override
    method getScriptEntryData (line 90) | @Override
    method getContext (line 95) | @Override
    method onPlayerEntersExitsBiome (line 110) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/BlockDropsItemScriptEvent.java
  class BlockDropsItemScriptEvent (line 17) | public class BlockDropsItemScriptEvent extends BukkitScriptEvent impleme...
    method BlockDropsItemScriptEvent (line 43) | public BlockDropsItemScriptEvent() {
    method couldMatch (line 50) | @Override
    method matches (line 64) | @Override
    method getScriptEntryData (line 88) | @Override
    method getContext (line 93) | @Override
    method onBlockDropsItem (line 110) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/ChatScriptEvent.java
  class ChatScriptEvent (line 29) | public class ChatScriptEvent extends BukkitScriptEvent implements Listen...
    method ChatScriptEvent (line 65) | public ChatScriptEvent() {
    method couldMatch (line 76) | @Override
    method matches (line 84) | @Override
    method init (line 95) | @Override
    method initForPriority (line 100) | @Override
    method clone (line 105) | @Override
    method getFormatText (line 115) | public String getFormatText(FormatScriptContainer formatScript) {
    method applyDetermination (line 121) | @Override
    method getScriptEntryData (line 186) | @Override
    method getMessage (line 191) | public String getMessage() {
    method getFormat (line 195) | public String getFormat() {
    method getContext (line 199) | @Override
    class SyncChatHandler (line 219) | class SyncChatHandler implements Listener {
      method onSyncChat (line 220) | @EventHandler
    class AsyncChatHandler (line 229) | class AsyncChatHandler implements Listener {
      method onAsyncChat (line 230) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/HotbarScrollScriptEvent.java
  class HotbarScrollScriptEvent (line 13) | public class HotbarScrollScriptEvent extends BukkitScriptEvent implement...
    method HotbarScrollScriptEvent (line 39) | public HotbarScrollScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 54) | @Override
    method getScriptEntryData (line 65) | @Override
    method getContext (line 70) | @Override
    method onPlayerScrollsHotbar (line 81) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerAnimatesScriptEvent.java
  class PlayerAnimatesScriptEvent (line 15) | public class PlayerAnimatesScriptEvent extends BukkitScriptEvent impleme...
    method PlayerAnimatesScriptEvent (line 38) | public PlayerAnimatesScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 56) | @Override
    method getScriptEntryData (line 81) | @Override
    method getContext (line 86) | @Override
    method onPlayerAnimates (line 94) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerArmorStandManipulateScriptEvent.java
  class PlayerArmorStandManipulateScriptEvent (line 16) | public class PlayerArmorStandManipulateScriptEvent extends BukkitScriptE...
    method PlayerArmorStandManipulateScriptEvent (line 46) | public PlayerArmorStandManipulateScriptEvent() {
    method matches (line 56) | @Override
    method getScriptEntryData (line 79) | @Override
    method getContext (line 84) | @Override
    method onPlayerManipulatesArmorStand (line 96) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerBreaksBlockScriptEvent.java
  class PlayerBreaksBlockScriptEvent (line 19) | public class PlayerBreaksBlockScriptEvent extends BukkitScriptEvent impl...
    method PlayerBreaksBlockScriptEvent (line 54) | public PlayerBreaksBlockScriptEvent() {
    method couldMatch (line 63) | @Override
    method matches (line 77) | @Override
    method applyDetermination (line 97) | @Override
    method getScriptEntryData (line 123) | @Override
    method getContext (line 128) | @Override
    method onPlayerBreaksBlock (line 143) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerBreaksItemScriptEvent.java
  class PlayerBreaksItemScriptEvent (line 19) | public class PlayerBreaksItemScriptEvent extends BukkitScriptEvent imple...
    method PlayerBreaksItemScriptEvent (line 44) | public PlayerBreaksItemScriptEvent() {
    method couldMatch (line 50) | @Override
    method matches (line 61) | @Override
    method getScriptEntryData (line 72) | @Override
    method getContext (line 77) | @Override
    method cancellationChanged (line 88) | @Override
    method onPlayerItemBreak (line 104) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerChangesGamemodeScriptEvent.java
  class PlayerChangesGamemodeScriptEvent (line 13) | public class PlayerChangesGamemodeScriptEvent extends BukkitScriptEvent ...
    method PlayerChangesGamemodeScriptEvent (line 32) | public PlayerChangesGamemodeScriptEvent() {
    method matches (line 39) | @Override
    method getScriptEntryData (line 50) | @Override
    method getContext (line 55) | @Override
    method onPlayerChangesGamemode (line 63) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerChangesMainHandScriptEvent.java
  class PlayerChangesMainHandScriptEvent (line 13) | public class PlayerChangesMainHandScriptEvent extends BukkitScriptEvent ...
    method PlayerChangesMainHandScriptEvent (line 31) | public PlayerChangesMainHandScriptEvent() {
    method getScriptEntryData (line 37) | @Override
    method getContext (line 42) | @Override
    method onPlayerChangesMainHand (line 52) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerChangesSignScriptEvent.java
  class PlayerChangesSignScriptEvent (line 18) | public class PlayerChangesSignScriptEvent extends BukkitScriptEvent impl...
    method PlayerChangesSignScriptEvent (line 48) | public PlayerChangesSignScriptEvent() {
    method couldMatch (line 57) | @Override
    method matches (line 69) | @Override
    method applyDetermination (line 81) | @Override
    method getScriptEntryData (line 94) | @Override
    method getContext (line 99) | @Override
    method onPlayerChangesSign (line 119) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerChangesWorldScriptEvent.java
  class PlayerChangesWorldScriptEvent (line 14) | public class PlayerChangesWorldScriptEvent extends BukkitScriptEvent imp...
    method PlayerChangesWorldScriptEvent (line 37) | public PlayerChangesWorldScriptEvent() {
    method matches (line 46) | @Override
    method getScriptEntryData (line 72) | @Override
    method getContext (line 77) | @Override
    method onPlayerChangesWorld (line 86) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerChangesXPScriptEvent.java
  class PlayerChangesXPScriptEvent (line 14) | public class PlayerChangesXPScriptEvent extends BukkitScriptEvent implem...
    method PlayerChangesXPScriptEvent (line 40) | public PlayerChangesXPScriptEvent() {
    method couldMatch (line 46) | @Override
    method matches (line 51) | @Override
    method applyDetermination (line 60) | @Override
    method getScriptEntryData (line 69) | @Override
    method getContext (line 74) | @Override
    method cancellationChanged (line 82) | @Override
    method onPlayerChangesXP (line 90) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerClicksBlockScriptEvent.java
  class PlayerClicksBlockScriptEvent (line 20) | public class PlayerClicksBlockScriptEvent extends BukkitScriptEvent impl...
    method PlayerClicksBlockScriptEvent (line 52) | public PlayerClicksBlockScriptEvent() {
    method runUsingCheck (line 64) | private boolean runUsingCheck(ScriptPath path) {
    method couldMatch (line 92) | @Override
    method matches (line 123) | @Override
    method applyDetermination (line 153) | @Override
    method getScriptEntryData (line 159) | @Override
    method getContext (line 164) | @Override
    method cancellationChanged (line 181) | @Override
    method playerClicksBlock (line 186) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerClicksInInventoryScriptEvent.java
  class PlayerClicksInInventoryScriptEvent (line 18) | public class PlayerClicksInInventoryScriptEvent extends BukkitScriptEven...
    method PlayerClicksInInventoryScriptEvent (line 107) | public PlayerClicksInInventoryScriptEvent() {
    method couldMatch (line 122) | @Override
    method matches (line 147) | @Override
    method getScriptEntryData (line 184) | @Override
    method getContext (line 189) | @Override
    method inventoryClickEvent (line 207) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerClosesInvScriptEvent.java
  class PlayerClosesInvScriptEvent (line 16) | public class PlayerClosesInvScriptEvent extends BukkitScriptEvent implem...
    method PlayerClosesInvScriptEvent (line 38) | public PlayerClosesInvScriptEvent() {
    method couldMatch (line 46) | @Override
    method matches (line 57) | @Override
    method getScriptEntryData (line 72) | @Override
    method getContext (line 77) | @Override
    method onPlayerClosesInv (line 85) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerCompletesAdvancementScriptEvent.java
  class PlayerCompletesAdvancementScriptEvent (line 13) | public class PlayerCompletesAdvancementScriptEvent extends BukkitScriptE...
    method PlayerCompletesAdvancementScriptEvent (line 40) | public PlayerCompletesAdvancementScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 50) | @Override
    method getScriptEntryData (line 58) | @Override
    method getContext (line 63) | @Override
    method onPlayerCompletesAdvancement (line 76) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerConsumesScriptEvent.java
  class PlayerConsumesScriptEvent (line 19) | public class PlayerConsumesScriptEvent extends BukkitScriptEvent impleme...
    method PlayerConsumesScriptEvent (line 47) | public PlayerConsumesScriptEvent() {
    method couldMatch (line 54) | @Override
    method matches (line 65) | @Override
    method applyDetermination (line 76) | @Override
    method getScriptEntryData (line 94) | @Override
    method getContext (line 100) | @Override
    method onPlayerConsumes (line 109) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerCraftsItemScriptEvent.java
  class PlayerCraftsItemScriptEvent (line 23) | public class PlayerCraftsItemScriptEvent extends BukkitScriptEvent imple...
    method PlayerCraftsItemScriptEvent (line 52) | public PlayerCraftsItemScriptEvent() {
    method couldMatch (line 59) | @Override
    method matches (line 70) | @Override
    method applyDetermination (line 78) | @Override
    method getScriptEntryData (line 89) | @Override
    method getContext (line 94) | @Override
    method cancellationChanged (line 130) | @Override
    method onCraftItem (line 138) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerDamagesBlockScriptEvent.java
  class PlayerDamagesBlockScriptEvent (line 14) | public class PlayerDamagesBlockScriptEvent extends BukkitScriptEvent imp...
    method PlayerDamagesBlockScriptEvent (line 40) | public PlayerDamagesBlockScriptEvent() {
    method matches (line 49) | @Override
    method applyDetermination (line 63) | @Override
    method getScriptEntryData (line 74) | @Override
    method getContext (line 79) | @Override
    method onPlayerDamagesBlock (line 88) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerDragsInInvScriptEvent.java
  class PlayerDragsInInvScriptEvent (line 23) | public class PlayerDragsInInvScriptEvent extends BukkitScriptEvent imple...
    method PlayerDragsInInvScriptEvent (line 55) | public PlayerDragsInInvScriptEvent() {
    method couldMatch (line 65) | @Override
    method matches (line 70) | @Override
    method getScriptEntryData (line 91) | @Override
    method getContext (line 96) | @Override
    method cancellationChanged (line 123) | @Override
    method onPlayerDragsInInv (line 140) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerEditsBookScriptEvent.java
  class PlayerEditsBookScriptEvent (line 19) | public class PlayerEditsBookScriptEvent extends BukkitScriptEvent implem...
    method PlayerEditsBookScriptEvent (line 49) | public PlayerEditsBookScriptEvent() {
    method matches (line 74) | @Override
    method getScriptEntryData (line 86) | @Override
    method getContext (line 91) | @Override
    method onPlayerEditsBook (line 111) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerEmptiesBucketScriptEvent.java
  class PlayerEmptiesBucketScriptEvent (line 15) | public class PlayerEmptiesBucketScriptEvent extends BukkitScriptEvent im...
    method PlayerEmptiesBucketScriptEvent (line 39) | public PlayerEmptiesBucketScriptEvent() {
    method matches (line 50) | @Override
    method getScriptEntryData (line 59) | @Override
    method getContext (line 64) | @Override
    method onBucketEmpty (line 77) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerEntersBedScriptEvent.java
  class PlayerEntersBedScriptEvent (line 13) | public class PlayerEntersBedScriptEvent extends BukkitScriptEvent implem...
    method PlayerEntersBedScriptEvent (line 36) | public PlayerEntersBedScriptEvent() {
    method couldMatch (line 42) | @Override
    method matches (line 47) | @Override
    method getScriptEntryData (line 55) | @Override
    method getContext (line 60) | @Override
    method onPlayerEntersBed (line 68) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerFillsBucketScriptEvent.java
  class PlayerFillsBucketScriptEvent (line 15) | public class PlayerFillsBucketScriptEvent extends BukkitScriptEvent impl...
    method PlayerFillsBucketScriptEvent (line 39) | public PlayerFillsBucketScriptEvent() {
    method matches (line 51) | @Override
    method getScriptEntryData (line 60) | @Override
    method getContext (line 67) | @Override
    method onBucketFill (line 80) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerFishesScriptEvent.java
  class PlayerFishesScriptEvent (line 19) | public class PlayerFishesScriptEvent extends BukkitScriptEvent implement...
    method PlayerFishesScriptEvent (line 52) | public PlayerFishesScriptEvent() {
    method matches (line 64) | @Override
    method applyDetermination (line 104) | @Override
    method getScriptEntryData (line 125) | @Override
    method getContext (line 133) | @Override
    method onPlayerFishes (line 153) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerFlyingScriptEvent.java
  class PlayerFlyingScriptEvent (line 13) | public class PlayerFlyingScriptEvent extends BukkitScriptEvent implement...
    method PlayerFlyingScriptEvent (line 38) | public PlayerFlyingScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 58) | @Override
    method getScriptEntryData (line 73) | @Override
    method getContext (line 78) | @Override
    method onPlayerFlying (line 86) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerHearsSoundScriptEvent.java
  class PlayerHearsSoundScriptEvent (line 19) | public class PlayerHearsSoundScriptEvent extends BukkitScriptEvent imple...
    method PlayerHearsSoundScriptEvent (line 49) | public PlayerHearsSoundScriptEvent() {
    method matches (line 65) | @Override
    method getScriptEntryData (line 76) | @Override
    method init (line 81) | @Override
    method destroy (line 87) | @Override
    method getContext (line 95) | @Override
    method run (line 110) | public boolean run(Player player, String soundName, String category, b...

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerIncreasesExhaustionLevelScriptEvent.java
  class PlayerIncreasesExhaustionLevelScriptEvent (line 13) | public class PlayerIncreasesExhaustionLevelScriptEvent extends BukkitScr...
    method PlayerIncreasesExhaustionLevelScriptEvent (line 42) | public PlayerIncreasesExhaustionLevelScriptEvent() {
    method matches (line 51) | @Override
    method getContext (line 62) | @Override
    method applyDetermination (line 71) | @Override
    method getScriptEntryData (line 83) | @Override
    method onPlayerIncreasesExhaustionLevel (line 88) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerInputScriptEvent.java
  class PlayerInputScriptEvent (line 13) | public class PlayerInputScriptEvent extends BukkitScriptEvent implements...
    method PlayerInputScriptEvent (line 36) | public PlayerInputScriptEvent() {
    method getScriptEntryData (line 42) | @Override
    method getContext (line 47) | public ObjectTag getContext(String name) {
    method onPlayerInputEvent (line 61) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerItemTakesDamageScriptEvent.java
  class PlayerItemTakesDamageScriptEvent (line 18) | public class PlayerItemTakesDamageScriptEvent extends BukkitScriptEvent ...
    method PlayerItemTakesDamageScriptEvent (line 48) | public PlayerItemTakesDamageScriptEvent() {
    method matches (line 56) | @Override
    method getContext (line 67) | @Override
    method applyDetermination (line 77) | @Override
    method getScriptEntryData (line 86) | @Override
    method cancellationChanged (line 91) | @Override
    method onPlayerItemTakesDamage (line 100) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerJoinsScriptEvent.java
  class PlayerJoinsScriptEvent (line 14) | public class PlayerJoinsScriptEvent extends BukkitScriptEvent implements...
    method PlayerJoinsScriptEvent (line 40) | public PlayerJoinsScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 50) | @Override
    method applyDetermination (line 58) | @Override
    method getScriptEntryData (line 72) | @Override
    method getContext (line 77) | @Override
    method onPlayerJoins (line 85) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerJumpScriptEvent.java
  class PlayerJumpScriptEvent (line 14) | public class PlayerJumpScriptEvent extends BukkitScriptEvent implements ...
    method PlayerJumpScriptEvent (line 35) | public PlayerJumpScriptEvent() {
    method matches (line 43) | @Override
    method getScriptEntryData (line 51) | @Override
    method getContext (line 56) | @Override
    class PlayerJumpsSpigotScriptEventImpl (line 64) | public static class PlayerJumpsSpigotScriptEventImpl extends PlayerJum...
      method onPlayerJumps (line 66) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerKickedScriptEvent.java
  class PlayerKickedScriptEvent (line 17) | public class PlayerKickedScriptEvent extends BukkitScriptEvent implement...
    method PlayerKickedScriptEvent (line 43) | public PlayerKickedScriptEvent() {
    method isFlying (line 50) | public boolean isFlying() {
    method matches (line 54) | @Override
    method applyDetermination (line 62) | @Override
    method getScriptEntryData (line 87) | @Override
    method getContext (line 92) | @Override
    method onPlayerKicked (line 105) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerLeashesEntityScriptEvent.java
  class PlayerLeashesEntityScriptEvent (line 13) | public class PlayerLeashesEntityScriptEvent extends BukkitScriptEvent im...
    method PlayerLeashesEntityScriptEvent (line 38) | public PlayerLeashesEntityScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 56) | @Override
    method getScriptEntryData (line 67) | @Override
    method getContext (line 72) | @Override
    method onPlayerLeashes (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerLeavesBedScriptEvent.java
  class PlayerLeavesBedScriptEvent (line 13) | public class PlayerLeavesBedScriptEvent extends BukkitScriptEvent implem...
    method PlayerLeavesBedScriptEvent (line 36) | public PlayerLeavesBedScriptEvent() {
    method couldMatch (line 42) | @Override
    method matches (line 47) | @Override
    method getScriptEntryData (line 55) | @Override
    method getContext (line 60) | @Override
    method onPlayerLeavesBed (line 68) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerLevelsUpScriptEvent.java
  class PlayerLevelsUpScriptEvent (line 14) | public class PlayerLevelsUpScriptEvent extends BukkitScriptEvent impleme...
    method PlayerLevelsUpScriptEvent (line 34) | public PlayerLevelsUpScriptEvent() {
    method matches (line 43) | @Override
    method getScriptEntryData (line 66) | @Override
    method getContext (line 71) | @Override
    method onPlayerLevels (line 82) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerLocaleChangeScriptEvent.java
  class PlayerLocaleChangeScriptEvent (line 12) | public class PlayerLocaleChangeScriptEvent extends BukkitScriptEvent imp...
    method PlayerLocaleChangeScriptEvent (line 31) | public PlayerLocaleChangeScriptEvent() {
    method couldMatch (line 36) | @Override
    method getScriptEntryData (line 41) | @Override
    method getContext (line 46) | @Override
    method onPlayerLocaleChange (line 54) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerLoginScriptEvent.java
  class PlayerLoginScriptEvent (line 15) | public class PlayerLoginScriptEvent extends BukkitScriptEvent implements...
    method PlayerLoginScriptEvent (line 42) | public PlayerLoginScriptEvent() {
    method couldMatch (line 47) | @Override
    method matches (line 53) | @Override
    method applyDetermination (line 61) | @Override
    method getScriptEntryData (line 74) | @Override
    method getContext (line 79) | @Override
    method onPlayerLogin (line 88) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerMendsItemScriptEvent.java
  class PlayerMendsItemScriptEvent (line 16) | public class PlayerMendsItemScriptEvent extends BukkitScriptEvent implem...
    method PlayerMendsItemScriptEvent (line 44) | public PlayerMendsItemScriptEvent() {
    method matches (line 52) | @Override
    method getContext (line 63) | @Override
    method applyDetermination (line 74) | @Override
    method getScriptEntryData (line 83) | @Override
    method onPlayerItemMend (line 88) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerOpensInvScriptEvent.java
  class PlayerOpensInvScriptEvent (line 14) | public class PlayerOpensInvScriptEvent extends BukkitScriptEvent impleme...
    method PlayerOpensInvScriptEvent (line 36) | public PlayerOpensInvScriptEvent() {
    method couldMatch (line 43) | @Override
    method matches (line 54) | @Override
    method getScriptEntryData (line 69) | @Override
    method getContext (line 75) | @Override
    method onPlayerOpensInv (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPickupArrowScriptEvent.java
  class PlayerPickupArrowScriptEvent (line 13) | public class PlayerPickupArrowScriptEvent extends BukkitScriptEvent impl...
    method PlayerPickupArrowScriptEvent (line 37) | public PlayerPickupArrowScriptEvent() {
    method couldMatch (line 43) | @Override
    method matches (line 51) | @Override
    method getScriptEntryData (line 59) | @Override
    method getContext (line 64) | @Override
    method onPlayerConsumes (line 75) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPlacesBlockScriptEvent.java
  class PlayerPlacesBlockScriptEvent (line 16) | public class PlayerPlacesBlockScriptEvent extends BukkitScriptEvent impl...
    method PlayerPlacesBlockScriptEvent (line 61) | public PlayerPlacesBlockScriptEvent() {
    method matches (line 72) | @Override
    method getScriptEntryData (line 93) | @Override
    method getContext (line 98) | @Override
    method onPlayerPlacesBlock (line 111) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPlacesHangingScriptEvent.java
  class PlayerPlacesHangingScriptEvent (line 15) | public class PlayerPlacesHangingScriptEvent extends BukkitScriptEvent im...
    method PlayerPlacesHangingScriptEvent (line 40) | public PlayerPlacesHangingScriptEvent() {
    method matches (line 50) | @Override
    method getScriptEntryData (line 65) | @Override
    method getContext (line 70) | @Override
    method onPlayerPlacesHanging (line 80) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPreLoginScriptEvent.java
  class PlayerPreLoginScriptEvent (line 25) | public class PlayerPreLoginScriptEvent extends BukkitScriptEvent impleme...
    method PlayerPreLoginScriptEvent (line 55) | public PlayerPreLoginScriptEvent() {
    method couldMatch (line 62) | @Override
    method matches (line 67) | @Override
    method applyDetermination (line 72) | @Override
    method getScriptEntryData (line 92) | @Override
    method getContext (line 97) | @Override
    method needsToWait (line 110) | public boolean needsToWait() {
    method onPlayerLogin (line 128) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPreparesAnvilCraftScriptEvent.java
  class PlayerPreparesAnvilCraftScriptEvent (line 17) | public class PlayerPreparesAnvilCraftScriptEvent extends BukkitScriptEve...
    method PlayerPreparesAnvilCraftScriptEvent (line 46) | public PlayerPreparesAnvilCraftScriptEvent() {
    method couldMatch (line 53) | @Override
    method matches (line 64) | @Override
    method applyDetermination (line 72) | @Override
    method getScriptEntryData (line 87) | @Override
    method getContext (line 92) | @Override
    method onCraftItem (line 107) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPreparesEnchantScriptEvent.java
  class PlayerPreparesEnchantScriptEvent (line 18) | public class PlayerPreparesEnchantScriptEvent extends BukkitScriptEvent ...
    method PlayerPreparesEnchantScriptEvent (line 44) | public PlayerPreparesEnchantScriptEvent() {
    method couldMatch (line 49) | @Override
    method matches (line 60) | @Override
    method applyDetermination (line 68) | @Override
    method getScriptEntryData (line 98) | @Override
    method getContext (line 103) | @Override
    method onEnchantItem (line 131) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPreparesSmithingTableScriptEvent.java
  class PlayerPreparesSmithingTableScriptEvent (line 16) | public class PlayerPreparesSmithingTableScriptEvent extends BukkitScript...
    method PlayerPreparesSmithingTableScriptEvent (line 42) | public PlayerPreparesSmithingTableScriptEvent() {
    method couldMatch (line 49) | @Override
    method matches (line 60) | @Override
    method applyDetermination (line 68) | @Override
    method getScriptEntryData (line 79) | @Override
    method getContext (line 84) | @Override
    method onCraftItem (line 95) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerQuitsScriptEvent.java
  class PlayerQuitsScriptEvent (line 14) | public class PlayerQuitsScriptEvent extends BukkitScriptEvent implements...
    method PlayerQuitsScriptEvent (line 43) | public PlayerQuitsScriptEvent() {
    method matches (line 56) | @Override
    method getScriptEntryData (line 64) | @Override
    method getContext (line 69) | @Override
    method onPlayerQuits (line 77) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerRaiseLowerItemScriptEvent.java
  class PlayerRaiseLowerItemScriptEvent (line 26) | public class PlayerRaiseLowerItemScriptEvent extends BukkitScriptEvent i...
    method PlayerRaiseLowerItemScriptEvent (line 58) | public PlayerRaiseLowerItemScriptEvent() {
    method matches (line 70) | @Override
    method getScriptEntryData (line 91) | @Override
    method getContext (line 96) | @Override
    method init (line 107) | @Override
    method run (line 113) | public void run(Player pl, String reason) {
    method signalDidRaise (line 125) | public static void signalDidRaise(Player player) {
    method signalDidLower (line 133) | public static void signalDidLower(Player player, String reason) {
    method onPlayerQuit (line 141) | @EventHandler
    method onPlayerDeath (line 146) | @EventHandler
    method onPlayerSwapHandItems (line 151) | @EventHandler
    class PlayerRaiseLowerItemScriptEventSpigotImpl (line 156) | public static class PlayerRaiseLowerItemScriptEventSpigotImpl extends ...
      method onPlayerDropItem (line 158) | @EventHandler
      method onPlayerChangeHeldItem (line 163) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerReceivesActionbarScriptEvent.java
  class PlayerReceivesActionbarScriptEvent (line 3) | public class PlayerReceivesActionbarScriptEvent extends PlayerReceivesMe...
    method PlayerReceivesActionbarScriptEvent (line 31) | public PlayerReceivesActionbarScriptEvent() {
    method couldMatch (line 37) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerReceivesCommandsScriptEvent.java
  class PlayerReceivesCommandsScriptEvent (line 13) | public class PlayerReceivesCommandsScriptEvent extends BukkitScriptEvent...
    method PlayerReceivesCommandsScriptEvent (line 35) | public PlayerReceivesCommandsScriptEvent() {
    method couldMatch (line 40) | @Override
    method applyDetermination (line 45) | @Override
    method getScriptEntryData (line 56) | @Override
    method getContext (line 61) | @Override
    method onPlayerCommandSend (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerReceivesMessageScriptEvent.java
  class PlayerReceivesMessageScriptEvent (line 15) | public class PlayerReceivesMessageScriptEvent extends BukkitScriptEvent {
    method PlayerReceivesMessageScriptEvent (line 44) | public PlayerReceivesMessageScriptEvent() {
    method reset (line 58) | public void reset() {
    method couldMatch (line 69) | @Override
    method init (line 74) | @Override
    method destroy (line 80) | @Override
    method applyDetermination (line 85) | @Override
    method getScriptEntryData (line 107) | @Override
    method getContext (line 112) | @Override
    method triggerNow (line 126) | public PlayerReceivesMessageScriptEvent triggerNow() {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerReceivesPacketScriptEvent.java
  class PlayerReceivesPacketScriptEvent (line 14) | public class PlayerReceivesPacketScriptEvent extends BukkitScriptEvent {
    method PlayerReceivesPacketScriptEvent (line 38) | public PlayerReceivesPacketScriptEvent() {
    method matches (line 50) | @Override
    method init (line 58) | @Override
    method getContext (line 64) | @Override
    method getScriptEntryData (line 73) | @Override
    method fireFor (line 78) | public static boolean fireFor(Player player, Object packet) {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerReceivesTablistUpdateScriptEvent.java
  class PlayerReceivesTablistUpdateScriptEvent (line 16) | public class PlayerReceivesTablistUpdateScriptEvent extends BukkitScript...
    method PlayerReceivesTablistUpdateScriptEvent (line 55) | public PlayerReceivesTablistUpdateScriptEvent() {
    class TabPacketData (line 63) | public static class TabPacketData {
      method TabPacketData (line 65) | public TabPacketData(String mode, UUID id, boolean isListed, String ...
    method init (line 94) | @Override
    method cancellationChanged (line 100) | @Override
    method matches (line 110) | @Override
    method applyDetermination (line 121) | @Override
    method getScriptEntryData (line 175) | @Override
    method getContext (line 180) | @Override
    method fire (line 195) | public static void fire(Player player, TabPacketData data) {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerRecipeDiscoverScriptEvent.java
  class PlayerRecipeDiscoverScriptEvent (line 12) | public class PlayerRecipeDiscoverScriptEvent extends BukkitScriptEvent i...
    method PlayerRecipeDiscoverScriptEvent (line 33) | public PlayerRecipeDiscoverScriptEvent() {
    method matches (line 39) | @Override
    method getScriptEntryData (line 47) | @Override
    method getContext (line 52) | @Override
    method onPlayerDiscoversRecipe (line 60) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerRespawnsScriptEvent.java
  class PlayerRespawnsScriptEvent (line 15) | public class PlayerRespawnsScriptEvent extends BukkitScriptEvent impleme...
    method PlayerRespawnsScriptEvent (line 37) | public PlayerRespawnsScriptEvent() {
    method matches (line 44) | @Override
    method applyDetermination (line 56) | @Override
    method getScriptEntryData (line 69) | @Override
    method getContext (line 74) | @Override
    method onPlayerRespawns (line 85) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerRightClicksEntityScriptEvent.java
  class PlayerRightClicksEntityScriptEvent (line 19) | public class PlayerRightClicksEntityScriptEvent extends BukkitScriptEven...
    method PlayerRightClicksEntityScriptEvent (line 51) | public PlayerRightClicksEntityScriptEvent() {
    method matches (line 56) | @Override
    method getScriptEntryData (line 78) | @Override
    method getContext (line 83) | @Override
    method playerRightClicksAtEntity (line 101) | @EventHandler
    method playerRightClicksEntity (line 106) | @EventHandler
    method playerRightClicksEntityHandler (line 114) | public void playerRightClicksEntityHandler(PlayerInteractEntityEvent e...

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerRiptideScriptEvent.java
  class PlayerRiptideScriptEvent (line 13) | public class PlayerRiptideScriptEvent extends BukkitScriptEvent implemen...
    method PlayerRiptideScriptEvent (line 36) | public PlayerRiptideScriptEvent() {
    method couldMatch (line 42) | @Override
    method matches (line 47) | @Override
    method getScriptEntryData (line 55) | @Override
    method getContext (line 60) | @Override
    method onPlayerRiptide (line 68) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSendPacketScriptEvent.java
  class PlayerSendPacketScriptEvent (line 14) | public class PlayerSendPacketScriptEvent extends BukkitScriptEvent {
    method PlayerSendPacketScriptEvent (line 38) | public PlayerSendPacketScriptEvent() {
    method matches (line 50) | @Override
    method init (line 58) | @Override
    method getContext (line 64) | @Override
    method getScriptEntryData (line 73) | @Override
    method fireFor (line 78) | public static boolean fireFor(Player player, Object packet) {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerShearsScriptEvent.java
  class PlayerShearsScriptEvent (line 15) | public class PlayerShearsScriptEvent extends BukkitScriptEvent implement...
    method PlayerShearsScriptEvent (line 37) | public PlayerShearsScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 56) | @Override
    method getScriptEntryData (line 76) | @Override
    method getContext (line 81) | @Override
    method onPlayerShears (line 89) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSmithsItemScriptEvent.java
  class PlayerSmithsItemScriptEvent (line 17) | public class PlayerSmithsItemScriptEvent extends BukkitScriptEvent imple...
    method PlayerSmithsItemScriptEvent (line 43) | public PlayerSmithsItemScriptEvent() {
    method couldMatch (line 50) | @Override
    method matches (line 61) | @Override
    method applyDetermination (line 69) | @Override
    method getScriptEntryData (line 80) | @Override
    method getContext (line 85) | @Override
    method onCraftItem (line 96) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSneakScriptEvent.java
  class PlayerSneakScriptEvent (line 13) | public class PlayerSneakScriptEvent extends BukkitScriptEvent implements...
    method PlayerSneakScriptEvent (line 34) | public PlayerSneakScriptEvent() {
    method matches (line 41) | @Override
    method getScriptEntryData (line 56) | @Override
    method getContext (line 61) | @Override
    method onPlayerSneak (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSprintScriptEvent.java
  class PlayerSprintScriptEvent (line 13) | public class PlayerSprintScriptEvent extends BukkitScriptEvent implement...
    method PlayerSprintScriptEvent (line 34) | public PlayerSprintScriptEvent() {
    method matches (line 41) | @Override
    method getScriptEntryData (line 56) | @Override
    method getContext (line 61) | @Override
    method onPlayerSprint (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerStandsOnScriptEvent.java
  class PlayerStandsOnScriptEvent (line 15) | public class PlayerStandsOnScriptEvent extends BukkitScriptEvent impleme...
    method PlayerStandsOnScriptEvent (line 37) | public PlayerStandsOnScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 55) | @Override
    method getScriptEntryData (line 67) | @Override
    method getContext (line 72) | @Override
    method playerStandsOn (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerStatisticIncrementsScriptEvent.java
  class PlayerStatisticIncrementsScriptEvent (line 16) | public class PlayerStatisticIncrementsScriptEvent extends BukkitScriptEv...
    method PlayerStatisticIncrementsScriptEvent (line 39) | public PlayerStatisticIncrementsScriptEvent() {
    method couldMatch (line 47) | @Override
    method matches (line 60) | @Override
    method getScriptEntryData (line 71) | @Override
    method getContext (line 76) | @Override
    method onPlayerStatisticIncrements (line 97) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSteersEntityScriptEvent.java
  class PlayerSteersEntityScriptEvent (line 17) | public class PlayerSteersEntityScriptEvent extends BukkitScriptEvent {
    method PlayerSteersEntityScriptEvent (line 47) | public PlayerSteersEntityScriptEvent() {
    method cancellationChanged (line 61) | @Override
    method couldMatch (line 66) | @Override
    method matches (line 80) | @Override
    method init (line 92) | @Override
    method getScriptEntryData (line 98) | @Override
    method getContext (line 103) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerStepsOnScriptEvent.java
  class PlayerStepsOnScriptEvent (line 15) | public class PlayerStepsOnScriptEvent extends BukkitScriptEvent implemen...
    method PlayerStepsOnScriptEvent (line 41) | public PlayerStepsOnScriptEvent() {
    method matches (line 49) | @Override
    method getScriptEntryData (line 60) | @Override
    method getContext (line 65) | @Override
    method onPlayerStepsOn (line 75) | @EventHandler
    method onPlayerTeleport (line 96) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerStopsDamagingBlockScriptEvent.java
  class PlayerStopsDamagingBlockScriptEvent (line 15) | public class PlayerStopsDamagingBlockScriptEvent extends BukkitScriptEve...
    method PlayerStopsDamagingBlockScriptEvent (line 49) | public PlayerStopsDamagingBlockScriptEvent() {
    method matches (line 54) | @Override
    method getScriptEntryData (line 68) | @Override
    method getContext (line 73) | @Override
    method playerStopsDamagingBlockEvent (line 82) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSwapsItemsScriptEvent.java
  class PlayerSwapsItemsScriptEvent (line 15) | public class PlayerSwapsItemsScriptEvent extends BukkitScriptEvent imple...
    method PlayerSwapsItemsScriptEvent (line 44) | public PlayerSwapsItemsScriptEvent() {
    method couldMatch (line 50) | @Override
    method matches (line 55) | @Override
    method applyDetermination (line 66) | @Override
    method getScriptEntryData (line 83) | @Override
    method getContext (line 88) | @Override
    method playerSwapsItems (line 99) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerTakesFromFurnaceScriptEvent.java
  class PlayerTakesFromFurnaceScriptEvent (line 15) | public class PlayerTakesFromFurnaceScriptEvent extends BukkitScriptEvent...
    method PlayerTakesFromFurnaceScriptEvent (line 40) | public PlayerTakesFromFurnaceScriptEvent() {
    method couldMatch (line 47) | @Override
    method matches (line 58) | @Override
    method applyDetermination (line 69) | @Override
    method getScriptEntryData (line 79) | @Override
    method getContext (line 84) | @Override
    method onPlayerTakesFromFurnace (line 95) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerTakesFromLecternScriptEvent.java
  class PlayerTakesFromLecternScriptEvent (line 15) | public class PlayerTakesFromLecternScriptEvent extends BukkitScriptEvent...
    method PlayerTakesFromLecternScriptEvent (line 40) | public PlayerTakesFromLecternScriptEvent() {
    method couldMatch (line 47) | @Override
    method matches (line 58) | @Override
    method getScriptEntryData (line 69) | @Override
    method getContext (line 74) | @Override
    method onPlayerTakesFromLectern (line 85) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerThrowsEggScriptEvent.java
  class PlayerThrowsEggScriptEvent (line 15) | public class PlayerThrowsEggScriptEvent extends BukkitScriptEvent implem...
    method PlayerThrowsEggScriptEvent (line 40) | public PlayerThrowsEggScriptEvent() {
    method matches (line 47) | @Override
    method applyDetermination (line 62) | @Override
    method getScriptEntryData (line 74) | @Override
    method getContext (line 79) | @Override
    method cancellationChanged (line 90) | @Override
    method onPlayerThrowsEgg (line 95) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerTriggersRaidScriptEvent.java
  class PlayerTriggersRaidScriptEvent (line 10) | public class PlayerTriggersRaidScriptEvent extends RaidScriptEvent<RaidT...
    method PlayerTriggersRaidScriptEvent (line 31) | public PlayerTriggersRaidScriptEvent() {
    method matches (line 36) | @Override
    method getScriptEntryData (line 44) | @Override
    method onPlayerTriggersRaid (line 49) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerUsesPortalScriptEvent.java
  class PlayerUsesPortalScriptEvent (line 15) | public class PlayerUsesPortalScriptEvent extends BukkitScriptEvent imple...
    method PlayerUsesPortalScriptEvent (line 49) | public PlayerUsesPortalScriptEvent() {
    method matches (line 59) | @Override
    method applyDetermination (line 73) | @Override
    method getScriptEntryData (line 98) | @Override
    method getContext (line 103) | @Override
    method onPlayerEntersPortal (line 115) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerWalkScriptEvent.java
  class PlayerWalkScriptEvent (line 13) | public class PlayerWalkScriptEvent extends BukkitScriptEvent implements ...
    method PlayerWalkScriptEvent (line 39) | public PlayerWalkScriptEvent() {
    method couldMatch (line 47) | @Override
    method matches (line 52) | @Override
    method getScriptEntryData (line 63) | @Override
    method getContext (line 68) | @Override
    method onPlayerMoves (line 79) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerWalksOverScriptEvent.java
  class PlayerWalksOverScriptEvent (line 16) | public class PlayerWalksOverScriptEvent extends BukkitScriptEvent implem...
    method PlayerWalksOverScriptEvent (line 38) | public PlayerWalksOverScriptEvent() {
    method matches (line 46) | @Override
    method getScriptEntryData (line 56) | @Override
    method getContext (line 61) | @Override
    method onPlayerWalksOver (line 69) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/player/ResourcePackStatusScriptEvent.java
  class ResourcePackStatusScriptEvent (line 11) | public class ResourcePackStatusScriptEvent extends BukkitScriptEvent {
    method ResourcePackStatusScriptEvent (line 30) | public ResourcePackStatusScriptEvent() {
    method matches (line 41) | @Override
    method init (line 49) | @Override
    method getContext (line 55) | @Override
    method getScriptEntryData (line 63) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/server/CommandScriptEvent.java
  class CommandScriptEvent (line 25) | public class CommandScriptEvent extends BukkitScriptEvent implements Lis...
    method CommandScriptEvent (line 57) | public CommandScriptEvent() {
    method matches (line 69) | @Override
    method getScriptEntryData (line 80) | @Override
    method cleanMessageArgs (line 85) | public String cleanMessageArgs() {
    method applyDetermination (line 89) | @Override
    method getContext (line 103) | @Override
    method onPlayerEvent (line 129) | @EventHandler
    method cancellationChanged (line 140) | @Override
    method onServerEvent (line 148) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/server/InternalEventScriptEvent.java
  class InternalEventScriptEvent (line 21) | public class InternalEventScriptEvent extends BukkitScriptEvent implemen...
    method InternalEventScriptEvent (line 39) | public InternalEventScriptEvent() {
    method couldMatch (line 45) | @Override
    method matches (line 56) | @Override
    method getContext (line 64) | @Override
    method destroy (line 114) | @Override
    method init (line 124) | @Override
    method initForPriority (line 166) | public void initForPriority(EventPriority priority, InternalEventScrip...
    method onEventHappens (line 178) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/server/ListPingScriptEvent.java
  class ListPingScriptEvent (line 24) | public class ListPingScriptEvent extends BukkitScriptEvent implements Li...
    method ListPingScriptEvent (line 55) | public ListPingScriptEvent() {
    method setMotd (line 111) | public void setMotd(String text) {
    method getContext (line 115) | @Override
    method syncFire (line 127) | public void syncFire(ServerListPingEvent event) {
    class ListPingScriptEventSpigotImpl (line 146) | public static class ListPingScriptEventSpigotImpl extends ListPingScri...
      method onListPing (line 148) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java
  class ServerPrestartScriptEvent (line 7) | public class ServerPrestartScriptEvent extends BukkitScriptEvent {
    method ServerPrestartScriptEvent (line 25) | public ServerPrestartScriptEvent() {
    method specialHackRunEvent (line 32) | public void specialHackRunEvent() {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/server/ServerStartScriptEvent.java
  class ServerStartScriptEvent (line 5) | public class ServerStartScriptEvent extends BukkitScriptEvent {
    method ServerStartScriptEvent (line 17) | public ServerStartScriptEvent() {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/server/TabCompleteScriptEvent.java
  class TabCompleteScriptEvent (line 16) | public class TabCompleteScriptEvent extends BukkitScriptEvent implements...
    method TabCompleteScriptEvent (line 44) | public TabCompleteScriptEvent() {
    method matches (line 51) | @Override
    method getCommand (line 59) | public String getCommand() {
    method getCurrentArg (line 68) | public String getCurrentArg() {
    method applyDetermination (line 73) | @Override
    method getScriptEntryData (line 83) | @Override
    method getContext (line 88) | @Override
    method onTabComplete (line 105) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/vehicle/VehicleCollidesBlockScriptEvent.java
  class VehicleCollidesBlockScriptEvent (line 12) | public class VehicleCollidesBlockScriptEvent extends BukkitScriptEvent i...
    method VehicleCollidesBlockScriptEvent (line 35) | public VehicleCollidesBlockScriptEvent() {
    method couldMatch (line 44) | @Override
    method matches (line 58) | @Override
    method getContext (line 72) | @Override
    method onVehicleCollidesBlock (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/vehicle/VehicleCollidesEntityScriptEvent.java
  class VehicleCollidesEntityScriptEvent (line 14) | public class VehicleCollidesEntityScriptEvent extends BukkitScriptEvent ...
    method VehicleCollidesEntityScriptEvent (line 58) | public VehicleCollidesEntityScriptEvent() {
    method matches (line 67) | @Override
    method applyDetermination (line 84) | @Override
    method getScriptEntryData (line 96) | @Override
    method getContext (line 101) | @Override
    method onVehicleCollidesEntity (line 111) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/vehicle/VehicleCreatedScriptEvent.java
  class VehicleCreatedScriptEvent (line 11) | public class VehicleCreatedScriptEvent extends BukkitScriptEvent impleme...
    method VehicleCreatedScriptEvent (line 33) | public VehicleCreatedScriptEvent() {
    method couldMatch (line 39) | @Override
    method matches (line 50) | @Override
    method getContext (line 63) | @Override
    method onVehicleCreated (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/vehicle/VehicleDamagedScriptEvent.java
  class VehicleDamagedScriptEvent (line 13) | public class VehicleDamagedScriptEvent extends BukkitScriptEvent impleme...
    method VehicleDamagedScriptEvent (line 56) | public VehicleDamagedScriptEvent() {
    method couldMatch (line 66) | @Override
    method matches (line 80) | @Override
    method applyDetermination (line 97) | @Override
    method getScriptEntryData (line 106) | @Override
    method getContext (line 111) | @Override
    method onVehicleDestroyed (line 125) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/vehicle/VehicleDestroyedScriptEvent.java
  class VehicleDestroyedScriptEvent (line 12) | public class VehicleDestroyedScriptEvent extends BukkitScriptEvent imple...
    method VehicleDestroyedScriptEvent (line 43) | public VehicleDestroyedScriptEvent() {
    method couldMatch (line 50) | @Override
    method matches (line 75) | @Override
    method getScriptEntryData (line 92) | @Override
    method getContext (line 97) | @Override
    method onVehicleDestroyed (line 108) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/vehicle/VehicleMoveScriptEvent.java
  class VehicleMoveScriptEvent (line 11) | public class VehicleMoveScriptEvent extends BukkitScriptEvent implements...
    method VehicleMoveScriptEvent (line 35) | public VehicleMoveScriptEvent() {
    method couldMatch (line 43) | @Override
    method matches (line 54) | @Override
    method getContext (line 67) | @Override
    method onVehicleMove (line 80) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/ChunkLoadEntitiesScriptEvent.java
  class ChunkLoadEntitiesScriptEvent (line 13) | public class ChunkLoadEntitiesScriptEvent extends BukkitScriptEvent impl...
    method ChunkLoadEntitiesScriptEvent (line 36) | public ChunkLoadEntitiesScriptEvent() {
    method matches (line 45) | @Override
    method getContext (line 69) | @Override
    method onChunkLoad (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/ChunkLoadScriptEvent.java
  class ChunkLoadScriptEvent (line 10) | public class ChunkLoadScriptEvent extends BukkitScriptEvent implements L...
    method ChunkLoadScriptEvent (line 30) | public ChunkLoadScriptEvent() {
    method matches (line 38) | @Override
    method getContext (line 49) | @Override
    method onChunkLoad (line 57) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/ChunkUnloadEntitiesScriptEvent.java
  class ChunkUnloadEntitiesScriptEvent (line 13) | public class ChunkUnloadEntitiesScriptEvent extends BukkitScriptEvent im...
    method ChunkUnloadEntitiesScriptEvent (line 36) | public ChunkUnloadEntitiesScriptEvent() {
    method matches (line 45) | @Override
    method getContext (line 69) | @Override
    method onChunkLoad (line 83) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/ChunkUnloadScriptEvent.java
  class ChunkUnloadScriptEvent (line 10) | public class ChunkUnloadScriptEvent extends BukkitScriptEvent implements...
    method ChunkUnloadScriptEvent (line 31) | public ChunkUnloadScriptEvent() {
    method matches (line 39) | @Override
    method getContext (line 47) | @Override
    method onChunkUnload (line 55) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/GenericGameEventScriptEvent.java
  class GenericGameEventScriptEvent (line 14) | public class GenericGameEventScriptEvent extends BukkitScriptEvent imple...
    method GenericGameEventScriptEvent (line 38) | public GenericGameEventScriptEvent() {
    method matches (line 46) | @Override
    method getScriptEntryData (line 60) | @Override
    method getContext (line 65) | @Override
    method onGenericGameEvent (line 80) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/LightningStrikesScriptEvent.java
  class LightningStrikesScriptEvent (line 11) | public class LightningStrikesScriptEvent extends BukkitScriptEvent imple...
    method LightningStrikesScriptEvent (line 31) | public LightningStrikesScriptEvent() {
    method matches (line 38) | @Override
    method getContext (line 46) | @Override
    method onLightningStrikes (line 57) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/LingeringPotionSplashScriptEvent.java
  class LingeringPotionSplashScriptEvent (line 14) | public class LingeringPotionSplashScriptEvent extends BukkitScriptEvent ...
    method LingeringPotionSplashScriptEvent (line 39) | public LingeringPotionSplashScriptEvent() {
    method matches (line 47) | @Override
    method getContext (line 58) | @Override
    method onLingeringPotionSplash (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/LootGenerateScriptEvent.java
  class LootGenerateScriptEvent (line 20) | public class LootGenerateScriptEvent extends BukkitScriptEvent implement...
    method LootGenerateScriptEvent (line 49) | public LootGenerateScriptEvent() {
    method matches (line 56) | @Override
    method getScriptEntryData (line 69) | @Override
    method applyDetermination (line 74) | @Override
    method getContext (line 92) | @Override
    method onLootGenerate (line 113) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/PortalCreateScriptEvent.java
  class PortalCreateScriptEvent (line 15) | public class PortalCreateScriptEvent extends BukkitScriptEvent implement...
    method PortalCreateScriptEvent (line 37) | public PortalCreateScriptEvent() {
    method matches (line 44) | @Override
    method getContext (line 55) | @Override
    method onPortalCreate (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/PotionSplashScriptEvent.java
  class PotionSplashScriptEvent (line 23) | public class PotionSplashScriptEvent extends BukkitScriptEvent implement...
    method PotionSplashScriptEvent (line 56) | public PotionSplashScriptEvent() {
    method matches (line 64) | @Override
    method getContext (line 76) | @Override
    method applyDetermination (line 100) | @Override
    method onPotionSplash (line 130) | @EventHandler
    method intensityToMap (line 138) | public MapTag intensityToMap(LivingEntity entity) {

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/RaidFinishesScriptEvent.java
  class RaidFinishesScriptEvent (line 11) | public class RaidFinishesScriptEvent extends RaidScriptEvent<RaidFinishE...
    method RaidFinishesScriptEvent (line 29) | public RaidFinishesScriptEvent() {
    method getContext (line 34) | @Override
    method onRaidFinishes (line 47) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/RaidScriptEvent.java
  class RaidScriptEvent (line 18) | public class RaidScriptEvent<T extends RaidEvent> extends BukkitScriptEv...
    method RaidScriptEvent (line 42) | public RaidScriptEvent(boolean checkRaidLocation) {
    method getRaidMap (line 48) | public static MapTag getRaidMap(Raid raid) {
    method matches (line 71) | @Override
    method getContext (line 79) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/RaidSpawnsWaveScriptEvent.java
  class RaidSpawnsWaveScriptEvent (line 11) | public class RaidSpawnsWaveScriptEvent extends RaidScriptEvent<RaidSpawn...
    method RaidSpawnsWaveScriptEvent (line 30) | public RaidSpawnsWaveScriptEvent() {
    method getContext (line 35) | @Override
    method onRaidSpawnsWave (line 50) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/RaidStopsScriptEvent.java
  class RaidStopsScriptEvent (line 9) | public class RaidStopsScriptEvent extends RaidScriptEvent<RaidStopEvent>...
    method RaidStopsScriptEvent (line 29) | public RaidStopsScriptEvent() {
    method matches (line 35) | @Override
    method getContext (line 43) | @Override
    method onRaidStops (line 52) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/SpawnChangeScriptEvent.java
  class SpawnChangeScriptEvent (line 11) | public class SpawnChangeScriptEvent extends BukkitScriptEvent implements...
    method SpawnChangeScriptEvent (line 30) | public SpawnChangeScriptEvent() {
    method matches (line 37) | @Override
    method getContext (line 45) | @Override
    method onSpawnChange (line 55) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/StructureGrowsScriptEvent.java
  class StructureGrowsScriptEvent (line 18) | public class StructureGrowsScriptEvent extends BukkitScriptEvent impleme...
    method StructureGrowsScriptEvent (line 44) | public StructureGrowsScriptEvent() {
    method couldMatch (line 51) | @Override
    method matches (line 63) | @Override
    method getScriptEntryData (line 81) | @Override
    method getContext (line 86) | @Override
    method onStructureGrow (line 111) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/ThunderChangesScriptEvent.java
  class ThunderChangesScriptEvent (line 11) | public class ThunderChangesScriptEvent extends BukkitScriptEvent impleme...
    method ThunderChangesScriptEvent (line 31) | public ThunderChangesScriptEvent() {
    method matches (line 38) | @Override
    method getContext (line 60) | @Override
    method onThunderChanges (line 71) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/TimeChangeScriptEvent.java
  class TimeChangeScriptEvent (line 9) | public class TimeChangeScriptEvent extends BukkitScriptEvent implements ...
    method TimeChangeScriptEvent (line 26) | public TimeChangeScriptEvent() {
    method matches (line 38) | @Override
    method getContext (line 50) | @Override

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/WeatherChangesScriptEvent.java
  class WeatherChangesScriptEvent (line 11) | public class WeatherChangesScriptEvent extends BukkitScriptEvent impleme...
    method WeatherChangesScriptEvent (line 29) | public WeatherChangesScriptEvent() {
    method matches (line 37) | @Override
    method getContext (line 49) | @Override
    method onWeatherChanges (line 60) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/WorldInitsScriptEvent.java
  class WorldInitsScriptEvent (line 10) | public class WorldInitsScriptEvent extends BukkitScriptEvent implements ...
    method WorldInitsScriptEvent (line 25) | public WorldInitsScriptEvent() {
    method matches (line 32) | @Override
    method getContext (line 40) | @Override
    method onWorldInits (line 48) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/WorldLoadsScriptEvent.java
  class WorldLoadsScriptEvent (line 10) | public class WorldLoadsScriptEvent extends BukkitScriptEvent implements ...
    method WorldLoadsScriptEvent (line 25) | public WorldLoadsScriptEvent() {
    method couldMatch (line 32) | @Override
    method matches (line 43) | @Override
    method getContext (line 51) | @Override
    method onWorldLoads (line 59) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/WorldSavesScriptEvent.java
  class WorldSavesScriptEvent (line 10) | public class WorldSavesScriptEvent extends BukkitScriptEvent implements ...
    method WorldSavesScriptEvent (line 25) | public WorldSavesScriptEvent() {
    method matches (line 32) | @Override
    method getContext (line 40) | @Override
    method onWorldSaves (line 48) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/events/world/WorldUnloadsScriptEvent.java
  class WorldUnloadsScriptEvent (line 10) | public class WorldUnloadsScriptEvent extends BukkitScriptEvent implement...
    method WorldUnloadsScriptEvent (line 27) | public WorldUnloadsScriptEvent() {
    method couldMatch (line 34) | @Override
    method matches (line 45) | @Override
    method getContext (line 53) | @Override
    method onWorldUnloads (line 61) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/NMSHandler.java
  class NMSHandler (line 22) | public abstract class NMSHandler {
    method initialize (line 44) | public static boolean initialize(JavaPlugin plugin) {
    method getInstance (line 68) | public static NMSHandler getInstance() {
    method getVersion (line 72) | public static NMSVersion getVersion() {
    method getJavaPlugin (line 76) | public static JavaPlugin getJavaPlugin() {
    method isExactServerVersionMatch (line 93) | public boolean isExactServerVersionMatch() {
    method disableAsyncCatcher (line 97) | public abstract void disableAsyncCatcher();
    method undisableAsyncCatcher (line 99) | public abstract void undisableAsyncCatcher();
    method createSidebar (line 101) | public abstract Sidebar createSidebar(Player player);
    method createBlockLight (line 103) | public abstract BlockLight createBlockLight(Location location, int lig...
    method fillPlayerProfile (line 105) | public abstract PlayerProfile fillPlayerProfile(PlayerProfile playerPr...
    method getPlayerProfile (line 107) | public abstract PlayerProfile getPlayerProfile(Player player);
    method getProfileEditor (line 109) | public abstract ProfileEditor getProfileEditor();
    method getBiomes (line 111) | public List<BiomeNMS> getBiomes(World world) {
    method getBiomeNMS (line 115) | public abstract BiomeNMS getBiomeNMS(World world, NamespacedKey key);
    method getBiomeAt (line 117) | public BiomeNMS getBiomeAt(Block block) {
    method getRecentTps (line 121) | public abstract double[] getRecentTps();
    method getTitle (line 123) | public abstract String getTitle(Inventory inventory);
    method setInventoryTitle (line 125) | public void setInventoryTitle(InventoryView view, String title) {
    method containerListFlags (line 129) | public abstract ArrayList<String> containerListFlags(PersistentDataCon...
    method containerHas (line 131) | public abstract boolean containerHas(PersistentDataContainer container...
    method containerGetString (line 133) | public abstract String containerGetString(PersistentDataContainer cont...
    method getBossbarUUID (line 135) | public UUID getBossbarUUID(BossBar bar) {
    method setBossbarUUID (line 139) | public void setBossbarUUID(BossBar bar, UUID id) {
    method updateLegacyName (line 142) | public String updateLegacyName(Class<?> type, String legacyName) {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/NMSVersion.java
  type NMSVersion (line 3) | public enum NMSVersion {
    method NMSVersion (line 15) | NMSVersion(String minecraftVersion) {
    method isAtLeast (line 19) | public boolean isAtLeast(NMSVersion version) {
    method isAtMost (line 23) | public boolean isAtMost(NMSVersion version) {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/AnimationHelper.java
  class AnimationHelper (line 15) | public abstract class AnimationHelper {
    method register (line 45) | protected void register(String name, EntityAnimation animation) {
    method hasEntityAnimation (line 49) | public boolean hasEntityAnimation(String name) {
    method getEntityAnimation (line 53) | public EntityAnimation getEntityAnimation(String name) {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/BiomeNMS.java
  class BiomeNMS (line 13) | public abstract class BiomeNMS {
    method BiomeNMS (line 19) | public BiomeNMS(World world, NamespacedKey key) {
    method getKey (line 24) | public NamespacedKey getKey() {
    method getDownfallType (line 28) | public DownfallType getDownfallType() {
    method getDownfallTypeAt (line 35) | public DownfallType getDownfallTypeAt(Location location) {
    method getHumidity (line 39) | public abstract float getHumidity();
    method getBaseTemperature (line 41) | public abstract float getBaseTemperature();
    method getTemperatureAt (line 43) | public float getTemperatureAt(Location location) {
    method hasDownfall (line 47) | public boolean hasDownfall() {
    method getAllEntities (line 51) | public List<EntityType> getAllEntities() {
    method getAmbientEntities (line 60) | public abstract List<EntityType> getAmbientEntities();
    method getCreatureEntities (line 62) | public abstract List<EntityType> getCreatureEntities();
    method getMonsterEntities (line 64) | public abstract List<EntityType> getMonsterEntities();
    method getWaterEntities (line 66) | public abstract List<EntityType> getWaterEntities();
    method getFoliageColor (line 68) | public abstract int getFoliageColor();
    method setHumidity (line 70) | public abstract void setHumidity(float humidity);
    method setBaseTemperature (line 72) | public abstract void setBaseTemperature(float temperature);
    method setPrecipitation (line 74) | public void setPrecipitation(DownfallType type) {
    method setHasDownfall (line 78) | public void setHasDownfall(boolean hasDownfall) {
    type DownfallType (line 82) | public enum DownfallType {
    method setFoliageColor (line 86) | public abstract void setFoliageColor(int color);
    method getFogColor (line 88) | public int getFogColor() {
    method setFogColor (line 92) | public void setFogColor(int color) {
    method getWaterFogColor (line 96) | public int getWaterFogColor() {
    method setWaterFogColor (line 100) | public void setWaterFogColor(int color) {
    method setTo (line 104) | public abstract void setTo(Block block);
    method getColor (line 106) | public ColorTag getColor(int x, int y) {
    method clampColor (line 123) | public float clampColor(float n) {
    method scaleColor (line 133) | private ColorTag scaleColor(ColorTag color, float scale) {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/BlockLight.java
  class BlockLight (line 17) | public abstract class BlockLight {
    method getChunk (line 32) | public Chunk getChunk() {
    method BlockLight (line 37) | protected BlockLight(Location location, long ticks) {
    method removeLater (line 49) | public void removeLater(long ticks) {
    method removeLight (line 61) | public static void removeLight(Location location) {
    method reset (line 83) | public void reset(boolean updateChunk) {
    method update (line 87) | public abstract void update(int lightLevel, boolean updateChunk);

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/ImprovedOfflinePlayer.java
  class ImprovedOfflinePlayer (line 57) | public abstract class ImprovedOfflinePlayer {
    method invalidateNow (line 59) | public static void invalidateNow(UUID id) {
    method markModified (line 85) | public void markModified() {
    method ImprovedOfflinePlayer (line 108) | public ImprovedOfflinePlayer(UUID playeruuid) {
    method modifyAbilities (line 113) | private void modifyAbilities(UnaryOperator<CompoundBinaryTag> editor) {
    method getBukkitData (line 119) | public CompoundBinaryTag getBukkitData() {
    method getName (line 123) | public String getName() {
    method getInventory (line 128) | public abstract PlayerInventory getInventory();
    method setInventory (line 130) | public abstract void setInventory(PlayerInventory inventory);
    method getEnderChest (line 132) | public abstract Inventory getEnderChest();
    method setEnderChest (line 134) | public abstract void setEnderChest(Inventory inventory);
    method getLocation (line 136) | public Location getLocation() {
    method setLocation (line 150) | public void setLocation(Location location) {
    method getHealthFloat (line 169) | public float getHealthFloat() {
    method setHealthFloat (line 173) | public void setHealthFloat(float input) {
    method getMaxHealth (line 178) | public abstract double getMaxHealth();
    method setMaxHealth (line 180) | public abstract void setMaxHealth(double input);
    method loadPlayerData (line 182) | protected abstract boolean loadPlayerData(UUID uuid);
    method saveToFile (line 184) | public void saveToFile() {
    method saveInternal (line 191) | public abstract void saveInternal(CompoundBinaryTag compound);
    method exists (line 193) | public boolean exists() {
    method getAbsorptionAmount (line 197) | public float getAbsorptionAmount() {
    method setAbsorptionAmount (line 201) | public void setAbsorptionAmount(float input) {
    method setBedSpawnLocation (line 206) | public void setBedSpawnLocation(Location location) {
    method isSpawnForced (line 227) | public boolean isSpawnForced() {
    method setSpawnForced (line 231) | public void setSpawnForced(boolean spawnForced) {
    method getExhaustion (line 236) | public float getExhaustion() {
    method setExhaustion (line 240) | public void setExhaustion(float input) {
    method getExp (line 245) | public float getExp() {
    method setExp (line 249) | public void setExp(float input) {
    method getFallDistance (line 254) | public float getFallDistance() {
    method setFallDistance (line 258) | public void setFallDistance(float input) {
    method getFireTicks (line 263) | public int getFireTicks() {
    method setFireTicks (line 267) | public void setFireTicks(int input) {
    method getFlySpeed (line 272) | public float getFlySpeed() {
    method setFlySpeed (line 276) | public void setFlySpeed(float speed) {
    method getFoodLevel (line 280) | public int getFoodLevel() {
    method setFoodLevel (line 284) | public void setFoodLevel(int input) {
    method getGameMode (line 289) | public GameMode getGameMode() {
    method setGameMode (line 293) | public void setGameMode(GameMode input) {
    method getIsOnGround (line 298) | public boolean getIsOnGround() {
    method setIsOnGround (line 302) | public void setIsOnGround(boolean input) {
    method getItemInHand (line 307) | public int getItemInHand() {
    method setItemInHand (line 311) | public void setItemInHand(int input) {
    method getLevel (line 316) | public int getLevel() {
    method setLevel (line 320) | public void setLevel(int input) {
    method getUniqueId (line 325) | public UUID getUniqueId() {
    method getRemainingAir (line 329) | public int getRemainingAir() {
    method setRemainingAir (line 333) | public void setRemainingAir(int input) {
    method getSaturation (line 338) | public float getSaturation() {
    method setSaturation (line 342) | public void setSaturation(float input) {
    method getScore (line 347) | public float getScore() {
    method setScore (line 351) | public void setScore(int input) {
    method getTimeAttack (line 356) | public short getTimeAttack() {
    method setTimeAttack (line 360) | public void setTimeAttack(short input) {
    method getTimeDeath (line 365) | public short getTimeDeath() {
    method setTimeDeath (line 369) | public void setTimeDeath(short input) {
    method getTimeHurt (line 374) | public short getTimeHurt() {
    method setTimeHurt (line 378) | public void setTimeHurt(short input) {
    method getTimeSleep (line 383) | public short getTimeSleep() {
    method setTimeSleep (line 387) | public void setTimeSleep(short input) {
    method getTotalExperience (line 392) | public int getTotalExperience() {
    method setTotalExperience (line 396) | public void setTotalExperience(int input) {
    method getVelocity (line 401) | public Vector getVelocity() {
    method setVelocity (line 406) | public void setVelocity(Vector vector) {
    method getWalkSpeed (line 415) | public float getWalkSpeed() {
    method setWalkSpeed (line 419) | public void setWalkSpeed(float speed) {
    method getAllowFlight (line 423) | public boolean getAllowFlight() {
    method setAllowFlight (line 427) | public void setAllowFlight(boolean allow) {
    method setLastDeathLocation (line 431) | public void setLastDeathLocation(Location deathLoc) {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/ProfileEditor.java
  class ProfileEditor (line 17) | public abstract class ProfileEditor {
    method ProfileEditor (line 26) | public ProfileEditor() {
    method setPlayerName (line 30) | public void setPlayerName(Player player, String name) {
    method getPlayerName (line 37) | public String getPlayerName(Player player) {
    method setPlayerSkin (line 41) | public void setPlayerSkin(Player player, String name) {
    method setPlayerSkinBlob (line 90) | public void setPlayerSkinBlob(Player player, String blob) {
    method getPlayerSkinBlob (line 99) | public String getPlayerSkinBlob(Player player) {
    method updatePlayer (line 104) | protected abstract void updatePlayer(Player player, boolean isSkinChan...
    method getFakeProfile (line 106) | private PlayerProfile getFakeProfile(Player player, boolean createCach...
    class PlayerProfileEditorListener (line 120) | private static class PlayerProfileEditorListener implements Listener {
      method onPlayerQuit (line 121) | @EventHandler

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/Sidebar.java
  class Sidebar (line 11) | public abstract class Sidebar {
    class SidebarLine (line 13) | public static class SidebarLine {
      method SidebarLine (line 15) | public SidebarLine(String _text, int _score) {
    method Sidebar (line 43) | public Sidebar(Player player) {
    method getIds (line 48) | public String[] getIds() {
    method getTitle (line 53) | public String getTitle() {
    method getLines (line 57) | public List<SidebarLine> getLines() {
    method getLinesText (line 65) | public List<String> getLinesText() {
    method getScores (line 69) | public int[] getScores() {
    method setTitle (line 73) | public final void setTitle(String title) {
    method setDisplayName (line 80) | protected abstract void setDisplayName(String title);
    method setLines (line 82) | public void setLines(List<SidebarLine> lines) {
    method sendUpdate (line 95) | public abstract void sendUpdate();
    method remove (line 97) | public abstract void remove();

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/enums/CustomEntityType.java
  type CustomEntityType (line 3) | public enum CustomEntityType {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/AdvancementHelper.java
  class AdvancementHelper (line 8) | public abstract class AdvancementHelper {
    method getAdvancement (line 10) | public static org.bukkit.advancement.Advancement getAdvancement(String...
    method register (line 14) | public abstract void register(Advancement advancement);
    method unregister (line 16) | public abstract void unregister(Advancement advancement);
    method grantPartial (line 18) | public void grantPartial(Advancement advancement, Player player, int l...
    method grant (line 22) | public abstract void grant(Advancement advancement, Player player);
    method revokePartial (line 24) | public void revokePartial(Advancement advancement, Player player, int ...
    method revoke (line 28) | public abstract void revoke(Advancement advancement, Player player);
    method update (line 30) | public abstract void update(Player player);

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/BlockHelper.java
  type BlockHelper (line 13) | public interface BlockHelper {
    method applyPhysics (line 16) | void applyPhysics(Location location);
    method getPlayerProfile (line 18) | PlayerProfile getPlayerProfile(Skull skull);
    method setPlayerProfile (line 20) | void setPlayerProfile(Skull skull, PlayerProfile playerProfile);
    method getNbtData (line 22) | CompoundBinaryTag getNbtData(Block block);
    method setNbtData (line 24) | void setNbtData(Block block, CompoundBinaryTag compoundTag);
    method setBlockResistance (line 26) | boolean setBlockResistance(Material material, float resistance);
    method getBlockResistance (line 28) | float getBlockResistance(Material material);
    type PistonPushReaction (line 30) | enum PistonPushReaction {
    method getPushReaction (line 35) | default PistonPushReaction getPushReaction(Material mat) { // TODO: on...
    method setPushReaction (line 39) | void setPushReaction(Material mat, PistonPushReaction reaction);
    method getBlockStrength (line 41) | float getBlockStrength(Material mat);
    method setBlockStrength (line 43) | void setBlockStrength(Material mat, float strength);
    method getMaterialNameFromBlockData (line 45) | static String getMaterialNameFromBlockData(String text) {
    method parseBlockData (line 57) | default BlockData parseBlockData(String text) {
    method makeBlockStateRaw (line 68) | default void makeBlockStateRaw(BlockState state) {}
    method doRandomTick (line 70) | void doRandomTick(Location location);
    method getInstrumentFor (line 72) | Instrument getInstrumentFor(Material mat);
    method ringBell (line 74) | default void ringBell(Bell bell) { /// TODO: once minimum version is 1...
    method getExpDrop (line 78) | int getExpDrop(Block block, ItemStack item);
    method setSpawnerCustomRules (line 80) | default void setSpawnerCustomRules(CreatureSpawner spawner, int skyMin...
    method setSpawnerSpawnedType (line 84) | default void setSpawnerSpawnedType(CreatureSpawner spawner, EntityTag ...
    method getMapColor (line 88) | default Color getMapColor(Block block) { // TODO: once 1.20 is the min...
    method setVanillaTags (line 92) | default void setVanillaTags(Material material, Set<NamespacedKey> tags...

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/ChunkHelper.java
  type ChunkHelper (line 7) | public interface ChunkHelper {
    method refreshChunkSections (line 9) | default void refreshChunkSections(Chunk chunk) {
    method getHeightMap (line 13) | int[] getHeightMap(Chunk chunk);
    method changeChunkServerThread (line 15) | default void changeChunkServerThread(World world) {
    method restoreServerThread (line 19) | default void restoreServerThread(World world) {
    method setAllBiomes (line 23) | default void setAllBiomes(Chunk chunk, BiomeNMS biome) {

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/CustomEntity.java
  type CustomEntity (line 5) | public interface CustomEntity extends Entity {
    method getEntityTypeName (line 7) | String getEntityTypeName();

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/CustomEntityHelper.java
  type CustomEntityHelper (line 6) | public interface CustomEntityHelper {
    method spawnFakeArrow (line 8) | FakeArrow spawnFakeArrow(Location location);
    method spawnItemProjectile (line 10) | ItemProjectile spawnItemProjectile(Location location, ItemStack itemSt...
    method spawnFakePlayer (line 12) | FakePlayer spawnFakePlayer(Location location, String name, String skin...

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EnchantmentHelper.java
  class EnchantmentHelper (line 8) | public class EnchantmentHelper {
    method registerFakeEnchantment (line 10) | public Enchantment registerFakeEnchantment(EnchantmentScriptContainer....
    method getRarity (line 14) | public String getRarity(Enchantment enchantment) {
    method isDiscoverable (line 18) | public boolean isDiscoverable(Enchantment enchantment) {
    method isTradable (line 22) | public boolean isTradable(Enchantment enchantment) {
    method isCurse (line 26) | public boolean isCurse(Enchantment enchantment) {
    method getMinCost (line 30) | public int getMinCost(Enchantment enchantment, int level) {
    method getMaxCost (line 34) | public int getMaxCost(Enchantment enchantment, int level) {
    method getFullName (line 38) | public String getFullName(Enchantment enchantment, int level) {
    method getDamageBonus (line 42) | public float getDamageBonus(Enchantment enchantment, int level, String...
    method getDamageProtection (line 46) | public int getDamageProtection(Enchantment enchantment, int level, Ent...

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EntityAnimation.java
  type EntityAnimation (line 5) | public interface EntityAnimation {
    method play (line 7) | void play(Entity entity);

FILE: plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/EntityHelper.java
  class EntityHelper (line 29) | public abstract class EntityHelper {
    method getBlockHeight (line 36) | public int getBlockHeight(Art art) {
    method getBlockWidth (line 41) | public int getBlockWidth(Art art) {
    method setInvisible (line 45) | public abstract void setInvisible(Entity entity, boolean invisible);
    method isInvisible (line 47) | public abstract boolean isInvisible(Entity entity);
    method setPose (line 49) | public abstract void setPose(Entity entity, Pose pose);
    method setSneaking (line 51) | public void setSneaking(Entity entity, boolean sneak) {
    method getDamageTo (line 58) | public abstract double getDamageTo(LivingEntity attacker, Entity target);
    method setRiptide (line 60) | public abstract void setRiptide(Entity entity, boolean state);
    method forceInteraction (line 62) | public abstract void forceInteraction(Player player, Location location);
    method getNbtData (line 64) | public abstract CompoundBinaryTag getNbtData(Entity entity);
    method setNbtData (line 66) | public abstract void setNbtData(Entity entity, CompoundBinaryTag compo...
    method stopFollowing (line 68) | public abstract void stopFollowing(Entity follower);
    method stopWalking (line 70) | public abstract void stopWalking(Entity entity);
    method follow (line 72) | public abstract void follow(final Entity target, final Entity follower...
    method walkTo (line 75) | public abstract void walkTo(final LivingEntity entity, Location locati...
    method sendHidePacket (line 77) | public abstract void sendHidePacket(Player pl, Entity entity);
    method sendShowPacket (line 79) | public abstract void sendShowPacket(Player pl, Entity entity);
    method rotate (line 88) | public abstract void rotate(Entity entity, float yaw, float pitch);
    method getBaseYaw (line 90) | public abstract float getBaseYaw(LivingEntity entity);
    method look (line 93) | public abstract void look(Entity entity, float yaw, float pitch);
    method mapTrace (line 95) | public MapTag mapTrace(LivingEntity inputEntity) {
    method canTrace (line 195) | public abstract boolean canTrace(World world, Vector start, Vector end);
    method faceLocation (line 197) | public Location faceLocation(Location from, Location at) {
    method internalLook (line 205) | public boolean internalLook(Player player, Location at) {
    method faceLocation (line 215) | public void faceLocation(Entity from, Location at) {
    method isFacingLocation (line 230) | public boolean isFacingLocation(Location from, Location at, float yawL...
    method isFacingLocation (line 256) | public boolean isFacingLocation(Location from, Location at, float degr...
    method isFacingLocation (line 275) | public boolean isFacingLocation(Entity from, Location at, float degree...
    method isFacingEntity (line 289) | public boolean isFacingEntity(Entity from, Entity at, float degreeLimi...
    method normalizeYaw (line 300) | public static float normalizeYaw(float yaw) {
    method getYaw (line 316) | public float getYaw(Vector vector) {
    method getCardinal (line 343) | public String getCardinal(float yaw) {
    method snapPositionTo (line 378) | public abstract void snapPositionTo(Entity entity, Vector vector);
    method move (line 380) | public abstract void move(Entity entity, Vector vector);
    method fakeMove (line 382) | public void fakeMove(Entity entity, Vector vector) {
    method fakeTeleport (line 386) | public void fakeTeleport(Entity entity, Location location) {
    method clientResetLoc (line 390) | public void clientResetLoc(Entity entity) {
    method teleport (line 394) | public abstract void teleport(Entity entity, Location loc);
    method setBoundingBox (line 396) | public abstract void setBoundingBox(Entity entity, BoundingBox box);
    method getPlayersThatSee (line 398) | public List<Player> getPlayersThatSee(Entity entity) { // TODO: once 1...
    method sendAllUpdatePackets (line 402) | public void sendAllUpdatePackets(Entity entity) {
    method setTicksLived (line 406) | public abstract void setTicksLived(Entity entity, int ticks);
    method setHeadAngle (line 408) | public abstract void setHeadAngle(LivingEntity entity, float angle);
    method setGhastAttacking (line 410) | public void setGhastAttacking(Ghast ghast, boolean attacking) { // TOD...
    method setEndermanAngry (line 414) | public abstract void setEndermanAngry(Enderman enderman, boolean angry);
    method fireFakeDamageEvent (line 416) | public static EntityDamageEvent fireFakeDamageEvent(Entity target, Ent...
    method damage (line 431) | public abstract void damage(LivingEntity target, float amount, EntityT...
    method setLastHurtBy (line 433) | public abstract void setLastHurtBy(LivingEntity mob, LivingEntity dama...
    method setFallingBlockType (line 435) | public abstract void setFallingBlockType(FallingBlock fallingBlock, Bl...
    method getMobSpawnerDisplayEntity (line 437) | public abstract EntityTag getMobSpawnerDisplayEntity(CreatureSpawner s...
    method setFireworkLifetime (line 439) | public void setFireworkLifetime(Firework firework, int ticks) { // TOD...
    method getFireworkLifetime (line 443) | public int getFireworkLifetime(Firework firework) { // TODO: once mini...
    method getInWaterTime (line 447) | public abstract int getInWaterTime(Zombie zombie);
    method setInWaterTime (line 449) | public abstract void setInWaterTime(Zombie zombie, int ticks);
    method setTrackingRange (line 451) | public abstract void setTrackingRange(Entity entity, int range);
    method isAggressive (line 453) | public abstract boolean isAggressive(Mob mob);
    method setAggressive (line 455) | public abstract void setAggressive(Mob mob, boolean aggressive);
    method setUUID (line 457) | public void setUUID(Entity entity, UUID id) {
    method getStepHeight (line 461) | public float getStepHeight(Entity entity) {
    method setStepHeight (line 465) | public void setStepHeight(Entity entity, float stepHeight) {
    method convertInternalEntityDataValues (line 471) | public List<Object> convertInternalEntityDataValues(Entity entity, Map...
    method modifyInternalEntityData (line 475) | public void modifyInternalEntityData(Entity entity, MapTag internalDat...
    method startUsingItem (line 479) | public void startUsingItem(LivingEntity entity, EquipmentSlot hand) {
    method stopUsingItem (line 483) | public void stopUsingItem(LivingEntity entity) {
    method openHorseInventory (line 487) | public abstract void openHorseInventory(Player player, AbstractHorse h...
    method getRawNBT (line 489) | public CompoundBinaryTag getRawNBT(Entity entity) {
    method modifyRawNBT (line 493) | public void modifyRawNBT(Entity entity, CompoundBinaryTag tag) {
    class EntityEntersVehicleScriptEventImpl (line 497) | public static class EntityEntersVehicleScriptEventImpl extends EntityE...
      method onEntityMount (line 498) | @EventHandler
    method getEntersVehicleEventImpl (line 504) | public Class<? extends EntityEntersVehicleScriptEvent> getEntersVehicl...
    class EntityExitsVehicleScriptEventImpl (line 508) | public static class EntityExitsVehicleScriptEventImpl extends En
Condensed preview — 1151 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,464K chars).
[
  {
    "path": ".gitattributes",
    "chars": 51,
    "preview": "# Disable LF normalization for all files\r\n* -text\r\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 21,
    "preview": "github: mcmonkey4eva\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "chars": 661,
    "preview": "---\nname: Bug Report\nabout: Describe an issue with Denizen not working as expected. DO NOT POST HERE UNLESS SOMEONE TOLD"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "chars": 476,
    "preview": "---\nname: Feature Request\nabout: Suggest something new to add. DO NOT POST HERE UNLESS SOMEONE TOLD YOU TO ON DISCORD.\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/i-m-having-trouble.md",
    "chars": 268,
    "preview": "---\nname: I'm Having Trouble\nabout: Make an issue post that seems to be trouble on your end (not a bug in Denizen itself"
  },
  {
    "path": ".gitignore",
    "chars": 120,
    "preview": "# Maven\r\ntarget/\r\ndependency-reduced-pom.xml\r\n\r\n# IntelliJ\r\n.idea/\r\n*.iml\r\n\r\n# Temporary/etc.\r\n*.bak\r\n*.exe\r\n.DS_Store\r\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 3072,
    "preview": "Contribution to Denizen\r\n-----------------------\r\n\r\nPlease talk to us on Discord @ https://discord.gg/Q6pZGSR prior to c"
  },
  {
    "path": "LICENSE.txt",
    "chars": 1116,
    "preview": "The MIT License (MIT)\r\n\r\nCopyright (c) 2019-2026 The Denizen Script Team\r\n\r\nPermission is hereby granted, free of charge"
  },
  {
    "path": "README.md",
    "chars": 4260,
    "preview": "The Denizen Scripting Language - Spigot Impl\r\n--------------------------------------------\r\n\r\nAn implementation of the D"
  },
  {
    "path": "dist/pom.xml",
    "chars": 9564,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "dist/src/main/java/com/denizenscript/denizen/dist/Dist.java",
    "chars": 113,
    "preview": "package com.denizenscript.denizen.dist;\r\n\r\npublic class Dist {\r\n    // Empty class just to make things work.\r\n}\r\n"
  },
  {
    "path": "paper/pom.xml",
    "chars": 1969,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/PaperEventHelpers.java",
    "chars": 1358,
    "preview": "package com.denizenscript.denizen.paper;\r\n\r\nimport com.denizenscript.denizen.objects.InventoryTag;\r\nimport com.denizensc"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/PaperModule.java",
    "chars": 10669,
    "preview": "package com.denizenscript.denizen.paper;\r\n\r\nimport com.denizenscript.denizen.Denizen;\r\nimport com.denizenscript.denizen."
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ComponentAdaptersRegistry.java",
    "chars": 517,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\n\npublic class ComponentAdaptersRegistry {\n\n    public static voi"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/DataComponentAdapter.java",
    "chars": 9601,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\n\nimport com.denizenscript.denizen.objects.ItemTag;\nimport com.de"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/FoodAdapter.java",
    "chars": 2182,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\n\nimport com.denizenscript.denizencore.objects.Mechanism;\nimport "
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/GliderAdapter.java",
    "chars": 618,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\n\nimport io.papermc.paper.datacomponent.DataComponentTypes;\n\npubl"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ItemModelAdapter.java",
    "chars": 1384,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\r\n\r\nimport com.denizenscript.denizen.utilities.Utilities;\r\nimport"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxDurabilityAdapter.java",
    "chars": 1047,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\r\n\r\nimport com.denizenscript.denizencore.objects.Mechanism;\r\nimpo"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxStackSizeAdapter.java",
    "chars": 1049,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\r\n\r\nimport com.denizenscript.denizencore.objects.Mechanism;\r\nimpo"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/RarityAdapter.java",
    "chars": 1191,
    "preview": "package com.denizenscript.denizen.paper.datacomponents;\r\n\r\nimport com.denizenscript.denizencore.objects.Mechanism;\r\nimpo"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/AnvilBlockDamagedScriptEvent.java",
    "chars": 3770,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/AreaEnterExitScriptEventPaperImpl.java",
    "chars": 1740,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.entity.AreaEnterExitScriptEve"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/BellRingScriptEvent.java",
    "chars": 1659,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/BlockPreDispenseScriptEvent.java",
    "chars": 2306,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/CreeperIgnitesScriptEvent.java",
    "chars": 1910,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/DragonEggFormScriptEvent.java",
    "chars": 3239,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityAddToWorldScriptEvent.java",
    "chars": 2374,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityKnocksbackEntityScriptEvent.java",
    "chars": 4510,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityLoadCrossbowScriptEvent.java",
    "chars": 3136,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityPathfindScriptEvent.java",
    "chars": 3161,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityRemoveFromWorldScriptEvent.java",
    "chars": 2134,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityStepsOnScriptEvent.java",
    "chars": 3861,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/EntityTeleportedByPortalScriptEvent.java",
    "chars": 3547,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/ExperienceOrbMergeScriptEvent.java",
    "chars": 2313,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerAbsorbsExperienceScriptEvent.java",
    "chars": 1992,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerBeaconEffectScriptEvent.java",
    "chars": 3462,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChangesFramedItemScriptEvent.java",
    "chars": 3599,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChoosesArrowScriptEvent.java",
    "chars": 3094,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.Denizen;\r\nimport com.denizenscript.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChunkUnloadScriptEvent.java",
    "chars": 2085,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksFakeEntityScriptEvent.java",
    "chars": 3132,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksInRecipeBookScriptEvent.java",
    "chars": 2182,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClientOptionsChangeScriptEvent.java",
    "chars": 6400,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerCompletesAdvancementScriptEventPaperImpl.java",
    "chars": 1432,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.player.PlayerCompletesAdvance"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerDeepSleepScriptEvent.java",
    "chars": 1567,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerElytraBoostScriptEvent.java",
    "chars": 3440,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerEquipsArmorScriptEvent.java",
    "chars": 5146,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deniz"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerGrantedAdvancementCriterionScriptEvent.java",
    "chars": 3709,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerInventorySlotChangeScriptEvent.java",
    "chars": 3529,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerItemTakesDamageScriptEventPaperImpl.java",
    "chars": 753,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.player.PlayerItemTakesDamageS"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerJumpsScriptEventPaperImpl.java",
    "chars": 762,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.player.PlayerJumpScriptEvent;"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLecternPageChangeScriptEvent.java",
    "chars": 3810,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLoomPatternSelectScriptEvent.java",
    "chars": 3683,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerNamesEntityScriptEvent.java",
    "chars": 3748,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerOpenSignScriptEvent.java",
    "chars": 2447,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerPreparesGrindstoneCraftScriptEvent.java",
    "chars": 3308,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerQuitsScriptEventPaperImpl.java",
    "chars": 1433,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.player.PlayerQuitsScriptEvent;\n"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerRaiseLowerItemScriptEventPaperImpl.java",
    "chars": 3568,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.player.PlayerRaiseLowerItemSc"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerReceivesLinksScriptEvent.java",
    "chars": 2962,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSelectsStonecutterRecipeScriptEvent.java",
    "chars": 2950,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSetSpawnScriptEvent.java",
    "chars": 4714,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerShieldDisableScriptEvent.java",
    "chars": 2525,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSpectatesEntityScriptEvent.java",
    "chars": 2370,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerStopsSpectatingScriptEvent.java",
    "chars": 2126,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTracksEntityScriptEvent.java",
    "chars": 3139,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTradesWithMerchantScriptEvent.java",
    "chars": 2911,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PreEntitySpawnScriptEvent.java",
    "chars": 3731,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/PrePlayerAttackEntityScriptEvent.java",
    "chars": 2942,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/ProjectileCollideScriptEvent.java",
    "chars": 3135,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/ServerListPingScriptEventPaperImpl.java",
    "chars": 7337,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.server.ListPingScriptEvent;\r\n"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/ServerResourcesReloadedScriptEvent.java",
    "chars": 1905,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/SkeletonHorseTrapScriptEvent.java",
    "chars": 2287,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/TNTPrimesScriptEvent.java",
    "chars": 1870,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/TargetBlockHitScriptEvent.java",
    "chars": 2878,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/UnknownCommandScriptEvent.java",
    "chars": 4751,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/VaultChangesStateScriptEvent.java",
    "chars": 2362,
    "preview": "package com.denizenscript.denizen.paper.events;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/WardenChangesAngerLevelScriptEvent.java",
    "chars": 3329,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/events/WorldGameRuleChangeScriptEvent.java",
    "chars": 5157,
    "preview": "package com.denizenscript.denizen.paper.events;\r\n\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport "
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityArmsRaised.java",
    "chars": 2832,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityAutoExpire.java",
    "chars": 2932,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityBodyStingers.java",
    "chars": 1465,
    "preview": "package com.denizenscript.denizen.paper.properties;\n\nimport com.denizenscript.denizen.objects.EntityTag;\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityCanTick.java",
    "chars": 2535,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityCarryingEgg.java",
    "chars": 2632,
    "preview": "package com.denizenscript.denizen.paper.properties;\n\nimport com.denizenscript.denizen.objects.EntityTag;\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityDrinkingPotion.java",
    "chars": 4148,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityEggLayTime.java",
    "chars": 1288,
    "preview": "package com.denizenscript.denizen.paper.properties;\n\nimport com.denizenscript.denizen.objects.EntityTag;\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityFriction.java",
    "chars": 3247,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityLeftHanded.java",
    "chars": 1353,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityReputation.java",
    "chars": 5263,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityShouldBurn.java",
    "chars": 3097,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.nms.NMSHandler;\r\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntitySneaking.java",
    "chars": 2041,
    "preview": "package com.denizenscript.denizen.paper.properties;\n\nimport com.denizenscript.denizen.npc.traits.SneakingTrait;\nimport c"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityWitherInvulnerable.java",
    "chars": 2923,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemArmorStand.java",
    "chars": 4374,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.objects.ItemTag;\r\nimport com.den"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemRemovedComponents.java",
    "chars": 3618,
    "preview": "package com.denizenscript.denizen.paper.properties;\n\nimport com.denizenscript.denizen.objects.ItemTag;\nimport com.denize"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperElementExtensions.java",
    "chars": 2006,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.nms.NMSHandler;\r\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java",
    "chars": 10382,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.nms.NMSHandler;\r\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperItemExtensions.java",
    "chars": 623,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.nms.NMSHandler;\r\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java",
    "chars": 12192,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.nms.NMSHandler;\r\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperWorldExtensions.java",
    "chars": 8453,
    "preview": "package com.denizenscript.denizen.paper.properties;\r\n\r\nimport com.denizenscript.denizen.nms.NMSHandler;\r\nimport com.deni"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/tags/PaperTagBase.java",
    "chars": 1243,
    "preview": "package com.denizenscript.denizen.paper.tags;\r\n\r\nimport com.denizenscript.denizencore.objects.core.DurationTag;\r\nimport "
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/utilities/BlockTagsSetter.java",
    "chars": 4520,
    "preview": "package com.denizenscript.denizen.paper.utilities;\n\nimport com.denizenscript.denizen.Denizen;\nimport com.denizenscript.d"
  },
  {
    "path": "paper/src/main/java/com/denizenscript/denizen/paper/utilities/PaperAPIToolsImpl.java",
    "chars": 17748,
    "preview": "package com.denizenscript.denizen.paper.utilities;\r\n\r\nimport com.denizenscript.denizen.Denizen;\r\nimport com.denizenscrip"
  },
  {
    "path": "plugin/pom.xml",
    "chars": 6967,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/Denizen.java",
    "chars": 28445,
    "preview": "package com.denizenscript.denizen;\r\n\r\nimport com.denizenscript.denizen.events.ScriptEventRegistry;\r\nimport com.denizensc"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java",
    "chars": 47885,
    "preview": "package com.denizenscript.denizen.events;\n\nimport com.denizenscript.denizen.Denizen;\nimport com.denizenscript.denizen.np"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/ScriptEventRegistry.java",
    "chars": 21308,
    "preview": "package com.denizenscript.denizen.events;\r\n\r\nimport com.denizenscript.denizen.Denizen;\r\nimport com.denizenscript.denizen"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BellRingScriptEvent.java",
    "chars": 2362,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockBuiltScriptEvent.java",
    "chars": 3531,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockBurnsScriptEvent.java",
    "chars": 1884,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockCooksSmeltsItemScriptEvent.java",
    "chars": 2775,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.ItemTag;\r\nimport com.denizen"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockDestroyedByExplosionEvent.java",
    "chars": 4443,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockDispensesScriptEvent.java",
    "chars": 3635,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.ItemTag;\r\nimport com.denizen"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockEquipsItemScriptEvent.java",
    "chars": 3770,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockExplodesScriptEvent.java",
    "chars": 4205,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockFadesScriptEvent.java",
    "chars": 1907,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockFallsScriptEvent.java",
    "chars": 2561,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deniz"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockFormsScriptEvent.java",
    "chars": 1972,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockGrowsScriptEvent.java",
    "chars": 3506,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockIgnitesScriptEvent.java",
    "chars": 2835,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deniz"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockPhysicsScriptEvent.java",
    "chars": 4191,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockShearEntityScriptEvent.java",
    "chars": 2180,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BlockSpreadsScriptEvent.java",
    "chars": 2950,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BrewingStandFueledScriptEvent.java",
    "chars": 3566,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BrewingStartsScriptEvent.java",
    "chars": 2251,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/BrewsScriptEvent.java",
    "chars": 2680,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/CauldronLevelChangeScriptEvent.java",
    "chars": 4740,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/CrafterCraftsScriptEvent.java",
    "chars": 2409,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.objects.ItemTag;\nimport com.denizenscr"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/DragonEggMovesScriptEvent.java",
    "chars": 2093,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.objects.LocationTag;\nimport com.denize"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/FurnaceBurnsItemScriptEvent.java",
    "chars": 2681,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.ItemTag;\r\nimport com.denizen"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/FurnaceStartsSmeltingScriptEvent.java",
    "chars": 2714,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/LeafDecaysScriptEvent.java",
    "chars": 2005,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/LiquidLevelChangeScriptEvent.java",
    "chars": 2578,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/LiquidSpreadScriptEvent.java",
    "chars": 2414,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.objects.LocationTag;\nimport com.denize"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/LootDispensesFromBlockScriptEvent.java",
    "chars": 2886,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/MoistureChangeScriptEvent.java",
    "chars": 3119,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/NoteBlockPlaysNoteScriptEvent.java",
    "chars": 4451,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/PistonExtendsScriptEvent.java",
    "chars": 3001,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/PistonRetractsScriptEvent.java",
    "chars": 3123,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/RedstoneScriptEvent.java",
    "chars": 2340,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.objects.LocationTag;\r\nimport com.den"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/SpongeAbsorbsScriptEvent.java",
    "chars": 1697,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/TNTPrimesScriptEvent.java",
    "chars": 2912,
    "preview": "package com.denizenscript.denizen.events.block;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport co"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/block/VaultDisplaysItemScriptEvent.java",
    "chars": 2139,
    "preview": "package com.denizenscript.denizen.events.block;\n\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\nimport com.d"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/bukkit/ExhaustedNPCEvent.java",
    "chars": 1018,
    "preview": "package com.denizenscript.denizen.events.bukkit;\r\n\r\nimport net.citizensnpcs.api.event.NPCEvent;\r\nimport net.citizensnpcs"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/bukkit/SavesReloadEvent.java",
    "chars": 470,
    "preview": "package com.denizenscript.denizen.events.bukkit;\r\n\r\nimport org.bukkit.event.Event;\r\nimport org.bukkit.event.HandlerList;"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/bukkit/ScriptReloadEvent.java",
    "chars": 605,
    "preview": "package com.denizenscript.denizen.events.bukkit;\r\n\r\nimport org.bukkit.event.Event;\r\nimport org.bukkit.event.HandlerList;"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEffectCloudApplyScriptEvent.java",
    "chars": 2824,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEnterExitScriptEvent.java",
    "chars": 13316,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/CreeperPoweredScriptEvent.java",
    "chars": 2459,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/DragonPhaseChangeScriptEvent.java",
    "chars": 3508,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityAirLevelChangeScriptEvent.java",
    "chars": 3453,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityBreaksHangingScriptEvent.java",
    "chars": 3777,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityBreedScriptEvent.java",
    "chars": 4042,
    "preview": "package com.denizenscript.denizen.events.entity;\n\nimport com.denizenscript.denizen.objects.EntityTag;\nimport com.denizen"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityChangesBlockScriptEvent.java",
    "chars": 3502,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityChangesPoseScriptEvent.java",
    "chars": 2934,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCombustsScriptEvent.java",
    "chars": 4251,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java",
    "chars": 2637,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDamagedScriptEvent.java",
    "chars": 12780,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDeathScriptEvent.java",
    "chars": 9125,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDespawnScriptEvent.java",
    "chars": 2281,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDropsItemScriptEvent.java",
    "chars": 3325,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityEntersPortalScriptEvent.java",
    "chars": 2443,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityEntersVehicleScriptEvent.java",
    "chars": 3075,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExitsPortalScriptEvent.java",
    "chars": 2479,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExitsVehicleScriptEvent.java",
    "chars": 2601,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExplodesScriptEvent.java",
    "chars": 4380,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityExplosionPrimesScriptEvent.java",
    "chars": 3090,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityFoodLevelChangeScriptEvent.java",
    "chars": 3403,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityFormsBlockScriptEvent.java",
    "chars": 2558,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityGlideScriptEvent.java",
    "chars": 2518,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityGoesIntoBlockScriptEvent.java",
    "chars": 2730,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityHealsScriptEvent.java",
    "chars": 3255,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityInteractScriptEvent.java",
    "chars": 2497,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityKilledScriptEvent.java",
    "chars": 7444,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityPicksUpItemScriptEvent.java",
    "chars": 3573,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityPotionEffectScriptEvent.java",
    "chars": 5768,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityResurrectScriptEvent.java",
    "chars": 2679,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityShootsBowScriptEvent.java",
    "chars": 6697,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.Denizen;\r\nimport com.denizenscript."
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpawnScriptEvent.java",
    "chars": 4171,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpawnerSpawnScriptEvent.java",
    "chars": 2684,
    "preview": "package com.denizenscript.denizen.events.entity;\n\nimport com.denizenscript.denizen.objects.EntityTag;\nimport com.denizen"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpellCastScriptEvent.java",
    "chars": 2154,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySwimScriptEvent.java",
    "chars": 2518,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTamesScriptEvent.java",
    "chars": 2612,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTargetsScriptEvent.java",
    "chars": 3871,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTeleportScriptEvent.java",
    "chars": 6794,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTransformScriptEvent.java",
    "chars": 3334,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityUnleashedScriptEvent.java",
    "chars": 2211,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/ExperienceBottleBreaksScriptEvent.java",
    "chars": 3120,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/FireworkBurstsScriptEvent.java",
    "chars": 2426,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/HangingBreaksScriptEvent.java",
    "chars": 3035,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/HorseJumpsScriptEvent.java",
    "chars": 3534,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/PigZappedScriptEvent.java",
    "chars": 2487,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/PiglinBarterScriptEvent.java",
    "chars": 2856,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/ProjectileHitScriptEvent.java",
    "chars": 6729,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/ProjectileLaunchedScriptEvent.java",
    "chars": 2677,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/SheepDyedScriptEvent.java",
    "chars": 2964,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/SheepRegrowsScriptEvent.java",
    "chars": 1852,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/SlimeSplitsScriptEvent.java",
    "chars": 2647,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.objects.EntityTag;\r\nimport com.deni"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerAcquiresTradeScriptEvent.java",
    "chars": 2398,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerChangesProfessionScriptEvent.java",
    "chars": 3044,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  },
  {
    "path": "plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerReplenishesTradeScriptEvent.java",
    "chars": 2772,
    "preview": "package com.denizenscript.denizen.events.entity;\r\n\r\nimport com.denizenscript.denizen.events.BukkitScriptEvent;\r\nimport c"
  }
]

// ... and 951 more files (download for full content)

About this extraction

This page contains the full source code of the DenizenScript/Denizen GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1151 files (7.6 MB), approximately 2.1M tokens, and a symbol index with 11067 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.

Copied to clipboard!