Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
7b66699
26.2-rc-2
kennytv Jun 12, 2026
bb676e2
actual 26.2-rc-2
kennytv Jun 12, 2026
a737972
Fix isAllowedInPeaceful call
kennytv Jun 12, 2026
c35810c
Update deps to match Vanilla
kennytv Jun 12, 2026
e5643cd
Update Vex#getSummoner return type
kennytv Jun 12, 2026
e00936a
[ci skip] update log4j for the api
Lulu13022002 Jun 12, 2026
eb5df78
fix wither spawning parity and remove openSign var
Lulu13022002 Jun 12, 2026
d1aca9a
Apply most remaining feature patches
kennytv Jun 12, 2026
f40a3f6
Update README version badge for 26.2 [ci skip] (#13953)
Doc94 Jun 13, 2026
c04c71b
fix folia entity scheduler
Lulu13022002 Jun 13, 2026
fe1b210
don't break Vex#getSummoner
Lulu13022002 Jun 13, 2026
d16f5cc
Use more accurate placed sound for block item
Lulu13022002 Jun 13, 2026
03b30e0
Reset updatingMinecraft
kennytv Jun 14, 2026
5979742
26.2
kennytv Jun 16, 2026
389befc
drop old ATs
Lulu13022002 Jun 16, 2026
14bb579
fix bad exhaustion reasons for player movement
Lulu13022002 Jun 16, 2026
0b4fed7
fix misc issues
Lulu13022002 Jun 16, 2026
384ff98
fix contract of ItemContainerContents#contents
Lulu13022002 Jun 17, 2026
af55c9d
Fix Geyser particle options waterBlocks precondition (#13961)
Privatech38 Jun 17, 2026
1daadd5
Prevent EnderDragon and Wither from receiving effect of vanilla sourc…
Doc94 Jun 17, 2026
ca8eb49
Mention MOJIRA issue for correct stacktrace fix in FileFixerUpper [ci…
Doc94 Jun 17, 2026
80d1098
Expose Entity Source for EntityPotionEffectEvent (#13957)
Doc94 Jun 17, 2026
2c0341f
Update adventure to 5.1.1
kezz Mar 31, 2026
649002a
fix IOOB for '..' namespace
Lulu13022002 Jun 17, 2026
783b6f0
add preconditions to particles
Lulu13022002 Jun 17, 2026
1142778
only pre cancel InventoryClickEvent when in spectator
Lulu13022002 Jun 18, 2026
250ea42
add missing kick event causes
Lulu13022002 Jun 18, 2026
1e3ffb9
clean block placement from API
Lulu13022002 Jun 19, 2026
19d83f9
Add missing obsolete on Bukkit.getWorldContainer [ci skip] (#13970)
Doc94 Jun 19, 2026
61ed18e
Use a concurrent cache in CraftRegistry
electronicboy Jun 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down Expand Up @@ -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 {
Expand All @@ -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>
```
Expand Down
150 changes: 7 additions & 143 deletions build-data/paper.at

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -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=STABLE
apiVersion=26.2
channel=ALPHA

# Set to true while updating Minecraft version
updatingMinecraft=false
Expand Down
39 changes: 18 additions & 21 deletions paper-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,23 @@ java {
}

val annotationsVersion = "26.0.2"
val adventureVersion = "4.26.1"
val adventureVersion = "5.1.1"
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))
attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SOURCES))
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")
Expand All @@ -42,8 +43,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
Expand All @@ -60,6 +61,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")
Expand All @@ -74,12 +76,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")
Expand Down Expand Up @@ -187,32 +190,26 @@ 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:")

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)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
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;
Expand Down Expand Up @@ -39,11 +40,11 @@
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;
Expand All @@ -70,6 +71,14 @@
@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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@
@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}
*
Expand Down Expand Up @@ -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}
*
Expand All @@ -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}
*
Expand Down Expand Up @@ -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}
*
Expand Down Expand Up @@ -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}
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}
*
Expand Down
Loading
Loading