mirror of
https://github.com/xSquishyLiam/mc-GeyserModelEngine-plugin.git
synced 2025-12-19 14:59:19 +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.comphenix.protocol.wrappers.Pair;
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import com.ticxo.modelengine.api.ModelEngineAPI;
|
import com.ticxo.modelengine.api.ModelEngineAPI;
|
||||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||||
import com.ticxo.modelengine.api.model.ModeledEntity;
|
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.listener.MountPacketListener;
|
||||||
import re.imc.geysermodelengine.model.ModelEntity;
|
import re.imc.geysermodelengine.model.ModelEntity;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@@ -68,6 +65,8 @@ public final class GeyserModelEngine extends JavaPlugin {
|
|||||||
@Getter
|
@Getter
|
||||||
private Map<Player, Pair<ActiveModel, Mount>> drivers = new ConcurrentHashMap<>();
|
private Map<Player, Pair<ActiveModel, Mount>> drivers = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private boolean initialized = false;
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
// Plugin startup logic
|
// Plugin startup logic
|
||||||
@@ -100,6 +99,7 @@ public final class GeyserModelEngine extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
initialized = true;
|
||||||
|
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.ticxo.modelengine.api.events.*;
|
|||||||
import com.ticxo.modelengine.api.generator.blueprint.ModelBlueprint;
|
import com.ticxo.modelengine.api.generator.blueprint.ModelBlueprint;
|
||||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||||
import com.ticxo.modelengine.api.model.ModeledEntity;
|
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.PlayerUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@@ -39,6 +40,10 @@ public class ModelListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!GeyserModelEngine.getInstance().isInitialized()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
|
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
|
||||||
ModelEntity.create(event.getTarget(), event.getModel());
|
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
|
@EventHandler
|
||||||
public void onAnimationPlay(AnimationPlayEvent event) {
|
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.events.PacketEvent;
|
||||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||||
import com.comphenix.protocol.wrappers.Pair;
|
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.ActiveModel;
|
||||||
import com.ticxo.modelengine.api.model.bone.type.Mount;
|
import com.ticxo.modelengine.api.model.bone.type.Mount;
|
||||||
import org.geysermc.floodgate.api.FloodgateApi;
|
import org.geysermc.floodgate.api.FloodgateApi;
|
||||||
@@ -57,7 +58,7 @@ public class MountPacketListener extends PacketAdapter {
|
|||||||
if (seat != null) {
|
if (seat != null) {
|
||||||
if (event.getPacket().getPlayerActions().read(0) == EnumWrappers.PlayerAction.START_SNEAKING) {
|
if (event.getPacket().getPlayerActions().read(0) == EnumWrappers.PlayerAction.START_SNEAKING) {
|
||||||
event.getPlayer().sendActionBar("leave");
|
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()) {
|
if (!removed && model.getEntity().isDead() && model.getModeledEntity().getBase().isAlive() && !model.getActiveModel().isRemoved()) {
|
||||||
model.spawnEntity();
|
// model.spawnEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
model.getEntity().setVisualFire(false);
|
model.getEntity().setVisualFire(false);
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import com.ticxo.modelengine.api.model.ActiveModel;
|
|||||||
import com.ticxo.modelengine.api.model.ModeledEntity;
|
import com.ticxo.modelengine.api.model.ModeledEntity;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
import re.imc.geysermodelengine.GeyserModelEngine;
|
import re.imc.geysermodelengine.GeyserModelEngine;
|
||||||
|
|
||||||
import java.util.HashMap;
|
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().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) {
|
if (modeledEntity.getBase() instanceof BukkitEntity bukkitEntity && bukkitEntity.getOriginal() instanceof LivingEntity livingEntity) {
|
||||||
controllerEntity.getLookController().setHeadYaw(livingEntity.getEyeLocation().getYaw());
|
controllerEntity.getLookController().setHeadYaw(livingEntity.getEyeLocation().getYaw());
|
||||||
controllerEntity.getLookController().setPitch(livingEntity.getEyeLocation().getPitch());
|
controllerEntity.getLookController().setPitch(livingEntity.getEyeLocation().getPitch());
|
||||||
@@ -66,6 +69,11 @@ public class ModelEntity {
|
|||||||
ModelEntity modelEntity = new ModelEntity(entity, model);
|
ModelEntity modelEntity = new ModelEntity(entity, model);
|
||||||
int id = entity.getBase().getEntityId();
|
int id = entity.getBase().getEntityId();
|
||||||
Map<ActiveModel, ModelEntity> map = ENTITIES.computeIfAbsent(id, k -> new HashMap<>());
|
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);
|
map.put(model, modelEntity);
|
||||||
|
|
||||||
return modelEntity;
|
return modelEntity;
|
||||||
|
|||||||
Reference in New Issue
Block a user