#dev-announcements

70 messages ยท Page 1 of 1 (latest)

prisma sorrel
#

๐Ÿงท Paper Plugin Update
A significant change has been released to Paper plugins only as a result of isolated classloaders.

Paper plugin dependencies no longer affect load order. This means that you can have plugins share classloaders without having to deal with cyclic loading issues (https://docs.papermc.io/paper/reference/paper-plugins#cyclic-plugin-loading)

This adds two new sections that allow you to specify plugins that are loaded before/after your plugin.

load-before:
  - name: PluginName
    bootstrap: false
load-after:
  - name: PluginName
    bootstrap: false

This means that if you previously had dependencies set, you will need to add them to the load-after section to preserve the old behavior.
For more information, see https://docs.papermc.io/paper/dev/getting-started/paper-plugins#load-order-declaration.

fleet yarrow
#

meowbox Hello <@&1077384171258908743>,

We are changing important repository URLs to https://repo.papermc.io/repository/maven-public/. Please replace all references to the following repositorie URLs in your projects:

dot_red https://papermc.io/repo/repository/maven-public/
dot_red https://nexus.velocitypowered.com/repository/maven-public/
dot_red https://repo.velocitypowered.com/snapshots/

Replace them with https://repo.papermc.io/repository/maven-public/ - the other repository endpoints are deprecated and will be taken offline in the future.

prisma sorrel
#

Enhanced Teleport API Improvements
The teleport API no longer uses boolean flags, and instead uses TeleportFlags. This makes it much more obvious what is happening in source code, and generally allows us to expand and add more flags in the future more easier. This is a breaking change, as this api has been marked as Experimental.

Introduced a new RETAIN_OPEN_INVENTORY flag, which allows you to teleport a player even with an inventory open. Which you were previously not able to do.

Player Teleportation
Teleport a player relatively, preventing velocity from being reset in the X, Y, and Z axis. This also allows passengers to be retained on teleportation with the RETAIN_PASSENGERS flag.

player.teleport(location,
            TeleportFlag.EntityState.RETAIN_PASSENGERS,
            TeleportFlag.Relative.X,
            TeleportFlag.Relative.Y,
            TeleportFlag.Relative.Z
        );

Vehicle Teleportation
Teleport an entity with the RETAIN_PASSENGERS flag, allowing its passengers to be transfered with the entity.

entity.teleport(location, TeleportFlag.EntityState.RETAIN_PASSENGERS);
tall quiver
#

paper Paper 1.19.4 API and dev bundles are now published to the Paper repository, version 1.19.4-R0.1-SNAPSHOT. This means developers can start updating their plugins for internal changes and new APIs now (if they want) before the first test builds of Paper are published.

๐Ÿ› ๏ธ To test your plugins (until a test build of Paper is published) you can either compile the dev/1.19.4 branch yourself or use the runMojangMappedServer Gradle task if you are using paperweight-userdev and run-paper.

tall quiver
#

paperweight 1.5.4 has been released, and brings some exciting changes for those using paperweight-userdev.

Convenience functions for Folia's dev bundle

dependencies {
  paperweight.foliaDevBundle("1.19.4-R0.1-SNAPSHOT")
}

Experimental option for shared userdev caches
Allows saving on disk space and setup time by sharing caches not only between multiple projects in the same build, but between any build on the system using the same version of paperweight-userdev and the same dev bundle.

See the PR description at https://github.com/PaperMC/paperweight/pull/187 for more details, including how to enable the option.

Please try enabling it on your development machines, and report any problems that don't occur with shared caches disabled. The goal is to stabilize and eventually make shared caches the default, but we need testing first.

See https://github.com/PaperMC/paperweight/releases/tag/v1.5.4 for the full changelog

verbal sapphire
#

As Hangar, our own plugin repository, is now available, we have begun more aggressively deprecating newly added Spigot API that duplicates API we have already had for a long time. A rare exception to this is our TNTPrimeEvent, which has been deprecated in favor of the more powerful upstream event.

In general, we strongly discourage using recently added and instantly deprecated upstream API and do not guarantee its existence forever, especially given how incredibly small the percentage of users running Spigot (vs. Paper and its forks) is nowadays. whale
<@&1077384171258908743>

weary nova
#

There is a breaking change to the Experimental Paper Plugins API.

The type of the parameter in PluginBootstrap#bootstrap has changed from PluginProviderContext to BootstrapContext. This is to facilitate further additions to the bootstrap API (namely the Registry Modification API) which won't apply to other places PluginProviderContext may be used.

prisma sorrel
#

Dependency Format Update

Dependency declaration has been update for paper plugins to better represent the different lifecycles in Paper plugins.
Note, the previous format is scheduled for removal in 1.21.

Most noteably with this new format is that specifying load order is now relative to the dependency rather than the plugin as a whole.
So for example, marking a dependency with load: BEFORE will now cause the dependency to load BEFORE your plugin.

Before

load-before:
  - name: RequiredPlugin
    bootstrap: false
load-after:
  - name: RegistryPlugin
    bootstrap: true
  - name: OtherPlugin
    bootstrap: false
dependencies:
  - name: OtherPlugin
    required: false
    bootstrap: false
  - name: RegistryPlugin
    required: true
    bootstrap: true

After

dependencies:
  bootstrap:
    # Lets say that RegistryPlugin has some registry elements that this plugin requires.
    # We don't need this during runtime, so it's not required in the server section. However
    # can be added to both if needed
    RegistryPlugin:
      load: BEFORE 
      required: true
      # (this is default)
      join-classpath: true
  server:
    # Add a required "RequiredPlugin" dependency, which will load AFTER your plugin.
    RequiredPlugin:
      load: AFTER
      required: true
      # This means that this plugin won't have access to classpath
      join-classpath: false
    # Add "OtherPlugin" dependency, which will load BEFORE your plugin. WILL join classpath (by default)
    OtherPlugin:
      load: BEFORE
      required: false
      join-classpath: true
    # Load order can be omitted to cause it to be ignored... or specified by load-order: OMIT
    SpecialDependency:
      required: true
      join-classpath: true
verbal sapphire
#

Some Folia API (entity and region scheduler API as well as isOwnedByCurrentRegion methods) has been moved to Paper to make it easier for plugins to target Folia without breaking Paper compatibility or having to fall back to dank compatibility layers. The schedulers will behave just about the same as they have on Folia, except the scheduled runnables will be run on the main thread when called on Paper (but will still NOT use the Bukkit scheduler).

If you don't need or want to target Folia, simply keep using the current scheduler, otherwise you may now make use of the Folia schedulers when targeting both Folia and Paper at the same time.

If you have any questions about how to make plugins compatible with Folia and how to use the new schedulers, feel free to ask in #folia-dev

... except an issue snuck in, we'll get that sorted frontfacing_baby_chick

verbal sapphire
#

We've added #1120783097802276906 for you to be able to provide feedback on future API in a more accessible and easy to follow place - although you are still free to post feedback, especially regarding implementation, on the actual GitHub pull requests. You can already find a first post in there! frontfacing_baby_chick
<@&1077384171258908743>

weary nova
#

Compile-time API Break

Upstream added a method, ItemFactory#getSpawnEgg(EntityType) which returns the Material spawn egg. Paper already had this method, but it returned an ItemStack. After this latest upstream-update, The method now returns a Material. Any plugin compiled against previous API which had the ItemStack method will continue to function as expected, but trying to compile against newer API will require you update your usages.

verbal sapphire
#

Hello frog Among a large number of performance optimizations and bug fixes, here's a list of the notable changes made to Paper since the 1.20 release:

Events

Other

  • Methods to get individual location values on Entity without having to get a location through getLocation
  • Entity#setPose(Pose pose, boolean fixed) to change and fix entity poses for more than a single tick
  • Various methods on DragonBattle to spawn new gateways and to get end crystals
  • An additional sendRichMessage method on CommandSender with a TagResolver... argument. Here's also a reminder that you can (and should) use CommandSender#sendRichMessage(String) with the MiniMessage format instead of the legacy chat methods in cases where you don't want to start building Component objects manually
  • Methods on Server to update recipes without requiring players to log out and in again, including updateRecipes, updateResources and new boolean parameters on addRecipe and removeRecipe
  • SculkCatalyst#bloom
  • ... and more that doesn't fit due to Discord's character limit

Other other

As was already announced, the Folia scheduler API has been moved to Paper to allow for easier plugin compatibility between both. The AsyncScheduler is also useful outside of Folia, since it does not depend on the Minecraft server ticks and thus isn't delayed by main thread lag like asynchronous tasks from the Bukkit scheduler.

Also, upload your plugins on Hangar (or else frontfacing_baby_chick) - see our guide on how to fully automatically publish to Hangar on commits !
<@&1077384171258908743>

verbal sapphire
#

Important info for people reflecting on CraftBukkit internal code

This is very important if you for whatever reason use reflection to either

  • parse the relocated package version.
  • call CB internals.
    At some point in the future, we might only provide jars without relocation, given it is a nonsensical practice resulting in unavoidably bad code design and unexpected incompatibilities in a large number of plugins. While we will be able to automagically remap both direct and reflective calls to the relocated package, parsing the package version is not supported and WILL break at some point in the future. The changes we have planned should make working with internals a lot easier, since we recognize that sometimes (though not as often as some might think) there is no better alternative. Puffy

If you reflect on CB classes

Easy, just don't try to parse the package version. The following will work on servers with and without CB relocation:

private static final String CRAFTBUKKIT_PACKAGE = Bukkit.getServer().getClass().getPackage().getName();

public static String cbClass(String clazz) {
    return CRAFTBUKKIT_PACKAGE + "." + clazz);
}

