mirror of
https://github.com/GeyserExtensionists/GeyserModelEngine.git
synced 2025-12-26 02:19:26 +00:00
ahhh reuse boolean anim property
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package re.imc.geysermodelengine.packet;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
public class EntityEquipmentPacket implements WrapperPacket {
|
||||
|
||||
private final int id;
|
||||
private final EnumWrappers.ItemSlot slot;
|
||||
private final ItemStack itemStack;
|
||||
public EntityEquipmentPacket(int id, EnumWrappers.ItemSlot slot, ItemStack itemStack) {
|
||||
this.id = id;
|
||||
this.slot = slot;
|
||||
this.itemStack = itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PacketContainer encode() {
|
||||
PacketContainer packet = new PacketContainer(PacketType.Play.Server.ENTITY_EQUIPMENT);
|
||||
packet.getIntegers().writeSafely(0, id);
|
||||
packet.getItemSlots().writeSafely(0, slot);
|
||||
packet.getItemModifier().writeSafely(0, itemStack);
|
||||
return packet;
|
||||
}
|
||||
}
|
||||
@@ -14,11 +14,11 @@ public class EntityHurtPacket implements WrapperPacket {
|
||||
@Override
|
||||
public PacketContainer encode() {
|
||||
PacketContainer packet = new PacketContainer(PacketType.Play.Server.DAMAGE_EVENT);
|
||||
packet.getIntegers().write(0, id);
|
||||
packet.getIntegers().write(1,0);
|
||||
packet.getIntegers().write(2, 0);
|
||||
packet.getIntegers().write(3, 0);
|
||||
packet.getBooleans().write(0, false);
|
||||
packet.getIntegers().writeSafely(0, id);
|
||||
packet.getIntegers().writeSafely(1,0);
|
||||
packet.getIntegers().writeSafely(2, 0);
|
||||
packet.getIntegers().writeSafely(3, 0);
|
||||
packet.getBooleans().writeSafely(0, false);
|
||||
return packet;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
package re.imc.geysermodelengine.packet.entity;
|
||||
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import re.imc.geysermodelengine.packet.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
@Getter
|
||||
public class PacketEntity {
|
||||
public PacketEntity(EntityType type, Set<Player> viewers, Location location) {
|
||||
this.id = ThreadLocalRandom.current().nextInt(300000000, 400000000);
|
||||
@@ -28,6 +35,8 @@ public class PacketEntity {
|
||||
private Location location;
|
||||
private boolean removed = false;
|
||||
|
||||
private Map<EnumWrappers.ItemSlot, ItemStack> equipment = new ConcurrentHashMap<>();
|
||||
|
||||
public @NotNull Location getLocation() {
|
||||
return location;
|
||||
}
|
||||
@@ -59,9 +68,20 @@ public class PacketEntity {
|
||||
players.forEach(player -> {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode());
|
||||
});
|
||||
sendAllEquipmentPacket(players);
|
||||
// players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, metadataPacket.encode()));
|
||||
}
|
||||
|
||||
public void sendAllEquipmentPacket(Collection<Player> players) {
|
||||
for (Map.Entry<EnumWrappers.ItemSlot, ItemStack> e : equipment.entrySet()) {
|
||||
EntityEquipmentPacket packet = new EntityEquipmentPacket(id, e.getKey(), e.getValue());
|
||||
|
||||
players.forEach(player -> {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void sendLocationPacket(Collection<Player> players) {
|
||||
EntityTeleportPacket packet = new EntityTeleportPacket(id, location);
|
||||
players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode()));
|
||||
@@ -82,5 +102,16 @@ public class PacketEntity {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setSlot(EnumWrappers.ItemSlot slot, ItemStack itemStack) {
|
||||
if (itemStack == null) {
|
||||
itemStack = new ItemStack(Material.AIR);
|
||||
}
|
||||
equipment.put(slot, itemStack);
|
||||
EntityEquipmentPacket packet = new EntityEquipmentPacket(id, slot, itemStack);
|
||||
viewers.forEach(player -> {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user