Compare commits

..
Author SHA1 Message Date
Lulu13022002 38629ec417 call transient events and finalize migration 2026-09-08 22:02:29 +02:00
Lulu13022002 60a9219865 replace factory methods to flexible constructors 2026-09-08 19:37:24 +02:00
Lulu13022002 e7e1b7cb5f tweaks hierarchy 2026-09-08 19:34:57 +02:00
Lulu13022002 d37761f49e Event 2026-09-08 19:34:56 +02:00
Lulu13022002 0632270abf GS4QueryEvent 2026-09-08 19:34:33 +02:00
Lulu13022002 fbd7278bdf WhitelistToggleEvent 2026-09-08 19:34:32 +02:00
Lulu13022002 6e16c8151b ServerTickStartEvent 2026-09-08 19:34:32 +02:00
Lulu13022002 a4d07733b8 ServerTickEndEvent 2026-09-08 19:34:32 +02:00
Lulu13022002 dad36a346f ServerExceptionEvent 2026-09-08 19:34:31 +02:00
Lulu13022002 7dbd040210 AsyncTabCompleteEvent 2026-09-08 19:34:31 +02:00
Lulu13022002 7b644639cd ProfileWhitelistVerifyEvent 2026-09-08 19:34:31 +02:00
Lulu13022002 98d6d87a16 PreLookupProfileEvent 2026-09-08 19:34:31 +02:00
Lulu13022002 ea5e5b5bd0 PreFillProfileEvent 2026-09-08 19:34:30 +02:00
Lulu13022002 cc87ccebf7 LookupProfileEvent 2026-09-08 19:34:30 +02:00
Lulu13022002 f8416f2239 FillProfileEvent 2026-09-08 19:34:30 +02:00
Lulu13022002 219b5bd3eb ThrownEggHatchEvent 2026-09-08 19:34:30 +02:00
Lulu13022002 e16ebd9768 PreCreatureSpawnEvent 2026-09-08 19:34:29 +02:00
Lulu13022002 eef9f9e154 TimeSkipEvent 2026-09-08 19:34:29 +02:00
Lulu13022002 49a6b6ee0b TabCompleteEvent 2026-09-08 19:34:29 +02:00
Lulu13022002 12e436e573 AsyncPlayerPreLoginEvent 2026-09-08 19:34:29 +02:00
Lulu13022002 10c3643761 InventoryPickupItemEvent 2026-09-08 19:34:28 +02:00
Lulu13022002 9c2cd19913 InventoryMoveItemEvent 2026-09-08 19:34:28 +02:00
Lulu13022002 7042f13970 PlayerLeashEntityEvent 2026-09-08 19:34:28 +02:00
Lulu13022002 406b868e5d UnknownCommandEvent 2026-09-08 19:34:28 +02:00
Lulu13022002 3d3dcf6444 WhitelistStateUpdateEvent 2026-09-08 19:34:27 +02:00
Lulu13022002 785c0c648f AsyncServerDataFixerRemoveBlockEntityEvent 2026-09-08 19:34:27 +02:00
Lulu13022002 c3d089fc38 TestEvent 2026-09-08 19:34:27 +02:00
Lulu13022002 ed9942f6d6 ItemCraftedEvent 2026-09-08 19:34:27 +02:00
Lulu13022002 e4adac7336 EntityCollideWithEntityEvent 2026-09-08 19:34:27 +02:00
Lulu13022002 0649158c70 PlayerConnectionValidateLoginEvent 2026-09-08 19:34:27 +02:00
Lulu13022002 2eee472f72 PlayerConnectionReconfigureEvent 2026-09-08 19:34:26 +02:00
Lulu13022002 53aab5e3c4 PlayerConnectionInitialConfigureEvent 2026-09-08 19:34:26 +02:00
Lulu13022002 e7c3732ea5 PlayerCodeOfConductSendEvent 2026-09-08 19:34:26 +02:00
Lulu13022002 8274d6f563 AsyncPlayerConnectionConfigureEvent 2026-09-08 19:34:26 +02:00
Lulu13022002 faf117a93e HangingEvent 2026-09-08 19:34:26 +02:00
Lulu13022002 516877f477 WeatherEvent 2026-09-08 19:34:25 +02:00
Lulu13022002 180a25d1d0 VehicleEvent 2026-09-08 19:34:25 +02:00
Lulu13022002 8ac694005a VehicleUpdateEvent 2026-09-08 19:34:25 +02:00
Lulu13022002 f548f4a1b0 VehicleMoveEvent 2026-09-08 19:34:25 +02:00
Lulu13022002 9315b6d156 VehicleExitEvent 2026-09-08 19:34:25 +02:00
Lulu13022002 bc8858c361 VehicleCollisionEvent 2026-09-08 19:34:25 +02:00
Lulu13022002 1c8cc4a916 VehicleEnterEvent 2026-09-08 19:34:24 +02:00
Lulu13022002 e9d5ddc150 VehicleDestroyEvent 2026-09-08 19:34:24 +02:00
Lulu13022002 1ea8e08ebc VehicleDamageEvent 2026-09-08 19:34:24 +02:00
Lulu13022002 f4a6a3b885 VehicleCreateEvent 2026-09-08 19:34:24 +02:00
Lulu13022002 5929ed63cf ServerEvent 2026-09-08 19:34:24 +02:00
Lulu13022002 d34638c755 ServerListPingEvent 2026-09-08 19:34:24 +02:00
Lulu13022002 e1a0397dc4 ServerResourcesReloadedEvent 2026-09-08 19:34:23 +02:00
Lulu13022002 8d197ba4b0 RegionizedServerInitEvent 2026-09-08 19:34:23 +02:00
Lulu13022002 9280bf27fc CommandRegisteredEvent 2026-09-08 19:34:23 +02:00
Lulu13022002 8b9e4c7d11 AsyncChatDecorateEvent 2026-09-08 19:34:23 +02:00
Lulu13022002 6979dced5c ServerLoadEvent 2026-09-08 19:34:23 +02:00
Lulu13022002 9f893d1e66 ServiceEvent 2026-09-08 19:34:23 +02:00
Lulu13022002 4bbe75753c ServerCommandEvent 2026-09-08 19:34:22 +02:00
Lulu13022002 2716922383 PluginEvent 2026-09-08 19:34:22 +02:00
Lulu13022002 7f785a3516 MapInitializeEvent 2026-09-08 19:34:22 +02:00
Lulu13022002 3a0407500e BroadcastMessageEvent 2026-09-08 19:34:22 +02:00
Lulu13022002 6b56630859 WorldEvent 2026-09-08 19:34:22 +02:00
Lulu13022002 589ad52e5a ChunkEvent 2026-09-08 19:34:22 +02:00
Lulu13022002 c2f1b0a55f AsyncStructureSpawnEvent 2026-09-08 19:34:21 +02:00
Lulu13022002 f8f320e70a AsyncStructureGenerateEvent 2026-09-08 19:34:21 +02:00
Lulu13022002 aa37ad776e WorldBorderEvent 2026-09-08 19:34:21 +02:00
Lulu13022002 f839cf8d84 WorldGameRuleChangeEvent 2026-09-08 19:34:21 +02:00
Lulu13022002 4d489d4a8a WorldDifficultyChangeEvent 2026-09-08 19:34:21 +02:00
Lulu13022002 dd4cb61c69 StructuresLocateEvent 2026-09-08 19:34:21 +02:00
Lulu13022002 f9e2023bfe RaidEvent 2026-09-08 19:34:20 +02:00
Lulu13022002 af984540ba WorldUnloadEvent 2026-09-08 19:34:20 +02:00
Lulu13022002 d7129a5013 WorldSaveEvent 2026-09-08 19:34:20 +02:00
Lulu13022002 b70c43c16f WorldLoadEvent 2026-09-08 19:34:20 +02:00
Lulu13022002 c1d911c16c WorldInitEvent 2026-09-08 19:34:20 +02:00
Lulu13022002 bab72db6b1 StructureGrowEvent 2026-09-08 19:34:19 +02:00
Lulu13022002 a3ba87b29f SpawnChangeEvent 2026-09-08 19:34:19 +02:00
Lulu13022002 5e10df70d3 PortalCreateEvent 2026-09-08 19:34:19 +02:00
Lulu13022002 a5efe6f6f2 LootGenerateEvent 2026-09-08 19:34:19 +02:00
Lulu13022002 0612615a18 GenericGameEvent 2026-09-08 19:34:19 +02:00
Lulu13022002 e57fcce61c InventoryEvent 2026-09-08 19:34:19 +02:00
Lulu13022002 13550ba3ae PrepareItemEnchantEvent 2026-09-08 19:34:18 +02:00
Lulu13022002 0db5f0903e EnchantItemEvent 2026-09-08 19:34:18 +02:00
Lulu13022002 25629f4de5 AnvilDamagedEvent 2026-09-08 19:34:18 +02:00
Lulu13022002 0928b20314 PrepareInventoryResultEvent 2026-09-08 19:34:18 +02:00
Lulu13022002 aa96be2bc1 PrepareItemCraftEvent 2026-09-08 19:34:18 +02:00
Lulu13022002 384a710167 InventoryOpenEvent 2026-09-08 19:34:18 +02:00
Lulu13022002 e2cf03e706 InventoryCloseEvent 2026-09-08 19:34:17 +02:00
Lulu13022002 b3830b76c1 InventoryInteractEvent 2026-09-08 19:34:17 +02:00
Lulu13022002 079cf7d9a7 EntityEvent 2026-09-08 19:34:17 +02:00
Lulu13022002 22a19181cf WitchThrowPotionEvent 2026-09-08 19:34:17 +02:00
Lulu13022002 23fd92d0c0 WitchReadyPotionEvent 2026-09-08 19:34:17 +02:00
Lulu13022002 b7a1169d30 WitchConsumePotionEvent 2026-09-08 19:34:16 +02:00
Lulu13022002 dceff8335f TurtleStartDiggingEvent 2026-09-08 19:34:16 +02:00
Lulu13022002 7dc84166a9 TurtleLayEggEvent 2026-09-08 19:34:16 +02:00
Lulu13022002 43c85ccd53 TurtleGoHomeEvent 2026-09-08 19:34:16 +02:00
Lulu13022002 c1ede62295 SlimePathfindEvent 2026-09-08 19:34:16 +02:00
Lulu13022002 91dd0214f1 SkeletonHorseTrapEvent 2026-09-08 19:34:16 +02:00
Lulu13022002 2a212eae42 ProjectileCollideEvent 2026-09-08 19:34:15 +02:00
Lulu13022002 216a4161be ExperienceOrbMergeEvent 2026-09-08 19:34:15 +02:00
Lulu13022002 9e1b9fbcea EntityRemoveFromWorldEvent 2026-09-08 19:34:15 +02:00
Lulu13022002 be05c0e24f EntityPathfindEvent 2026-09-08 19:34:15 +02:00
Lulu13022002 656dc56043 EntityJumpEvent 2026-09-08 19:34:15 +02:00
Lulu13022002 1f8591a410 EntityAddToWorldEvent 2026-09-08 19:34:15 +02:00
Lulu13022002 d68dc0715f EndermanEscapeEvent 2026-09-08 19:34:14 +02:00
Lulu13022002 752c303be1 EndermanAttackPlayerEvent 2026-09-08 19:34:14 +02:00
Lulu13022002 51e1e63319 EnderDragonShootFireballEvent 2026-09-08 19:34:14 +02:00
Lulu13022002 7c446e0139 EnderDragonFlameEvent 2026-09-08 19:34:14 +02:00
Lulu13022002 e68c701528 EnderDragonFireballHitEvent 2026-09-08 19:34:14 +02:00
Lulu13022002 34cfa23fc0 VillagerReplenishTradeEvent 2026-09-08 19:34:14 +02:00
Lulu13022002 33d7d349f5 VillagerCareerChangeEvent 2026-09-08 19:34:13 +02:00
Lulu13022002 4aeb33a5f4 VillagerAcquireTradeEvent 2026-09-08 19:34:13 +02:00
Lulu13022002 4fa9499a24 StriderTemperatureChangeEvent 2026-09-08 19:34:13 +02:00
Lulu13022002 646a873602 SlimeSplitEvent 2026-09-08 19:34:13 +02:00
Lulu13022002 14979ac517 SheepRegrowWoolEvent 2026-09-08 19:34:13 +02:00
Lulu13022002 6b29c52a33 PigZombieAngerEvent 2026-09-08 19:34:13 +02:00
Lulu13022002 8c1e7b4a57 PiglinBarterEvent 2026-09-08 19:34:12 +02:00
Lulu13022002 115d5e64e7 ItemMergeEvent 2026-09-08 19:34:12 +02:00
Lulu13022002 2b3b6f3b66 ItemDespawnEvent 2026-09-08 19:34:12 +02:00
Lulu13022002 b99b095b61 HorseJumpEvent 2026-09-08 19:34:12 +02:00
Lulu13022002 2260daa8b3 FoodLevelChangeEvent 2026-09-08 19:34:12 +02:00
Lulu13022002 b54f99c244 FireworkExplodeEvent 2026-09-08 19:34:12 +02:00
Lulu13022002 cdbe56ff29 ExplosionPrimeEvent 2026-09-08 19:34:11 +02:00
Lulu13022002 beee07f89a EntityUnleashEvent 2026-09-08 19:34:11 +02:00
Lulu13022002 d0d617a535 EntityTransformEvent 2026-09-08 19:34:11 +02:00
Lulu13022002 18f1aa712b EntityToggleSwimEvent 2026-09-08 19:34:11 +02:00
Lulu13022002 255179b4b2 EntityToggleGlideEvent 2026-09-08 19:34:11 +02:00
Lulu13022002 70ad50b387 EntityTargetEvent 2026-09-08 19:34:10 +02:00
Lulu13022002 bf5aba7260 EntityTameEvent 2026-09-08 19:34:10 +02:00
Lulu13022002 cabe9db92e EntitySpellCastEvent 2026-09-08 19:34:10 +02:00
Lulu13022002 cedb1ffa64 EntityShootBowEvent 2026-09-08 19:34:10 +02:00
Lulu13022002 4204a93ca6 EntityResurrectEvent 2026-09-08 19:34:10 +02:00
Lulu13022002 a4c450a160 EntityRemoveEvent 2026-09-08 19:34:10 +02:00
Lulu13022002 90a79f22e1 EntityConstructEvent 2026-09-08 19:34:09 +02:00
Lulu13022002 7e5a257553 SulfurCubeSwallowItemEvent 2026-09-08 19:34:09 +02:00
Lulu13022002 6c79add3e3 EntityLungeEvent 2026-09-08 19:34:09 +02:00
Lulu13022002 32f8feb7e4 EntityIgniteEvent 2026-09-08 19:34:09 +02:00
Lulu13022002 20d64c1f42 EntityRegainHealthEvent 2026-09-08 19:34:09 +02:00
Lulu13022002 9be6bb009a EntityPotionEffectEvent 2026-09-08 19:34:08 +02:00
Lulu13022002 c056b0a07e EntityPoseChangeEvent 2026-09-08 19:34:08 +02:00
Lulu13022002 668dcda9de EntityTeleportEvent 2026-09-08 19:34:08 +02:00
Lulu13022002 ce579b4e2c EntityPortalEnterEvent 2026-09-08 19:34:08 +02:00
Lulu13022002 876b4d7a1a EntityPlaceEvent 2026-09-08 19:34:08 +02:00
Lulu13022002 250178eaf0 EntityPickupItemEvent 2026-09-08 19:34:07 +02:00
Lulu13022002 8192c9f575 EntityMountEvent 2026-09-08 19:34:07 +02:00
Lulu13022002 97823725ce EntityKnockbackEvent 2026-09-08 19:34:07 +02:00
Lulu13022002 0c0257254e EntityInteractEvent 2026-09-08 19:34:07 +02:00
Lulu13022002 740bb04269 EntityExplodeEvent 2026-09-08 19:34:07 +02:00
Lulu13022002 9bcddac82d EntityExhaustionEvent 2026-09-08 19:34:06 +02:00
Lulu13022002 0dd5fad8a6 EntityEnterLoveModeEvent 2026-09-08 19:34:06 +02:00
Lulu13022002 e8d93523e2 EntityEnterBlockEvent 2026-09-08 19:34:06 +02:00
Lulu13022002 5ddb6833ff EntityDropItemEvent 2026-09-08 19:34:06 +02:00
Lulu13022002 3132f2929e EntityDismountEvent 2026-09-08 19:34:05 +02:00
Lulu13022002 01d37292a2 EntityDeathEvent 2026-09-08 19:34:05 +02:00
Lulu13022002 871c14c6be EntityDamageEvent 2026-09-08 19:34:05 +02:00
Lulu13022002 6ef75d43cc EntityCreatePortalEvent 2026-09-08 19:34:05 +02:00
Lulu13022002 e0fc7eb9bd EntityCombustEvent 2026-09-08 19:34:05 +02:00
Lulu13022002 9511306ca9 EntityBreedEvent 2026-09-08 19:34:04 +02:00
Lulu13022002 585df25333 EntityChangeBlockEvent 2026-09-08 19:34:04 +02:00
Lulu13022002 b067ecf46e EntityAirChangeEvent 2026-09-08 19:34:04 +02:00
Lulu13022002 459f0860a1 EnderDragonChangePhaseEvent 2026-09-08 19:34:04 +02:00
Lulu13022002 367148200f CreeperPowerEvent 2026-09-08 19:34:04 +02:00
Lulu13022002 fbf971617c EntitySpawnEvent 2026-09-08 19:34:03 +02:00
Lulu13022002 7ec5986da1 BatToggleSleepEvent 2026-09-08 19:34:03 +02:00
Lulu13022002 c7d1b23b93 ArrowBodyCountChangeEvent 2026-09-08 19:34:03 +02:00
Lulu13022002 4b0e3109d7 AreaEffectCloudApplyEvent 2026-09-08 19:34:03 +02:00
Lulu13022002 aca9668964 PlayerToggleEntityAgeLockEvent 2026-09-08 19:34:02 +02:00
Lulu13022002 6bb6a909a7 rebase 2026-09-08 19:34:02 +02:00
Lulu13022002 3264ac58e3 ProjectileHitEvent 2026-09-08 19:34:02 +02:00
Lulu13022002 b49a41efb7 PlayerSwapWithEquipmentSlotEvent 2026-09-08 19:34:02 +02:00
Lulu13022002 df04cb69ba rebuild patches 2026-09-08 19:34:01 +02:00
Lulu13022002 ebfe21e2ca rewrite custom events extending abstract event classes and skip rewriting for next versions 2026-09-08 19:34:01 +02:00
Lulu13022002 db422ee9af WardenAngerChangeEvent 2026-09-08 19:34:01 +02:00
Lulu13022002 18e2c24e05 TameableDeathMessageEvent 2026-09-08 19:34:01 +02:00
Lulu13022002 7187fdf465 ShulkerDuplicateEvent 2026-09-08 19:34:01 +02:00
Lulu13022002 c8bd70a838 PufferFishStateChangeEvent 2026-09-08 19:34:01 +02:00
Lulu13022002 d873174c2a ItemTransportingEntityValidateTargetEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 8936ac3735 FishHookStateChangeEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 155f855959 EntityToggleSitEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 8bfe75dc01 EntityPortalReadyEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 70c7b5dee5 EntityMoveEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 508e4166f3 EntityKnockbackEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 1e91d1224a EntityLoadCrossbowEvent 2026-09-08 19:34:00 +02:00
Lulu13022002 cdb4f991f6 EntityInsideBlockEvent 2026-09-08 19:33:59 +02:00
Lulu13022002 9808091bcf EntityFertilizeEggEvent 2026-09-08 19:33:59 +02:00
Lulu13022002 1e3d010778 EntityEquipmentChangedEvent 2026-09-08 19:33:59 +02:00
Lulu13022002 f1fed860c5 EntityEffectTickEvent 2026-09-08 19:33:59 +02:00
Lulu13022002 fabbf136a9 EntityDyeEvent 2026-09-08 19:33:59 +02:00
Lulu13022002 a741d5a060 EntityDamageItemEvent 2026-09-08 19:33:59 +02:00
Lulu13022002 db56b19f86 EntityAttemptSpinAttackEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 f616414eb7 EntityAttemptSmashAttackEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 8314f898e6 ElderGuardianAppearanceEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 af57d9efae BlockEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 df49621e76 HopperInventorySearchEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 cd1d929399 TNTPrimeEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 24194f2704 BeaconEffectEvent 2026-09-08 19:33:58 +02:00
Lulu13022002 05be2f2430 FurnaceBurnEvent 2026-09-08 19:33:57 +02:00
Lulu13022002 68dc428d44 BrewingStandFuelEvent 2026-09-08 19:33:57 +02:00
Lulu13022002 28c8b952ee BrewEvent 2026-09-08 19:33:57 +02:00
Lulu13022002 59dbce1176 VaultDisplayItemEvent 2026-09-08 19:33:57 +02:00
Lulu13022002 463a9a0348 TNTPrimeEvent 2026-09-08 19:33:57 +02:00
Lulu13022002 9cbb166ef7 SpongeAbsorbEvent 2026-09-08 19:33:57 +02:00
Lulu13022002 b68aeef916 SignChangeEvent 2026-09-08 19:33:56 +02:00
Lulu13022002 1765f064a7 SculkBloomEvent 2026-09-08 19:33:56 +02:00
Lulu13022002 abf24dfac1 NotePlayEvent 2026-09-08 19:33:56 +02:00
Lulu13022002 a234ecc775 MoistureChangeEvent 2026-09-08 19:33:56 +02:00
Lulu13022002 35b21193e0 LeavesDecayEvent 2026-09-08 19:33:56 +02:00
Lulu13022002 f562d238d2 FluidLevelChangeEvent 2026-09-08 19:33:56 +02:00
Lulu13022002 1e161152b9 CrafterCraftEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 6e54f73d74 CauldronLevelChangeEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 95ef9c22fb InventoryBlockStartEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 dcad5fa99e BlockShearEntityEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 e6c0ba7646 BlockRedstoneEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 1cda896417 BlockReceiveGameEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 5c99a97dac BlockPistonEvent 2026-09-08 19:33:55 +02:00
Lulu13022002 ad0d113da0 BlockPhysicsEvent 2026-09-08 19:33:54 +02:00
Lulu13022002 ff4a2ca564 BlockIgniteEvent 2026-09-08 19:33:54 +02:00
Lulu13022002 be5b215be2 BlockPlaceEvent 2026-09-08 19:33:54 +02:00
Lulu13022002 655ea8288a BlockFromToEvent 2026-09-08 19:33:54 +02:00
Lulu13022002 6d1bd949aa BlockFertilizeEvent 2026-09-08 19:33:54 +02:00
Lulu13022002 5093290edf BlockFadeEvent 2026-09-08 19:33:54 +02:00
Lulu13022002 b4d418c073 BlockExplodeEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 1a74b81716 BlockDropItemEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 a3d9ae13f3 BlockDispenseLootEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 1dbf8f9f46 BlockDispenseEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 fa4d547a35 BlockDamageEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 bb7122b480 BlockDamageAbortEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 4dc7c308b0 BlockCookEvent 2026-09-08 19:33:53 +02:00
Lulu13022002 7a1dbc123f BlockCanBuildEvent 2026-09-08 19:33:52 +02:00
Lulu13022002 e8df304884 BlockBurnEvent 2026-09-08 19:33:52 +02:00
Lulu13022002 03f3ece1b9 BellResonateEvent 2026-09-08 19:33:52 +02:00
Lulu13022002 5c92b1a8d7 BlockGrowEvent 2026-09-08 19:33:52 +02:00
Lulu13022002 495fae1784 BlockExpEvent 2026-09-08 19:33:52 +02:00
Lulu13022002 e94e49b5a7 CompostItemEvent 2026-09-08 19:33:52 +02:00
Lulu13022002 dc9c3ce64d VaultChangeStateEvent 2026-09-08 19:33:51 +02:00
Lulu13022002 fc940f8f37 BlockPreDispenseEvent 2026-09-08 19:33:51 +02:00
Lulu13022002 7b3f232e79 BlockLockCheckEvent 2026-09-08 19:33:51 +02:00
Lulu13022002 32aa346546 BlockFailedDispenseEvent 2026-09-08 19:33:51 +02:00
Lulu13022002 cfa232a0a7 BlockBreakProgressUpdateEvent 2026-09-08 19:33:51 +02:00
Lulu13022002 65ae2ca9b0 BellRingEvent 2026-09-08 19:33:51 +02:00
Lulu13022002 46da35f1ab BellRevealRaiderEvent 2026-09-08 19:33:50 +02:00
Lulu13022002 9c8387b5bd BeaconDeactivatedEvent 2026-09-08 19:33:50 +02:00
Lulu13022002 eeec638538 BeaconActivatedEvent 2026-09-08 19:33:50 +02:00
Lulu13022002 366a375afe PlayerEvent 2026-09-08 19:33:50 +02:00
Lulu13022002 a71878ebe5 PlayerSpawnLocationEvent 2026-09-08 19:33:50 +02:00
Lulu13022002 21bb7dff80 UncheckedSignChangeEvent 2026-09-08 19:33:50 +02:00
Lulu13022002 55f8938768 LootableInventoryReplenishEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 c5093c5d12 PlayerNaturallySpawnCreaturesEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 368f22e290 PlayerShearBlockEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 65806e018a ClientTickEndEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 625a963b4d AsyncPlayerSendSuggestionsEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 81cc5be9a0 AsyncPlayerSendCommandsEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 dc245be340 PlayerUseUnknownEntityEvent 2026-09-08 19:33:49 +02:00
Lulu13022002 a38201bc4b PlayerStopSpectatingEntityEvent 2026-09-08 19:33:48 +02:00
Lulu13022002 e2b0e61aa6 PlayerStartSpectatingEntityEvent 2026-09-08 19:33:48 +02:00
Lulu13022002 05201926f0 PlayerSetSpawnEvent 2026-09-08 19:33:48 +02:00
Lulu13022002 b5b202a09a PlayerRecipeBookClickEvent 2026-09-08 19:33:48 +02:00
Lulu13022002 7d27d0363e PlayerReadyArrowEvent 2026-09-08 19:33:48 +02:00
Lulu13022002 ef47cbcb48 PlayerPickupExperienceEvent 2026-09-08 19:33:48 +02:00
Lulu13022002 0d46683855 PlayerLaunchProjectileEvent 2026-09-08 19:33:47 +02:00
Lulu13022002 cca983b5fe PlayerJumpEvent 2026-09-08 19:33:47 +02:00
Lulu13022002 5e3602a300 PlayerHandshakeEvent 2026-09-08 19:33:47 +02:00
Lulu13022002 e65954bdfd PlayerElytraBoostEvent 2026-09-08 19:33:47 +02:00
Lulu13022002 296afa8d33 PlayerConnectionCloseEvent 2026-09-08 19:33:47 +02:00
Lulu13022002 d4a834c37b PlayerClientOptionsChangeEvent 2026-09-08 19:33:47 +02:00
Lulu13022002 d64d779359 PlayerAttackEntityCooldownResetEvent 2026-09-08 19:33:46 +02:00
Lulu13022002 08d65a7618 PlayerArmorChangeEvent 2026-09-08 19:33:46 +02:00
Lulu13022002 5f48209795 PlayerAdvancementCriterionGrantEvent 2026-09-08 19:33:46 +02:00
Lulu13022002 e18d894a1b IllegalPacketEvent 2026-09-08 19:33:46 +02:00
Lulu13022002 c32bbc64a7 AsyncPlayerChatEvent 2026-09-08 19:33:46 +02:00
Lulu13022002 2417fcf770 PlayerVelocityEvent 2026-09-08 19:33:46 +02:00
Lulu13022002 f69babca92 PlayerToggleSprintEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 e329288e71 PlayerToggleSneakEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 f6e5d12043 PlayerToggleFlightEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 349954c88b PlayerTakeLecternBookEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 590797a8b8 PlayerSwapHandItemsEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 396665c697 PlayerStatisticIncrementEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 f968ceb56f PlayerSpawnChangeEvent 2026-09-08 19:33:45 +02:00
Lulu13022002 100bb1a330 PlayerSignOpenEvent 2026-09-08 19:33:44 +02:00
Lulu13022002 35d737d013 PlayerShowEntityEvent 2026-09-08 19:33:44 +02:00
Lulu13022002 b203c309ee PlayerShearEntityEvent 2026-09-08 19:33:44 +02:00
Lulu13022002 ffc30dfe41 PlayerRiptideEvent 2026-09-08 19:33:44 +02:00
Lulu13022002 fb208e8c1f PlayerResourcePackStatusEvent 2026-09-08 19:33:44 +02:00
Lulu13022002 7ae1e99865 PlayerRecipeDiscoverEvent 2026-09-08 19:33:44 +02:00
Lulu13022002 7ce8db084a PlayerRecipeBookSettingsChangeEvent 2026-09-08 19:33:43 +02:00
Lulu13022002 ae74a09461 PlayerRecipeBookClickEvent 2026-09-08 19:33:43 +02:00
Lulu13022002 51ed87cf57 PlayerQuitEvent 2026-09-08 19:33:43 +02:00
Lulu13022002 cc5518feeb PlayerPreLoginEvent 2026-09-08 19:33:43 +02:00
Lulu13022002 c905812e71 PlayerPickupItemEvent 2026-09-08 19:33:43 +02:00
Lulu13022002 a8166bcff5 PlayerMoveEvent 2026-09-08 19:33:43 +02:00
Lulu13022002 0895fec3d6 PlayerLoginEvent 2026-09-08 19:33:42 +02:00
Lulu13022002 4e9ce25dcd PlayerLocaleChangeEvent 2026-09-08 19:33:42 +02:00
Lulu13022002 6e9c581a7a PlayerLinksSendEvent 2026-09-08 19:33:42 +02:00
Lulu13022002 77a605370d PlayerLevelChangeEvent 2026-09-08 19:33:42 +02:00
Lulu13022002 4f7d947fa9 PlayerKickEvent 2026-09-08 19:33:42 +02:00
Lulu13022002 504dbab8a3 PlayerJoinEvent 2026-09-08 19:33:42 +02:00
Lulu13022002 bd3f8c5099 PlayerItemMendEvent 2026-09-08 19:33:41 +02:00
Lulu13022002 8732f8d6ee PlayerItemHeldEvent 2026-09-08 19:33:41 +02:00
Lulu13022002 6e64b30d0b PlayerItemDamageEvent 2026-09-08 19:33:41 +02:00
Lulu13022002 2523a86612 PlayerItemConsumeEvent 2026-09-08 19:33:41 +02:00
Lulu13022002 ec6b7510ca PlayerItemBreakEvent 2026-09-08 19:33:41 +02:00
Lulu13022002 3a97aae601 PlayerInteractEvent 2026-09-08 19:33:41 +02:00
Lulu13022002 1161288346 PlayerInputEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 665db9d5d4 PlayerHideEntityEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 bdfdb298b4 PlayerHarvestBlockEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 3a2aa6fa9b PlayerGameModeChangeEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 f0c9d7c46a PlayerFishEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 2cb6460c5d PlayerExpCooldownChangeEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 7964a7dd34 PlayerExpChangeEvent 2026-09-08 19:33:40 +02:00
Lulu13022002 f708170b5d PlayerEggThrowEvent 2026-09-08 19:33:39 +02:00
Lulu13022002 cd57a8ce55 PlayerEditBookEvent 2026-09-08 19:33:39 +02:00
Lulu13022002 ea7bc08754 PlayerDropItemEvent 2026-09-08 19:33:39 +02:00
Lulu13022002 759c949dfc PlayerCommandSendEvent 2026-09-08 19:33:39 +02:00
Lulu13022002 89bf3b791c PlayerChatTabCompleteEvent 2026-09-08 19:33:39 +02:00
Lulu13022002 8f2362d544 PlayerChatEvent 2026-09-08 19:33:39 +02:00
Lulu13022002 a741a0f8bd PlayerChannelEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 6630607358 PlayerChangedWorldEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 1b1d891f1e PlayerChangedMainHandEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 7fbde83842 PlayerBucketEntityEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 900a47f4e8 PlayerBucketEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 ce5255d6a4 PlayerBedLeaveEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 b388f0dc0a PlayerBedEnterEvent 2026-09-08 19:33:38 +02:00
Lulu13022002 3dc7a8ae4c PlayerAttemptPickupItemEvent 2026-09-08 19:33:37 +02:00
Lulu13022002 cf6bf97b43 PlayerInteractEntityEvent 2026-09-08 19:33:37 +02:00
Lulu13022002 85f4d46701 PlayerAdvancementDoneEvent 2026-09-08 19:33:37 +02:00
Lulu13022002 6cb9e3318f PlayerAnimationEvent 2026-09-08 19:33:37 +02:00
Lulu13022002 7107732cb6 AbstractRespawnEvent 2026-09-08 19:33:37 +02:00
Lulu13022002 f6f8f4ff77 PlayerCommandPreprocessEvent 2026-09-08 19:33:37 +02:00
Lulu13022002 024b97d466 AbstractChatEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 0a39f88496 AsyncPlayerSpawnLocationEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 858b72c074 PlayerItemGroupCooldownEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 7e9f5647f3 PlayerPurchaseEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 8ac44842d5 PrePlayerAttackEntityEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 aec560ee7b PlayerUntrackEntityEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 6062382779 PlayerTrackEntityEvent 2026-09-08 19:33:36 +02:00
Lulu13022002 d04a432231 PlayerStopUsingItemEvent 2026-09-08 19:33:35 +02:00
Lulu13022002 c647a6318a PlayerPickItemEvent 2026-09-08 19:33:35 +02:00
Lulu13022002 ea2b4c2b7d PlayerStonecutterRecipeSelectEvent 2026-09-08 19:33:35 +02:00
Lulu13022002 18b128ae31 PlayerShieldDisableEvent 2026-09-08 19:33:35 +02:00
Lulu13022002 76154a0188 PlayerServerFullCheckEvent 2026-09-08 19:33:35 +02:00
Lulu13022002 a7d3dc626e PlayerOpenSignEvent 2026-09-08 19:33:35 +02:00
Lulu13022002 e6540faed8 PlayerNameEntityEvent 2026-09-08 19:33:34 +02:00
Lulu13022002 2150f1193e PlayerMapFilledEvent 2026-09-08 19:33:34 +02:00
Lulu13022002 ca5529b139 PlayerLoomPatternSelectEvent 2026-09-08 19:33:34 +02:00
Lulu13022002 3a3021b52a PlayerLecternPageChangeEvent 2026-09-08 19:33:34 +02:00
Lulu13022002 660f5ea092 PlayerItemFrameChangeEvent 2026-09-08 19:33:34 +02:00
Lulu13022002 e2f9e92286 PlayerBedFailEnterEvent 2026-09-08 19:33:34 +02:00
Lulu13022002 eca438aed3 PlayerChangeBeaconEffectEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 0dbcc07d4d PlayerInventorySlotChangeEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 b86e74cd5b PlayerInsertLecternBookEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 196dae383f PlayerFlowerPotManipulateEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 ae640407cf PlayerFailMoveEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 8b16616b81 PlayerDeepSleepEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 fe5da06d79 PlayerCustomClickEvent 2026-09-08 19:33:33 +02:00
Lulu13022002 2c83fb4cbc migrate PlayerClientLoadedWorldEvent 2026-09-08 19:33:32 +02:00
Creeam a2a42c5b12 Correctly consume chunkStatus in loadChunksAsync (#14220)
Reintroduce a missing patch hunk from moonrise which consumes the added chunk status parameter in ServerLevel#loadChunksAsync.
2026-08-29 12:31:38 +01:00
CPieterandJake Potrebic 1797fbccf1 Add PredicateChoice (#12017)
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2026-08-28 20:55:17 +01:00
Pedro bb09b431d2 Bump spark integration to version 1.10.180 (#14214) 2026-08-25 14:57:53 +01:00
Spottedleaf 5d4f9bd0e4 Sync DataConverter
- https://github.com/PaperMC/DataConverter/commit/72494376717b1a7912fad592a6cf9a203ff66109
- https://github.com/PaperMC/DataConverter/commit/01cfab62813b3200c9f9e94a5d8feccbc6875d43
2026-08-25 06:05:47 -07:00
Pedro bd0c804a19 [ci-skip] Fix badge version filter syntax in README.md [ci skip] (#14140) 2026-08-24 17:49:23 +01:00
Shane Freeder 27af5dde55 Bump velocity-natives to 4.1.0 release 2026-08-24 17:42:26 +01:00
Spottedleaf 37dc5450d9 Update Leafpile to 1.1.0
This is mainly to include a fix for MultiThreadedQueue iterator
removal and SWMR hash table equality comparison.
2026-08-23 01:56:34 -07:00
Warrior de518f79b5 Bump spark-paper to the latest version (#14205) 2026-08-22 18:15:46 +01:00
Strokkur24 0bdc80db32 Remove name field in Event class (#14198) 2026-08-20 21:05:12 +02:00
Spottedleaf c9e894d3cc Do not re-order ClientboundLoginCompressionPacket
Using Connection#scheduleNettyTask will schedule a task on the netty thread
in the same manner that Connection#send would. However,
Connection#send will append to the pending actions if it is not
empty - causing a re-order if used during the task scheduled with
Connection#scheduleNettyTask.
2026-08-10 22:12:14 -07:00
Jason Penilla 11502e7a8f [ci skip] Add agent guidelines (#14172)
Not an official policy or stance, but should help steer agents and their users towards more thoughtful contributions. This is more of an experiment in reducing the triage workload without adding more strict processes like other projects have done (i.e. Ghostty, Pi, Herdr).

Things that might cause us to revisit this:
- Someone on the team starts using cloud agents for Paper or similar, we may need to adjust the maintainer check instruction
- The amount of tokens this adds (or behaviors it causes) ends up being a problem for us or external users who follow the guidelines
- Future models need less explicit instructions
2026-08-09 12:42:56 -07:00
Lulu13022002 7e319978c4 [ci skip] make file patches compilable 2026-08-09 16:50:36 +02:00
Lulu13022002 6c8d413223 [ci skip] fix runDev command not working
partially revert bdd78d0c5d
2026-08-07 20:03:53 +02:00
Spottedleaf f5706462f8 Use nano time when waiting for channels to close
UTC time is not appropriate to use for measuring elapsed time,
as it may jump.
2026-08-07 09:06:45 -07:00
Jake Potrebic 1cd6d5799c Checkstyle configuration for API (#11859) 2026-08-07 16:36:45 +02:00
Tamion 9119d1d121 Add EntityCollideWithEntityEvent (#11906) 2026-08-07 14:32:32 +00:00
Ruoyi Xu 592da1c275 Add entity removal reason API (#13075) 2026-08-07 14:05:34 +00:00
Warrior bdd78d0c5d Bump spark-paper to 1.10.172 (#14154) 2026-08-07 13:11:56 +01:00
Nassim Jahnke 6cd1c78e82 Use identity/enum maps for material maps 2026-08-07 14:08:49 +02:00
TonytheMacaroni b1a33c6b1a Add plugin context to DamageSource (#12991) 2026-08-07 09:03:41 +02:00
Beanes 2951b50613 Fix login compression setup ordering/race condition (#13929) 2026-08-07 09:03:16 +02:00
Warrior ae22db2692 Add maximum time to wait for channels to close (#14126) 2026-08-07 09:02:57 +02:00
Spottedleaf 1f7285664c Sync Moorise
- https://github.com/Tuinity/Moonrise/commit/d71d640a4894ade561957a521377a540712ccd93
- https://github.com/Tuinity/Moonrise/commit/685e160f23fbc545ec830efe0eeeb053d44aa098
- https://github.com/Tuinity/Moonrise/commit/7aa61f63504140fde60609df53b1fc52b3fba3ad
- Sort of https://github.com/Tuinity/Moonrise/commit/adfd737278908d6162ec363ad247a662847ae94e
2026-08-06 19:40:10 -07:00
Martin a40947c0ac Expose picked item in PlayerPickItemEvent (#14132) 2026-08-06 20:05:27 +01:00
Warrior 02ef1cf05d Remove unnecessary 100ms delay on shutdown (#14139) 2026-08-06 19:43:20 +01:00
Nassim Jahnke 7731202e1f Remove experimental annotations from a lot of API (#14106) 2026-08-06 12:24:52 +02:00
Clexus 5b3f87ac10 [ci skip] Move finite check to AngleImpl (#14147) 2026-08-06 10:01:55 +00:00
Max Lee 2035ad384c Only scan world if Villager profession has secondary POI (#14144) 2026-08-06 12:00:20 +02:00
Strokkur24andLulu13022002 714512e3bc Add overloads to UnsafeValues#loadAdvancement and fix data persistence (#12553)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-08-05 22:51:57 +02:00
Lulu13022002 06a75871be Properly remove items from shelves (#13567) 2026-08-05 18:42:13 +00:00
JustAHuman-xD c6e0c79af1 Add EntityConstructEvent (#13907) 2026-08-05 17:31:24 +02:00
Amine Kacimi 71fa8decd9 Add SulfurCubeSwallowEvent (#14061) 2026-08-05 11:09:21 -04:00
Joe 3c6ac856f8 feat: add EntityType#getSpawnCategory() (#14083) 2026-08-05 16:36:44 +02:00
Lulu13022002 1077163fa6 [ci skip] Rebuild patches 2026-08-05 15:50:41 +02:00
dqu 464d3003b3 Fix default crafting remainder when recipe is null (#12367) 2026-08-05 09:20:05 -04:00
Hiram AndersonandWarrior 0a993450f1 Add Player#unsetFixedPose (#12853)
Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com>
2026-08-02 22:32:48 +02:00
David caf76f1f96 [ci skip] Update MIT License authors list (#14134) 2026-08-02 21:20:15 +02:00
Justin 281bd76517 Expose resetFlyingTicks for Player (#14016) 2026-08-02 11:32:15 -04:00
John c692832618 Add getLastDamageTime method to Combat Tracker API (#13854) 2026-08-02 11:19:36 -04:00
Pedro b59e472cda Update villager prices before opening menu to player (#13906) 2026-08-02 11:13:24 -04:00
Nassim Jahnke e472fdbdd2 [ci skip] Update action-pr-publishing 2026-08-02 17:12:32 +02:00
WarriorandDoc f538c61c2c Add getPlayer/EntityOrThrow utility methods to CommandSourceStack (#14116)
Co-authored-by: Doc <git@mrdoc.dev>
2026-08-02 10:57:04 -04:00
Pedro a95ae8d00f Expose reachRange argument in findPath for PathFinder (#13026) 2026-07-29 00:11:09 +02:00
Rothes 4ba9bed2f6 Always load totalEntityAge (#13918) 2026-07-28 23:37:22 +02:00
Pedro 782a076f0e Don't show entities from hideEntity API when changing dimension (#13350) 2026-07-28 23:22:29 +02:00
Matt Baxter 26e81c4509 Add PlayerCodeOfConductSendEvent (#13512) 2026-07-26 18:10:38 +00:00
Nassim Jahnke f9fb80b79e Change build channel to stable 2026-07-26 18:56:36 +02:00
Clexus 05277d4949 Expose relative parameters to setRotation (#13901) 2026-07-26 15:33:34 +02:00
Nassim Jahnke 57d665efcc Move version and console history to .paper dir (#14104) 2026-07-26 14:51:17 +02:00
Zapolyarny 2d76c9c1d0 Fix BlockData merge for cached states (#14080) 2026-07-26 12:13:06 +01:00
Nassim Jahnke 8a52ce8c27 Don't create help and permissions files by default
Adding permissions to commands that don't have any yet may be eventually put into a more easily usable config option, or into a separate plugin. Changing help messages seems to have no use whatsoever and offers less than stellar configurability anyway
2026-07-26 10:49:01 +02:00
PedroandJason Penilla 572ef8fd03 Skip migration for deleted dimensions post first migration in server (#13874)
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
2026-07-26 08:12:20 +00:00
PandaandBjarne Koll 26a624bc52 Add internal API to configure pending player network id (#14051)
Co-authored-by: Bjarne Koll <git@lynxplay.dev>
2026-07-26 08:07:56 +00:00
𝑩𝒊𝒒𝒖𝒂𝒕𝒆𝒓𝒏𝒊𝒐𝒏𝒔 d5c888a77d Configurable TPS catchup (#14089) 2026-07-26 09:06:02 +01:00
Bjarne Koll 41a2e07ac2 Hook up shelves to item obfuscator
Similar to items held by players, items displayed in shelves can be
inspected by malicious clients and inspected without actually removing
from the shelve.
The existing anticheat settings already cover the player held items but
do not cover the shelve block.
2026-07-26 08:56:36 +01:00
Pedro 1220b0c3a9 Add API for CreakingHeart (#12095) 2026-07-26 09:52:32 +02:00
Glicz a00ccce33c Add Adventure playSound(Sound, Position) (#14100) 2026-07-26 07:50:56 +00:00
Noctiro ccee0479b2 Fix PlayerLinksSendEvent not firing when no global links are configured (#14026) 2026-07-26 09:36:27 +02:00
Marco N.andLulu13022002 5563e58283 Optimize waypoint distance check (#13857)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-07-25 13:54:40 +00:00
Creeam 013d163927 Filter out disallowed control chars (#14057) 2026-07-25 14:40:59 +01:00
David 4b3b3974f3 Port mspt command to brigadier (#12630) 2026-07-25 13:31:59 +00:00
Bjarne Koll c1408c2db1 Position riders before API teleportation (#13342) 2026-07-25 13:21:42 +01:00
TheZexquexandBjarne Koll a7292641d6 Fix data component conversion in CraftEntity throwing a ClassCastException (#14099)
Co-authored-by: Bjarne Koll <git@lynxplay.dev>
2026-07-25 11:48:09 +00:00
Warrior 480a19b0f9 Implement CraftRegistry#toString (#14095) 2026-07-25 12:26:15 +01:00
Pedro fc9375aa07 [ci skip[ Update build and publish_pr actions (#14070) 2026-07-22 10:54:29 +02:00
Nassim Jahnke 6f3917fe92 Pre-load crash report and data fixers off-main (#14077) 2026-07-22 10:53:41 +02:00
Pedro 3a55f625d4 Fix Adventure Codec for ClickEvent#custom when BinaryTagHolder is null (#14075) 2026-07-21 12:26:27 +01:00
Nassim Jahnke 75c0b485bf Skip entity data fixer schema validation during startup
Saves about half a second of startup time from Vanilla data fixer building
2026-07-17 19:13:33 +02:00
Nassim Jahnke 1569b8dc76 Remove unnecessary extra copy of item stack template result 2026-07-17 12:59:46 +02:00
Nassim Jahnke 2105300972 [ci skip] Only run review status checks on our org 2026-07-16 11:56:55 +02:00
Nassim Jahnke dff5410a59 [ci skip] Update update-projects-action actions 2026-07-15 19:45:32 +02:00
Nassim Jahnke 7e6f626dad [ci skip] Make pr-review-status run through signal action
Approvals (and anything else running on a PR) runs on the fork (for some reason, even if the workflow itself is taken from the default branch?), whichs doesn't have access to secrets
2026-07-15 19:07:32 +02:00
Nassim Jahnke 53cd8f0df6 [ci skip] Test client-id in one of the app-token actions 2026-07-15 18:13:10 +02:00
Rekurse 042abf65dc [ci skip] Add missing period to README.md (#14068) 2026-07-15 17:09:26 +02:00
Nassim Jahnke b4e83001d9 [ci skip] Add action to set PR Projects review status (#14038) 2026-07-12 20:13:18 +02:00
Wouter Gritter f2d7ce8473 [ci skip] Fix GraalVmProcessor compile time warning (#14052) 2026-07-12 18:22:12 +02:00
Warrior 1cb58fb4e2 Add warning reason for the PigZapEvent deprecation (#14055) 2026-07-12 16:07:19 +00:00
Nassim Jahnke 7cc950aba4 Promote build channel to BETA 2026-07-12 15:47:26 +02:00
Bjarne Koll aaa6591beb Do not delay when running minor file fix (#14054) 2026-07-12 14:41:43 +01:00
Bjarne Koll e04b266661 Add AsyncServerDataFixerRemoveBlockEntityEvent (#14033) 2026-07-12 12:42:17 +00:00
Bjarne Koll 8cd4f472d8 Deprecate spawnAnimals spawn flag (#14043) 2026-07-09 08:34:35 +00:00
Mickey42302andBjarne Koll a313ca1547 Require permission level for chase command (#14034)
Co-authored-by: Bjarne Koll <git@lynxplay.dev>
2026-07-08 18:15:25 +00:00
Lulu13022002 111d388863 Deprecate concrete custom tag in favour of vanilla tag (#14037) 2026-07-08 19:05:36 +01:00
Warrior 3a3d1c00fa Fix build limit message being sent when it shouldn't be (#13971) 2026-07-06 20:14:44 +02:00
Pedro 950c429a62 Only call EntityUnleashEvent for leashed Sulfur Cube (#14036) 2026-07-06 19:45:21 +02:00
Lulu13022002 f6ce454471 Expose client brand to connection (#13931) 2026-07-06 19:38:47 +02:00
Jake Potrebic 3f59d1ed48 Add registry api for trim patterns and materials (#12812) 2026-07-06 19:32:15 +02:00
Warrior c7d6b3de23 Remove timings executor from event executor stack (#13969) 2026-07-06 18:38:34 +02:00
Nassim Jahnke eb44b4bfd0 [ci skip] Update actions 2026-07-06 18:36:59 +02:00
Bjarne Koll 2717585e68 [ci skip] Move moonrise fixes into feature patch
DedicatedServer#saveAllChunks needs to include the close param
introduced by moonrise to the MinecraftServer type to ensure
notification managers are called.

Having this diff in the per-file patches prevents non-moonrise execution
of paper.
2026-07-04 16:18:12 +01:00
Spottedleaf 87c4d42222 Add EntityLookup#hasEntity(int)
Also, adjust hasEntity(UUID) so that non-accessible
entities do return true. This brings behavior for this
function back in line with Vanilla.

Port of https://github.com/Tuinity/Moonrise/commit/615ce340ef1dccf7be70c3188fbc4b89143c4975
2026-07-04 07:06:36 -07:00
MiniDigger | Martin ad5d26a7bb update fill-gradle to fix changelog (#14028) 2026-07-03 20:52:40 +02:00
LeonTG 76d2669d8d Expand Entity Sound API (#13914) 2026-07-03 15:36:59 +02:00
Lulu13022002 b99b5038e0 Fix summoned trident damage (#13923) 2026-07-03 14:19:13 +02:00
Yannick Lamprecht 1c72b04048 fix(#13934): creation of KeyedBossBar instance does not match when retrieving (#13938) 2026-07-03 14:17:03 +02:00
Gunjan Jaswal fab88871e2 Fix connection throttle cleanup wiping the whole tracker (#14011) 2026-07-02 22:00:32 +01:00
PedroandLulu13022002 a0bf412b4d Fix Block#applyBoneMeal returning false on success (#14014)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-07-02 22:17:24 +02:00
Lulu13022002 4f11c4d5b4 Fix sign placement (#14018) 2026-07-02 18:51:25 +01:00
Clexus 213718b009 [ci skip] Fix wrong default value for ItemDisplayTransform (#14020) 2026-07-02 17:26:23 +00:00
Nassim Jahnke 1c67f14d78 [ci skip] Rebuild patches 2026-07-02 19:02:32 +02:00
Shane Freeder 8c8eb86f41 [ci skip] chore: Remove Jetbrains sponsor 2026-07-01 17:10:35 +01:00
0ae1b4239e Combined 26.2 dev work (#14001)
Co-authored-by: Bjarne Koll <git@lynxplay.dev>
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
Co-authored-by: Pedro <3602279+Doc94@users.noreply.github.com>
Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com>
Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
Co-authored-by: Kieran Wallbanks <kieran.wallbanks@gmail.com>
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
2026-06-28 21:57:36 +02:00
99-i 76d2ac758c [ci skip] Fix AreaEffectCloud doc comments (#13926) 2026-06-03 19:31:16 +02:00
Pedro 20938c7217 Set Obsolete the use of PotionMeta in Potion entities (#13892) 2026-06-03 19:31:07 +02:00
Pedro ca5e948ace Fix override of new item for Firework entity (#13891) 2026-06-03 19:30:57 +02:00
Nassim Jahnke e2c7e5cff2 Limit projectiles size 2026-06-03 19:30:24 +02:00
Bjarne Koll d4fe85375a [ci skip] Move paperweight and mache to non snapshots
Paper was previously depending on snapshots of paperweight and,
indirectly through the mache build, sculptor and codebook.

As we prepare work on 26.2, a new snapshot cycle for some of these tools
is required and 26.1.x cannot keep depending on them.
2026-06-02 20:08:53 +02:00
Martijn 3580fa4066 Use internal block to item conversion for flower pots (#13880) 2026-06-02 13:55:17 +02:00
Warrior 10a73fe40f Add and clarify Attribute#getDefaultValue (#13345) 2026-05-31 19:07:56 +02:00
roro1506HD 34cf3ab0f9 Fix loot tables being reset before death event (#13886) 2026-05-26 17:00:28 +02:00
Bjarne KollandLulu13022002 fd45f4b2e3 Upgrade to vineflower 12.0.0 (#13882)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-05-22 10:45:39 +01:00
Shane Freeder 5c917dabab [ci skip] Fixed accidently test plugin changes 2026-05-16 23:34:09 +01:00
Shane Freeder 2186e1e407 Fix BlockRecieveGameEvent destination block 2026-05-16 23:31:38 +01:00
Nassim Jahnke 711c5de2b0 Add counting ops 2026-05-11 08:56:48 +02:00
Pedro 687ba1e391 Adds missing deprecation for Player#boostElytra (#13088) 2026-05-10 14:34:55 -04:00
Nassim Jahnke 8dea6f1761 Fork friendly byte buf correctly 2026-05-08 19:19:07 +02:00
Alejandro Nieto b4682bfef6 Fix clicked items disappearing when player dies (#13002) 2026-05-04 08:23:40 +02:00
Warrior b685281d74 [ci skip] Mention documenting new config options in CONTRIBUTING.md (#13664) 2026-05-03 16:43:03 -04:00
Lulu13022002 b8b4a1c7cd Update Player#getClientViewDistance (#13530) 2026-05-03 16:40:33 -04:00
Lulu13022002 11dbf11014 Call BlockRedstoneEvent for more interactions (#12206) 2026-05-03 16:38:16 -04:00
Nassim Jahnke 39bd1bac06 [ci skip] Rebuild patches 2026-05-03 21:23:19 +02:00
Harry afea65c2d2 Fix leash event for boats and elytra (#13697) 2026-05-03 12:47:36 -04:00
masmc05 1835b0468f Call AsyncPlayerPreLoginEvent/AsyncPlayerConnectionConfigureEvent on virtual threads (#13816) 2026-05-03 12:46:14 -04:00
Owen b80b604636 fix: Attack strength ticker cooldown incorrectly reset (#13856) 2026-05-03 12:38:13 -04:00
Pedro 6048c2d97c Fix LivingEntity#knockback ignored when its Player (#13842) 2026-05-03 12:38:02 -04:00
Lulu13022002 2e7bb166b1 Deprecate dyes custom tag in favour of vanilla tag (#13855) 2026-05-03 12:14:01 -04:00
Nassim Jahnke 39a1aa5c7f Promote build channel to stable 2026-04-30 18:21:45 +02:00
𝑩𝒊𝒒𝒖𝒂𝒕𝒆𝒓𝒏𝒊𝒐𝒏𝒔 174eab0192 Update Improve exact choice recipe ingredients (#13788) 2026-04-29 08:08:28 +00:00
masmc05 5d62ec0ed9 Prevent spawn location getters from allowing making the location invalid (#13831) 2026-04-27 17:52:49 +01:00
masmc05 17524d0ee0 Add precondition to spawn location setter in spawn events (#13830) 2026-04-27 16:56:47 +01:00
Jason Penilla 7799bf28ae Update Paperclip to v3.0.4
Updates Java runtime version check
2026-04-26 13:58:31 -07:00
Coredex 55be6c0ef5 Fix boat and minecart inventories on region switch [ci skip] (#13826) 2026-04-26 16:01:07 -04:00
Nassim Jahnke 5dc4afc1dd Promote build channel to BETA 2026-04-26 20:20:48 +02:00
PedroandLulu13022002 f4e769a74d Improvements checks for arguments numbers (#13290)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-04-26 17:55:35 +02:00
Lulu13022002 651d8481b7 Finish world key initial migration (#13824) 2026-04-26 17:26:40 +02:00
Nassim Jahnke acfe105b9d Add options to disable chunk and block entity ticking (#13821) 2026-04-26 17:09:05 +02:00
Nassim Jahnke a64ea13e8e Re-implement per-world and per-player time (#13814) 2026-04-26 13:37:46 +02:00
Warrior 1f8197327f Allow ServerboundChangeGameModePacket if player has /gamemode permissions (#13507) 2026-04-26 01:00:30 -04:00
Owen 8021488ef4 Disconnect State Fixes (#13616)
Replaces the processedDisconnect flag and executeBlocking cleanup with a force kill flag processed by the connection listener tick. executeBlocking(connection::handleDisconnection) did not actually Work, as the the channel is still open at that point because the disconnect packet hasn't been flushed. Replaced with handleConnectionDisconnectOnNextTick, which the connection listener processes on the next tick.

processedDisconnect was an old flag preventing double disconnect.

The same protection is now provided by vanilla's disconnectionHandled check on Connection.

Drops the SPIGOT-924 player.doTick() call on quit. This is an ancient spigot bug fix that causes issues and weird event fires whilst the player is disconnected.

Removes the login side disconnecting flag and the matching tick guard, since the connection now closes properly on its own. The login disconnect path moves to disconnectAsync so it doesn't block on IO.
2026-04-25 18:06:21 -04:00
Miles 182b2f8a2a Add Point Of Interest API (#12117) 2026-04-25 16:27:55 -04:00
Owen a8c05a35c2 Add an option to WorldCreator to avoid spawn location computation on world creation (#13407) 2026-04-25 15:31:47 -04:00
Pedro 945aea9961 Fix Damager for HangingBreakByEntityEvent and minor improvements (#12615) 2026-04-25 14:52:57 -04:00
Pedro 4aef3f0a67 Remove already fixed vanilla bug MC-244739 (#13787) 2026-04-25 14:26:37 -04:00
Pedro 60073714ba Update MOJIRA reference in DeOp command response for multiple targets [ci skip] (#13812) 2026-04-25 14:20:54 -04:00
Rothes 4f184db3c9 Fix memory leak on constantly damage (#13455) 2026-04-25 14:19:52 -04:00
Illia Bondar 57d84f68a3 Prevent NPE on ThrownPotion#splash (#13683) 2026-04-25 14:16:47 -04:00
Warrior 49daadd25d Fix insomniaStartTicks option being ignored for phantom spawning (#13609) 2026-04-25 13:57:03 -04:00
Pedro b2b1e177cb Improvement to Vehicle damage events (#13572) 2026-04-25 13:46:17 -04:00
PedroandLulu13022002 90aee8e007 Update world methods to take in account environment attributes (#13543)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-04-25 19:20:49 +02:00
Pedro d74f6bc77a Support for Kill damageable entities (#13667) 2026-04-25 13:12:18 -04:00
Kezz dd203a2716 chore: Don't log errors for accepting the EULA via the system property (#13681) 2026-04-25 13:02:42 -04:00
David Lüdtke dcf5577aae Fix PlayerProfile applySkinToPlayerHeadContents (#13692) 2026-04-25 12:53:39 -04:00
Harold c39822ae08 reset pending keepalive state on listener handoff during reconfiguration (#13712) 2026-04-25 12:50:10 -04:00
David 4af86ff3e0 Handle null ServerLevel in fromGlobalPos (#13703) 2026-04-25 12:41:23 -04:00
ac15CR 1a8417b12b [ci skip] Add Javadocs for PotionEffect withX methods (#13723) 2026-04-25 12:39:33 -04:00
personalized-advertising 65461225ef Update health after setPlayerProfile() (#13717) 2026-04-25 12:32:53 -04:00
PedroandLulu13022002 7b31cc2b6b Make leaveMessage in PlayerKickEvent nullable (#13804)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-04-25 12:30:26 -04:00
sovdeeandLulu13022002 aa6f09b098 Prevent Happy Ghast from playing mount/dismount noises when silenced (#13807)
Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
2026-04-25 12:01:24 -04:00
Nassim Jahnke 944ce44a4a Fix CraftWorld identifier passing 2026-04-25 11:59:27 +02:00
Pedro 6fe7eb5aae Load World Key when its instance is created (#13818) 2026-04-25 09:58:13 +02:00
Spottedleaf 948acae8c2 Raise existing level.dat data size quota
It appears that custom data may push it to be higher than
what the default quota allows for.

See https://mojira.dev/MC-307144

Fixes https://github.com/PaperMC/Paper/issues/13820
2026-04-24 19:25:14 -07:00
Nassim Jahnke ef4e85d6db Replace remaining relevant getWorld(String) use 2026-04-24 19:16:43 +02:00
Shane Freeder 3611a815e6 Fix String#toLower/UpperCase usages 2026-04-23 16:37:29 +01:00
Jason Penilla 1d14197790 fix setSpawnLocation changing respawn dimension
it was carrying some leftover intermediary shape from before PaperLevelOverrides design was finalized - revert to original shape for correct behavior

also revert ordering change in setRespawnData
2026-04-21 09:49:28 -07:00
Spottedleaf 6bac3c95bf Delay open/close callbacks for chests
The logic for chests may invoke block updates, which may not
be safe to perform. For example, inventory closing due to
player logout (which restricts chunk loading due to being
inside an entity status callback) or during shutdown (which has
chunk loading restrictions due to the chunk system being halted).

This also fixes the recheckOpeners function not firing
the redstone event if the open count changes.
2026-04-20 03:05:27 -07:00
Spottedleaf 9b1dd57135 Do not empty beehives from worldgen threads
The level is not set here, so emptying would cause a crash
due to NPE, and of course the logic is not safe to run from
the worldgen thread even if the level was set.
2026-04-20 02:48:53 -07:00
Spottedleaf 4be1a310c2 Add EntityScheduler#scheduleOrExecute
This is useful on Folia where we may want to try to avoid
scheduling a delayed task.
2026-04-20 02:15:28 -07:00
Nassim Jahnke 66d3bbed38 Update frosted ice patch for 26.1 2026-04-19 18:41:44 +02:00
Jonathan d0be5e20fd Call BlockFadeEvent for FrostedIce (#13764) 2026-04-19 16:14:54 +02:00
Asish Kumar dd0810c4af Skip inactive AI ticks for unaware mobs (#13781) 2026-04-19 16:14:21 +02:00
Pedro 04ee8eac9b Remove Paper config unsupported-settings.compression-format (#13800) 2026-04-19 16:08:48 +02:00
Warrior c58cba39fb Port blockstate validation patch (#13786) 2026-04-19 16:08:32 +02:00
2229 changed files with 69961 additions and 43404 deletions

No files matched your search

+203
View File
@@ -0,0 +1,203 @@
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="SuppressionFilter">
<property name="file" value="${config_loc}/suppressions.xml"/>
<property name="optional" value="false"/>
</module>
<!--Single Suppression Filters-->
<module name="io.papermc.checkstyle.filters.BetterSuppressionSingleFilter">
<!--Suppresses warnings except for common TYPE_USE that should be on the same line-->
<property name="checks" value="AnnotationOnSameLine"/>
<property name="messageKey" value="annotation\.same\.line"/>
<property name="arguments" value="^(?!(${type_use_annotations}))"/>
</module>
<!--Javadoc Comments-->
<module name="JavadocPackage"/>
<!--Misc-->
<module name="NewlineAtEndOfFile"/>
<!--Whitespace-->
<module name="FileTabCharacter"/>
<module name="TreeWalker">
<module name="SuppressionXpathFilter">
<property name="file" value="${config_loc}/xpath-suppressions.xml"/>
<property name="optional" value="false"/>
</module>
<module name="SuppressionCommentFilter"/>
<!--Annotations-->
<module name="AnnotationOnSameLine">
<!--matches all annotations, but most are suppressed in above-->
<property name="tokens" value="METHOD_DEF"/>
</module>
<module name="AnnotationUseStyle"/>
<module name="MissingDeprecated"/>
<!--Block Checks-->
<module name="AvoidNestedBlocks"/>
<module name="EmptyBlock"/>
<module name="LeftCurly"/>
<module name="RightCurly"/>
<!--Class Design-->
<module name="FinalClass"/>
<module name="HideUtilityClassConstructor"/>
<module name="InterfaceIsType"/>
<module name="OneTopLevelClass"/>
<module name="SealedShouldHavePermitsList"/>
<!--Coding-->
<module name="AvoidDoubleBraceInitialization"/>
<module name="AvoidNoArgumentSuperConstructorCall"/>
<module name="ConstructorsDeclarationGrouping"/>
<module name="CovariantEquals"/>
<module name="DeclarationOrder"/>
<module name="DefaultComesLast"/>
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<module name="FallThrough"/>
<!-- Use non-final variables as an identifier of old code for now -->
<!--<module name="FinalLocalVariable">
<property name="validateEnhancedForLoopVariable" value="true"/>
<property name="validateUnnamedVariables" value="true"/>
<property name="tokens" value="PARAMETER_DEF,VARIABLE_DEF"/>
</module>-->
<module name="IllegalToken"/> <!--just labels by default-->
<module name="IllegalType"/>
<module name="PatternVariableAssignment"/>
<module name="RequireThis">
<property name="validateOnlyOverlapping" value="false"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="StringLiteralEquality"/>
<module name="UnnecessaryNullCheckWithInstanceOf"/>
<module name="UnnecessarySemicolonAfterOuterTypeDeclaration"/>
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration"/>
<module name="UnnecessarySemicolonInEnumeration"/>
<module name="UnnecessarySemicolonInTryWithResources"/>
<module name="UnusedCatchParameterShouldBeUnnamed"/>
<module name="UnusedLocalVariable"/>
<module name="WhenShouldBeUsed"/>
<!--Headers--> <!--N/A-->
<!--Imports-->
<module name="AvoidStarImport"/>
<module name="CustomImportOrder">
<property name="customImportOrderRules" value="THIRD_PARTY_PACKAGE,STATIC"/>
<property name="standardPackageRegExp" value="^$"/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
</module>
<module name="IllegalImport">
<property name="regexp" value="true"/>
<!--checker-qual nullability-->
<property name="illegalClasses" value="org\.checkerframework\.checker\.nullness\.qual\.(Nullable|NonNull|DefaultQualifier|MonotonicNonNull)"/>
<!--jetbrains nullability-->
<property name="illegalClasses" value="org\.jetbrains\.annotations\.(NotNull|Nullable|NotNullByDefault)"/>
<!--javax nullability-->
<property name="illegalClasses" value="javax\.annotation\.(Nonnull|Nullable)"/>
<message key="import.illegal" value="Illegal nullability annotation - {0}, use JSpecify"/>
</module>
<module name="RedundantImport"/>
<module name="UnusedImports"/>
<!--Javadoc Comments-->
<module name="AtclauseOrder">
<property name="tagOrder" value="@param, @return, @throws, @see, @deprecated, @hidden"/>
</module>
<module name="InvalidJavadocPosition"/>
<module name="JavadocBlockTagLocation"/>
<module name="JavadocContentLocation"/>
<module name="JavadocLeadingAsteriskAlign"/>
<module name="JavadocMethod">
<!--checks all, but doesn't require. If we have a doc, it should be valid-->
<property name="validateThrows" value="true"/>
</module>
<module name="JavadocMissingLeadingAsterisk"/>
<module name="JavadocMissingWhitespaceAfterAsterisk"/>
<module name="JavadocStyle"/> <!--checks all, but doesn't require. If we have a doc, it should be valid-->
<module name="JavadocTagContinuationIndentation"/>
<module name="JavadocType"/> <!--checks all, but doesn't require. If we have a doc, it should be valid-->
<module name="NonEmptyAtclauseDescription"/>
<module name="RequireEmptyLineBeforeBlockTagGroup"/>
<!--Metrics--> <!--N/A-->
<!--Miscellaneous-->
<module name="ArrayTypeStyle"/>
<module name="AvoidEscapedUnicodeCharacters"/>
<module name="CommentsIndentation"/>
<!-- Overlaps with the configured FinalLocalVariable, but is more strict -->
<!--<module name="FinalParameters">
<property name="tokens" value="METHOD_DEF,CTOR_DEF,LITERAL_CATCH,FOR_EACH_CLAUSE,PATTERN_VARIABLE_DEF"/>
</module>-->
<module name="NoCodeInFile"/>
<module name="OuterTypeFilename"/>
<module name="UpperEll"/>
<!--Modifiers-->
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<!--Naming Conventions-->
<module name="AbbreviationAsWordInName">
<property name="allowedAbbreviations" value="JSON,UUID"/>
<property name="ignoreFinal" value="false"/>
</module>
<module name="ClassTypeParameterName"/>
<module name="ConstantName"/>
<module name="IllegalIdentifierName"/>
<module name="InterfaceTypeParameterName"/>
<module name="LambdaParameterName"/>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="MemberName"/>
<module name="MethodName"/>
<module name="MethodTypeParameterName">
<property name="format" value="^[A-Z]+$"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
</module>
<module name="ParameterName"/>
<module name="PatternVariableName"/>
<module name="RecordComponentName"/>
<module name="RecordTypeParameterName"/>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<!--Regexp--> <!--N/A-->
<!--Size Violations--> <!--N/A-->
<!--Whitespace-->
<module name="EmptyForInitializerPad"/>
<module name="EmptyForIteratorPad"/>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
<property name="tokens" value="IMPORT,STATIC_IMPORT,CLASS_DEF,INTERFACE_DEF,ENUM_DEF,STATIC_INIT,INSTANCE_INIT,METHOD_DEF,CTOR_DEF,VARIABLE_DEF,RECORD_DEF,COMPACT_CTOR_DEF"/>
</module>
<module name="GenericWhitespace"/>
<module name="MethodParamPad"/>
<module name="NoLineWrap"/> <!--just imports and packages-->
<module name="NoWhitespaceAfter"/>
<module name="NoWhitespaceBefore"/>
<module name="NoWhitespaceBeforeCaseDefaultColon"/>
<module name="ParenPad"/>
<module name="SingleSpaceSeparator"/>
<module name="TypecastParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<!--Custom-->
<module name="JavadocAlignParameterDescription"/>
<module name="NullabilityAnnotations"/>
<module name="RedundantNullability"/>
<module name="UnnecessaryFullyQualifiedImport"/>
</module>
</module>
+7
View File
@@ -0,0 +1,7 @@
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress checks="MissingJavadoc.*" files="src[\\/]test[\\/]java[^\\/]*[\\/].*"/>
<suppress checks="JavadocPackage" files="src[\\/]test[\\/]java[^\\/]*[\\/].*"/>
</suppressions>
+10
View File
@@ -0,0 +1,10 @@
NonNull
NotNull
Nullable
UnknownNullability
Unmodifiable
UnmodifiableView
Range
Positive
NonNegative
IntRange
+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionXpathFilter Experimental Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2_xpath_experimental.dtd">
<suppressions>
<!--ignores all checks for @Deprecated(forRemoval=*) children-->
<suppress-xpath checks=".*" query="//*[MODIFIERS/ANNOTATION[(@text = 'Deprecated' or *[@text = 'Deprecated'] and ANNOTATION_MEMBER_VALUE_PAIR/IDENT[@text='forRemoval'])]]/descendant-or-self::node()"/>
<!--special case to ignore extra checks outside the root CLASS_DEF if the root CLASS_DEF is marked as deprecated for removal-->
<suppress-xpath checks=".*" query="/COMPILATION_UNIT[CLASS_DEF/MODIFIERS/ANNOTATION[IDENT[@text = 'Deprecated'] and ANNOTATION_MEMBER_VALUE_PAIR/IDENT[@text='forRemoval']]]/descendant-or-self::node()"/>
<!--ignores MissingJavadoc for ApiStatus.Internal children-->
<suppress-xpath checks="MissingJavadoc(Method|Type)" query="//*[MODIFIERS/ANNOTATION/DOT[@text = 'Internal' or *[@text = 'Internal']]]/descendant-or-self::node()"/>
<!--skip for private classes-->
<suppress-xpath checks="FinalClass" query="//CLASS_DEF[MODIFIERS/LITERAL_PRIVATE]"/>
<!--skip for classes inside of methods-->
<suppress-xpath checks="HideUtilityClassConstructor|MissingJavadoc(Method|Type)" query="//CLASS_DEF[ancestor::METHOD_DEF]"/>
</suppressions>
+16 -1
View File
@@ -10,6 +10,7 @@ ij_any_block_comment_add_space = false
ij_any_block_comment_at_first_column = false
ij_any_line_comment_at_first_column = false
ij_any_line_comment_add_space = true
trim_trailing_whitespace = true
[*.tiny]
indent_style = tab
@@ -20,7 +21,7 @@ end_of_line = crlf
[*.yml]
indent_size = 2
[*.patch]
[{*.patch,*.md}]
trim_trailing_whitespace = false
[*.java]
@@ -29,12 +30,26 @@ ij_java_class_count_to_use_import_on_demand = 999999
ij_java_insert_inner_class_imports = false
ij_java_names_count_to_use_import_on_demand = 999999
ij_java_imports_layout = *, |, $*
ij_java_layout_static_imports_separately = true
ij_java_generate_final_locals = true
ij_java_generate_final_parameters = true
ij_java_method_parameters_new_line_after_left_paren = true
ij_java_method_parameters_right_paren_on_new_line = true
ij_java_use_fq_class_names = false
ij_java_class_names_in_javadoc = 1
# javadoc
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = true
ij_java_doc_align_exception_comments = true
ij_java_doc_align_param_comments = true
ij_java_doc_do_not_wrap_if_one_line = false
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_use_throws_not_exception_tag = true
[paper-server/src/minecraft/java/**/*.java]
ij_java_use_fq_class_names = true
+15 -10
View File
@@ -34,33 +34,31 @@ jobs:
)
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- if: ${{ github.event_name == 'push' }}
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
# todo remove me again after the update
ref: ${{ github.ref_name }}
fetch-depth: 0
- if: ${{ github.event_name == 'pull_request' }}
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: JDK 25
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: 25
distribution: 'zulu'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v6
with:
# Allow cache writes on main and dev branches
cache-read-only: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/dev/') }}
- name: Configure Build
uses: actions/github-script@v7
uses: actions/github-script@v9
id: determine
env:
REF_NAME: "${{ github.ref_name }}"
@@ -107,19 +105,26 @@ jobs:
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: Test Results
path: |
**/build/test-results/test/TEST-*.xml
- name: Publish Checkstyle Report
uses: Juuxel/publish-checkstyle-report@v3
if: failure() || success()
with:
reports: |
*/build/reports/checkstyle/*.xml
- name: Create Paperclip Jar
if: fromJSON(steps.determine.outputs.result).action == 'paperclip'
run: ./gradlew createPaperclipJar --stacktrace
- name: Upload Paperclip Jar
if: fromJSON(steps.determine.outputs.result).action == 'paperclip'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: paper-${{ fromJSON(steps.determine.outputs.result).pr }}
path: paper-server/build/libs/paper-paperclip-*.jar
@@ -137,7 +142,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: Event File
path: ${{ github.event_path }}
+14
View File
@@ -0,0 +1,14 @@
name: PR Review Signal
on:
pull_request_review:
types:
- submitted
permissions: {}
jobs:
signal:
runs-on: ubuntu-latest
steps:
- run: echo "A PR review was submitted"
+69
View File
@@ -0,0 +1,69 @@
name: Update PR Project Status
on:
workflow_run:
workflows:
- PR Review Signal
types:
- completed
schedule:
- cron: "07 6 * * *"
workflow_dispatch:
jobs:
review-submitted:
if: >
github.repository_owner == 'PaperMC' &&
github.event_name == 'workflow_run' &&
github.event.workflow_run.event == 'pull_request_review' &&
github.event.workflow_run.conclusion == 'success'
concurrency:
group: pr-review-status-${{ github.event.workflow_run.head_sha }}
cancel-in-progress: false
runs-on: ubuntu-latest
steps:
- name: "authenticate"
id: "authenticate"
uses: actions/create-github-app-token@v3.2.0
with:
client-id: "${{ secrets.PROJECTS_CLIENT_ID }}"
private-key: "${{ secrets.PROJECTS_PRIVATE_KEY }}"
owner: "${{ github.repository_owner }}"
- name: Set status from approval
uses: PaperMC/update-projects-action/review-status@v0.4.1
with:
github-token: "${{ steps.authenticate.outputs.token }}"
mode: review
project-url: https://github.com/orgs/PaperMC/projects/2
maintainer-teams: paper-maintainers
developer-teams: paper-developers
promote-delayed-approvals:
if: >
github.repository_owner == 'PaperMC' &&
(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
concurrency:
group: pr-review-status-promote
cancel-in-progress: false
runs-on: ubuntu-latest
steps:
- name: "authenticate"
id: "authenticate"
uses: actions/create-github-app-token@v3.2.0
with:
client-id: "${{ secrets.PROJECTS_CLIENT_ID }}"
private-key: "${{ secrets.PROJECTS_PRIVATE_KEY }}"
owner: "${{ github.repository_owner }}"
- name: Promote delayed approvals
uses: PaperMC/update-projects-action/review-status@v0.4.1
with:
github-token: "${{ steps.authenticate.outputs.token }}"
mode: promote
project-url: https://github.com/orgs/PaperMC/projects/2
maintainer-teams: paper-maintainers
developer-teams: paper-developers
promote-after-days: "14"
+6 -7
View File
@@ -18,14 +18,13 @@ jobs:
steps:
- name: "authenticate"
id: "authenticate"
uses: "tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a" # v2.1.0
uses: actions/create-github-app-token@v3.2.0
with:
installation_retrieval_mode: id
installation_retrieval_payload: "36153445"
app_id: "${{ secrets.PROJECTS_APP_ID }}"
private_key: "${{ secrets.PROJECTS_PRIVATE_KEY }}"
app-id: "${{ secrets.PROJECTS_APP_ID }}"
private-key: "${{ secrets.PROJECTS_PRIVATE_KEY }}"
owner: "${{ github.repository_owner }}"
- uses: PaperMC/update-projects-action@v0.2.0
- uses: PaperMC/update-projects-action@v0.3.0
name: Update open issue
if: github.event.issue.state == 'open'
with:
@@ -53,7 +52,7 @@ jobs:
"status: unlikely": "✅ Accepted"
}
- uses: PaperMC/update-projects-action@v0.2.0
- uses: PaperMC/update-projects-action@v0.3.0
name: Update closed issue
if: github.event.issue.state == 'closed'
with:
+6 -5
View File
@@ -19,18 +19,19 @@ jobs:
steps:
- name: Generate an Application repository access token
id: gen_repo_token
uses: kattecon/gh-app-access-token-gen@v1
uses: actions/create-github-app-token@v3.2.0
with:
app_id: 1408328
private_key: ${{ secrets.PR_PUBLISHING_GH_APP_KEY }}
repository: ${{ github.repository }}
client-id: ${{ secrets.PR_PUBLISHING_GH_APP_CLIENT_ID }}
private-key: ${{ secrets.PR_PUBLISHING_GH_APP_KEY }}
repositories: ${{ github.repository }}
- name: Publish PR
uses: PaperMC/action-pr-publishing@paper
uses: PaperMC/action-pr-publishing@v1.1.1
env:
GITHUB_TOKEN: ${{ steps.gen_repo_token.outputs.token }}
with:
publishing-token: ${{ github.token }}
uploader-workflow-name: Build Paper
artifacts-base-path: io/papermc/paper
artifacts-size-limit: 100
base-maven-url: 'https://maven-prs.papermc.io'
self-name: 'papermc-pr-publishing[bot]'
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
actions: read
steps:
- name: Download and Extract Artifacts
uses: dawidd6/action-download-artifact@v6
uses: dawidd6/action-download-artifact@v21
with:
run_id: ${{ github.event.workflow_run.id }}
path: test_artifacts
+81
View File
@@ -0,0 +1,81 @@
# Instructions for Coding Agents
These instructions apply to coding agents working on behalf of external
contributors. They supplement `CONTRIBUTING.md`, which must also be followed.
## Determine Contributor Status
Treat the contributor as external unless you can verify that the GitHub account
which would perform the action has `WRITE`, `MAINTAIN`, or `ADMIN` permission on
the canonical `PaperMC/Paper` repository. Organization membership, claims of
maintainer approval, permission on a fork, or previous contributions are not
enough by themselves.
Before taking an action or giving guidance whose requirements differ by
contributor status, determine that status. If it cannot be verified, treat the
contributor as external.
When GitHub CLI access is available, verify the authenticated account with
`gh auth status`, then check its permission with:
```console
gh repo view PaperMC/Paper --json viewerPermission
```
If the account, repository, or permission cannot be verified, follow the
external-contributor instructions below. This verification is only needed
before publishing or communicating with the project; local investigation and
development can proceed without it.
## Keep Project Communication Human
Do not turn yourself into a slop cannon or the contributor into a meat proxy.
Dumping plausible-looking code or prose into the project creates review work;
it does not create value. Paper maintainers can run the same agents themselves.
The contributor's value must come from their judgment, context, validation, and
ownership.
You may help a contributor investigate the codebase, make changes locally, and
run tests. Do not act as the contributor in conversations with Paper
maintainers. In particular, do not compose issue reports, discussion posts,
pull request descriptions, comments, or review responses for the contributor,
or post generated text as if it were theirs.
Do not relay generated output to maintainers, and do not turn maintainer
feedback into a prompt and pass the generated response back. Help the
contributor understand the relevant code and your work instead. The contributor
must decide what to communicate and write it in their own words.
Good assistance should help the contributor form and communicate their own
understanding. Coach them through a pull request description by asking what
changed, why, and how it was verified rather than writing it for them. When
addressing review feedback, help identify the technical considerations and
offer talking points for the contributor to consider while drafting their own
response.
Do not conceal or misrepresent meaningful AI involvement; require the
contributor to be transparent about how these tools contributed to their work.
Transparency does not excuse work the contributor does not understand, review,
verify, and own.
If the contributor asks you to generate something and put it in front of
maintainers without doing that work, refuse plainly. Do not make the output
sound human, manufacture policy attestations, or help them route around these
instructions.
## Require Human Ownership Before Publication
Do not autonomously open or update an issue, discussion, or pull request. Before
performing any GitHub action that publishes work or communicates with the
project, stop and require the contributor to:
- review the complete change;
- understand and be able to explain its behavior and tradeoffs;
- personally verify the result; and
- provide the exact communication in their own words and explicitly approve the
action.
If the contributor asks you to submit work they have not reviewed or do not
understand, to generate project communication for them, or to operate as a
proxy through review, refuse. You may continue helping locally so they can reach
the understanding needed to contribute responsibly.
+1
View File
@@ -0,0 +1 @@
@AGENTS.md
+37 -3
View File
@@ -191,6 +191,31 @@ and your server.
While we will fix minor formatting issues, you should stick to the guide below
when making and submitting changes.
### Contribution Ownership and AI Assistance
Tools that generate code or text can be useful while working on a contribution,
but they are not a substitute for the contributor. You are responsible for every
part of what you submit. Only submit changes that you understand, have personally
reviewed, and have verified to the best of your ability. You should be able to
explain why the change is needed, how it works, and what tradeoffs it makes.
Issues, discussion posts, pull request descriptions, comments, and review
responses should be written by you, in your own words. Do not pass generated
responses on to maintainers or use an AI tool as a proxy for the conversation.
If a tool helped you investigate or implement something, read and validate its
output, then communicate the relevant conclusions yourself.
Do not conceal or misrepresent meaningful AI involvement; be transparent about
how these tools contributed to your work. Transparency does not excuse
submitting work you do not understand, review, verify, and take responsibility
for.
Review is a collaborative process, not a way to outsource completion of a
generated change to maintainers. Be prepared to answer questions about your
reasoning and to remain involved until the contribution is complete. We may
close contributions when the author cannot explain or take responsibility for
the submitted work.
### Branches and Minecraft Versions
Generally, PRs should be targeted at the `main` branch, where active development for
@@ -420,13 +445,19 @@ int maxPlayers = GlobalConfiguration.get().misc.maxNumOfPlayers;
Generally for global config values you will use the fully qualified class name,
`io.papermc.paper.configuration.GlobalConfiguration` since it's not imported in
most places.
---
If you are adding a new world config value, you must have access to an instance
of the `net.minecraft.world.level.Level` which you can then access the config by doing
```java
int maxPlayers = level.paperConfig().misc.maxNumOfPlayers;
```
#### Documentation
When adding or removing a config option, you should open a pull request in our [documentation repository](https://github.com/PaperMC/docs)
to keep it in sync and accurate. If you're unsure whether your original change will be accepted, then it's fine to wait with making the documentation
pull request until a maintainer has reviewed your changes. Once everything is done, the documentation pull request will be merged at the same time
that your original pull request is.
## Testing API changes
### Using the Paper Test Plugin
@@ -470,10 +501,13 @@ If you use Maven to build your plugin:
### My commit doesn't need a build, what do I do?
Quite simple: You add `[ci skip]` to the start of your commit subject.
Quite simple: You add `[ci skip]` to the start of your pull request title.
This case most often applies to changes to files like `README.md`, this very
file (`CONTRIBUTING.md`), the `LICENSE.md` file, and so forth.
file (`CONTRIBUTING.md`), the `LICENSE.md` file, and also small updates to Javadocs or other documentation.
Do *not* add [ci skip] to the start of your individual commit subjects, as your
pull request will not be mergeable until a new commit is added due to status check requirements.
### Patching and building is *really* slow, what can I do?
+1
View File
@@ -67,4 +67,5 @@ granny <contact@granny.dev>
mja00 <me@mja00.dev>
roro1506HD <16260475+roro1506HD@users.noreply.github.com>
Toffikk <slodkitofik@gmail.com>
NonSwag <mail@nonswag.dev>
```
+4 -8
View File
@@ -1,4 +1,4 @@
Paper [![Version](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fartifactory.papermc.io%2Fartifactory%2Funiverse%2Fio%2Fpapermc%2Fpaper%2Fpaper-api%2Fmaven-metadata.xml&strategy=highestVersion&filter=26.1*&label=version&color=%23344ceb
Paper [![Version](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fartifactory.papermc.io%2Fartifactory%2Funiverse%2Fio%2Fpapermc%2Fpaper%2Fpaper-api%2Fmaven-metadata.xml&strategy=highestVersion&filter=26.2.*&label=version&color=%23344ceb
)](https://papermc.io/downloads/paper)
[![Paper Build Status](https://img.shields.io/github/actions/workflow/status/PaperMC/Paper/build.yml?branch=main)](https://github.com/PaperMC/Paper/actions)
[![Discord](https://img.shields.io/discord/289587909051416579.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/papermc)
@@ -18,7 +18,7 @@ Paperclip is a jar file that you can download and run just like a normal jar fil
Download Paper from our [downloads page](https://papermc.io/downloads/paper).
Run the Paperclip jar directly from your server. Just like old times
Run the Paperclip jar directly from your server. Just like old times.
* Documentation on using Paper: [docs.papermc.io](https://docs.papermc.io)
* For a sneak peek at upcoming features, [see here](https://github.com/PaperMC/Paper/projects)
@@ -39,7 +39,7 @@ repositories {
}
dependencies {
compileOnly("io.papermc.paper:paper-api:26.1.2.build.+")
compileOnly("io.papermc.paper:paper-api:26.2.build.+")
}
java {
@@ -59,7 +59,7 @@ java {
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>[26.1.2.build,)</version>
<version>[26.2.build,)</version>
<scope>provided</scope>
</dependency>
```
@@ -95,9 +95,5 @@ Special Thanks To:
[YourKit](https://www.yourkit.com/), makers of the outstanding java profiler, support open source projects of all kinds with their full featured [Java](https://www.yourkit.com/java/profiler) and [.NET](https://www.yourkit.com/.net/profiler) application profilers. We thank them for granting Paper an OSS license so that we can make our software the best it can be.
[<img src="https://user-images.githubusercontent.com/21148213/121807008-8ffc6700-cc52-11eb-96a7-2f6f260f8fda.png" alt="" width="150">](https://www.jetbrains.com)
[JetBrains](https://www.jetbrains.com/), creators of the IntelliJ IDEA, supports Paper with one of their [Open Source Licenses](https://www.jetbrains.com/opensource/). IntelliJ IDEA is the recommended IDE for working with Paper, and most of the Paper team uses it.
All our sponsors!
[![Sponsor Image](https://raw.githubusercontent.com/PaperMC/papermc.io/data/sponsors.png)](https://papermc.io/sponsors)
+16 -142
View File
@@ -3,11 +3,11 @@
private-f net.minecraft.network.CompressionDecoder inflater
private-f net.minecraft.server.MinecraftServer connection
private-f net.minecraft.server.MinecraftServer levels
private-f net.minecraft.server.jsonrpc.internalapi.MinecraftGameRuleServiceImpl gameRules
private-f net.minecraft.world.item.ItemStack components
private-f net.minecraft.world.item.ItemStack item
private-f net.minecraft.world.level.block.entity.BeehiveBlockEntity stored
protected net.minecraft.world.entity.LivingEntity skipDropExperience
protected net.minecraft.world.level.Level thread
protected-f net.minecraft.server.MinecraftServer worldData
public net.minecraft.ChatFormatting code
public net.minecraft.advancements.Advancement decorateName(Lnet/minecraft/advancements/DisplayInfo;)Lnet/minecraft/network/chat/Component;
@@ -19,32 +19,14 @@ public net.minecraft.nbt.ListTag <init>(Ljava/util/List;)V
public net.minecraft.nbt.ListTag identifyRawElementType()B
public net.minecraft.network.Connection address
public net.minecraft.network.Connection channel
public net.minecraft.network.chat.TextColor name
public net.minecraft.network.chat.contents.TranslatableContents filterAllowedArguments(Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;
public net.minecraft.network.chat.contents.TranslatableContents PRIMITIVE_ARG_CODEC
public net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket <init>(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/nbt/CompoundTag;)V
public net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket blockState
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket hasPos
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket hasRot
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket x
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket xRot
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket y
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket yRot
public net.minecraft.network.protocol.game.ServerboundMovePlayerPacket z
public net.minecraft.network.syncher.SynchedEntityData getItem(Lnet/minecraft/network/syncher/EntityDataAccessor;)Lnet/minecraft/network/syncher/SynchedEntityData$DataItem;
public net.minecraft.resources.RegistryOps lookupProvider
public net.minecraft.resources.RegistryOps$HolderLookupAdapter
public net.minecraft.server.Main forceUpgrade(Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lcom/mojang/datafixers/DataFixer;ZLjava/util/function/BooleanSupplier;Lnet/minecraft/core/RegistryAccess;Z)V
public net.minecraft.server.MinecraftServer LOGGER
public net.minecraft.server.MinecraftServer doRunTask(Lnet/minecraft/server/TickTask;)V
public net.minecraft.server.MinecraftServer executor
public net.minecraft.server.MinecraftServer fixerUpper
public net.minecraft.server.MinecraftServer playerDataStorage
public net.minecraft.server.MinecraftServer resources
public net.minecraft.server.MinecraftServer serverThread
public net.minecraft.server.MinecraftServer$ReloadableResources
public net.minecraft.server.MinecraftServer$ReloadableResources <init>(Lnet/minecraft/server/packs/resources/CloseableResourceManager;Lnet/minecraft/server/ReloadableServerResources;)V
public net.minecraft.server.RegistryLayer STATIC_ACCESS
public net.minecraft.server.ReloadableServerResources
public net.minecraft.server.ServerAdvancementManager advancements
public net.minecraft.server.Services USERID_CACHE_FILE
public net.minecraft.server.dedicated.DedicatedServerProperties$WorldDimensionData
@@ -53,10 +35,9 @@ public net.minecraft.server.dedicated.Settings getStringRaw(Ljava/lang/String;)L
public net.minecraft.server.dedicated.Settings properties
public net.minecraft.server.level.ChunkHolder oldTicketLevel
public net.minecraft.server.level.ChunkHolder playerProvider
public net.minecraft.server.level.ChunkLevel BLOCK_TICKING_LEVEL
public net.minecraft.server.level.ChunkLevel ENTITY_TICKING_LEVEL
public net.minecraft.server.level.ChunkMap addEntity(Lnet/minecraft/world/entity/Entity;)V
public net.minecraft.server.level.ChunkMap anyPlayerCloseEnoughForSpawning(Lnet/minecraft/world/level/ChunkPos;)Z
public net.minecraft.server.level.ChunkMap distanceManager
public net.minecraft.server.level.ChunkLevel FULL_CHUNK_LEVEL
public net.minecraft.server.level.ChunkMap entityMap
public net.minecraft.server.level.ChunkMap getVisibleChunkIfPresent(J)Lnet/minecraft/server/level/ChunkHolder;
public net.minecraft.server.level.ChunkMap level
@@ -73,22 +54,16 @@ public net.minecraft.server.level.ChunkMap$TrackedEntity serverEntity
public net.minecraft.server.level.DistanceManager simulationDistance
public net.minecraft.server.level.DistanceManager ticketStorage
public net.minecraft.server.level.ServerBossEvent broadcast(Ljava/util/function/Function;)V
public net.minecraft.server.level.ServerBossEvent visible
public net.minecraft.server.level.ServerChunkCache mainThread
public net.minecraft.server.level.ServerChunkCache mainThreadProcessor
public net.minecraft.server.level.ServerChunkCache runDistanceManagerUpdates()Z
public net.minecraft.server.level.ServerChunkCache spawnEnemies
public net.minecraft.server.level.ServerChunkCache$MainThreadExecutor
public net.minecraft.server.level.ServerLevel chunkSource
public net.minecraft.server.level.ServerLevel entityManager
public net.minecraft.server.level.ServerLevel findLightningRod(Lnet/minecraft/core/BlockPos;)Ljava/util/Optional;
public net.minecraft.server.level.ServerLevel getEntities()Lnet/minecraft/world/level/entity/LevelEntityGetter;
public net.minecraft.server.level.ServerLevel serverLevelData
public net.minecraft.server.level.ServerPlayer completeUsingItem()V
public net.minecraft.server.level.ServerPlayer containerSynchronizer
public net.minecraft.server.level.ServerPlayer findRespawnAndUseSpawnBlock(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/server/level/ServerPlayer$RespawnConfig;Z)Ljava/util/Optional;
public net.minecraft.server.level.ServerPlayer initMenu(Lnet/minecraft/world/inventory/AbstractContainerMenu;)V
public net.minecraft.server.level.ServerPlayer isChangingDimension
public net.minecraft.server.level.ServerPlayer language
public net.minecraft.server.level.ServerPlayer lastSentExp
public net.minecraft.server.level.ServerPlayer nextContainerCounter()V
@@ -100,7 +75,7 @@ public net.minecraft.server.level.ServerPlayer triggerDimensionChangeTriggers(Ln
public net.minecraft.server.level.ServerPlayer wardenSpawnTracker
public net.minecraft.server.level.ServerPlayer$RespawnPosAngle
public net.minecraft.server.level.ServerPlayer$RespawnPosAngle <init>(Lnet/minecraft/world/phys/Vec3;FF)V
public net.minecraft.server.level.ServerPlayerGameMode level
public net.minecraft.server.level.ServerPlayerGameMode hasDelayedDestroy
public net.minecraft.server.network.ServerConfigurationPacketListenerImpl clientInformation
public net.minecraft.server.network.ServerConfigurationPacketListenerImpl currentTask
public net.minecraft.server.network.ServerConfigurationPacketListenerImpl finishCurrentTask(Lnet/minecraft/server/network/ConfigurationTask$Type;)V
@@ -112,12 +87,9 @@ public net.minecraft.server.network.ServerLoginPacketListenerImpl state
public net.minecraft.server.network.ServerLoginPacketListenerImpl$State
public net.minecraft.server.packs.repository.FolderRepositorySource$FolderPackDetector
public net.minecraft.server.packs.repository.FolderRepositorySource$FolderPackDetector <init>(Lnet/minecraft/world/level/validation/DirectoryValidator;)V
public net.minecraft.server.packs.repository.Pack resources
public net.minecraft.server.players.PlayerList playerIo
public net.minecraft.server.players.PlayerList players
public net.minecraft.server.players.PlayerList updateEntireScoreboard(Lnet/minecraft/server/ServerScoreboard;Lnet/minecraft/server/level/ServerPlayer;)V
public net.minecraft.server.players.PlayerList verifyChatTrusted(Lnet/minecraft/network/chat/PlayerChatMessage;)Z
public net.minecraft.server.players.StoredUserEntry getUser()Ljava/lang/Object;
public net.minecraft.stats.ServerRecipeBook known
public net.minecraft.tags.TagEntry id
public net.minecraft.tags.TagEntry required
@@ -126,15 +98,16 @@ public net.minecraft.util.Util onThreadException(Ljava/lang/Thread;Ljava/lang/Th
public net.minecraft.util.datafix.fixes.BlockStateData register(ILcom/mojang/serialization/Dynamic;[Lcom/mojang/serialization/Dynamic;)V
public net.minecraft.util.datafix.fixes.ItemIdFix ITEM_NAMES
public net.minecraft.util.datafix.fixes.ItemSpawnEggFix ID_TO_ENTITY
public net.minecraft.util.filefix.FileFixerUpper FILE_FIXER_INTRODUCTION_VERSION
public net.minecraft.world.BossEvent color
public net.minecraft.world.BossEvent name
public net.minecraft.world.BossEvent overlay
public net.minecraft.world.CompoundContainer container1
public net.minecraft.world.CompoundContainer container2
public net.minecraft.world.SimpleContainer items
public net.minecraft.world.damagesource.CombatTracker entries
public net.minecraft.world.damagesource.CombatTracker getMostSignificantFall()Lnet/minecraft/world/damagesource/CombatEntry;
public net.minecraft.world.damagesource.CombatTracker inCombat
public net.minecraft.world.damagesource.CombatTracker lastDamageTime
public net.minecraft.world.damagesource.CombatTracker mob
public net.minecraft.world.damagesource.CombatTracker takingDamage
public net.minecraft.world.damagesource.DamageSource <init>(Lnet/minecraft/core/Holder;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;)V
@@ -144,13 +117,8 @@ public net.minecraft.world.effect.MobEffect$AttributeTemplate <init>(Lnet/minecr
public net.minecraft.world.effect.MobEffectInstance hiddenEffect
public net.minecraft.world.effect.MobEffectInstance isShorterDurationThan(Lnet/minecraft/world/effect/MobEffectInstance;)Z
public net.minecraft.world.entity.AgeableMob setAgeLocked(Z)V
public net.minecraft.world.entity.AreaEffectCloud durationOnUse
public net.minecraft.world.entity.AreaEffectCloud owner
public net.minecraft.world.entity.AreaEffectCloud potionContents
public net.minecraft.world.entity.AreaEffectCloud radiusOnUse
public net.minecraft.world.entity.AreaEffectCloud radiusPerTick
public net.minecraft.world.entity.AreaEffectCloud reapplicationDelay
public net.minecraft.world.entity.AreaEffectCloud waitTime
public net.minecraft.world.entity.Avatar DATA_PLAYER_MODE_CUSTOMISATION
public net.minecraft.world.entity.Display DATA_POS_ROT_INTERPOLATION_DURATION_ID
public net.minecraft.world.entity.Display createTransformation(Lnet/minecraft/network/syncher/SynchedEntityData;)Lcom/mojang/math/Transformation;
@@ -199,20 +167,14 @@ public net.minecraft.world.entity.Entity getSharedFlag(I)Z
public net.minecraft.world.entity.Entity getSwimHighSpeedSplashSound()Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.Entity getSwimSound()Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.Entity getSwimSplashSound()Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.Entity hasVisualFire
public net.minecraft.world.entity.Entity isAffectedByBlocks()Z
public net.minecraft.world.entity.Entity isInRain()Z
public net.minecraft.world.entity.Entity isInvulnerableToBase(Lnet/minecraft/world/damagesource/DamageSource;)Z
public net.minecraft.world.entity.Entity onGround
public net.minecraft.world.entity.Entity passengers
public net.minecraft.world.entity.Entity portalCooldown
public net.minecraft.world.entity.Entity random
public net.minecraft.world.entity.Entity setLevel(Lnet/minecraft/world/level/Level;)V
public net.minecraft.world.entity.Entity setRot(FF)V
public net.minecraft.world.entity.Entity setSharedFlag(IZ)V
public net.minecraft.world.entity.Entity teleportPassengers()V
public net.minecraft.world.entity.Entity unsetRemoved()V
public net.minecraft.world.entity.Entity wasTouchingWater
public net.minecraft.world.entity.ExperienceOrb count
public net.minecraft.world.entity.ExperienceOrb setValue(I)V
public net.minecraft.world.entity.Interaction attack
@@ -230,11 +192,9 @@ public net.minecraft.world.entity.ItemBasedSteering boostTimeTotal()I
public net.minecraft.world.entity.ItemBasedSteering boosting
public net.minecraft.world.entity.LightningBolt flashes
public net.minecraft.world.entity.LightningBolt life
public net.minecraft.world.entity.LightningBolt visualOnly
public net.minecraft.world.entity.LivingEntity DATA_ARROW_COUNT_ID
public net.minecraft.world.entity.LivingEntity DATA_HEALTH_ID
public net.minecraft.world.entity.LivingEntity LIVING_ENTITY_FLAG_SPIN_ATTACK
public net.minecraft.world.entity.LivingEntity activeEffects
public net.minecraft.world.entity.LivingEntity completeUsingItem()V
public net.minecraft.world.entity.LivingEntity detectEquipmentUpdates()V
public net.minecraft.world.entity.LivingEntity effectsDirty
@@ -243,10 +203,8 @@ public net.minecraft.world.entity.LivingEntity getDeathSound()Lnet/minecraft/sou
public net.minecraft.world.entity.LivingEntity getFallDamageSound(I)Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.LivingEntity getHurtSound(Lnet/minecraft/world/damagesource/DamageSource;)Lnet/minecraft/sounds/SoundEvent;
public net.minecraft.world.entity.LivingEntity getSoundVolume()F
public net.minecraft.world.entity.LivingEntity jumping
public net.minecraft.world.entity.LivingEntity lastHurt
public net.minecraft.world.entity.LivingEntity lastHurtByMob
public net.minecraft.world.entity.LivingEntity lastHurtByMobTimestamp
public net.minecraft.world.entity.LivingEntity lastHurtByPlayer
public net.minecraft.world.entity.LivingEntity lastHurtByPlayerMemoryTime
public net.minecraft.world.entity.LivingEntity playSecondaryHurtSound(Lnet/minecraft/world/damagesource/DamageSource;)V
@@ -261,13 +219,11 @@ public net.minecraft.world.entity.OminousItemSpawner setItem(Lnet/minecraft/worl
public net.minecraft.world.entity.OminousItemSpawner spawnItemAfterTicks
public net.minecraft.world.entity.ai.attributes.Attribute sentiment
public net.minecraft.world.entity.ai.attributes.AttributeSupplier getAttributeInstance(Lnet/minecraft/core/Holder;)Lnet/minecraft/world/entity/ai/attributes/AttributeInstance;
public net.minecraft.world.entity.ai.control.MoveControl$Operation
public net.minecraft.world.entity.ai.gossip.GossipContainer gossips
public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips
public net.minecraft.world.entity.ai.gossip.GossipContainer$EntityGossips <init>()V
public net.minecraft.world.entity.ai.navigation.PathNavigation pathFinder
public net.minecraft.world.entity.ambient.Bat targetPosition
public net.minecraft.world.entity.animal.Animal inLove
public net.minecraft.world.entity.animal.Animal loveCause
public net.minecraft.world.entity.animal.allay.Allay canDuplicate()Z
public net.minecraft.world.entity.animal.allay.Allay duplicateAllay()V
@@ -275,7 +231,6 @@ public net.minecraft.world.entity.animal.allay.Allay duplicationCooldown
public net.minecraft.world.entity.animal.allay.Allay jukeboxPos
public net.minecraft.world.entity.animal.allay.Allay resetDuplicationCooldown()V
public net.minecraft.world.entity.animal.axolotl.Axolotl setVariant(Lnet/minecraft/world/entity/animal/axolotl/Axolotl$Variant;)V
public net.minecraft.world.entity.animal.bee.Bee hivePos
public net.minecraft.world.entity.animal.bee.Bee isRolling()Z
public net.minecraft.world.entity.animal.bee.Bee numCropsGrownSincePollination
public net.minecraft.world.entity.animal.bee.Bee setHasNectar(Z)V
@@ -330,7 +285,6 @@ public net.minecraft.world.entity.animal.pig.Pig setSoundVariant(Lnet/minecraft/
public net.minecraft.world.entity.animal.pig.Pig setVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.animal.pig.Pig steering
public net.minecraft.world.entity.animal.rabbit.Rabbit moreCarrotTicks
public net.minecraft.world.entity.animal.rabbit.Rabbit registerGoals()V
public net.minecraft.world.entity.animal.rabbit.Rabbit setVariant(Lnet/minecraft/world/entity/animal/rabbit/Rabbit$Variant;)V
public net.minecraft.world.entity.animal.sniffer.Sniffer calculateDigPosition()Ljava/util/Optional;
public net.minecraft.world.entity.animal.sniffer.Sniffer canDig()Z
@@ -339,7 +293,6 @@ public net.minecraft.world.entity.animal.sniffer.Sniffer getState()Lnet/minecraf
public net.minecraft.world.entity.animal.sniffer.Sniffer storeExploredPosition(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/entity/animal/sniffer/Sniffer;
public net.minecraft.world.entity.animal.squid.GlowSquid setDarkTicks(I)V
public net.minecraft.world.entity.animal.turtle.Turtle goingHome
public net.minecraft.world.entity.animal.turtle.Turtle homePos
public net.minecraft.world.entity.animal.turtle.Turtle setHasEgg(Z)V
public net.minecraft.world.entity.animal.wolf.Wolf getSoundVariant()Lnet/minecraft/core/Holder;
public net.minecraft.world.entity.animal.wolf.Wolf getVariant()Lnet/minecraft/core/Holder;
@@ -347,23 +300,19 @@ public net.minecraft.world.entity.animal.wolf.Wolf isWet
public net.minecraft.world.entity.animal.wolf.Wolf setCollarColor(Lnet/minecraft/world/item/DyeColor;)V
public net.minecraft.world.entity.animal.wolf.Wolf setSoundVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.animal.wolf.Wolf setVariant(Lnet/minecraft/core/Holder;)V
public net.minecraft.world.entity.boss.enderdragon.EnderDragon subEntities
public net.minecraft.world.entity.boss.wither.WitherBoss bossEvent
public net.minecraft.world.entity.decoration.ArmorStand disabledSlots
public net.minecraft.world.entity.decoration.ArmorStand isDisabled(Lnet/minecraft/world/entity/EquipmentSlot;)Z
public net.minecraft.world.entity.decoration.ArmorStand setMarker(Z)V
public net.minecraft.world.entity.decoration.ArmorStand setSmall(Z)V
public net.minecraft.world.entity.decoration.HangingEntity setDirection(Lnet/minecraft/core/Direction;)V
public net.minecraft.world.entity.decoration.ItemFrame DATA_ITEM
public net.minecraft.world.entity.decoration.ItemFrame DATA_ROTATION
public net.minecraft.world.entity.decoration.ItemFrame dropChance
public net.minecraft.world.entity.decoration.ItemFrame fixed
public net.minecraft.world.entity.decoration.ItemFrame setDirection(Lnet/minecraft/core/Direction;)V
public net.minecraft.world.entity.decoration.Mannequin ALL_LAYERS
public net.minecraft.world.entity.decoration.Mannequin DEFAULT_DESCRIPTION
public net.minecraft.world.entity.decoration.Mannequin VALID_POSES
public net.minecraft.world.entity.decoration.Mannequin getDescription()Lnet/minecraft/network/chat/Component;
public net.minecraft.world.entity.decoration.Mannequin getImmovable()Z
public net.minecraft.world.entity.decoration.Mannequin getProfile()Lnet/minecraft/world/item/component/ResolvableProfile;
public net.minecraft.world.entity.decoration.Mannequin setDescription(Lnet/minecraft/network/chat/Component;)V
public net.minecraft.world.entity.decoration.Mannequin setHideDescription(Z)V
public net.minecraft.world.entity.decoration.Mannequin setImmovable(Z)V
@@ -382,7 +331,6 @@ public net.minecraft.world.entity.item.ItemEntity target
public net.minecraft.world.entity.item.ItemEntity thrower
public net.minecraft.world.entity.item.PrimedTnt explosionPower
public net.minecraft.world.entity.item.PrimedTnt owner
public net.minecraft.world.entity.monster.Creeper droppedSkulls
public net.minecraft.world.entity.monster.Creeper explodeCreeper()V
public net.minecraft.world.entity.monster.Creeper explosionRadius
public net.minecraft.world.entity.monster.Creeper maxSwell
@@ -407,12 +355,13 @@ public net.minecraft.world.entity.monster.Vex hasLimitedLife
public net.minecraft.world.entity.monster.Vex limitedLifeTicks
public net.minecraft.world.entity.monster.Vex owner
public net.minecraft.world.entity.monster.Witch usingTime
public net.minecraft.world.entity.monster.cubemob.SulfurCube MAX_FUSE
public net.minecraft.world.entity.monster.cubemob.SulfurCube setFuse(I)V
public net.minecraft.world.entity.monster.hoglin.Hoglin cannotBeHunted
public net.minecraft.world.entity.monster.hoglin.Hoglin isImmuneToZombification()Z
public net.minecraft.world.entity.monster.hoglin.Hoglin timeInOverworld
public net.minecraft.world.entity.monster.illager.Evoker getWololoTarget()Lnet/minecraft/world/entity/animal/sheep/Sheep;
public net.minecraft.world.entity.monster.illager.Evoker setWololoTarget(Lnet/minecraft/world/entity/animal/sheep/Sheep;)V
public net.minecraft.world.entity.monster.illager.Pillager inventory
public net.minecraft.world.entity.monster.illager.SpellcasterIllager getCurrentSpell()Lnet/minecraft/world/entity/monster/illager/SpellcasterIllager$IllagerSpell;
public net.minecraft.world.entity.monster.illager.SpellcasterIllager$IllagerSpell
public net.minecraft.world.entity.monster.illager.Vindicator DOOR_BREAKING_PREDICATE
@@ -420,37 +369,31 @@ public net.minecraft.world.entity.monster.illager.Vindicator isJohnny
public net.minecraft.world.entity.monster.piglin.AbstractPiglin isImmuneToZombification()Z
public net.minecraft.world.entity.monster.piglin.AbstractPiglin timeInOverworld
public net.minecraft.world.entity.monster.piglin.Piglin cannotHunt
public net.minecraft.world.entity.monster.piglin.Piglin inventory
public net.minecraft.world.entity.monster.piglin.Piglin isChargingCrossbow()Z
public net.minecraft.world.entity.monster.skeleton.Skeleton DATA_STRAY_CONVERSION_ID
public net.minecraft.world.entity.monster.skeleton.Skeleton conversionTime
public net.minecraft.world.entity.monster.skeleton.Skeleton inPowderSnowTime
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker cooldownTicks
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker increaseWarningLevel()V
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker ticksSinceLastWarning
public net.minecraft.world.entity.monster.zombie.Zombie DATA_DROWNED_CONVERSION_ID
public net.minecraft.world.entity.monster.zombie.Zombie DOOR_BREAKING_PREDICATE
public net.minecraft.world.entity.monster.zombie.Zombie conversionTime
public net.minecraft.world.entity.monster.zombie.Zombie isSunSensitive()Z
public net.minecraft.world.entity.monster.zombie.Zombie startUnderWaterConversion(I)V
public net.minecraft.world.entity.monster.zombie.ZombieVillager DATA_CONVERTING_ID
public net.minecraft.world.entity.monster.zombie.ZombieVillager conversionStarter
public net.minecraft.world.entity.monster.zombie.ZombieVillager startConverting(Ljava/util/UUID;I)V
public net.minecraft.world.entity.monster.zombie.ZombieVillager villagerConversionTime
public net.minecraft.world.entity.npc.villager.Villager numberOfRestocksToday
public net.minecraft.world.entity.npc.villager.Villager releaseAllPois()V
public net.minecraft.world.entity.npc.villager.Villager setUnhappy()V
public net.minecraft.world.entity.npc.villager.Villager updateDemand()V
public net.minecraft.world.entity.npc.villager.Villager updateSpecialPrices(Lnet/minecraft/world/entity/player/Player;)V
public net.minecraft.world.entity.npc.wanderingtrader.WanderingTrader getWanderTarget()Lnet/minecraft/core/BlockPos;
public net.minecraft.world.entity.player.Abilities flyingSpeed
public net.minecraft.world.entity.player.Abilities walkingSpeed
public net.minecraft.world.entity.player.Inventory equipment
public net.minecraft.world.entity.player.Player closeContainer()V
public net.minecraft.world.entity.player.Player enchantmentSeed
public net.minecraft.world.entity.player.Player getFireImmuneTicks()I
public net.minecraft.world.entity.player.Player hurtDir
public net.minecraft.world.entity.player.Player removeEntitiesOnShoulder()V
public net.minecraft.world.entity.player.Player sleepCounter
public net.minecraft.world.entity.player.Player updatePlayerPose()V
public net.minecraft.world.entity.projectile.EvokerFangs warmupDelayTicks
public net.minecraft.world.entity.projectile.EyeOfEnder life
public net.minecraft.world.entity.projectile.EyeOfEnder surviveAfterDeath
@@ -462,11 +405,9 @@ public net.minecraft.world.entity.projectile.FireworkRocketEntity attachedToEnti
public net.minecraft.world.entity.projectile.FireworkRocketEntity getDefaultItem()Lnet/minecraft/world/item/ItemStack;
public net.minecraft.world.entity.projectile.FireworkRocketEntity life
public net.minecraft.world.entity.projectile.FireworkRocketEntity lifetime
public net.minecraft.world.entity.projectile.FishingHook DATA_HOOKED_ENTITY
public net.minecraft.world.entity.projectile.FishingHook calculateOpenWater(Lnet/minecraft/core/BlockPos;)Z
public net.minecraft.world.entity.projectile.FishingHook currentState
public net.minecraft.world.entity.projectile.FishingHook fishAngle
public net.minecraft.world.entity.projectile.FishingHook hookedIn
public net.minecraft.world.entity.projectile.FishingHook outOfWaterTime
public net.minecraft.world.entity.projectile.FishingHook pullEntity(Lnet/minecraft/world/entity/Entity;)V
public net.minecraft.world.entity.projectile.FishingHook setHookedEntity(Lnet/minecraft/world/entity/Entity;)V
@@ -487,45 +428,31 @@ public net.minecraft.world.entity.projectile.arrow.AbstractArrow getHitGroundSou
public net.minecraft.world.entity.projectile.arrow.AbstractArrow getPickupItem()Lnet/minecraft/world/item/ItemStack;
public net.minecraft.world.entity.projectile.arrow.AbstractArrow isInGround()Z
public net.minecraft.world.entity.projectile.arrow.AbstractArrow life
public net.minecraft.world.entity.projectile.arrow.AbstractArrow pickupItemStack
public net.minecraft.world.entity.projectile.arrow.AbstractArrow setPickupItemStack(Lnet/minecraft/world/item/ItemStack;)V
public net.minecraft.world.entity.projectile.arrow.AbstractArrow setPierceLevel(B)V
public net.minecraft.world.entity.projectile.arrow.Arrow NO_EFFECT_COLOR
public net.minecraft.world.entity.projectile.arrow.Arrow getPotionContents()Lnet/minecraft/world/item/alchemy/PotionContents;
public net.minecraft.world.entity.projectile.arrow.Arrow setPotionContents(Lnet/minecraft/world/item/alchemy/PotionContents;)V
public net.minecraft.world.entity.projectile.arrow.Arrow updateColor()V
public net.minecraft.world.entity.projectile.arrow.SpectralArrow duration
public net.minecraft.world.entity.projectile.arrow.ThrownTrident dealtDamage
public net.minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectile assignDirectionalMovement(Lnet/minecraft/world/phys/Vec3;D)V
public net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball explosionPower
public net.minecraft.world.entity.projectile.hurtingprojectile.windcharge.AbstractWindCharge explode(Lnet/minecraft/world/phys/Vec3;)V
public net.minecraft.world.entity.projectile.hurtingprojectile.windcharge.BreezeWindCharge explode(Lnet/minecraft/world/phys/Vec3;)V
public net.minecraft.world.entity.projectile.hurtingprojectile.windcharge.WindCharge explode(Lnet/minecraft/world/phys/Vec3;)V
public net.minecraft.world.entity.projectile.throwableitemprojectile.ThrowableItemProjectile getDefaultItem()Lnet/minecraft/world/item/Item;
public net.minecraft.world.entity.raid.Raid heroesOfTheVillage
public net.minecraft.world.entity.raid.Raid raidEvent
public net.minecraft.world.entity.raid.Raid raidOmenLevel
public net.minecraft.world.entity.raid.Raid ticksActive
public net.minecraft.world.entity.raid.Raid totalHealth
public net.minecraft.world.entity.raid.Raider$HoldGroundAttackGoal
public net.minecraft.world.entity.raid.Raids raidMap
public net.minecraft.world.entity.vehicle.VehicleEntity getDropItem()Lnet/minecraft/world/item/Item;
public net.minecraft.world.entity.vehicle.boat.AbstractBoat getStatus()Lnet/minecraft/world/entity/vehicle/boat/AbstractBoat$Status;
public net.minecraft.world.entity.vehicle.boat.AbstractBoat status
public net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer lootTable
public net.minecraft.world.entity.vehicle.minecart.AbstractMinecartContainer lootTableSeed
public net.minecraft.world.entity.vehicle.minecart.MinecartCommandBlock DATA_ID_COMMAND_NAME
public net.minecraft.world.entity.vehicle.minecart.MinecartFurnace fuel
public net.minecraft.world.entity.vehicle.minecart.MinecartTNT explode(Lnet/minecraft/world/damagesource/DamageSource;D)V
public net.minecraft.world.entity.vehicle.minecart.MinecartTNT explosionPowerBase
public net.minecraft.world.entity.vehicle.minecart.MinecartTNT explosionSpeedFactor
public net.minecraft.world.entity.vehicle.minecart.MinecartTNT fuse
public net.minecraft.world.flag.FeatureFlag mask
public net.minecraft.world.flag.FeatureFlag universe
public net.minecraft.world.flag.FeatureFlagRegistry names
public net.minecraft.world.food.FoodData exhaustionLevel
public net.minecraft.world.food.FoodData foodLevel
public net.minecraft.world.food.FoodData saturationLevel
public net.minecraft.world.inventory.AbstractContainerMenu menuType
public net.minecraft.world.inventory.AbstractContainerMenu quickcraftSlots
public net.minecraft.world.inventory.AbstractContainerMenu quickcraftStatus
@@ -544,21 +471,13 @@ public net.minecraft.world.inventory.AnvilMenu itemName
public net.minecraft.world.inventory.AnvilMenu repairItemCountCost
public net.minecraft.world.inventory.BrewingStandMenu brewingStandData
public net.minecraft.world.inventory.CraftingMenu access
public net.minecraft.world.inventory.DispenserMenu dispenser
public net.minecraft.world.inventory.MerchantContainer selectionHint
public net.minecraft.world.inventory.Slot slot
public net.minecraft.world.item.AdventureModePredicate predicates
public net.minecraft.world.item.BucketItem content
public net.minecraft.world.item.CrossbowItem FIREWORK_POWER
public net.minecraft.world.item.DebugStickItem handleInteraction(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;ZLnet/minecraft/world/item/ItemStack;)Z
public net.minecraft.world.item.ItemCooldowns cooldowns
public net.minecraft.world.item.ItemCooldowns tickCount
public net.minecraft.world.item.ItemCooldowns$CooldownInstance
public net.minecraft.world.item.ItemCooldowns$CooldownInstance <init>(II)V
public net.minecraft.world.item.ItemStackLinkedSet TYPE_AND_TAG
public net.minecraft.world.item.JukeboxSongPlayer song
public net.minecraft.world.item.MapItem createNewSavedData(Lnet/minecraft/server/level/ServerLevel;IIIZZLnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/level/saveddata/maps/MapId;
public net.minecraft.world.item.StandingAndWallBlockItem wallBlock
public net.minecraft.world.item.component.ItemContainerContents MAX_SIZE
public net.minecraft.world.item.component.ItemContainerContents items
public net.minecraft.world.item.component.ResolvableProfile unpack()Lcom/mojang/datafixers/util/Either;
@@ -573,8 +492,6 @@ public net.minecraft.world.item.crafting.RecipeManager recipes
public net.minecraft.world.item.crafting.RecipeMap byKey
public net.minecraft.world.item.crafting.RecipeMap byType
public net.minecraft.world.item.trading.MerchantOffer demand
public net.minecraft.world.item.trading.MerchantOffer result
public net.minecraft.world.item.trading.MerchantOffer specialPriceDiff
public net.minecraft.world.item.trading.MerchantOffer uses
public net.minecraft.world.level.BaseSpawner delay(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)V
public net.minecraft.world.level.BaseSpawner isNearPlayer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Z
@@ -591,9 +508,7 @@ public net.minecraft.world.level.BaseSpawner spawnRange
public net.minecraft.world.level.Level DEFAULT_EXPLOSION_BLOCK_PARTICLES
public net.minecraft.world.level.Level blockEntityTickers
public net.minecraft.world.level.Level getEntities()Lnet/minecraft/world/level/entity/LevelEntityGetter;
public net.minecraft.world.level.Level levelData
public net.minecraft.world.level.Level rainLevel
public net.minecraft.world.level.Level thread
public net.minecraft.world.level.Level thunderLevel
public net.minecraft.world.level.NaturalSpawner SPAWNING_CATEGORIES
public net.minecraft.world.level.StructureManager level
@@ -603,19 +518,14 @@ public net.minecraft.world.level.biome.Biome getTemperature(Lnet/minecraft/core/
public net.minecraft.world.level.biome.Biome$ClimateSettings
public net.minecraft.world.level.biome.Biome$ClimateSettings <init>(ZFLnet/minecraft/world/level/biome/Biome$TemperatureModifier;F)V
public net.minecraft.world.level.block.Block popExperience(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;I)V
public net.minecraft.world.level.block.ChestBlock isBlockedChestByBlock(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Z
public net.minecraft.world.level.block.ComposterBlock$EmptyContainer
public net.minecraft.world.level.block.ComposterBlock$InputContainer
public net.minecraft.world.level.block.ComposterBlock$OutputContainer
public net.minecraft.world.level.block.DispenserBlock dispenseFrom(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;)V
public net.minecraft.world.level.block.DropperBlock dispenseFrom(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;)V
public net.minecraft.world.level.block.FireBlock igniteOdds
public net.minecraft.world.level.block.RedStoneWireBlock canSurvive(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)Z
public net.minecraft.world.level.block.RedStoneWireBlock shouldSignal
public net.minecraft.world.level.block.SelectableSlotContainer getSection(FI)I
public net.minecraft.world.level.block.ShulkerBoxBlock color
public net.minecraft.world.level.block.SoundType breakSound
public net.minecraft.world.level.block.SoundType hitSound
public net.minecraft.world.level.block.TurtleEggBlock decreaseEggs(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity cookingTimer
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity cookingTotalTime
@@ -624,16 +534,12 @@ public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity litTime
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity recipesUsed
public net.minecraft.world.level.block.entity.BannerBlockEntity name
public net.minecraft.world.level.block.entity.BarrelBlockEntity openersCounter
public net.minecraft.world.level.block.entity.BarrelBlockEntity playSound(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/sounds/SoundEvent;)V
public net.minecraft.world.level.block.entity.BarrelBlockEntity updateBlockState(Lnet/minecraft/world/level/block/state/BlockState;Z)V
public net.minecraft.world.level.block.entity.BaseContainerBlockEntity lockKey
public net.minecraft.world.level.block.entity.BaseContainerBlockEntity name
public net.minecraft.world.level.block.entity.BeaconBlockEntity levels
public net.minecraft.world.level.block.entity.BeaconBlockEntity lockKey
public net.minecraft.world.level.block.entity.BeaconBlockEntity name
public net.minecraft.world.level.block.entity.BeaconBlockEntity primaryPower
public net.minecraft.world.level.block.entity.BeaconBlockEntity secondaryPower
public net.minecraft.world.level.block.entity.BedBlockEntity color
public net.minecraft.world.level.block.entity.BeehiveBlockEntity savedFlowerPos
public net.minecraft.world.level.block.entity.BellBlockEntity resonating
public net.minecraft.world.level.block.entity.BellBlockEntity resonationTicks
@@ -656,41 +562,29 @@ public net.minecraft.world.level.block.entity.ConduitBlockEntity effectBlocks
public net.minecraft.world.level.block.entity.ConduitBlockEntity getDestroyRangeAABB(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/AABB;
public net.minecraft.world.level.block.entity.ConduitBlockEntity updateDestroyTarget(Lnet/minecraft/world/entity/EntityReference;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Z)Lnet/minecraft/world/entity/EntityReference;
public net.minecraft.world.level.block.entity.CrafterBlockEntity craftingTicksRemaining
public net.minecraft.world.level.block.entity.CreakingHeartBlockEntity clearCreakingInfo()V
public net.minecraft.world.level.block.entity.CreakingHeartBlockEntity getCreakingProtector()Ljava/util/Optional;
public net.minecraft.world.level.block.entity.CreakingHeartBlockEntity spawnProtector(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/block/entity/CreakingHeartBlockEntity;)Lnet/minecraft/world/entity/monster/creaking/Creaking;
public net.minecraft.world.level.block.entity.CreakingHeartBlockEntity spreadResin(Lnet/minecraft/server/level/ServerLevel;)Ljava/util/Optional;
public net.minecraft.world.level.block.entity.DecoratedPotBlockEntity decorations
public net.minecraft.world.level.block.entity.EnderChestBlockEntity openersCounter
public net.minecraft.world.level.block.entity.HopperBlockEntity cooldownTime
public net.minecraft.world.level.block.entity.HopperBlockEntity setCooldown(I)V
public net.minecraft.world.level.block.entity.LecternBlockEntity bookAccess
public net.minecraft.world.level.block.entity.LecternBlockEntity setPage(I)V
public net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity lootTable
public net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity lootTableSeed
public net.minecraft.world.level.block.entity.SculkCatalystBlockEntity$CatalystListener bloom(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/util/RandomSource;)V
public net.minecraft.world.level.block.entity.SculkSensorBlockEntity lastVibrationFrequency
public net.minecraft.world.level.block.entity.SculkShriekerBlockEntity warningLevel
public net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity openCount
public net.minecraft.world.level.block.entity.SignBlockEntity playerWhoMayEdit
public net.minecraft.world.level.block.entity.SkullBlockEntity customName
public net.minecraft.world.level.block.entity.SkullBlockEntity noteBlockSound
public net.minecraft.world.level.block.entity.SkullBlockEntity owner
public net.minecraft.world.level.block.entity.StructureBlockEntity author
public net.minecraft.world.level.block.entity.StructureBlockEntity ignoreEntities
public net.minecraft.world.level.block.entity.StructureBlockEntity integrity
public net.minecraft.world.level.block.entity.StructureBlockEntity metaData
public net.minecraft.world.level.block.entity.StructureBlockEntity mirror
public net.minecraft.world.level.block.entity.StructureBlockEntity mode
public net.minecraft.world.level.block.entity.StructureBlockEntity rotation
public net.minecraft.world.level.block.entity.StructureBlockEntity seed
public net.minecraft.world.level.block.entity.StructureBlockEntity showAir
public net.minecraft.world.level.block.entity.StructureBlockEntity showBoundingBox
public net.minecraft.world.level.block.entity.StructureBlockEntity structurePos
public net.minecraft.world.level.block.entity.StructureBlockEntity structureSize
public net.minecraft.world.level.block.entity.TheEndGatewayBlockEntity age
public net.minecraft.world.level.block.entity.TheEndGatewayBlockEntity exactTeleport
public net.minecraft.world.level.block.entity.TheEndGatewayBlockEntity exitPortal
public net.minecraft.world.level.block.entity.TrialSpawnerBlockEntity trialSpawner
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawner config
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawner isOminous
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawner stateAccessor
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerStateData cooldownEndsAt
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerStateData currentMobs
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerStateData detectedPlayers
@@ -703,23 +597,16 @@ public net.minecraft.world.level.block.entity.vault.VaultServerData stateUpdatin
public net.minecraft.world.level.block.entity.vault.VaultSharedData getConnectedPlayers()Ljava/util/Set;
public net.minecraft.world.level.block.state.BlockBehaviour getMenuProvider(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/MenuProvider;
public net.minecraft.world.level.block.state.BlockBehaviour hasCollision
public net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase destroySpeed
public net.minecraft.world.level.block.state.StateHolder PROPERTY_ENTRY_TO_STRING_FUNCTION
public net.minecraft.world.level.block.state.properties.IntegerProperty max
public net.minecraft.world.level.block.state.properties.IntegerProperty min
public net.minecraft.world.level.chunk.ChunkAccess blockEntities
public net.minecraft.world.level.chunk.ChunkAccess heightmaps
public net.minecraft.world.level.chunk.ChunkGenerator generationSettingsGetter
public net.minecraft.world.level.chunk.LevelChunk level
public net.minecraft.world.level.chunk.LevelChunk loaded
public net.minecraft.world.level.chunk.LevelChunkSection states
public net.minecraft.world.level.chunk.status.ChunkStatusTasks postLoadProtoChunk(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/storage/ValueInput$ValueInputList;)V
public net.minecraft.world.level.chunk.storage.EntityStorage entityDeserializerQueue
public net.minecraft.world.level.chunk.storage.EntityStorage level
public net.minecraft.world.level.chunk.storage.RegionFileStorage regionCache
public net.minecraft.world.level.dimension.end.EnderDragonFight GATEWAY_COUNT
public net.minecraft.world.level.dimension.end.EnderDragonFight dragonEvent
public net.minecraft.world.level.dimension.end.EnderDragonFight dragonUUID
public net.minecraft.world.level.dimension.end.EnderDragonFight exitPortalLocation
public net.minecraft.world.level.dimension.end.EnderDragonFight findExitPortal()Lnet/minecraft/world/level/block/state/pattern/BlockPattern$BlockPatternMatch;
public net.minecraft.world.level.dimension.end.EnderDragonFight gateways
@@ -734,7 +621,6 @@ public net.minecraft.world.level.dimension.end.EnderDragonFight spawnNewGateway(
public net.minecraft.world.level.entity.PersistentEntitySectionManager ensureChunkQueuedForLoad(J)V
public net.minecraft.world.level.entity.PersistentEntitySectionManager permanentStorage
public net.minecraft.world.level.gamerules.GameRules rules
public net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator settings
public net.minecraft.world.level.levelgen.SurfaceRules$Condition
public net.minecraft.world.level.levelgen.SurfaceRules$Context
public net.minecraft.world.level.levelgen.SurfaceRules$Context blockX
@@ -744,9 +630,6 @@ public net.minecraft.world.level.levelgen.SurfaceRules$Context context
public net.minecraft.world.level.levelgen.SurfaceRules$Context randomState
public net.minecraft.world.level.levelgen.SurfaceRules$LazyCondition
public net.minecraft.world.level.levelgen.SurfaceRules$LazyYCondition
public net.minecraft.world.level.levelgen.SurfaceRules$SurfaceRule
public net.minecraft.world.level.levelgen.SurfaceRules$VerticalGradientConditionSource
public net.minecraft.world.level.levelgen.SurfaceRules$VerticalGradientConditionSource <init>(Lnet/minecraft/resources/Identifier;Lnet/minecraft/world/level/levelgen/VerticalAnchor;Lnet/minecraft/world/level/levelgen/VerticalAnchor;)V
public net.minecraft.world.level.levelgen.structure.StructurePiece SHAPE_CHECK_BLOCKS
public net.minecraft.world.level.levelgen.structure.placement.StructurePlacement exclusionZone
public net.minecraft.world.level.levelgen.structure.placement.StructurePlacement frequency
@@ -760,29 +643,20 @@ public net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemp
public net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager tryLoad(Lnet/minecraft/resources/Identifier;)Ljava/util/Optional;
public net.minecraft.world.level.levelgen.structure.templatesystem.loader.TemplateSource readStructure(Ljava/io/InputStream;)Lnet/minecraft/nbt/CompoundTag;
public net.minecraft.world.level.levelgen.structure.templatesystem.loader.TemplateSource readStructure(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate;
public net.minecraft.world.level.material.MapColor MATERIAL_COLORS
public net.minecraft.world.level.pathfinder.Path nodes
public net.minecraft.world.level.pathfinder.PathFinder nodeEvaluator
public net.minecraft.world.level.saveddata.maps.MapItemSavedData carriedBy
public net.minecraft.world.level.saveddata.maps.MapItemSavedData carriedByPlayers
public net.minecraft.world.level.saveddata.maps.MapItemSavedData decorations
public net.minecraft.world.level.saveddata.maps.MapItemSavedData setColorsDirty(II)V
public net.minecraft.world.level.saveddata.maps.MapItemSavedData setDecorationsDirty()V
public net.minecraft.world.level.storage.LevelStorageSource baseDir
public net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess levelDirectory
public net.minecraft.world.level.storage.PrimaryLevelData settings
public net.minecraft.world.level.storage.SavedDataStorage cache
public net.minecraft.world.level.storage.TagValueInput input
public net.minecraft.world.scores.Objective displayName
public net.minecraft.world.scores.criteria.ObjectiveCriteria CRITERIA_CACHE
public-f net.minecraft.server.MinecraftServer potionBrewing
public-f net.minecraft.server.MinecraftServer storageSource
public-f net.minecraft.server.ReloadableServerResources commands
public-f net.minecraft.server.dedicated.DedicatedServer serverLinks
public-f net.minecraft.server.dedicated.DedicatedServer settings
public-f net.minecraft.server.dedicated.DedicatedServerProperties pauseWhenEmptySeconds
public-f net.minecraft.world.entity.LivingEntity combatTracker
public-f net.minecraft.world.entity.Mob goalSelector
public-f net.minecraft.world.entity.Mob targetSelector
public-f net.minecraft.world.entity.ai.attributes.RangedAttribute maxValue
public-f net.minecraft.world.entity.player.Player gameProfile
+30 -3
View File
@@ -1,19 +1,46 @@
import io.papermc.paperweight.checkstyle.PaperCheckstyleExt
import io.papermc.paperweight.checkstyle.tasks.PaperCheckstyleTask
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent
plugins {
id("io.papermc.paperweight.core") version "2.0.0-SNAPSHOT" apply false
id("io.papermc.paperweight.core") version "2.0.0-beta.21" apply false
}
subprojects {
apply(plugin = "java-library")
apply(plugin = "maven-publish")
apply {
plugin("java-library")
plugin("maven-publish")
}
extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
val tempDisabled = setOf("paper-server", "paper-generator", "test-plugin")
if (name !in tempDisabled) {
apply { plugin("io.papermc.paperweight.paper-checkstyle") }
extensions.configure<PaperCheckstyleExt> {
typeUseAnnotationsFile.set(rootProject.layout.projectDirectory.file(".checkstyle/type_use_annotations.txt"))
}
/*tasks.withType<PaperCheckstyleTask>().configureEach {
configDirectory = rootProject.layout.projectDirectory.dir(".checkstyle")
// configFile = layout.projectDirectory.file(".checkstyle/checkstyle.xml").asFile // use the base file if not overwritten
maxHeapSize = "2g"
reports {
xml.required = true
html.required = true
}
}*/
dependencies {
"checkstyle"(project(":paper-checkstyle"))
}
}
}
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
+3 -3
View File
@@ -1,9 +1,9 @@
group=io.papermc.paper
mcVersion=26.1.2
mcVersion=26.2
# This is the current API version for use in (paper-)plugin.yml files
# During snapshot cycles this should be the anticipated version of the release target
apiVersion=26.1.2
channel=ALPHA
apiVersion=26.2
channel=STABLE
# Set to true while updating Minecraft version
updatingMinecraft=false
+26
View File
@@ -0,0 +1,26 @@
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<!--Single Suppression Filters-->
<module name="io.papermc.checkstyle.filters.BetterSuppressionSingleFilter">
<property name="checks" value="Javadoc(Method|Type)"/>
<property name="messageKey" value="javadoc\.unknownTag"/>
<!--[A-Z].* check is for java annotations inside code blocks inside Javadocs-->
<property name="arguments" value="(${custom_javadoc_tags}|[A-Z].*)"/>
</module>
<module name="TreeWalker">
<module name="JavadocVariable">
<!--requires on public fields-->
<property name="accessModifiers" value="public"/>
</module>
<module name="MissingJavadocMethod">
<property name="allowedAnnotations" value="Override, ApiStatus.Internal"/>
<property name="ignoreMethodNamesRegex" value="^getHandlerList$"/>
</module>
<module name="MissingJavadocPackage"/>
<module name="MissingJavadocType">
<property name="skipAnnotations" value="Generated, ApiStatus.Internal" />
</module>
</module>
</module>
@@ -0,0 +1,201 @@
paper-api/src/generated/java/com/destroystokyo/paper/entity/ai/
paper-api/src/generated/java/io/papermc/paper/registry/keys/
paper-api/src/generated/java/io/papermc/paper/registry/keys/tags/
paper-api/src/main/java/co/aikar/timings/
paper-api/src/main/java/co/aikar/util/
paper-api/src/main/java/com/destroystokyo/paper/
paper-api/src/main/java/com/destroystokyo/paper/block/
paper-api/src/main/java/com/destroystokyo/paper/brigadier/
paper-api/src/main/java/com/destroystokyo/paper/entity/
paper-api/src/main/java/com/destroystokyo/paper/entity/ai/
paper-api/src/main/java/com/destroystokyo/paper/entity/villager/
paper-api/src/main/java/com/destroystokyo/paper/event/block/
paper-api/src/main/java/com/destroystokyo/paper/event/brigadier/
paper-api/src/main/java/com/destroystokyo/paper/event/entity/
paper-api/src/main/java/com/destroystokyo/paper/event/inventory/
paper-api/src/main/java/com/destroystokyo/paper/event/player/
paper-api/src/main/java/com/destroystokyo/paper/event/profile/
paper-api/src/main/java/com/destroystokyo/paper/event/server/
paper-api/src/main/java/com/destroystokyo/paper/exception/
paper-api/src/main/java/com/destroystokyo/paper/inventory/meta/
paper-api/src/main/java/com/destroystokyo/paper/loottable/
paper-api/src/main/java/com/destroystokyo/paper/network/
paper-api/src/main/java/com/destroystokyo/paper/profile/
paper-api/src/main/java/com/destroystokyo/paper/util/
paper-api/src/main/java/com/destroystokyo/paper/utils/
paper-api/src/main/java/io/papermc/paper/advancement/
paper-api/src/main/java/io/papermc/paper/annotation/
paper-api/src/main/java/io/papermc/paper/ban/
paper-api/src/main/java/io/papermc/paper/block/
paper-api/src/main/java/io/papermc/paper/block/bed/
paper-api/src/main/java/io/papermc/paper/block/fluid/
paper-api/src/main/java/io/papermc/paper/block/fluid/type/
paper-api/src/main/java/io/papermc/paper/brigadier/
paper-api/src/main/java/io/papermc/paper/chat/
paper-api/src/main/java/io/papermc/paper/command/
paper-api/src/main/java/io/papermc/paper/command/brigadier/
paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/
paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/position/
paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/predicate/
paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/range/
paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/resolvers/
paper-api/src/main/java/io/papermc/paper/command/brigadier/argument/resolvers/selector/
paper-api/src/main/java/io/papermc/paper/configuration/
paper-api/src/main/java/io/papermc/paper/connection/
paper-api/src/main/java/io/papermc/paper/datacomponent/
paper-api/src/main/java/io/papermc/paper/datacomponent/item/
paper-api/src/main/java/io/papermc/paper/datacomponent/item/attribute/
paper-api/src/main/java/io/papermc/paper/datacomponent/item/blocksattacks/
paper-api/src/main/java/io/papermc/paper/datacomponent/item/consumable/
paper-api/src/main/java/io/papermc/paper/datapack/
paper-api/src/main/java/io/papermc/paper/dialog/
paper-api/src/main/java/io/papermc/paper/enchantments/
paper-api/src/main/java/io/papermc/paper/entity/
paper-api/src/main/java/io/papermc/paper/entity/poi/
paper-api/src/main/java/io/papermc/paper/event/block/
paper-api/src/main/java/io/papermc/paper/event/connection/
paper-api/src/main/java/io/papermc/paper/event/connection/configuration/
paper-api/src/main/java/io/papermc/paper/event/entity/
paper-api/src/main/java/io/papermc/paper/event/executor/
paper-api/src/main/java/io/papermc/paper/event/inventory/
paper-api/src/main/java/io/papermc/paper/event/packet/
paper-api/src/main/java/io/papermc/paper/event/player/
paper-api/src/main/java/io/papermc/paper/event/server/
paper-api/src/main/java/io/papermc/paper/event/world/
paper-api/src/main/java/io/papermc/paper/event/world/border/
paper-api/src/main/java/io/papermc/paper/generated/
paper-api/src/main/java/io/papermc/paper/inventory/
paper-api/src/main/java/io/papermc/paper/inventory/tooltip/
paper-api/src/main/java/io/papermc/paper/item/
paper-api/src/main/java/io/papermc/paper/persistence/
paper-api/src/main/java/io/papermc/paper/plugin/
paper-api/src/main/java/io/papermc/paper/plugin/bootstrap/
paper-api/src/main/java/io/papermc/paper/plugin/configuration/
paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/
paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/handler/
paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/handler/configuration/
paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/registrar/
paper-api/src/main/java/io/papermc/paper/plugin/lifecycle/event/types/
paper-api/src/main/java/io/papermc/paper/plugin/loader/
paper-api/src/main/java/io/papermc/paper/plugin/loader/library/
paper-api/src/main/java/io/papermc/paper/plugin/loader/library/impl/
paper-api/src/main/java/io/papermc/paper/plugin/provider/classloader/
paper-api/src/main/java/io/papermc/paper/plugin/provider/entrypoint/
paper-api/src/main/java/io/papermc/paper/plugin/provider/util/
paper-api/src/main/java/io/papermc/paper/potion/
paper-api/src/main/java/io/papermc/paper/raytracing/
paper-api/src/main/java/io/papermc/paper/registry/
paper-api/src/main/java/io/papermc/paper/registry/data/
paper-api/src/main/java/io/papermc/paper/registry/data/client/
paper-api/src/main/java/io/papermc/paper/registry/data/dialog/
paper-api/src/main/java/io/papermc/paper/registry/data/dialog/action/
paper-api/src/main/java/io/papermc/paper/registry/data/dialog/body/
paper-api/src/main/java/io/papermc/paper/registry/data/dialog/input/
paper-api/src/main/java/io/papermc/paper/registry/data/dialog/type/
paper-api/src/main/java/io/papermc/paper/registry/event/
paper-api/src/main/java/io/papermc/paper/registry/event/type/
paper-api/src/main/java/io/papermc/paper/registry/holder/
paper-api/src/main/java/io/papermc/paper/registry/set/
paper-api/src/main/java/io/papermc/paper/registry/tag/
paper-api/src/main/java/io/papermc/paper/scoreboard/numbers/
paper-api/src/main/java/io/papermc/paper/tag/
paper-api/src/main/java/io/papermc/paper/text/
paper-api/src/main/java/io/papermc/paper/threadedregions/
paper-api/src/main/java/io/papermc/paper/threadedregions/scheduler/
paper-api/src/main/java/io/papermc/paper/util/
paper-api/src/main/java/io/papermc/paper/world/
paper-api/src/main/java/io/papermc/paper/world/damagesource/
paper-api/src/main/java/io/papermc/paper/world/flag/
paper-api/src/main/java/org/bukkit/
paper-api/src/main/java/org/bukkit/advancement/
paper-api/src/main/java/org/bukkit/attribute/
paper-api/src/main/java/org/bukkit/ban/
paper-api/src/main/java/org/bukkit/block/
paper-api/src/main/java/org/bukkit/block/banner/
paper-api/src/main/java/org/bukkit/block/data/
paper-api/src/main/java/org/bukkit/block/data/type/
paper-api/src/main/java/org/bukkit/block/sign/
paper-api/src/main/java/org/bukkit/block/spawner/
paper-api/src/main/java/org/bukkit/block/structure/
paper-api/src/main/java/org/bukkit/boss/
paper-api/src/main/java/org/bukkit/command/
paper-api/src/main/java/org/bukkit/command/defaults/
paper-api/src/main/java/org/bukkit/configuration/
paper-api/src/main/java/org/bukkit/configuration/file/
paper-api/src/main/java/org/bukkit/configuration/serialization/
paper-api/src/main/java/org/bukkit/conversations/
paper-api/src/main/java/org/bukkit/damage/
paper-api/src/main/java/org/bukkit/enchantments/
paper-api/src/main/java/org/bukkit/entity/
paper-api/src/main/java/org/bukkit/entity/boat/
paper-api/src/main/java/org/bukkit/entity/memory/
paper-api/src/main/java/org/bukkit/entity/minecart/
paper-api/src/main/java/org/bukkit/event/
paper-api/src/main/java/org/bukkit/event/block/
paper-api/src/main/java/org/bukkit/event/command/
paper-api/src/main/java/org/bukkit/event/enchantment/
paper-api/src/main/java/org/bukkit/event/entity/
paper-api/src/main/java/org/bukkit/event/hanging/
paper-api/src/main/java/org/bukkit/event/inventory/
paper-api/src/main/java/org/bukkit/event/player/
paper-api/src/main/java/org/bukkit/event/raid/
paper-api/src/main/java/org/bukkit/event/server/
paper-api/src/main/java/org/bukkit/event/vehicle/
paper-api/src/main/java/org/bukkit/event/weather/
paper-api/src/main/java/org/bukkit/event/world/
paper-api/src/main/java/org/bukkit/generator/
paper-api/src/main/java/org/bukkit/generator/structure/
paper-api/src/main/java/org/bukkit/help/
paper-api/src/main/java/org/bukkit/inventory/
paper-api/src/main/java/org/bukkit/inventory/meta/
paper-api/src/main/java/org/bukkit/inventory/meta/components/
paper-api/src/main/java/org/bukkit/inventory/meta/tags/
paper-api/src/main/java/org/bukkit/inventory/meta/trim/
paper-api/src/main/java/org/bukkit/inventory/recipe/
paper-api/src/main/java/org/bukkit/inventory/view/
paper-api/src/main/java/org/bukkit/inventory/view/builder/
paper-api/src/main/java/org/bukkit/loot/
paper-api/src/main/java/org/bukkit/map/
paper-api/src/main/java/org/bukkit/material/
paper-api/src/main/java/org/bukkit/material/types/
paper-api/src/main/java/org/bukkit/metadata/
paper-api/src/main/java/org/bukkit/packs/
paper-api/src/main/java/org/bukkit/permissions/
paper-api/src/main/java/org/bukkit/persistence/
paper-api/src/main/java/org/bukkit/plugin/
paper-api/src/main/java/org/bukkit/plugin/java/
paper-api/src/main/java/org/bukkit/plugin/messaging/
paper-api/src/main/java/org/bukkit/potion/
paper-api/src/main/java/org/bukkit/profile/
paper-api/src/main/java/org/bukkit/projectiles/
paper-api/src/main/java/org/bukkit/scheduler/
paper-api/src/main/java/org/bukkit/scoreboard/
paper-api/src/main/java/org/bukkit/spawner/
paper-api/src/main/java/org/bukkit/structure/
paper-api/src/main/java/org/bukkit/tag/
paper-api/src/main/java/org/bukkit/util/
paper-api/src/main/java/org/bukkit/util/io/
paper-api/src/main/java/org/bukkit/util/noise/
paper-api/src/main/java/org/bukkit/util/permissions/
paper-api/src/main/java/org/spigotmc/
paper-api/src/main/java/org/spigotmc/event/player/
paper-api/src/test/java/com/destroystokyo/paper/
paper-api/src/test/java/io/papermc/paper/adventure/
paper-api/src/test/java/io/papermc/paper/registry/
paper-api/src/test/java/io/papermc/paper/testing/
paper-api/src/test/java/io/papermc/paper/util/
paper-api/src/test/java/org/bukkit/
paper-api/src/test/java/org/bukkit/configuration/
paper-api/src/test/java/org/bukkit/configuration/file/
paper-api/src/test/java/org/bukkit/conversations/
paper-api/src/test/java/org/bukkit/event/
paper-api/src/test/java/org/bukkit/materials/
paper-api/src/test/java/org/bukkit/metadata/
paper-api/src/test/java/org/bukkit/plugin/
paper-api/src/test/java/org/bukkit/plugin/messaging/
paper-api/src/test/java/org/bukkit/scoreboard/
paper-api/src/test/java/org/bukkit/support/
paper-api/src/test/java/org/bukkit/support/provider/
paper-api/src/test/java/org/bukkit/support/test/
paper-api/src/test/java/org/bukkit/util/
paper-api/src/test/java/org/bukkit/util/io/
+33 -23
View File
@@ -1,9 +1,11 @@
import io.papermc.paperweight.checkstyle.JavadocTag
import paper.libs.com.google.gson.Gson
plugins {
`java-library`
`maven-publish`
idea
id("io.papermc.paperweight.paper-checkstyle")
}
java {
@@ -11,13 +13,26 @@ java {
withJavadocJar()
}
val projectCustomJavadocTags = setOf(
JavadocTag("apiNote", "a", "API Note:"),
)
paperCheckstyle {
customJavadocTags = projectCustomJavadocTags
directoriesToSkipFile = layout.projectDirectory.file(".checkstyle/ignored_directories.txt")
}
val annotationsVersion = "26.0.2"
val adventureVersion = "4.26.1"
val adventureVersion = "5.2.0"
val bungeeCordChatVersion = "1.21-R0.2-deprecated+build.21"
val slf4jVersion = "2.0.17"
val log4jVersion = "2.25.2"
val log4jVersion = "2.26.0"
val apiAndDocs: Configuration by configurations.creating {
val apiAndDocs: Configuration by configurations.creating
configurations.api {
extendsFrom(apiAndDocs)
}
val javadocSourcepath: Configuration by configurations.creating {
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
@@ -25,9 +40,6 @@ val apiAndDocs: Configuration by configurations.creating {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
}
}
configurations.api {
extendsFrom(apiAndDocs)
}
// Configure mockito agent that is needed in newer Java versions
val mockitoAgent = configurations.register("mockitoAgent")
@@ -42,8 +54,8 @@ abstract class MockitoAgentProvider : CommandLineArgumentProvider {
dependencies {
// api dependencies are listed transitively to API consumers
api("com.google.guava:guava:33.5.0-jre")
api("com.google.code.gson:gson:2.13.2")
api("com.google.guava:guava:33.6.0-jre")
api("com.google.code.gson:gson:2.14.0")
api("org.yaml:snakeyaml:2.2")
api("org.joml:joml:1.10.8") {
isTransitive = false // https://github.com/JOML-CI/JOML/issues/352
@@ -60,6 +72,7 @@ dependencies {
apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
apiAndDocs("net.kyori:adventure-api")
apiAndDocs("net.kyori:adventure-key")
apiAndDocs("net.kyori:adventure-text-minimessage")
apiAndDocs("net.kyori:adventure-text-serializer-gson")
apiAndDocs("net.kyori:adventure-text-serializer-legacy")
@@ -74,12 +87,13 @@ dependencies {
val annotations = "org.jetbrains:annotations:$annotationsVersion"
compileOnly(annotations)
testCompileOnly(annotations)
javadocSourcepath(annotations) // For adventure-api module requirements
val checkerQual = "org.checkerframework:checker-qual:3.49.2"
compileOnlyApi(checkerQual)
testCompileOnly(checkerQual)
api("org.jspecify:jspecify:1.0.0")
apiAndDocs("org.jspecify:jspecify:1.0.0")
// Test dependencies
testImplementation("org.apache.commons:commons-lang3:3.20.0")
@@ -89,6 +103,9 @@ dependencies {
testImplementation("org.ow2.asm:asm-tree:9.9.1")
mockitoAgent("org.mockito:mockito-core:5.22.0") { isTransitive = false } // configure mockito agent that is needed in newer java versions
testRuntimeOnly("org.junit.platform:junit-platform-launcher:6.0.3")
// checkstyle
checkstyle(project(":paper-checkstyle"))
}
val generatedDir: java.nio.file.Path = layout.projectDirectory.dir("src/generated/java").asFile.toPath()
@@ -187,32 +204,25 @@ tasks.withType<Javadoc>().configureEach {
options.use()
options.isDocFilesSubDirs = true
options.links(
"https://guava.dev/releases/33.5.0-jre/api/docs/",
"https://guava.dev/releases/33.6.0-jre/api/docs/",
"https://www.javadocs.dev/org.yaml/snakeyaml/2.2/",
"https://www.javadocs.dev/org.jetbrains/annotations/$annotationsVersion/",
"https://www.javadocs.dev/org.joml/joml/1.10.8/",
"https://www.javadocs.dev/com.google.code.gson/gson/2.13.2",
"https://www.javadocs.dev/com.google.code.gson/gson/2.14.0",
"https://jspecify.dev/docs/api/",
"https://jd.advntr.dev/api/$adventureVersion/",
"https://jd.advntr.dev/key/$adventureVersion/",
"https://jd.advntr.dev/text-minimessage/$adventureVersion/",
"https://jd.advntr.dev/text-serializer-gson/$adventureVersion/",
"https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/",
"https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
"https://jd.papermc.io/adventure/$adventureVersion/",
"https://www.javadocs.dev/org.slf4j/slf4j-api/$slf4jVersion/",
"https://logging.apache.org/log4j/2.x/javadoc/log4j-api/",
"https://www.javadocs.dev/org.apache.maven.resolver/maven-resolver-api/1.7.3",
)
options.tags("apiNote:a:API Note:")
options.tags("implNote:a:Implementation Note:")
options.tags(projectCustomJavadocTags.map { it.toOptionString() })
inputs.files(apiAndDocs).ignoreEmptyDirectories().withPropertyName(apiAndDocs.name + "-configuration")
val apiAndDocsElements = apiAndDocs.elements
inputs.files(javadocSourcepath).ignoreEmptyDirectories().withPropertyName(javadocSourcepath.name + "-configuration")
val javadocSourcepathElements = javadocSourcepath.elements
doFirst {
options.addStringOption(
"sourcepath",
apiAndDocsElements.get().map { it.asFile }.joinToString(separator = File.pathSeparator, transform = File::getPath)
javadocSourcepathElements.get().map { it.asFile }.joinToString(separator = File.pathSeparator, transform = File::getPath)
)
}
@@ -4,6 +4,7 @@ import com.destroystokyo.paper.entity.RangedEntity;
import io.papermc.paper.annotation.GeneratedClass;
import io.papermc.paper.entity.SchoolableFish;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.AbstractCubeMob;
import org.bukkit.entity.AbstractHorse;
import org.bukkit.entity.AbstractSkeleton;
import org.bukkit.entity.AbstractVillager;
@@ -39,11 +40,11 @@ import org.bukkit.entity.Raider;
import org.bukkit.entity.Shulker;
import org.bukkit.entity.Silverfish;
import org.bukkit.entity.SkeletonHorse;
import org.bukkit.entity.Slime;
import org.bukkit.entity.Spellcaster;
import org.bukkit.entity.Spider;
import org.bukkit.entity.Squid;
import org.bukkit.entity.Strider;
import org.bukkit.entity.SulfurCube;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.Turtle;
import org.bukkit.entity.Vex;
@@ -70,6 +71,14 @@ import org.jspecify.annotations.NullMarked;
@NullMarked
@GeneratedClass
public interface VanillaGoal<T extends Mob> extends Goal<T> {
GoalKey<AbstractCubeMob> CUBE_MOB_ATTACK = create("cube_mob_attack", AbstractCubeMob.class);
GoalKey<AbstractCubeMob> CUBE_MOB_FLOAT = create("cube_mob_float", AbstractCubeMob.class);
GoalKey<AbstractCubeMob> CUBE_MOB_KEEP_ON_JUMPING = create("cube_mob_keep_on_jumping", AbstractCubeMob.class);
GoalKey<AbstractCubeMob> CUBE_MOB_RANDOM_DIRECTION = create("cube_mob_random_direction", AbstractCubeMob.class);
GoalKey<AbstractHorse> HORSE_MOUNT_PANIC = create("horse_mount_panic", AbstractHorse.class);
GoalKey<AbstractHorse> HORSE_RANDOM_STAND = create("horse_random_stand", AbstractHorse.class);
@@ -290,6 +299,8 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
GoalKey<Mob> RESET_UNIVERSAL_ANGER = create("reset_universal_anger", Mob.class);
GoalKey<Mob> SULFUR_CUBE_TEMPT = create("sulfur_cube_tempt", Mob.class);
GoalKey<Mob> TEMPT_FOR_NON_PATHFINDERS = create("tempt_for_non_pathfinders", Mob.class);
GoalKey<Mob> USE_ITEM = create("use_item", Mob.class);
@@ -384,14 +395,6 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
GoalKey<SkeletonHorse> SKELETON_HORSE_SKELETON_TRAP = create("skeleton_horse_skeleton_trap", SkeletonHorse.class);
GoalKey<Slime> SLIME_ATTACK = create("slime_attack", Slime.class);
GoalKey<Slime> SLIME_FLOAT = create("slime_float", Slime.class);
GoalKey<Slime> SLIME_KEEP_ON_JUMPING = create("slime_keep_on_jumping", Slime.class);
GoalKey<Slime> SLIME_RANDOM_DIRECTION = create("slime_random_direction", Slime.class);
GoalKey<Spellcaster> SPELLCASTER_CASTING_SPELL = create("spellcaster_casting_spell", Spellcaster.class);
GoalKey<Spider> SPIDER = create("spider", Spider.class);
@@ -404,6 +407,8 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
GoalKey<Strider> STRIDER_GO_TO_LAVA = create("strider_go_to_lava", Strider.class);
GoalKey<SulfurCube> SULFUR_CUBE_SEARCH_FOR_ITEMS = create("sulfur_cube_search_for_items", SulfurCube.class);
GoalKey<Tameable> FOLLOW_OWNER = create("follow_owner", Tameable.class);
GoalKey<Tameable> NON_TAME_RANDOM = create("non_tame_random", Tameable.class);
@@ -25,6 +25,13 @@ import org.jspecify.annotations.NullMarked;
@NullMarked
@GeneratedClass
public final class AttributeKeys {
/**
* {@code minecraft:air_drag_modifier}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Attribute> AIR_DRAG_MODIFIER = create(key("air_drag_modifier"));
/**
* {@code minecraft:armor}
*
@@ -60,6 +67,13 @@ public final class AttributeKeys {
*/
public static final TypedKey<Attribute> ATTACK_SPEED = create(key("attack_speed"));
/**
* {@code minecraft:below_name_distance}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Attribute> BELOW_NAME_DISTANCE = create(key("below_name_distance"));
/**
* {@code minecraft:block_break_speed}
*
@@ -74,6 +88,13 @@ public final class AttributeKeys {
*/
public static final TypedKey<Attribute> BLOCK_INTERACTION_RANGE = create(key("block_interaction_range"));
/**
* {@code minecraft:bounciness}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Attribute> BOUNCINESS = create(key("bounciness"));
/**
* {@code minecraft:burning_time}
*
@@ -123,6 +144,13 @@ public final class AttributeKeys {
*/
public static final TypedKey<Attribute> FOLLOW_RANGE = create(key("follow_range"));
/**
* {@code minecraft:friction_modifier}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Attribute> FRICTION_MODIFIER = create(key("friction_modifier"));
/**
* {@code minecraft:gravity}
*
@@ -186,6 +214,13 @@ public final class AttributeKeys {
*/
public static final TypedKey<Attribute> MOVEMENT_SPEED = create(key("movement_speed"));
/**
* {@code minecraft:name_tag_distance}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Attribute> NAME_TAG_DISTANCE = create(key("name_tag_distance"));
/**
* {@code minecraft:oxygen_bonus}
*
@@ -396,6 +396,13 @@ public final class BiomeKeys {
*/
public static final TypedKey<Biome> STONY_SHORE = create(key("stony_shore"));
/**
* {@code minecraft:sulfur_caves}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Biome> SULFUR_CAVES = create(key("sulfur_caves"));
/**
* {@code minecraft:sunflower_plains}
*
@@ -1348,6 +1348,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> CHISELED_BOOKSHELF = create(key("chiseled_bookshelf"));
/**
* {@code minecraft:chiseled_cinnabar}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CHISELED_CINNABAR = create(key("chiseled_cinnabar"));
/**
* {@code minecraft:chiseled_copper}
*
@@ -1411,6 +1418,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> CHISELED_STONE_BRICKS = create(key("chiseled_stone_bricks"));
/**
* {@code minecraft:chiseled_sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CHISELED_SULFUR = create(key("chiseled_sulfur"));
/**
* {@code minecraft:chiseled_tuff}
*
@@ -1439,6 +1453,62 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> CHORUS_PLANT = create(key("chorus_plant"));
/**
* {@code minecraft:cinnabar}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR = create(key("cinnabar"));
/**
* {@code minecraft:cinnabar_brick_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_BRICK_SLAB = create(key("cinnabar_brick_slab"));
/**
* {@code minecraft:cinnabar_brick_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_BRICK_STAIRS = create(key("cinnabar_brick_stairs"));
/**
* {@code minecraft:cinnabar_brick_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_BRICK_WALL = create(key("cinnabar_brick_wall"));
/**
* {@code minecraft:cinnabar_bricks}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_BRICKS = create(key("cinnabar_bricks"));
/**
* {@code minecraft:cinnabar_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_SLAB = create(key("cinnabar_slab"));
/**
* {@code minecraft:cinnabar_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_STAIRS = create(key("cinnabar_stairs"));
/**
* {@code minecraft:cinnabar_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> CINNABAR_WALL = create(key("cinnabar_wall"));
/**
* {@code minecraft:clay}
*
@@ -5275,6 +5345,34 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> POLISHED_BLACKSTONE_WALL = create(key("polished_blackstone_wall"));
/**
* {@code minecraft:polished_cinnabar}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_CINNABAR = create(key("polished_cinnabar"));
/**
* {@code minecraft:polished_cinnabar_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_CINNABAR_SLAB = create(key("polished_cinnabar_slab"));
/**
* {@code minecraft:polished_cinnabar_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_CINNABAR_STAIRS = create(key("polished_cinnabar_stairs"));
/**
* {@code minecraft:polished_cinnabar_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_CINNABAR_WALL = create(key("polished_cinnabar_wall"));
/**
* {@code minecraft:polished_deepslate}
*
@@ -5345,6 +5443,34 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> POLISHED_GRANITE_STAIRS = create(key("polished_granite_stairs"));
/**
* {@code minecraft:polished_sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_SULFUR = create(key("polished_sulfur"));
/**
* {@code minecraft:polished_sulfur_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_SULFUR_SLAB = create(key("polished_sulfur_slab"));
/**
* {@code minecraft:polished_sulfur_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_SULFUR_STAIRS = create(key("polished_sulfur_stairs"));
/**
* {@code minecraft:polished_sulfur_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POLISHED_SULFUR_WALL = create(key("polished_sulfur_wall"));
/**
* {@code minecraft:polished_tuff}
*
@@ -5387,6 +5513,13 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> POTATOES = create(key("potatoes"));
/**
* {@code minecraft:potent_sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> POTENT_SULFUR = create(key("potent_sulfur"));
/**
* {@code minecraft:potted_acacia_sapling}
*
@@ -6969,6 +7102,69 @@ public final class BlockTypeKeys {
*/
public static final TypedKey<BlockType> SUGAR_CANE = create(key("sugar_cane"));
/**
* {@code minecraft:sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR = create(key("sulfur"));
/**
* {@code minecraft:sulfur_brick_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_BRICK_SLAB = create(key("sulfur_brick_slab"));
/**
* {@code minecraft:sulfur_brick_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_BRICK_STAIRS = create(key("sulfur_brick_stairs"));
/**
* {@code minecraft:sulfur_brick_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_BRICK_WALL = create(key("sulfur_brick_wall"));
/**
* {@code minecraft:sulfur_bricks}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_BRICKS = create(key("sulfur_bricks"));
/**
* {@code minecraft:sulfur_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_SLAB = create(key("sulfur_slab"));
/**
* {@code minecraft:sulfur_spike}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_SPIKE = create(key("sulfur_spike"));
/**
* {@code minecraft:sulfur_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_STAIRS = create(key("sulfur_stairs"));
/**
* {@code minecraft:sulfur_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<BlockType> SULFUR_WALL = create(key("sulfur_wall"));
/**
* {@code minecraft:sunflower}
*
@@ -319,6 +319,13 @@ public final class DamageTypeKeys {
*/
public static final TypedKey<DamageType> STING = create(key("sting"));
/**
* {@code minecraft:sulfur_cube_hot}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<DamageType> SULFUR_CUBE_HOT = create(key("sulfur_cube_hot"));
/**
* {@code minecraft:sweet_berry_bush}
*
@@ -648,6 +648,13 @@ public final class DataComponentTypeKeys {
*/
public static final TypedKey<DataComponentType> STORED_ENCHANTMENTS = create(key("stored_enchantments"));
/**
* {@code minecraft:sulfur_cube_content}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<DataComponentType> SULFUR_CUBE_CONTENT = create(key("sulfur_cube_content"));
/**
* {@code minecraft:suspicious_stew_effects}
*
@@ -88,6 +88,13 @@ public final class GameEventKeys {
*/
public static final TypedKey<GameEvent> BLOCK_PLACE = create(key("block_place"));
/**
* {@code minecraft:bounce}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<GameEvent> BOUNCE = create(key("bounce"));
/**
* {@code minecraft:container_close}
*
@@ -1670,6 +1670,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> CHISELED_BOOKSHELF = create(key("chiseled_bookshelf"));
/**
* {@code minecraft:chiseled_cinnabar}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CHISELED_CINNABAR = create(key("chiseled_cinnabar"));
/**
* {@code minecraft:chiseled_copper}
*
@@ -1733,6 +1740,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> CHISELED_STONE_BRICKS = create(key("chiseled_stone_bricks"));
/**
* {@code minecraft:chiseled_sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CHISELED_SULFUR = create(key("chiseled_sulfur"));
/**
* {@code minecraft:chiseled_tuff}
*
@@ -1768,6 +1782,62 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> CHORUS_PLANT = create(key("chorus_plant"));
/**
* {@code minecraft:cinnabar}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR = create(key("cinnabar"));
/**
* {@code minecraft:cinnabar_brick_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_BRICK_SLAB = create(key("cinnabar_brick_slab"));
/**
* {@code minecraft:cinnabar_brick_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_BRICK_STAIRS = create(key("cinnabar_brick_stairs"));
/**
* {@code minecraft:cinnabar_brick_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_BRICK_WALL = create(key("cinnabar_brick_wall"));
/**
* {@code minecraft:cinnabar_bricks}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_BRICKS = create(key("cinnabar_bricks"));
/**
* {@code minecraft:cinnabar_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_SLAB = create(key("cinnabar_slab"));
/**
* {@code minecraft:cinnabar_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_STAIRS = create(key("cinnabar_stairs"));
/**
* {@code minecraft:cinnabar_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> CINNABAR_WALL = create(key("cinnabar_wall"));
/**
* {@code minecraft:clay}
*
@@ -5863,6 +5933,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> MUSIC_DISC_BLOCKS = create(key("music_disc_blocks"));
/**
* {@code minecraft:music_disc_bounce}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> MUSIC_DISC_BOUNCE = create(key("music_disc_bounce"));
/**
* {@code minecraft:music_disc_cat}
*
@@ -7179,6 +7256,34 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> POLISHED_BLACKSTONE_WALL = create(key("polished_blackstone_wall"));
/**
* {@code minecraft:polished_cinnabar}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_CINNABAR = create(key("polished_cinnabar"));
/**
* {@code minecraft:polished_cinnabar_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_CINNABAR_SLAB = create(key("polished_cinnabar_slab"));
/**
* {@code minecraft:polished_cinnabar_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_CINNABAR_STAIRS = create(key("polished_cinnabar_stairs"));
/**
* {@code minecraft:polished_cinnabar_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_CINNABAR_WALL = create(key("polished_cinnabar_wall"));
/**
* {@code minecraft:polished_deepslate}
*
@@ -7249,6 +7354,34 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> POLISHED_GRANITE_STAIRS = create(key("polished_granite_stairs"));
/**
* {@code minecraft:polished_sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_SULFUR = create(key("polished_sulfur"));
/**
* {@code minecraft:polished_sulfur_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_SULFUR_SLAB = create(key("polished_sulfur_slab"));
/**
* {@code minecraft:polished_sulfur_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_SULFUR_STAIRS = create(key("polished_sulfur_stairs"));
/**
* {@code minecraft:polished_sulfur_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POLISHED_SULFUR_WALL = create(key("polished_sulfur_wall"));
/**
* {@code minecraft:polished_tuff}
*
@@ -7305,6 +7438,13 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> POTATO = create(key("potato"));
/**
* {@code minecraft:potent_sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> POTENT_SULFUR = create(key("potent_sulfur"));
/**
* {@code minecraft:potion}
*
@@ -9076,6 +9216,83 @@ public final class ItemTypeKeys {
*/
public static final TypedKey<ItemType> SUGAR_CANE = create(key("sugar_cane"));
/**
* {@code minecraft:sulfur}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR = create(key("sulfur"));
/**
* {@code minecraft:sulfur_brick_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_BRICK_SLAB = create(key("sulfur_brick_slab"));
/**
* {@code minecraft:sulfur_brick_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_BRICK_STAIRS = create(key("sulfur_brick_stairs"));
/**
* {@code minecraft:sulfur_brick_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_BRICK_WALL = create(key("sulfur_brick_wall"));
/**
* {@code minecraft:sulfur_bricks}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_BRICKS = create(key("sulfur_bricks"));
/**
* {@code minecraft:sulfur_cube_bucket}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_CUBE_BUCKET = create(key("sulfur_cube_bucket"));
/**
* {@code minecraft:sulfur_cube_spawn_egg}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_CUBE_SPAWN_EGG = create(key("sulfur_cube_spawn_egg"));
/**
* {@code minecraft:sulfur_slab}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_SLAB = create(key("sulfur_slab"));
/**
* {@code minecraft:sulfur_spike}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_SPIKE = create(key("sulfur_spike"));
/**
* {@code minecraft:sulfur_stairs}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_STAIRS = create(key("sulfur_stairs"));
/**
* {@code minecraft:sulfur_wall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<ItemType> SULFUR_WALL = create(key("sulfur_wall"));
/**
* {@code minecraft:sunflower}
*
@@ -53,6 +53,13 @@ public final class JukeboxSongKeys {
*/
public static final TypedKey<JukeboxSong> BLOCKS = create(key("blocks"));
/**
* {@code minecraft:bounce}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<JukeboxSong> BOUNCE = create(key("bounce"));
/**
* {@code minecraft:cat}
*
@@ -0,0 +1,181 @@
package io.papermc.paper.registry.keys;
import static net.kyori.adventure.key.Key.key;
import io.papermc.paper.annotation.GeneratedClass;
import io.papermc.paper.entity.poi.PoiType;
import io.papermc.paper.registry.RegistryKey;
import io.papermc.paper.registry.TypedKey;
import net.kyori.adventure.key.Key;
import org.jspecify.annotations.NullMarked;
/**
* Vanilla keys for {@link RegistryKey#POINT_OF_INTEREST_TYPE}.
*
* @apiNote The fields provided here are a direct representation of
* what is available from the vanilla game source. They may be
* changed (including removals) on any Minecraft version
* bump, so cross-version compatibility is not provided on the
* same level as it is on most of the other API.
*/
@SuppressWarnings({
"unused",
"SpellCheckingInspection"
})
@NullMarked
@GeneratedClass
public final class PoiTypeKeys {
/**
* {@code minecraft:armorer}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> ARMORER = create(key("armorer"));
/**
* {@code minecraft:bee_nest}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> BEE_NEST = create(key("bee_nest"));
/**
* {@code minecraft:beehive}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> BEEHIVE = create(key("beehive"));
/**
* {@code minecraft:butcher}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> BUTCHER = create(key("butcher"));
/**
* {@code minecraft:cartographer}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> CARTOGRAPHER = create(key("cartographer"));
/**
* {@code minecraft:cleric}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> CLERIC = create(key("cleric"));
/**
* {@code minecraft:farmer}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> FARMER = create(key("farmer"));
/**
* {@code minecraft:fisherman}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> FISHERMAN = create(key("fisherman"));
/**
* {@code minecraft:fletcher}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> FLETCHER = create(key("fletcher"));
/**
* {@code minecraft:home}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> HOME = create(key("home"));
/**
* {@code minecraft:leatherworker}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> LEATHERWORKER = create(key("leatherworker"));
/**
* {@code minecraft:librarian}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> LIBRARIAN = create(key("librarian"));
/**
* {@code minecraft:lightning_rod}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> LIGHTNING_ROD = create(key("lightning_rod"));
/**
* {@code minecraft:lodestone}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> LODESTONE = create(key("lodestone"));
/**
* {@code minecraft:mason}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> MASON = create(key("mason"));
/**
* {@code minecraft:meeting}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> MEETING = create(key("meeting"));
/**
* {@code minecraft:nether_portal}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> NETHER_PORTAL = create(key("nether_portal"));
/**
* {@code minecraft:shepherd}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> SHEPHERD = create(key("shepherd"));
/**
* {@code minecraft:test_instance}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> TEST_INSTANCE = create(key("test_instance"));
/**
* {@code minecraft:toolsmith}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> TOOLSMITH = create(key("toolsmith"));
/**
* {@code minecraft:weaponsmith}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<PoiType> WEAPONSMITH = create(key("weaponsmith"));
private PoiTypeKeys() {
}
private static TypedKey<PoiType> create(final Key key) {
return TypedKey.create(RegistryKey.POINT_OF_INTEREST_TYPE, key);
}
}
@@ -1376,6 +1376,41 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> BLOCK_CHORUS_FLOWER_GROW = create(key("block.chorus_flower.grow"));
/**
* {@code minecraft:block.cinnabar.break}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_CINNABAR_BREAK = create(key("block.cinnabar.break"));
/**
* {@code minecraft:block.cinnabar.fall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_CINNABAR_FALL = create(key("block.cinnabar.fall"));
/**
* {@code minecraft:block.cinnabar.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_CINNABAR_HIT = create(key("block.cinnabar.hit"));
/**
* {@code minecraft:block.cinnabar.place}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_CINNABAR_PLACE = create(key("block.cinnabar.place"));
/**
* {@code minecraft:block.cinnabar.step}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_CINNABAR_STEP = create(key("block.cinnabar.step"));
/**
* {@code minecraft:block.cobweb.break}
*
@@ -4029,6 +4064,76 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> BLOCK_PORTAL_TRIGGER = create(key("block.portal.trigger"));
/**
* {@code minecraft:block.potent_sulfur.break}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_BREAK = create(key("block.potent_sulfur.break"));
/**
* {@code minecraft:block.potent_sulfur.fall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_FALL = create(key("block.potent_sulfur.fall"));
/**
* {@code minecraft:block.potent_sulfur.geyser_continuous_eruption}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_GEYSER_CONTINUOUS_ERUPTION = create(key("block.potent_sulfur.geyser_continuous_eruption"));
/**
* {@code minecraft:block.potent_sulfur.geyser_continuous_eruption_active}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_GEYSER_CONTINUOUS_ERUPTION_ACTIVE = create(key("block.potent_sulfur.geyser_continuous_eruption_active"));
/**
* {@code minecraft:block.potent_sulfur.geyser_eruption}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_GEYSER_ERUPTION = create(key("block.potent_sulfur.geyser_eruption"));
/**
* {@code minecraft:block.potent_sulfur.geyser_eruption_active}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_GEYSER_ERUPTION_ACTIVE = create(key("block.potent_sulfur.geyser_eruption_active"));
/**
* {@code minecraft:block.potent_sulfur.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_HIT = create(key("block.potent_sulfur.hit"));
/**
* {@code minecraft:block.potent_sulfur.noxious_gas}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_NOXIOUS_GAS = create(key("block.potent_sulfur.noxious_gas"));
/**
* {@code minecraft:block.potent_sulfur.place}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_PLACE = create(key("block.potent_sulfur.place"));
/**
* {@code minecraft:block.potent_sulfur.step}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_POTENT_SULFUR_STEP = create(key("block.potent_sulfur.step"));
/**
* {@code minecraft:block.powder_snow.break}
*
@@ -5100,6 +5205,83 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> BLOCK_STONE_PRESSURE_PLATE_CLICK_ON = create(key("block.stone_pressure_plate.click_on"));
/**
* {@code minecraft:block.sulfur.break}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_BREAK = create(key("block.sulfur.break"));
/**
* {@code minecraft:block.sulfur.fall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_FALL = create(key("block.sulfur.fall"));
/**
* {@code minecraft:block.sulfur.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_HIT = create(key("block.sulfur.hit"));
/**
* {@code minecraft:block.sulfur.place}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_PLACE = create(key("block.sulfur.place"));
/**
* {@code minecraft:block.sulfur.step}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_STEP = create(key("block.sulfur.step"));
/**
* {@code minecraft:block.sulfur_spike.break}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_SPIKE_BREAK = create(key("block.sulfur_spike.break"));
/**
* {@code minecraft:block.sulfur_spike.fall}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_SPIKE_FALL = create(key("block.sulfur_spike.fall"));
/**
* {@code minecraft:block.sulfur_spike.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_SPIKE_HIT = create(key("block.sulfur_spike.hit"));
/**
* {@code minecraft:block.sulfur_spike.land}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_SPIKE_LAND = create(key("block.sulfur_spike.land"));
/**
* {@code minecraft:block.sulfur_spike.place}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_SPIKE_PLACE = create(key("block.sulfur_spike.place"));
/**
* {@code minecraft:block.sulfur_spike.step}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> BLOCK_SULFUR_SPIKE_STEP = create(key("block.sulfur_spike.step"));
/**
* {@code minecraft:block.suspicious_gravel.break}
*
@@ -10462,6 +10644,41 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> ENTITY_SLIME_SQUISH_SMALL = create(key("entity.slime.squish_small"));
/**
* {@code minecraft:entity.small_sulfur_cube.death}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SMALL_SULFUR_CUBE_DEATH = create(key("entity.small_sulfur_cube.death"));
/**
* {@code minecraft:entity.small_sulfur_cube.eat}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SMALL_SULFUR_CUBE_EAT = create(key("entity.small_sulfur_cube.eat"));
/**
* {@code minecraft:entity.small_sulfur_cube.hurt}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SMALL_SULFUR_CUBE_HURT = create(key("entity.small_sulfur_cube.hurt"));
/**
* {@code minecraft:entity.small_sulfur_cube.jump}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SMALL_SULFUR_CUBE_JUMP = create(key("entity.small_sulfur_cube.jump"));
/**
* {@code minecraft:entity.small_sulfur_cube.squish}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SMALL_SULFUR_CUBE_SQUISH = create(key("entity.small_sulfur_cube.squish"));
/**
* {@code minecraft:entity.sniffer.death}
*
@@ -10749,6 +10966,223 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> ENTITY_STRIDER_STEP_LAVA = create(key("entity.strider.step_lava"));
/**
* {@code minecraft:entity.sulfur_cube.absorb}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_ABSORB = create(key("entity.sulfur_cube.absorb"));
/**
* {@code minecraft:entity.sulfur_cube.bounce}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_BOUNCE = create(key("entity.sulfur_cube.bounce"));
/**
* {@code minecraft:entity.sulfur_cube.bouncy.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_BOUNCY_HIT = create(key("entity.sulfur_cube.bouncy.hit"));
/**
* {@code minecraft:entity.sulfur_cube.bouncy.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_BOUNCY_PUSH = create(key("entity.sulfur_cube.bouncy.push"));
/**
* {@code minecraft:entity.sulfur_cube.death}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_DEATH = create(key("entity.sulfur_cube.death"));
/**
* {@code minecraft:entity.sulfur_cube.eject}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_EJECT = create(key("entity.sulfur_cube.eject"));
/**
* {@code minecraft:entity.sulfur_cube.explosive.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_EXPLOSIVE_HIT = create(key("entity.sulfur_cube.explosive.hit"));
/**
* {@code minecraft:entity.sulfur_cube.explosive.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_EXPLOSIVE_PUSH = create(key("entity.sulfur_cube.explosive.push"));
/**
* {@code minecraft:entity.sulfur_cube.fast_flat.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_FAST_FLAT_HIT = create(key("entity.sulfur_cube.fast_flat.hit"));
/**
* {@code minecraft:entity.sulfur_cube.fast_flat.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_FAST_FLAT_PUSH = create(key("entity.sulfur_cube.fast_flat.push"));
/**
* {@code minecraft:entity.sulfur_cube.fast_sliding.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_FAST_SLIDING_HIT = create(key("entity.sulfur_cube.fast_sliding.hit"));
/**
* {@code minecraft:entity.sulfur_cube.fast_sliding.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_FAST_SLIDING_PUSH = create(key("entity.sulfur_cube.fast_sliding.push"));
/**
* {@code minecraft:entity.sulfur_cube.high_resistance.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_HIGH_RESISTANCE_HIT = create(key("entity.sulfur_cube.high_resistance.hit"));
/**
* {@code minecraft:entity.sulfur_cube.high_resistance.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_HIGH_RESISTANCE_PUSH = create(key("entity.sulfur_cube.high_resistance.push"));
/**
* {@code minecraft:entity.sulfur_cube.hot.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_HOT_HIT = create(key("entity.sulfur_cube.hot.hit"));
/**
* {@code minecraft:entity.sulfur_cube.hot.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_HOT_PUSH = create(key("entity.sulfur_cube.hot.push"));
/**
* {@code minecraft:entity.sulfur_cube.hurt}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_HURT = create(key("entity.sulfur_cube.hurt"));
/**
* {@code minecraft:entity.sulfur_cube.jump}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_JUMP = create(key("entity.sulfur_cube.jump"));
/**
* {@code minecraft:entity.sulfur_cube.light.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_LIGHT_HIT = create(key("entity.sulfur_cube.light.hit"));
/**
* {@code minecraft:entity.sulfur_cube.light.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_LIGHT_PUSH = create(key("entity.sulfur_cube.light.push"));
/**
* {@code minecraft:entity.sulfur_cube.regular.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_REGULAR_HIT = create(key("entity.sulfur_cube.regular.hit"));
/**
* {@code minecraft:entity.sulfur_cube.regular.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_REGULAR_PUSH = create(key("entity.sulfur_cube.regular.push"));
/**
* {@code minecraft:entity.sulfur_cube.slow_bouncy.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SLOW_BOUNCY_HIT = create(key("entity.sulfur_cube.slow_bouncy.hit"));
/**
* {@code minecraft:entity.sulfur_cube.slow_bouncy.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SLOW_BOUNCY_PUSH = create(key("entity.sulfur_cube.slow_bouncy.push"));
/**
* {@code minecraft:entity.sulfur_cube.slow_flat.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SLOW_FLAT_HIT = create(key("entity.sulfur_cube.slow_flat.hit"));
/**
* {@code minecraft:entity.sulfur_cube.slow_flat.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SLOW_FLAT_PUSH = create(key("entity.sulfur_cube.slow_flat.push"));
/**
* {@code minecraft:entity.sulfur_cube.slow_sliding.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SLOW_SLIDING_HIT = create(key("entity.sulfur_cube.slow_sliding.hit"));
/**
* {@code minecraft:entity.sulfur_cube.slow_sliding.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SLOW_SLIDING_PUSH = create(key("entity.sulfur_cube.slow_sliding.push"));
/**
* {@code minecraft:entity.sulfur_cube.squish}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_SQUISH = create(key("entity.sulfur_cube.squish"));
/**
* {@code minecraft:entity.sulfur_cube.sticky.hit}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_STICKY_HIT = create(key("entity.sulfur_cube.sticky.hit"));
/**
* {@code minecraft:entity.sulfur_cube.sticky.push}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ENTITY_SULFUR_CUBE_STICKY_PUSH = create(key("entity.sulfur_cube.sticky.push"));
/**
* {@code minecraft:entity.tadpole.death}
*
@@ -12303,6 +12737,13 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> ITEM_BUCKET_EMPTY_POWDER_SNOW = create(key("item.bucket.empty_powder_snow"));
/**
* {@code minecraft:item.bucket.empty_sulfur_cube}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ITEM_BUCKET_EMPTY_SULFUR_CUBE = create(key("item.bucket.empty_sulfur_cube"));
/**
* {@code minecraft:item.bucket.empty_tadpole}
*
@@ -12345,6 +12786,13 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> ITEM_BUCKET_FILL_POWDER_SNOW = create(key("item.bucket.fill_powder_snow"));
/**
* {@code minecraft:item.bucket.fill_sulfur_cube}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> ITEM_BUCKET_FILL_SULFUR_CUBE = create(key("item.bucket.fill_sulfur_cube"));
/**
* {@code minecraft:item.bucket.fill_tadpole}
*
@@ -13080,6 +13528,13 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> MUSIC_OVERWORLD_STONY_PEAKS = create(key("music.overworld.stony_peaks"));
/**
* {@code minecraft:music.overworld.sulfur_caves}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> MUSIC_OVERWORLD_SULFUR_CAVES = create(key("music.overworld.sulfur_caves"));
/**
* {@code minecraft:music.overworld.swamp}
*
@@ -13122,6 +13577,13 @@ public final class SoundEventKeys {
*/
public static final TypedKey<Sound> MUSIC_DISC_BLOCKS = create(key("music_disc.blocks"));
/**
* {@code minecraft:music_disc.bounce}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Sound> MUSIC_DISC_BOUNCE = create(key("music_disc.bounce"));
/**
* {@code minecraft:music_disc.cat}
*
@@ -0,0 +1,124 @@
package io.papermc.paper.registry.keys;
import static net.kyori.adventure.key.Key.key;
import io.papermc.paper.annotation.GeneratedClass;
import io.papermc.paper.registry.RegistryKey;
import io.papermc.paper.registry.TypedKey;
import net.kyori.adventure.key.Key;
import org.bukkit.entity.SulfurCube;
import org.jspecify.annotations.NullMarked;
/**
* Vanilla keys for {@link RegistryKey#SULFUR_CUBE_ARCHETYPE}.
*
* @apiNote The fields provided here are a direct representation of
* what is available from the vanilla game source. They may be
* changed (including removals) on any Minecraft version
* bump, so cross-version compatibility is not provided on the
* same level as it is on most of the other API.
*/
@SuppressWarnings({
"unused",
"SpellCheckingInspection"
})
@NullMarked
@GeneratedClass
public final class SulfurCubeArchetypeKeys {
/**
* {@code minecraft:bouncy}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> BOUNCY = create(key("bouncy"));
/**
* {@code minecraft:explosive}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> EXPLOSIVE = create(key("explosive"));
/**
* {@code minecraft:fast_flat}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> FAST_FLAT = create(key("fast_flat"));
/**
* {@code minecraft:fast_sliding}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> FAST_SLIDING = create(key("fast_sliding"));
/**
* {@code minecraft:high_resistance}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> HIGH_RESISTANCE = create(key("high_resistance"));
/**
* {@code minecraft:hot}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> HOT = create(key("hot"));
/**
* {@code minecraft:light}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> LIGHT = create(key("light"));
/**
* {@code minecraft:regular}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> REGULAR = create(key("regular"));
/**
* {@code minecraft:slow_bouncy}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> SLOW_BOUNCY = create(key("slow_bouncy"));
/**
* {@code minecraft:slow_flat}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> SLOW_FLAT = create(key("slow_flat"));
/**
* {@code minecraft:slow_sliding}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> SLOW_SLIDING = create(key("slow_sliding"));
/**
* {@code minecraft:sticky}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<SulfurCube.Archetype> STICKY = create(key("sticky"));
private SulfurCubeArchetypeKeys() {
}
/**
* Creates a typed key for {@link SulfurCube.Archetype} in the registry {@code minecraft:sulfur_cube_archetype}.
*
* @param key the value's key in the registry
* @return a new typed key
*/
public static TypedKey<SulfurCube.Archetype> create(final Key key) {
return TypedKey.create(RegistryKey.SULFUR_CUBE_ARCHETYPE, key);
}
}
@@ -1,68 +0,0 @@
package io.papermc.paper.registry.keys;
import static net.kyori.adventure.key.Key.key;
import io.papermc.paper.annotation.GeneratedClass;
import io.papermc.paper.registry.RegistryKey;
import io.papermc.paper.registry.TypedKey;
import io.papermc.paper.world.Timeline;
import net.kyori.adventure.key.Key;
import org.jspecify.annotations.NullMarked;
/**
* Vanilla keys for {@link RegistryKey#TIMELINE}.
*
* @apiNote The fields provided here are a direct representation of
* what is available from the vanilla game source. They may be
* changed (including removals) on any Minecraft version
* bump, so cross-version compatibility is not provided on the
* same level as it is on most of the other API.
*/
@SuppressWarnings({
"unused",
"SpellCheckingInspection"
})
@NullMarked
@GeneratedClass
public final class TimelineKeys {
/**
* {@code minecraft:day}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Timeline> DAY = create(key("day"));
/**
* {@code minecraft:early_game}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Timeline> EARLY_GAME = create(key("early_game"));
/**
* {@code minecraft:moon}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Timeline> MOON = create(key("moon"));
/**
* {@code minecraft:villager_schedule}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<Timeline> VILLAGER_SCHEDULE = create(key("villager_schedule"));
private TimelineKeys() {
}
/**
* Creates a typed key for {@link Timeline} in the registry {@code minecraft:timeline}.
*
* @param key the value's key in the registry
* @return a new typed key
*/
public static TypedKey<Timeline> create(final Key key) {
return TypedKey.create(RegistryKey.TIMELINE, key);
}
}
@@ -1,54 +0,0 @@
package io.papermc.paper.registry.keys;
import static net.kyori.adventure.key.Key.key;
import io.papermc.paper.annotation.GeneratedClass;
import io.papermc.paper.registry.RegistryKey;
import io.papermc.paper.registry.TypedKey;
import io.papermc.paper.world.WorldClock;
import net.kyori.adventure.key.Key;
import org.jspecify.annotations.NullMarked;
/**
* Vanilla keys for {@link RegistryKey#WORLD_CLOCK}.
*
* @apiNote The fields provided here are a direct representation of
* what is available from the vanilla game source. They may be
* changed (including removals) on any Minecraft version
* bump, so cross-version compatibility is not provided on the
* same level as it is on most of the other API.
*/
@SuppressWarnings({
"unused",
"SpellCheckingInspection"
})
@NullMarked
@GeneratedClass
public final class WorldClockKeys {
/**
* {@code minecraft:overworld}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<WorldClock> OVERWORLD = create(key("overworld"));
/**
* {@code minecraft:the_end}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TypedKey<WorldClock> THE_END = create(key("the_end"));
private WorldClockKeys() {
}
/**
* Creates a typed key for {@link WorldClock} in the registry {@code minecraft:world_clock}.
*
* @param key the value's key in the registry
* @return a new typed key
*/
public static TypedKey<WorldClock> create(final Key key) {
return TypedKey.create(RegistryKey.WORLD_CLOCK, key);
}
}
@@ -298,6 +298,20 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> CAULDRONS = create(key("cauldrons"));
/**
* {@code #minecraft:causes_continuous_geyser_eruptions}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> CAUSES_CONTINUOUS_GEYSER_ERUPTIONS = create(key("causes_continuous_geyser_eruptions"));
/**
* {@code #minecraft:causes_periodic_geyser_eruptions}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> CAUSES_PERIODIC_GEYSER_ERUPTIONS = create(key("causes_periodic_geyser_eruptions"));
/**
* {@code #minecraft:cave_vines}
*
@@ -355,11 +369,18 @@ public final class BlockTypeTagKeys {
public static final TagKey<BlockType> COMPLETES_FIND_TREE_TUTORIAL = create(key("completes_find_tree_tutorial"));
/**
* {@code #minecraft:concrete_powder}
* {@code #minecraft:concrete}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> CONCRETE_POWDER = create(key("concrete_powder"));
public static final TagKey<BlockType> CONCRETE = create(key("concrete"));
/**
* {@code #minecraft:concrete_powders}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> CONCRETE_POWDERS = create(key("concrete_powders"));
/**
* {@code #minecraft:convertable_to_mud}
@@ -459,6 +480,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> DEEPSLATE_ORE_REPLACEABLES = create(key("deepslate_ore_replaceables"));
/**
* {@code #minecraft:default_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> DEFAULT_IMMUNE_TO = create(key("default_immune_to"));
/**
* {@code #minecraft:diamond_ores}
*
@@ -613,6 +641,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> FOREST_ROCK_CAN_PLACE_ON = create(key("forest_rock_can_place_on"));
/**
* {@code #minecraft:fox_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> FOX_IMMUNE_TO = create(key("fox_immune_to"));
/**
* {@code #minecraft:foxes_spawnable_on}
*
@@ -641,6 +676,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> GEODE_INVALID_BLOCKS = create(key("geode_invalid_blocks"));
/**
* {@code #minecraft:glazed_terracotta}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> GLAZED_TERRACOTTA = create(key("glazed_terracotta"));
/**
* {@code #minecraft:goats_spawnable_on}
*
@@ -1068,6 +1110,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> PLANKS = create(key("planks"));
/**
* {@code #minecraft:polar_bear_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> POLAR_BEAR_IMMUNE_TO = create(key("polar_bear_immune_to"));
/**
* {@code #minecraft:polar_bears_spawnable_on_alternate}
*
@@ -1173,6 +1222,27 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> SCULK_REPLACEABLE_WORLD_GEN = create(key("sculk_replaceable_world_gen"));
/**
* {@code #minecraft:shears_extreme_breaking_speed}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SHEARS_EXTREME_BREAKING_SPEED = create(key("shears_extreme_breaking_speed"));
/**
* {@code #minecraft:shears_major_breaking_speed}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SHEARS_MAJOR_BREAKING_SPEED = create(key("shears_major_breaking_speed"));
/**
* {@code #minecraft:shears_minor_breaking_speed}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SHEARS_MINOR_BREAKING_SPEED = create(key("shears_minor_breaking_speed"));
/**
* {@code #minecraft:shulker_boxes}
*
@@ -1236,6 +1306,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> SNOW = create(key("snow"));
/**
* {@code #minecraft:snow_golem_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SNOW_GOLEM_IMMUNE_TO = create(key("snow_golem_immune_to"));
/**
* {@code #minecraft:soul_fire_base_blocks}
*
@@ -1250,6 +1327,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> SOUL_SPEED_BLOCKS = create(key("soul_speed_blocks"));
/**
* {@code #minecraft:speleothems}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SPELEOTHEMS = create(key("speleothems"));
/**
* {@code #minecraft:spruce_logs}
*
@@ -1299,6 +1383,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> STONE_PRESSURE_PLATES = create(key("stone_pressure_plates"));
/**
* {@code #minecraft:stray_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> STRAY_IMMUNE_TO = create(key("stray_immune_to"));
/**
* {@code #minecraft:strider_warm_blocks}
*
@@ -1313,6 +1404,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> SUBSTRATE_OVERWORLD = create(key("substrate_overworld"));
/**
* {@code #minecraft:sulfur_spike_replaceable_blocks}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SULFUR_SPIKE_REPLACEABLE_BLOCKS = create(key("sulfur_spike_replaceable_blocks"));
/**
* {@code #minecraft:support_override_cactus_flower}
*
@@ -1537,6 +1635,13 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> SUPPORTS_WITHER_ROSE = create(key("supports_wither_rose"));
/**
* {@code #minecraft:suppresses_bounce}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> SUPPRESSES_BOUNCE = create(key("suppresses_bounce"));
/**
* {@code #minecraft:sword_efficient}
*
@@ -1677,6 +1782,20 @@ public final class BlockTypeTagKeys {
*/
public static final TagKey<BlockType> WITHER_IMMUNE = create(key("wither_immune"));
/**
* {@code #minecraft:wither_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> WITHER_IMMUNE_TO = create(key("wither_immune_to"));
/**
* {@code #minecraft:wither_skeleton_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<BlockType> WITHER_SKELETON_IMMUNE_TO = create(key("wither_skeleton_immune_to"));
/**
* {@code #minecraft:wither_summon_base_blocks}
*
@@ -242,6 +242,13 @@ public final class DamageTypeTagKeys {
*/
public static final TagKey<DamageType> PANIC_ENVIRONMENTAL_CAUSES = create(key("panic_environmental_causes"));
/**
* {@code #minecraft:sulfur_cube_with_block_immune_to}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<DamageType> SULFUR_CUBE_WITH_BLOCK_IMMUNE_TO = create(key("sulfur_cube_with_block_immune_to"));
/**
* {@code #minecraft:witch_resistant_to}
*
@@ -277,6 +277,13 @@ public final class EntityTypeTagKeys {
*/
public static final TagKey<EntityType> NON_CONTROLLING_RIDER = create(key("non_controlling_rider"));
/**
* {@code #minecraft:not_affected_by_geysers}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<EntityType> NOT_AFFECTED_BY_GEYSERS = create(key("not_affected_by_geysers"));
/**
* {@code #minecraft:not_scary_for_pufferfish}
*
@@ -277,6 +277,20 @@ public final class ItemTypeTagKeys {
*/
public static final TagKey<ItemType> COMPLETES_FIND_TREE_TUTORIAL = create(key("completes_find_tree_tutorial"));
/**
* {@code #minecraft:concrete}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> CONCRETE = create(key("concrete"));
/**
* {@code #minecraft:concrete_powders}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> CONCRETE_POWDERS = create(key("concrete_powders"));
/**
* {@code #minecraft:copper}
*
@@ -648,6 +662,13 @@ public final class ItemTypeTagKeys {
*/
public static final TagKey<ItemType> GAZE_DISGUISE_EQUIPMENT = create(key("gaze_disguise_equipment"));
/**
* {@code #minecraft:glazed_terracotta}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> GLAZED_TERRACOTTA = create(key("glazed_terracotta"));
/**
* {@code #minecraft:goat_food}
*
@@ -1292,6 +1313,104 @@ public final class ItemTypeTagKeys {
*/
public static final TagKey<ItemType> STRIDER_TEMPT_ITEMS = create(key("strider_tempt_items"));
/**
* {@code #minecraft:sulfur_cube_archetype/bouncy}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_BOUNCY = create(key("sulfur_cube_archetype/bouncy"));
/**
* {@code #minecraft:sulfur_cube_archetype/explosive}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_EXPLOSIVE = create(key("sulfur_cube_archetype/explosive"));
/**
* {@code #minecraft:sulfur_cube_archetype/fast_flat}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_FAST_FLAT = create(key("sulfur_cube_archetype/fast_flat"));
/**
* {@code #minecraft:sulfur_cube_archetype/fast_sliding}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_FAST_SLIDING = create(key("sulfur_cube_archetype/fast_sliding"));
/**
* {@code #minecraft:sulfur_cube_archetype/high_resistance}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_HIGH_RESISTANCE = create(key("sulfur_cube_archetype/high_resistance"));
/**
* {@code #minecraft:sulfur_cube_archetype/hot}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_HOT = create(key("sulfur_cube_archetype/hot"));
/**
* {@code #minecraft:sulfur_cube_archetype/light}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_LIGHT = create(key("sulfur_cube_archetype/light"));
/**
* {@code #minecraft:sulfur_cube_archetype/regular}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_REGULAR = create(key("sulfur_cube_archetype/regular"));
/**
* {@code #minecraft:sulfur_cube_archetype/slow_bouncy}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_SLOW_BOUNCY = create(key("sulfur_cube_archetype/slow_bouncy"));
/**
* {@code #minecraft:sulfur_cube_archetype/slow_flat}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_SLOW_FLAT = create(key("sulfur_cube_archetype/slow_flat"));
/**
* {@code #minecraft:sulfur_cube_archetype/slow_sliding}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_SLOW_SLIDING = create(key("sulfur_cube_archetype/slow_sliding"));
/**
* {@code #minecraft:sulfur_cube_archetype/sticky}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_ARCHETYPE_STICKY = create(key("sulfur_cube_archetype/sticky"));
/**
* {@code #minecraft:sulfur_cube_food}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_FOOD = create(key("sulfur_cube_food"));
/**
* {@code #minecraft:sulfur_cube_swallowable}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<ItemType> SULFUR_CUBE_SWALLOWABLE = create(key("sulfur_cube_swallowable"));
/**
* {@code #minecraft:swords}
*
@@ -3,14 +3,14 @@ package io.papermc.paper.registry.keys.tags;
import static net.kyori.adventure.key.Key.key;
import io.papermc.paper.annotation.GeneratedClass;
import io.papermc.paper.entity.poi.PoiType;
import io.papermc.paper.registry.RegistryKey;
import io.papermc.paper.registry.tag.TagKey;
import io.papermc.paper.world.Timeline;
import net.kyori.adventure.key.Key;
import org.jspecify.annotations.NullMarked;
/**
* Vanilla tag keys for {@link RegistryKey#TIMELINE}.
* Vanilla tag keys for {@link RegistryKey#POINT_OF_INTEREST_TYPE}.
*
* @apiNote The fields provided here are a direct representation of
* what is available from the vanilla game source. They may be
@@ -24,45 +24,38 @@ import org.jspecify.annotations.NullMarked;
})
@NullMarked
@GeneratedClass
public final class TimelineTagKeys {
public final class PoiTypeTagKeys {
/**
* {@code #minecraft:in_end}
* {@code #minecraft:acquirable_job_site}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<Timeline> IN_END = create(key("in_end"));
public static final TagKey<PoiType> ACQUIRABLE_JOB_SITE = create(key("acquirable_job_site"));
/**
* {@code #minecraft:in_nether}
* {@code #minecraft:bee_home}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<Timeline> IN_NETHER = create(key("in_nether"));
public static final TagKey<PoiType> BEE_HOME = create(key("bee_home"));
/**
* {@code #minecraft:in_overworld}
* {@code #minecraft:village}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<Timeline> IN_OVERWORLD = create(key("in_overworld"));
public static final TagKey<PoiType> VILLAGE = create(key("village"));
/**
* {@code #minecraft:universal}
*
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
*/
public static final TagKey<Timeline> UNIVERSAL = create(key("universal"));
private TimelineTagKeys() {
private PoiTypeTagKeys() {
}
/**
* Creates a tag key for {@link Timeline} in the registry {@code minecraft:timeline}.
* Creates a tag key for {@link PoiType} in the registry {@code minecraft:point_of_interest_type}.
*
* @param key the tag key's key
* @return a new tag key
*/
public static TagKey<Timeline> create(final Key key) {
return TagKey.create(RegistryKey.TIMELINE, key);
public static TagKey<PoiType> create(final Key key) {
return TagKey.create(RegistryKey.POINT_OF_INTEREST_TYPE, key);
}
}
@@ -80,7 +80,7 @@ public class TimedEventExecutor implements EventExecutor {
executor.execute(listener, event);
return;
}
try (Timing ignored = timings.startTiming()){
try (Timing ignored = timings.startTiming()) {
executor.execute(listener, event);
}
}
@@ -134,7 +134,7 @@ public class TimingHistory {
}
}
return pair(
worldMap.get(world.getKey().toString()),
worldMap.get(world.key().asString()),
toArrayMapper(regions.values(),new Function<RegionData, Object>() {
@NotNull
@Override
@@ -2,6 +2,10 @@ package co.aikar.timings;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import net.kyori.adventure.audience.ForwardingAudience;
import net.kyori.adventure.chat.ChatType;
import net.kyori.adventure.chat.SignedMessage;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
@@ -61,8 +65,18 @@ public class TimingsReportListener implements net.kyori.adventure.audience.Forwa
}
@Override
public void sendMessage(final @NotNull net.kyori.adventure.identity.Identity source, final @NotNull net.kyori.adventure.text.Component message, final @NotNull net.kyori.adventure.audience.MessageType type) {
net.kyori.adventure.audience.ForwardingAudience.super.sendMessage(source, message, type);
public void sendMessage(final @NotNull Component message) {
ForwardingAudience.super.sendMessage(message);
}
@Override
public void sendMessage(final @NotNull Component message, final ChatType.@NotNull Bound boundChatType) {
ForwardingAudience.super.sendMessage(message, boundChatType);
}
@Override
public void sendMessage(final @NotNull SignedMessage signedMessage, final ChatType.@NotNull Bound boundChatType) {
ForwardingAudience.super.sendMessage(signedMessage, boundChatType);
}
@NotNull
@@ -178,7 +178,7 @@ public class LoadingMap <K, V> extends AbstractMap<K, V> {
* @param loadFactor Load factor to use
* @param <K> Key Type of the Map
* @param <V> Value Type of the Map
* @return Map that auto instantiates on .get()
* @return Map that auto instantiates on .get()
*/
@NotNull
public static <K, V> Map<K, V> newHashAutoMap(@NotNull final Class<? extends V> valueClass, int initialCapacity, float loadFactor) {
@@ -71,7 +71,7 @@ public class MaterialTags {
*/
public static final MaterialSetTag BUCKETS = new MaterialSetTag(keyFor("buckets"))
.endsWith("BUCKET")
.ensureSize("BUCKETS", 11).lock();
.ensureSize("BUCKETS", 12).lock();
/**
* Covers coal and charcoal.
@@ -96,18 +96,19 @@ public class MaterialTags {
/**
* Covers all colors of concrete.
*
* @deprecated in favour of {@link Tag#CONCRETE}
*/
public static final MaterialSetTag CONCRETES = new MaterialSetTag(keyFor("concretes"))
.endsWith("_CONCRETE")
.ensureSize("CONCRETES", 16).lock();
@Deprecated(since = "26.2")
public static final MaterialSetTag CONCRETES = replacedBy(Tag.CONCRETE, "concretes");
/**
* Covers all colors of concrete powder.
*
* @deprecated in favour of {@link Tag#CONCRETE_POWDER}
* @deprecated in favour of {@link Tag#CONCRETE_POWDERS}
*/
@Deprecated(since = "1.21.8")
public static final MaterialSetTag CONCRETE_POWDER = replacedBy(Tag.CONCRETE_POWDER);
public static final MaterialSetTag CONCRETE_POWDER = replacedBy(Tag.CONCRETE_POWDERS);
/**
* Covers the two types of cooked fish.
@@ -125,10 +126,11 @@ public class MaterialTags {
/**
* Covers all dyes.
*
* @deprecated in favour of {@link Tag#ITEMS_DYES}
*/
public static final MaterialSetTag DYES = new MaterialSetTag(keyFor("dyes"))
.endsWith("_DYE")
.ensureSize("DYES", 16).lock();
@Deprecated(since = "26.1")
public static final MaterialSetTag DYES = replacedBy(Tag.ITEMS_DYES);
/**
* Covers all variants of gates.
@@ -169,10 +171,11 @@ public class MaterialTags {
/**
* Covers all glazed terracotta blocks.
*
* @deprecated in favour of {@link Tag#GLAZED_TERRACOTTA}
*/
public static final MaterialSetTag GLAZED_TERRACOTTA = new MaterialSetTag(keyFor("glazed_terracotta"))
.endsWith("GLAZED_TERRACOTTA")
.ensureSize("GLAZED_TERRACOTTA", 16).lock();
@Deprecated(since = "26.2")
public static final MaterialSetTag GLAZED_TERRACOTTA = replacedBy(Tag.GLAZED_TERRACOTTA);
/**
* Covers the colors of stained terracotta.
@@ -340,7 +343,7 @@ public class MaterialTags {
*/
public static final MaterialSetTag SPAWN_EGGS = new MaterialSetTag(keyFor("spawn_eggs"))
.endsWith("_SPAWN_EGG")
.ensureSize("SPAWN_EGGS", 87).lock();
.ensureSize("SPAWN_EGGS", 88).lock();
/**
* Covers all colors of stained glass.
@@ -588,8 +591,8 @@ public class MaterialTags {
*/
@SuppressWarnings("unchecked")
public static final MaterialSetTag COLORABLE = new MaterialSetTag(keyFor("colorable"))
.add(Tag.WOOL, Tag.WOOL_CARPETS, Tag.SHULKER_BOXES, Tag.BEDS)
.add(STAINED_GLASS, STAINED_GLASS_PANES, CONCRETES)
.add(Tag.WOOL, Tag.WOOL_CARPETS, Tag.SHULKER_BOXES, Tag.BEDS, Tag.CONCRETE)
.add(STAINED_GLASS, STAINED_GLASS_PANES)
.lock();
/**
@@ -75,7 +75,7 @@ public final class NamespacedTag implements com.destroystokyo.paper.Namespaced {
Preconditions.checkArgument(key != null, "Key cannot be null");
this.namespace = plugin.getName().toLowerCase(Locale.ROOT);
this.key = key.toLowerCase().toLowerCase(Locale.ROOT);
this.key = key.toLowerCase(Locale.ROOT);
// Check validity after normalization
Preconditions.checkArgument(VALID_NAMESPACE.matcher(this.namespace).matches(), "Invalid namespace. Must be [a-z0-9._-]: %s", this.namespace);
@@ -5,6 +5,7 @@ import org.bukkit.Location;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Mob;
import org.checkerframework.checker.index.qual.NonNegative;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
@@ -43,7 +44,20 @@ public interface Pathfinder {
* @param loc Location to navigate to
* @return The closest Location the Entity can get to for this navigation, or null if no path could be calculated
*/
@Nullable PathResult findPath(Location loc);
default @Nullable PathResult findPath(Location loc) {
return this.findPath(loc, 0);
}
/**
* Calculates a destination for the Entity to navigate to, but does not set it
* as the current target. Useful for calculating what would happen before setting it.
*
* @param loc Location to navigate to
* @param reachRange The <a href="https://cp-algorithms.com/geometry/manhattan-distance.html">Manhattan-distance</a> threshold
* from the target position at which the path is considered reached, where {@code 0} requires the exact target position
* @return The closest Location the Entity can get to for this navigation, or null if no path could be calculated
*/
@Nullable PathResult findPath(final Location loc, final @NonNegative int reachRange);
/**
* Calculates a destination for the Entity to navigate to reach the target entity,
@@ -76,7 +90,26 @@ public interface Pathfinder {
* @param target the Entity to navigate to
* @return The closest Location the Entity can get to for this navigation, or null if no path could be calculated
*/
@Nullable PathResult findPath(Entity target);
default @Nullable PathResult findPath(Entity target) {
return this.findPath(target, 0);
}
/**
* Calculates a destination for the Entity to navigate to to reach the target entity,
* but does not set it as the current target.
* Useful for calculating what would happen before setting it.
* <p>
* The behavior of this PathResult is subject to the games pathfinding rules, and may
* result in the pathfinding automatically updating to follow the target Entity.
* <p>
* However, this behavior is not guaranteed, and is subject to the games behavior.
*
* @param target the Entity to navigate to
* @param reachRange The <a href="https://cp-algorithms.com/geometry/manhattan-distance.html">Manhattan-distance</a> threshold
* from the target position at which the path is considered reached, where {@code 0} requires the exact target position
* @return The closest Location the Entity can get to for this navigation, or null if no path could be calculated
*/
@Nullable PathResult findPath(final Entity target, final @NonNegative int reachRange);
/**
* Calculates a destination for the Entity to navigate to, and sets it with default speed
@@ -6,96 +6,55 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.inventory.InventoryEvent;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.InventoryView;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Called when an anvil is damaged from being used
*/
@NullMarked
public class AnvilDamagedEvent extends InventoryEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private DamageState damageState;
private boolean cancelled;
@ApiStatus.Internal
public AnvilDamagedEvent(final InventoryView inventory, final @Nullable BlockData blockData) {
super(inventory);
this.damageState = DamageState.getState(blockData);
}
public interface AnvilDamagedEvent extends InventoryEvent, Cancellable {
@Override
public AnvilInventory getInventory() {
return (AnvilInventory) super.getInventory();
}
AnvilInventory getInventory();
/**
* Gets the new state of damage on the anvil
*
* @return Damage state
*/
public DamageState getDamageState() {
return this.damageState;
}
DamageState getDamageState();
/**
* Sets the new state of damage on the anvil
*
* @param damageState Damage state
*/
public void setDamageState(final DamageState damageState) {
this.damageState = damageState;
}
void setDamageState(DamageState damageState);
/**
* Gets if anvil is breaking on this use
*
* @return {@code true} if breaking
*/
public boolean isBreaking() {
return this.damageState == DamageState.BROKEN;
}
boolean isBreaking();
/**
* Sets if anvil is breaking on this use
*
* @param breaking {@code true} if breaking
*/
public void setBreaking(final boolean breaking) {
if (breaking) {
this.damageState = DamageState.BROKEN;
} else if (this.damageState == DamageState.BROKEN) {
this.damageState = DamageState.DAMAGED;
void setBreaking(boolean breaking);
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
return Holder.HANDLER_LIST;
}
/**
* Represents the amount of damage on an anvil block
*/
public enum DamageState {
enum DamageState {
FULL(Material.ANVIL),
CHIPPED(Material.CHIPPED_ANVIL),
DAMAGED(Material.DAMAGED_ANVIL),
@@ -1,88 +1,50 @@
package com.destroystokyo.paper.event.block;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockEvent;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.potion.PotionEffect;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when a beacon effect is being applied to a player.
*/
@NullMarked
public class BeaconEffectEvent extends BlockEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Player player;
private final boolean primary;
private PotionEffect effect;
private boolean cancelled;
@ApiStatus.Internal
public BeaconEffectEvent(final Block beacon, final PotionEffect effect, final Player player, final boolean primary) {
super(beacon);
this.effect = effect;
this.player = player;
this.primary = primary;
}
public interface BeaconEffectEvent extends BlockEvent, PlayerEvent, Cancellable {
/**
* Gets the potion effect being applied.
*
* @return Potion effect
*/
public PotionEffect getEffect() {
return this.effect;
}
PotionEffect getEffect();
/**
* Sets the potion effect that will be applied.
*
* @param effect Potion effect
*/
public void setEffect(final PotionEffect effect) {
this.effect = effect;
}
void setEffect(PotionEffect effect);
/**
* Gets the player who the potion effect is being applied to.
*
* @return Affected player
*/
public Player getPlayer() {
return this.player;
}
@Override
Player getPlayer();
/**
* Gets whether the effect is a primary beacon effect.
*
* @return {@code true} if this event represents a primary effect
*/
public boolean isPrimary() {
return this.primary;
}
boolean isPrimary();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,12 +1,9 @@
package com.destroystokyo.paper.event.block;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockExpEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired anytime the server intends to 'destroy' a block through some triggering reason.
@@ -18,103 +15,65 @@ import org.jspecify.annotations.NullMarked;
* <p>
* Events such as leaves decaying, pistons retracting (where the block is moving), does NOT fire this event.
*/
@NullMarked
public class BlockDestroyEvent extends BlockExpEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final BlockData newState;
private boolean willDrop;
private boolean playEffect = true;
private BlockData effectBlock;
private boolean cancelled;
@ApiStatus.Internal
public BlockDestroyEvent(final Block block, final BlockData newState, final BlockData effectBlock, final int xp, final boolean willDrop) {
super(block, xp);
this.newState = newState;
this.effectBlock = effectBlock;
this.willDrop = willDrop;
}
public interface BlockDestroyEvent extends BlockExpEvent, Cancellable {
/**
* Gets the effect that will be played when the block is broken.
*
* @return block break effect
*/
public BlockData getEffectBlock() {
return this.effectBlock;
}
BlockData getEffectBlock();
/**
* Sets the effect that will be played when the block is broken.
* Note: {@link BlockDestroyEvent#playEffect()} must be {@code true} in order for this effect to be
* Note: {@link #playEffect()} must be {@code true} in order for this effect to be
* played.
*
* @param effectBlock block effect
*/
public void setEffectBlock(final BlockData effectBlock) {
this.effectBlock = effectBlock.clone();
}
void setEffectBlock(BlockData effectBlock);
/**
* @return The new state of this block (Air, or a Fluid type)
*/
public BlockData getNewState() {
return this.newState.clone();
}
BlockData getNewState();
/**
* @return If the server is going to drop the block in question with this destroy event
*/
public boolean willDrop() {
return this.willDrop;
}
boolean willDrop();
/**
* @param willDrop If the server is going to drop the block in question with this destroy event
*/
public void setWillDrop(final boolean willDrop) {
this.willDrop = willDrop;
}
void setWillDrop(boolean willDrop);
/**
* @return If the server is going to play the sound effect for this destruction
*/
public boolean playEffect() {
return this.playEffect;
}
boolean playEffect();
/**
* @param playEffect If the server should play the sound effect for this destruction
*/
public void setPlayEffect(final boolean playEffect) {
this.playEffect = playEffect;
}
void setPlayEffect(boolean playEffect);
/**
* @return If the event is cancelled, meaning the block will not be destroyed
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* If the event is cancelled, the block will remain in its previous state.
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,7 +1,6 @@
package com.destroystokyo.paper.event.block;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
@@ -9,9 +8,7 @@ import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.block.BlockEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.Nullable;
/**
* Called when TNT block is about to turn into {@link TNTPrimed}
@@ -23,31 +20,14 @@ import org.jetbrains.annotations.Nullable;
* @deprecated use {@link org.bukkit.event.block.TNTPrimeEvent}
*/
@Deprecated(forRemoval = true, since = "1.19.4")
public class TNTPrimeEvent extends BlockEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
@NotNull private final PrimeReason reason;
@Nullable private final Entity primerEntity;
private boolean cancelled;
@ApiStatus.Internal
public TNTPrimeEvent(@NotNull Block block, @NotNull PrimeReason reason, @Nullable Entity primerEntity) {
super(block);
this.reason = reason;
this.primerEntity = primerEntity;
}
public interface TNTPrimeEvent extends BlockEvent, Cancellable {
/**
* Gets the TNT prime reason
*
* @return Prime reason
*/
@NotNull
public PrimeReason getReason() {
return this.reason;
}
PrimeReason getReason();
/**
* Gets the TNT primer {@link Entity}.
@@ -58,10 +38,7 @@ public class TNTPrimeEvent extends BlockEvent implements Cancellable {
*
* @return The {@link Entity} who primed the TNT
*/
@Nullable
public Entity getPrimerEntity() {
return this.primerEntity;
}
@Nullable Entity getPrimerEntity();
/**
* Gets whether spawning {@link TNTPrimed} should be cancelled or not
@@ -69,9 +46,7 @@ public class TNTPrimeEvent extends BlockEvent implements Cancellable {
* @return Whether spawning {@link TNTPrimed} should be cancelled or not
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* Sets whether to cancel spawning {@link TNTPrimed} or not
@@ -79,22 +54,16 @@ public class TNTPrimeEvent extends BlockEvent implements Cancellable {
* @param cancel whether spawning {@link TNTPrimed} should be cancelled or not
*/
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
void setCancelled(boolean cancel);
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
@NotNull
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
@NotNull
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
public enum PrimeReason {
enum PrimeReason {
/**
* When TNT prime was caused by other explosion (chain reaction)
*/
@@ -0,0 +1,4 @@
@NullMarked
package com.destroystokyo.paper.event.block;
import org.jspecify.annotations.NullMarked;
@@ -2,12 +2,9 @@ package com.destroystokyo.paper.event.brigadier;
import com.mojang.brigadier.tree.RootCommandNode;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired any time a Brigadier RootCommandNode is generated for a player to inform the client of commands.
@@ -30,45 +27,26 @@ import org.jspecify.annotations.NullMarked;
* <p>This is a draft/experimental API and is subject to change.</p>
*/
@ApiStatus.Experimental
@NullMarked
public class AsyncPlayerSendCommandsEvent<S extends CommandSourceStack> extends PlayerEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final RootCommandNode<S> node;
private final boolean hasFiredAsync;
@ApiStatus.Internal
public AsyncPlayerSendCommandsEvent(final Player player, final RootCommandNode<S> node, final boolean hasFiredAsync) {
super(player, !Bukkit.isPrimaryThread());
this.node = node;
this.hasFiredAsync = hasFiredAsync;
}
public interface AsyncPlayerSendCommandsEvent<S extends CommandSourceStack> extends PlayerEvent {
/**
* Gets the full Root Command Node being sent to the client, which is mutable.
*
* @return the root command node
*/
public RootCommandNode<S> getCommandNode() {
return this.node;
}
RootCommandNode<S> getCommandNode();
/**
* Gets if this event has already fired asynchronously.
*
* @return whether this event has already fired asynchronously
*/
public boolean hasFiredAsync() {
return this.hasFiredAsync;
}
boolean hasFiredAsync();
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,67 +1,37 @@
package com.destroystokyo.paper.event.brigadier;
import com.mojang.brigadier.suggestion.Suggestions;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when sending {@link Suggestions} to the client. Will be called asynchronously if a plugin
* marks the {@link com.destroystokyo.paper.event.server.AsyncTabCompleteEvent} event handled asynchronously,
* otherwise called synchronously.
*/
@NullMarked
public class AsyncPlayerSendSuggestionsEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private Suggestions suggestions;
private final String buffer;
private boolean cancelled;
@ApiStatus.Internal
public AsyncPlayerSendSuggestionsEvent(final Player player, final Suggestions suggestions, final String buffer) {
super(player, !Bukkit.isPrimaryThread());
this.suggestions = suggestions;
this.buffer = buffer;
}
public interface AsyncPlayerSendSuggestionsEvent extends PlayerEvent, Cancellable {
/**
* Gets the input buffer sent to request these suggestions.
*
* @return the input buffer
*/
public String getBuffer() {
return this.buffer;
}
String getBuffer();
/**
* Gets the suggestions to be sent to client.
*
* @return the suggestions
*/
public Suggestions getSuggestions() {
return this.suggestions;
}
Suggestions getSuggestions();
/**
* Sets the suggestions to be sent to client.
*
* @param suggestions suggestions
*/
public void setSuggestions(final Suggestions suggestions) {
this.suggestions = suggestions;
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
void setSuggestions(Suggestions suggestions);
/**
* Cancels sending suggestions to the client.
@@ -69,16 +39,12 @@ public class AsyncPlayerSendSuggestionsEvent extends PlayerEvent implements Canc
* {@inheritDoc}
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,6 +1,7 @@
package com.destroystokyo.paper.event.brigadier;
import com.destroystokyo.paper.brigadier.BukkitBrigadierCommand;
import com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource;
import com.mojang.brigadier.tree.ArgumentCommandNode;
import com.mojang.brigadier.tree.LiteralCommandNode;
import com.mojang.brigadier.tree.RootCommandNode;
@@ -9,7 +10,6 @@ import org.bukkit.command.Command;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.server.ServerEvent;
import org.jetbrains.annotations.NotNull;
/**
* Fired anytime the server synchronizes Bukkit commands to Brigadier.
@@ -22,37 +22,14 @@ import org.jetbrains.annotations.NotNull;
*/
@Deprecated(since = "1.20.6")
@Warning(reason = "This event has been superseded by the Commands API and will be removed in a future release. Listen to LifecycleEvents.COMMANDS instead.", value = true)
public class CommandRegisteredEvent<S extends com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource> extends ServerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final String commandLabel;
private final Command command;
private final com.destroystokyo.paper.brigadier.BukkitBrigadierCommand<S> brigadierCommand;
private final RootCommandNode<S> root;
private final ArgumentCommandNode<S, String> defaultArgs;
private LiteralCommandNode<S> literal;
private boolean rawCommand = false;
private boolean cancelled;
public CommandRegisteredEvent(String commandLabel, com.destroystokyo.paper.brigadier.BukkitBrigadierCommand<S> brigadierCommand, Command command, RootCommandNode<S> root, LiteralCommandNode<S> literal, ArgumentCommandNode<S, String> defaultArgs) {
this.commandLabel = commandLabel;
this.brigadierCommand = brigadierCommand;
this.command = command;
this.root = root;
this.literal = literal;
this.defaultArgs = defaultArgs;
}
public interface CommandRegisteredEvent<S extends BukkitBrigadierCommandSource> extends ServerEvent, Cancellable {
/**
* Gets the command label of the {@link Command} being registered.
*
* @return the command label
*/
public String getCommandLabel() {
return this.commandLabel;
}
String getCommandLabel();
/**
* Gets the {@link BukkitBrigadierCommand} for the {@link Command} being registered. This can be used
@@ -62,46 +39,28 @@ public class CommandRegisteredEvent<S extends com.destroystokyo.paper.brigadier.
*
* @return the {@link BukkitBrigadierCommand}
*/
public BukkitBrigadierCommand<S> getBrigadierCommand() {
return this.brigadierCommand;
}
BukkitBrigadierCommand<S> getBrigadierCommand();
/**
* Gets the {@link Command} being registered.
*
* @return the {@link Command}
*/
public Command getCommand() {
return this.command;
}
Command getCommand();
/**
* Gets the {@link RootCommandNode} which is being registered to.
*
* @return the {@link RootCommandNode}
*/
public RootCommandNode<S> getRoot() {
return this.root;
}
/**
* Gets the Bukkit APIs default arguments node (greedy string), for if
* you wish to reuse it.
*
* @return default arguments node
*/
public ArgumentCommandNode<S, String> getDefaultArgs() {
return this.defaultArgs;
}
RootCommandNode<S> getRoot();
/**
* Gets the {@link LiteralCommandNode} to be registered for the {@link Command}.
*
* @return the {@link LiteralCommandNode}
*/
public LiteralCommandNode<S> getLiteral() {
return this.literal;
}
LiteralCommandNode<S> getLiteral();
/**
* Sets the {@link LiteralCommandNode} used to register this command. The default literal is mutable, so
@@ -109,9 +68,15 @@ public class CommandRegisteredEvent<S extends com.destroystokyo.paper.brigadier.
*
* @param literal new node
*/
public void setLiteral(LiteralCommandNode<S> literal) {
this.literal = literal;
}
void setLiteral(LiteralCommandNode<S> literal);
/**
* Gets the Bukkit APIs default arguments node (greedy string), for if
* you wish to reuse it.
*
* @return default arguments node
*/
ArgumentCommandNode<S, String> getDefaultArgs();
/**
* Gets whether this command should is treated as "raw".
@@ -119,9 +84,7 @@ public class CommandRegisteredEvent<S extends com.destroystokyo.paper.brigadier.
* @see #setRawCommand(boolean)
* @return whether this command is treated as "raw"
*/
public boolean isRawCommand() {
return this.rawCommand;
}
boolean isRawCommand();
/**
* Sets whether this command should be treated as "raw".
@@ -135,14 +98,7 @@ public class CommandRegisteredEvent<S extends com.destroystokyo.paper.brigadier.
*
* @param rawCommand whether this command should be treated as "raw"
*/
public void setRawCommand(final boolean rawCommand) {
this.rawCommand = rawCommand;
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
void setRawCommand(boolean rawCommand);
/**
* Cancels registering this command to Brigadier, but will remain in Bukkit Command Map. Can be used to hide a
@@ -151,17 +107,12 @@ public class CommandRegisteredEvent<S extends com.destroystokyo.paper.brigadier.
* {@inheritDoc}
*/
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@NotNull
public HandlerList getHandlers() {
return HANDLER_LIST;
}
@NotNull
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -0,0 +1,4 @@
@NullMarked
package com.destroystokyo.paper.event.brigadier;
import org.jspecify.annotations.NullMarked;
@@ -1,60 +1,19 @@
package com.destroystokyo.paper.event.entity;
import io.papermc.paper.event.entity.EntityIgniteEvent;
import org.bukkit.entity.Creeper;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when a Creeper is ignited either by a
* flint and steel, {@link Creeper#ignite()} or
* {@link Creeper#setIgnited(boolean)}.
*/
@NullMarked
public class CreeperIgniteEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private boolean ignited;
private boolean cancelled;
@ApiStatus.Internal
public CreeperIgniteEvent(final Creeper creeper, final boolean ignited) {
super(creeper);
this.ignited = ignited;
}
public interface CreeperIgniteEvent extends EntityIgniteEvent {
@Override
public Creeper getEntity() {
return (Creeper) super.getEntity();
}
Creeper getEntity();
public boolean isIgnited() {
return this.ignited;
}
boolean isIgnited();
public void setIgnited(final boolean ignited) {
this.ignited = ignited;
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
void setIgnited(boolean ignited);
}
@@ -7,68 +7,35 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jetbrains.annotations.Unmodifiable;
/**
* Fired when a DragonFireball collides with a block/entity and spawns an AreaEffectCloud
*/
@NullMarked
public class EnderDragonFireballHitEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Collection<LivingEntity> targets;
private final AreaEffectCloud areaEffectCloud;
private boolean cancelled;
@ApiStatus.Internal
public EnderDragonFireballHitEvent(final DragonFireball fireball, final Collection<LivingEntity> targets, final AreaEffectCloud areaEffectCloud) {
super(fireball);
this.targets = targets;
this.areaEffectCloud = areaEffectCloud;
}
public interface EnderDragonFireballHitEvent extends EntityEvent, Cancellable {
/**
* The fireball involved in this event
*/
@Override
public DragonFireball getEntity() {
return (DragonFireball) super.getEntity();
}
DragonFireball getEntity();
/**
* The living entities hit by fireball
*
* @return the targets
*/
public Collection<LivingEntity> getTargets() {
return this.targets;
}
@Unmodifiable Collection<LivingEntity> getTargets();
/**
* @return The area effect cloud spawned in this collision
*/
public AreaEffectCloud getAreaEffectCloud() {
return this.areaEffectCloud;
}
AreaEffectCloud getAreaEffectCloud();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -5,57 +5,27 @@ import org.bukkit.entity.EnderDragon;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when an EnderDragon spawns an AreaEffectCloud by shooting flames
*/
@NullMarked
public class EnderDragonFlameEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final AreaEffectCloud areaEffectCloud;
private boolean cancelled;
@ApiStatus.Internal
public EnderDragonFlameEvent(final EnderDragon enderDragon, final AreaEffectCloud areaEffectCloud) {
super(enderDragon);
this.areaEffectCloud = areaEffectCloud;
}
public interface EnderDragonFlameEvent extends EntityEvent, Cancellable {
/**
* The enderdragon involved in this event
*/
@Override
public EnderDragon getEntity() {
return (EnderDragon) super.getEntity();
}
EnderDragon getEntity();
/**
* @return The area effect cloud spawned in this collision
*/
public AreaEffectCloud getAreaEffectCloud() {
return this.areaEffectCloud;
}
AreaEffectCloud getAreaEffectCloud();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -5,57 +5,27 @@ import org.bukkit.entity.EnderDragon;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when an EnderDragon shoots a fireball
*/
@NullMarked
public class EnderDragonShootFireballEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final DragonFireball fireball;
private boolean cancelled;
@ApiStatus.Internal
public EnderDragonShootFireballEvent(final EnderDragon entity, final DragonFireball fireball) {
super(entity);
this.fireball = fireball;
}
public interface EnderDragonShootFireballEvent extends EntityEvent, Cancellable {
/**
* The enderdragon shooting the fireball
*/
@Override
public EnderDragon getEntity() {
return (EnderDragon) super.getEntity();
}
EnderDragon getEntity();
/**
* @return The fireball being shot
*/
public DragonFireball getFireball() {
return this.fireball;
}
DragonFireball getFireball();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -28,8 +28,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when an Enderman determines if it should attack a player or not.
@@ -37,19 +35,7 @@ import org.jspecify.annotations.NullMarked;
* Starts off cancelled if the player is wearing a pumpkin head or is not looking
* at the Enderman, according to Vanilla rules.
*/
@NullMarked
public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Player player;
private boolean cancelled;
@ApiStatus.Internal
public EndermanAttackPlayerEvent(final Enderman entity, final Player player) {
super(entity);
this.player = player;
}
public interface EndermanAttackPlayerEvent extends EntityEvent, Cancellable {
/**
* The enderman considering attacking
@@ -57,26 +43,20 @@ public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellabl
* @return The enderman considering attacking
*/
@Override
public Enderman getEntity() {
return (Enderman) super.getEntity();
}
Enderman getEntity();
/**
* The player the Enderman is considering attacking
*
* @return The player the Enderman is considering attacking
*/
public Player getPlayer() {
return this.player;
}
Player getPlayer();
/**
* @return If cancelled, the enderman will not attack
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* {@inheritDoc}
@@ -84,16 +64,12 @@ public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellabl
* Cancels if the Enderman will attack this player
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -4,41 +4,18 @@ import org.bukkit.entity.Enderman;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@NullMarked
public class EndermanEscapeEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Reason reason;
private boolean cancelled;
@ApiStatus.Internal
public EndermanEscapeEvent(final Enderman entity, final Reason reason) {
super(entity);
this.reason = reason;
}
public interface EndermanEscapeEvent extends EntityEvent, Cancellable {
@Override
public Enderman getEntity() {
return (Enderman) super.getEntity();
}
Enderman getEntity();
/**
* Gets the reason the enderman is trying to escape.
*
* @return The reason
*/
public Reason getReason() {
return this.reason;
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
Reason getReason();
/**
* Cancels the escape.
@@ -48,20 +25,16 @@ public class EndermanEscapeEvent extends EntityEvent implements Cancellable {
* innate immunities or damage behavior like arrows where the damage never happens.
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
void setCancelled(boolean cancel);
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
public enum Reason {
enum Reason {
/**
* The enderman has stopped attacking and ran away
*/
@@ -1,44 +1,28 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.bukkit.event.world.WorldEvent;
/**
* Fired any time an entity is being added to the world for any reason (including a chunk loading).
* <p>
* Not to be confused with {@link CreatureSpawnEvent}
*/
@NullMarked
public class EntityAddToWorldEvent extends EntityEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final World world;
@ApiStatus.Internal
public EntityAddToWorldEvent(final Entity entity, final World world) {
super(entity);
this.world = world;
}
public interface EntityAddToWorldEvent extends EntityEvent, WorldEvent {
/**
* @return The world that the entity is being added to
*/
public World getWorld() {
return this.world;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
World getWorld();
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -4,47 +4,21 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when an entity jumps
* <p>
* Cancelling the event will stop the entity from jumping
*/
@NullMarked
public class EntityJumpEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private boolean cancelled;
@ApiStatus.Internal
public EntityJumpEvent(final LivingEntity entity) {
super(entity);
}
public interface EntityJumpEvent extends EntityEvent, Cancellable {
@Override
public LivingEntity getEntity() {
return (LivingEntity) super.getEntity();
}
LivingEntity getEntity();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,52 +1,33 @@
package com.destroystokyo.paper.event.entity;
import io.papermc.paper.event.entity.EntityKnockbackEvent;
import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when an Entity is knocked back by the hit of another Entity. The acceleration
* vector can be modified. If this event is cancelled, the entity is not knocked back.
*/
@NullMarked
public class EntityKnockbackByEntityEvent extends EntityPushedByEntityAttackEvent {
private final float knockbackStrength;
@ApiStatus.Internal
public EntityKnockbackByEntityEvent(final LivingEntity entity, final Entity hitBy, final EntityKnockbackEvent.Cause cause, final float knockbackStrength, final Vector knockback) {
super(entity, cause, hitBy, knockback);
this.knockbackStrength = knockbackStrength;
}
public interface EntityKnockbackByEntityEvent extends EntityPushedByEntityAttackEvent {
/**
* @return the entity which was knocked back
*/
@Override
public LivingEntity getEntity() {
return (LivingEntity) super.getEntity();
}
LivingEntity getEntity();
/**
* @return the original knockback strength.
* @apiNote this value doesn't necessarily relate to {@link #getKnockback()}.
*/
@ApiStatus.Obsolete(since = "1.20.6")
public float getKnockbackStrength() {
return this.knockbackStrength;
}
float getKnockbackStrength();
/**
* Gets the causing entity. Same as {@link #getPushedBy()}.
*
* @return the Entity which hit
*/
public Entity getHitBy() {
return super.getPushedBy();
}
Entity getHitBy();
}
@@ -5,8 +5,6 @@ import org.bukkit.entity.Entity;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
@@ -15,21 +13,7 @@ import org.jspecify.annotations.Nullable;
* This event does not fire for the entities actual movement. Only when it
* is choosing to start moving to a location.
*/
@NullMarked
public class EntityPathfindEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final @Nullable Entity targetEntity;
private final Location location;
private boolean cancelled;
@ApiStatus.Internal
public EntityPathfindEvent(final Entity entity, final Location location, final @Nullable Entity targetEntity) {
super(entity);
this.targetEntity = targetEntity;
this.location = location;
}
public interface EntityPathfindEvent extends EntityEvent, Cancellable {
/**
* The Entity that is pathfinding.
@@ -37,9 +21,7 @@ public class EntityPathfindEvent extends EntityEvent implements Cancellable {
* @return The Entity that is pathfinding.
*/
@Override
public Entity getEntity() {
return this.entity;
}
Entity getEntity();
/**
* If the Entity is trying to pathfind to an entity, this is the entity in relation.
@@ -48,9 +30,7 @@ public class EntityPathfindEvent extends EntityEvent implements Cancellable {
*
* @return The entity target or {@code null}
*/
public @Nullable Entity getTargetEntity() {
return this.targetEntity;
}
@Nullable Entity getTargetEntity();
/**
* The Location of where the entity is about to move to.
@@ -59,26 +39,25 @@ public class EntityPathfindEvent extends EntityEvent implements Cancellable {
*
* @return Location of where the entity is trying to pathfind to.
*/
public Location getLoc() {
return this.location.clone();
Location getTargetLocation();
/**
* The Location of where the entity is about to move to.
* <br>
* Note that if the target happened to of been an entity
*
* @return Location of where the entity is trying to pathfind to.
* @deprecated use {@link #getTargetLocation()}
*/
@Deprecated(forRemoval = true)
default Location getLoc() {
return this.getTargetLocation();
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,42 +1,26 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.bukkit.event.world.WorldEvent;
/**
* Fired any time an entity is being removed from a world for any reason (including a chunk unloading).
* Note: The entity is updated prior to this event being called, as such, the entity's world may not be equal to {@link #getWorld()}.
*/
@NullMarked
public class EntityRemoveFromWorldEvent extends EntityEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final World world;
@ApiStatus.Internal
public EntityRemoveFromWorldEvent(final Entity entity, final World world) {
super(entity);
this.world = world;
}
public interface EntityRemoveFromWorldEvent extends EntityEvent, WorldEvent {
/**
* @return The world that the entity is being removed from
*/
public World getWorld() {
return this.world;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
World getWorld();
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,33 +1,17 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.Location;
import org.bukkit.block.EndGateway;
import org.bukkit.entity.Entity;
import org.bukkit.event.entity.EntityTeleportEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired any time an entity attempts to teleport in an end gateway
*/
@NullMarked
public class EntityTeleportEndGatewayEvent extends EntityTeleportEvent {
private final EndGateway gateway;
@ApiStatus.Internal
public EntityTeleportEndGatewayEvent(final Entity entity, final Location from, final Location to, final EndGateway gateway) {
super(entity, from, to);
this.gateway = gateway;
}
public interface EntityTeleportEndGatewayEvent extends EntityTeleportEvent {
/**
* The gateway triggering the teleport
*
* @return EndGateway used
*/
public EndGateway getGateway() {
return this.gateway;
}
EndGateway getGateway();
}
@@ -1,65 +1,35 @@
package com.destroystokyo.paper.event.entity;
import java.util.Collections;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LightningStrike;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityTransformEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when lightning strikes an entity
*/
@NullMarked
public class EntityZapEvent extends EntityTransformEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final LightningStrike bolt;
private boolean cancelled;
@ApiStatus.Internal
public EntityZapEvent(final Entity entity, final LightningStrike bolt, final Entity replacementEntity) {
super(entity, Collections.singletonList(replacementEntity), TransformReason.LIGHTNING);
this.bolt = bolt;
}
public interface EntityZapEvent extends EntityTransformEvent {
/**
* Gets the lightning bolt that is striking the entity.
*
* @return The lightning bolt responsible for this event
*/
public LightningStrike getBolt() {
return this.bolt;
}
LightningStrike getBolt();
/**
* Gets the entity that will replace the struck entity.
*
* @return The entity that will replace the struck entity
*/
public Entity getReplacementEntity() {
return super.getTransformedEntity();
default Entity getReplacementEntity() {
return this.getTransformedEntity();
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -27,62 +27,32 @@ import org.bukkit.entity.ExperienceOrb;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired anytime the server is about to merge 2 experience orbs into one
*/
@NullMarked
public class ExperienceOrbMergeEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final ExperienceOrb mergeTarget;
private final ExperienceOrb mergeSource;
private boolean cancelled;
@ApiStatus.Internal
public ExperienceOrbMergeEvent(final ExperienceOrb mergeTarget, final ExperienceOrb mergeSource) {
super(mergeTarget);
this.mergeTarget = mergeTarget;
this.mergeSource = mergeSource;
}
public interface ExperienceOrbMergeEvent extends EntityEvent, Cancellable {
/**
* @return The orb that will absorb the other experience orb
* {@return the orb that will absorb the other experience orb}
*/
public ExperienceOrb getMergeTarget() {
return this.mergeTarget;
}
ExperienceOrb getMergeTarget();
/**
* @return The orb that is subject to being removed and merged into the target orb
* {@return the orb that is subject to being removed and merged into the target orb}
*/
public ExperienceOrb getMergeSource() {
return this.mergeSource;
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
ExperienceOrb getMergeSource();
/**
* @param cancel {@code true} if you wish to cancel this event, and prevent the orbs from merging
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,32 +1,16 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when a phantom is spawned for an exhausted player
*/
@NullMarked
public class PhantomPreSpawnEvent extends PreCreatureSpawnEvent {
private final Entity entity;
@ApiStatus.Internal
public PhantomPreSpawnEvent(final Location location, final Entity entity, final CreatureSpawnEvent.SpawnReason reason) {
super(location, EntityType.PHANTOM, reason);
this.entity = entity;
}
public interface PhantomPreSpawnEvent extends PreCreatureSpawnEvent {
/**
* Get the entity this phantom is spawning for
*
* @return the Entity
*/
public Entity getSpawningEntity() {
return this.entity;
}
Entity getSpawningEntity();
}
@@ -1,65 +1,40 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when the server is calculating what chunks to try to spawn monsters in every Monster Spawn Tick event
*/
@NullMarked
public class PlayerNaturallySpawnCreaturesEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private byte radius;
private boolean cancelled;
@ApiStatus.Internal
public PlayerNaturallySpawnCreaturesEvent(final Player player, final byte radius) {
super(player);
this.radius = radius;
}
public interface PlayerNaturallySpawnCreaturesEvent extends PlayerEvent, Cancellable {
/**
* @return The radius of chunks around this player to be included in natural spawn selection
*/
public byte getSpawnRadius() {
return this.radius;
}
byte getSpawnRadius();
/**
* @param radius The radius of chunks around this player to be included in natural spawn selection
*/
public void setSpawnRadius(final byte radius) {
this.radius = radius;
}
void setSpawnRadius(byte radius);
/**
* @return If this player's chunks will be excluded from natural spawns
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* @param cancel {@code true} if you wish to cancel this event, and not include this player's chunks for natural spawning
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -6,8 +6,6 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* WARNING: This event only fires for a limited number of cases, and not for every case that {@link CreatureSpawnEvent} does.
@@ -19,52 +17,27 @@ import org.jspecify.annotations.NullMarked;
* Currently: NATURAL and SPAWNER based reasons. <!-- Please submit a Pull Request for future additions. -->
* Also, Plugins that replace Entity Registrations with their own custom entities might not fire this event.
*/
@NullMarked
public class PreCreatureSpawnEvent extends Event implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Location location;
private final EntityType type;
private final CreatureSpawnEvent.SpawnReason reason;
private boolean shouldAbortSpawn;
private boolean cancelled;
@ApiStatus.Internal
public PreCreatureSpawnEvent(final Location location, final EntityType type, final CreatureSpawnEvent.SpawnReason reason) {
this.location = location;
this.type = type;
this.reason = reason;
}
public interface PreCreatureSpawnEvent extends Event, Cancellable {
/**
* @return The location this creature is being spawned at
*/
public Location getSpawnLocation() {
return this.location.clone();
}
Location getSpawnLocation();
/**
* @return The type of creature being spawned
*/
public EntityType getType() {
return this.type;
}
EntityType getType();
/**
* @return Reason this creature is spawning (ie, NATURAL vs SPAWNER)
*/
public CreatureSpawnEvent.SpawnReason getReason() {
return this.reason;
}
CreatureSpawnEvent.SpawnReason getReason();
/**
* @return If the spawn process should be aborted vs trying more attempts
*/
public boolean shouldAbortSpawn() {
return this.shouldAbortSpawn;
}
boolean shouldAbortSpawn();
/**
* Set this if you are more blanket blocking all types of these spawns, and wish to abort the spawn process from
@@ -72,17 +45,13 @@ public class PreCreatureSpawnEvent extends Event implements Cancellable {
*
* @param shouldAbortSpawn Set if the spawn process should be aborted vs trying more attempts
*/
public void setShouldAbortSpawn(final boolean shouldAbortSpawn) {
this.shouldAbortSpawn = shouldAbortSpawn;
}
void setShouldAbortSpawn(boolean shouldAbortSpawn);
/**
* @return If the spawn of this creature is cancelled or not
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* Cancelling this event is more efficient than cancelling {@link CreatureSpawnEvent}
@@ -90,16 +59,12 @@ public class PreCreatureSpawnEvent extends Event implements Cancellable {
* @param cancel {@code true} if you wish to cancel this event, and abort the spawn of this creature
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,10 +1,6 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called before an entity is spawned into a world by a spawner.
@@ -12,18 +8,7 @@ import org.jspecify.annotations.NullMarked;
* This only includes the spawner's location and not the full BlockState snapshot for performance reasons.
* If you really need it you have to get the spawner yourself.
*/
@NullMarked
public class PreSpawnerSpawnEvent extends PreCreatureSpawnEvent {
public interface PreSpawnerSpawnEvent extends PreCreatureSpawnEvent {
private final Location spawnerLocation;
@ApiStatus.Internal
public PreSpawnerSpawnEvent(final Location location, final EntityType type, final Location spawnerLocation) {
super(location, type, CreatureSpawnEvent.SpawnReason.SPAWNER);
this.spawnerLocation = spawnerLocation;
}
public Location getSpawnerLocation() {
return this.spawnerLocation.clone();
}
Location getSpawnerLocation();
}
@@ -6,69 +6,36 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
/**
* Called when a projectile collides with an entity
* <p>
* This event is called <b>before</b> {@link EntityDamageByEntityEvent}, and cancelling it will allow the projectile to continue flying
*
* @deprecated Deprecated, use {@link org.bukkit.event.entity.ProjectileHitEvent} and check if there is a hit entity
* @deprecated use {@link org.bukkit.event.entity.ProjectileHitEvent} and check if there is a hit entity
*/
@Deprecated(since = "1.19.3")
public class ProjectileCollideEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
@NotNull private final Entity collidedWith;
private boolean cancelled;
@ApiStatus.Internal
public ProjectileCollideEvent(@NotNull Projectile projectile, @NotNull Entity collidedWith) {
super(projectile);
this.collidedWith = collidedWith;
}
public interface ProjectileCollideEvent extends EntityEvent, Cancellable {
/**
* Get the projectile that collided
*
* @return the projectile that collided
*/
@NotNull
public Projectile getEntity() {
return (Projectile) super.getEntity();
}
@Override
Projectile getEntity();
/**
* Get the entity the projectile collided with
*
* @return the entity collided with
*/
@NotNull
public Entity getCollidedWith() {
return this.collidedWith;
}
Entity getCollidedWith();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
@NotNull
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
@NotNull
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -6,52 +6,22 @@ import org.bukkit.entity.SkeletonHorse;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Event called when a player gets close to a skeleton horse and triggers the lightning trap
*/
@NullMarked
public class SkeletonHorseTrapEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final List<HumanEntity> eligibleHumans;
private boolean cancelled;
@ApiStatus.Internal
public SkeletonHorseTrapEvent(final SkeletonHorse horse, final List<HumanEntity> eligibleHumans) {
super(horse);
this.eligibleHumans = eligibleHumans;
}
public interface SkeletonHorseTrapEvent extends EntityEvent, Cancellable {
@Override
public SkeletonHorse getEntity() {
return (SkeletonHorse) super.getEntity();
}
SkeletonHorse getEntity();
public List<HumanEntity> getEligibleHumans() {
return this.eligibleHumans;
}
List<HumanEntity> getEligibleHumans();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,41 +1,24 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.Slime;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Slime decides to change its facing direction.
* <p>
* This event does not fire for the entity's actual movement. Only when it
* is choosing to change direction.
*/
@NullMarked
public class SlimeChangeDirectionEvent extends SlimePathfindEvent {
private float yaw;
@ApiStatus.Internal
public SlimeChangeDirectionEvent(final Slime slime, final float yaw) {
super(slime);
this.yaw = yaw;
}
public interface SlimeChangeDirectionEvent extends SlimePathfindEvent {
/**
* Get the new chosen yaw
*
* @return Chosen yaw
*/
public float getNewYaw() {
return this.yaw;
}
float getNewYaw();
/**
* Set the new chosen yaw
*
* @param yaw Chosen yaw
*/
public void setNewYaw(final float yaw) {
this.yaw = yaw;
}
void setNewYaw(float yaw);
}
@@ -1,11 +1,9 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.Slime;
import org.bukkit.entity.AbstractCubeMob;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Slime decides to start pathfinding.
@@ -13,17 +11,7 @@ import org.jspecify.annotations.NullMarked;
* This event does not fire for the entity's actual movement. Only when it
* is choosing to start moving.
*/
@NullMarked
public class SlimePathfindEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private boolean cancelled;
@ApiStatus.Internal
public SlimePathfindEvent(final Slime slime) {
super(slime);
}
public interface SlimePathfindEvent extends EntityEvent, Cancellable {
/**
* The Slime that is pathfinding.
@@ -31,26 +19,12 @@ public class SlimePathfindEvent extends EntityEvent implements Cancellable {
* @return The Slime that is pathfinding.
*/
@Override
public Slime getEntity() {
return (Slime) super.getEntity();
}
AbstractCubeMob getEntity();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,20 +1,10 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.Slime;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Slime decides to start jumping while swimming in water/lava.
* <p>
* This event does not fire for the entity's actual movement. Only when it
* is choosing to start jumping.
*/
@NullMarked
public class SlimeSwimEvent extends SlimeWanderEvent {
@ApiStatus.Internal
public SlimeSwimEvent(final Slime slime) {
super(slime);
}
public interface SlimeSwimEvent extends SlimeWanderEvent {
}
@@ -1,9 +1,6 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Slime;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Slime decides to change direction to target a LivingEntity.
@@ -11,23 +8,12 @@ import org.jspecify.annotations.NullMarked;
* This event does not fire for the entity's actual movement. Only when it
* is choosing to start moving.
*/
@NullMarked
public class SlimeTargetLivingEntityEvent extends SlimePathfindEvent {
private final LivingEntity target;
@ApiStatus.Internal
public SlimeTargetLivingEntityEvent(final Slime slime, final LivingEntity target) {
super(slime);
this.target = target;
}
public interface SlimeTargetLivingEntityEvent extends SlimePathfindEvent {
/**
* Get the targeted entity
*
* @return Targeted entity
*/
public LivingEntity getTarget() {
return this.target;
}
LivingEntity getTarget();
}
@@ -1,20 +1,10 @@
package com.destroystokyo.paper.event.entity;
import org.bukkit.entity.Slime;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Slime decides to start wandering.
* <p>
* This event does not fire for the entity's actual movement. Only when it
* is choosing to start moving.
*/
@NullMarked
public class SlimeWanderEvent extends SlimePathfindEvent {
@ApiStatus.Internal
public SlimeWanderEvent(final Slime slime) {
super(slime);
}
public interface SlimeWanderEvent extends SlimePathfindEvent {
}
@@ -1,54 +1,39 @@
package com.destroystokyo.paper.event.entity;
import com.google.common.base.Preconditions;
import org.bukkit.entity.Egg;
import org.bukkit.entity.EntityType;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.bukkit.event.entity.EntityEvent;
import org.checkerframework.checker.index.qual.NonNegative;
/**
* Called when a thrown egg might hatch.
* <p>
* This event fires for all thrown eggs that may hatch, players, dispensers, etc.
*/
@NullMarked
public class ThrownEggHatchEvent extends Event {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Egg egg;
private boolean hatching;
private byte numHatches;
private EntityType hatchType;
@ApiStatus.Internal
public ThrownEggHatchEvent(final Egg egg, final boolean hatching, final byte numHatches, final EntityType hatchingType) {
this.egg = egg;
this.hatching = hatching;
this.numHatches = numHatches;
this.hatchType = hatchingType;
}
public interface ThrownEggHatchEvent extends EntityEvent {
/**
* Gets the egg involved in this event.
*
* @return the egg involved in this event
* @deprecated use {@link #getEntity()}
*/
public Egg getEgg() {
return this.egg;
@Deprecated(forRemoval = true)
default Egg getEgg() {
return this.getEntity();
}
@Override
Egg getEntity();
/**
* Gets whether the egg is hatching or not. Will be what the server
* would've done without interaction.
*
* @return boolean Whether the egg is going to hatch or not
*/
public boolean isHatching() {
return this.hatching;
}
boolean isHatching();
/**
* Sets whether the egg will hatch or not.
@@ -56,28 +41,7 @@ public class ThrownEggHatchEvent extends Event {
* @param hatching {@code true} if you want the egg to hatch, {@code false} if you want it
* not to
*/
public void setHatching(final boolean hatching) {
this.hatching = hatching;
}
/**
* Get the type of the mob being hatched ({@link EntityType#CHICKEN} by default)
*
* @return The type of the mob being hatched by the egg
*/
public EntityType getHatchingType() {
return this.hatchType;
}
/**
* Change the type of mob being hatched by the egg
*
* @param hatchType The type of the mob being hatched by the egg
*/
public void setHatchingType(final EntityType hatchType) {
Preconditions.checkArgument(hatchType.isSpawnable(), "Can't spawn that entity type from an egg!");
this.hatchType = hatchType;
}
void setHatching(boolean hatching);
/**
* Get the number of mob hatches from the egg. By default, the number will
@@ -90,9 +54,7 @@ public class ThrownEggHatchEvent extends Event {
*
* @return The number of mobs going to be hatched by the egg
*/
public byte getNumHatches() {
return this.numHatches;
}
@NonNegative byte getNumHatches();
/**
* Change the number of mobs coming out of the hatched egg
@@ -102,16 +64,26 @@ public class ThrownEggHatchEvent extends Event {
*
* @param numHatches The number of mobs coming out of the egg
*/
public void setNumHatches(final byte numHatches) {
this.numHatches = numHatches;
}
void setNumHatches(@NonNegative byte numHatches);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
/**
* Get the type of the mob being hatched ({@link EntityType#CHICKEN} by default)
*
* @return The type of the mob being hatched by the egg
*/
EntityType getHatchingType();
public static HandlerList getHandlerList() {
return HANDLER_LIST;
/**
* Change the type of mob being hatched by the egg
*
* @param hatchType The type of the mob being hatched by the egg
*/
void setHatchingType(EntityType hatchType);
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -4,23 +4,11 @@ import org.bukkit.entity.Turtle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Turtle decides to go home
*/
@NullMarked
public class TurtleGoHomeEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private boolean cancelled;
@ApiStatus.Internal
public TurtleGoHomeEvent(final Turtle turtle) {
super(turtle);
}
public interface TurtleGoHomeEvent extends EntityEvent, Cancellable {
/**
* The turtle going home
@@ -28,26 +16,12 @@ public class TurtleGoHomeEvent extends EntityEvent implements Cancellable {
* @return The turtle
*/
@Override
public Turtle getEntity() {
return (Turtle) super.getEntity();
}
Turtle getEntity();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -5,28 +5,12 @@ import org.bukkit.entity.Turtle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.checkerframework.common.value.qual.IntRange;
/**
* Fired when a Turtle lays eggs
*/
@NullMarked
public class TurtleLayEggEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Location location;
private int eggCount;
private boolean cancelled;
@ApiStatus.Internal
public TurtleLayEggEvent(final Turtle turtle, final Location location, final int eggCount) {
super(turtle);
this.location = location;
this.eggCount = eggCount;
}
public interface TurtleLayEggEvent extends EntityEvent, Cancellable {
/**
* The turtle laying the eggs
@@ -34,57 +18,33 @@ public class TurtleLayEggEvent extends EntityEvent implements Cancellable {
* @return The turtle
*/
@Override
public Turtle getEntity() {
return (Turtle) super.getEntity();
}
Turtle getEntity();
/**
* Get the location where the eggs are being laid
*
* @return Location of eggs
*/
public Location getLocation() {
return this.location.clone();
}
Location getLocation();
/**
* Get the number of eggs being laid
*
* @return Number of eggs
*/
public int getEggCount() {
return this.eggCount;
}
@IntRange(from = 1, to = 4) int getEggCount();
/**
* Set the number of eggs being laid
*
* @param eggCount Number of eggs
*/
public void setEggCount(final int eggCount) {
if (eggCount < 1) {
this.cancelled = true;
return;
void setEggCount(@IntRange(from = 0, to = 4) int eggCount);
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
this.eggCount = Math.min(eggCount, 4);
}
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
return Holder.HANDLER_LIST;
}
}
@@ -5,25 +5,11 @@ import org.bukkit.entity.Turtle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a Turtle starts digging to lay eggs
*/
@NullMarked
public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Location location;
private boolean cancelled;
@ApiStatus.Internal
public TurtleStartDiggingEvent(final Turtle turtle, final Location location) {
super(turtle);
this.location = location;
}
public interface TurtleStartDiggingEvent extends EntityEvent, Cancellable {
/**
* The turtle digging
@@ -31,35 +17,19 @@ public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable
* @return The turtle
*/
@Override
public Turtle getEntity() {
return (Turtle) super.getEntity();
}
Turtle getEntity();
/**
* Get the location where the turtle is digging
*
* @return Location where digging
*/
public Location getLocation() {
return this.location.clone();
}
Location getLocation();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -5,67 +5,38 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Fired when a witch consumes the potion in their hand to buff themselves.
*/
@NullMarked
public class WitchConsumePotionEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private @Nullable ItemStack potion;
private boolean cancelled;
@ApiStatus.Internal
public WitchConsumePotionEvent(final Witch witch, final @Nullable ItemStack potion) {
super(witch);
this.potion = potion;
}
public interface WitchConsumePotionEvent extends EntityEvent, Cancellable {
@Override
public Witch getEntity() {
return (Witch) super.getEntity();
}
Witch getEntity();
/**
* @return the potion the witch will consume and have the effects applied.
*/
public @Nullable ItemStack getPotion() {
return this.potion;
}
@Nullable ItemStack getPotion();
/**
* Sets the potion to be consumed and applied to the witch.
*
* @param potion The potion
*/
public void setPotion(final @Nullable ItemStack potion) {
this.potion = potion != null ? potion.clone() : null;
}
void setPotion(@Nullable ItemStack potion);
/**
* @return Event was cancelled or potion was {@code null}
*/
@Override
public boolean isCancelled() {
return this.cancelled || this.potion == null;
}
boolean isCancelled();
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -5,61 +5,29 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
@NullMarked
public class WitchReadyPotionEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private @Nullable ItemStack potion;
private boolean cancelled;
@ApiStatus.Internal
public WitchReadyPotionEvent(final Witch witch, final @Nullable ItemStack potion) {
super(witch);
this.potion = potion;
}
public interface WitchReadyPotionEvent extends EntityEvent, Cancellable {
@Override
public Witch getEntity() {
return (Witch) super.getEntity();
}
Witch getEntity();
/**
* @return the potion the witch is readying to use
*/
public @Nullable ItemStack getPotion() {
return this.potion;
}
@Nullable ItemStack getPotion();
/**
* Sets the potion the which is going to hold and use
*
* @param potion The potion
*/
public void setPotion(final @Nullable ItemStack potion) {
this.potion = potion != null ? potion.clone() : null;
}
void setPotion(@Nullable ItemStack potion);
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -6,76 +6,43 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Fired when a witch throws a potion at a player
*/
@NullMarked
public class WitchThrowPotionEvent extends EntityEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final LivingEntity target;
private @Nullable ItemStack potion;
private boolean cancelled;
@ApiStatus.Internal
public WitchThrowPotionEvent(final Witch witch, final LivingEntity target, final @Nullable ItemStack potion) {
super(witch);
this.target = target;
this.potion = potion;
}
public interface WitchThrowPotionEvent extends EntityEvent, Cancellable {
@Override
public Witch getEntity() {
return (Witch) super.getEntity();
}
Witch getEntity();
/**
* @return The target of the potion
*/
public LivingEntity getTarget() {
return this.target;
}
LivingEntity getTarget();
/**
* @return The potion the witch will throw at a player
*/
public @Nullable ItemStack getPotion() {
return this.potion;
}
@Nullable ItemStack getPotion();
/**
* Sets the potion to be thrown at a player
*
* @param potion The potion
*/
public void setPotion(final @Nullable ItemStack potion) {
this.potion = potion != null ? potion.clone() : null;
}
void setPotion(@Nullable ItemStack potion);
/**
* @return Event was cancelled or potion was {@code null}
*/
@Override
public boolean isCancelled() {
return this.cancelled || this.potion == null;
}
boolean isCancelled();
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -0,0 +1,4 @@
@NullMarked
package com.destroystokyo.paper.event.entity;
import org.jspecify.annotations.NullMarked;
@@ -2,11 +2,7 @@ package com.destroystokyo.paper.event.inventory;
import org.bukkit.Warning;
import org.bukkit.inventory.GrindstoneInventory;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.NullMarked;
/**
* Called when an item is put in a slot for grinding in a Grindstone
@@ -15,17 +11,9 @@ import org.jetbrains.annotations.Nullable;
*/
@Deprecated(since = "1.16.1")
@Warning
public class PrepareGrindstoneEvent extends PrepareResultEvent {
@NullMarked
public interface PrepareGrindstoneEvent extends PrepareResultEvent {
@ApiStatus.Internal
public PrepareGrindstoneEvent(@NotNull InventoryView inventory, @Nullable ItemStack result) {
super(inventory, result);
}
@NotNull
@Override
public GrindstoneInventory getInventory() {
return (GrindstoneInventory) super.getInventory();
}
GrindstoneInventory getInventory();
}
@@ -1,42 +1,9 @@
package com.destroystokyo.paper.event.inventory;
import org.bukkit.event.inventory.PrepareInventoryResultEvent;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Called when an item is put in an inventory containing a result slot
*/
@NullMarked
public class PrepareResultEvent extends PrepareInventoryResultEvent {
// HandlerList on PrepareInventoryResultEvent to ensure api compat
@ApiStatus.Internal
public PrepareResultEvent(final InventoryView inventory, final @Nullable ItemStack result) {
super(inventory, result);
}
/**
* Get result item, may be {@code null}.
*
* @return result item
*/
@Override
public @Nullable ItemStack getResult() {
return super.getResult();
}
/**
* Set result item, may be {@code null}.
*
* @param result result item
*/
@Override
public void setResult(final @Nullable ItemStack result) {
super.setResult(result);
}
public interface PrepareResultEvent extends PrepareInventoryResultEvent {
}
@@ -1,67 +1,31 @@
package com.destroystokyo.paper.event.player;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.Nullable;
/**
* @deprecated Not used
* @deprecated not called anymore
*/
@Deprecated(since = "1.16.4", forRemoval = true)
public class IllegalPacketEvent extends PlayerEvent {
public interface IllegalPacketEvent extends PlayerEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
boolean isShouldKick();
@Nullable private final String type;
@Nullable private final String exceptionMessage;
@Nullable private String kickMessage;
private boolean shouldKick = true;
void setShouldKick(boolean shouldKick);
@ApiStatus.Internal
public IllegalPacketEvent(@NotNull Player player, @Nullable String type, @Nullable String kickMessage, @NotNull Exception e) {
super(player);
this.type = type;
this.kickMessage = kickMessage;
this.exceptionMessage = e.getMessage();
}
@Nullable String getKickMessage();
public boolean isShouldKick() {
return this.shouldKick;
}
void setKickMessage(@Nullable String kickMessage);
public void setShouldKick(boolean shouldKick) {
this.shouldKick = shouldKick;
}
@Nullable String getType();
@Nullable
public String getKickMessage() {
return this.kickMessage;
}
@Nullable String getExceptionMessage();
public void setKickMessage(@Nullable String kickMessage) {
this.kickMessage = kickMessage;
}
@Nullable
public String getType() {
return this.type;
}
@Nullable
public String getExceptionMessage() {
return this.exceptionMessage;
}
@NotNull
public HandlerList getHandlers() {
return HANDLER_LIST;
}
@NotNull
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -2,79 +2,41 @@ package com.destroystokyo.paper.event.player;
import org.bukkit.advancement.Advancement;
import org.bukkit.advancement.AdvancementProgress;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called after a player is granted a criteria in an advancement.
* If cancelled the criteria will be revoked.
*/
@NullMarked
public class PlayerAdvancementCriterionGrantEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Advancement advancement;
private final String criterion;
private final AdvancementProgress advancementProgress;
private boolean cancelled;
@ApiStatus.Internal
public PlayerAdvancementCriterionGrantEvent(final Player player, final Advancement advancement, final String criterion) {
super(player);
this.advancement = advancement;
this.criterion = criterion;
this.advancementProgress = player.getAdvancementProgress(advancement);
}
public interface PlayerAdvancementCriterionGrantEvent extends PlayerEvent, Cancellable {
/**
* Get the advancement which has been affected.
*
* @return affected advancement
*/
public Advancement getAdvancement() {
return this.advancement;
}
Advancement getAdvancement();
/**
* Get the criterion which has been granted.
*
* @return granted criterion
*/
public String getCriterion() {
return this.criterion;
}
String getCriterion();
/**
* Gets the current AdvancementProgress.
* Gets the current {@link AdvancementProgress}.
*
* @return advancement progress
*/
public AdvancementProgress getAdvancementProgress() {
return this.advancementProgress;
}
AdvancementProgress getAdvancementProgress();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -2,13 +2,11 @@ package com.destroystokyo.paper.event.player;
import java.util.Set;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
import static org.bukkit.Material.*;
@@ -19,23 +17,8 @@ import static org.bukkit.Material.*;
* Not currently called for environmental factors though it <strong>MAY BE IN THE FUTURE</strong>
* @apiNote Use {@link io.papermc.paper.event.entity.EntityEquipmentChangedEvent} for all entity equipment changes
*/
@NullMarked
@ApiStatus.Obsolete(since = "1.21.4")
public class PlayerArmorChangeEvent extends PlayerEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final SlotType slotType;
private final ItemStack oldItem;
private final ItemStack newItem;
@ApiStatus.Internal
public PlayerArmorChangeEvent(final Player player, final SlotType slotType, final ItemStack oldItem, final ItemStack newItem) {
super(player);
this.slotType = slotType;
this.oldItem = oldItem;
this.newItem = newItem;
}
public interface PlayerArmorChangeEvent extends PlayerEvent {
/**
* Gets the type of slot being altered.
@@ -44,56 +27,41 @@ public class PlayerArmorChangeEvent extends PlayerEvent {
* @deprecated {@link SlotType} does not accurately represent what item types are valid in each slot. Use {@link #getSlot()} instead.
*/
@Deprecated(since = "1.21.4")
public SlotType getSlotType() {
return this.slotType;
}
SlotType getSlotType();
/**
* Gets the slot being altered.
*
* @return slot being altered
*/
public EquipmentSlot getSlot() {
return switch (this.slotType) {
case HEAD -> EquipmentSlot.HEAD;
case CHEST -> EquipmentSlot.CHEST;
case LEGS -> EquipmentSlot.LEGS;
case FEET -> EquipmentSlot.FEET;
};
}
EquipmentSlot getSlot();
/**
* Gets the existing item that's being replaced
*
* @return old item
*/
public ItemStack getOldItem() {
return this.oldItem;
}
ItemStack getOldItem();
/**
* Gets the new item that's replacing the old
*
* @return new item
*/
public ItemStack getNewItem() {
return this.newItem;
}
ItemStack getNewItem();
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
/**
* @deprecated {@link SlotType} does not accurately represent what item types are valid in each slot.
*/
@Deprecated(since = "1.21.4")
public enum SlotType {
enum SlotType {
HEAD(COPPER_HELMET, NETHERITE_HELMET, DIAMOND_HELMET, GOLDEN_HELMET, IRON_HELMET, CHAINMAIL_HELMET, LEATHER_HELMET, CARVED_PUMPKIN, PLAYER_HEAD, SKELETON_SKULL, ZOMBIE_HEAD, CREEPER_HEAD, WITHER_SKELETON_SKULL, TURTLE_HELMET, DRAGON_HEAD, PIGLIN_HEAD),
CHEST(COPPER_CHESTPLATE, NETHERITE_CHESTPLATE, DIAMOND_CHESTPLATE, GOLDEN_CHESTPLATE, IRON_CHESTPLATE, CHAINMAIL_CHESTPLATE, LEATHER_CHESTPLATE, ELYTRA),
LEGS(COPPER_LEGGINGS, NETHERITE_LEGGINGS, DIAMOND_LEGGINGS, GOLDEN_LEGGINGS, IRON_LEGGINGS, CHAINMAIL_LEGGINGS, LEATHER_LEGGINGS),
@@ -1,50 +1,35 @@
package com.destroystokyo.paper.event.player;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when processing a player's attack on an entity when the player's attack strength cooldown is reset
* Called when processing a player's attack on an entity when the player's attack strength cooldown is reset.
*
* @deprecated In modern Minecraft, this does not properly represent spear attacks and additionally does not
* cover the wide range of ways that the cooldown may be reset.
* <p>
* Additionally, the cancellation of event is misleading as the client will reset the cooldown manually.
* So there is no way for the server to control this.
*/
@NullMarked
public class PlayerAttackEntityCooldownResetEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Entity attackedEntity;
private final float cooledAttackStrength;
private boolean cancelled;
@ApiStatus.Internal
public PlayerAttackEntityCooldownResetEvent(final Player player, final Entity attackedEntity, final float cooledAttackStrength) {
super(player);
this.attackedEntity = attackedEntity;
this.cooledAttackStrength = cooledAttackStrength;
}
/**
* Get the value of the players cooldown attack strength when they initiated the attack
*
* @return returns the original player cooldown value
*/
public float getCooledAttackStrength() {
return this.cooledAttackStrength;
}
@Deprecated(since = "26.1", forRemoval = true)
public interface PlayerAttackEntityCooldownResetEvent extends PlayerEvent, Cancellable {
/**
* Returns the entity attacked by the player
*
* @return the entity attacked by the player
*/
public Entity getAttackedEntity() {
return this.attackedEntity;
}
Entity getAttackedEntity();
/**
* Get the value of the players cooldown attack strength when they initiated the attack
*
* @return returns the original player cooldown value
*/
float getCooledAttackStrength();
/**
* {@inheritDoc}
@@ -52,9 +37,7 @@ public class PlayerAttackEntityCooldownResetEvent extends PlayerEvent implements
* If an attack cooldown event is cancelled, the players attack strength will remain at the same value instead of being reset.
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* {@inheritDoc}
@@ -62,16 +45,12 @@ public class PlayerAttackEntityCooldownResetEvent extends PlayerEvent implements
* Cancelling this event will prevent the target player from having their cooldown reset from attacking this entity
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,128 +1,57 @@
package com.destroystokyo.paper.event.player;
import com.destroystokyo.paper.ClientOption;
import com.destroystokyo.paper.ClientOption.ChatVisibility;
import com.destroystokyo.paper.ClientOption.ParticleVisibility;
import com.destroystokyo.paper.SkinParts;
import java.util.Map;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.MainHand;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Called when the player changes their client settings
*/
@NullMarked
public class PlayerClientOptionsChangeEvent extends PlayerEvent {
public interface PlayerClientOptionsChangeEvent extends PlayerEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
String getLocale();
private final String locale;
private final int viewDistance;
private final ChatVisibility chatVisibility;
private final boolean chatColors;
private final SkinParts skinparts;
private final MainHand mainHand;
private final boolean allowsServerListings;
private final boolean textFilteringEnabled;
private final ParticleVisibility particleVisibility;
boolean hasLocaleChanged();
@ApiStatus.Internal
public PlayerClientOptionsChangeEvent(final Player player, final Map<ClientOption<?>, ?> options) {
super(player);
int getViewDistance();
this.locale = (String) options.get(ClientOption.LOCALE);
this.viewDistance = (int) options.get(ClientOption.VIEW_DISTANCE);
this.chatVisibility = (ChatVisibility) options.get(ClientOption.CHAT_VISIBILITY);
this.chatColors = (boolean) options.get(ClientOption.CHAT_COLORS_ENABLED);
this.skinparts = (SkinParts) options.get(ClientOption.SKIN_PARTS);
this.mainHand = (MainHand) options.get(ClientOption.MAIN_HAND);
this.allowsServerListings = (boolean) options.get(ClientOption.ALLOW_SERVER_LISTINGS);
this.textFilteringEnabled = (boolean) options.get(ClientOption.TEXT_FILTERING_ENABLED);
this.particleVisibility = (ParticleVisibility) options.get(ClientOption.PARTICLE_VISIBILITY);
}
boolean hasViewDistanceChanged();
public String getLocale() {
return this.locale;
}
ChatVisibility getChatVisibility();
public boolean hasLocaleChanged() {
return !this.locale.equals(this.player.getClientOption(ClientOption.LOCALE));
}
boolean hasChatVisibilityChanged();
public int getViewDistance() {
return this.viewDistance;
}
boolean hasChatColorsEnabled();
public boolean hasViewDistanceChanged() {
return this.viewDistance != this.player.getClientOption(ClientOption.VIEW_DISTANCE);
}
boolean hasChatColorsEnabledChanged();
public ChatVisibility getChatVisibility() {
return this.chatVisibility;
}
SkinParts getSkinParts();
public boolean hasChatVisibilityChanged() {
return this.chatVisibility != this.player.getClientOption(ClientOption.CHAT_VISIBILITY);
}
boolean hasSkinPartsChanged();
public boolean hasChatColorsEnabled() {
return this.chatColors;
}
MainHand getMainHand();
public boolean hasChatColorsEnabledChanged() {
return this.chatColors != this.player.getClientOption(ClientOption.CHAT_COLORS_ENABLED);
}
boolean hasMainHandChanged();
public SkinParts getSkinParts() {
return this.skinparts;
}
boolean hasTextFilteringEnabled();
public boolean hasSkinPartsChanged() {
return this.skinparts.getRaw() != this.player.getClientOption(ClientOption.SKIN_PARTS).getRaw();
}
boolean hasTextFilteringChanged();
public MainHand getMainHand() {
return this.mainHand;
}
boolean allowsServerListings();
public boolean hasMainHandChanged() {
return this.mainHand != this.player.getClientOption(ClientOption.MAIN_HAND);
}
boolean hasAllowServerListingsChanged();
public boolean hasTextFilteringEnabled() {
return this.textFilteringEnabled;
}
ParticleVisibility getParticleVisibility();
public boolean hasTextFilteringChanged() {
return this.textFilteringEnabled != this.player.getClientOption(ClientOption.TEXT_FILTERING_ENABLED);
}
boolean hasParticleVisibilityChanged();
public boolean allowsServerListings() {
return this.allowsServerListings;
}
public boolean hasAllowServerListingsChanged() {
return this.allowsServerListings != this.player.getClientOption(ClientOption.ALLOW_SERVER_LISTINGS);
}
public ParticleVisibility getParticleVisibility() {
return this.particleVisibility;
}
public boolean hasParticleVisibilityChanged() {
return this.particleVisibility != this.player.getClientOption(ClientOption.PARTICLE_VISIBILITY);
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,16 +1,14 @@
package com.destroystokyo.paper.event.player;
import io.papermc.paper.event.connection.ConnectionEvent;
import java.net.InetAddress;
import java.util.UUID;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* <p>
* This event is invoked when a player has disconnected. It is guaranteed that,
* if the server is in online-mode, that the provided uuid and username have been
* validated.
@@ -34,50 +32,27 @@ import org.jspecify.annotations.NullMarked;
* The event may be invoked asynchronously or synchronously. Plugins should check
* {@link Event#isAsynchronous()} and handle accordingly.
*/
@NullMarked
public class PlayerConnectionCloseEvent extends Event {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final UUID playerUniqueId;
private final String playerName;
private final InetAddress ipAddress;
@ApiStatus.Internal
public PlayerConnectionCloseEvent(final UUID playerUniqueId, final String playerName, final InetAddress ipAddress, final boolean async) {
super(async);
this.playerUniqueId = playerUniqueId;
this.playerName = playerName;
this.ipAddress = ipAddress;
}
public interface PlayerConnectionCloseEvent extends ConnectionEvent {
/**
* Returns the {@code UUID} of the player disconnecting.
* Returns the {@link UUID} of the player disconnecting.
*/
public UUID getPlayerUniqueId() {
return this.playerUniqueId;
}
UUID getPlayerUniqueId();
/**
* Returns the name of the player disconnecting.
*/
public String getPlayerName() {
return this.playerName;
}
String getPlayerName();
/**
* Returns the player's IP address.
*/
public InetAddress getIpAddress() {
return this.ipAddress;
}
InetAddress getIpAddress();
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,99 +1,56 @@
package com.destroystokyo.paper.event.player;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
/**
* Fired when a player boosts elytra flight with a firework
*/
@NullMarked
public class PlayerElytraBoostEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final ItemStack itemStack;
private final Firework firework;
private boolean consume = true;
private final EquipmentSlot hand;
private boolean cancelled;
@ApiStatus.Internal
public PlayerElytraBoostEvent(final Player player, final ItemStack itemStack, final Firework firework, final EquipmentSlot hand) {
super(player);
this.itemStack = itemStack;
this.firework = firework;
this.hand = hand;
}
public interface PlayerElytraBoostEvent extends PlayerEvent, Cancellable {
/**
* Get the firework itemstack used
*
* @return ItemStack of firework
*/
public ItemStack getItemStack() {
return this.itemStack;
}
ItemStack getItemStack();
/**
* Get the firework entity that was spawned
*
* @return Firework entity
*/
public Firework getFirework() {
return this.firework;
}
Firework getFirework();
/**
* Get whether to consume the firework or not
*
* @return {@code true} to consume
*/
public boolean shouldConsume() {
return this.consume;
}
boolean shouldConsume();
/**
* Set whether to consume the firework or not
*
* @param consume {@code true} to consume
*/
public void setShouldConsume(final boolean consume) {
this.consume = consume;
}
void setShouldConsume(boolean consume);
/**
* Gets the hand holding the firework used for boosting this player.
*
* @return interaction hand
*/
public EquipmentSlot getHand() {
return this.hand;
}
EquipmentSlot getHand();
@Override
public boolean isCancelled() {
return this.cancelled;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
@@ -1,15 +1,10 @@
package com.destroystokyo.paper.event.player;
import com.google.common.base.Preconditions;
import java.util.UUID;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
@@ -20,44 +15,14 @@ import org.jspecify.annotations.Nullable;
*
* <p>WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS</p>
*/
@NullMarked
public class PlayerHandshakeEvent extends Event implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final String originalHandshake;
private final String originalSocketAddressHostname;
private @Nullable String serverHostname;
private @Nullable String socketAddressHostname;
private @Nullable UUID uniqueId;
private @Nullable String propertiesJson;
private boolean failed;
private Component failMessage = Component.text("If you wish to use IP forwarding, please enable it in your BungeeCord config as well!", NamedTextColor.YELLOW);
private boolean cancelled;
@Deprecated
@ApiStatus.Internal
public PlayerHandshakeEvent(final String originalHandshake, final boolean cancelled) {
this(originalHandshake, "127.0.0.1", cancelled);
}
@ApiStatus.Internal
public PlayerHandshakeEvent(final String originalHandshake, final String originalSocketAddressHostname, final boolean cancelled) {
super(true);
this.originalHandshake = originalHandshake;
this.originalSocketAddressHostname = originalSocketAddressHostname;
this.cancelled = cancelled;
}
public interface PlayerHandshakeEvent extends Event, Cancellable {
/**
* Gets the original handshake string.
*
* @return the original handshake string
*/
public String getOriginalHandshake() {
return this.originalHandshake;
}
String getOriginalHandshake();
/**
* Gets the original socket address hostname.
@@ -67,9 +32,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @return the original socket address hostname
*/
public String getOriginalSocketAddressHostname() {
return this.originalSocketAddressHostname;
}
String getOriginalSocketAddressHostname();
/**
* Gets the server hostname string.
@@ -78,9 +41,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @return the server hostname string
*/
public @Nullable String getServerHostname() {
return this.serverHostname;
}
@Nullable String getServerHostname();
/**
* Sets the server hostname string.
@@ -89,9 +50,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @param serverHostname the server hostname string
*/
public void setServerHostname(final String serverHostname) {
this.serverHostname = serverHostname;
}
void setServerHostname(String serverHostname);
/**
* Gets the socket address hostname string.
@@ -100,9 +59,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @return the socket address hostname string
*/
public @Nullable String getSocketAddressHostname() {
return this.socketAddressHostname;
}
@Nullable String getSocketAddressHostname();
/**
* Sets the socket address hostname string.
@@ -111,27 +68,21 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @param socketAddressHostname the socket address hostname string
*/
public void setSocketAddressHostname(final String socketAddressHostname) {
this.socketAddressHostname = socketAddressHostname;
}
void setSocketAddressHostname(String socketAddressHostname);
/**
* Gets the unique id.
*
* @return the unique id
*/
public @Nullable UUID getUniqueId() {
return this.uniqueId;
}
@Nullable UUID getUniqueId();
/**
* Sets the unique id.
*
* @param uniqueId the unique id
*/
public void setUniqueId(final UUID uniqueId) {
this.uniqueId = uniqueId;
}
void setUniqueId(UUID uniqueId);
/**
* Gets the profile properties.
@@ -140,9 +91,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @return the profile properties, as JSON
*/
public @Nullable String getPropertiesJson() {
return this.propertiesJson;
}
@Nullable String getPropertiesJson();
/**
* Determines if authentication failed.
@@ -152,9 +101,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @return {@code true} if authentication failed, {@code false} otherwise
*/
public boolean isFailed() {
return this.failed;
}
boolean isFailed();
/**
* Sets if authentication failed and the client should be disconnected.
@@ -164,9 +111,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @param failed {@code true} if authentication failed, {@code false} otherwise
*/
public void setFailed(final boolean failed) {
this.failed = failed;
}
void setFailed(boolean failed);
/**
* Sets the profile properties.
@@ -175,27 +120,21 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
*
* @param propertiesJson the profile properties, as JSON
*/
public void setPropertiesJson(final String propertiesJson) {
this.propertiesJson = propertiesJson;
}
void setPropertiesJson(String propertiesJson);
/**
* Gets the message to display to the client when authentication fails.
*
* @return the message to display to the client
*/
public Component failMessage() {
return this.failMessage;
}
Component failMessage();
/**
* Sets the message to display to the client when authentication fails.
*
* @param failMessage the message to display to the client
*/
public void failMessage(final Component failMessage) {
this.failMessage = failMessage;
}
void failMessage(Component failMessage);
/**
* Gets the message to display to the client when authentication fails.
@@ -204,9 +143,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
* @deprecated use {@link #failMessage()}
*/
@Deprecated
public String getFailMessage() {
return LegacyComponentSerializer.legacySection().serialize(this.failMessage());
}
String getFailMessage();
/**
* Sets the message to display to the client when authentication fails.
@@ -215,10 +152,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
* @deprecated use {@link #failMessage(Component)}
*/
@Deprecated
public void setFailMessage(final String failMessage) {
Preconditions.checkArgument(failMessage != null && !failMessage.isEmpty(), "fail message cannot be null or empty");
this.failMessage(LegacyComponentSerializer.legacySection().deserialize(failMessage));
}
void setFailMessage(String failMessage);
/**
* {@inheritDoc}
@@ -227,9 +161,7 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
* be processed.
*/
@Override
public boolean isCancelled() {
return this.cancelled;
}
boolean isCancelled();
/**
* {@inheritDoc}
@@ -238,16 +170,12 @@ public class PlayerHandshakeEvent extends Event implements Cancellable {
* be processed.
*/
@Override
public void setCancelled(final boolean cancel) {
this.cancelled = cancel;
}
void setCancelled(boolean cancel);
@Override
public HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
static HandlerList getHandlerList() {
final class Holder {
private static final HandlerList HANDLER_LIST = new HandlerList();
}
return Holder.HANDLER_LIST;
}
}
Loaded 100 of 2229 files, more files were not shown because too many files have changed in this diff. Show more