removed a debugger i had

This commit is contained in:
xSquishyLiam
2025-11-09 22:44:10 +00:00
parent f82dd2b7f8
commit 742351ec66
9 changed files with 69 additions and 90 deletions

20
.idea/workspace.xml generated
View File

@@ -4,14 +4,24 @@
<option name="autoReloadType" value="SELECTIVE" /> <option name="autoReloadType" value="SELECTIVE" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="ff2e9770-ec88-4715-adeb-b9dbda130e1a" name="Changes" comment="" /> <list default="true" id="ff2e9770-ec88-4715-adeb-b9dbda130e1a" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle.kts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/renovate.json" beforeDir="false" afterPath="$PROJECT_DIR$/renovate.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/propertyhandler/ModelEnginePropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/propertyhandler/ModelEnginePropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/taskshandler/ModelEngineTaskHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/taskshandler/ModelEngineTaskHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/BedrockMountControlRunnable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/BedrockMountControlRunnable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/UpdateTaskRunnable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/UpdateTaskRunnable.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="DarkyenusTimeTracker"> <component name="DarkyenusTimeTracker">
<option name="totalTimeSeconds" value="1293" /> <option name="totalTimeSeconds" value="15282" />
</component> </component>
<component name="ExternalProjectsData"> <component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$"> <projectState path="$PROJECT_DIR$">
@@ -60,7 +70,7 @@
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
<component name="GradleScriptDefinitionsStorage" workingDir="$PROJECT_DIR$" gradleHome="C:\Users\Livid\.gradle\wrapper\dists\gradle-8.12-bin\cetblhg4pflnnks72fxwobvgv\gradle-8.12" javaHome="C:\Users\Livid\.jdks\openjdk-21.0.1" gradleVersion="8.12" /> <component name="GradleScriptDefinitionsStorage" workingDir="$PROJECT_DIR$" gradleHome="C:\Users\Livid\.gradle\wrapper\dists\gradle-9.2.0-bin\11i5gvueggl8a5cioxuftxrik\gradle-9.2.0" javaHome="C:\Users\Livid\.jdks\openjdk-21.0.1" gradleVersion="9.2.0" />
<component name="MavenRunner"> <component name="MavenRunner">
<option name="delegateBuildToMaven" value="true" /> <option name="delegateBuildToMaven" value="true" />
</component> </component>
@@ -93,13 +103,13 @@
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;, &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;, &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;bettermodel-support-dev&quot;, &quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;, &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;D:/Coding/Forks/Minecraft/GeyserModelEngine&quot;, &quot;last_opened_file_path&quot;: &quot;D:/Coding/Forks/Minecraft/GeyserModelEngine&quot;,
&quot;project.structure.last.edited&quot;: &quot;Project&quot;, &quot;project.structure.last.edited&quot;: &quot;Project&quot;,
&quot;project.structure.proportion&quot;: &quot;0.0&quot;, &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;, &quot;project.structure.side.proportion&quot;: &quot;0.2&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;reference.settings.project.maven.runner&quot; &quot;settings.editor.selected.configurable&quot;: &quot;reference.settingsdialog.project.gradle&quot;
} }
}</component> }</component>
<component name="RecentsManager"> <component name="RecentsManager">

View File

@@ -1,6 +1,6 @@
plugins { plugins {
id("java") id("java")
id("io.github.goooler.shadow") version "8.1.8" id("com.gradleup.shadow") version "9.2.2"
} }
group = "re.imc" group = "re.imc"

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@@ -1,39 +1,9 @@
{ {
"$schema": "https://docs.renovatebot.com/renovate-schema.json", "$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [ "extends": [
"config:recommended", "config:recommended"
"gradle:default",
":separateMajorReleases",
":prImmediately"
], ],
"baseBranches": ["main"], "baseBranches": [
"labels": ["dependencies", "gradle"], "main"
"prConcurrentLimit": 5,
"prHourlyLimit": 1,
"dependencyDashboard": true,
"packageRules": [
{
"description": "Useful libraries",
"matchPackagePatterns": [
"dev.jorel:commandapi-paper-shade",
"com.github.retrooper",
"org.reflections"
],
"matchUpdateTypes": ["minor", "patch"],
"automerge": true
},
{
"description": "Plugin API dependencies",
"matchPackagePatterns": [
"com.ticxo.modelengine",
"org.geysermc.floodgate"
],
"groupName": "Minecraft Plugins APIs"
},
{
"description": "Automatically update Gradle Wrapper",
"matchManagers": ["gradle-wrapper"],
"groupName": "Gradle Wrapper Update"
}
] ]
} }

View File

