This commit is contained in:
zimzaza4
2024-07-07 04:23:26 +08:00
parent 191e94df0f
commit 6b8bf1d315
4 changed files with 0 additions and 130 deletions

View File

@@ -45,16 +45,6 @@ public final class GeyserModelEngine extends JavaPlugin {
@Getter
private Cache<Player, Boolean> joinedPlayer;
@Getter
@Setter
private boolean spawningModelEntity = false;
@Getter
@Setter
private ModelEntity currentModel = null;
@Getter
private int joinSendDelay;

View File

@@ -1,72 +0,0 @@
package re.imc.geysermodelengine.listener;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.*;
import com.comphenix.protocol.reflect.StructureModifier;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.geysermc.floodgate.api.FloodgateApi;
import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.model.EntityTask;
import re.imc.geysermodelengine.model.ModelEntity;
import java.util.Set;
@Deprecated
public class AddEntityPacketListener extends PacketAdapter {
public AddEntityPacketListener() {
super(GeyserModelEngine.getInstance(), ListenerPriority.HIGHEST, Set.of(PacketType.Play.Server.SPAWN_ENTITY), ListenerOptions.SYNC);
}
@Override
public void onPacketSending(PacketEvent event) {
PacketContainer packet = event.getPacket();
StructureModifier<Entity> modifier = packet.getEntityModifier(event);
Entity entity = modifier.readSafely(0);
if (entity == null) {
return;
}
boolean isBedrock = FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId());
ModelEntity model = ModelEntity.MODEL_ENTITIES.get(entity.getEntityId());
if (model != null) {
if (isBedrock) {
if (packet.getMeta("delayed").isPresent()) {
if (model.getTask().isLooping()) {
String lastAnimation = model.getTask().getLastAnimation();
model.getTask().playBedrockAnimation(lastAnimation, Set.of(event.getPlayer()), true, 0f);
}
return;
}
EntityTask task = model.getTask();
int delay = 1;
boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(event.getPlayer()) != null;
if (firstJoined) {
delay = GeyserModelEngine.getInstance().getJoinSendDelay();
}
if (task == null || firstJoined) {
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> {
model.getTask().sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSendDelay());
}, delay);
} else {
task.sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSendDelay());
}
event.setCancelled(true);
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> {
packet.setMeta("delayed", 1);
ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet);
}, delay + 2);
} else {
event.setCancelled(true);
}
}
}
}

View File

@@ -99,28 +99,6 @@ public class ModelListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onModelEntitySpawn(EntitySpawnEvent event) {
if (GeyserModelEngine.getInstance().isSpawningModelEntity() && event.getEntity() instanceof LivingEntity entity) {
if (event.isCancelled()) {
event.setCancelled(false);
}
ModelEntity model = GeyserModelEngine.getInstance().getCurrentModel();
int id = entity.getEntityId();
ActiveModel activeModel = model.getActiveModel();
ModelEntity.MODEL_ENTITIES.put(id, model);
model.applyFeatures(entity, "model." + activeModel.getBlueprint().getName());
GeyserModelEngine.getInstance().setCurrentModel(null);
GeyserModelEngine.getInstance().setSpawningModelEntity(false);
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
if (FloodgateApi.getInstance().isFloodgatePlayer(onlinePlayer.getUniqueId())) {
PlayerUtils.setCustomEntity(onlinePlayer, entity.getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
}
}
}
}
@EventHandler
public void onModelEntityHurt(EntityDamageEvent event) {
Map<ActiveModel, ModelEntity> model = ModelEntity.ENTITIES.get(event.getEntity().getEntityId());

View File

@@ -69,30 +69,4 @@ public class ModelEntity {
}
public void applyFeatures(LivingEntity display, String name) {
display.setGravity(false);
display.setMaxHealth(2048);
display.setHealth(2048);
display.setMetadata("model_entity", new FixedMetadataValue(GeyserModelEngine.getInstance(), true));
//display.setInvulnerable(true);
display.setAI(false);
display.setSilent(true);
display.setPersistent(false);
// armorStand.setVisible(false);
/*
String uuid = UUID.randomUUID().toString();
MobDisguise disguise = new MobDisguise(DisguiseType.getType(entity.getType()));
disguise.setDisguiseName(uuid);
DisguiseAPI.disguiseEntity(display, disguise);
*/
}
}