Class.forName(cbClass("entity.CraftBee"))

If you try to parse the server version

Do NOT do this:

String craftBukkitPackage = Bukkit.getServer().getClass().getPackage().getName();
// This is the *bad* part, including any other parsing of the version
String version = craftBukkitPackage.substring(craftBukkitPackage.lastIndexOf('.') + 1);
if (version.equals("v1_20_R1")) {
    // ...
} else {
  // Unsupported
}

Instead, use long-standing API:

// Paper method that was added in 2020
// Example value: 1.20.1
String minecraftVersion = Bukkit.getServer().getMinecraftVersion();

// Bukkit method that was added in 2011
// Example value: 1.20.1-R0.1-SNAPSHOT
String bukkitVersion = Bukkit.getServer().getBukkitVersion();

if (minecraftVersion.equals("1.20.1")) {
    // ...
} else {
  // Assume latest still works, or error as unsupported
  // Alternatively for extra compatibility, check if the latest package version is valid by catching ClassNotFoundException with: Class.forName("org.bukkit.craftbukkit.v1_20_R1.CraftServer")
}

The Minecraft version strings you can parse and evaluate to your heart's content. Another (less recommended) alternative is getting the server protocol version from Bukkit.getUnsafe.

<@&1077384171258908743>

weary nova
verbal sapphire
#

