diff --git a/src/main/java/catserver/api/annotation/Backported.java b/src/main/java/catserver/api/annotation/Backported.java new file mode 100644 index 000000000..3294867e2 --- /dev/null +++ b/src/main/java/catserver/api/annotation/Backported.java @@ -0,0 +1,13 @@ +package catserver.api.annotation; + +import java.lang.annotation.*; + +/** + * Indicates that the annotated api method is backported from a newer version of Minecraft. + */ +@Documented +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.METHOD, ElementType.TYPE}) +public @interface Backported { + String from() default ""; +} diff --git a/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java b/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java index 072434495..e4a5765d4 100644 --- a/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/server/ServerTickEndEvent.java @@ -1,11 +1,13 @@ package com.destroystokyo.paper.event.server; +import catserver.api.annotation.Backported; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; /** * Called when the server has finished ticking the main loop */ +@Backported(from = "1.13.2") public class ServerTickEndEvent extends Event { private static final HandlerList HANDLER_LIST = new HandlerList(); diff --git a/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java b/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java index f937824a3..512d5ab0d 100644 --- a/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/server/ServerTickStartEvent.java @@ -1,8 +1,10 @@ package com.destroystokyo.paper.event.server; +import catserver.api.annotation.Backported; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +@Backported(from = "1.13.2") public class ServerTickStartEvent extends Event { private static final HandlerList HANDLER_LIST = new HandlerList(); diff --git a/src/main/java/org/bukkit/craftbukkit/v1_12_R1/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/v1_12_R1/entity/CraftPlayer.java index 423729941..752628af7 100644 --- a/src/main/java/org/bukkit/craftbukkit/v1_12_R1/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/v1_12_R1/entity/CraftPlayer.java @@ -1543,6 +1543,13 @@ public org.bukkit.advancement.AdvancementProgress getAdvancementProgress(org.buk return new CraftAdvancementProgress(craft, data, progress); } + // CatRoom start - Backport APIs + @Override + public int getPing() { + return this.getHandle().ping; + } + // CatRoom end - Backport APIs + @Override public String getLocale() { return getHandle().language; diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java index cfe8e84ef..8dd4ccf3b 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -1427,6 +1427,24 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline */ public AdvancementProgress getAdvancementProgress(Advancement advancement); + // CatRoom start - Backport APIs + /** + * Gets the player's estimated ping in milliseconds. + * + * In Vanilla this value represents a weighted average of the response time + * to application layer ping packets sent. This value does not represent the + * network round trip time and as such may have less granularity and be + * impacted by other sources. For these reasons it should not be used + * for anti-cheat purposes. Its recommended use is only as a + * qualitative indicator of connection quality (Vanilla uses it for + * this purpose in the tab list). + * + * @return player ping + */ + @catserver.api.annotation.Backported(from = "1.17") + public int getPing(); + // CatRoom end - Backport APIs + /** * Gets the player's current locale. *