mirror of
https://github.com/GeyserExtensionists/GeyserModelEngine.git
synced 2025-12-19 15:09:18 +00:00
ok
This commit is contained in:
@@ -4,7 +4,6 @@ import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.wrappers.Pair;
|
||||
import com.google.common.cache.Cache;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.ticxo.modelengine.api.ModelEngineAPI;
|
||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||
import com.ticxo.modelengine.api.model.ModeledEntity;
|
||||
@@ -22,10 +21,8 @@ import re.imc.geysermodelengine.listener.ModelListener;
|
||||
import re.imc.geysermodelengine.listener.MountPacketListener;
|
||||
import re.imc.geysermodelengine.model.ModelEntity;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -68,6 +65,8 @@ public final class GeyserModelEngine extends JavaPlugin {
|
||||
@Getter
|
||||
private Map<Player, Pair<ActiveModel, Mount>> drivers = new ConcurrentHashMap<>();
|
||||
|
||||
@Getter
|
||||
private boolean initialized = false;
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// Plugin startup logic
|
||||
@@ -100,6 +99,7 @@ public final class GeyserModelEngine extends JavaPlugin {
|
||||
}
|
||||
}
|
||||
}
|
||||
initialized = true;
|
||||
|
||||
}, 100);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.ticxo.modelengine.api.events.*;
|
||||
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 org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Entity;
|
||||
@@ -39,6 +40,10 @@ public class ModelListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GeyserModelEngine.getInstance().isInitialized()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
|
||||
ModelEntity.create(event.getTarget(), event.getModel());
|
||||
});
|
||||
@@ -73,22 +78,6 @@ public class ModelListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityLoad(EntitiesLoadEvent event) {
|
||||
Bukkit.getScheduler()
|
||||
.runTaskLater(GeyserModelEngine.getInstance(), () -> {
|
||||
for (Entity entity : event.getEntities()) {
|
||||
if (!ModelEntity.ENTITIES.containsKey(entity.getEntityId())) {
|
||||
ModeledEntity modeledEntity = ModelEngineAPI.getModeledEntity(entity);
|
||||
if (modeledEntity != null) {
|
||||
Optional<ActiveModel> model = modeledEntity.getModels().values().stream().findFirst();
|
||||
model.ifPresent(m -> ModelEntity.create(modeledEntity, m));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}, 20);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onAnimationPlay(AnimationPlayEvent event) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||
import com.comphenix.protocol.wrappers.Pair;
|
||||
import com.ticxo.modelengine.api.ModelEngineAPI;
|
||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||
import com.ticxo.modelengine.api.model.bone.type.Mount;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
@@ -57,7 +58,7 @@ public class MountPacketListener extends PacketAdapter {
|
||||
if (seat != null) {
|
||||
if (event.getPacket().getPlayerActions().read(0) == EnumWrappers.PlayerAction.START_SNEAKING) {
|
||||
event.getPlayer().sendActionBar("leave");
|
||||
seat.getSecond().clearPassengers();
|
||||
ModelEngineAPI.getMountPairManager().tryDismount(event.getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class EntityTask {
|
||||
}
|
||||
|
||||
if (!removed && model.getEntity().isDead() && model.getModeledEntity().getBase().isAlive() && !model.getActiveModel().isRemoved()) {
|
||||
model.spawnEntity();
|
||||
// model.spawnEntity();
|
||||
}
|
||||
|
||||
model.getEntity().setVisualFire(false);
|
||||
|
||||
@@ -7,10 +7,10 @@ import com.ticxo.modelengine.api.model.ActiveModel;
|
||||
import com.ticxo.modelengine.api.model.ModeledEntity;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.metadata.FixedMetadataValue;
|
||||
import org.bukkit.util.Vector;
|
||||
import re.imc.geysermodelengine.GeyserModelEngine;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -54,7 +54,10 @@ public class ModelEntity {
|
||||
}
|
||||
|
||||
*/
|
||||
Vector vector = modeledEntity.getBase().getMoveController().getVelocity();
|
||||
ModelEngineAPI.getEntityHandler().setPosition(entity, location.getX(), location.getY(), location.getZ());
|
||||
// ModelEngineAPI.getEntityHandler().movePassenger(entity, location.getX(), location.getY(), location.getZ());
|
||||
controllerEntity.getMoveController().setVelocity(vector.getX(), vector.getY(), vector.getZ());
|
||||
if (modeledEntity.getBase() instanceof BukkitEntity bukkitEntity && bukkitEntity.getOriginal() instanceof LivingEntity livingEntity) {
|
||||
controllerEntity.getLookController().setHeadYaw(livingEntity.getEyeLocation().getYaw());
|
||||
controllerEntity.getLookController().setPitch(livingEntity.getEyeLocation().getPitch());
|
||||
@@ -66,6 +69,11 @@ public class ModelEntity {
|
||||
ModelEntity modelEntity = new ModelEntity(entity, model);
|
||||
int id = entity.getBase().getEntityId();
|
||||
Map<ActiveModel, ModelEntity> map = ENTITIES.computeIfAbsent(id, k -> new HashMap<>());
|
||||
for (Map.Entry<ActiveModel, ModelEntity> entry : map.entrySet()) {
|
||||
if (entry.getKey() != model && entry.getKey().getBlueprint().getName().equals(model.getBlueprint().getName())) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
map.put(model, modelEntity);
|
||||
|
||||
return modelEntity;
|
||||
|
||||
Reference in New Issue
Block a user