mirror of
https://github.com/GeyserExtensionists/GeyserModelEngine.git
synced 2025-12-19 23:19:19 +00:00
fix
This commit is contained in:
@@ -15,7 +15,6 @@ import org.bukkit.entity.EntityType;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import re.imc.geysermodelengine.listener.AddEntityPacketListener;
|
import re.imc.geysermodelengine.listener.AddEntityPacketListener;
|
||||||
import re.imc.geysermodelengine.listener.InteractPacketListener;
|
|
||||||
import re.imc.geysermodelengine.listener.ModelListener;
|
import re.imc.geysermodelengine.listener.ModelListener;
|
||||||
import re.imc.geysermodelengine.model.ModelEntity;
|
import re.imc.geysermodelengine.model.ModelEntity;
|
||||||
|
|
||||||
@@ -70,7 +69,6 @@ public final class GeyserModelEngine extends JavaPlugin {
|
|||||||
.expireAfterWrite(joinSendDelay * 50L, TimeUnit.MILLISECONDS).build();
|
.expireAfterWrite(joinSendDelay * 50L, TimeUnit.MILLISECONDS).build();
|
||||||
}
|
}
|
||||||
instance = this;
|
instance = this;
|
||||||
ProtocolLibrary.getProtocolManager().addPacketListener(new InteractPacketListener());
|
|
||||||
ProtocolLibrary.getProtocolManager().addPacketListener(new AddEntityPacketListener());
|
ProtocolLibrary.getProtocolManager().addPacketListener(new AddEntityPacketListener());
|
||||||
|
|
||||||
Bukkit.getPluginManager().registerEvents(new ModelListener(), this);
|
Bukkit.getPluginManager().registerEvents(new ModelListener(), this);
|
||||||
|
|||||||
@@ -36,9 +36,13 @@ public class AddEntityPacketListener extends PacketAdapter {
|
|||||||
StructureModifier<Entity> modifier = packet.getEntityModifier(event);
|
StructureModifier<Entity> modifier = packet.getEntityModifier(event);
|
||||||
Entity entity = modifier.readSafely(0);
|
Entity entity = modifier.readSafely(0);
|
||||||
|
|
||||||
|
if (entity == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
boolean isBedrock = FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId());
|
boolean isBedrock = FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId());
|
||||||
ModelEntity model = ModelEntity.MODEL_ENTITIES.get(entity.getEntityId());
|
ModelEntity model = ModelEntity.MODEL_ENTITIES.get(entity.getEntityId());
|
||||||
|
|
||||||
|
|
||||||
if (model != null) {
|
if (model != null) {
|
||||||
if (isBedrock) {
|
if (isBedrock) {
|
||||||
if (packet.getMeta("delayed").isPresent()) {
|
if (packet.getMeta("delayed").isPresent()) {
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
package re.imc.geysermodelengine.listener;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.PacketType;
|
|
||||||
import com.comphenix.protocol.events.*;
|
|
||||||
import com.comphenix.protocol.reflect.StructureModifier;
|
|
||||||
import com.ticxo.modelengine.api.entity.BukkitEntity;
|
|
||||||
import com.ticxo.modelengine.api.entity.BukkitPlayer;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import re.imc.geysermodelengine.GeyserModelEngine;
|
|
||||||
import re.imc.geysermodelengine.model.ModelEntity;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class InteractPacketListener extends PacketAdapter {
|
|
||||||
public InteractPacketListener() {
|
|
||||||
super(GeyserModelEngine.getInstance(), ListenerPriority.HIGHEST, Set.of(PacketType.Play.Client.USE_ENTITY), ListenerOptions.SYNC);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPacketReceiving(PacketEvent event) {
|
|
||||||
PacketContainer packet = event.getPacket();
|
|
||||||
StructureModifier<Entity> modifier = packet.getEntityModifier(event);
|
|
||||||
Entity entity = modifier.readSafely(0);
|
|
||||||
if (entity == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ModelEntity model = ModelEntity.MODEL_ENTITIES.get(entity.getEntityId());
|
|
||||||
|
|
||||||
if (model != null && model.getModeledEntity().getBase() instanceof BukkitEntity bukkitEntity) {
|
|
||||||
modifier.writeSafely(0, bukkitEntity.getOriginal());
|
|
||||||
|
|
||||||
event.setPacket(packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -35,7 +35,10 @@ public class ModelListener implements Listener {
|
|||||||
public void onAddModel(AddModelEvent event) {
|
public void onAddModel(AddModelEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getTarget().getModel(event.getModel().getBlueprint().getName()).isPresent()) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
|
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
|
||||||
@@ -117,7 +120,7 @@ public class ModelListener implements Listener {
|
|||||||
|
|
||||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||||
if (FloodgateApi.getInstance().isFloodgatePlayer(onlinePlayer.getUniqueId())) {
|
if (FloodgateApi.getInstance().isFloodgatePlayer(onlinePlayer.getUniqueId())) {
|
||||||
PlayerUtils.setCustomEntity(onlinePlayer, entity.getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName());
|
PlayerUtils.setCustomEntity(onlinePlayer, entity.getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,10 +66,12 @@ public class EntityTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (model.getEntity().isDead() && model.getModeledEntity().getBase().isAlive()) {
|
|
||||||
|
if (model.getEntity().isDead() && model.getModeledEntity().getBase().isAlive() && !model.getActiveModel().isRemoved()) {
|
||||||
model.spawnEntity();
|
model.spawnEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
model.getEntity().setVisualFire(false);
|
model.getEntity().setVisualFire(false);
|
||||||
model.teleportToModel();
|
model.teleportToModel();
|
||||||
}
|
}
|
||||||
@@ -78,17 +80,17 @@ public class EntityTask {
|
|||||||
Set<Player> viewers = model.getViewers();
|
Set<Player> viewers = model.getViewers();
|
||||||
ActiveModel activeModel = model.getActiveModel();
|
ActiveModel activeModel = model.getActiveModel();
|
||||||
ModeledEntity modeledEntity = model.getModeledEntity();
|
ModeledEntity modeledEntity = model.getModeledEntity();
|
||||||
if (modeledEntity.isDestroyed() || !modeledEntity.getBase().isAlive()) {
|
if (activeModel.isRemoved() || !modeledEntity.getBase().isAlive()) {
|
||||||
if (!modeledEntity.getBase().isAlive()) {
|
if (!modeledEntity.getBase().isAlive()) {
|
||||||
|
|
||||||
if (!modeledEntity.isDestroyed()) {
|
if (!activeModel.isRemoved()) {
|
||||||
String animation = hasAnimation("death") ? "death" : "idle";
|
String animation = hasAnimation("death") ? "death" : "idle";
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
entity.remove();
|
entity.remove();
|
||||||
}
|
}
|
||||||
}.runTaskLater(GeyserModelEngine.getInstance(), Math.min(Math.max(playAnimation(animation, 99, 5f) - 1, 0), 200));
|
}.runTaskLater(GeyserModelEngine.getInstance(), Math.min(Math.max(playAnimation(animation, 999, 0f) - 3, 0), 200));
|
||||||
} else {
|
} else {
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
@@ -199,7 +201,8 @@ public class EntityTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendEntityData(Player player, int delay) {
|
public void sendEntityData(Player player, int delay) {
|
||||||
PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName());
|
// System.out.println("TYPE: " + "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
|
||||||
|
PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
|
||||||
// PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());
|
// PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());
|
||||||
playBedrockAnimation("animation." + model.getActiveModel().getBlueprint().getName() + "." + lastAnimation, looping, 0f);
|
playBedrockAnimation("animation." + model.getActiveModel().getBlueprint().getName() + "." + lastAnimation, looping, 0f);
|
||||||
@@ -234,7 +237,7 @@ public class EntityTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int playAnimation(String animation, int p) {
|
public int playAnimation(String animation, int p) {
|
||||||
return playAnimation(animation, p, 0f);
|
return playAnimation(animation, p, 0);
|
||||||
}
|
}
|
||||||
public int playAnimation(String animation, int p, float blendTime) {
|
public int playAnimation(String animation, int p, float blendTime) {
|
||||||
|
|
||||||
@@ -284,7 +287,7 @@ public class EntityTask {
|
|||||||
|
|
||||||
animationCooldown.set((int) (animationProperty.getLength() * 20));
|
animationCooldown.set((int) (animationProperty.getLength() * 20));
|
||||||
if (delaySend) {
|
if (delaySend) {
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> playBedrockAnimation("animation." + activeModel.getBlueprint().getName() + "." + animationProperty.getName(), looping, blendTime), 2);
|
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> playBedrockAnimation("animation." + activeModel.getBlueprint().getName() + "." + animationProperty.getName(), looping, blendTime), 0);
|
||||||
} else {
|
} else {
|
||||||
playBedrockAnimation(id, looping, blendTime);
|
playBedrockAnimation(id, looping, blendTime);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user