1.20.3 API/dev bundle have been published - note that we are still missing some deprecations as well as method additions (e.g. to resource pack API), but otherwise it's fully usable paper

Please also note the new channels for version announcements, used until the final at everyone announcement for each version in #update-announcements / #1155694490602971168

<@&1077384171258908743>

prisma sorrel
#

๐ŸŽ‰ Happy New Years!
We hope everyone had a happy holidays/new years.

We have a made a forum post to summarize some of the new api plugin developers can hopefully look forward to using next year, but also highlight some of what was done this year.

See: https://forums.papermc.io/threads/2023-new-years-post.1009/

weary nova
#

Lifecycle Event API

**Last call for input: #1179514709653848144 **
There are some examples of registering events with the 2 currently-planned systems to use it found here

verbal sapphire
#

This first part is only really interesting for people contributing to Paper: New PRs are required to add consistent patch identifiers to all // Paper comments - see the updated contributing guidelines for more details. That's also the reason for why I'm currently spamming ci-skipped commits, if you were wondering. fish

... the more interesting reason for that is part of a longer effort of making major changes to the repository structure in the future. We're not ready to share a specific timeline here, but the general process and todos might interest you anyways, which you can get an overview of here before we do a larger announcement with more information closer to its realization: https://github.com/orgs/PaperMC/projects/6 (and don't worry, we don't plan on breaking all plugins here, this largely only affects Paper project dev itself, though the board includes future API plans as well)

<@&1077384171258908743>

verbal sapphire
#