@@ -80,8 +80,8 @@ public class GeyserModelEngine extends JavaPlugin {
private void loadRunnables() { private void loadRunnables() {
this.schedulerPool = Executors.newScheduledThreadPool(configManager.getConfig().getInt("models.thread-pool-size", 4)); this.schedulerPool = Executors.newScheduledThreadPool(configManager.getConfig().getInt("models.thread-pool-size", 4));
Bukkit.getAsyncScheduler().runAtFixedRate(this, new UpdateTaskRunnable(this), 10, configManager.getConfig().getLong("models.entity-position-update-period", 35), TimeUnit.MILLISECONDS); schedulerPool.scheduleAtFixedRate(new UpdateTaskRunnable(this), 10, configManager.getConfig().getLong("models.entity-position-update-period", 35), TimeUnit.MILLISECONDS);
Bukkit.getAsyncScheduler().runAtFixedRate(this, new BedrockMountControlRunnable(this), 1, 1, TimeUnit.MILLISECONDS); schedulerPool.scheduleAtFixedRate(new BedrockMountControlRunnable(this), 1, 1, TimeUnit.MILLISECONDS);
} }
public ConfigManager getConfigManager() { public ConfigManager getConfigManager() {

View File

@@ -40,28 +40,22 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
if (average == lastScale) return; if (average == lastScale) return;
} }
for (Player player : players) { players.forEach(player -> EntityUtils.sendCustomScale(player, modelEngineEntityData.getEntity().getEntityId(), average));
EntityUtils.sendCustomScale(player, modelEngineEntityData.getEntity().getEntityId(), average); } catch (Exception err) {
} throw new RuntimeException(err);
} catch (Throwable ignored) {} }
} }
@Override @Override
public void sendColor(EntityData entityData, Collection<Player> players, Color lastColor, boolean firstSend) { public void sendColor(EntityData entityData, Collection<Player> players, Color lastColor, boolean firstSend) {
if (players.isEmpty()) return; if (players.isEmpty()) return;
ModelEngineEntityData modelEngineEntityData = (ModelEngineEntityData) entityData; ModelEngineEntityData data = (ModelEngineEntityData) entityData;
Color color = calculateCurrentColor(data);
Color color = new Color(modelEngineEntityData.getActiveModel().getDefaultTint().asARGB()); if (!firstSend && color.equals(lastColor)) return;
if (modelEngineEntityData.getActiveModel().isMarkedHurt()) color = new Color(modelEngineEntityData.getActiveModel().getDamageTint().asARGB());
if (firstSend) { players.forEach(player -> EntityUtils.sendCustomColor(player, data.getEntity().getEntityId(), color));
if (color.equals(lastColor)) return;
}
for (Player player : players) {
EntityUtils.sendCustomColor(player, modelEngineEntityData.getEntity().getEntityId(), color);
}
} }
@Override @Override
@@ -86,7 +80,7 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
int entity = model.getEntity().getEntityId(); int entity = model.getEntity().getEntityId();
Set<String> forceAnimSet = Set.of(forceAnims); Set<String> forceAnimSet = Set.of(forceAnims);
Map<String, Boolean> boneUpdates = new HashMap<>(); Map<String, Boolean> boneUpdates = new LinkedHashMap<>();
Map<String, Boolean> animUpdates = new HashMap<>(); Map<String, Boolean> animUpdates = new HashMap<>();
Set<String> anims = new HashSet<>(); Set<String> anims = new HashSet<>();
@@ -121,7 +115,9 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
} }
} }
for (String anim : lastPlayed) animUpdates.put(anim, true); for (String anim : lastPlayed) {
animUpdates.put(anim, true);
}
if (boneUpdates.isEmpty() && animUpdates.isEmpty()) return; if (boneUpdates.isEmpty() && animUpdates.isEmpty()) return;
@@ -150,12 +146,21 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
if (plugin.getConfigManager().getConfig().getBoolean("options.debug")) plugin.getLogger().info(animUpdates.toString()); if (plugin.getConfigManager().getConfig().getBoolean("options.debug")) plugin.getLogger().info(animUpdates.toString());
List<String> list = new ArrayList<>(boneUpdates.keySet()); players.forEach(player -> EntityUtils.sendIntProperties(player, entity, intUpdates));
Collections.sort(list); }
for (Player player : players) { private void processBone(ModelEngineEntityData model, BlueprintBone bone, Map<String, Boolean> map) {
EntityUtils.sendIntProperties(player, entity, intUpdates); String name = unstripName(bone).toLowerCase();
} if (name.equals("hitbox") || name.equals("shadow") || name.equals("mount") || name.startsWith("p_") || name.startsWith("b_") || name.startsWith("ob_")) return;
bone.getChildren().values().forEach(child -> processBone(model, child, map));
ModelBone activeBone = model.getActiveModel().getBones().get(bone.getName());
boolean visible = false;
if (activeBone != null) visible = activeBone.isVisible();
map.put(name, visible);
} }
public String unstripName(BlueprintBone bone) { public String unstripName(BlueprintBone bone) {
@@ -168,19 +173,8 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
return name; return name;
} }
private void processBone(ModelEngineEntityData model, BlueprintBone bone, Map<String, Boolean> map) { private Color calculateCurrentColor(ModelEngineEntityData data) {
String name = unstripName(bone).toLowerCase(); if (data.getActiveModel().isMarkedHurt()) return new Color(data.getActiveModel().getDamageTint().asARGB());
if (name.equals("hitbox") || name.equals("shadow") || name.equals("mount") || name.startsWith("p_") || name.startsWith("b_") || name.startsWith("ob_")) return; return new Color(data.getActiveModel().getDefaultTint().asARGB());
for (BlueprintBone blueprintBone : bone.getChildren().values()) {
processBone(model, blueprintBone, map);
}
ModelBone activeBone = model.getActiveModel().getBones().get(bone.getName());
boolean visible = false;
if (activeBone != null) visible = activeBone.isVisible();
map.put(name, visible);
} }
} }

