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 47b0154928b3d36e2602da202df07defbcf82108..53f46bc741a2bc0dcb9ebe74079fae6f5f2dc15a 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java @@ -1276,4 +1276,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(@NotNull 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..48d2eb3bbb8dbcb6714ee47c4159c0604657a78c --- /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(@NotNull 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..a8f83d19341c2f3024ba8113478ed482657b8589 --- /dev/null +++ b/src/main/java/org/bukkit/event/player/PlayerReceiveEquipmentEvent.java @@ -0,0 +1,63 @@ +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; +import org.jetbrains.annotations.Nullable; + +/** + * 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; + } + + @Nullable + public String getTag() { + return tag; + } + + public void setTag(@Nullable 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; + } +}