From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cryptite Date: Tue, 25 Apr 2023 07:36:40 -0500 Subject: [PATCH] Equipment Packet Caching diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java index 19e58e62ae442ef9be02ca7fa2f55e370a54afa4..94aafbc3a08dec7c66cef89de7a5283049a4bf05 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java @@ -1192,4 +1192,11 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end + + // Slice start + /** + * @param p The player to send this entity's equipment packet to + */ + void sendEquipment(Player p); + // Slice end } diff --git a/src/main/java/org/bukkit/event/entity/EntityEquipmentItemLookup.java b/src/main/java/org/bukkit/event/entity/EntityEquipmentItemLookup.java new file mode 100644 index 0000000000000000000000000000000000000000..6c329ca3c22d1fd712041334c5c1e7bd7e7201ac --- /dev/null +++ b/src/main/java/org/bukkit/event/entity/EntityEquipmentItemLookup.java @@ -0,0 +1,54 @@ +package org.bukkit.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.event.HandlerList; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +/** + * Called when requesting a cached equipment item lookup + */ +public class EntityEquipmentItemLookup extends EntityEvent { + private static final HandlerList handlers = new HandlerList(); + private final String tag; + private final EquipmentSlot equipmentSlot; + private ItemStack itemStack; + + public EntityEquipmentItemLookup(@NotNull final Entity entity, @NotNull String tag, @NotNull EquipmentSlot slot, @NotNull final ItemStack itemStack) { + super(entity); + this.tag = tag; + this.equipmentSlot = slot; + this.itemStack = itemStack; + } + + @NotNull + public ItemStack getItemStack() { + return itemStack; + } + + public void setItemStack(ItemStack itemStack) { + this.itemStack = itemStack; + } + + @NotNull + public EquipmentSlot getEquipmentSlot() { + return equipmentSlot; + } + + @NotNull + public String getTag() { + return tag; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlers; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/org/bukkit/event/player/PlayerReceiveEquipmentEvent.java b/src/main/java/org/bukkit/event/player/PlayerReceiveEquipmentEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..513d62342d8e29e8d3c92fe932d0d77f659cf2f1 --- /dev/null +++ b/src/main/java/org/bukkit/event/player/PlayerReceiveEquipmentEvent.java @@ -0,0 +1,61 @@ +package org.bukkit.event.player; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +/** + * Called when a player is about to receive an equipment packet about another player + */ +public class PlayerReceiveEquipmentEvent extends PlayerEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private final Entity tracked; + private boolean cancel; + private String tag; + + public PlayerReceiveEquipmentEvent(@NotNull final Player player, @NotNull final Entity tracked) { + super(player); + this.tracked = tracked; + } + + /** + * Gets the tracked entity + * + * @return Entity the player is now tracking + */ + @NotNull + public Entity getTracked() { + return tracked; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlers; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlers; + } +}