From 91a96d2f33b2a530c06673e8ea70085c34719c0c Mon Sep 17 00:00:00 2001 From: Flowsqy <47575244+Flowsqy@users.noreply.github.com> Date: Sat, 31 Dec 2022 02:50:56 +0100 Subject: [PATCH] Move teleport method in FakeEntity, create PacketQueue, split each packet in a dedicated method --- .../shopchest/nms/FakeArmorStand.java | 17 ++++++---- .../de/epiceric/shopchest/nms/FakeEntity.java | 34 +++++++++++++++++-- .../de/epiceric/shopchest/nms/FakeItem.java | 23 ++++++++++--- .../epiceric/shopchest/nms/PacketQueue.java | 17 ++++++++++ .../de/epiceric/shopchest/nms/Platform.java | 21 ++++++++++++ 5 files changed, 99 insertions(+), 13 deletions(-) create mode 100644 nms/interface/src/main/java/de/epiceric/shopchest/nms/PacketQueue.java diff --git a/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeArmorStand.java b/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeArmorStand.java index 4b10bbd..8221e92 100644 --- a/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeArmorStand.java +++ b/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeArmorStand.java @@ -1,12 +1,17 @@ package de.epiceric.shopchest.nms; -import org.bukkit.Location; -import org.bukkit.entity.Player; - +/** + * Represent an ArmorStand that only exists clientside + */ public interface FakeArmorStand extends FakeEntity { - void sendData(String name, Iterable receivers); - - void setLocation(Location location, Iterable receivers); + /** + * Register a 'metadata' packet in the {@link PacketQueue} + *
+ * It sets the invisibility, the custom name, make it visible and the marker flag + * + * @param packetQueue The {@link PacketQueue} to store the packet + */ + void metadata(PacketQueue packetQueue); } diff --git a/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeEntity.java b/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeEntity.java index b696761..0682ec7 100644 --- a/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeEntity.java +++ b/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeEntity.java @@ -1,16 +1,44 @@ package de.epiceric.shopchest.nms; import org.bukkit.Location; -import org.bukkit.entity.Player; +import org.bukkit.util.Vector; import java.util.UUID; +/** + * Represent an entity that only exists clientside + */ public interface FakeEntity { + /** + * Get entity id + * + * @return The entity id + */ int getEntityId(); - void spawn(UUID uuid, Location location, Iterable receivers); + /** + * Register a 'create' packet in the {@link PacketQueue} + * + * @param packetQueue The {@link PacketQueue} to store the packet + * @param uuid The {@link UUID} of the entity + * @param location The {@link Location} to spawn the entity + */ + void create(PacketQueue packetQueue, UUID uuid, Location location); - void remove(Iterable receivers); + /** + * Register a 'remove' packet in the {@link PacketQueue} + * + * @param packetQueue The {@link PacketQueue} to store the packet + */ + void remove(PacketQueue packetQueue); + + /** + * Register a 'teleport' packet in the {@link PacketQueue} + * + * @param packetQueue The {@link PacketQueue} to store the packet + * @param position The position to teleport the entity + */ + void teleport(PacketQueue packetQueue, Vector position); } diff --git a/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeItem.java b/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeItem.java index d1eeda2..6ceecf8 100644 --- a/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeItem.java +++ b/nms/interface/src/main/java/de/epiceric/shopchest/nms/FakeItem.java @@ -1,12 +1,27 @@ package de.epiceric.shopchest.nms; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -public interface FakeItem extends FakeEntity{ +/** + * Represent an Item entity that only exists clientside + */ +public interface FakeItem extends FakeEntity { - void sendData(ItemStack item, Iterable receivers); + /** + * Register a 'metadata' packet in the {@link PacketQueue} + *
+ * It sets the type of item + * + * @param packetQueue The {@link PacketQueue} to store the packet + * @param item The {@link ItemStack} type + */ + void metadata(PacketQueue packetQueue, ItemStack item); - void resetVelocity(Iterable receivers); + /** + * Register a zero 'velocity' packet in the {@link PacketQueue} to stop the item from moving + * + * @param packetQueue The {@link PacketQueue} to store the packet + */ + void cancelVelocity(PacketQueue packetQueue); } diff --git a/nms/interface/src/main/java/de/epiceric/shopchest/nms/PacketQueue.java b/nms/interface/src/main/java/de/epiceric/shopchest/nms/PacketQueue.java new file mode 100644 index 0000000..4505575 --- /dev/null +++ b/nms/interface/src/main/java/de/epiceric/shopchest/nms/PacketQueue.java @@ -0,0 +1,17 @@ +package de.epiceric.shopchest.nms; + +import org.bukkit.entity.Player; + +/** + * A queue of packet that can be sent + */ +public interface PacketQueue { + + /** + * Send all packets to players + * + * @param receivers The {@link Player}s that receives the packets + */ + void send(Iterable receivers); + +} diff --git a/nms/interface/src/main/java/de/epiceric/shopchest/nms/Platform.java b/nms/interface/src/main/java/de/epiceric/shopchest/nms/Platform.java index d24ac45..31c9062 100644 --- a/nms/interface/src/main/java/de/epiceric/shopchest/nms/Platform.java +++ b/nms/interface/src/main/java/de/epiceric/shopchest/nms/Platform.java @@ -1,11 +1,32 @@ package de.epiceric.shopchest.nms; +/** + * The platform that create all nms objects + */ public interface Platform { + /** + * Create a {@link FakeArmorStand} object + * + * @return a new {@link FakeArmorStand} + */ FakeArmorStand createFakeArmorStand(); + /** + * Create a {@link FakeItem} object + * + * @return a new {@link FakeItem} + */ FakeItem createFakeItem(); + /** + * Create a {@link PacketQueue} object + * + * @return a new {@link PacketQueue} + */ + PacketQueue createPacketQueue(); + + TextComponentHelper getTextComponentHelper(); }