1
0
mirror of https://github.com/PaperMC/Paper.git synced 2025-07-25 17:22:02 -07:00
Files
.github
Paper-MojangAPI
build-data
gradle
licenses
paper-api-generator
patches
api
API-for-an-entity-s-scoreboard-name.patch
API-for-checking-sent-chunks.patch
API-for-creating-command-sender-which-forwards-feedb.patch
API-for-updating-recipes-on-clients.patch
API-to-get-a-BlockState-without-a-snapshot.patch
Ability-to-apply-mending-to-XP-API.patch
Ability-to-get-Tile-Entities-from-a-chunk-without-sn.patch
Add-API-for-item-entity-health.patch
Add-API-for-quit-reason.patch
Add-API-for-resetting-a-single-score.patch
Add-API-methods-to-control-if-armour-stands-can-move.patch
Add-API-to-get-Material-from-Boats-and-Minecarts.patch
Add-API-to-get-exact-interaction-point-in-PlayerInte.patch
Add-API-to-get-the-collision-shape-of-a-block-before.patch
Add-APIs-to-replace-OfflinePlayer-getLastPlayed.patch
Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch
Add-ArmorStand-Item-Meta.patch
Add-Ban-Methods-to-Player-Objects.patch
Add-BaseComponent-sendMessage-methods-to-CommandSend.patch
Add-BeaconEffectEvent.patch
Add-BellRevealRaiderEvent.patch
Add-BellRingEvent.patch
Add-Block-isValidTool.patch
Add-BlockBreakBlockEvent.patch
Add-BlockBreakProgressUpdateEvent.patch
Add-BlockFailedDispenseEvent.patch
Add-BlockLockCheckEvent.patch
Add-BlockPreDispenseEvent.patch
Add-BlockSoundGroup-interface.patch
Add-BlockStateMeta-clearBlockState.patch
Add-CartographyItemEvent.patch
Add-CompostItemEvent-and-EntityCompostItemEvent.patch
Add-Destroy-Speed-API.patch
Add-ElderGuardianAppearanceEvent.patch
Add-Entity-Body-Yaw-API.patch
Add-EntityBlockStorage-clearEntities.patch
Add-EntityDyeEvent-and-CollarColorable-interface.patch
Add-EntityFertilizeEggEvent.patch
Add-EntityInsideBlockEvent.patch
Add-EntityKnockbackByEntityEvent-and-EntityPushedByE.patch
Add-EntityLoadCrossbowEvent.patch
Add-EntityPortalReadyEvent.patch
Add-EntityTeleportEndGatewayEvent.patch
Add-EntityZapEvent.patch
Add-EquipmentSlot-convenience-methods.patch
Add-FastUtil-to-Bukkit.patch
Add-FluidState-API.patch
Add-GS4-Query-event.patch
Add-GameEvent-tags.patch
Add-Git-information-to-version-command-on-startup.patch
Add-Heightmap-API.patch
Add-HiddenPotionEffect-API.patch
Add-ItemStack-Recipe-API-helper-methods.patch
Add-ItemStackRecipeChoice-Draft-API.patch
Add-Lifecycle-Event-system.patch
Add-Listing-API-for-Player.patch
Add-LivingEntity-clearActiveItem.patch
Add-LivingEntity-getTargetEntity.patch
Add-LivingEntity-swingHand-EquipmentSlot-convenience.patch
Add-Material-Tags.patch
Add-MetadataStoreBase.removeAll-Plugin.patch
Add-Mob-Experience-reward-API.patch
Add-Mob-Goal-API.patch
Add-Mob-lookAt-API.patch
Add-More-Creeper-API.patch
Add-Moving-Piston-API.patch
Add-NamespacedKey-biome-methods.patch
Add-OBSTRUCTED-reason-to-BedEnterResult.patch
Add-OfflinePlayer-isConnected.patch
Add-PaperRegistry.patch
Add-PhantomPreSpawnEvent.patch
Add-Player-Client-Options-API.patch
Add-Player-Warden-Warning-API.patch
Add-Player-getFishHook.patch
Add-PlayerAdvancementCriterionGrantEvent.patch
Add-PlayerArmorChangeEvent.patch
Add-PlayerAttackEntityCooldownResetEvent.patch
Add-PlayerConnectionCloseEvent.patch
Add-PlayerFailMoveEvent.patch
Add-PlayerFlowerPotManipulateEvent.patch
Add-PlayerInitialSpawnEvent.patch
Add-PlayerInventorySlotChangeEvent.patch
Add-PlayerItemCooldownEvent.patch
Add-PlayerItemFrameChangeEvent.patch
Add-PlayerJumpEvent.patch
Add-PlayerKickEvent-causes.patch
Add-PlayerLocaleChangeEvent.patch
Add-PlayerPickItemEvent.patch
Add-PlayerPostRespawnEvent.patch
Add-PlayerSetSpawnEvent.patch
Add-PlayerShearBlockEvent.patch
Add-PlayerShieldDisableEvent.patch
Add-PlayerSignCommandPreprocessEvent.patch
Add-PlayerStopUsingItemEvent.patch
Add-PlayerUseUnknownEntityEvent.patch
Add-Position.patch
Add-PrePlayerAttackEntityEvent.patch
Add-PrepareResultEvent-PrepareGrindstoneEvent.patch
Add-ProjectileCollideEvent.patch
Add-PufferFishStateChangeEvent.patch
Add-Raw-Byte-Entity-Serialization.patch
Add-Raw-Byte-ItemStack-Serialization.patch
Add-Shearable-API.patch
Add-ShulkerDuplicateEvent.patch
Add-Sign-getInteractableSideFor.patch
Add-Sneaking-API-for-Entities.patch
Add-String-based-Action-Bar-API.patch
Add-Structure-check-API.patch
Add-StructuresLocateEvent.patch
Add-TNTPrimeEvent.patch
Add-TameableDeathMessageEvent.patch
Add-TargetHitEvent-API.patch
Add-ThrownEggHatchEvent.patch
Add-Tick-TemporalUnit.patch
Add-UUID-attribute-modifier-API.patch
Add-UnknownCommandEvent.patch
Add-WardenAngerChangeEvent.patch
Add-WaterBottleSplashEvent.patch
Add-WhitelistToggleEvent.patch
Add-World.getEntity-UUID-API.patch
Add-a-call-helper-to-Event.patch
Add-a-consumer-parameter-to-ProjectileSource-launchP.patch
Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
Add-additional-open-container-api-to-HumanEntity.patch
Add-an-API-for-CanPlaceOn-and-CanDestroy-NBT-values.patch
Add-and-implement-PlayerRecipeBookClickEvent.patch
Add-api-for-spawn-egg-texture-colors.patch
Add-basic-Datapack-API.patch
Add-cause-to-Weather-ThunderChangeEvents.patch
Add-command-line-option-to-load-extra-plugin-jars-no.patch
Add-command-to-reload-permissions.yml-and-require-co.patch
Add-configuration-option-to-prevent-player-names-fro.patch
Add-critical-damage-API.patch
Add-dropLeash-variable-to-EntityUnleashEvent.patch
Add-drops-to-shear-events.patch
Add-enchantWithLevels-API.patch
Add-entity-knockback-API.patch
Add-entity-liquid-API.patch
Add-event-for-player-editing-sign.patch
Add-exception-reporting-event.patch
Add-experience-points-API.patch
Add-exploded-block-state-to-BlockExplodeEvent-and-En.patch
Add-extended-PaperServerListPingEvent.patch
Add-getChunkSnapshot-includeLightData-parameter.patch
Add-getComputedBiome-API.patch
Add-getDrops-to-BlockState.patch
Add-getI18NDisplayName-API.patch
Add-getMainThreadExecutor-to-BukkitScheduler.patch
Add-getNearbyXXX-methods-to-Location.patch
Add-getOfflinePlayerIfCached-String.patch
Add-getTPS-method.patch
Add-hand-to-fish-event-for-all-player-interactions.patch
Add-handshake-event-to-allow-plugins-to-handle-clien.patch
Add-helpers-for-left-right-click-to-Action.patch
Add-ignore-discounts-API.patch
Add-isCollidable-methods-to-various-places.patch
Add-item-slot-convenience-methods.patch
Add-legacy-ping-support-to-PaperServerListPingEvent.patch
Add-method-isTickingWorlds-to-Bukkit.patch
Add-method-to-remove-all-active-potion-effects.patch
Add-methods-for-working-with-arrows-stuck-in-living-.patch
Add-methods-to-find-targets-for-lightning-strikes.patch
Add-methods-to-get-translation-keys.patch
Add-missing-Fluid-type.patch
Add-missing-InventoryType.patch
Add-missing-block-data-mins-and-maxes.patch
Add-missing-effects.patch
Add-missing-team-sidebar-display-slots.patch
Add-moon-phase-API.patch
Add-more-Campfire-API.patch
Add-more-Evoker-API.patch
Add-more-LimitedRegion-API.patch
Add-more-WanderingTrader-API.patch
Add-more-Witch-API.patch
Add-more-Zombie-API.patch
Add-more-advancement-API.patch
Add-more-fields-to-AsyncPreLoginEvent.patch
Add-more-line-of-sight-methods.patch
Add-more-scoreboard-API.patch
Add-openSign-method-to-HumanEntity.patch
Add-paper-dumplisteners-command.patch
Add-playPickupItemAnimation-to-LivingEntity.patch
Add-player-idle-duration-API.patch
Add-pre-unbreaking-amount-to-PlayerItemDamageEvent.patch
Add-predicate-for-blocks-when-raytracing.patch
Add-ray-tracing-methods-to-LivingEntity.patch
Add-recipe-to-cook-events.patch
Add-sendOpLevel-API.patch
Add-sender-name-to-commands.yml-replacement.patch
Add-setPlayerProfile-API-for-Skulls.patch
Add-source-block-constructor-and-getChangedBlockData.patch
Add-source-to-PlayerExpChangeEvent.patch
Add-spectator-target-events.patch
Add-sun-related-API.patch
Add-tick-times-API.patch
Add-titleOverride-to-InventoryOpenEvent.patch
Add-transient-modifier-API.patch
Add-view-distance-API.patch
Add-villager-reputation-API.patch
Add-whitelist-events.patch
Add-workaround-for-plugins-modifying-the-parent-of-t.patch
Add-worldborder-events.patch
Added-EntityDamageItemEvent.patch
Added-EntityToggleSitEvent.patch
Added-PlayerBedFailEnterEvent.patch
Added-PlayerChangeBeaconEffectEvent.patch
Added-PlayerDeepSleepEvent.patch
Added-PlayerLecternPageChangeEvent.patch
Added-PlayerLoomPatternSelectEvent.patch
Added-PlayerStonecutterRecipeSelectEvent.patch
Added-PlayerTradeEvent.patch
Added-ServerResourcesReloadedEvent.patch
Added-WorldGameRuleChangeEvent.patch
Added-byte-array-serialization-deserialization-for-P.patch
Additional-Block-Material-API-s.patch
Additional-world.getNearbyEntities-API-s.patch
Adds-PlayerArmSwingEvent.patch
Adventure.patch
Allow-Blocks-to-be-accessed-via-a-long-key.patch
Allow-Reloading-of-Command-Aliases.patch
Allow-adding-items-to-BlockDropItemEvent.patch
Allow-changing-bed-s-occupied-property.patch
Allow-delegation-to-vanilla-chunk-gen.patch
Allow-disabling-armour-stand-ticking.patch
Allow-plugins-to-use-SLF4J-for-logging.patch
Allow-proper-checking-of-empty-item-stacks.patch
Allow-setting-the-vex-s-summoner.patch
Allow-to-change-the-podium-of-the-EnderDragon.patch
Allow-trident-custom-damage.patch
Also-load-resources-from-LibraryLoader.patch
Amend-PlayerInteractAtEntityEvent-javadoc-for-ArmorS.patch
AnvilDamageEvent.patch
Arrow-pickup-rule-API.patch
Async-Chunks-API.patch
AsyncTabCompleteEvent.patch
Attributes-API-for-item-defaults.patch
Basic-PlayerProfile-API.patch
Beacon-API-custom-effect-ranges.patch
Block-Ticking-API.patch
BlockDestroyEvent.patch
Brand-support.patch
Bucketable-API.patch
Build-system-changes.patch
Cache-the-result-of-Material-isBlock.patch
Change-EnderEye-target-without-changing-other-things.patch
Change-the-reserved-channel-check-to-be-sensible.patch
Clone-mutables-to-prevent-unexpected-issues.patch
Code-Generation.patch
Collision-API.patch
Complete-resource-pack-API.patch
Conduit-API.patch
Configurable-sculk-sensor-listener-range.patch
Convert-project-to-Gradle.patch
Create-HoverEvent-from-ItemStack-Entity.patch
Custom-Chat-Completion-Suggestions-API.patch
Custom-Potion-Mixes.patch
Custom-replacement-for-eaten-items.patch
Deprecate-ItemStack-setType.patch
Deprecate-and-replace-methods-with-old-StructureType.patch
Display-warning-on-deprecated-recipe-API.patch
Dolphin-API.patch
Don-t-use-snapshots-for-Timings-Tile-Entity-reports.patch
Elder-Guardian-appearance-API.patch
EnderDragon-Events.patch
Enderman.teleportRandomly.patch
EndermanAttackPlayerEvent.patch
EndermanEscapeEvent.patch
Entity-AddTo-RemoveFrom-World-Events.patch
Entity-Jump-API.patch
Entity-Origin-API.patch
Entity-fromMobSpawner.patch
Entity-getChunk-API.patch
Entity-getEntitySpawnReason.patch
Entity-isTicking.patch
Entity-powdered-snow-API.patch
EntityMoveEvent.patch
EntityPathfindEvent.patch
EntityRegainHealthEvent-isFastRegen-API.patch
EntityShootBowEvent-consumeArrow-and-getArrowItem-AP.patch
EntityTransformedEvent.patch
Expand-ArmorStand-API.patch
Expand-Explosions-API.patch
Expand-FallingBlock-API.patch
Expand-LingeringPotion-API.patch
Expand-Location-Manipulation-API.patch
Expand-PlayerItemMendEvent.patch
Expand-Pose-API.patch
Expand-World.spawnParticle-API-and-add-Builder.patch
Expand-world-key-API.patch
Expanded-Hopper-API.patch
ExperienceOrbMergeEvent.patch
ExperienceOrbs-API-for-Reason-Source-Triggering-play.patch
Expose-LivingEntity-hurt-direction.patch
Expose-LootTable-of-DecoratedPot.patch
Expose-MinecraftServer-isRunning.patch
Expose-Tracked-Players.patch
Expose-WorldBorder-isInBounds-Location-check.patch
Expose-attack-cooldown-methods-for-Player.patch
Expose-clicked-BlockFace-during-BlockDamageEvent.patch
Expose-client-protocol-version-and-virtual-host.patch
Expose-codepoint-limit-in-YamlConfigOptions-and-incr.patch
Expose-furnace-minecart-push-values.patch
Expose-game-version.patch
Expose-hand-during-BlockCanBuildEvent.patch
Expose-isFuel-and-canSmelt-methods-to-FurnaceInvento.patch
Expose-protocol-version.patch
Expose-server-CommandMap.patch
Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch
Expose-the-internal-current-tick.patch
Expose-vanilla-BiomeProvider-from-WorldInfo.patch
Extend-VehicleCollisionEvent-move-HandlerList-up.patch
Fill-Profile-Property-Events.patch
Fireworks-API-s.patch
Fix-BanList-API.patch
Fix-DamageSource-API.patch
Fix-HandlerList-for-InventoryBlockStartEvent-subclas.patch
Fix-NPE-on-Boat-getStatus.patch
Fix-NotePlayEvent.patch
Fix-PlayerSwapHandItemsEvent-throwing-exception-when.patch
Fix-Potion-toItemStack-swapping-the-extended-and-upg.patch
Fix-ServerListPingEvent-flagging-as-Async.patch
Fix-SpawnEggMeta-get-setSpawnedType.patch
Fix-Spigot-annotation-mistakes.patch
Fix-custom-statistic-criteria-creation.patch
Fix-incorrect-new-blockstate-in-EntityBreakDoorEvent.patch
Fix-issues-with-mob-conversion.patch
Fix-upstream-javadocs.patch
Flying-Fall-Damage-API.patch
Folia-scheduler-and-owned-region-API.patch
Freeze-Tick-Lock-API.patch
Friction-API.patch
Furnace-RecipesUsed-API.patch
Get-entity-default-attributes.patch
Goat-ram-API.patch
Graduate-bungeecord-chat-API-from-spigot-subclasses.patch
Handle-plugin-prefixes-in-implementation-logging-con.patch
IllegalPacketEvent.patch
Implement-furnace-cook-speed-multiplier-API.patch
Implement-regenerateChunk.patch
Improve-Block-breakNaturally-API.patch
Improve-PortalEvents.patch
Improve-Registry.patch
Improve-death-events.patch
Improve-scoreboard-entries.patch
Improve-the-Saddle-API-for-Horses.patch
Introduce-beacon-activation-deactivation-events.patch
Inventory-close.patch
Inventory-getHolder-method-without-block-snapshot.patch
Inventory-removeItemAnySlot.patch
InventoryCloseEvent-Reason-API.patch
Item-Mutation-Fixes.patch
Item-Rarity-API.patch
Item-canEntityPickup.patch
Item-no-age-no-player-pickup.patch
ItemStack-API-additions-for-quantity-flags-lore.patch
ItemStack-Tooltip-API.patch
ItemStack-damage-API.patch
ItemStack-editMeta.patch
ItemStack-getMaxItemUseDuration.patch
ItemStack-repair-check-API.patch
Left-handed-API.patch
Limit-setBurnTime-to-valid-short-values.patch
LivingEntity-Active-Item-API.patch
LivingEntity-setKiller.patch
Location.isChunkLoaded-API.patch
Location.toBlockLocation-toCenterLocation.patch
LootTable-API.patch
Make-EntityUnleashEvent-cancellable.patch
Make-shield-blocking-delay-configurable.patch
Make-the-default-permission-message-configurable.patch
Material-API-additions.patch
MerchantRecipe-add-copy-constructor.patch
Misc-Utils.patch
Missing-Entity-API.patch
Mob-Pathfinding-API.patch
Mob-Spawner-API-Enhancements.patch
More-CommandBlock-API.patch
More-DragonBattle-API.patch
More-Enchantment-API.patch
More-Lidded-Block-API.patch
More-PotionEffectType-API.patch
More-Projectile-API.patch
More-Raid-API.patch
More-Teleport-API.patch
More-World-API.patch
More-lightning-API.patch
More-vanilla-friendly-methods-to-update-trades.patch
Multi-Block-Change-API.patch
Multiple-Entries-with-Scoreboards.patch
Nameable-Banner-API.patch
Optimize-Hoppers.patch
Option-to-prevent-NBT-copy-in-smithing-recipes.patch
Paper-Plugins.patch
Paper-Utils.patch
Performance-Concurrency-Improvements-to-Permissions.patch
Player-Chunk-Load-Unload-Events.patch
Player-Entity-Tracking-Events.patch
Player-Tab-List-and-Title-APIs.patch
Player-affects-spawning-API.patch
Player-elytra-boost-API.patch
Player.setPlayerProfile-API.patch
PlayerAttemptPickupItemEvent.patch
PlayerDeathEvent-getItemsToKeep.patch
PlayerDeathEvent-shouldDropExperience.patch
PlayerElytraBoostEvent.patch
PlayerLaunchProjectileEvent.patch
PlayerMoveEvent-Improvements.patch
PlayerNaturallySpawnCreaturesEvent.patch
PlayerPickupExperienceEvent.patch
PlayerPickupItemEvent-setFlyAtPlayer.patch
PlayerReadyArrowEvent.patch
PlayerTeleportEndGatewayEvent.patch
Potential-bed-API.patch
PotionEffect-clone-methods.patch
PreCreatureSpawnEvent.patch
PreSpawnerSpawnEvent.patch
Profile-Lookup-Events.patch
ProfileWhitelistVerifyEvent.patch
Properly-remove-the-experimental-smithing-inventory-.patch
Provide-Chunk-Coordinates-as-a-Long-API.patch
Provide-E-TE-Chunk-count-stat-methods.patch
RangedEntity-API.patch
Reduce-thread-synchronization-in-MetadataStoreBase.patch
Remove-unnecessary-durability-check-in-ItemStack-isS.patch
Replace-ItemFlag.HIDE_POTION_EFFECTS.patch
Return-null-for-empty-String-in-NamespacedKey.fromSt.patch
Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch
SculkCatalyst-bloom-API.patch
Server-Tick-Events.patch
Set-true-custom-payload-channel-size-limit.patch
Shoulder-Entities-Release-API.patch
SkeletonHorse-Additions.patch
Slime-Pathfinder-Events.patch
Spawn-Reason-API.patch
Stinger-API.patch
Support-cancellation-supression-of-EntityDismount-Ve.patch
Support-components-in-ItemMeta.patch
Suspicious-Effect-Entry-API.patch
System-prop-for-default-config-comment-parsing.patch
Tameable-getOwnerUniqueId-API.patch
Test-changes.patch
Timings-v2.patch
Turtle-API.patch
Use-ASM-for-event-executors.patch
Version-Command-2.0.patch
Villager-Restocks-API.patch
Villager-resetOffers.patch
Warn-on-strange-EventHandler-return-types.patch
Win-Screen-API.patch
WitchConsumePotionEvent.patch
WitchReadyPotionEvent.patch
WitchThrowPotionEvent.patch
WorldCreator-keepSpawnLoaded.patch
Zombie-API-breaking-doors.patch
add-DragonEggFormEvent.patch
add-RespawnFlags-to-PlayerRespawnEvent.patch
add-back-EntityPortalExitEvent.patch
add-consumeFuel-to-FurnaceBurnEvent.patch
add-get-set-drop-chance-to-EntityEquipment.patch
add-hand-to-BlockMultiPlaceEvent.patch
add-isDeeplySleeping-to-HumanEntity.patch
add-missing-Experimental-annotations.patch
add-number-format-api.patch
added-2-new-TargetReasons-for-1.16-mob-behavior.patch
added-PlayerNameEntityEvent.patch
additions-to-PlayerGameModeChangeEvent.patch
ensureServerConversions-API.patch
fix-Instruments.patch
fix-empty-array-elements-in-command-arguments.patch
getPlayerUniqueId-API.patch
improve-BanList-types.patch
isChunkGenerated-API.patch
living-entity-allow-attribute-registration.patch
server
scripts
test-plugin
work
.editorconfig
.gitattributes
.gitignore
.gitmodules
CONTRIBUTING.md
LICENSE.md
README.md
build.gradle.kts
gradle.properties
gradlew
gradlew.bat
settings.gradle.kts
paper-mc/patches/api/add-number-format-api.patch
David Mayr 2d6b2baf34 Scoreboard objective number format api ()
* feat: number format api

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: make each individual score customizable

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* docs: fix incorrect descriptions

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: use access transformers

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: use adventure codecs

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* test: test for matching styles

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: convert number formats to interfaces

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: add style conversion to adventure patch

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: use paper adventure method in PaperScoreboardFormat

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* chore: rename methods to avoid a method in records

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* fix: check if objective is still registered

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: improve style conversion

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: modify how the getter behaves in score

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: use fluent naming

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* docs: add spaces before the paper comments

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* chore: styling changes

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* chore: make constant final

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* feat: add methods for styled format instead of constants

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* fix: remove incorrect getTrackedPlayers check

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* docs: add . at the end of sentences

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* docs: explain null behaviour

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* docs: mention score creation

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>

