mirror of
https://github.com/PaperMC/Paper.git
synced 2026-11-04 17:00:09 -05:00
Compare commits
112
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e792779dd8 | ||
|
|
a6e0c08fdf | ||
|
|
22d80a3b3b | ||
|
|
04f95191f1 | ||
|
|
21fb54246e | ||
|
|
94d60e15b3 | ||
|
|
bda84069b4 | ||
|
|
d9b5003fa1 | ||
|
|
533d93c758 | ||
|
|
ba7c982605 | ||
|
|
25d358cf01 | ||
|
|
4000fcc3d7 | ||
|
|
fcfc6c3fe8 | ||
|
|
76fb5060c1 | ||
|
|
1bf6364b97 | ||
|
|
40764534a2 | ||
|
|
cb47e01823 | ||
|
|
a939945148 | ||
|
|
b4466ec981 | ||
|
|
f7d5a0a017 | ||
|
|
6e598f8527 | ||
|
|
0cadaefc09 | ||
|
|
2141ca5273 | ||
|
|
108255cbbb | ||
|
|
3fec37a9c1 | ||
|
|
c3be00f0ec | ||
|
|
6ea679eb07 | ||
|
|
51d28af8fa | ||
|
|
5661fbbab9 | ||
|
|
6e021c8272 | ||
|
|
00e79dfb22 | ||
|
|
4cdcf00dca | ||
|
|
723510f9aa | ||
|
|
9686f8b34d | ||
|
|
4c47c76ecf | ||
|
|
4045339e4c | ||
|
|
a9f74cbf6e | ||
|
|
371a422567 | ||
|
|
7f60924390 | ||
|
|
dda39a0f05 | ||
|
|
4d854e66b8 | ||
|
|
57c202e015 | ||
|
|
bd79e20c66 | ||
|
|
35b2c6ece4 | ||
|
|
e382e6872c | ||
|
|
4e1a2555be | ||
|
|
7ec3174a33 | ||
|
|
c9e89f49b0 | ||
|
|
aa6cd74c03 | ||
|
|
ea10fa4a79 | ||
|
|
692e93a91f | ||
|
|
bee287927c | ||
|
|
0caf75f839 | ||
|
|
d7510efc16 | ||
|
|
aa6ee44a7a | ||
|
|
7c90c7c497 | ||
|
|
2f083acbed | ||
|
|
38c1ddb52a | ||
|
|
46b4b0b8d5 | ||
|
|
d0e808f44c | ||
|
|
e454fef40e | ||
|
|
1814d8b47a | ||
|
|
803baf0ba6 | ||
|
|
5edcf6ddf6 | ||
|
|
186e9e331b | ||
|
|
cceffe3d98 | ||
|
|
6d0821d2b5 | ||
|
|
e714de6365 | ||
|
|
c0dda0ea14 | ||
|
|
5652882134 | ||
|
|
4419afb9c9 | ||
|
|
29fc853271 | ||
|
|
d61a51e81e | ||
|
|
3750927a06 | ||
|
|
71b0c76861 | ||
|
|
e4eb69b8a1 | ||
|
|
219f86ee06 | ||
|
|
c77d5f99f9 | ||
|
|
839c6a1845 | ||
|
|
6a51c44ec2 | ||
|
|
a7dd263566 | ||
|
|
4b3f967e49 | ||
|
|
74fbcce5ae | ||
|
|
4781d28b4b | ||
|
|
f5534cb7c7 | ||
|
|
62b7f86dae | ||
|
|
5613ed6dfb | ||
|
|
8980ead7ea | ||
|
|
e4d7178a3c | ||
|
|
1fcc4162d1 | ||
|
|
40d5d31c83 | ||
|
|
023e6c2953 | ||
|
|
d2b1158e6c | ||
|
|
8318dcb74b | ||
|
|
b28d77b3e3 | ||
|
|
245b5473a0 | ||
|
|
457a0a69bf | ||
|
|
a24f9b204c | ||
|
|
39203a65e0 | ||
|
|
ba7fb23ddd | ||
|
|
519e4224b1 | ||
|
|
95565e0f4f | ||
|
|
320f25cb04 | ||
|
|
3527ccdf2e | ||
|
|
03efecf0d3 | ||
|
|
94f2903584 | ||
|
|
e87320d5f2 | ||
|
|
7ebc94c2a6 | ||
|
|
4eda045b15 | ||
|
|
2ba1675c75 | ||
|
|
6f315356b6 | ||
|
|
4765010083 |
No files matched your search
@@ -16,21 +16,25 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
env:
|
||||
ORG_GRADLE_PROJECT_paperBuildCacheEnabled: true
|
||||
ORG_GRADLE_PROJECT_paperBuildCacheUsername: ${{ secrets.PAPER_BUILD_CACHE_USERNAME }}
|
||||
ORG_GRADLE_PROJECT_paperBuildCachePassword: ${{ secrets.PAPER_BUILD_CACHE_PASSWORD }}
|
||||
ORG_GRADLE_PROJECT_paperBuildCachePush: true
|
||||
|
||||
# The goal of the build workflow is split into multiple requirements.
|
||||
# 1. Run on pushes to same repo.
|
||||
# 2. Run on PR open/reopen/syncs from repos that are not the same (PRs from the same repo are covered by 1)
|
||||
# 3. Run on labeled PRs that have the build-pr-jar flag.
|
||||
# 3. Run on labeled PRs that have the publish-pr flag.
|
||||
if: >
|
||||
(
|
||||
(github.event_name == 'push')
|
||||
|| (github.event_name == 'pull_request' && github.repository != github.event.pull_request.head.repo.full_name && contains(fromJSON('["opened", "reopened", "synchronize"]'), github.event.action))
|
||||
|| (github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'build-pr-jar')
|
||||
|| (github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'publish-pr')
|
||||
)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
java: [21]
|
||||
fail-fast: true
|
||||
steps:
|
||||
- if: ${{ github.event_name == 'push' }}
|
||||
@@ -43,14 +47,17 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- name: JDK ${{ matrix.java }}
|
||||
- name: JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: ${{ matrix.java }}
|
||||
java-version: 21
|
||||
distribution: 'zulu'
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
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
|
||||
@@ -73,14 +80,14 @@ jobs:
|
||||
|
||||
if (event_name === "push" && ref_type === "branch") {
|
||||
const {data: pulls} = await github.rest.pulls.list({ owner, repo, head: `${owner}:${ref_name}`, state: "open" });
|
||||
const pull = pulls.find((pr) => !!pr.labels.find((l) => l.name === "build-pr-jar"));
|
||||
const pull = pulls.find((pr) => !!pr.labels.find((l) => l.name === "publish-pr"));
|
||||
if (pull) {
|
||||
result["pr"] = pull.number;
|
||||
result["action"] = "paperclip";
|
||||
core.notice(`This is a push action but to a branch with an open PR with the build paperclip label (${JSON.stringify(result)})`);
|
||||
return result;
|
||||
}
|
||||
} else if (event_name === "pull_request" && event.pull_request.labels.find((l) => l.name === "build-pr-jar")) {
|
||||
} else if (event_name === "pull_request" && event.pull_request.labels.find((l) => l.name === "publish-pr")) {
|
||||
result["pr"] = event.pull_request.number;
|
||||
result["action"] = "paperclip";
|
||||
core.notice(`This is a pull request action with a build paperclip label (${JSON.stringify(result)})`);
|
||||
@@ -102,7 +109,7 @@ jobs:
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Test Results (${{ matrix.java }})
|
||||
name: Test Results
|
||||
path: |
|
||||
**/build/test-results/test/TEST-*.xml
|
||||
|
||||
@@ -116,6 +123,13 @@ jobs:
|
||||
with:
|
||||
name: paper-${{ fromJSON(steps.determine.outputs.result).pr }}
|
||||
path: paper-server/build/libs/paper-paperclip-*-mojmap.jar
|
||||
|
||||
- name: Publish Artifacts
|
||||
if: fromJSON(steps.determine.outputs.result).action == 'paperclip'
|
||||
uses: PaperMC/action-pr-publishing/upload@paper
|
||||
with:
|
||||
# TODO fallback for failing javadoc
|
||||
publishing-task: ":paper-api:publishAllPublicationsTo_githubPackages_PRsRepository publishDevBundlePublicationTo_githubPackages_PRsRepository -PpublishDevBundle"
|
||||
event_file:
|
||||
name: "Event File"
|
||||
# Only run on PRs if the source branch is on someone else's repo
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
# This workflow run on the completion of the
|
||||
# build workflow but only does anything if the
|
||||
# triggering workflow uploaded an artifact.
|
||||
#
|
||||
# Do note that it is then the trigger workflow that
|
||||
# determines if this will update the PR text body. All
|
||||
# this workflow does is check if an uploaded artifact
|
||||
# exists and there is a PR tied to the previous workflow.
|
||||
|
||||
name: Comment on pull request
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ['Build Paper']
|
||||
types: [completed]
|
||||
jobs:
|
||||
pr_comment:
|
||||
if: github.event.workflow_run.conclusion == 'success'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v7
|
||||
env:
|
||||
BRANCH_NAME: "${{ github.event.workflow_run.head_branch }}"
|
||||
PR_OWNER: "${{ github.event.workflow_run.head_repository.owner.login }}"
|
||||
PR_SHA: "${{ github.event.workflow_run.head_sha }}"
|
||||
RUN_ID: "${{ github.event.workflow_run.id }}"
|
||||
REPO_ID: "${{ github.event.repository.id }}"
|
||||
EVENT_TYPE: "${{ github.event.workflow_run.event}}"
|
||||
PULL_REQUESTS: "${{ toJSON(github.event.workflow_run.pull_requests) }}"
|
||||
with:
|
||||
# This snippet is public-domain, taken from
|
||||
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml
|
||||
# Modified extensively by Machine_Maker
|
||||
script: |
|
||||
async function updatePR(owner, repo, issue_number, purpose, body) {
|
||||
const { data } = await github.rest.issues.get({ owner, repo, issue_number });
|
||||
core.debug(JSON.stringify(data, null, 2));
|
||||
|
||||
const marker = `<!-- bot: ${purpose} -->`;
|
||||
|
||||
let new_body = data.body ? data.body.trim().split(marker)[0].trim() : "";
|
||||
new_body += `\n${marker}\n---\n${body}`;
|
||||
|
||||
core.info(`Updating the text body of PR #${issue_number} in ${owner}/${repo}`);
|
||||
await github.rest.issues.update({ owner, repo, issue_number, body: new_body });
|
||||
}
|
||||
|
||||
const { owner, repo } = context.repo;
|
||||
const run_id = `${process.env.RUN_ID}`;
|
||||
const repo_id = `${process.env.REPO_ID}`;
|
||||
|
||||
let pulls = [];
|
||||
const event_type = `${process.env.EVENT_TYPE}`;
|
||||
if (event_type === "push") { // if push, it's from the same repo which means `pull_requests` is populated
|
||||
pulls = JSON.parse(`${process.env.PULL_REQUESTS}`);
|
||||
} else {
|
||||
const pr_branch = `${process.env.BRANCH_NAME}`;
|
||||
const pr_sha = `${process.env.PR_SHA}`;
|
||||
const pr_owner = `${process.env.PR_OWNER}`;
|
||||
const { data } = await github.rest.pulls.list({ owner, repo, head: `${pr_owner}:${pr_branch}`, state: "open" });
|
||||
core.debug(JSON.stringify(data, null, 2));
|
||||
pulls = data.filter((pr) => pr.head.sha === pr_sha && pr.labels.find((l) => l.name === "build-pr-jar"));
|
||||
}
|
||||
|
||||
if (!pulls.length) {
|
||||
return core.notice("This workflow doesn't have any pull requests!");
|
||||
} else if (pulls.length > 1) {
|
||||
core.info(JSON.stringify(pulls, null, 2));
|
||||
return core.error("Found multiple matching PRs");
|
||||
}
|
||||
const pull_request = pulls[0];
|
||||
|
||||
const artifacts = await github.paginate(github.rest.actions.listWorkflowRunArtifacts, { owner, repo, run_id });
|
||||
if (!artifacts.length) {
|
||||
return core.info("Skipping comment due to no artifact found");
|
||||
}
|
||||
const artifact = artifacts.find((art) => art.name === `paper-${pull_request.number}`);
|
||||
if (!artifact) {
|
||||
return core.info("Skipping comment to no matching artifact found");
|
||||
}
|
||||
|
||||
const link = `https://nightly.link/${owner}/${repo}/actions/artifacts/${artifact.id}.zip`;
|
||||
const body = `Download the paperclip jar for this pull request: [${artifact.name}.zip](${link})`;
|
||||
core.info(`Adding a link to ${link}`);
|
||||
await updatePR(owner, repo, pull_request.number, "paperclip-pr-build", body);
|
||||
@@ -0,0 +1,36 @@
|
||||
name: Publish PR
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: [ "Build Paper" ]
|
||||
types:
|
||||
- completed
|
||||
|
||||
permissions:
|
||||
packages: write # To upload the PR
|
||||
actions: write # To get information about the uploading workflow run and to delete the run artifacts
|
||||
contents: write # To download the `maven-publish` artifact, and to be able to create commit comments
|
||||
issues: write # To be able to create PR comments
|
||||
pull-requests: write # To be able to create PR comments
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Generate an Application repository access token
|
||||
id: gen_repo_token
|
||||
uses: kattecon/gh-app-access-token-gen@v1
|
||||
with:
|
||||
app_id: 1408328
|
||||
private_key: ${{ secrets.PR_PUBLISHING_GH_APP_KEY }}
|
||||
repository: ${{ github.repository }}
|
||||
- name: Publish PR
|
||||
uses: PaperMC/action-pr-publishing@paper
|
||||
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
|
||||
base-maven-url: 'https://maven-prs.papermc.io'
|
||||
self-name: 'papermc-pr-publishing[bot]'
|
||||
@@ -21,12 +21,14 @@ jobs:
|
||||
uses: dawidd6/action-download-artifact@v6
|
||||
with:
|
||||
run_id: ${{ github.event.workflow_run.id }}
|
||||
path: artifacts
|
||||
path: test_artifacts
|
||||
name: "Test Results|Event File"
|
||||
name_is_regexp: true
|
||||
- name: Publish Test Results
|
||||
uses: EnricoMi/publish-unit-test-result-action@v2
|
||||
with:
|
||||
commit: ${{ github.event.workflow_run.head_sha }}
|
||||
event_file: artifacts/Event File/event.json
|
||||
event_file: test_artifacts/Event File/event.json
|
||||
event_name: ${{ github.event.workflow_run.event }}
|
||||
files: "artifacts/**/*.xml"
|
||||
files: "test_artifacts/**/*.xml"
|
||||
comment_mode: off
|
||||
@@ -40,7 +40,7 @@ How To (Plugin Developers)
|
||||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.21.5-R0.1-SNAPSHOT</version>
|
||||
<version>1.21.7-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
```
|
||||
@@ -53,7 +53,7 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("io.papermc.paper:paper-api:1.21.5-R0.1-SNAPSHOT")
|
||||
compileOnly("io.papermc.paper:paper-api:1.21.7-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
java {
|
||||
|
||||
+18
-27
@@ -104,6 +104,9 @@ public net.minecraft.server.level.ServerPlayer wardenSpawnTracker
|
||||
public net.minecraft.server.level.ServerPlayer$RespawnPosAngle
|
||||
public net.minecraft.server.level.ServerPlayerGameMode level
|
||||
public net.minecraft.server.level.TicketType register(Ljava/lang/String;JZLnet/minecraft/server/level/TicketType$TicketUse;)Lnet/minecraft/server/level/TicketType;
|
||||
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
|
||||
public net.minecraft.server.network.ServerGamePacketListenerImpl isChatMessageIllegal(Ljava/lang/String;)Z
|
||||
public net.minecraft.server.network.ServerLoginPacketListenerImpl authenticatedProfile
|
||||
public net.minecraft.server.network.ServerLoginPacketListenerImpl connection
|
||||
@@ -140,12 +143,11 @@ public net.minecraft.world.effect.MobEffect attributeModifiers
|
||||
public net.minecraft.world.effect.MobEffect$AttributeTemplate
|
||||
public net.minecraft.world.effect.MobEffectInstance hiddenEffect
|
||||
public net.minecraft.world.entity.AreaEffectCloud durationOnUse
|
||||
public net.minecraft.world.entity.AreaEffectCloud ownerUUID
|
||||
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 updateColor()V
|
||||
public net.minecraft.world.entity.AreaEffectCloud waitTime
|
||||
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;
|
||||
@@ -330,14 +332,8 @@ public net.minecraft.world.entity.animal.wolf.Wolf setSoundVariant(Lnet/minecraf
|
||||
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 bodyPose
|
||||
public net.minecraft.world.entity.decoration.ArmorStand disabledSlots
|
||||
public net.minecraft.world.entity.decoration.ArmorStand headPose
|
||||
public net.minecraft.world.entity.decoration.ArmorStand isDisabled(Lnet/minecraft/world/entity/EquipmentSlot;)Z
|
||||
public net.minecraft.world.entity.decoration.ArmorStand leftArmPose
|
||||
public net.minecraft.world.entity.decoration.ArmorStand leftLegPose
|
||||
public net.minecraft.world.entity.decoration.ArmorStand rightArmPose
|
||||
public net.minecraft.world.entity.decoration.ArmorStand rightLegPose
|
||||
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
|
||||
@@ -364,8 +360,6 @@ 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
|
||||
public net.minecraft.world.entity.monster.Creeper swell
|
||||
public net.minecraft.world.entity.monster.Drowned groundNavigation
|
||||
public net.minecraft.world.entity.monster.Drowned waterNavigation
|
||||
public net.minecraft.world.entity.monster.EnderMan teleport()Z
|
||||
public net.minecraft.world.entity.monster.EnderMan teleportTowards(Lnet/minecraft/world/entity/Entity;)Z
|
||||
public net.minecraft.world.entity.monster.Endermite life
|
||||
@@ -392,6 +386,7 @@ public net.minecraft.world.entity.monster.SpellcasterIllager$IllagerSpell
|
||||
public net.minecraft.world.entity.monster.Strider steering
|
||||
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.Vindicator DOOR_BREAKING_PREDICATE
|
||||
public net.minecraft.world.entity.monster.Vindicator isJohnny
|
||||
public net.minecraft.world.entity.monster.Witch usingTime
|
||||
@@ -419,6 +414,7 @@ public net.minecraft.world.entity.npc.Villager increaseMerchantCareer()V
|
||||
public net.minecraft.world.entity.npc.Villager numberOfRestocksToday
|
||||
public net.minecraft.world.entity.npc.Villager releaseAllPois()V
|
||||
public net.minecraft.world.entity.npc.Villager setUnhappy()V
|
||||
public net.minecraft.world.entity.npc.Villager updateDemand()V
|
||||
public net.minecraft.world.entity.npc.WanderingTrader getWanderTarget()Lnet/minecraft/core/BlockPos;
|
||||
public net.minecraft.world.entity.player.Abilities flyingSpeed
|
||||
public net.minecraft.world.entity.player.Abilities walkingSpeed
|
||||
@@ -449,9 +445,7 @@ public net.minecraft.world.entity.projectile.Arrow updateColor()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
|
||||
public net.minecraft.world.entity.projectile.EyeOfEnder tx
|
||||
public net.minecraft.world.entity.projectile.EyeOfEnder ty
|
||||
public net.minecraft.world.entity.projectile.EyeOfEnder tz
|
||||
public net.minecraft.world.entity.projectile.EyeOfEnder target
|
||||
public net.minecraft.world.entity.projectile.FireworkRocketEntity DATA_ATTACHED_TO_TARGET
|
||||
public net.minecraft.world.entity.projectile.FireworkRocketEntity DATA_ID_FIREWORKS_ITEM
|
||||
public net.minecraft.world.entity.projectile.FireworkRocketEntity DATA_SHOT_AT_ANGLE
|
||||
@@ -471,10 +465,9 @@ public net.minecraft.world.entity.projectile.FishingHook timeUntilHooked
|
||||
public net.minecraft.world.entity.projectile.FishingHook timeUntilLured
|
||||
public net.minecraft.world.entity.projectile.FishingHook$FishHookState
|
||||
public net.minecraft.world.entity.projectile.LargeFireball explosionPower
|
||||
public net.minecraft.world.entity.projectile.Projectile cachedOwner
|
||||
public net.minecraft.world.entity.projectile.Projectile hasBeenShot
|
||||
public net.minecraft.world.entity.projectile.Projectile leftOwner
|
||||
public net.minecraft.world.entity.projectile.Projectile ownerUUID
|
||||
public net.minecraft.world.entity.projectile.Projectile owner
|
||||
public net.minecraft.world.entity.projectile.ShulkerBullet currentMoveDirection
|
||||
public net.minecraft.world.entity.projectile.ShulkerBullet flightSteps
|
||||
public net.minecraft.world.entity.projectile.ShulkerBullet targetDeltaX
|
||||
@@ -615,7 +608,7 @@ 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
|
||||
public net.minecraft.world.level.block.entity.BlockEntity saveId(Lnet/minecraft/nbt/CompoundTag;)V
|
||||
public net.minecraft.world.level.block.entity.BlockEntity saveId(Lnet/minecraft/world/level/storage/ValueOutput;)V
|
||||
public net.minecraft.world.level.block.entity.BlockEntityType validBlocks
|
||||
public net.minecraft.world.level.block.entity.BrewingStandBlockEntity brewTime
|
||||
public net.minecraft.world.level.block.entity.BrewingStandBlockEntity fuel
|
||||
@@ -627,10 +620,11 @@ public net.minecraft.world.level.block.entity.CampfireBlockEntity cookingTime
|
||||
public net.minecraft.world.level.block.entity.ChestBlockEntity openersCounter
|
||||
public net.minecraft.world.level.block.entity.ChestBlockEntity playSound(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/sounds/SoundEvent;)V
|
||||
public net.minecraft.world.level.block.entity.ChiseledBookShelfBlockEntity lastInteractedSlot
|
||||
public net.minecraft.world.level.block.entity.ConduitBlockEntity MIN_KILL_SIZE
|
||||
public net.minecraft.world.level.block.entity.ConduitBlockEntity destroyTarget
|
||||
public net.minecraft.world.level.block.entity.ConduitBlockEntity destroyTargetUUID
|
||||
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.DecoratedPotBlockEntity decorations
|
||||
public net.minecraft.world.level.block.entity.EnderChestBlockEntity openersCounter
|
||||
@@ -664,13 +658,14 @@ 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.TrialSpawnerData cooldownEndsAt
|
||||
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerData currentMobs
|
||||
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerData detectedPlayers
|
||||
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerData nextMobSpawnsAt
|
||||
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerData nextSpawnData
|
||||
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
|
||||
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerStateData nextMobSpawnsAt
|
||||
public net.minecraft.world.level.block.entity.trialspawner.TrialSpawnerStateData nextSpawnData
|
||||
public net.minecraft.world.level.block.entity.vault.VaultBlockEntity serverData
|
||||
public net.minecraft.world.level.block.entity.vault.VaultServerData getRewardedPlayers()Ljava/util/Set;
|
||||
public net.minecraft.world.level.block.entity.vault.VaultServerData pauseStateUpdatingUntil(J)V
|
||||
@@ -689,7 +684,7 @@ 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.PalettedContainer registry
|
||||
public net.minecraft.world.level.chunk.status.ChunkStatusTasks postLoadProtoChunk(Lnet/minecraft/server/level/ServerLevel;Ljava/util/List;)V
|
||||
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
|
||||
@@ -776,10 +771,6 @@ public-f net.minecraft.world.level.LevelSettings hardcore
|
||||
public-f net.minecraft.world.level.LevelSettings levelName
|
||||
public-f net.minecraft.world.level.block.ChestBlock MENU_PROVIDER_COMBINER
|
||||
public-f net.minecraft.world.level.block.entity.BannerBlockEntity baseColor
|
||||
public-f net.minecraft.world.level.block.entity.trialspawner.TrialSpawner normalConfig
|
||||
public-f net.minecraft.world.level.block.entity.trialspawner.TrialSpawner ominousConfig
|
||||
public-f net.minecraft.world.level.block.entity.trialspawner.TrialSpawner requiredPlayerRange
|
||||
public-f net.minecraft.world.level.block.entity.trialspawner.TrialSpawner targetCooldownLength
|
||||
public-f net.minecraft.world.level.saveddata.maps.MapItemSavedData centerX
|
||||
public-f net.minecraft.world.level.saveddata.maps.MapItemSavedData centerZ
|
||||
public-f net.minecraft.world.level.saveddata.maps.MapItemSavedData dimension
|
||||
|
||||
@@ -21,7 +21,7 @@ c net/minecraft/world/level/chunk/LevelChunk net/minecraft/world/level/chunk/Chu
|
||||
|
||||
# See mappings-patch.tiny
|
||||
c net/minecraft/server/level/ChunkMap net/minecraft/server/level/PlayerChunkMap
|
||||
f Lnet/minecraft/server/level/ChunkMap$ChunkDistanceManager; distanceManager G
|
||||
f Lnet/minecraft/server/level/ChunkMap$ChunkDistanceManager; distanceManager H
|
||||
|
||||
# The method is made public by Spigot, which then causes accidental overrides
|
||||
c net/minecraft/world/entity/Entity net/minecraft/world/entity/Entity
|
||||
|
||||
+5
-5
@@ -2,7 +2,7 @@ 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-beta.17" apply false
|
||||
id("io.papermc.paperweight.core") version "2.0.0-beta.18" apply false
|
||||
}
|
||||
|
||||
subprojects {
|
||||
@@ -24,19 +24,19 @@ subprojects {
|
||||
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
|
||||
|
||||
subprojects {
|
||||
tasks.withType<JavaCompile> {
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
options.release = 21
|
||||
options.isFork = true
|
||||
options.compilerArgs.addAll(listOf("-Xlint:-deprecation", "-Xlint:-removal"))
|
||||
}
|
||||
tasks.withType<Javadoc> {
|
||||
tasks.withType<Javadoc>().configureEach {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
}
|
||||
tasks.withType<ProcessResources> {
|
||||
tasks.withType<ProcessResources>().configureEach {
|
||||
filteringCharset = Charsets.UTF_8.name()
|
||||
}
|
||||
tasks.withType<Test> {
|
||||
tasks.withType<Test>().configureEach {
|
||||
testLogging {
|
||||
showStackTraces = true
|
||||
exceptionFormat = TestExceptionFormat.FULL
|
||||
|
||||
+3
-4
@@ -1,10 +1,9 @@
|
||||
group=io.papermc.paper
|
||||
version=1.21.5-R0.1-SNAPSHOT
|
||||
mcVersion=1.21.5
|
||||
version=1.21.7-R0.1-SNAPSHOT
|
||||
mcVersion=1.21.7
|
||||
|
||||
# Set to true while updating Minecraft version
|
||||
updatingMinecraft=true
|
||||
updateTaskListIssue=https://github.com/PaperMC/Paper/issues/11736
|
||||
updatingMinecraft=false
|
||||
|
||||
org.gradle.configuration-cache=true
|
||||
org.gradle.caching=true
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@@ -11,7 +11,7 @@ java {
|
||||
|
||||
val annotationsVersion = "26.0.2"
|
||||
// Keep in sync with paper-server adventure-text-serializer-ansi dep
|
||||
val adventureVersion = "4.21.0"
|
||||
val adventureVersion = "4.23.0"
|
||||
val bungeeCordChatVersion = "1.21-R0.2-deprecated+build.21"
|
||||
val slf4jVersion = "2.0.16"
|
||||
val log4jVersion = "2.24.1"
|
||||
@@ -164,7 +164,7 @@ abstract class Services {
|
||||
}
|
||||
val services = objects.newInstance<Services>()
|
||||
|
||||
tasks.withType<Javadoc> {
|
||||
tasks.withType<Javadoc>().configureEach {
|
||||
val options = options as StandardJavadocDocletOptions
|
||||
options.overview = "src/main/javadoc/overview.html"
|
||||
options.use()
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.bukkit.entity.Fish;
|
||||
import org.bukkit.entity.Fox;
|
||||
import org.bukkit.entity.Ghast;
|
||||
import org.bukkit.entity.Guardian;
|
||||
import org.bukkit.entity.HappyGhast;
|
||||
import org.bukkit.entity.Illager;
|
||||
import org.bukkit.entity.Illusioner;
|
||||
import org.bukkit.entity.IronGolem;
|
||||
@@ -67,17 +68,17 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
GoalKey<AbstractHorse> RANDOM_STAND = create("random_stand", AbstractHorse.class);
|
||||
GoalKey<AbstractHorse> HORSE_RANDOM_STAND = create("horse_random_stand", AbstractHorse.class);
|
||||
|
||||
GoalKey<AbstractHorse> RUN_AROUND_LIKE_CRAZY = create("run_around_like_crazy", AbstractHorse.class);
|
||||
GoalKey<AbstractHorse> HORSE_RUN_AROUND_LIKE_CRAZY = create("horse_run_around_like_crazy", AbstractHorse.class);
|
||||
|
||||
GoalKey<AbstractSkeleton> ABSTRACT_SKELETON_MELEE = create("abstract_skeleton_melee", AbstractSkeleton.class);
|
||||
GoalKey<AbstractSkeleton> SKELETON_MELEE = create("skeleton_melee", AbstractSkeleton.class);
|
||||
|
||||
GoalKey<AbstractVillager> LOOK_AT_TRADING_PLAYER = create("look_at_trading_player", AbstractVillager.class);
|
||||
GoalKey<AbstractVillager> VILLAGER_LOOK_AT_TRADING_PLAYER = create("villager_look_at_trading_player", AbstractVillager.class);
|
||||
|
||||
GoalKey<AbstractVillager> TRADE_WITH_PLAYER = create("trade_with_player", AbstractVillager.class);
|
||||
GoalKey<AbstractVillager> VILLAGER_TRADE_WITH_PLAYER = create("villager_trade_with_player", AbstractVillager.class);
|
||||
|
||||
GoalKey<Animals> BREED = create("breed", Animals.class);
|
||||
|
||||
@@ -101,12 +102,12 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Bee> BEE_POLLINATE = create("bee_pollinate", Bee.class);
|
||||
|
||||
GoalKey<Bee> BEE_VALIDATE_FLOWER = create("bee_validate_flower", Bee.class);
|
||||
|
||||
GoalKey<Bee> BEE_VALIDATE_HIVE = create("bee_validate_hive", Bee.class);
|
||||
|
||||
GoalKey<Bee> BEE_WANDER = create("bee_wander", Bee.class);
|
||||
|
||||
GoalKey<Bee> VALIDATE_FLOWER = create("validate_flower", Bee.class);
|
||||
|
||||
GoalKey<Bee> VALIDATE_HIVE = create("validate_hive", Bee.class);
|
||||
|
||||
GoalKey<Blaze> BLAZE_ATTACK = create("blaze_attack", Blaze.class);
|
||||
|
||||
GoalKey<Cat> CAT_AVOID_ENTITY = create("cat_avoid_entity", Cat.class);
|
||||
@@ -165,16 +166,16 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Creature> WATER_AVOIDING_RANDOM_STROLL = create("water_avoiding_random_stroll", Creature.class);
|
||||
|
||||
GoalKey<Creeper> SWELL = create("swell", Creeper.class);
|
||||
GoalKey<Creeper> CREEPER_SWELL = create("creeper_swell", Creeper.class);
|
||||
|
||||
GoalKey<Dolphin> DOLPHIN_JUMP = create("dolphin_jump", Dolphin.class);
|
||||
|
||||
GoalKey<Dolphin> DOLPHIN_PLAY_WITH_ITEMS = create("dolphin_play_with_items", Dolphin.class);
|
||||
|
||||
GoalKey<Dolphin> DOLPHIN_SWIM_TO_TREASURE = create("dolphin_swim_to_treasure", Dolphin.class);
|
||||
|
||||
GoalKey<Dolphin> DOLPHIN_SWIM_WITH_PLAYER = create("dolphin_swim_with_player", Dolphin.class);
|
||||
|
||||
GoalKey<Dolphin> PLAY_WITH_ITEMS = create("play_with_items", Dolphin.class);
|
||||
|
||||
GoalKey<Drowned> DROWNED_ATTACK = create("drowned_attack", Drowned.class);
|
||||
|
||||
GoalKey<Drowned> DROWNED_GO_TO_BEACH = create("drowned_go_to_beach", Drowned.class);
|
||||
@@ -199,14 +200,14 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Fish> FISH_SWIM = create("fish_swim", Fish.class);
|
||||
|
||||
GoalKey<Fox> DEFEND_TRUSTED = create("defend_trusted", Fox.class);
|
||||
|
||||
GoalKey<Fox> FACEPLANT = create("faceplant", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_BREED = create("fox_breed", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_DEFEND_TRUSTED = create("fox_defend_trusted", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_EAT_BERRIES = create("fox_eat_berries", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_FACEPLANT = create("fox_faceplant", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_FLOAT = create("fox_float", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_FOLLOW_PARENT = create("fox_follow_parent", Fox.class);
|
||||
@@ -217,29 +218,27 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Fox> FOX_PANIC = create("fox_panic", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_PERCH_AND_SEARCH = create("fox_perch_and_search", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_POUNCE = create("fox_pounce", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_SEARCH_FOR_ITEMS = create("fox_search_for_items", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_SEEK_SHELTER = create("fox_seek_shelter", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_SLEEP = create("fox_sleep", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_STALK_PREY = create("fox_stalk_prey", Fox.class);
|
||||
|
||||
GoalKey<Fox> FOX_STROLL_THROUGH_VILLAGE = create("fox_stroll_through_village", Fox.class);
|
||||
|
||||
GoalKey<Fox> PERCH_AND_SEARCH = create("perch_and_search", Fox.class);
|
||||
|
||||
GoalKey<Fox> SEEK_SHELTER = create("seek_shelter", Fox.class);
|
||||
|
||||
GoalKey<Fox> SLEEP = create("sleep", Fox.class);
|
||||
|
||||
GoalKey<Fox> STALK_PREY = create("stalk_prey", Fox.class);
|
||||
|
||||
GoalKey<Ghast> GHAST_LOOK = create("ghast_look", Ghast.class);
|
||||
|
||||
GoalKey<Ghast> GHAST_SHOOT_FIREBALL = create("ghast_shoot_fireball", Ghast.class);
|
||||
|
||||
GoalKey<Ghast> RANDOM_FLOAT_AROUND = create("random_float_around", Ghast.class);
|
||||
|
||||
GoalKey<Guardian> GUARDIAN_ATTACK = create("guardian_attack", Guardian.class);
|
||||
|
||||
GoalKey<Illager> HOLD_GROUND_ATTACK = create("hold_ground_attack", Illager.class);
|
||||
GoalKey<HappyGhast> HAPPY_GHAST_FLOAT = create("happy_ghast_float", HappyGhast.class);
|
||||
|
||||
GoalKey<Illager> ILLAGER_HOLD_GROUND_ATTACK = create("illager_hold_ground_attack", Illager.class);
|
||||
|
||||
GoalKey<Illager> RAIDER_OPEN_DOOR = create("raider_open_door", Illager.class);
|
||||
|
||||
@@ -247,9 +246,9 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Illusioner> ILLUSIONER_MIRROR_SPELL = create("illusioner_mirror_spell", Illusioner.class);
|
||||
|
||||
GoalKey<IronGolem> DEFEND_VILLAGE = create("defend_village", IronGolem.class);
|
||||
GoalKey<IronGolem> IRON_GOLEM_DEFEND_VILLAGE = create("iron_golem_defend_village", IronGolem.class);
|
||||
|
||||
GoalKey<IronGolem> OFFER_FLOWER = create("offer_flower", IronGolem.class);
|
||||
GoalKey<IronGolem> IRON_GOLEM_OFFER_FLOWER = create("iron_golem_offer_flower", IronGolem.class);
|
||||
|
||||
GoalKey<Llama> LLAMA_ATTACK_WOLF = create("llama_attack_wolf", Llama.class);
|
||||
|
||||
@@ -269,6 +268,8 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Mob> FOLLOW_MOB = create("follow_mob", Mob.class);
|
||||
|
||||
GoalKey<Mob> GHAST_LOOK = create("ghast_look", Mob.class);
|
||||
|
||||
GoalKey<Mob> INTERACT = create("interact", Mob.class);
|
||||
|
||||
GoalKey<Mob> LEAP_AT = create("leap_at", Mob.class);
|
||||
@@ -281,10 +282,14 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Mob> OPEN_DOOR = create("open_door", Mob.class);
|
||||
|
||||
GoalKey<Mob> RANDOM_FLOAT_AROUND = create("random_float_around", Mob.class);
|
||||
|
||||
GoalKey<Mob> RANDOM_LOOK_AROUND = create("random_look_around", Mob.class);
|
||||
|
||||
GoalKey<Mob> RESET_UNIVERSAL_ANGER = create("reset_universal_anger", Mob.class);
|
||||
|
||||
GoalKey<Mob> TEMPT_FOR_NON_PATHFINDERS = create("tempt_for_non_pathfinders", Mob.class);
|
||||
|
||||
GoalKey<Mob> USE_ITEM = create("use_item", Mob.class);
|
||||
|
||||
GoalKey<Mob> VINDICATOR_BREAK_DOOR = create("vindicator_break_door", Mob.class);
|
||||
@@ -317,7 +322,7 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Panda> PANDA_SNEEZE = create("panda_sneeze", Panda.class);
|
||||
|
||||
GoalKey<Parrot> LAND_ON_OWNERS_SHOULDER = create("land_on_owners_shoulder", Parrot.class);
|
||||
GoalKey<Parrot> PARROT_LAND_ON_OWNERS_SHOULDER = create("parrot_land_on_owners_shoulder", Parrot.class);
|
||||
|
||||
GoalKey<Phantom> PHANTOM_ATTACK_PLAYER = create("phantom_attack_player", Phantom.class);
|
||||
|
||||
@@ -339,27 +344,27 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Rabbit> RABBIT_PANIC = create("rabbit_panic", Rabbit.class);
|
||||
|
||||
GoalKey<Rabbit> RAID_GARDEN = create("raid_garden", Rabbit.class);
|
||||
|
||||
GoalKey<Raider> LONG_DISTANCE_PATROL = create("long_distance_patrol", Raider.class);
|
||||
|
||||
GoalKey<Raider> NEAREST_ATTACKABLE_WITCH = create("nearest_attackable_witch", Raider.class);
|
||||
|
||||
GoalKey<Raider> NEAREST_HEALABLE_RAIDER = create("nearest_healable_raider", Raider.class);
|
||||
|
||||
GoalKey<Raider> OBTAIN_RAID_LEADER_BANNER = create("obtain_raid_leader_banner", Raider.class);
|
||||
|
||||
GoalKey<Raider> PATHFIND_TO_RAID = create("pathfind_to_raid", Raider.class);
|
||||
GoalKey<Rabbit> RABBIT_RAID_GARDEN = create("rabbit_raid_garden", Rabbit.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_CELEBRATION = create("raider_celebration", Raider.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_LONG_DISTANCE_PATROL = create("raider_long_distance_patrol", Raider.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_MOVE_THROUGH_VILLAGE = create("raider_move_through_village", Raider.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_NEAREST_ATTACKABLE_WITCH = create("raider_nearest_attackable_witch", Raider.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_NEAREST_HEALABLE_RAIDER = create("raider_nearest_healable_raider", Raider.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_OBTAIN_RAID_LEADER_BANNER = create("raider_obtain_raid_leader_banner", Raider.class);
|
||||
|
||||
GoalKey<Raider> RAIDER_PATHFIND_TO_RAID = create("raider_pathfind_to_raid", Raider.class);
|
||||
|
||||
GoalKey<RangedEntity> DROWNED_TRIDENT_ATTACK = create("drowned_trident_attack", RangedEntity.class);
|
||||
|
||||
GoalKey<RangedEntity> RANGED_ATTACK = create("ranged_attack", RangedEntity.class);
|
||||
|
||||
GoalKey<SchoolableFish> FOLLOW_FLOCK_LEADER = create("follow_flock_leader", SchoolableFish.class);
|
||||
GoalKey<SchoolableFish> SCHOOLABLE_FISH_FOLLOW_FLOCK_LEADER = create("schoolable_fish_follow_flock_leader", SchoolableFish.class);
|
||||
|
||||
GoalKey<Shulker> SHULKER_ATTACK = create("shulker_attack", Shulker.class);
|
||||
|
||||
@@ -373,7 +378,7 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Silverfish> SILVERFISH_WAKE_UP_FRIENDS = create("silverfish_wake_up_friends", Silverfish.class);
|
||||
|
||||
GoalKey<SkeletonHorse> SKELETON_TRAP = create("skeleton_trap", SkeletonHorse.class);
|
||||
GoalKey<SkeletonHorse> SKELETON_HORSE_SKELETON_TRAP = create("skeleton_horse_skeleton_trap", SkeletonHorse.class);
|
||||
|
||||
GoalKey<Slime> SLIME_ATTACK = create("slime_attack", Slime.class);
|
||||
|
||||
@@ -429,14 +434,14 @@ public interface VanillaGoal<T extends Mob> extends Goal<T> {
|
||||
|
||||
GoalKey<Vindicator> VINDICATOR_JOHNNY_ATTACK = create("vindicator_johnny_attack", Vindicator.class);
|
||||
|
||||
GoalKey<WanderingTrader> WANDER_TO_POSITION = create("wander_to_position", WanderingTrader.class);
|
||||
GoalKey<WanderingTrader> WANDERING_TRADER_WANDER_TO_POSITION = create("wandering_trader_wander_to_position", WanderingTrader.class);
|
||||
|
||||
GoalKey<Wither> WITHER_DO_NOTHING = create("wither_do_nothing", Wither.class);
|
||||
|
||||
GoalKey<Wolf> BEG = create("beg", Wolf.class);
|
||||
|
||||
GoalKey<Wolf> WOLF_AVOID_ENTITY = create("wolf_avoid_entity", Wolf.class);
|
||||
|
||||
GoalKey<Wolf> WOLF_BEG = create("wolf_beg", Wolf.class);
|
||||
|
||||
GoalKey<Zombie> ZOMBIE_ATTACK = create("zombie_attack", Zombie.class);
|
||||
|
||||
GoalKey<Zombie> ZOMBIE_ATTACK_TURTLE_EGG = create("zombie_attack_turtle_egg", Zombie.class);
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class AttributeKeys {
|
||||
/**
|
||||
* {@code minecraft:armor}
|
||||
@@ -81,6 +81,13 @@ public final class AttributeKeys {
|
||||
*/
|
||||
public static final TypedKey<Attribute> BURNING_TIME = create(key("burning_time"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:camera_distance}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Attribute> CAMERA_DISTANCE = create(key("camera_distance"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity_interaction_range}
|
||||
*
|
||||
@@ -249,6 +256,20 @@ public final class AttributeKeys {
|
||||
*/
|
||||
public static final TypedKey<Attribute> WATER_MOVEMENT_EFFICIENCY = create(key("water_movement_efficiency"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:waypoint_receive_range}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Attribute> WAYPOINT_RECEIVE_RANGE = create(key("waypoint_receive_range"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:waypoint_transmit_range}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Attribute> WAYPOINT_TRANSMIT_RANGE = create(key("waypoint_transmit_range"));
|
||||
|
||||
private AttributeKeys() {
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class BannerPatternKeys {
|
||||
/**
|
||||
* {@code minecraft:base}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class BiomeKeys {
|
||||
/**
|
||||
* {@code minecraft:badlands}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class BlockTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:acacia_button}
|
||||
@@ -2475,6 +2475,13 @@ public final class BlockTypeKeys {
|
||||
*/
|
||||
public static final TypedKey<BlockType> DRAGON_WALL_HEAD = create(key("dragon_wall_head"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:dried_ghast}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<BlockType> DRIED_GHAST = create(key("dried_ghast"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:dried_kelp_block}
|
||||
*
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class CatVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:all_black}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class ChickenVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:cold}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class CowVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:cold}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class DamageTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:arrow}
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class DataComponentTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:attribute_modifiers}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package io.papermc.paper.registry.keys;
|
||||
|
||||
import static net.kyori.adventure.key.Key.key;
|
||||
|
||||
import io.papermc.paper.dialog.Dialog;
|
||||
import io.papermc.paper.generated.GeneratedFrom;
|
||||
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#DIALOG}.
|
||||
*
|
||||
* @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
|
||||
@GeneratedFrom("1.21.7-rc2")
|
||||
public final class DialogKeys {
|
||||
/**
|
||||
* {@code minecraft:custom_options}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Dialog> CUSTOM_OPTIONS = create(key("custom_options"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:quick_actions}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Dialog> QUICK_ACTIONS = create(key("quick_actions"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:server_links}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Dialog> SERVER_LINKS = create(key("server_links"));
|
||||
|
||||
private DialogKeys() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a typed key for {@link Dialog} in the registry {@code minecraft:dialog}.
|
||||
*
|
||||
* @param key the value's key in the registry
|
||||
* @return a new typed key
|
||||
*/
|
||||
public static TypedKey<Dialog> create(final Key key) {
|
||||
return TypedKey.create(RegistryKey.DIALOG, key);
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class EnchantmentKeys {
|
||||
/**
|
||||
* {@code minecraft:aqua_affinity}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class FluidKeys {
|
||||
/**
|
||||
* {@code minecraft:empty}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class FrogVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:cold}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class GameEventKeys {
|
||||
/**
|
||||
* {@code minecraft:block_activate}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class InstrumentKeys {
|
||||
/**
|
||||
* {@code minecraft:admire_goat_horn}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class JukeboxSongKeys {
|
||||
/**
|
||||
* {@code minecraft:11}
|
||||
@@ -88,6 +88,13 @@ public final class JukeboxSongKeys {
|
||||
*/
|
||||
public static final TypedKey<JukeboxSong> FAR = create(key("far"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:lava_chicken}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<JukeboxSong> LAVA_CHICKEN = create(key("lava_chicken"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:mall}
|
||||
*
|
||||
@@ -144,6 +151,13 @@ public final class JukeboxSongKeys {
|
||||
*/
|
||||
public static final TypedKey<JukeboxSong> STRAD = create(key("strad"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:tears}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<JukeboxSong> TEARS = create(key("tears"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:wait}
|
||||
*
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class MapDecorationTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:banner_black}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class MenuTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:anvil}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class MobEffectKeys {
|
||||
/**
|
||||
* {@code minecraft:absorption}
|
||||
|
||||
+8
-1
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class PaintingVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:alban}
|
||||
@@ -123,6 +123,13 @@ public final class PaintingVariantKeys {
|
||||
*/
|
||||
public static final TypedKey<Art> CREEBET = create(key("creebet"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:dennis}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Art> DENNIS = create(key("dennis"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:donkey_kong}
|
||||
*
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class PigVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:cold}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class SoundEventKeys {
|
||||
/**
|
||||
* {@code minecraft:ambient.basalt_deltas.additions}
|
||||
@@ -1929,6 +1929,62 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DISPENSER_LAUNCH = create(key("block.dispenser.launch"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.ambient}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_AMBIENT = create(key("block.dried_ghast.ambient"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.ambient_water}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_AMBIENT_WATER = create(key("block.dried_ghast.ambient_water"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.break}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_BREAK = create(key("block.dried_ghast.break"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.fall}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_FALL = create(key("block.dried_ghast.fall"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.place}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_PLACE = create(key("block.dried_ghast.place"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.place_in_water}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_PLACE_IN_WATER = create(key("block.dried_ghast.place_in_water"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.step}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_STEP = create(key("block.dried_ghast.step"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dried_ghast.transition}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIED_GHAST_TRANSITION = create(key("block.dried_ghast.transition"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dripstone_block.break}
|
||||
*
|
||||
@@ -1964,6 +2020,13 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRIPSTONE_BLOCK_STEP = create(key("block.dripstone_block.step"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.dry_grass.ambient}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_DRY_GRASS_AMBIENT = create(key("block.dry_grass.ambient"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.enchantment_table.use}
|
||||
*
|
||||
@@ -4113,13 +4176,6 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_SAND_STEP = create(key("block.sand.step"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.sand.wind}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> BLOCK_SAND_WIND = create(key("block.sand.wind"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:block.scaffolding.break}
|
||||
*
|
||||
@@ -7207,6 +7263,34 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_GHAST_WARN = create(key("entity.ghast.warn"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.ghastling.ambient}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_GHASTLING_AMBIENT = create(key("entity.ghastling.ambient"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.ghastling.death}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_GHASTLING_DEATH = create(key("entity.ghastling.death"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.ghastling.hurt}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_GHASTLING_HURT = create(key("entity.ghastling.hurt"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.ghastling.spawn}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_GHASTLING_SPAWN = create(key("entity.ghastling.spawn"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.glow_item_frame.add_item}
|
||||
*
|
||||
@@ -7452,6 +7536,62 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_GUARDIAN_HURT_LAND = create(key("entity.guardian.hurt_land"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.ambient}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_AMBIENT = create(key("entity.happy_ghast.ambient"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.death}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_DEATH = create(key("entity.happy_ghast.death"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.equip}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_EQUIP = create(key("entity.happy_ghast.equip"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.harness_goggles_down}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_HARNESS_GOGGLES_DOWN = create(key("entity.happy_ghast.harness_goggles_down"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.harness_goggles_up}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_HARNESS_GOGGLES_UP = create(key("entity.happy_ghast.harness_goggles_up"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.hurt}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_HURT = create(key("entity.happy_ghast.hurt"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.riding}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_RIDING = create(key("entity.happy_ghast.riding"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.happy_ghast.unequip}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_HAPPY_GHAST_UNEQUIP = create(key("entity.happy_ghast.unequip"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.hoglin.ambient}
|
||||
*
|
||||
@@ -7816,20 +7956,6 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_ITEM_FRAME_ROTATE_ITEM = create(key("entity.item_frame.rotate_item"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.leash_knot.break}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_LEASH_KNOT_BREAK = create(key("entity.leash_knot.break"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.leash_knot.place}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_LEASH_KNOT_PLACE = create(key("entity.leash_knot.place"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.lightning_bolt.impact}
|
||||
*
|
||||
@@ -8880,13 +9006,6 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_POLAR_BEAR_WARNING = create(key("entity.polar_bear.warning"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.puffer_fish.ambient}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ENTITY_PUFFER_FISH_AMBIENT = create(key("entity.puffer_fish.ambient"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:entity.puffer_fish.blow_out}
|
||||
*
|
||||
@@ -11323,6 +11442,13 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_HONEYCOMB_WAX_ON = create(key("item.honeycomb.wax_on"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.horse_armor.unequip}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_HORSE_ARMOR_UNEQUIP = create(key("item.horse_armor.unequip"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.ink_sac.use}
|
||||
*
|
||||
@@ -11330,6 +11456,34 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_INK_SAC_USE = create(key("item.ink_sac.use"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.lead.break}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_LEAD_BREAK = create(key("item.lead.break"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.lead.tied}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_LEAD_TIED = create(key("item.lead.tied"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.lead.untied}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_LEAD_UNTIED = create(key("item.lead.untied"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.llama_carpet.unequip}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_LLAMA_CARPET_UNEQUIP = create(key("item.llama_carpet.unequip"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.lodestone_compass.lock}
|
||||
*
|
||||
@@ -11372,6 +11526,20 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_OMINOUS_BOTTLE_DISPOSE = create(key("item.ominous_bottle.dispose"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.saddle.unequip}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_SADDLE_UNEQUIP = create(key("item.saddle.unequip"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.shears.snip}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> ITEM_SHEARS_SNIP = create(key("item.shears.snip"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:item.shield.block}
|
||||
*
|
||||
@@ -11778,6 +11946,13 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> MUSIC_DISC_FAR = create(key("music_disc.far"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:music_disc.lava_chicken}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> MUSIC_DISC_LAVA_CHICKEN = create(key("music_disc.lava_chicken"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:music_disc.mall}
|
||||
*
|
||||
@@ -11834,6 +12009,13 @@ public final class SoundEventKeys {
|
||||
*/
|
||||
public static final TypedKey<Sound> MUSIC_DISC_STRAD = create(key("music_disc.strad"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:music_disc.tears}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TypedKey<Sound> MUSIC_DISC_TEARS = create(key("music_disc.tears"));
|
||||
|
||||
/**
|
||||
* {@code minecraft:music_disc.wait}
|
||||
*
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class StructureKeys {
|
||||
/**
|
||||
* {@code minecraft:ancient_city}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class StructureTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:buried_treasure}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class TrimMaterialKeys {
|
||||
/**
|
||||
* {@code minecraft:amethyst}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class TrimPatternKeys {
|
||||
/**
|
||||
* {@code minecraft:bolt}
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class VillagerProfessionKeys {
|
||||
/**
|
||||
* {@code minecraft:armorer}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class VillagerTypeKeys {
|
||||
/**
|
||||
* {@code minecraft:desert}
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class WolfSoundVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:angry}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class WolfVariantKeys {
|
||||
/**
|
||||
* {@code minecraft:ashen}
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.block.banner.PatternType;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class BannerPatternTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:no_item_required}
|
||||
@@ -113,7 +111,6 @@ public final class BannerPatternTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<PatternType> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.BANNER_PATTERN, key);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class BiomeTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:allows_surface_slime_spawns}
|
||||
@@ -540,7 +538,6 @@ public final class BiomeTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<Biome> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.BIOME, key);
|
||||
}
|
||||
|
||||
+29
-11
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.block.BlockType;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class BlockTypeTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:acacia_logs}
|
||||
@@ -580,6 +578,13 @@ public final class BlockTypeTagKeys {
|
||||
*/
|
||||
public static final TagKey<BlockType> GUARDED_BY_PIGLINS = create(key("guarded_by_piglins"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:happy_ghast_avoids}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<BlockType> HAPPY_GHAST_AVOIDS = create(key("happy_ghast_avoids"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:hoglin_repellents}
|
||||
*
|
||||
@@ -909,13 +914,6 @@ public final class BlockTypeTagKeys {
|
||||
*/
|
||||
public static final TagKey<BlockType> PLANKS = create(key("planks"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:plays_ambient_desert_block_sounds}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<BlockType> PLAYS_AMBIENT_DESERT_BLOCK_SOUNDS = create(key("plays_ambient_desert_block_sounds"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:polar_bears_spawnable_on_alternate}
|
||||
*
|
||||
@@ -1203,6 +1201,27 @@ public final class BlockTypeTagKeys {
|
||||
*/
|
||||
public static final TagKey<BlockType> TRAPDOORS = create(key("trapdoors"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:triggers_ambient_desert_dry_vegetation_block_sounds}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<BlockType> TRIGGERS_AMBIENT_DESERT_DRY_VEGETATION_BLOCK_SOUNDS = create(key("triggers_ambient_desert_dry_vegetation_block_sounds"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:triggers_ambient_desert_sand_block_sounds}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<BlockType> TRIGGERS_AMBIENT_DESERT_SAND_BLOCK_SOUNDS = create(key("triggers_ambient_desert_sand_block_sounds"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:triggers_ambient_dried_ghast_block_sounds}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<BlockType> TRIGGERS_AMBIENT_DRIED_GHAST_BLOCK_SOUNDS = create(key("triggers_ambient_dried_ghast_block_sounds"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:underwater_bonemeals}
|
||||
*
|
||||
@@ -1373,7 +1392,6 @@ public final class BlockTypeTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<BlockType> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.BLOCK, key);
|
||||
}
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.damage.DamageType;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class DamageTypeTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:always_hurts_ender_dragons}
|
||||
@@ -267,7 +265,6 @@ public final class DamageTypeTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<DamageType> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.DAMAGE_TYPE, key);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package io.papermc.paper.registry.keys.tags;
|
||||
|
||||
import static net.kyori.adventure.key.Key.key;
|
||||
|
||||
import io.papermc.paper.dialog.Dialog;
|
||||
import io.papermc.paper.generated.GeneratedFrom;
|
||||
import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* Vanilla tag keys for {@link RegistryKey#DIALOG}.
|
||||
*
|
||||
* @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
|
||||
@GeneratedFrom("1.21.7-rc2")
|
||||
@ApiStatus.Experimental
|
||||
public final class DialogTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:pause_screen_additions}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<Dialog> PAUSE_SCREEN_ADDITIONS = create(key("pause_screen_additions"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:quick_actions}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<Dialog> QUICK_ACTIONS = create(key("quick_actions"));
|
||||
|
||||
private DialogTagKeys() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a tag key for {@link Dialog} in the registry {@code minecraft:dialog}.
|
||||
*
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<Dialog> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.DIALOG, key);
|
||||
}
|
||||
}
|
||||
+1
-3
@@ -25,8 +25,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class EnchantmentTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:curse}
|
||||
@@ -317,7 +316,6 @@ public final class EnchantmentTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<Enchantment> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.ENCHANTMENT, key);
|
||||
}
|
||||
|
||||
+15
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class EntityTypeTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:aquatic}
|
||||
@@ -83,6 +81,13 @@ public final class EntityTypeTagKeys {
|
||||
*/
|
||||
public static final TagKey<EntityType> CAN_BREATHE_UNDER_WATER = create(key("can_breathe_under_water"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:can_equip_harness}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<EntityType> CAN_EQUIP_HARNESS = create(key("can_equip_harness"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:can_equip_saddle}
|
||||
*
|
||||
@@ -125,6 +130,13 @@ public final class EntityTypeTagKeys {
|
||||
*/
|
||||
public static final TagKey<EntityType> FALL_DAMAGE_IMMUNE = create(key("fall_damage_immune"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:followable_friendly_mobs}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<EntityType> FOLLOWABLE_FRIENDLY_MOBS = create(key("followable_friendly_mobs"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:freeze_hurts_extra_types}
|
||||
*
|
||||
@@ -295,7 +307,6 @@ public final class EntityTypeTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<EntityType> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.ENTITY_TYPE, key);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.Fluid;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class FluidTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:lava}
|
||||
@@ -50,7 +48,6 @@ public final class FluidTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<Fluid> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.FLUID, key);
|
||||
}
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.GameEvent;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class GameEventTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:allay_can_listen}
|
||||
@@ -71,7 +69,6 @@ public final class GameEventTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<GameEvent> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.GAME_EVENT, key);
|
||||
}
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.MusicInstrument;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class InstrumentTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:goat_horns}
|
||||
@@ -57,7 +55,6 @@ public final class InstrumentTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<MusicInstrument> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.INSTRUMENT, key);
|
||||
}
|
||||
|
||||
+22
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.inventory.ItemType;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class ItemTypeTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:acacia_logs}
|
||||
@@ -601,6 +599,27 @@ public final class ItemTypeTagKeys {
|
||||
*/
|
||||
public static final TagKey<ItemType> HANGING_SIGNS = create(key("hanging_signs"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:happy_ghast_food}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<ItemType> HAPPY_GHAST_FOOD = create(key("happy_ghast_food"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:happy_ghast_tempt_items}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<ItemType> HAPPY_GHAST_TEMPT_ITEMS = create(key("happy_ghast_tempt_items"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:harnesses}
|
||||
*
|
||||
* @apiNote This field is version-dependant and may be removed in future Minecraft versions
|
||||
*/
|
||||
public static final TagKey<ItemType> HARNESSES = create(key("harnesses"));
|
||||
|
||||
/**
|
||||
* {@code #minecraft:head_armor}
|
||||
*
|
||||
@@ -1268,7 +1287,6 @@ public final class ItemTypeTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<ItemType> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.ITEM, key);
|
||||
}
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.Art;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class PaintingVariantTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:placeable}
|
||||
@@ -43,7 +41,6 @@ public final class PaintingVariantTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<Art> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.PAINTING_VARIANT, key);
|
||||
}
|
||||
|
||||
+1
-4
@@ -7,7 +7,6 @@ import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.tag.TagKey;
|
||||
import net.kyori.adventure.key.Key;
|
||||
import org.bukkit.generator.structure.Structure;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -24,8 +23,7 @@ import org.jspecify.annotations.NullMarked;
|
||||
"SpellCheckingInspection"
|
||||
})
|
||||
@NullMarked
|
||||
@GeneratedFrom("1.21.5")
|
||||
@ApiStatus.Experimental
|
||||
@GeneratedFrom("1.21.7")
|
||||
public final class StructureTagKeys {
|
||||
/**
|
||||
* {@code #minecraft:cats_spawn_as_black}
|
||||
@@ -176,7 +174,6 @@ public final class StructureTagKeys {
|
||||
* @param key the tag key's key
|
||||
* @return a new tag key
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
public static TagKey<Structure> create(final Key key) {
|
||||
return TagKey.create(RegistryKey.STRUCTURE, key);
|
||||
}
|
||||
|
||||
@@ -317,7 +317,7 @@ public class MaterialTags {
|
||||
*/
|
||||
public static final MaterialSetTag SPAWN_EGGS = new MaterialSetTag(keyFor("spawn_eggs"))
|
||||
.endsWith("_SPAWN_EGG")
|
||||
.ensureSize("SPAWN_EGGS", 81).lock();
|
||||
.ensureSize("SPAWN_EGGS", 82).lock();
|
||||
|
||||
/**
|
||||
* Covers all colors of stained glass.
|
||||
|
||||
@@ -15,45 +15,46 @@ import org.jspecify.annotations.Nullable;
|
||||
@NullMarked
|
||||
public final class GoalKey<T extends Mob> {
|
||||
|
||||
private final Class<T> entityClass;
|
||||
private final NamespacedKey namespacedKey;
|
||||
private final Class<T> type;
|
||||
private final NamespacedKey key;
|
||||
|
||||
private GoalKey(Class<T> entityClass, NamespacedKey namespacedKey) {
|
||||
this.entityClass = entityClass;
|
||||
this.namespacedKey = namespacedKey;
|
||||
private GoalKey(Class<T> type, NamespacedKey key) {
|
||||
this.type = type;
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public Class<T> getEntityClass() {
|
||||
return this.entityClass;
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public NamespacedKey getNamespacedKey() {
|
||||
return this.namespacedKey;
|
||||
return this.key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(@Nullable Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || this.getClass() != o.getClass()) return false;
|
||||
|
||||
GoalKey<?> goalKey = (GoalKey<?>) o;
|
||||
return Objects.equals(this.entityClass, goalKey.entityClass) &&
|
||||
Objects.equals(this.namespacedKey, goalKey.namespacedKey);
|
||||
return Objects.equals(this.type, goalKey.type) &&
|
||||
Objects.equals(this.key, goalKey.key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.entityClass, this.namespacedKey);
|
||||
return Objects.hash(this.type, this.key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new StringJoiner(", ", GoalKey.class.getSimpleName() + "[", "]")
|
||||
.add("entityClass=" + this.entityClass)
|
||||
.add("namespacedKey=" + this.namespacedKey)
|
||||
.add("type=" + this.type)
|
||||
.add("key=" + this.key)
|
||||
.toString();
|
||||
}
|
||||
|
||||
public static <A extends Mob> GoalKey<A> of(Class<A> entityClass, NamespacedKey namespacedKey) {
|
||||
return new GoalKey<>(entityClass, namespacedKey);
|
||||
public static <A extends Mob> GoalKey<A> of(Class<A> type, NamespacedKey key) {
|
||||
return new GoalKey<>(type, key);
|
||||
}
|
||||
}
|
||||
-3
@@ -9,7 +9,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.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@@ -19,10 +18,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
* This is done at Plugin Enable time after commands have been registered, but may also
|
||||
* run at a later point in the server lifetime due to plugins, a server reload, etc.</p>
|
||||
*
|
||||
* <p>This is a draft/experimental API and is subject to change.</p>
|
||||
* @deprecated For removal, use the new brigadier api.
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@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 {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.papermc.paper;
|
||||
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.world.damagesource.CombatEntry;
|
||||
import io.papermc.paper.world.damagesource.FallLocationType;
|
||||
import net.kyori.adventure.util.Services;
|
||||
@@ -11,6 +12,8 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* Static bridge to the server internals.
|
||||
* <p>
|
||||
@@ -73,5 +76,15 @@ public interface InternalAPIBridge {
|
||||
* @return combat entry
|
||||
*/
|
||||
CombatEntry createCombatEntry(DamageSource damageSource, float damage, @Nullable FallLocationType fallLocationType, float fallDistance);
|
||||
|
||||
/**
|
||||
* Causes this predicate to be considered restricted.
|
||||
* Applying this to a command node prevents this command from being executed from an
|
||||
* unattended context, such as click events.
|
||||
*
|
||||
* @param predicate wrapped predicate
|
||||
* @return wrapped predicate
|
||||
*/
|
||||
Predicate<CommandSourceStack> restricted(Predicate<CommandSourceStack> predicate);
|
||||
}
|
||||
|
||||
@@ -4,15 +4,12 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Implementing this interface allows for easily creating "Bukkit-style" {@code String[] args} commands.
|
||||
* The implementation handles converting the command to a representation compatible with Brigadier on registration, usually in the form of {@literal /commandlabel <greedy_string>}.
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
@FunctionalInterface
|
||||
public interface BasicCommand {
|
||||
|
||||
|
||||
+2
-1
@@ -17,7 +17,8 @@ public enum CommandRegistrationFlag {
|
||||
@Deprecated(since = "1.21.4")
|
||||
FLATTEN_ALIASES,
|
||||
/**
|
||||
* Prevents this command from being sent to the client.
|
||||
* @deprecated Removed as it causes a warning to appear on the client now.
|
||||
*/
|
||||
@Deprecated(since = "1.21.6", forRemoval = true)
|
||||
SERVER_ONLY
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import org.bukkit.Location;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
/**
|
||||
@@ -21,8 +20,6 @@ import org.jspecify.annotations.Nullable;
|
||||
* exist yet, or no specific sender is available. Methods on such a {@link CommandSender}
|
||||
* will either have no effect or throw an {@link UnsupportedOperationException}.</p>
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
@ApiStatus.NonExtendable
|
||||
public interface CommandSourceStack {
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mojang.brigadier.arguments.ArgumentType;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import io.papermc.paper.InternalAPIBridge;
|
||||
import io.papermc.paper.plugin.bootstrap.BootstrapContext;
|
||||
import io.papermc.paper.plugin.bootstrap.PluginBootstrap;
|
||||
import io.papermc.paper.plugin.configuration.PluginMeta;
|
||||
@@ -13,9 +14,9 @@ import io.papermc.paper.plugin.lifecycle.event.registrar.Registrar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.Unmodifiable;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
/**
|
||||
@@ -58,8 +59,6 @@ import org.jspecify.annotations.Nullable;
|
||||
*
|
||||
* @see io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents#COMMANDS
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
@ApiStatus.NonExtendable
|
||||
public interface Commands extends Registrar {
|
||||
|
||||
@@ -85,6 +84,22 @@ public interface Commands extends Registrar {
|
||||
return RequiredArgumentBuilder.argument(name, argumentType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a restricted {@link Predicate} that wraps the given predicate.
|
||||
* <p>
|
||||
* A restricted predicate prevents execution in unattended contexts, such as from
|
||||
* chat click events. A warning is shown on the client before executing the command.
|
||||
* <p>
|
||||
* This is used by vanilla to prevent invocation of sensitive commands (like op) from
|
||||
* players without their knowledge.
|
||||
*
|
||||
* @param predicate the original predicate to wrap
|
||||
* @return a new predicate with restricted execution behavior
|
||||
*/
|
||||
static Predicate<CommandSourceStack> restricted(final Predicate<CommandSourceStack> predicate) {
|
||||
return InternalAPIBridge.get().restricted(predicate);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the underlying {@link CommandDispatcher}.
|
||||
*
|
||||
|
||||
+6
-4
@@ -1,16 +1,15 @@
|
||||
package io.papermc.paper.command.brigadier;
|
||||
|
||||
import com.mojang.brigadier.Message;
|
||||
import java.util.Optional;
|
||||
import java.util.ServiceLoader;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.ComponentSerializer;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* A component serializer for converting between {@link Message} and {@link Component}.
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
@ApiStatus.NonExtendable
|
||||
public interface MessageComponentSerializer extends ComponentSerializer<Component, Component, Message> {
|
||||
|
||||
@@ -20,6 +19,9 @@ public interface MessageComponentSerializer extends ComponentSerializer<Componen
|
||||
* @return serializer instance
|
||||
*/
|
||||
static MessageComponentSerializer message() {
|
||||
return MessageComponentSerializerHolder.PROVIDER.orElseThrow();
|
||||
final class Holder {
|
||||
static final Optional<MessageComponentSerializer> PROVIDER = ServiceLoader.load(MessageComponentSerializer.class, MessageComponentSerializer.class.getClassLoader()).findFirst();
|
||||
}
|
||||
return Holder.PROVIDER.orElseThrow();
|
||||
}
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package io.papermc.paper.command.brigadier;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.ServiceLoader;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
@ApiStatus.Internal
|
||||
final class MessageComponentSerializerHolder {
|
||||
|
||||
static final Optional<MessageComponentSerializer> PROVIDER = ServiceLoader.load(MessageComponentSerializer.class)
|
||||
.findFirst();
|
||||
}
|
||||
+10
-4
@@ -18,6 +18,7 @@ import net.kyori.adventure.key.Key;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.HeightMap;
|
||||
import org.bukkit.NamespacedKey;
|
||||
@@ -28,8 +29,6 @@ import org.bukkit.block.structure.StructureRotation;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scoreboard.Criteria;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
import static io.papermc.paper.command.brigadier.argument.VanillaArgumentProvider.provider;
|
||||
|
||||
@@ -41,8 +40,6 @@ import static io.papermc.paper.command.brigadier.argument.VanillaArgumentProvide
|
||||
*
|
||||
* <p>{@link CustomArgumentType} is provided for customizing parsing or result types server-side, while sending the vanilla argument type to the client.</p>
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
public final class ArgumentTypes {
|
||||
|
||||
/**
|
||||
@@ -171,6 +168,15 @@ public final class ArgumentTypes {
|
||||
return provider().namedColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* A hex color argument.
|
||||
*
|
||||
* @return argument
|
||||
*/
|
||||
public static ArgumentType<TextColor> hexColor() {
|
||||
return provider().hexColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* A component argument.
|
||||
*
|
||||
|
||||
-4
@@ -9,7 +9,6 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* An argument type that wraps around a native-to-vanilla argument type.
|
||||
@@ -23,8 +22,6 @@ import org.jspecify.annotations.NullMarked;
|
||||
* @param <T> custom type
|
||||
* @param <N> type with an argument native to vanilla Minecraft (from {@link ArgumentTypes})
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
public interface CustomArgumentType<T, N> extends ArgumentType<T> {
|
||||
|
||||
/**
|
||||
@@ -107,7 +104,6 @@ public interface CustomArgumentType<T, N> extends ArgumentType<T> {
|
||||
* @param <T> custom type
|
||||
* @param <N> type with an argument native to vanilla Minecraft (from {@link ArgumentTypes})
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
interface Converted<T, N> extends CustomArgumentType<T, N> {
|
||||
|
||||
@ApiStatus.NonExtendable
|
||||
|
||||
-2
@@ -3,12 +3,10 @@ package io.papermc.paper.command.brigadier.argument;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import io.papermc.paper.registry.RegistryKey;
|
||||
import io.papermc.paper.registry.TypedKey;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* Utilities for extracting registry-related arguments from a {@link CommandContext}.
|
||||
*/
|
||||
@NullMarked
|
||||
public final class RegistryArgumentExtractor {
|
||||
|
||||
/**
|
||||
|
||||
-4
@@ -6,15 +6,12 @@ import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import net.kyori.adventure.chat.SignedMessage;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* A resolver for a {@link SignedMessage}
|
||||
*
|
||||
* @see ArgumentTypes#signedMessage()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
@ApiStatus.NonExtendable
|
||||
public interface SignedMessageResolver {
|
||||
|
||||
@@ -38,5 +35,4 @@ public interface SignedMessageResolver {
|
||||
* @throws CommandSyntaxException syntax exception
|
||||
*/
|
||||
CompletableFuture<SignedMessage> resolveSignedMessage(String argumentName, CommandContext<CommandSourceStack> context) throws CommandSyntaxException;
|
||||
|
||||
}
|
||||
+4
-4
@@ -20,6 +20,7 @@ import net.kyori.adventure.key.Key;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.HeightMap;
|
||||
import org.bukkit.NamespacedKey;
|
||||
@@ -31,14 +32,11 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scoreboard.Criteria;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
@ApiStatus.Internal
|
||||
@NullMarked
|
||||
interface VanillaArgumentProvider {
|
||||
|
||||
Optional<VanillaArgumentProvider> PROVIDER = ServiceLoader.load(VanillaArgumentProvider.class)
|
||||
.findFirst();
|
||||
Optional<VanillaArgumentProvider> PROVIDER = ServiceLoader.load(VanillaArgumentProvider.class, VanillaArgumentProvider.class.getClassLoader()).findFirst();
|
||||
|
||||
static VanillaArgumentProvider provider() {
|
||||
return PROVIDER.orElseThrow();
|
||||
@@ -68,6 +66,8 @@ interface VanillaArgumentProvider {
|
||||
|
||||
ArgumentType<NamedTextColor> namedColor();
|
||||
|
||||
ArgumentType<TextColor> hexColor();
|
||||
|
||||
ArgumentType<Component> component();
|
||||
|
||||
ArgumentType<Style> style();
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Arguments.
|
||||
*/
|
||||
@NullMarked
|
||||
package io.papermc.paper.command.brigadier.argument;
|
||||
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
-1
@@ -9,7 +9,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
*
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#itemPredicate()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface ItemStackPredicate extends Predicate<ItemStack> {
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Predicates for argument types.
|
||||
*/
|
||||
@NullMarked
|
||||
package io.papermc.paper.command.brigadier.argument.predicate;
|
||||
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
-2
@@ -7,8 +7,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
*
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#doubleRange()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public non-sealed interface DoubleRangeProvider extends RangeProvider<Double> {
|
||||
|
||||
}
|
||||
-2
@@ -7,8 +7,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
*
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#integerRange()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public non-sealed interface IntegerRangeProvider extends RangeProvider<Integer> {
|
||||
|
||||
}
|
||||
-4
@@ -1,8 +1,6 @@
|
||||
package io.papermc.paper.command.brigadier.argument.range;
|
||||
|
||||
import com.google.common.collect.Range;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* A provider for a range of numbers
|
||||
@@ -10,8 +8,6 @@ import org.jspecify.annotations.NullMarked;
|
||||
* @param <T>
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
public sealed interface RangeProvider<T extends Comparable<?>> permits DoubleRangeProvider, IntegerRangeProvider {
|
||||
|
||||
/**
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Range providers.
|
||||
*/
|
||||
@NullMarked
|
||||
package io.papermc.paper.command.brigadier.argument.range;
|
||||
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
-3
@@ -3,7 +3,6 @@ package io.papermc.paper.command.brigadier.argument.resolvers;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* An {@link ArgumentResolver} is capable of resolving
|
||||
@@ -12,8 +11,6 @@ import org.jspecify.annotations.NullMarked;
|
||||
* @param <T> resolved type
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
@ApiStatus.NonExtendable
|
||||
public interface ArgumentResolver<T> {
|
||||
|
||||
|
||||
-1
@@ -10,7 +10,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
*
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#blockPosition()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface BlockPositionResolver extends ArgumentResolver<BlockPosition> {
|
||||
}
|
||||
-1
@@ -11,7 +11,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#finePosition()
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#finePosition(boolean)
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface FinePositionResolver extends ArgumentResolver<FinePosition> {
|
||||
}
|
||||
-1
@@ -11,7 +11,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
*
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#playerProfiles()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface PlayerProfileListResolver extends ArgumentResolver<Collection<PlayerProfile>> {
|
||||
}
|
||||
-1
@@ -10,7 +10,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
*
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#rotation()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface RotationResolver extends ArgumentResolver<Rotation> {
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Argument resolvers.
|
||||
*/
|
||||
@NullMarked
|
||||
package io.papermc.paper.command.brigadier.argument.resolvers;
|
||||
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
-1
@@ -13,7 +13,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#entity()
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#entities()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface EntitySelectorArgumentResolver extends SelectorArgumentResolver<List<Entity>> {
|
||||
}
|
||||
-1
@@ -13,7 +13,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#player()
|
||||
* @see io.papermc.paper.command.brigadier.argument.ArgumentTypes#players()
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface PlayerSelectorArgumentResolver extends SelectorArgumentResolver<List<Player>> {
|
||||
}
|
||||
-1
@@ -11,7 +11,6 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
* @param <T> resolved type
|
||||
* @see <a href="https://minecraft.wiki/w/Target_selectors">Target Selectors</a>
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@ApiStatus.NonExtendable
|
||||
public interface SelectorArgumentResolver<T> extends ArgumentResolver<T> {
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Entity selector argument resolvers.
|
||||
*/
|
||||
@NullMarked
|
||||
package io.papermc.paper.command.brigadier.argument.resolvers.selector;
|
||||
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Brigadier connection API.
|
||||
*/
|
||||
@NullMarked
|
||||
package io.papermc.paper.command.brigadier;
|
||||
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
@@ -21,4 +21,13 @@ public interface ServerConfiguration {
|
||||
* @return whether the server is in online mode or behind a proxy configured for online mode
|
||||
*/
|
||||
boolean isProxyOnlineMode();
|
||||
|
||||
/**
|
||||
* Gets whether the server is configured to work behind a proxy.
|
||||
* <p>
|
||||
* This returns true if either Velocity or BungeeCord is enabled.
|
||||
*
|
||||
* @return whether the server is configured to work behind a proxy
|
||||
*/
|
||||
boolean isProxyEnabled();
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.destroystokyo.paper.ClientOption;
|
||||
import org.bukkit.ServerLinks;
|
||||
|
||||
/**
|
||||
* Represents a connection that has properties shared between the GAME and CONFIG stage.
|
||||
*/
|
||||
public interface PlayerCommonConnection extends WritablePlayerCookieConnection, ReadablePlayerCookieConnection {
|
||||
|
||||
/**
|
||||
* Sends data to appear in this connection's report logs.
|
||||
* This is useful for debugging server state that may be causing
|
||||
* player disconnects.
|
||||
* <p>
|
||||
* These are formatted as key - value, where keys are limited to a length of 128 characters,
|
||||
* values are limited to 4096, and 32 maximum entries can be sent.
|
||||
*
|
||||
* @param details report details
|
||||
*/
|
||||
void sendReportDetails(Map<String, String> details);
|
||||
|
||||
/**
|
||||
* Sends the given server links to this connection.
|
||||
*
|
||||
* @param links links to send
|
||||
*/
|
||||
void sendLinks(ServerLinks links);
|
||||
|
||||
/**
|
||||
* Transfers this connection to another server.
|
||||
*
|
||||
* @param host host
|
||||
* @param port port
|
||||
*/
|
||||
void transfer(String host, int port);
|
||||
|
||||
/**
|
||||
* @param type client option
|
||||
* @return the client option value of the player
|
||||
*/
|
||||
<T> T getClientOption(ClientOption<T> type);
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import com.destroystokyo.paper.ClientOption;
|
||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
|
||||
public interface PlayerConfigurationConnection extends PlayerCommonConnection {
|
||||
|
||||
/**
|
||||
* Returns the audience representing the player in configuration mode.
|
||||
* This can be used to interact with the Adventure API during the configuration stage.
|
||||
* This is guaranteed to be an instance of {@link PlayerConfigurationConnection}
|
||||
*
|
||||
* @return the configuring player audience
|
||||
*/
|
||||
Audience getAudience();
|
||||
|
||||
/**
|
||||
* Gets the profile for this connection.
|
||||
*
|
||||
* @return profile
|
||||
*/
|
||||
PlayerProfile getProfile();
|
||||
|
||||
/**
|
||||
* Clears the players chat history and their local chat.
|
||||
*/
|
||||
void clearChat();
|
||||
|
||||
/**
|
||||
* Completes the configuration for this player, which will cause this player to reenter the game.
|
||||
* <p>
|
||||
* Note, this should be only be called if you are reconfiguring the player.
|
||||
*/
|
||||
void completeReconfiguration();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
public interface PlayerConnection {
|
||||
|
||||
/**
|
||||
* Disconnects the player connection.
|
||||
* <p>
|
||||
* Note that calling this during connection related events may caused undefined behavior.
|
||||
*
|
||||
* @param component disconnect reason
|
||||
*/
|
||||
void disconnect(Component component);
|
||||
|
||||
/**
|
||||
* Gets if this connection originated from a transferred connection.
|
||||
* <p>
|
||||
* Do note that this is sent and stored on the client.
|
||||
*
|
||||
* @return is transferred
|
||||
*/
|
||||
boolean isTransferred();
|
||||
|
||||
/**
|
||||
* Gets the raw remote address of the connection. This may be a proxy address
|
||||
* or a Unix domain socket address, depending on how the channel was established.
|
||||
*
|
||||
* @return the remote {@link SocketAddress} of the channel
|
||||
*/
|
||||
SocketAddress getAddress();
|
||||
|
||||
/**
|
||||
* Gets the real client address of the player. If the connection is behind a proxy,
|
||||
* this will be the actual player’s IP address extracted from the proxy handshake.
|
||||
*
|
||||
* @return the client {@link InetSocketAddress}
|
||||
*/
|
||||
InetSocketAddress getClientAddress();
|
||||
|
||||
/**
|
||||
* Returns the virtual host the client is connected to.
|
||||
*
|
||||
* <p>The virtual host refers to the hostname/port the client used to
|
||||
* connect to the server.</p>
|
||||
*
|
||||
* @return The client's virtual host, or {@code null} if unknown
|
||||
*/
|
||||
@Nullable InetSocketAddress getVirtualHost();
|
||||
|
||||
/**
|
||||
* Gets the socket address of this player's proxy
|
||||
*
|
||||
* @return the player's proxy address, null if the server doesn't have Proxy Protocol enabled, or the player didn't connect to an HAProxy instance
|
||||
*/
|
||||
@Nullable InetSocketAddress getHAProxyAddress();
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public interface PlayerGameConnection extends PlayerCommonConnection {
|
||||
|
||||
/**
|
||||
* Bumps the player to the configuration stage.
|
||||
* <p>
|
||||
* This will, by default, cause the player to stay until their connection is released by
|
||||
* {@link PlayerConfigurationConnection#completeReconfiguration()}
|
||||
*/
|
||||
void reenterConfiguration();
|
||||
|
||||
/**
|
||||
* Gets the player that is associated with this game connection.
|
||||
*
|
||||
* @return player
|
||||
*/
|
||||
Player getPlayer();
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
public interface PlayerLoginConnection extends ReadablePlayerCookieConnection {
|
||||
|
||||
/**
|
||||
* Gets the authenticated profile for this connection.
|
||||
* This may return null depending on what stage this connection is at.
|
||||
*
|
||||
* @return authenticated profile, or null if not present
|
||||
*/
|
||||
@Nullable PlayerProfile getAuthenticatedProfile();
|
||||
|
||||
/**
|
||||
* Gets the player profile that this connection is requesting to authenticate as.
|
||||
*
|
||||
* @return the unsafe unauthenticated profile, or null if not sent
|
||||
*/
|
||||
@Nullable
|
||||
PlayerProfile getUnsafeProfile();
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
public interface ReadablePlayerCookieConnection extends PlayerConnection {
|
||||
|
||||
/**
|
||||
* Retrieves a cookie from this connection.
|
||||
*
|
||||
* @param key the key identifying the cookie
|
||||
* @return a {@link CompletableFuture} that will be completed when the
|
||||
* Cookie response is received or otherwise available. If the cookie is not
|
||||
* set in the client, the {@link CompletableFuture} will complete with a
|
||||
* null value.
|
||||
*/
|
||||
CompletableFuture<byte[]> retrieveCookie(NamespacedKey key);
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
public interface WritablePlayerCookieConnection extends PlayerConnection {
|
||||
|
||||
/**
|
||||
* Stores a cookie in this player's client.
|
||||
*
|
||||
* @param key the key identifying the cookie
|
||||
* @param value the data to store in the cookie
|
||||
* @throws IllegalStateException if a cookie cannot be stored at this time
|
||||
*/
|
||||
void storeCookie(NamespacedKey key, byte[] value);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* This package contains events related to player connections, such as joining and leaving the server.
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
@NullMarked
|
||||
package io.papermc.paper.connection;
|
||||
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
@@ -3,7 +3,6 @@ package io.papermc.paper.datacomponent;
|
||||
import org.bukkit.Utility;
|
||||
import org.bukkit.persistence.PersistentDataContainer;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
@@ -23,8 +22,8 @@ public interface DataComponentHolder extends DataComponentView {
|
||||
* @param <T> value type
|
||||
*/
|
||||
@Utility
|
||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
||||
public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type, final @NotNull io.papermc.paper.datacomponent.DataComponentBuilder<T> valueBuilder);
|
||||
@ApiStatus.Experimental
|
||||
<T> void setData(final DataComponentType.Valued<T> type, final DataComponentBuilder<T> valueBuilder);
|
||||
|
||||
/**
|
||||
* Sets the value of the data component type for this holder.
|
||||
@@ -33,16 +32,16 @@ public interface DataComponentHolder extends DataComponentView {
|
||||
* @param value value to set
|
||||
* @param <T> value type
|
||||
*/
|
||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
||||
public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type, final @NotNull T value);
|
||||
@ApiStatus.Experimental
|
||||
<T> void setData(final DataComponentType.Valued<T> type, final T value);
|
||||
|
||||
/**
|
||||
* Marks this non-valued data component type as present in this itemstack.
|
||||
*
|
||||
* @param type the data component type
|
||||
*/
|
||||
@org.jetbrains.annotations.ApiStatus.Experimental
|
||||
public void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull NonValued type);
|
||||
@ApiStatus.Experimental
|
||||
void setData(final DataComponentType.NonValued type);
|
||||
|
||||
// TODO: Do we even want to have the concept of overriding here? Not sure what is going on with entity components
|
||||
}
|
||||
@@ -364,8 +364,8 @@ public final class DataComponentTypes {
|
||||
public static final DataComponentType.Valued<Rabbit.Type> RABBIT_VARIANT = valued("rabbit/variant");
|
||||
public static final DataComponentType.Valued<Pig.Variant> PIG_VARIANT = valued("pig/variant");
|
||||
public static final DataComponentType.Valued<Cow.Variant> COW_VARIANT = valued("cow/variant");
|
||||
// TODO: This is a eitherholder? Why specifically the chicken?? Oh wait this is prolly for chicken egg cause legacy item loading
|
||||
public static final DataComponentType.Valued<Chicken.Variant> CHICKEN_VARIANT = valued("chicken/variant");
|
||||
// This is a eitherholder? Why specifically the chicken?? Oh wait this is prolly for chicken egg cause legacy item loading
|
||||
public static final DataComponentType.Valued<Frog.Variant> FROG_VARIANT = valued("frog/variant");
|
||||
public static final DataComponentType.Valued<Horse.Color> HORSE_VARIANT = valued("horse/variant");
|
||||
public static final DataComponentType.Valued<Art> PAINTING_VARIANT = valued("painting/variant");
|
||||
@@ -376,7 +376,6 @@ public final class DataComponentTypes {
|
||||
public static final DataComponentType.Valued<DyeColor> SHEEP_COLOR = valued("sheep/color");
|
||||
public static final DataComponentType.Valued<DyeColor> SHULKER_COLOR = valued("shulker/color");
|
||||
|
||||
|
||||
private static DataComponentType.NonValued unvalued(final String name) {
|
||||
final DataComponentType dataComponentType = requireNonNull(Registry.DATA_COMPONENT_TYPE.get(NamespacedKey.minecraft(name)), name + " unvalued data component type couldn't be found, this is a bug.");
|
||||
if (dataComponentType instanceof DataComponentType.NonValued) {
|
||||
|
||||
Loaded 100 of 1063 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user