warning This is important if you want to prepare your plugin for future Paper changes. As already announced before, at some point in the future, we will remove the CraftBukkit package relocation (e.g. v1_20_R1). While this is still some time away, you can now test whether your plugin is able to run on such a server by checking https://github.com/PaperMC/testing/releases/tag/no-relocation โ•

Again, see https://forums.papermc.io/threads/paper-velocity-1-20-4.998/#post-2955 on how to make sure your plugins will work on both relocated and unrelocated servers.

This also includes testing of automated remapping of plugins to make them run on Mojang mapped servers, even if a plugin is compiled against the obfuscated class and method names (if you don't use any vanilla internals, this doesn't affect you). So even if you have already fixed CB package parsing, please check whether your plugins are able to run on this jar if they are using internals (or "nms").

<@&1077384171258908743>

verbal sapphire
#

The jar in the release above has been updated to fix logging issues and to update a dependency related to remapping. frontfacing_baby_chick

prisma sorrel
#

Brigadier API

Looking for opinions/testing on the Brigadier API.

You can see information #1121227200277004398 message, including what to look out for and implementation examples.

Feedback

We are looking to ensure that all previous bukkit commands still continue to work identical to how it worked previously (auto completion, command invocation, etc)
This includes any plugins that interacted with the CommandMap. Extensive work was done to ensure legacy compatibility, there should be no behavior changes to older commands.

If you run into any issues with legacy compatibility, report them on the github.

tall quiver
#

As you may already know, Paper 1.20.5+ will be shipping with a Mojang-mapped runtime instead of reobfuscating the server to Spigot mappings as we have traditionally done since Paper 1.17.
Additionally, CraftBukkit classes will no longer be relocated into a versioned package.

To facilitate this change, plugins will be automatically deobfuscated before loading when necessary.
Calls to reflection APIs will also be automatically redirected and deobfuscated.

Although most of this process is automatic, there are some important things to know when developing plugins using server internals ("NMS") going forward.

Default Mappings Assumption

  • By default, all Spigot/Bukkit plugins will be assumed to be Spigot-mapped if they do not specify their mappings namespace in the manifest. Conversely, all Paper plugins will be assumed to be Mojang-mapped if they do not specify their mappings namespace in the manifest.
  • Spigot-mapped plugins will need to be deobfuscated on first load, Mojang-mapped plugins will not.

paperweight-userdev

  • userdev will automatically set the appropriate namespace in the manifest for the reobfuscated and Mojang-mapped artifacts.
  • If you are targeting Paper and do not care about Spigot compatibility, add paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.MOJANG_PRODUCTION to your build script and remove any dependsOn(reobfJar) lines. The main plugin artifact will now be Mojang-mapped and will avoid deobfuscating at first load on Paper.
  • If you still want to target Spigot, the reobfuscated jar will continue to work as it always has on both Paper and Spigot, but will need to be deobfuscated at first load on Paper.

Manual Manifest Configuration

  • For more complex setups, you can manually set the paperweight-mappings-namespace attribute in the manifest. Acceptable values are mojang, mojang+yarn (treated the same as mojang), or spigot.
#

You can look forward to more in-depth details about the update, however we felt it was important to get this out to plugin developers sooner.

As a final note, Paper 1.20.5 will require updating paperweight-userdev to v1.6.0, and remember that only the latest version of paperweight is supported.

delicate pulsar
#

Hello <@&1077384171258908743> , is it me youโ€™re looking for? Dev bundles for 1.20.5 have been published, please make sure to read the notes above (and feel free to cross reference the test plug-in GitHub repository)

delicate pulsar
verbal sapphire
#

Forgot to ping you too <@&1077384171258908743> - 1.20.5 API and dev bundle for the experimental builds have been published already sanic

See #admin-announcements and #dev-announcements message for more info. Definitely make sure that the Mojang mappings marker is added via the userdev plugin or directly setting the manifest attribute if you either are targeting Mojang mapped servers or if you're not using internals anyways. Docs on userdev will be updated soon.

Also note that to build Paper and forks, you now need to run the createMojmapBundlerJar (or Paperclip) task. Re-obfuscated server jars are no longer officially supported

fleet yarrow
#

<@&1077384171258908743>

Announcement: Server Build Information

A new ServerBuildInfo class exists for accessing the various components of the current server instance's build information.

