updated BetterModel Support

This commit is contained in:
xSquishyLiam
2025-11-25 03:25:17 +00:00
parent 76b857e8a4
commit be7b067889
9 changed files with 59 additions and 64 deletions

52
.idea/workspace.xml generated
View File

@@ -11,7 +11,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="DarkyenusTimeTracker"> <component name="DarkyenusTimeTracker">
<option name="totalTimeSeconds" value="20478" /> <option name="totalTimeSeconds" value="21532" />
</component> </component>
<component name="ExternalProjectsData"> <component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$"> <projectState path="$PROJECT_DIR$">
@@ -78,31 +78,31 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
"Gradle.Build GeyserModelEngine.executor": "Run", &quot;Gradle.Build GeyserModelEngine.executor&quot;: &quot;Run&quot;,
"Gradle.Download Sources.executor": "Run", &quot;Gradle.Download Sources.executor&quot;: &quot;Run&quot;,
"Gradle.GeyserModelEngine [buildDependents].executor": "Run", &quot;Gradle.GeyserModelEngine [buildDependents].executor&quot;: &quot;Run&quot;,
"Gradle.GeyserModelEngine [buildNeeded].executor": "Run", &quot;Gradle.GeyserModelEngine [buildNeeded].executor&quot;: &quot;Run&quot;,
"Gradle.GeyserModelEngine [build].executor": "Run", &quot;Gradle.GeyserModelEngine [build].executor&quot;: &quot;Run&quot;,
"Gradle.GeyserModelEngine [clean].executor": "Run", &quot;Gradle.GeyserModelEngine [clean].executor&quot;: &quot;Run&quot;,
"Gradle.GeyserModelEngine [jar].executor": "Run", &quot;Gradle.GeyserModelEngine [jar].executor&quot;: &quot;Run&quot;,
"Maven.GeyserModelEngine [install...].executor": "Run", &quot;Maven.GeyserModelEngine [install...].executor&quot;: &quot;Run&quot;,
"Maven.GeyserModelEngine [install].executor": "Run", &quot;Maven.GeyserModelEngine [install].executor&quot;: &quot;Run&quot;,
"ModuleVcsDetector.initialDetectionPerformed": "true", &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
"RunOnceActivity.git.unshallow": "true", &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
"git-widget-placeholder": "main", &quot;git-widget-placeholder&quot;: &quot;main&quot;,
"ignore.virus.scanning.warn.message": "true", &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
"kotlin-language-version-configured": "true", &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
"last_opened_file_path": "D:/Coding/Forks/Minecraft/GeyserModelEngine/geyser", &quot;last_opened_file_path&quot;: &quot;D:/Coding/Forks/Minecraft/GeyserModelEngine/geyser&quot;,
"project.structure.last.edited": "Project", &quot;project.structure.last.edited&quot;: &quot;Project&quot;,
"project.structure.proportion": "0.0", &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
"project.structure.side.proportion": "0.2", &quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
"settings.editor.selected.configurable": "reference.settingsdialog.project.gradle" &quot;settings.editor.selected.configurable&quot;: &quot;reference.settingsdialog.project.gradle&quot;
} }
}]]></component> }</component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="D:\Coding\Forks\Minecraft\GeyserModelEngine\geyser" /> <recent name="D:\Coding\Forks\Minecraft\GeyserModelEngine\geyser" />
@@ -231,8 +231,8 @@
<item itemvalue="Gradle.GeyserModelEngine [build]" /> <item itemvalue="Gradle.GeyserModelEngine [build]" />
<item itemvalue="Gradle.GeyserModelEngine [jar]" /> <item itemvalue="Gradle.GeyserModelEngine [jar]" />
<item itemvalue="Gradle.GeyserModelEngine [clean]" /> <item itemvalue="Gradle.GeyserModelEngine [clean]" />
<item itemvalue="Gradle.GeyserModelEngine [buildDependents]" />
<item itemvalue="Gradle.GeyserModelEngine [buildNeeded]" /> <item itemvalue="Gradle.GeyserModelEngine [buildNeeded]" />
<item itemvalue="Gradle.GeyserModelEngine [buildDependents]" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>

View File

