mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-26 09:06:40 +01:00
ad9c58e103
Since 1.21.2, vanilla split relative teleportation flags into position and delta/velocity flags into separate enum entries. This highlighted a design flaw in the paper api addition for teleport flags, which just simply mirrored internals while also only being able to apply the delta/velocity part of a flag, given the teleport target is always absolute in the API. This patch proposes to simply no longer expose the non-velocity related flags to the API, instead marking the entire Relative enum as being purely velocity related, as non-velocity related flags are not useful to callers. This was done over simply exposing all internal flags, as another vanilla change to the internal enum would result in the same breakage. The newly proposed API *only* promises that the passed flags prevent the loss of velocity in the specific axis/context, which should be independent enough of vanillas specific implementation of this feature.
57 lines
2.3 KiB
Diff
57 lines
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: dawon <dawon@dawon.eu>
|
|
Date: Sat, 15 Oct 2022 00:46:57 +0200
|
|
Subject: [PATCH] Add Player Warden Warning API
|
|
|
|
== AT ==
|
|
public net.minecraft.server.level.ServerPlayer wardenSpawnTracker
|
|
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker ticksSinceLastWarning
|
|
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker cooldownTicks
|
|
public net.minecraft.world.entity.monster.warden.WardenSpawnTracker increaseWarningLevel()V
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index b6c8eb48c78ae40ab8ea5af3339086d1d300cf93..b4191c1a54666b82c4da14f06343dae581f9f7f7 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -3325,6 +3325,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
public void showElderGuardian(boolean silent) {
|
|
if (getHandle().connection != null) getHandle().connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.GUARDIAN_ELDER_EFFECT, silent ? 0F : 1F));
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public int getWardenWarningCooldown() {
|
|
+ return this.getHandle().wardenSpawnTracker.cooldownTicks;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setWardenWarningCooldown(int cooldown) {
|
|
+ this.getHandle().wardenSpawnTracker.cooldownTicks = Math.max(cooldown, 0);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public int getWardenTimeSinceLastWarning() {
|
|
+ return this.getHandle().wardenSpawnTracker.ticksSinceLastWarning;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setWardenTimeSinceLastWarning(int time) {
|
|
+ this.getHandle().wardenSpawnTracker.ticksSinceLastWarning = time;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public int getWardenWarningLevel() {
|
|
+ return this.getHandle().wardenSpawnTracker.getWarningLevel();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setWardenWarningLevel(int warningLevel) {
|
|
+ this.getHandle().wardenSpawnTracker.setWarningLevel(warningLevel);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void increaseWardenWarningLevel() {
|
|
+ this.getHandle().wardenSpawnTracker.increaseWarningLevel();
|
|
+ }
|
|
// Paper end
|
|
|
|
public Player.Spigot spigot()
|