* rebase and fix javadoc comments

* remove server implementation defaults

* fix format for PaperScoreboardFormat

---------

Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
2024-02-17 21:22:00 +01:00

230 lines
8.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: David Mayr <davidliebtkekse@gmail.com>
Date: Sat, 16 Dec 2023 10:40:29 +0100
Subject: [PATCH] add number format api
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
diff --git a/src/main/java/io/papermc/paper/scoreboard/numbers/BlankFormatImpl.java b/src/main/java/io/papermc/paper/scoreboard/numbers/BlankFormatImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/scoreboard/numbers/BlankFormatImpl.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.scoreboard.numbers;
+
+record BlankFormatImpl() implements NumberFormat {
+ public static final BlankFormatImpl INSTANCE = new BlankFormatImpl();
+}
diff --git a/src/main/java/io/papermc/paper/scoreboard/numbers/FixedFormat.java b/src/main/java/io/papermc/paper/scoreboard/numbers/FixedFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/scoreboard/numbers/FixedFormat.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.scoreboard.numbers;
+
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.ComponentLike;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * A scoreboard number format that replaces the score number with a chat component.
+ */
+public interface FixedFormat extends NumberFormat, ComponentLike {
+
+ /**
+ * The component shown instead of the number for a score
+ *
+ * @return the chat component
+ */
+ @NotNull Component component();
+
+}
diff --git a/src/main/java/io/papermc/paper/scoreboard/numbers/FixedFormatImpl.java b/src/main/java/io/papermc/paper/scoreboard/numbers/FixedFormatImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/scoreboard/numbers/FixedFormatImpl.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.scoreboard.numbers;
+
+import net.kyori.adventure.text.Component;
+import org.jetbrains.annotations.NotNull;
+
+record FixedFormatImpl(@NotNull Component component) implements FixedFormat {
+
+ @Override
+ public @NotNull Component asComponent() {
+ return this.component();
+ }
+}
diff --git a/src/main/java/io/papermc/paper/scoreboard/numbers/NumberFormat.java b/src/main/java/io/papermc/paper/scoreboard/numbers/NumberFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/scoreboard/numbers/NumberFormat.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.scoreboard.numbers;
+
+import net.kyori.adventure.text.ComponentLike;
+import net.kyori.adventure.text.format.Style;
+import net.kyori.adventure.text.format.StyleBuilderApplicable;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Describes a scoreboard number format that applies custom formatting to scoreboard scores.
+ */
+public interface NumberFormat {
+
+ /**
+ * Creates a blank scoreboard number format that removes the score number entirely.
+ *
+ * @return a blank number format
+ */
+ static @NotNull NumberFormat blank() {
+ return BlankFormatImpl.INSTANCE;
+ }
+
+ /**
+ * Gets an un-styled number format.
+ *
+ * @return an un-styled number format
+ */
+ static @NotNull StyledFormat noStyle() {
+ return StyledFormatImpl.NO_STYLE;
+ }
+
+ /**
+ * Creates a scoreboard number format that applies a custom formatting to the score number.
+ *
+ * @param style the style to apply on the number
+ * @return a styled number format
+ */
+ static @NotNull StyledFormat styled(final @NotNull Style style) {
+ return new StyledFormatImpl(style);
+ }
+
+ /**
+ * Creates a scoreboard number format that applies a custom formatting to the score number.
+ *
+ * @param styleBuilderApplicables the style to apply on the number
+ * @return a styled number format
+ */
+ static @NotNull StyledFormat styled(final @NotNull StyleBuilderApplicable @NotNull... styleBuilderApplicables) {
+ return styled(Style.style(styleBuilderApplicables));
+ }
+
+ /**
+ * Creates a scoreboard number format that replaces the score number with a chat component.
+ *
+ * @param component the component to replace the number with
+ * @return a fixed number format
+ */
+ static @NotNull FixedFormat fixed(final @NotNull ComponentLike component) {
+ return new FixedFormatImpl(component.asComponent());
+ }
+}
diff --git a/src/main/java/io/papermc/paper/scoreboard/numbers/StyledFormat.java b/src/main/java/io/papermc/paper/scoreboard/numbers/StyledFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/scoreboard/numbers/StyledFormat.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.scoreboard.numbers;
+
+import net.kyori.adventure.text.format.Style;
+import net.kyori.adventure.text.format.StyleBuilderApplicable;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * A scoreboard number format that applies a custom formatting to the score number.
+ */
+public interface StyledFormat extends NumberFormat, StyleBuilderApplicable {
+
+ /**
+ * The style that is being applied to the number in the score
+ *
+ * @return the style to apply
+ */
+ @NotNull Style style();
+
+}
diff --git a/src/main/java/io/papermc/paper/scoreboard/numbers/StyledFormatImpl.java b/src/main/java/io/papermc/paper/scoreboard/numbers/StyledFormatImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
--- /dev/null
+++ b/src/main/java/io/papermc/paper/scoreboard/numbers/StyledFormatImpl.java
@@ -0,0 +0,0 @@
+package io.papermc.paper.scoreboard.numbers;
+
+import net.kyori.adventure.text.format.Style;
+import org.jetbrains.annotations.NotNull;
+
+record StyledFormatImpl(@NotNull Style style) implements StyledFormat {
+ static final StyledFormat NO_STYLE = new StyledFormatImpl(Style.empty());
+
+ @Override
+ public void styleApply(final Style.@NotNull Builder style) {
+ style.merge(this.style);
+ }
+}
diff --git a/src/main/java/org/bukkit/scoreboard/Objective.java b/src/main/java/org/bukkit/scoreboard/Objective.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/scoreboard/Objective.java
+++ b/src/main/java/org/bukkit/scoreboard/Objective.java
@@ -0,0 +0,0 @@ public interface Objective {
*/
void setAutoUpdateDisplay(boolean autoUpdateDisplay);
// Paper end - add more score API
+
+ // Paper start - number format api
+ /**
+ * Gets the number format for this objective's scores or null if the client default is used.
+ *
+ * @return this objective's number format, or null if the client default is used
+ * @throws IllegalStateException if this objective has been unregistered
+ */
+ @Nullable io.papermc.paper.scoreboard.numbers.NumberFormat numberFormat();
+
+ /**
+ * Sets the number format for this objective's scores.
+ *
+ * @param format the number format to set, pass null to reset format to default
+ * @throws IllegalStateException if this objective has been unregistered
+ */
+ void numberFormat(@Nullable io.papermc.paper.scoreboard.numbers.NumberFormat format);
+ // Paper end - number format api
}
diff --git a/src/main/java/org/bukkit/scoreboard/Score.java b/src/main/java/org/bukkit/scoreboard/Score.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/scoreboard/Score.java
+++ b/src/main/java/org/bukkit/scoreboard/Score.java
@@ -0,0 +0,0 @@ public interface Score {
*/
void customName(net.kyori.adventure.text.@Nullable Component customName);
// Paper end - add more score API
+
+ // Paper start - number format api
+ /**
+ * Gets the number format for this score or null if the score has not been set yet
+ * or the objective's default is being used.
+ *
+ * @return this score's number format, or null if the objective's default is used or the score doesn't exist
+ * @throws IllegalStateException if the associated objective has been
+ * unregistered
+ */
+ @Nullable io.papermc.paper.scoreboard.numbers.NumberFormat numberFormat();
+
+ /**
+ * Sets the number format for this score. If this score has not been set yet {@link #isScoreSet()}, it will be created
+ *
+ * @param format the number format to set, pass null to reset format to default
+ * @throws IllegalStateException if the associated objective has been
+ * unregistered
+ */
+ void numberFormat(@Nullable io.papermc.paper.scoreboard.numbers.NumberFormat format);
+ // Paper end - number format api
+
}