diff --git a/libs/geyserutils-spigot-1.0-SNAPSHOT.jar b/libs/geyserutils-spigot-1.0-SNAPSHOT.jar index b263621..500dbff 100644 Binary files a/libs/geyserutils-spigot-1.0-SNAPSHOT.jar and b/libs/geyserutils-spigot-1.0-SNAPSHOT.jar differ diff --git a/pom.xml b/pom.xml index dc30351..de86710 100644 --- a/pom.xml +++ b/pom.xml @@ -110,7 +110,7 @@ provided - me.zimzaza4 + com.github.geyserextensionists geyserutils-spigot 1.0.0 system diff --git a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java index c50e01a..796bce8 100644 --- a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java +++ b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java @@ -8,7 +8,7 @@ import com.ticxo.modelengine.api.generator.blueprint.ModelBlueprint; import com.ticxo.modelengine.api.model.ActiveModel; import com.ticxo.modelengine.api.model.ModeledEntity; import com.ticxo.modelengine.api.model.render.ModelRenderer; -import me.zimzaza4.geyserutils.spigot.api.PlayerUtils; +import me.zimzaza4.geyserutils.spigot.api.EntityUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; diff --git a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java index 65178a1..e7cb60d 100644 --- a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java +++ b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java @@ -8,12 +8,15 @@ import com.ticxo.modelengine.api.model.bone.ModelBone; import lombok.Getter; import lombok.Setter; import me.zimzaza4.geyserutils.common.animation.Animation; +import me.zimzaza4.geyserutils.spigot.GeyserUtils; +import me.zimzaza4.geyserutils.spigot.api.EntityUtils; import me.zimzaza4.geyserutils.spigot.api.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.geysermc.floodgate.api.FloodgateApi; +import org.jetbrains.annotations.NotNull; import org.joml.Vector3f; import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.packet.entity.PacketEntity; @@ -21,6 +24,7 @@ import re.imc.geysermodelengine.packet.entity.PacketEntity; import java.awt.*; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Logger; import static re.imc.geysermodelengine.model.ModelEntity.ENTITIES; import static re.imc.geysermodelengine.model.ModelEntity.MODEL_ENTITIES; @@ -184,12 +188,11 @@ public class EntityTask { } public void sendEntityData(Player player, int delay) { - PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase()); - + EntityUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase()); Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> { - // PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName()); - model.getEntity().sendSpawnPacket(Collections.singletonList(player)); + // EntityUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName()); + model.getEntity().sendSpawnPacket(Collections.singletonList(player)); Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> { if (looping) { playBedrockAnimation(lastAnimation, Set.of(player), looping, 0f); @@ -208,7 +211,7 @@ public class EntityTask { float average = (scale.x + scale.y + scale.z) / 3; if (average == lastScale) return; - PlayerUtils.sendCustomScale(player, model.getEntity(), average); + EntityUtils.sendCustomScale(player, model.getEntity().getEntityId(), average); if (ignore) return; lastScale = average; @@ -220,7 +223,7 @@ public class EntityTask { Color color = new Color(model.getActiveModel().getDefaultTint().asARGB()); if (color.equals(lastColor)) return; - PlayerUtils.sendCustomColor(player, model.getEntity(), color); + EntityUtils.sendCustomColor(player, model.getEntity().getEntityId(), color); if (ignore) return; lastColor = color; @@ -232,7 +235,7 @@ public class EntityTask { } public void updateEntityProperties(Player player, boolean ignore) { - Entity entity = model.getEntity(); + int entity = model.getEntity().getEntityId(); Map updates = new HashMap<>(); model.getActiveModel().getBones().forEach((s, bone) -> { @@ -255,7 +258,7 @@ public class EntityTask { updates.put(currentAnimProperty, true); } if (updates.isEmpty()) return; - PlayerUtils.sendBoolProperties(player, entity, updates); + EntityUtils.sendBoolProperties(player, entity, updates); } private String unstripName(ModelBone bone) { @@ -270,13 +273,13 @@ public class EntityTask { public void sendHitBoxToAll() { for (Player viewer : model.getViewers()) { - PlayerUtils.sendCustomHitBox(viewer, model.getEntity(), 0.01f, 0.01f); + EntityUtils.sendCustomHitBox(viewer, model.getEntity().getEntityId(), 0.01f, 0.01f); } } public void sendHitBox(Player viewer) { - PlayerUtils.sendCustomHitBox(viewer, model.getEntity(), 0.01f, 0.01f); + EntityUtils.sendCustomHitBox(viewer, model.getEntity().getEntityId(), 0.01f, 0.01f); } @@ -334,7 +337,7 @@ public class EntityTask { public void playStopBedrockAnimation(String animationId) { - Entity entity = model.getEntity(); + int entity = model.getEntity().getEntityId(); Set viewers = model.getViewers(); // model.getViewers().forEach(viewer -> viewer.sendActionBar("CURRENT AN:" + "STOP")); @@ -347,7 +350,7 @@ public class EntityTask { .blendOutTime(0f); for (Player viewer : viewers) { - PlayerUtils.playEntityAnimation(viewer, animation.build(), entity); + PlayerUtils.playEntityAnimation(viewer, animation.build(), Collections.singletonList(entity)); } } @@ -358,7 +361,7 @@ public class EntityTask { // model.getViewers().forEach(viewer -> viewer.sendActionBar("CURRENT AN:" + animationId)); - Entity entity = model.getEntity(); + int entity = model.getEntity().getEntityId(); Animation.AnimationBuilder animation = Animation.builder() .animation(animationId) @@ -368,12 +371,12 @@ public class EntityTask { animation.nextState(animationId); } for (Player viewer : viewers) { - PlayerUtils.playEntityAnimation(viewer, animation.build(), entity); + PlayerUtils.playEntityAnimation(viewer, animation.build(), Collections.singletonList(entity)); } } - private boolean canSee(Player player, Entity entity) { + private boolean canSee(Player player, PacketEntity entity) { if (!player.isOnline()) { return false; } @@ -384,7 +387,7 @@ public class EntityTask { return false; } - if (entity.getChunk() == player.getChunk()) { + if (entity.getLocation().getChunk() == player.getChunk()) { return true; } diff --git a/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java b/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java index 9dbd221..c3d20d6 100644 --- a/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java +++ b/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java @@ -20,8 +20,9 @@ public class EntityTeleportPacket implements WrapperPacket { packet.getDoubles().write(0, loc.getX()); packet.getDoubles().write(1, loc.getY()); packet.getDoubles().write(2, loc.getZ()); - packet.getBytes().write(1, (byte) (loc.getPitch() * 256.0F / 360.0F)); + packet.getBytes().write(0, (byte) (loc.getYaw() * 256.0F / 360.0F)); + packet.getBytes().write(1, (byte) (loc.getPitch() * 256.0F / 360.0F)); return packet; } } diff --git a/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java b/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java index c355ecd..6fada20 100644 --- a/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java +++ b/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java @@ -1,35 +1,20 @@ package re.imc.geysermodelengine.packet.entity; import com.comphenix.protocol.ProtocolLibrary; -import io.papermc.paper.entity.TeleportFlag; -import io.papermc.paper.threadedregions.scheduler.EntityScheduler; -import net.kyori.adventure.text.Component; -import org.bukkit.*; -import org.bukkit.block.BlockFace; -import org.bukkit.block.PistonMoveReaction; -import org.bukkit.entity.*; -import org.bukkit.event.entity.CreatureSpawnEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.player.PlayerTeleportEvent; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.permissions.Permission; -import org.bukkit.permissions.PermissionAttachment; -import org.bukkit.permissions.PermissionAttachmentInfo; -import org.bukkit.persistence.PersistentDataContainer; -import org.bukkit.plugin.Plugin; -import org.bukkit.util.BoundingBox; -import org.bukkit.util.Vector; +import org.bukkit.Location; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import re.imc.geysermodelengine.packet.*; -import java.util.*; -import java.util.concurrent.CompletableFuture; +import java.util.Collection; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; -public class PacketEntity implements Entity { +public class PacketEntity { public PacketEntity(EntityType type, Set viewers, Location location) { - this.id = ThreadLocalRandom.current().nextInt(20000, 100000000); + this.id = ThreadLocalRandom.current().nextInt(300000000, 400000000); this.uuid = UUID.randomUUID(); this.type = type; this.viewers = viewers; @@ -42,12 +27,11 @@ public class PacketEntity implements Entity { private Set viewers; private Location location; private boolean removed = false; - @Override + public @NotNull Location getLocation() { return location; } - @Override public boolean teleport(@NotNull Location location) { this.location = location.clone(); sendLocationPacket(viewers); @@ -55,19 +39,15 @@ public class PacketEntity implements Entity { } - - @Override public void remove() { removed = true; sendEntityDestroyPacket(viewers); } - @Override public boolean isDead() { return removed; } - @Override public boolean isValid() { return !removed; } @@ -75,9 +55,13 @@ public class PacketEntity implements Entity { public void sendSpawnPacket(Collection players) { EntitySpawnPacket packet = new EntitySpawnPacket(id, uuid, type, location); EntityMetadataPacket metadataPacket = new EntityMetadataPacket(id); - players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode())); + + players.forEach(player -> { + ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode()); + }); players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, metadataPacket.encode())); } + public void sendLocationPacket(Collection players) { EntityTeleportPacket packet = new EntityTeleportPacket(id, location); players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode())); @@ -94,710 +78,9 @@ public class PacketEntity implements Entity { players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode())); } - @Override public int getEntityId() { return id; } - // ---------------- - - @Override - public @Nullable Location getLocation(@Nullable Location location) { - return null; - } - - @Override - public void setVelocity(@NotNull Vector vector) { - - } - - @Override - public @NotNull Vector getVelocity() { - return null; - } - - @Override - public double getHeight() { - return 0; - } - - @Override - public double getWidth() { - return 0; - } - - @Override - public @NotNull BoundingBox getBoundingBox() { - return null; - } - - @Override - public boolean isOnGround() { - return false; - } - - @Override - public boolean isInWater() { - return false; - } - - @Override - public @NotNull World getWorld() { - return null; - } - - @Override - public void setRotation(float v, float v1) { - - } - - @Override - public boolean teleport(@NotNull Location location, PlayerTeleportEvent.@NotNull TeleportCause teleportCause, @NotNull TeleportFlag @NotNull ... teleportFlags) { - return false; - } - - - - @Override - public boolean teleport(@NotNull Location location, PlayerTeleportEvent.@NotNull TeleportCause teleportCause) { - return false; - } - - @Override - public boolean teleport(@NotNull Entity entity) { - return false; - } - - @Override - public boolean teleport(@NotNull Entity entity, PlayerTeleportEvent.@NotNull TeleportCause teleportCause) { - return false; - } - - @Override - public @NotNull CompletableFuture teleportAsync(@NotNull Location location, PlayerTeleportEvent.@NotNull TeleportCause teleportCause, @NotNull TeleportFlag @NotNull ... teleportFlags) { - return null; - } - - @Override - public @NotNull List getNearbyEntities(double v, double v1, double v2) { - return null; - } - - - - @Override - public int getFireTicks() { - return 0; - } - - @Override - public int getMaxFireTicks() { - return 0; - } - - @Override - public void setFireTicks(int i) { - - } - - @Override - public void setVisualFire(boolean b) { - - } - - @Override - public boolean isVisualFire() { - return false; - } - - @Override - public int getFreezeTicks() { - return 0; - } - - @Override - public int getMaxFreezeTicks() { - return 0; - } - - @Override - public void setFreezeTicks(int i) { - - } - - @Override - public boolean isFrozen() { - return false; - } - - @Override - public void setInvisible(boolean b) { - - } - - @Override - public boolean isInvisible() { - return false; - } - - @Override - public void setNoPhysics(boolean b) { - - } - - @Override - public boolean hasNoPhysics() { - return false; - } - - @Override - public boolean isFreezeTickingLocked() { - return false; - } - - @Override - public void lockFreezeTicks(boolean b) { - - } - - - @Override - public void sendMessage(@NotNull String s) { - - } - - @Override - public void sendMessage(@NotNull String... strings) { - - } - - @Override - public void sendMessage(@Nullable UUID uuid, @NotNull String s) { - - } - - @Override - public void sendMessage(@Nullable UUID uuid, @NotNull String... strings) { - - } - - @Override - public @NotNull Server getServer() { - return null; - } - - @Override - public @NotNull String getName() { - return null; - } - - @Override - public boolean isPersistent() { - return false; - } - - @Override - public void setPersistent(boolean b) { - - } - - @Override - public @Nullable Entity getPassenger() { - return null; - } - - @Override - public boolean setPassenger(@NotNull Entity entity) { - return false; - } - - @Override - public @NotNull List getPassengers() { - return null; - } - - @Override - public boolean addPassenger(@NotNull Entity entity) { - return false; - } - - @Override - public boolean removePassenger(@NotNull Entity entity) { - return false; - } - - @Override - public boolean isEmpty() { - return false; - } - - @Override - public boolean eject() { - return false; - } - - @Override - public float getFallDistance() { - return 0; - } - - @Override - public void setFallDistance(float v) { - - } - - @Override - public void setLastDamageCause(@Nullable EntityDamageEvent entityDamageEvent) { - - } - - @Override - public @Nullable EntityDamageEvent getLastDamageCause() { - return null; - } - - @Override - public @NotNull UUID getUniqueId() { - return null; - } - - @Override - public int getTicksLived() { - return 0; - } - - @Override - public void setTicksLived(int i) { - - } - - @Override - public void playEffect(@NotNull EntityEffect entityEffect) { - - } - - @Override - public @NotNull EntityType getType() { - return null; - } - - @Override - public @NotNull Sound getSwimSound() { - return null; - } - - @Override - public @NotNull Sound getSwimSplashSound() { - return null; - } - - @Override - public @NotNull Sound getSwimHighSpeedSplashSound() { - return null; - } - - @Override - public boolean isInsideVehicle() { - return false; - } - - @Override - public boolean leaveVehicle() { - return false; - } - - @Override - public @Nullable Entity getVehicle() { - return null; - } - - @Override - public void setCustomNameVisible(boolean b) { - - } - - @Override - public boolean isCustomNameVisible() { - return false; - } - - @Override - public void setVisibleByDefault(boolean b) { - - } - - @Override - public boolean isVisibleByDefault() { - return false; - } - - @Override - public @NotNull Set getTrackedBy() { - return null; - } - - @Override - public void setGlowing(boolean b) { - - } - - @Override - public boolean isGlowing() { - return false; - } - - @Override - public void setInvulnerable(boolean b) { - - } - - @Override - public boolean isInvulnerable() { - return false; - } - - @Override - public boolean isSilent() { - return false; - } - - @Override - public void setSilent(boolean b) { - - } - - @Override - public boolean hasGravity() { - return false; - } - - @Override - public void setGravity(boolean b) { - - } - - @Override - public int getPortalCooldown() { - return 0; - } - - @Override - public void setPortalCooldown(int i) { - - } - - @Override - public @NotNull Set getScoreboardTags() { - return null; - } - - @Override - public boolean addScoreboardTag(@NotNull String s) { - return false; - } - - @Override - public boolean removeScoreboardTag(@NotNull String s) { - return false; - } - - @Override - public @NotNull PistonMoveReaction getPistonMoveReaction() { - return null; - } - - @Override - public @NotNull BlockFace getFacing() { - return null; - } - - @Override - public @NotNull Pose getPose() { - return null; - } - - @Override - public boolean isSneaking() { - return false; - } - - @Override - public void setSneaking(boolean b) { - - } - - @Override - public void setPose(@NotNull Pose pose, boolean b) { - - } - - @Override - public boolean hasFixedPose() { - return false; - } - - @Override - public @NotNull SpawnCategory getSpawnCategory() { - return null; - } - - @Override - public boolean isInWorld() { - return false; - } - - @Override - public @Nullable EntitySnapshot createSnapshot() { - return null; - } - - @Override - public @NotNull Entity copy() { - return null; - } - - @Override - public @NotNull Entity copy(@NotNull Location location) { - return null; - } - - @Override - public @NotNull Spigot spigot() { - return null; - } - - @Override - public @NotNull Component name() { - return null; - } - - @Override - public @NotNull Component teamDisplayName() { - return null; - } - - @Override - public @Nullable Location getOrigin() { - return null; - } - - @Override - public boolean fromMobSpawner() { - return false; - } - - @Override - public CreatureSpawnEvent.@NotNull SpawnReason getEntitySpawnReason() { - return null; - } - - @Override - public boolean isUnderWater() { - return false; - } - - @Override - public boolean isInRain() { - return false; - } - - @Override - public boolean isInBubbleColumn() { - return false; - } - - @Override - public boolean isInWaterOrRain() { - return false; - } - - @Override - public boolean isInWaterOrBubbleColumn() { - return false; - } - - @Override - public boolean isInWaterOrRainOrBubbleColumn() { - return false; - } - - @Override - public boolean isInLava() { - return false; - } - - @Override - public boolean isTicking() { - return false; - } - - @Override - public @NotNull Set getTrackedPlayers() { - return null; - } - - @Override - public boolean spawnAt(@NotNull Location location, CreatureSpawnEvent.@NotNull SpawnReason spawnReason) { - return false; - } - - @Override - public boolean isInPowderedSnow() { - return false; - } - - @Override - public double getX() { - return 0; - } - - @Override - public double getY() { - return 0; - } - - @Override - public double getZ() { - return 0; - } - - @Override - public float getPitch() { - return 0; - } - - @Override - public float getYaw() { - return 0; - } - - @Override - public boolean collidesAt(@NotNull Location location) { - return false; - } - - @Override - public boolean wouldCollideUsing(@NotNull BoundingBox boundingBox) { - return false; - } - - @Override - public @NotNull EntityScheduler getScheduler() { - return null; - } - - @Override - public @NotNull String getScoreboardEntryName() { - return null; - } - - @Override - public @Nullable Component customName() { - return null; - } - - @Override - public void customName(@Nullable Component component) { - - } - - @Override - public @Nullable String getCustomName() { - return null; - } - - @Override - public void setCustomName(@Nullable String s) { - - } - - @Override - public void setMetadata(@NotNull String s, @NotNull MetadataValue metadataValue) { - - } - - @Override - public @NotNull List getMetadata(@NotNull String s) { - return null; - } - - @Override - public boolean hasMetadata(@NotNull String s) { - return false; - } - - @Override - public void removeMetadata(@NotNull String s, @NotNull Plugin plugin) { - - } - - @Override - public boolean isPermissionSet(@NotNull String s) { - return false; - } - - @Override - public boolean isPermissionSet(@NotNull Permission permission) { - return false; - } - - @Override - public boolean hasPermission(@NotNull String s) { - return false; - } - - @Override - public boolean hasPermission(@NotNull Permission permission) { - return false; - } - - @Override - public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin, @NotNull String s, boolean b) { - return null; - } - - @Override - public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin) { - return null; - } - - @Override - public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin, @NotNull String s, boolean b, int i) { - return null; - } - - @Override - public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin, int i) { - return null; - } - - @Override - public void removeAttachment(@NotNull PermissionAttachment permissionAttachment) { - - } - - @Override - public void recalculatePermissions() { - - } - - @Override - public @NotNull Set getEffectivePermissions() { - return null; - } - - @Override - public boolean isOp() { - return false; - } - - @Override - public void setOp(boolean b) { - - } - - @Override - public @NotNull PersistentDataContainer getPersistentDataContainer() { - return null; - } } +