@@ -21,7 +21,7 @@ repositories {
dependencies { dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT") compileOnly("io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT")
implementation("dev.jorel:commandapi-paper-shade:11.0.0") // implementation("dev.jorel:commandapi-paper-shade:11.0.0")
compileOnly("com.ticxo.modelengine:ModelEngine:R4.0.9") compileOnly("com.ticxo.modelengine:ModelEngine:R4.0.9")
compileOnly("io.github.toxicity188:bettermodel:1.14.0") compileOnly("io.github.toxicity188:bettermodel:1.14.0")

View File

@@ -2,8 +2,6 @@ package re.imc.geysermodelengine;
import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.event.PacketListenerPriority; import com.github.retrooper.packetevents.event.PacketListenerPriority;
import dev.jorel.commandapi.CommandAPI;
import dev.jorel.commandapi.CommandAPIPaperConfig;
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder; import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -35,7 +33,7 @@ public class GeyserModelEngine extends JavaPlugin {
PacketEvents.setAPI(SpigotPacketEventsBuilder.build(this)); PacketEvents.setAPI(SpigotPacketEventsBuilder.build(this));
PacketEvents.getAPI().load(); PacketEvents.getAPI().load();
CommandAPI.onLoad(new CommandAPIPaperConfig(this)); // CommandAPI.onLoad(new CommandAPIPaperConfig(this));
} }
@Override @Override
@@ -56,12 +54,12 @@ public class GeyserModelEngine extends JavaPlugin {
this.modelManager.removeEntities(); this.modelManager.removeEntities();
PacketEvents.getAPI().terminate(); PacketEvents.getAPI().terminate();
CommandAPI.onDisable(); // CommandAPI.onDisable();
} }
private void loadHooks() { private void loadHooks() {
PacketEvents.getAPI().init(); PacketEvents.getAPI().init();
CommandAPI.onEnable(); // CommandAPI.onEnable();
} }
private void loadBStats() { private void loadBStats() {

View File

@@ -1,7 +1,5 @@
package re.imc.geysermodelengine.commands.geysermodelenginecommands; package re.imc.geysermodelengine.commands.geysermodelenginecommands;
import dev.jorel.commandapi.CommandAPICommand;
import org.bukkit.Bukkit;
import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.commands.subcommands.SubCommands; import re.imc.geysermodelengine.managers.commands.subcommands.SubCommands;
import re.imc.geysermodelengine.util.ColourUtils; import re.imc.geysermodelengine.util.ColourUtils;
@@ -16,13 +14,13 @@ public class GeyserModelEngineReloadCommand implements SubCommands {
this.plugin = plugin; this.plugin = plugin;
} }
@Override // @Override
public CommandAPICommand onCommand() { // public CommandAPICommand onCommand() {
return new CommandAPICommand("reload") // return new CommandAPICommand("reload")
.withPermission("geysermodelengine.commands.reload") // .withPermission("geysermodelengine.commands.reload")
.executes((sender, args) -> { // .executes((sender, args) -> {
Bukkit.getAsyncScheduler().runNow(plugin, scheduledTask -> plugin.getConfigManager().load()); // Bukkit.getAsyncScheduler().runNow(plugin, scheduledTask -> plugin.getConfigManager().load());
sender.sendMessage(colourUtils.miniFormat(plugin.getConfigManager().getLang().getString("commands.reload.successfully-reloaded"))); // sender.sendMessage(colourUtils.miniFormat(plugin.getConfigManager().getLang().getString("commands.reload.successfully-reloaded")));
}); // });
} // }
} }

View File

@@ -1,6 +1,5 @@
package re.imc.geysermodelengine.managers.commands.managers.geysermodelengine; package re.imc.geysermodelengine.managers.commands.managers.geysermodelengine;
import dev.jorel.commandapi.CommandAPICommand;
import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.commands.geysermodelenginecommands.GeyserModelEngineReloadCommand; import re.imc.geysermodelengine.commands.geysermodelenginecommands.GeyserModelEngineReloadCommand;
import re.imc.geysermodelengine.managers.commands.CommandManagers; import re.imc.geysermodelengine.managers.commands.CommandManagers;
@@ -19,11 +18,11 @@ public class GeyserModelEngineCommandManager implements CommandManagers {
} }
private void registerCommand() { private void registerCommand() {
CommandAPICommand geyserModelEngineCommand = new CommandAPICommand(getName()); // CommandAPICommand geyserModelEngineCommand = new CommandAPICommand(getName());
//
commands.forEach(subCommands -> geyserModelEngineCommand.withSubcommand(subCommands.onCommand())); // commands.forEach(subCommands -> geyserModelEngineCommand.withSubcommand(subCommands.onCommand()));
//
geyserModelEngineCommand.register(); // geyserModelEngineCommand.register();
} }
@Override @Override

View File

@@ -1,11 +1,9 @@
package re.imc.geysermodelengine.managers.commands.subcommands; package re.imc.geysermodelengine.managers.commands.subcommands;
import dev.jorel.commandapi.CommandAPICommand;
public interface SubCommands { public interface SubCommands {
/** /**
* Subcommand setup * Subcommand setup
*/ */
CommandAPICommand onCommand(); // CommandAPICommand onCommand();
} }

View File