final ServerBuildInfo build = ServerBuildInfo.buildInfo();

final Key brandId = build.brandId(); // example: "papermc:paper"
final String brandName = build.brandName(); // example: "Paper"
final String minecraftVersionId = build.minecraftVersionId(); // example: "1.20.6"
final String minecraftVersionName = build.minecraftVersionName(); // example: "1.20.6" (some versions return a more "friendly" value)
final OptionalInt buildNumber = build.buildNumber(); // example: "205"
final Instant buildTime = build.buildTime(); // example: "2024-05-15T21:21:30.208611100Z"
final Optional<String> gitBranch = build.gitBranch(); // example: "master"
final Optional<String> gitCommit = build.gitCommit(); // example: "c1d8c2e"

Changes to version strings

This change is designed to provide more detailed information about your server's build when submitting issues and crash reports.

Bukkit.getVersion()

The string returned by this method has been changed to include more information:
Old string: git-Paper-"3fc9358" (MC: 1.20.6)
New string: 1.20.6-205-c1d8c2e (MC: 1.20.6)

Full Version String (including /version)

This server is running Paper version git-Paper-"3fc9358" (MC: 1.20.6) (Implementing API version 1.20.6-R0.1-SNAPSHOT) (Git: 3fc9358)

New Version String:

This server is running Paper version 1.20.6-205-master@c1d8c2e (2024-05-15T21:19:32Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
prisma sorrel
#

ItemStack DataComponent API

Hey there! We are currently collecting feedback on upcoming API that is supposed to wrap around vanilla's data component system.

Material.SNOWBALL.getDefaultData(DataComponentTypes.MAX_STACK_SIZE); // What's the default snowball stack size?

ItemStack itemStack = ItemStack.create(Material.BUNDLE);
itemStack.setData(DataComponentTypes.MAX_STACK_SIZE, 10);
itemStack.resetData(DataComponentTypes.MAX_STACK_SIZE); // Lets reset the stack size back to its normal value
itemStack.unsetData(DataComponentTypes.BUNDLE_CONTENTS); // A bundle that can't hold anything....

This is meant to offer as a way to modify item data without using ItemMeta.

Feel free to leave feedback! ๐Ÿ™‚
#1247629608191266857

undone ruin
#

<@&1077384171258908743>

verbal sapphire
#

<@&1077384171258908743> Initial 1.21 API and dev bundle have been published, so you can start preparing your plugins - though note that there are still API changes planned, including from upstream

undone ruin
verbal sapphire
#

With experimental 1.21 builds out, here's a small overview of the current and expected changes, before we do our full announcement:

  • With Paper Plugins and the new registry modification API, you can now properly add and change enchantments; see here for docs: https://docs.papermc.io/paper/dev/registries#mutating-registries
  • At some point during 1.21, we will add API to properly get and modify item data, no matter what item type you are operating on, which currently isn't possible with ItemMeta, including entirely missing data
  • AttributeModifiers now require keys instead of random looking UUIDs
  • ItemStack behavior is now fully server backed, meaning you can't run unit tests using the API-only ItemStack anymore unless you mock its implementation
  • We recommend using the new ItemStack#hasDamageValue method before using getDamage (vs ItemStack#hasDamage to check whether there is damage data set that is non-0)
  • EntitiesLoad/UnloadEvent currently aren't fired
  • PlayerItemMendEvent.html#getDurabilityToXpOperation is currently not implemented and might be fully removed later
  • We expect upstream to change a lot of the type enums to interfaces holding the constants in the coming weeks

And remember: Fortunately, the ItemMeta API is very flexible and quite close to the system adopted by Vanilla in this release.

<@&1077384171258908743>

verbal sapphire
#

Slightly late, but BasicCommand now has default canUse(CommandSender) and permission() methods that you can override if needed. If you want more control over subcommands etc., you of course still need to go through the whole Brigadier command builder

verbal sapphire
#

<@&1077384171258908743> An upstream update was just merged that moves cat and frog variants, map cursor types, and villager types+profession from enums to constants of an interface. There are basic compatibility measures in place, so you only need to do something now if:

  • you put any of these into an EnumMap/EnumSet or work on them with switch statements (make sure you also remove such use of them for similar type enums โ—),
  • you are using Paper-plugins (with the paper-plugin.yml), being exempt from the compatibility code, or
  • you are disabling plugin rewriting via the startup flag.

Going beyond this, please especially make sure you move away from Material.values() calls and instead get them via the Registry API using future API:

for (final ItemType itemType : Registry.ITEM) {
   ...
}
// or getting it via the registry key, which is slightly more future-proof in case these ever become fully client synced
RegistryAccess.registryAccess().getRegistry(RegistryKey.BLOCK).get(...)

or going half-way with the upstream compatible Registry.MATERIAL - the important difference here is that it means you won't have to operate on the raw enum methods and that it will always filter legacy materials, plus not immediately relying on the remapping cursedness

verbal sapphire
#

<@&1077384171258908743> See our admin announcements chanel #admin-announcements - you can now test your plugins against experimental 1.21.3 build and API.

Now is also the time to remove any remaining usage of our Timings API. Timings has been fully disabled, though its API will remain for another version or two to give slightly more time to move off of it

verbal sapphire
#

<@&1077384171258908743> HELLO, two things from the 1.21.3 update I would like to specifically highlight again are:

Item DataComponent API

We have finally merged @prisma sorrel's data component API, so you can more extensively edit any item to have any of the available data component types, where ItemMeta is both incomplete and overly restrictive. Here's a quick example:

ItemStack itemStack = new ItemStack(Material.DIAMOND_HELMET);

// Create new food data
FoodProperties.Builder food = FoodProperties.food()
    .canAlwaysEat(true)
    .nutrition(2)
    .saturation(3.5f);
itemStack.setData(DataComponentTypes.FOOD, food);

// Update parts of the already existing equippable data: Use the netherrite helmet model when worn and change the equip sound
Equippable.Builder equippable = itemStack.getData(DataComponentTypes.EQUIPPABLE).toBuilder()
    .model(Material.NETHERITE_HELMET.getDefaultData(DataComponentTypes.EQUIPPABLE).model())
    .equipSound(SoundEventKeys.ENTITY_GHAST_HURT);
itemStack.setData(DataComponentTypes.EQUIPPABLE, equippable);

Server pausing

Secondly, please make sure you read the full forum post and make use of the new Server#allowPausing(Plugin, Boolean) method in case you know your plugin cannot properly function with server pausing (some events aren't called, you cannot expect any world interactions that require "active" ticking, and more).

See the full forum post linked in #announcements.

verbal sapphire
#

Small note I forgot to put here: In our 1.21.4 builds, PotionMeta's has/get/setCustomName methods have been deprecated for removal, as they conflict with... well, custom names of items. Please make sure to replace their use with hasCustomPotionName etc.

verbal sapphire
#

We have a first testing (!) build of our hard fork branch for you!
If you don't know what that means yet, check #hardfork-discussion message / the forum announcement.

This should not break any of your existing 1.21.4 plugins (plugin.yml support won't be dropped either); if it does, please report that and any other newly introduced gameplay/server issues you might encounter. We pretty much had to re-apply the entirety of Spigot and Paper patches, so we'd like to give it a test outside of papermc.io published builds first to make sure nothing broke.

You can download it here: https://github.com/PaperMC/testing/releases/tag/hard-fork

We will publish updated dev bundles and allow pull requests targeting the hard fork branch once we push it to a new main branch. master and the other version branches will stay around for a while as to not instantly break people's use of them (don't re-do your open PRs yet plz), but you should migrate to the archive repo when doing operations on those <1.21.4 branches specifically.
<@&1077384171258908743>

verbal sapphire
#

Hard fork builds have been merged to the main branch: Dev bundle and API have been published, though API won't have any changes and internals should only have minor changes from cleanup. userdev and patcher require beta releases to be used for now.

If you currently have any open pull requests on the Paper repo, please see #paper-contrib message <@&1077384171258908743> Most importantly there, the master branch will no longer be updated and will be deleted in a few months, make sure you replace any references to it (closing or fixing it now would have caused all open PRs to be closed and general weirdness)

undone ruin
#

While we are stilling missing a few crucial things before releasing an experimental Paper build, most notably moonrise (which contains the chunk and light engine rewrites), we have now released versions of the api and the dev bundle so you can start updating your plugins.

Do note that before and during experimental builds, our usual api stability guarantee doesn't apply! However, we already did a bunch of work updating all kinda parts of the api for the new vanilla feature. More to come!

Paper-API: compileOnly("io.papermc.paper:paper-api:1.21.5-R0.1-SNAPSHOT")
Javadocs: https://jd.papermc.io/paper/1.21.5/
Dev-Bundle: paperweight.paperDevBundle("1.21.5-no-moonrise-SNAPSHOT")

Happy updating!

#

|| <@&1077384171258908743> ||

median current
#

Bonjour developers! We're looking for feedback on Adventure 5.0, the next major update for Adventure. The tl;dr is as follows:

  • Removing deprecated methods
  • Bumping the Java version to the latest LTS
  • Removing unused legacy methods
  • No unnecessary breaking changes

If you've got any concerns, comments, questions, or breaking changes you wish to propose, please drop a comment on the issue below. Even a thumbs up will be helpful!
https://github.com/KyoriPowered/adventure/issues/1202

Also, as we've moved Adventure under the Paper umbrella, we'll now be posting about updates and releases here too! We've pinged everyone here for this announcement, but for future pings, visit id:customize to grab the new <@&1356377864487829756> role.

fleet yarrow
#

|| <@&1077384171258908743> ||

woeful plume
woeful plume
undone ruin
#

As announced in #admin-announcements, experimental builds are now available.

As mentioned there, ItemStacks now use the snbt format when writing to configuration files. This allows us to run ItemStack upgrades through Minecrafts data fixers, allowing for much safer and reliable upgrades of existing stacks going forwards.
Direct serialisation of ItemMeta (as in, storing ItemMeta in a config) is now considered unsupported and will likely be removed in the future.
If you want to serialize items to other formats, the new (de)serializeStack methods on UnsafeValues might be of interest to you.

On the api side of things, the Cow inheritance has been adjusted to fit vanilla: MushoomCow -> Cow is now MushroomCow -> AbstractCow; Cow -> AbstractCow
Furthermore the potion entity type has now been split up into splash and lingering potions, meaning you will now have to use those new entity types instead and will no longer be able to swap out an lingering for a splash potion and vice versa without creating a new entity.

||<@&1077384171258908743>||

woeful plume
woeful plume
tall quiver
#

Oopsie daisy! ๐Ÿ˜… Looks like we tripped and accidentally dropped some shiny new jars into the repo! ๐Ÿซ™ Behold, preliminary API builds for 1.21.6-pre3 under 1.21.6-R0.1-SNAPSHOT, with zero new API (because who needs new toys, right?). Oh, and we tossed in some dev bundles too, just for kicks. Go grab 'em before we "accidentally" drop something else! ๐Ÿš€

verbal sapphire
#

1.21.6 API and dev bundle have been published, you can start updating your plugin towards the new version. Dialog API as well as an adventure update for the new custom click actions are still pending (although generally finished) and we will let you know about these and other changes once the stable announcement is out!
-# We already had them published for the release candidate and pre-releases but didnโ€™t tell you, sorry about that
<@&1077384171258908743>

woeful plume
woeful plume
slate vault
#

weewoo_red Patch your Git weewoo_blue

Attention <@&1077384171258908743>, Git just shipped fixes for a high-severity flaw in submodule handling that can let a malicious repo run post-checkout hooks. Given that some forks and older versions of Paper make heavy usage of submodules, it's recommended that you update out of an abundance of caution.

All versions โ‰ค 2.50.0 are vulnerable.

Upgrade now to a patched release for your track:

# Homebrew (macOS)
brew upgrade git

# Debian/Ubuntu
sudo apt-get update && sudo apt-get install --only-upgrade git

# Arch
sudo pacman -Syu git

# Windows (winget)
winget update Git.Git -h

# Windows (other)
https://git-scm.com/downloads/win

โš ๏ธ Avoid git clone --recurse-submodules from untrusted sources before upgrading to a patched version!

median current
tall quiver
#

Alpha Paper API and dev bundles for 1.21.9-pre2 (1.21.9-pre2-R0.1-SNAPSHOT) have been published to Maven, with Paperclips available through the downloads API. These builds are intended for developers who want a head start updating their plugins (or want to play with new APIs) and those who want to help find bugs. As always it's highly discouraged to run alpha builds in production. The in-development Adventure API may cause dependency selection issues in some build configurations, see #build-tooling-help message for a fix. DataConverter is also not yet included.

delicate pulsar
#

The Maven repository is currently having some issues, I am workong on them but due to the nature of the issue it might take a short moment

undone ruin
delicate pulsar
#

<@&1077384171258908743> Access to the Maven Repository has been restored, a database associated with the repository had gotten corrupted, despite repair attempts, and had to be manually re-imported

odd bolt
#

jd.papermc.io is currently unavailable, will be resolved within the next few hours. Javadocs are still available to download from our Maven repository in the meantime.

fleet yarrow
#

javadocs should be restored

median current
tall quiver
#

adventure-platform-mod (adventure on Fabric and NeoForge) is now available on Modrinth in additon to Maven Central. This means that developers are no longer required to bundle the mod and can set a dependency on Modrinth instead. We have uploaded versions for Minecraft 1.21 and newer. CurseForge is coming soon as well. https://modrinth.com/mod/adventure-platform-mod

tall quiver
#

Alpha Paper API and dev bundles for 1.21.11-pre3 have been published to Maven (as 1.21.11-pre3-R0.1-SNAPSHOT), with Paperclips available through Fill. These builds are intended for developers who want a head start updating their plugins (or want to play with new APIs) and those who want to help find bugs. As always it's highly discouraged to run alpha builds in production. DataConverter is not yet included.

verbal sapphire
#

<@&1077384171258908743>

verbal sapphire
#

Velocity has had a 3.4.0 release build pushed; 3.5.0-SNAPSHOT includes a few larger dependency updates (mainly guava, snakeyaml, and configurate) as well as a Java 21 requirement.

This shouldn't affect all too many plugins (other than having new API from those dependencies and Java versions to play with), but you should still make sure they run with the new versionAlienPls3
<@&1077384171258908743>

median current
#

Hi everyone! Adventure version 5.0 is coming soon and I just wanted to do a quick announcement to let everyone know what to expect, as when Adventure 5 drops it will be updating eventually in projects like Paper, Velocity, etc.

The primary goals of Adventure 5 is to modernise the Adventure codebase and remove deprecations that have built up over the years. It's not a redesign or remake, rather a well needed update.

If you are currently using methods that are deprecated in Adventure 4.26.1, you should update to replacements as soon as you can. The latest Paper, Velocity and Minestom builds include this latest Adventure update, so make sure your plugins are building against the latest builds to ensure you've got all the deprecations.

If there's anything that doesn't have a replacement, you've noticed anything that will break in Adventure 5.0, or you have any other questions/comments feel free to drop a message in #adventure-help or the issue/PR linked below.

For full information, check out the 5.0 issue or the complete pull request.

delicate pulsar
#

<@&1077384171258908743> <@&1356377864487829756> ^

verbal sapphire
#

paper Alpha builds for Paper 26.1.1 are now available on our website (https://papermc.io/downloads/paper) and downloads API! This comes with a change to our versioning scheme, e.g. our 8th build for 26.1.1 is published under: 26.1.1.build.8-alpha instead of the legacy -R0.1-SNAPSHOT suffix that hasn't carried any meaning in many years. This also means they're published to the releases repository instead of snapshots (which will automatically work if you already use https://repo.papermc.io/repository/maven-public/).

To automatically resolve the latest build of a version in Gradle, you can use 26.1.1.build.+.
<@&1077384171258908743>

median current
#

Adventure 5.0.0 has just been released! ๐ŸŽ‰

This update is the first major update to the Adventure library in over 6 years, representing over 6 months of work. It includes an updated Java version, removal of deprecations, and other breaking changes. This update represents a major milestone in the development of the Adventure library, with 7,000+ additions and 12,000+ deletions across over 500 files.

Although we have tried our hardest to avoid unnecessary breaking changes, we do expect this update to contain bugs or unintentional breaking changes and the Adventure team is prepared to release hotfixes as needed. Please report any issues that you find and reach out for help in the #adventure-help channel if you need to.

Please read the migration information on the Adventure documentation for full information about the changes made in this update and notes about migrating from the 4.x series to 5.x. Also check out the release notes for more information about the update.