View File

@@ -47,10 +47,12 @@ public class ModelEngineTaskHandler implements TaskHandler {
@Override @Override
public void runAsync() { public void runAsync() {
plugin.getEntityTaskManager().checkViewers(entityData, entityData.getViewers()); if (removed || entityData == null) return;
PacketEntity entity = entityData.getEntity(); PacketEntity entity = entityData.getEntity();
if (entity.isDead()) return; if (entity == null || entity.isDead()) return;
plugin.getEntityTaskManager().checkViewers(entityData, entityData.getViewers());
entityData.teleportToModel(); entityData.teleportToModel();
@@ -71,11 +73,7 @@ public class ModelEngineTaskHandler implements TaskHandler {
if (tick % 5 == 0) { if (tick % 5 == 0) {
if (tick % 40 == 0) { if (tick % 40 == 0) {
for (Player viewer : Set.copyOf(viewers)) { viewers.removeIf(viewer -> !plugin.getEntityTaskManager().canSee(viewer, entityData.getEntity()));
if (!plugin.getEntityTaskManager().canSee(viewer, entityData.getEntity())) {
viewers.remove(viewer);
}
}
} }
} }

View File

@@ -14,7 +14,7 @@ import re.imc.geysermodelengine.GeyserModelEngine;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer; import java.util.function.Consumer;
public class BedrockMountControlRunnable implements Consumer<ScheduledTask> { public class BedrockMountControlRunnable implements Runnable {
private final GeyserModelEngine plugin; private final GeyserModelEngine plugin;
@@ -23,7 +23,7 @@ public class BedrockMountControlRunnable implements Consumer<ScheduledTask> {
} }
@Override @Override
public void accept(ScheduledTask scheduledTask) { public void run() {
for (UUID playerUUID : plugin.getModelManager().getPlayerJoinedCache()) { for (UUID playerUUID : plugin.getModelManager().getPlayerJoinedCache()) {
Player player = Bukkit.getPlayer(playerUUID); Player player = Bukkit.getPlayer(playerUUID);

View File

@@ -6,9 +6,10 @@ import re.imc.geysermodelengine.managers.model.entity.EntityData;
import re.imc.geysermodelengine.managers.model.model.Model; import re.imc.geysermodelengine.managers.model.model.Model;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer; import java.util.function.Consumer;
public class UpdateTaskRunnable implements Consumer<ScheduledTask> { public class UpdateTaskRunnable implements Runnable {
private final GeyserModelEngine plugin; private final GeyserModelEngine plugin;
@@ -17,10 +18,16 @@ public class UpdateTaskRunnable implements Consumer<ScheduledTask> {
} }
@Override @Override
public void accept(ScheduledTask scheduledTask) { public void run() {
ConcurrentHashMap<Integer, Map<Model, EntityData>> entitiesCache = plugin.getModelManager().getEntitiesCache();
if (entitiesCache.isEmpty()) return;
try { try {
for (Map<Model, EntityData> models : plugin.getModelManager().getEntitiesCache().values()) { for (Map<Model, EntityData> models : entitiesCache.values()) {
models.values().forEach(entityData -> plugin.getEntityTaskManager().getPropertyHandler().updateEntityProperties(entityData, entityData.getViewers(), false)); models.values().forEach(entityData -> {
if (entityData.getViewers().isEmpty()) return;
plugin.getEntityTaskManager().getPropertyHandler().updateEntityProperties(entityData, entityData.getViewers(), false);
});
} }
} catch (Throwable err) { } catch (Throwable err) {
throw new RuntimeException(err); throw new RuntimeException(err);