@@ -2,10 +2,10 @@ package re.imc.geysermodelengine.managers.model.entity;
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import kr.toxicity.model.api.entity.BaseEntity;
import kr.toxicity.model.api.tracker.EntityTracker; import kr.toxicity.model.api.tracker.EntityTracker;
import kr.toxicity.model.api.tracker.Tracker; import kr.toxicity.model.api.tracker.Tracker;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.model.taskshandler.BetterModelTaskHandler; import re.imc.geysermodelengine.managers.model.taskshandler.BetterModelTaskHandler;
@@ -20,7 +20,7 @@ public class BetterModelEntityData implements EntityData {
private final PacketEntity entity; private final PacketEntity entity;
private final Set<Player> viewers = Sets.newConcurrentHashSet(); private final Set<Player> viewers = Sets.newConcurrentHashSet();
private final Entity entitySource; private final BaseEntity entitySource;
private final Tracker tracker; private final Tracker tracker;
private final EntityTracker entityTracker; private final EntityTracker entityTracker;
@@ -28,20 +28,20 @@ public class BetterModelEntityData implements EntityData {
private boolean hurt; private boolean hurt;
public BetterModelEntityData(GeyserModelEngine plugin, Entity entitySource, Tracker tracker, EntityTracker entityTracker) { public BetterModelEntityData(GeyserModelEngine plugin, BaseEntity entitySource, Tracker tracker, EntityTracker entityTracker) {
this.plugin = plugin; this.plugin = plugin;
this.entitySource = entitySource; this.entitySource = entitySource;
this.tracker = tracker; this.tracker = tracker;
this.entityTracker = entityTracker; this.entityTracker = entityTracker;
this.entity = new PacketEntity(EntityTypes.PIG, viewers, entitySource.getLocation()); this.entity = new PacketEntity(EntityTypes.PIG, viewers, entitySource.location());
runEntityTask(); runEntityTask();
} }
@Override @Override
public void teleportToModel() { public void teleportToModel() {
Location location = entitySource.getLocation(); Location location = entitySource.location();
entity.teleport(location); entity.teleport(location);
} }
@@ -68,7 +68,7 @@ public class BetterModelEntityData implements EntityData {
this.hurt = hurt; this.hurt = hurt;
} }
public Entity getEntitySource() { public BaseEntity getEntitySource() {
return entitySource; return entitySource;
} }

View File

@@ -1,5 +1,6 @@
package re.imc.geysermodelengine.managers.model.modelhandler; package re.imc.geysermodelengine.managers.model.modelhandler;
import kr.toxicity.model.api.entity.BaseEntity;
import kr.toxicity.model.api.tracker.EntityTracker; import kr.toxicity.model.api.tracker.EntityTracker;
import kr.toxicity.model.api.tracker.Tracker; import kr.toxicity.model.api.tracker.Tracker;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -26,11 +27,11 @@ public class BetterModelHandler implements ModelHandler {
//TODO fix dupe issue - dupe happens when server restart //TODO fix dupe issue - dupe happens when server restart
@Override @Override
public void createModel(Object... objects) { public void createModel(Object... objects) {
Entity entitySource = (Entity) objects[0]; BaseEntity entitySource = (BaseEntity) objects[0];
Tracker tracker = (Tracker) objects[1]; Tracker tracker = (Tracker) objects[1];
EntityTracker entityTracker = (EntityTracker) objects[2]; EntityTracker entityTracker = (EntityTracker) objects[2];
int entityID = entitySource.getEntityId(); int entityID = entitySource.id();
PropertyHandler propertyHandler = plugin.getEntityTaskManager().getPropertyHandler(); PropertyHandler propertyHandler = plugin.getEntityTaskManager().getPropertyHandler();
EntityData entityData = new BetterModelEntityData(plugin, entitySource, tracker, entityTracker); EntityData entityData = new BetterModelEntityData(plugin, entitySource, tracker, entityTracker);

View File

@@ -2,6 +2,7 @@ package re.imc.geysermodelengine.managers.model.taskshandler;
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 kr.toxicity.model.api.entity.BaseEntity;
import kr.toxicity.model.api.tracker.Tracker; import kr.toxicity.model.api.tracker.Tracker;
import me.zimzaza4.geyserutils.spigot.api.EntityUtils; import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@@ -53,17 +54,17 @@ public class BetterModelTaskHandler implements TaskHandler {
if (entity.isDead()) return; if (entity.isDead()) return;
Set<Player> viewers = entityData.getViewers(); Set<Player> viewers = entityData.getViewers();
Entity entitySource = entityData.getEntitySource(); BaseEntity entitySource = entityData.getEntitySource();
Tracker tracker = entityData.getTracker(); Tracker tracker = entityData.getTracker();
entityData.teleportToModel(); entityData.teleportToModel();
if (entitySource.isDead() || tracker.forRemoval()) { if (entitySource.dead() || tracker.forRemoval()) {
removed = true; removed = true;
entity.remove(); entity.remove();
plugin.getModelManager().getEntitiesCache().remove(entitySource.getEntityId()); plugin.getModelManager().getEntitiesCache().remove(entitySource.id());
plugin.getModelManager().getModelEntitiesCache().remove(entitySource.getEntityId()); plugin.getModelManager().getModelEntitiesCache().remove(entitySource.id());
cancel(); cancel();
return; return;