From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 20 Jun 2021 20:24:14 -0400 Subject: [PATCH] Add Getter interfaces Creates new interfaces for objects that have a reference to a player, offlineplayer, location, etc. Also creates interfaces for objects that are like players in that they use all other interfaces and can receive Adventure messages. diff --git a/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java b/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java index 978813b94a5eae0afccbd3b38b463091a46b56ac..617a4b17982e3dac47480cb16046233232f288b7 100644 --- a/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when a beacon effect is being applied to a player. */ -public class BeaconEffectEvent extends BlockEvent implements Cancellable { +public class BeaconEffectEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; private PotionEffect effect; diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java index f530a3d9314e17d1da896cac633f6a422258d9a9..08897d13a8af33ed1cd40c46b0f168e0c4ebfd4a 100644 --- a/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java @@ -38,7 +38,7 @@ import org.jetbrains.annotations.NotNull; * at the Enderman, according to Vanilla rules. * */ -public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable { +public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment @NotNull private final Player player; public EndermanAttackPlayerEvent(@NotNull Enderman entity, @NotNull Player player) { diff --git a/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java index a315c5185cd465dcf63c0ababef195da76dfc786..a65eae92b9f369f0864d872817d9ce96679256bc 100644 --- a/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; /** * Fired when a Turtle lays eggs */ -public class TurtleLayEggEvent extends EntityEvent implements Cancellable { +public class TurtleLayEggEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; @NotNull diff --git a/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..890069604ca78a9a3f3b4c5f40969a451a1b2067 100644 --- a/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; /** * Fired when a Turtle starts digging to lay eggs */ -public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable { +public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; @NotNull private final Location location; diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java index 59ae7bc3a0a2079fe4b3a92d777aca682a58e4e3..b0cc7665e6591c71b7cd4388d028a5f8abd65e64 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java @@ -20,7 +20,7 @@ import java.util.UUID; * *

WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS

*/ -public class PlayerHandshakeEvent extends Event implements Cancellable { +public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment private static final HandlerList HANDLERS = new HandlerList(); @NotNull private final String originalHandshake; diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..33550df23fea251368b16dbebad27bdcb1de2e78 100644 --- a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable; * No guarantees are made about thread execution context for this event. If you need to know, check * event.isAsync() */ -public class PreLookupProfileEvent extends Event { +public class PreLookupProfileEvent extends Event implements gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); @NotNull private final String name; @@ -49,11 +49,27 @@ public class PreLookupProfileEvent extends Event { * {@link LookupProfileEvent} * * @return The UUID of the profile if it has already been provided by a plugin + * @deprecated alias of {@link #getUniqueId()} */ @Nullable - public UUID getUUID() { + // Parchment start + @Deprecated + public final UUID getUUID() { + return getUniqueId(); + } + + /** + * If this value is left null by the completion of the event call, then the server will + * trigger a call to the Mojang API to look up the UUID (Network Request), and subsequently, fire a + * {@link LookupProfileEvent} + * + * @return The UUID of the profile if it has already been provided by a plugin + */ + @Override + public @Nullable UUID getUniqueId() { return uuid; } + // Parchment end /** * Sets the UUID for this player name. This will skip the initial API call to find the players UUID. diff --git a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java index 9be64a95c2345433b6142d611077dedadcef9f5d..e3cea810881868fb5869de72f331733e6893fcee 100644 --- a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java @@ -47,7 +47,7 @@ import org.jetbrains.annotations.Nullable; * * Only 1 process will be allowed to provide completions, the Async Event, or the standard process. */ -public class AsyncTabCompleteEvent extends Event implements Cancellable { +public class AsyncTabCompleteEvent extends Event implements Cancellable, gg.projecteden.parchment.OptionalLocation { // Parchment @NotNull private final CommandSender sender; @NotNull private final String buffer; private final boolean isCommand; diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java index 89e132525cfae0ce979e37b3e2793df781e47227..f14635ae3112862c1337398bf5f5f56a7f87d90f 100644 --- a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java +++ b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java @@ -8,7 +8,7 @@ import static com.google.common.base.Preconditions.*; /** * Thrown when an incoming plugin message channel throws an exception */ -public class ServerPluginMessageException extends ServerPluginException { +public class ServerPluginMessageException extends ServerPluginException implements gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private final String channel; diff --git a/src/main/java/gg/projecteden/parchment/HasHumanEntity.java b/src/main/java/gg/projecteden/parchment/HasHumanEntity.java new file mode 100644 index 0000000000000000000000000000000000000000..ee1bc817a60b602f7d437a21852c3dc285d854df --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/HasHumanEntity.java @@ -0,0 +1,19 @@ +package gg.projecteden.parchment; + +import org.bukkit.entity.HumanEntity; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an object that has a {@link HumanEntity} + * @see gg.projecteden.parchment.OptionalHumanEntity + */ +@FunctionalInterface +public interface HasHumanEntity extends OptionalHumanEntity { + /** + * Gets a {@link HumanEntity} object that this represents + * + * @return human entity + */ + @Override + @NotNull HumanEntity getPlayer(); +} diff --git a/src/main/java/gg/projecteden/parchment/HasLocation.java b/src/main/java/gg/projecteden/parchment/HasLocation.java new file mode 100644 index 0000000000000000000000000000000000000000..e9f7bb3058639c94ee8e67627e5e34548d391df6 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/HasLocation.java @@ -0,0 +1,18 @@ +package gg.projecteden.parchment; + +import org.bukkit.Location; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an object that has a {@link Location} + * @see OptionalLocation + */ +public interface HasLocation extends OptionalLocation { + /** + * Gets a {@link Location} attached to this object + * + * @return attached location + */ + @Override + @NotNull Location getLocation(); +} diff --git a/src/main/java/gg/projecteden/parchment/HasOfflinePlayer.java b/src/main/java/gg/projecteden/parchment/HasOfflinePlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..15b72b693a32852f791c5578f701843c759737a7 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/HasOfflinePlayer.java @@ -0,0 +1,17 @@ +package gg.projecteden.parchment; + +import org.bukkit.OfflinePlayer; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an object that has a {@link OfflinePlayer} + */ +@FunctionalInterface +public interface HasOfflinePlayer { + /** + * Gets an {@link OfflinePlayer} object that this represents + * + * @return offline player + */ + @NotNull OfflinePlayer getOfflinePlayer(); +} diff --git a/src/main/java/gg/projecteden/parchment/HasPlayer.java b/src/main/java/gg/projecteden/parchment/HasPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..68a2e2093405eb39d91b5b79f16a521a6a729d4e --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/HasPlayer.java @@ -0,0 +1,19 @@ +package gg.projecteden.parchment; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an object that has a {@link Player} + * @see gg.projecteden.parchment.OptionalPlayer + */ +@FunctionalInterface +public interface HasPlayer extends OptionalPlayer, HasHumanEntity { + /** + * Gets a {@link Player} object that this represents + * + * @return player + */ + @Override + @NotNull Player getPlayer(); +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalHumanEntity.java b/src/main/java/gg/projecteden/parchment/OptionalHumanEntity.java new file mode 100644 index 0000000000000000000000000000000000000000..45410a77714ad28201520c188e280e4f5fa8bcab --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalHumanEntity.java @@ -0,0 +1,18 @@ +package gg.projecteden.parchment; + +import org.bukkit.entity.HumanEntity; +import org.jetbrains.annotations.Nullable; + +/** + * Represents an object that may have a {@link HumanEntity} + * @see HasHumanEntity + */ +@FunctionalInterface +public interface OptionalHumanEntity { + /** + * Gets a {@link HumanEntity} object that this represents, if there is one + * + * @return human entity or null + */ + @Nullable HumanEntity getPlayer(); +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalLocation.java b/src/main/java/gg/projecteden/parchment/OptionalLocation.java new file mode 100644 index 0000000000000000000000000000000000000000..23897904c6e2d6195f3613c36d77454587afd8bc --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalLocation.java @@ -0,0 +1,18 @@ +package gg.projecteden.parchment; + +import org.bukkit.Location; +import org.jetbrains.annotations.Nullable; + +/** + * Represents an object that may have a {@link Location} + * @see HasLocation + */ +@FunctionalInterface +public interface OptionalLocation { + /** + * Gets a {@link Location} attached to this object if present + * + * @return attached location + */ + @Nullable Location getLocation(); +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayer.java b/src/main/java/gg/projecteden/parchment/OptionalPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..31b9ab6512c9f06160c268e88d5bce486ed87523 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalPlayer.java @@ -0,0 +1,19 @@ +package gg.projecteden.parchment; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.Nullable; + +/** + * Represents an object that may have a {@link Player} + * @see HasPlayer + */ +@FunctionalInterface +public interface OptionalPlayer extends OptionalHumanEntity { + /** + * Gets a {@link Player} object that this represents, if there is one. This may be null if the + * player is online or the player object being optional. + * + * @return player or null + */ + @Nullable Player getPlayer(); +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java new file mode 100644 index 0000000000000000000000000000000000000000..7c32d6cfc1c3f284701a147cfd4a7397d5415420 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java @@ -0,0 +1,189 @@ +package gg.projecteden.parchment; + +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.audience.MessageType; +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.identity.Identified; +import net.kyori.adventure.identity.Identity; +import net.kyori.adventure.inventory.Book; +import net.kyori.adventure.sound.Sound; +import net.kyori.adventure.sound.SoundStop; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.title.Title; +import org.apache.commons.lang3.Validate; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; + +/** + * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. + * @see gg.projecteden.parchment.PlayerLike + */ +public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.api.interfaces.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { + /** + * Gets the identity associated with this object + * + * @return associated identity + */ + @Override + default @NotNull Identity identity() { + return Identity.identity(getUniqueId()); + } + + /** + * Returns if the {@link Player} associated with this object is online. + * + * @return if the player is online + */ + default boolean isOnline() { + return getPlayer() != null; + } + + /** + * Run a consumer with the {@link Player} associated with this object if the player is online. + *

+ * Allows easily running a code on the player only if they are connected. + * + * @param consumer function that accepts a Player + */ + default void consumeIfOnline(final @NotNull Consumer<@NotNull Player> consumer) { + Validate.notNull(consumer, "Consumer should not be null"); + + final Player player = getPlayer(); + if (player != null) + consumer.accept(player); + } + + /** + * Sends a chat message. + * + * @param source the identity of the source of the message + * @param message a message + * @param type the type + */ + @Override + default void sendMessage(final @NotNull Identity source, final @NotNull Component message, final @NotNull MessageType type) { + consumeIfOnline(player -> player.sendMessage(source, message, type)); + } + + /** + * Sends a message on the action bar. + * + * @param message a message + */ + @Override + default void sendActionBar(final @NotNull Component message) { + consumeIfOnline(player -> player.sendActionBar(message)); + } + + /** + * Sends the player list header and footer. + * + * @param header the header + * @param footer the footer + */ + @Override + default void sendPlayerListHeaderAndFooter(final @NotNull Component header, final @NotNull Component footer) { + consumeIfOnline(player -> player.sendPlayerListHeaderAndFooter(header, footer)); + } + + /** + * Shows a title. + * + * @param title a title + */ + @Override + default void showTitle(final @NotNull Title title) { + consumeIfOnline(player -> player.showTitle(title)); + } + + /** + * Clears the title, if one is being displayed. + */ + @Override + default void clearTitle() { + consumeIfOnline(Audience::clearTitle); + } + + /** + * Resets the title and timings back to their default. + */ + @Override + default void resetTitle() { + consumeIfOnline(Audience::resetTitle); + } + + /** + * Shows a boss bar. + * + * @param bar a boss bar + */ + @Override + default void showBossBar(final @NotNull BossBar bar) { + consumeIfOnline(player -> player.showBossBar(bar)); + } + + /** + * Hides a boss bar. + * + * @param bar a boss bar + */ + @Override + default void hideBossBar(final @NotNull BossBar bar) { + consumeIfOnline(player -> player.hideBossBar(bar)); + } + + /** + * Plays a sound. + * + * @param sound a sound + */ + @Override + default void playSound(final @NotNull Sound sound) { + consumeIfOnline(player -> player.playSound(sound)); + } + + /** + * Plays a sound at a location. + * + * @param sound a sound + * @param x x coordinate + * @param y y coordinate + * @param z z coordinate + */ + @Override + default void playSound(final @NotNull Sound sound, final double x, final double y, final double z) { + consumeIfOnline(player -> player.playSound(sound, x, y, z)); + } + + /** + * Stops a sound, or many sounds. + * + * @param stop a sound stop + */ + @Override + default void stopSound(final @NotNull SoundStop stop) { + consumeIfOnline(player -> player.stopSound(stop)); + } + + /** + * Opens a book. + * + *

When possible, no item should persist after closing the book.

+ * + * @param book a book + */ + @Override + default void openBook(final @NotNull Book book) { + consumeIfOnline(player -> player.openBook(book)); + } + + @Override + default @Nullable Location getLocation() { + final Player player = getPlayer(); + return player == null ? null : player.getLocation(); + } +} diff --git a/src/main/java/gg/projecteden/parchment/PlayerLike.java b/src/main/java/gg/projecteden/parchment/PlayerLike.java new file mode 100644 index 0000000000000000000000000000000000000000..dd5840ab1fe9375e83a3a30563ae59620171d3d3 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/PlayerLike.java @@ -0,0 +1,28 @@ +package gg.projecteden.parchment; + +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Consumer; + +/** + * Class that is like a {@link org.bukkit.entity.Player} in that it has a Player, {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, and an {@link net.kyori.adventure.identity.Identity}. + * @see gg.projecteden.parchment.OptionalPlayerLike + */ +public interface PlayerLike extends HasPlayer, HasLocation, OptionalPlayerLike { + @Override + default void consumeIfOnline(final @NotNull Consumer<@NotNull Player> consumer) { + consumer.accept(getPlayer()); + } + + @Override + default boolean isOnline() { + return true; + } + + @Override + default @NotNull Location getLocation() { + return getPlayer().getLocation(); + } +} diff --git a/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java b/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java index 2c1cda1126e577a88f19071e958eddb5a38785af..39e746f0c8536642346abbb6909fd2053031d695 100644 --- a/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java +++ b/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; * Should only be used for packet/clientside related stuff. * Not intended for modifying server side state. */ -public class PlayerChunkLoadEvent extends ChunkEvent { +public class PlayerChunkLoadEvent extends ChunkEvent implements gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Player player; diff --git a/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java b/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java index 12163a7b0591a7d022dc7eb9ee6608a1b6c39d9b..d81c7307127b135417e06a3b244416bee34b0abe 100644 --- a/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java +++ b/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; * Should only be used for packet/clientside related stuff. * Not intended for modifying server side. */ -public class PlayerChunkUnloadEvent extends ChunkEvent { +public class PlayerChunkUnloadEvent extends ChunkEvent implements gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Player player; diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java index ef0cb00ca4cb7d2f5e4ec1c950cce036566d1ae4..df53183beb4c438ea3c821e1ffd8e2719c08f269 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -30,7 +30,7 @@ import org.bukkit.entity.Player; * magnitude than 360 are valid, but may be normalized to any other equivalent * representation by the implementation. */ -public class Location implements Cloneable, ConfigurationSerializable { +public class Location implements Cloneable, ConfigurationSerializable, gg.projecteden.parchment.HasLocation { // Parchment private Reference world; private double x; private double y; @@ -72,6 +72,13 @@ public class Location implements Cloneable, ConfigurationSerializable { this.yaw = yaw; } + // Parchment start + @Override + public @NotNull Location getLocation() { + return this; + } + // Parchment end + /** * Sets the world that this location resides in * diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java index a7d1f1e701f23e851f735584a30bedadb0d8b9bd..7b37b6f596b4ac6b8049c7bd195139ac03ba63bc 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java @@ -10,7 +10,7 @@ import org.bukkit.profile.PlayerProfile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable { +public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable, gg.projecteden.parchment.HasOfflinePlayer, gg.projecteden.parchment.OptionalPlayer { // Parchment /** * Checks if this player is currently online @@ -139,6 +139,13 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio @Nullable public Player getPlayer(); + // Parchment start + @Override + default @org.jetbrains.annotations.NotNull OfflinePlayer getOfflinePlayer() { + return this; + } + // Parchment end + /** * Gets the first date and time that this player was witnessed on this * server. diff --git a/src/main/java/org/bukkit/Raid.java b/src/main/java/org/bukkit/Raid.java index 983a8c20a06d2b509602b27f49c090598b8ecc42..46dd8496f5a2c792ee7811e33c424e88edf8b5b3 100644 --- a/src/main/java/org/bukkit/Raid.java +++ b/src/main/java/org/bukkit/Raid.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * Represents a raid event. */ -public interface Raid { +public interface Raid extends gg.projecteden.parchment.HasLocation { // Parchment /** * Get whether this raid started. diff --git a/src/main/java/org/bukkit/Vibration.java b/src/main/java/org/bukkit/Vibration.java index 209a302c3a2ed333780ed760314a6ed352fc0767..9d29f1c5af56954bc452fa251d6bc0215ab3fe79 100644 --- a/src/main/java/org/bukkit/Vibration.java +++ b/src/main/java/org/bukkit/Vibration.java @@ -74,7 +74,7 @@ public class Vibration { } } - public static class BlockDestination implements Destination { + public static class BlockDestination implements Destination, gg.projecteden.parchment.HasLocation { // Parchment private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java index d124768378d6f0c5573f28ee815ea3886fe74868..11a00998b1cb5ee582e225553f15b1b7c1a65b2a 100644 --- a/src/main/java/org/bukkit/attribute/AttributeModifier.java +++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; /** * Concrete implementation of an attribute modifier. */ -public class AttributeModifier implements ConfigurationSerializable { +public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.api.interfaces.HasUniqueId { // Parchment private final UUID uuid; private final String name; diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java index e405c279f6135c94c775a856ab88fd3cace6bd5c..359cad4528e0c9b45ac3447655f24e7925bff7d2 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; * (i.e. lighting and power) may not be able to be safely accessed during world * generation when used in cases like BlockPhysicsEvent!!!! */ -public interface Block extends Metadatable, net.kyori.adventure.translation.Translatable { // Paper - translatable +public interface Block extends Metadatable, net.kyori.adventure.translation.Translatable, gg.projecteden.parchment.HasLocation { // Paper - translatable /** * Gets the metadata for this block diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java index 10cbe71917bc32cca61748bcb0aa3395c554dbf8..280df0fc6f7344863f0fd2ba7592494bcd8bf2da 100644 --- a/src/main/java/org/bukkit/block/BlockState.java +++ b/src/main/java/org/bukkit/block/BlockState.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; * change the state of the block and you will not know, or they may change the * block to another type entirely, causing your BlockState to become invalid. */ -public interface BlockState extends Metadatable { +public interface BlockState extends Metadatable, gg.projecteden.parchment.HasLocation { // Parchment /** * Gets the block represented by this block state. diff --git a/src/main/java/org/bukkit/block/DoubleChest.java b/src/main/java/org/bukkit/block/DoubleChest.java index a39d2f1acbbd84ae0e2cf29f85594e09e55e9355..4348b8961afe7a57350856622aff8c988cd4bbdd 100644 --- a/src/main/java/org/bukkit/block/DoubleChest.java +++ b/src/main/java/org/bukkit/block/DoubleChest.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; /** * Represents a double chest. */ -public class DoubleChest implements InventoryHolder { +public class DoubleChest implements InventoryHolder, gg.projecteden.parchment.HasLocation { // Parchment private DoubleChestInventory inventory; public DoubleChest(@NotNull DoubleChestInventory chest) { diff --git a/src/main/java/org/bukkit/entity/AnimalTamer.java b/src/main/java/org/bukkit/entity/AnimalTamer.java index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..8f4a293c131cb8b63c31b410ffa211bdb42b3338 100644 --- a/src/main/java/org/bukkit/entity/AnimalTamer.java +++ b/src/main/java/org/bukkit/entity/AnimalTamer.java @@ -4,7 +4,7 @@ import java.util.UUID; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public interface AnimalTamer { +public interface AnimalTamer extends gg.projecteden.api.interfaces.HasUniqueId { // Parchment /** * This is the name of the specified AnimalTamer. diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java index 8bc6876c82935988436597161fa0ec94c032174b..b27576e9c7f22e203251487334288239be0dcb9e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; /** * Represents a base entity in the world */ -public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter { // Paper +public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, gg.projecteden.api.interfaces.HasUniqueId, gg.projecteden.parchment.HasLocation { // Paper // Parchment /** * Gets the entity's current position diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java index 5dbbeb92aec212d2e849d16320ed9c084b99fc35..32e5150b14f5d7d19d82d15631065db376814e25 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java @@ -19,7 +19,15 @@ import org.jetbrains.annotations.Nullable; /** * Represents a human entity, such as an NPC or a player */ -public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder { +// Parchment start +public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder, gg.projecteden.parchment.HasHumanEntity { + + @NotNull + @Override + default HumanEntity getPlayer() { + return this; + } +// Parchment end // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java index 6cd0b10d1dc4506cfb1e4db5e1260cb705566cec..a3ff1cb4b2754900879c67638a3488cd9d76cdb1 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -40,7 +40,17 @@ import org.jetbrains.annotations.Nullable; /** * Represents a player, connected or not */ -public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient { // Paper +public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient, gg.projecteden.parchment.HasPlayer { // Paper // Parchment + + // Parchment start - fix defaults + /** + * Returns this player object. + * + * @return this player + */ + @Override + @NotNull Player getPlayer(); + // Parchment end // Paper start @Override diff --git a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java index 691733a642b3295bbe6d484be728c77cd32803bd..a2eae7a9bad13d1ba2bd954888a0373834d30078 100644 --- a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.NotNull; * If a Block Break event is cancelled, the block will not break and * experience will not drop. */ -public class BlockBreakEvent extends BlockExpEvent implements Cancellable { +public class BlockBreakEvent extends BlockExpEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private boolean dropItems; private boolean cancel; diff --git a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java index a1350c0f74d445dca09eea6e10abac050bb06990..11bb6f8f7363f31061d5fd0f2e4515099ac40649 100644 --- a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java @@ -19,7 +19,7 @@ import org.jetbrains.annotations.Nullable; * #getMaterial()} instead. * */ -public class BlockCanBuildEvent extends BlockEvent { +public class BlockCanBuildEvent extends BlockEvent implements gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); protected boolean buildable; diff --git a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java index cd04a0bd9d232857408b38605787016a217cb8d2..7035fe7c0f5adb981ac41804605c4fbcf57968bf 100644 --- a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; * If a Block Damage event is cancelled, the block will not be damaged. * @see BlockDamageAbortEvent */ -public class BlockDamageEvent extends BlockEvent implements Cancellable { +public class BlockDamageEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Player player; private boolean instaBreak; diff --git a/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java b/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java index 3dd4bd38e72c04e74e5787fb38ca9abd10bad06b..3783fb96cc7086bc78dc06c573a1343c3a18c3cb 100644 --- a/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java @@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull; * AIR in most cases. Use #getBlockState() for more Information about the broken * block. */ -public class BlockDropItemEvent extends BlockEvent implements Cancellable { +public class BlockDropItemEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Player player; diff --git a/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java b/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java index 695309b4b7ef269ba2496408a5f874f61cd6c445..18207907e7b31ef9c136e857de046f9cce006111 100644 --- a/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; * block with bonemeal. Will be called after the applicable * {@link StructureGrowEvent}. */ -public class BlockFertilizeEvent extends BlockEvent implements Cancellable { +public class BlockFertilizeEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java b/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java index 6dcd9f828c6c40e48593b0bad5a44a656eb01645..0651bdd983e90e0e1e8a3565dcb5d97cfd69ce3e 100644 --- a/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; *

* If a Block Ignite event is cancelled, the block will not be ignited. */ -public class BlockIgniteEvent extends BlockEvent implements Cancellable { +public class BlockIgniteEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final IgniteCause cause; private final Entity ignitingEntity; diff --git a/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java b/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java index be0a2d1f234d8265d98e54e518a994957b1f3ab7..54cd6735fbcad009330927d760f8bd93ea9c51ec 100644 --- a/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; *

* If a Block Place event is cancelled, the block will not be placed. */ -public class BlockPlaceEvent extends BlockEvent implements Cancellable { +public class BlockPlaceEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); protected boolean cancel; protected boolean canBuild; diff --git a/src/main/java/org/bukkit/event/block/SignChangeEvent.java b/src/main/java/org/bukkit/event/block/SignChangeEvent.java index 1268066e30ddb0cd3792ea4b3de894eb04196669..1e20629da438651d3987258b93cf9caf9eff9452 100644 --- a/src/main/java/org/bukkit/event/block/SignChangeEvent.java +++ b/src/main/java/org/bukkit/event/block/SignChangeEvent.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.Nullable; *

* If a Sign Change event is cancelled, the sign will not be changed. */ -public class SignChangeEvent extends BlockEvent implements Cancellable { +public class SignChangeEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancel = false; private final Player player; diff --git a/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java b/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java index 59aab10c2d27247eb77bd71d75b5f9126aa0fb12..b42465617e83d3413ab647cd9c78212b61ca5833 100644 --- a/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; * This can be cancelled but the item will still be consumed that was used to * make the entity enter into love mode. */ -public class EntityEnterLoveModeEvent extends EntityEvent implements Cancellable { +public class EntityEnterLoveModeEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.OptionalHumanEntity { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancel; @@ -42,11 +42,27 @@ public class EntityEnterLoveModeEvent extends EntityEvent implements Cancellable * * @return The Human entity that caused the animal to enter love mode, or * null if there wasn't one. + * @deprecated alias of {@link #getPlayer()} */ @Nullable - public HumanEntity getHumanEntity() { + // Parchment start + @Deprecated + public final HumanEntity getHumanEntity() { + return getPlayer(); + } + + /** + * Gets the Human Entity that caused the animal to enter love mode. + * + * @return The Human entity that caused the animal to enter love mode, or + * null if there wasn't one. + */ + @Override + @Nullable + public HumanEntity getPlayer() { return humanEntity; } + // Parchment end /** * Gets the amount of ticks that the animal will fall in love for. diff --git a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java index 10d0e18dfd423b108fe381e8142867eb10399359..7f9f266057de42261fa06e4874d7bec5388c90c7 100644 --- a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when an entity explodes */ -public class EntityExplodeEvent extends EntityEvent implements Cancellable { +public class EntityExplodeEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancel; private final Location location; diff --git a/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java b/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java index ea8f9ed43d8e4158e6c9c345252a94a5000c5561..98d308eda8287cb1f1a0aab5208c7c6f13047c05 100644 --- a/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.Nullable; * Note that this event is currently only fired for four specific placements: * armor stands, boats, minecarts, and end crystals. */ -public class EntityPlaceEvent extends EntityEvent implements Cancellable { +public class EntityPlaceEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..c9c4a6673fd3995bb9638b0d25fa212412cda807 100644 --- a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java @@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; /** * Called when an entity comes into contact with a portal */ -public class EntityPortalEnterEvent extends EntityEvent { +public class EntityPortalEnterEvent extends EntityEvent implements gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private final Location location; diff --git a/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java b/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java index 961ee511342cd3a12ff2ff74d7b4683c6753123d..892732ab5ae58ec980c4fd05a5a3dfdcbd70a528 100644 --- a/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; *

* If an Entity Spawn event is cancelled, the entity will not spawn. */ -public class EntitySpawnEvent extends EntityEvent implements Cancellable { +public class EntitySpawnEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean canceled; diff --git a/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java b/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java index 6fc66197eb2c5d59c70d8d028b7963748371edbe..dc45ec5b6ae8e2958d83a113d23ab0b1a911de3f 100644 --- a/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; * Cancelling the event results in the item being allowed to exist for 5 more * minutes. This behavior is not guaranteed and may change in future versions. */ -public class ItemDespawnEvent extends EntityEvent implements Cancellable { +public class ItemDespawnEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean canceled; private final Location location; diff --git a/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java b/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java index 5eb3fb72a13881b8bf0e40037b0002cb0a6eb883..4d5d0b730ad957e44f549518366841492b537ab2 100644 --- a/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java +++ b/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; /** * Called immediately prior to a creature being leashed by a player. */ -public class PlayerLeashEntityEvent extends Event implements Cancellable { +public class PlayerLeashEntityEvent extends Event implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Entity leashHolder; private final Entity entity; diff --git a/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java b/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java index 1bcff119ecd95012c568c777e5ca2e891e56831e..517f115123fa2009ba0837b0754411e93808562f 100644 --- a/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java +++ b/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; /** * Triggered when a hanging entity is created in the world */ -public class HangingPlaceEvent extends HangingEvent implements Cancellable { +public class HangingPlaceEvent extends HangingEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; private final Player player; diff --git a/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java b/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java index 020739697a0b535cad0b15b574f77cdabbdfa3eb..ee4fd41e66852d5d2c62222c7b884473d3f3001d 100644 --- a/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java +++ b/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * This event is called when a player takes items out of the furnace */ -public class FurnaceExtractEvent extends BlockExpEvent { +public class FurnaceExtractEvent extends BlockExpEvent implements gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private final Material itemType; private final int itemAmount; diff --git a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java index 21ad8888c0e403bfc63518502577d651c02dda05..1c59335a8f0a40162190f6fb73ffbfef0cd795d8 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * Represents a player related inventory event */ -public class InventoryCloseEvent extends InventoryEvent { +public class InventoryCloseEvent extends InventoryEvent implements gg.projecteden.parchment.HasHumanEntity { // Parchment private static final HandlerList handlers = new HandlerList(); // Paper start private final Reason reason; diff --git a/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java index 9013d043503d175004ad276799e5935b7fa59dc4..4095ca19e6ceff2432e0cbd372e9475f748278a7 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * Represents a player related inventory event */ -public class InventoryOpenEvent extends InventoryEvent implements Cancellable { +public class InventoryOpenEvent extends InventoryEvent implements Cancellable, gg.projecteden.parchment.HasHumanEntity { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java index 635b8787fc235b61c0d5677def034656e4ec4cef..6f15f4adfa552e2f5960464663ee126282086bb1 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; *

* This event is asynchronous, and not run using main thread. */ -public class AsyncPlayerPreLoginEvent extends Event { +public class AsyncPlayerPreLoginEvent extends Event implements gg.projecteden.api.interfaces.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper diff --git a/src/main/java/org/bukkit/event/player/PlayerEvent.java b/src/main/java/org/bukkit/event/player/PlayerEvent.java index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..44efb5cc62149b34b994eadac488a90269e8ae79 100644 --- a/src/main/java/org/bukkit/event/player/PlayerEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerEvent.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull; /** * Represents a player related event */ -public abstract class PlayerEvent extends Event { +public abstract class PlayerEvent extends Event implements gg.projecteden.parchment.HasPlayer { // Parchment protected Player player; public PlayerEvent(@NotNull final Player who) { diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java index 6800132c6288b4588fd02b08d26f016c38f27129..8e333a361cdee30a83e9472285dfb0b30b2e72ca 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull; */ @Deprecated @Warning(reason = "This event causes a login thread to synchronize with the main thread") -public class PlayerPreLoginEvent extends Event { +public class PlayerPreLoginEvent extends Event implements gg.projecteden.api.interfaces.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper diff --git a/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java index 68eab1563caba1ee4f52b308f390e4e172667fc5..7f2be08b1e7b6df4bab8a8996bc276f369a8ff78 100644 --- a/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; /** * Called prior to an entity being unleashed due to a player's action. */ -public class PlayerUnleashEntityEvent extends EntityUnleashEvent implements Cancellable { +public class PlayerUnleashEntityEvent extends EntityUnleashEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private boolean cancelled = false; diff --git a/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java b/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java index 128e43cf12205f82f2b119a773208502cdccfdd4..ca1fed3081e2b0a3271a2dfa0f49cce78bdb8e23 100644 --- a/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java +++ b/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; * Called when a {@link Raid} is triggered (e.g: a player with Bad Omen effect * enters a village). */ -public class RaidTriggerEvent extends RaidEvent implements Cancellable { +public class RaidTriggerEvent extends RaidEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java index 4a3451af454295ac3e1b688e6665cad9fc594c82..b88cebb219577d59cc338be89c6f391d10702095 100644 --- a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java +++ b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java @@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull; * advised to ensure the client does not have permission for the relevant * commands, or use {@link PlayerCommandSendEvent}. */ -public class TabCompleteEvent extends Event implements Cancellable { +public class TabCompleteEvent extends Event implements Cancellable, gg.projecteden.parchment.OptionalLocation { // Parchment private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/world/GenericGameEvent.java b/src/main/java/org/bukkit/event/world/GenericGameEvent.java index 2a2a329877d8da45c2d6afecf78ce88d52635cad..22cdf3662b02fb5751ac6d913d781084cd7eee5b 100644 --- a/src/main/java/org/bukkit/event/world/GenericGameEvent.java +++ b/src/main/java/org/bukkit/event/world/GenericGameEvent.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; * Specific Bukkit events should be used where possible, this event is mainly * used internally by Sculk sensors. */ -public class GenericGameEvent extends WorldEvent implements Cancellable { +public class GenericGameEvent extends WorldEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private final GameEvent event; diff --git a/src/main/java/org/bukkit/event/world/StructureGrowEvent.java b/src/main/java/org/bukkit/event/world/StructureGrowEvent.java index 7af8d6e51c824cf0592b722b834f1d4986e3cc08..c28d62fc3dc359f9ebcf926094198ee3c92467aa 100644 --- a/src/main/java/org/bukkit/event/world/StructureGrowEvent.java +++ b/src/main/java/org/bukkit/event/world/StructureGrowEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; * Event that is called when an organic structure attempts to grow (Sapling {@literal ->} * Tree), (Mushroom {@literal ->} Huge Mushroom), naturally or using bonemeal. */ -public class StructureGrowEvent extends WorldEvent implements Cancellable { +public class StructureGrowEvent extends WorldEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; private final Location location; diff --git a/src/main/java/org/bukkit/inventory/Inventory.java b/src/main/java/org/bukkit/inventory/Inventory.java index 1b577c03c3152d22b70f8bdb321b28ad8fbbc3af..b3449a874666bcd67950ec12da41738f7c24ddee 100644 --- a/src/main/java/org/bukkit/inventory/Inventory.java +++ b/src/main/java/org/bukkit/inventory/Inventory.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; * @see #getContents() * @see #getStorageContents() */ -public interface Inventory extends Iterable { +public interface Inventory extends Iterable, gg.projecteden.parchment.OptionalLocation { // Parchment /** * Returns the size of the inventory diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java index 2448e70d75ae7a678c6befac4506c103edb78875..65ca144618f74bc8e317a4b9c2732ad5ed13a208 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; * contracts of certain methods, there's no guarantee that the game will work * as it should. */ -public abstract class InventoryView { +public abstract class InventoryView implements gg.projecteden.parchment.HasHumanEntity { // Parchment public static final int OUTSIDE = -999; /** * Represents various extra properties of certain inventory windows. diff --git a/src/main/java/org/bukkit/loot/LootContext.java b/src/main/java/org/bukkit/loot/LootContext.java index 71b7aa9d675e1714e286e6fd4015ead036d912e0..95e120068a7c5c96b1b8553df9cf8654ba63a325 100644 --- a/src/main/java/org/bukkit/loot/LootContext.java +++ b/src/main/java/org/bukkit/loot/LootContext.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; * Represents additional information a {@link LootTable} can use to modify it's * generated loot. */ -public final class LootContext { +public final class LootContext implements gg.projecteden.parchment.HasLocation { // Parchment public static final int DEFAULT_LOOT_MODIFIER = -1;