fix server-side crashes
This commit is contained in:
@@ -3,7 +3,6 @@ package net.fretux.skillengine.api;
|
|||||||
import net.fretux.skillengine.SkillEngine;
|
import net.fretux.skillengine.SkillEngine;
|
||||||
import net.fretux.skillengine.capability.PlayerSkillData;
|
import net.fretux.skillengine.capability.PlayerSkillData;
|
||||||
import net.fretux.skillengine.capability.SkillEngineCapabilities;
|
import net.fretux.skillengine.capability.SkillEngineCapabilities;
|
||||||
import net.fretux.skillengine.client.SkilltreeClientState;
|
|
||||||
import net.fretux.skillengine.skilltree.AbilityNode;
|
import net.fretux.skillengine.skilltree.AbilityNode;
|
||||||
import net.fretux.skillengine.skilltree.AbilityNodeRegistry;
|
import net.fretux.skillengine.skilltree.AbilityNodeRegistry;
|
||||||
import net.fretux.skillengine.skilltree.SkillLogic;
|
import net.fretux.skillengine.skilltree.SkillLogic;
|
||||||
@@ -11,6 +10,8 @@ import net.fretux.skillengine.skilltree.SkillNode;
|
|||||||
import net.fretux.skillengine.skilltree.SkillNodeRegistry;
|
import net.fretux.skillengine.skilltree.SkillNodeRegistry;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -130,14 +131,28 @@ public final class SkillEngineAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean clientHasSkill(ResourceLocation id) {
|
public static boolean clientHasSkill(ResourceLocation id) {
|
||||||
return SkilltreeClientState.isUnlocked(id);
|
return FMLEnvironment.dist == Dist.CLIENT && ClientAccess.clientHasSkill(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int clientGetAbilitySlot(ResourceLocation id) {
|
public static int clientGetAbilitySlot(ResourceLocation id) {
|
||||||
return SkilltreeClientState.getSlotOfAbility(id);
|
return FMLEnvironment.dist == Dist.CLIENT ? ClientAccess.clientGetAbilitySlot(id) : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResourceLocation[] clientGetAbilitySlots() {
|
public static ResourceLocation[] clientGetAbilitySlots() {
|
||||||
return SkilltreeClientState.getAbilitySlots();
|
return FMLEnvironment.dist == Dist.CLIENT ? ClientAccess.clientGetAbilitySlots() : new ResourceLocation[3];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private static final class ClientAccess {
|
||||||
|
private static boolean clientHasSkill(ResourceLocation id) {
|
||||||
|
return net.fretux.skillengine.client.SkilltreeClientState.isUnlocked(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int clientGetAbilitySlot(ResourceLocation id) {
|
||||||
|
return net.fretux.skillengine.client.SkilltreeClientState.getSlotOfAbility(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ResourceLocation[] clientGetAbilitySlots() {
|
||||||
|
return net.fretux.skillengine.client.SkilltreeClientState.getAbilitySlots();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ import com.mojang.blaze3d.platform.InputConstants;
|
|||||||
import net.fretux.skillengine.network.PacketHandler;
|
import net.fretux.skillengine.network.PacketHandler;
|
||||||
import net.fretux.skillengine.network.ServerboundActivateAbilityPacket;
|
import net.fretux.skillengine.network.ServerboundActivateAbilityPacket;
|
||||||
import net.minecraft.client.KeyMapping;
|
import net.minecraft.client.KeyMapping;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.client.event.InputEvent;
|
import net.minecraftforge.client.event.InputEvent;
|
||||||
import net.minecraftforge.client.settings.KeyConflictContext;
|
import net.minecraftforge.client.settings.KeyConflictContext;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
@Mod.EventBusSubscriber
|
@Mod.EventBusSubscriber(modid = net.fretux.skillengine.SkillEngine.MODID, value = Dist.CLIENT)
|
||||||
public class AbilityKeybindHandler {
|
public class AbilityKeybindHandler {
|
||||||
|
|
||||||
public static final KeyMapping ABILITY_1 = new KeyMapping(
|
public static final KeyMapping ABILITY_1 = new KeyMapping(
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ package net.fretux.skillengine.network;
|
|||||||
import net.fretux.skillengine.skilltree.AbilityNodeRegistry;
|
import net.fretux.skillengine.skilltree.AbilityNodeRegistry;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
import net.fretux.skillengine.client.SkilltreeClientState;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
@@ -30,13 +31,20 @@ public class ClientboundNodeUnlockedPacket {
|
|||||||
|
|
||||||
public static void handle(ClientboundNodeUnlockedPacket msg, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(ClientboundNodeUnlockedPacket msg, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().enqueueWork(() -> {
|
ctx.get().enqueueWork(() -> {
|
||||||
if (AbilityNodeRegistry.get(msg.id) != null)
|
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientHandler.handle(msg));
|
||||||
SkilltreeClientState.unlockAbility(msg.id);
|
|
||||||
else
|
|
||||||
SkilltreeClientState.unlockNode(msg.id);
|
|
||||||
SkilltreeClientState.setCurrentSkillPoints(msg.newSkillPoints);
|
|
||||||
});
|
});
|
||||||
ctx.get().setPacketHandled(true);
|
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;
|
package net.fretux.skillengine.network;
|
||||||
|
|
||||||
import net.fretux.skillengine.client.SkilltreeClientState;
|
|
||||||
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;
|
||||||
@@ -26,7 +27,13 @@ public class ClientboundSyncCooldownPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void handle(ClientboundSyncCooldownPacket msg, Supplier<NetworkEvent.Context> ctx) {
|
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);
|
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;
|
package net.fretux.skillengine.network;
|
||||||
|
|
||||||
import net.fretux.skillengine.client.SkilltreeClientState;
|
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -63,11 +64,17 @@ public class ClientboundSyncSkillsPacket {
|
|||||||
|
|
||||||
public static void handle(ClientboundSyncSkillsPacket msg, Supplier<NetworkEvent.Context> ctx) {
|
public static void handle(ClientboundSyncSkillsPacket msg, Supplier<NetworkEvent.Context> ctx) {
|
||||||
ctx.get().enqueueWork(() -> {
|
ctx.get().enqueueWork(() -> {
|
||||||
SkilltreeClientState.setUnlocked(msg.unlocked);
|
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientHandler.handle(msg));
|
||||||
SkilltreeClientState.setUnlockedAbilities(msg.unlockedAbilities);
|
|
||||||
SkilltreeClientState.setCurrentSkillPoints(msg.skillPoints);
|
|
||||||
SkilltreeClientState.setAbilitySlots(msg.abilitySlots);
|
|
||||||
});
|
});
|
||||||
ctx.get().setPacketHandled(true);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user