fix server-side crashes

This commit is contained in:
2026-03-28 17:47:48 +01:00
parent 4e33002ddb
commit bffcafeebd
5 changed files with 58 additions and 20 deletions
@@ -3,8 +3,9 @@ package net.fretux.skillengine.network;
import net.fretux.skillengine.skilltree.AbilityNodeRegistry;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent;
import net.fretux.skillengine.client.SkilltreeClientState;
import java.util.function.Supplier;
@@ -30,13 +31,20 @@ public class ClientboundNodeUnlockedPacket {
public static void handle(ClientboundNodeUnlockedPacket msg, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
if (AbilityNodeRegistry.get(msg.id) != null)
SkilltreeClientState.unlockAbility(msg.id);
else
SkilltreeClientState.unlockNode(msg.id);
SkilltreeClientState.setCurrentSkillPoints(msg.newSkillPoints);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientHandler.handle(msg));
});
ctx.get().setPacketHandled(true);
}
private static final class ClientHandler {
private static void handle(ClientboundNodeUnlockedPacket msg) {
if (AbilityNodeRegistry.get(msg.id) != null) {
net.fretux.skillengine.client.SkilltreeClientState.unlockAbility(msg.id);
} else {
net.fretux.skillengine.client.SkilltreeClientState.unlockNode(msg.id);
}
net.fretux.skillengine.client.SkilltreeClientState.setCurrentSkillPoints(msg.newSkillPoints);
}
}
}
@@ -1,7 +1,8 @@
package net.fretux.skillengine.network;
import net.fretux.skillengine.client.SkilltreeClientState;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
@@ -26,7 +27,13 @@ public class ClientboundSyncCooldownPacket {
}
public static void handle(ClientboundSyncCooldownPacket msg, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> SkilltreeClientState.updateCooldown(msg.slot, msg.cooldown));
ctx.get().enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientHandler.handle(msg)));
ctx.get().setPacketHandled(true);
}
private static final class ClientHandler {
private static void handle(ClientboundSyncCooldownPacket msg) {
net.fretux.skillengine.client.SkilltreeClientState.updateCooldown(msg.slot, msg.cooldown);
}
}
}
@@ -1,8 +1,9 @@
package net.fretux.skillengine.network;
import net.fretux.skillengine.client.SkilltreeClientState;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent;
import java.util.HashSet;
@@ -63,11 +64,17 @@ public class ClientboundSyncSkillsPacket {
public static void handle(ClientboundSyncSkillsPacket msg, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
SkilltreeClientState.setUnlocked(msg.unlocked);
SkilltreeClientState.setUnlockedAbilities(msg.unlockedAbilities);
SkilltreeClientState.setCurrentSkillPoints(msg.skillPoints);
SkilltreeClientState.setAbilitySlots(msg.abilitySlots);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientHandler.handle(msg));
});
ctx.get().setPacketHandled(true);
}
}
private static final class ClientHandler {
private static void handle(ClientboundSyncSkillsPacket msg) {
net.fretux.skillengine.client.SkilltreeClientState.setUnlocked(msg.unlocked);
net.fretux.skillengine.client.SkilltreeClientState.setUnlockedAbilities(msg.unlockedAbilities);
net.fretux.skillengine.client.SkilltreeClientState.setCurrentSkillPoints(msg.skillPoints);
net.fretux.skillengine.client.SkilltreeClientState.setAbilitySlots(msg.abilitySlots);
}
}
}