try to fix server side crashes (again)

This commit is contained in:
2026-03-28 18:01:27 +01:00
parent 40c83d029e
commit 2ce0182cb2
4 changed files with 13 additions and 16 deletions
+1 -1
View File
@@ -135,7 +135,7 @@ repositories {
dependencies { dependencies {
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
implementation fg.deobf("net.fretux.mindmotion:mindmotion:1.2.3") implementation fg.deobf("net.fretux.mindmotion:mindmotion:1.3.1")
// Iron's Spellbooks API only // Iron's Spellbooks API only
compileOnly fg.deobf("io.redspace.ironsspellbooks:irons_spellbooks:${irons_spells_version}:api") compileOnly fg.deobf("io.redspace.ironsspellbooks:irons_spellbooks:${irons_spells_version}:api")
@@ -1,5 +1,6 @@
package net.fretux.ascend.block; package net.fretux.ascend.block;
import net.fretux.ascend.client.ClientPacketHandlers;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
@@ -8,6 +9,8 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
public class ShrineOfRemembranceBlock extends Block { public class ShrineOfRemembranceBlock extends Block {
public ShrineOfRemembranceBlock(Properties props) { public ShrineOfRemembranceBlock(Properties props) {
@@ -24,7 +27,7 @@ public class ShrineOfRemembranceBlock extends Block {
Player player, InteractionHand hand, Player player, InteractionHand hand,
net.minecraft.world.phys.BlockHitResult hit) { net.minecraft.world.phys.BlockHitResult hit) {
if (level.isClientSide) { if (level.isClientSide) {
net.minecraft.client.Minecraft.getInstance().setScreen(new net.fretux.ascend.client.screen.ShrineScreen()); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientPacketHandlers.openShrineScreen(false));
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
return InteractionResult.CONSUME; return InteractionResult.CONSUME;
@@ -1,7 +1,8 @@
package net.fretux.ascend.network; package net.fretux.ascend.network;
import net.fretux.ascend.client.screen.ShrineScreen; import net.fretux.ascend.client.ClientPacketHandlers;
import net.minecraft.client.Minecraft; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier; import java.util.function.Supplier;
@@ -11,7 +12,7 @@ public class ClientboundOpenEssenceScreenPacket {
public static void handle(ClientboundOpenEssenceScreenPacket msg, Supplier<NetworkEvent.Context> ctx) { public static void handle(ClientboundOpenEssenceScreenPacket msg, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> { ctx.get().enqueueWork(() -> {
Minecraft.getInstance().setScreen(new ShrineScreen(true)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientPacketHandlers.openShrineScreen(true));
}); });
ctx.get().setPacketHandled(true); ctx.get().setPacketHandled(true);
} }
@@ -1,10 +1,12 @@
package net.fretux.ascend.network; package net.fretux.ascend.network;
import net.fretux.ascend.client.ClientPacketHandlers;
import net.fretux.ascend.player.PlayerStatsProvider; import net.fretux.ascend.player.PlayerStatsProvider;
import net.fretux.ascend.player.StatEffects; import net.fretux.ascend.player.StatEffects;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier; import java.util.function.Supplier;
@@ -25,17 +27,8 @@ public class ClientboundSyncStatsPacket {
} }
public void handle(Supplier<NetworkEvent.Context> ctx) { public void handle(Supplier<NetworkEvent.Context> ctx) {
System.out.println("[SERVER] Spend packet handle() called");
ctx.get().enqueueWork(() -> { ctx.get().enqueueWork(() -> {
Minecraft mc = Minecraft.getInstance(); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientPacketHandlers.syncStats(data));
var player = mc.player;
if (player != null) {
mc.player.getCapability(PlayerStatsProvider.PLAYER_STATS).ifPresent(stats -> {
stats.deserializeNBT(data);
StatEffects.applyAll(mc.player);
stats.deserializeNBT(data);
});
}
ctx.get().setPacketHandled(true); ctx.get().setPacketHandled(true);
}); });
} }