try to fix server-side crashes

This commit is contained in:
2026-04-01 11:34:50 +02:00
parent 56efa4d814
commit 62325b5b34
6 changed files with 92 additions and 50 deletions
@@ -0,0 +1,43 @@
package net.fretux.skillengine.client;
import net.minecraft.resources.ResourceLocation;
public final class ClientSkillEngineBridge {
private ClientSkillEngineBridge() {}
public static boolean clientHasSkill(ResourceLocation id) {
return SkilltreeClientState.isUnlocked(id);
}
public static int clientGetAbilitySlot(ResourceLocation id) {
return SkilltreeClientState.getSlotOfAbility(id);
}
public static ResourceLocation[] clientGetAbilitySlots() {
return SkilltreeClientState.getAbilitySlots();
}
public static void handleNodeUnlocked(ResourceLocation id, int newSkillPoints, boolean isAbility) {
if (isAbility) {
SkilltreeClientState.unlockAbility(id);
} else {
SkilltreeClientState.unlockNode(id);
}
SkilltreeClientState.setCurrentSkillPoints(newSkillPoints);
}
public static void handleSkillsSync(Iterable<ResourceLocation> unlocked,
Iterable<ResourceLocation> unlockedAbilities,
int skillPoints,
ResourceLocation[] abilitySlots) {
SkilltreeClientState.setUnlocked(unlocked);
SkilltreeClientState.setUnlockedAbilities(unlockedAbilities);
SkilltreeClientState.setCurrentSkillPoints(skillPoints);
SkilltreeClientState.setAbilitySlots(abilitySlots);
}
public static void handleCooldownSync(int slot, int cooldown) {
SkilltreeClientState.updateCooldown(slot, cooldown);
}
}
@@ -38,14 +38,18 @@ public class SkilltreeClientState {
return unlocked.contains(id);
}
public static void setUnlocked(Set<ResourceLocation> ids) {
public static void setUnlocked(Iterable<ResourceLocation> ids) {
unlocked.clear();
unlocked.addAll(ids);
for (ResourceLocation id : ids) {
unlocked.add(id);
}
}
public static void setUnlockedAbilities(Set<ResourceLocation> abilities) {
public static void setUnlockedAbilities(Iterable<ResourceLocation> abilities) {
unlockedAbilities.clear();
unlockedAbilities.addAll(abilities);
for (ResourceLocation ability : abilities) {
unlockedAbilities.add(ability);
}
}
public static void setCurrentSkillPoints(int points) {
@@ -92,4 +96,4 @@ public class SkilltreeClientState {
public static ResourceLocation[] getAbilitySlots() {
return Arrays.copyOf(abilitySlots, abilitySlots.length);
}
}
}