From 9ce984a54a0548698f2412e0762884262c8bcaa8 Mon Sep 17 00:00:00 2001 From: fretuks Date: Fri, 5 Dec 2025 18:41:32 +0100 Subject: [PATCH] Remove json, implement mutual exclusives, adjustments & fix bugs --- .../capability/PlayerSkillData.java | 23 ++++++------------- .../capability/PlayerSkillProvider.java | 2 -- .../capability/SkillEngineCapabilities.java | 2 +- .../client/AbilityBindingScreen.java | 3 ++- .../client/AbilitySelectScreen.java | 11 +++------ .../client/AbilitySlotsScreen.java | 8 ++----- .../skillengine/client/ClientEvents.java | 1 + .../client/SkilltreeClientState.java | 10 ++------ .../skillengine/client/SkilltreeScreen.java | 23 +++++++------------ .../events/SkillEnginePlayerEvents.java | 20 ++++++++-------- .../ClientboundNodeUnlockedPacket.java | 1 - .../skillengine/network/PacketHandler.java | 2 +- .../network/ServerboundBindAbilityPacket.java | 2 -- .../network/ServerboundUnlockNodePacket.java | 6 +---- .../skilltree/AbilityNodeLoader.java | 15 +++--------- .../skilltree/AbilityNodeRegistry.java | 5 ---- .../skilltree/SkillNodeLoader.java | 5 ++-- .../assets/skillengine/lang/en_us.json | 5 ++++ 18 files changed, 48 insertions(+), 96 deletions(-) create mode 100644 src/main/resources/assets/skillengine/lang/en_us.json diff --git a/src/main/java/net/fretux/skillengine/capability/PlayerSkillData.java b/src/main/java/net/fretux/skillengine/capability/PlayerSkillData.java index 8a48397..5e55569 100644 --- a/src/main/java/net/fretux/skillengine/capability/PlayerSkillData.java +++ b/src/main/java/net/fretux/skillengine/capability/PlayerSkillData.java @@ -23,12 +23,6 @@ public class PlayerSkillData { public boolean isUnlocked(ResourceLocation nodeId) { return unlockedNodes.contains(nodeId); } - public boolean hasTag(ResourceLocation tag) { - return activeTags.contains(tag); - } - public Set getActiveTags() { - return activeTags; - } private final ResourceLocation[] abilitySlots = new ResourceLocation[3]; @@ -57,10 +51,10 @@ public class PlayerSkillData { } tag.put("Tags", tagList); ListTag abilityList = new ListTag(); - for (int i = 0; i < abilitySlots.length; i++) { + for (ResourceLocation abilitySlot : abilitySlots) { CompoundTag t = new CompoundTag(); - if (abilitySlots[i] != null) { - t.putString("Id", abilitySlots[i].toString()); + if (abilitySlot != null) { + t.putString("Id", abilitySlot.toString()); } else { t.putString("Id", ""); } @@ -130,9 +124,12 @@ public class PlayerSkillData { } public void bindAbility(int slot, ResourceLocation abilityId) { + bindHelperFunc(slot, abilityId, abilitySlots); + } + + public static void bindHelperFunc(int slot, ResourceLocation abilityId, ResourceLocation[] abilitySlots) { int index = slot - 1; if (index < 0 || index >= abilitySlots.length) return; - // Ensure the same ability is not present in multiple slots if (abilityId != null) { for (int i = 0; i < abilitySlots.length; i++) { if (abilityId.equals(abilitySlots[i])) { @@ -143,12 +140,6 @@ public class PlayerSkillData { abilitySlots[index] = abilityId; } - public ResourceLocation getAbilityInSlot(int slot) { - int index = slot - 1; - if (index < 0 || index >= abilitySlots.length) return null; - return abilitySlots[index]; - } - public ResourceLocation[] getAbilitySlots() { return abilitySlots.clone(); } diff --git a/src/main/java/net/fretux/skillengine/capability/PlayerSkillProvider.java b/src/main/java/net/fretux/skillengine/capability/PlayerSkillProvider.java index f8da9c4..3af4c5b 100644 --- a/src/main/java/net/fretux/skillengine/capability/PlayerSkillProvider.java +++ b/src/main/java/net/fretux/skillengine/capability/PlayerSkillProvider.java @@ -9,9 +9,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class PlayerSkillProvider implements ICapabilityProvider, ICapabilitySerializable { - public static final ResourceLocation ID = new ResourceLocation("skillengine", "player_skill_data"); - private final PlayerSkillData backend = new PlayerSkillData(); private final LazyOptional optional = LazyOptional.of(() -> backend); diff --git a/src/main/java/net/fretux/skillengine/capability/SkillEngineCapabilities.java b/src/main/java/net/fretux/skillengine/capability/SkillEngineCapabilities.java index daba6e6..fef46db 100644 --- a/src/main/java/net/fretux/skillengine/capability/SkillEngineCapabilities.java +++ b/src/main/java/net/fretux/skillengine/capability/SkillEngineCapabilities.java @@ -19,7 +19,7 @@ public class SkillEngineCapabilities { @SubscribeEvent public static void onAttachCapabilities(AttachCapabilitiesEvent event) { - if (event.getObject() instanceof Player player) { + if (event.getObject() instanceof Player) { SkillEngine.LOGGER.info("Attaching PlayerSkillData capability"); event.addCapability( new ResourceLocation(SkillEngine.MODID, "player_skill_data"), diff --git a/src/main/java/net/fretux/skillengine/client/AbilityBindingScreen.java b/src/main/java/net/fretux/skillengine/client/AbilityBindingScreen.java index 471ff7e..c03e5f4 100644 --- a/src/main/java/net/fretux/skillengine/client/AbilityBindingScreen.java +++ b/src/main/java/net/fretux/skillengine/client/AbilityBindingScreen.java @@ -10,6 +10,7 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; public class AbilityBindingScreen extends Screen { @@ -74,7 +75,7 @@ public class AbilityBindingScreen extends Screen { } @Override - public void render(GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { + public void render(@NotNull GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { this.renderBackground(gfx); int x = (width - PANEL_WIDTH) / 2; int y = (height - PANEL_HEIGHT) / 2; diff --git a/src/main/java/net/fretux/skillengine/client/AbilitySelectScreen.java b/src/main/java/net/fretux/skillengine/client/AbilitySelectScreen.java index a030d11..f95a4b6 100644 --- a/src/main/java/net/fretux/skillengine/client/AbilitySelectScreen.java +++ b/src/main/java/net/fretux/skillengine/client/AbilitySelectScreen.java @@ -10,19 +10,17 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; public class AbilitySelectScreen extends Screen { - private final Screen parent; - private final int slot; // 1..3 - + private final int slot; private final List unlockedAbilities = new ArrayList<>(); private int page = 0; private static final int PAGE_SIZE = 8; - private static final int PANEL_WIDTH = 260; private static final int PANEL_HEIGHT = 220; @@ -54,7 +52,6 @@ public class AbilitySelectScreen extends Screen { for (int i = start; i < end; i++) { AbilityNode node = unlockedAbilities.get(i); String label = node.getTitle().getString(); - // Disable if already in this slot to avoid redundant bind boolean alreadyInThisSlot = SkilltreeClientState.getSlotOfAbility(node.getId()) == slot; Button btn = Button.builder(Component.literal(label), b -> select(node)) .pos(x + 15, rowY) @@ -67,7 +64,6 @@ public class AbilitySelectScreen extends Screen { addRenderableWidget(btn); rowY += 24; } - // paging controls if (page > 0) { addRenderableWidget(Button.builder(Component.literal("< Prev"), b -> { page--; @@ -86,7 +82,6 @@ public class AbilitySelectScreen extends Screen { private void select(AbilityNode node) { ResourceLocation id = node.getId(); - // optimistic client update, then send to server SkilltreeClientState.bindAbilityLocal(slot, id); PacketHandler.CHANNEL.sendToServer(new ServerboundBindAbilityPacket(id, slot)); back(); @@ -107,7 +102,7 @@ public class AbilitySelectScreen extends Screen { } @Override - public void render(GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { + public void render(@NotNull GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { this.renderBackground(gfx); int x = (width - PANEL_WIDTH) / 2; int y = (height - PANEL_HEIGHT) / 2; diff --git a/src/main/java/net/fretux/skillengine/client/AbilitySlotsScreen.java b/src/main/java/net/fretux/skillengine/client/AbilitySlotsScreen.java index bd102a7..9371d62 100644 --- a/src/main/java/net/fretux/skillengine/client/AbilitySlotsScreen.java +++ b/src/main/java/net/fretux/skillengine/client/AbilitySlotsScreen.java @@ -8,6 +8,7 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; public class AbilitySlotsScreen extends Screen { private static final int PANEL_WIDTH = 260; @@ -24,7 +25,6 @@ public class AbilitySlotsScreen extends Screen { int buttonW = 80; int buttonH = 20; int buttonX = x + PANEL_WIDTH - buttonW - 15; - // Y slot = 1 addRenderableWidget(Button.builder(Component.literal("Rebind"), b -> openSelect(1)) .pos(buttonX, rowY).size(buttonW, buttonH).build()); @@ -34,7 +34,6 @@ public class AbilitySlotsScreen extends Screen { // C slot = 3 addRenderableWidget(Button.builder(Component.literal("Rebind"), b -> openSelect(3)) .pos(buttonX, rowY + 70).size(buttonW, buttonH).build()); - addRenderableWidget(Button.builder(Component.literal("Close"), b -> onClose()) .pos(x + PANEL_WIDTH - 70, y + PANEL_HEIGHT - 28).size(60, 20).build()); } @@ -54,20 +53,17 @@ public class AbilitySlotsScreen extends Screen { } @Override - public void render(GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { + public void render(@NotNull GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { this.renderBackground(gfx); int x = (width - PANEL_WIDTH) / 2; int y = (height - PANEL_HEIGHT) / 2; - gfx.fill(0, 0, width, height, 0xAA000000); gfx.fill(x, y, x + PANEL_WIDTH, y + PANEL_HEIGHT, 0xFF222222); gfx.drawCenteredString(font, Component.literal("Ability Slots"), x + PANEL_WIDTH / 2, y + 12, 0xFFFFFF); - int rowY = y + 40; drawSlotRow(gfx, x + 15, rowY, 1, "Y"); drawSlotRow(gfx, x + 15, rowY + 35, 2, "X"); drawSlotRow(gfx, x + 15, rowY + 70, 3, "C"); - super.render(gfx, mouseX, mouseY, partialTick); } diff --git a/src/main/java/net/fretux/skillengine/client/ClientEvents.java b/src/main/java/net/fretux/skillengine/client/ClientEvents.java index 32409f4..db2d49b 100644 --- a/src/main/java/net/fretux/skillengine/client/ClientEvents.java +++ b/src/main/java/net/fretux/skillengine/client/ClientEvents.java @@ -11,6 +11,7 @@ import net.minecraftforge.fml.common.Mod; modid = SkillEngine.MODID, value = Dist.CLIENT ) + public class ClientEvents { @SubscribeEvent public static void onKeyInput(InputEvent.Key event) { diff --git a/src/main/java/net/fretux/skillengine/client/SkilltreeClientState.java b/src/main/java/net/fretux/skillengine/client/SkilltreeClientState.java index e444aec..c4d93f4 100644 --- a/src/main/java/net/fretux/skillengine/client/SkilltreeClientState.java +++ b/src/main/java/net/fretux/skillengine/client/SkilltreeClientState.java @@ -1,6 +1,7 @@ package net.fretux.skillengine.client; import net.fretux.skillengine.SkillEngine; +import net.fretux.skillengine.capability.PlayerSkillData; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.toasts.SystemToast; import net.minecraft.network.chat.Component; @@ -65,14 +66,7 @@ public class SkilltreeClientState { } public static void bindAbilityLocal(int slot, ResourceLocation abilityId) { - int index = slot - 1; - if (index < 0 || index >= abilitySlots.length) return; - if (abilityId != null) { - for (int i = 0; i < abilitySlots.length; i++) { - if (abilityId.equals(abilitySlots[i])) abilitySlots[i] = null; - } - } - abilitySlots[index] = abilityId; + PlayerSkillData.bindHelperFunc(slot, abilityId, abilitySlots); } public static void setAbilitySlots(ResourceLocation[] slots) { diff --git a/src/main/java/net/fretux/skillengine/client/SkilltreeScreen.java b/src/main/java/net/fretux/skillengine/client/SkilltreeScreen.java index 0c8fed1..a704954 100644 --- a/src/main/java/net/fretux/skillengine/client/SkilltreeScreen.java +++ b/src/main/java/net/fretux/skillengine/client/SkilltreeScreen.java @@ -17,33 +17,23 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; public class SkilltreeScreen extends Screen { - private static final int NODE_RADIUS = 12; private static final int ABILITY_RADIUS = 12; - private static final int OVERLAY_WIDTH = 240; private static final int OVERLAY_HEIGHT = 180; private static final int OVERLAY_CONTENT_HEIGHT = 160; - private static final float ZOOM_STEP = 0.1f; private static final float LINE_THICKNESS = 2.0f; - private float zoom = 1.0f; - private final float minZoom = 0.5f; - private final float maxZoom = 2.0f; - private double panX = 0; private double panY = 0; - private boolean dragging = false; - private double lastMouseX; - private double lastMouseY; - private SkillNode hoveredNode = null; private SkillNode selectedNode = null; private AbilityNode hoveredAbility = null; @@ -60,7 +50,9 @@ public class SkilltreeScreen extends Screen { @Override public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - zoom += delta * ZOOM_STEP; + zoom += (float) (delta * ZOOM_STEP); + float minZoom = 0.5f; + float maxZoom = 2.0f; zoom = Mth.clamp(zoom, minZoom, maxZoom); return true; } @@ -74,6 +66,7 @@ public class SkilltreeScreen extends Screen { SkillNode clickedNode = findNodeAt(mouseX, mouseY); if (clickedNode != null) { if (isLockedByExclusivity(clickedNode)) { + assert Minecraft.getInstance().player != null; Minecraft.getInstance().player.playSound( net.minecraft.sounds.SoundEvents.VILLAGER_NO, 1f, 1f ); @@ -97,8 +90,6 @@ public class SkilltreeScreen extends Screen { return true; } dragging = true; - lastMouseX = mouseX; - lastMouseY = mouseY; } return super.mouseClicked(mouseX, mouseY, button); } @@ -125,7 +116,7 @@ public class SkilltreeScreen extends Screen { } @Override - public void render(GuiGraphics gfx, int mouseX, int mouseY, float partialTicks) { + public void render(@NotNull GuiGraphics gfx, int mouseX, int mouseY, float partialTicks) { this.renderBackground(gfx); renderSkillPointHeader(gfx); hoveredNode = findNodeAt(mouseX, mouseY); @@ -244,6 +235,7 @@ public class SkilltreeScreen extends Screen { if (!node.getPrereqAttributes().isEmpty()) { tooltip.add(Component.literal("Requirements:") .withStyle(ChatFormatting.GOLD)); + assert Minecraft.getInstance().player != null; Minecraft.getInstance().player.getCapability(PlayerStatsProvider.PLAYER_STATS) .ifPresent(stats -> node.getPrereqAttributes().forEach((attr, required) -> { int current = stats.getAttributeLevel(attr); @@ -287,6 +279,7 @@ public class SkilltreeScreen extends Screen { 0xFFFFFF ); textY[0] += 12; + assert Minecraft.getInstance().player != null; Minecraft.getInstance().player.getCapability(PlayerStatsProvider.PLAYER_STATS) .ifPresent(stats -> node.getPrereqAttributes().forEach((attr, required) -> { int current = stats.getAttributeLevel(attr); diff --git a/src/main/java/net/fretux/skillengine/events/SkillEnginePlayerEvents.java b/src/main/java/net/fretux/skillengine/events/SkillEnginePlayerEvents.java index 169cf9b..b59b2c3 100644 --- a/src/main/java/net/fretux/skillengine/events/SkillEnginePlayerEvents.java +++ b/src/main/java/net/fretux/skillengine/events/SkillEnginePlayerEvents.java @@ -14,17 +14,15 @@ import net.minecraftforge.network.PacketDistributor; public class SkillEnginePlayerEvents { private static void sync(ServerPlayer player) { - player.getCapability(SkillEngineCapabilities.PLAYER_SKILLS).ifPresent(data -> { - PacketHandler.CHANNEL.send( - PacketDistributor.PLAYER.with(() -> player), - new ClientboundSyncSkillsPacket( - data.getUnlockedNodes(), - data.getUnlockedAbilities(), - data.getSkillPoints(), - data.getAbilitySlots() - ) - ); - }); + player.getCapability(SkillEngineCapabilities.PLAYER_SKILLS).ifPresent(data -> PacketHandler.CHANNEL.send( + PacketDistributor.PLAYER.with(() -> player), + new ClientboundSyncSkillsPacket( + data.getUnlockedNodes(), + data.getUnlockedAbilities(), + data.getSkillPoints(), + data.getAbilitySlots() + ) + )); } @SubscribeEvent diff --git a/src/main/java/net/fretux/skillengine/network/ClientboundNodeUnlockedPacket.java b/src/main/java/net/fretux/skillengine/network/ClientboundNodeUnlockedPacket.java index 16fc210..8f3c5b5 100644 --- a/src/main/java/net/fretux/skillengine/network/ClientboundNodeUnlockedPacket.java +++ b/src/main/java/net/fretux/skillengine/network/ClientboundNodeUnlockedPacket.java @@ -9,7 +9,6 @@ import net.fretux.skillengine.client.SkilltreeClientState; import java.util.function.Supplier; public class ClientboundNodeUnlockedPacket { - private final ResourceLocation id; private final int newSkillPoints; diff --git a/src/main/java/net/fretux/skillengine/network/PacketHandler.java b/src/main/java/net/fretux/skillengine/network/PacketHandler.java index b95e05a..91fb883 100644 --- a/src/main/java/net/fretux/skillengine/network/PacketHandler.java +++ b/src/main/java/net/fretux/skillengine/network/PacketHandler.java @@ -13,7 +13,7 @@ public class PacketHandler { private static final String PROTOCOL = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.ChannelBuilder - .named(new ResourceLocation(SkillEngine.MODID, "network")) + .named(ResourceLocation.fromNamespaceAndPath(SkillEngine.MODID, "network")) .clientAcceptedVersions(PROTOCOL::equals) .serverAcceptedVersions(PROTOCOL::equals) .networkProtocolVersion(() -> PROTOCOL) diff --git a/src/main/java/net/fretux/skillengine/network/ServerboundBindAbilityPacket.java b/src/main/java/net/fretux/skillengine/network/ServerboundBindAbilityPacket.java index 3f53160..59b4248 100644 --- a/src/main/java/net/fretux/skillengine/network/ServerboundBindAbilityPacket.java +++ b/src/main/java/net/fretux/skillengine/network/ServerboundBindAbilityPacket.java @@ -2,7 +2,6 @@ package net.fretux.skillengine.network; import net.fretux.skillengine.capability.SkillEngineCapabilities; import net.minecraft.server.level.ServerPlayer; -import net.fretux.skillengine.network.PacketHandler; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkEvent; @@ -36,7 +35,6 @@ public class ServerboundBindAbilityPacket { player.getCapability(SkillEngineCapabilities.PLAYER_SKILLS).ifPresent(data -> data.bindAbility(msg.slot, msg.abilityId) ); - // Sync back to client so UI reflects updated bindings PacketHandler.syncSkillsTo(player); }); ctx.get().setPacketHandled(true); diff --git a/src/main/java/net/fretux/skillengine/network/ServerboundUnlockNodePacket.java b/src/main/java/net/fretux/skillengine/network/ServerboundUnlockNodePacket.java index 2baa2a0..f49df8e 100644 --- a/src/main/java/net/fretux/skillengine/network/ServerboundUnlockNodePacket.java +++ b/src/main/java/net/fretux/skillengine/network/ServerboundUnlockNodePacket.java @@ -12,17 +12,14 @@ import net.minecraftforge.network.PacketDistributor; import java.util.function.Supplier; public class ServerboundUnlockNodePacket { - private final ResourceLocation nodeId; - public ServerboundUnlockNodePacket(ResourceLocation nodeId) { this.nodeId = nodeId; } - public static void encode(ServerboundUnlockNodePacket msg, FriendlyByteBuf buf) { buf.writeResourceLocation(msg.nodeId); } - + public static ServerboundUnlockNodePacket decode(FriendlyByteBuf buf) { return new ServerboundUnlockNodePacket(buf.readResourceLocation()); } @@ -73,7 +70,6 @@ public class ServerboundUnlockNodePacket { } }); }); - ctx.get().setPacketHandled(true); } } diff --git a/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeLoader.java b/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeLoader.java index 674f4c6..0d7560d 100644 --- a/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeLoader.java +++ b/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeLoader.java @@ -13,6 +13,7 @@ import net.minecraft.util.profiling.ProfilerFiller; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -34,38 +35,28 @@ public class AbilityNodeLoader extends SimpleJsonResourceReloadListener { @Override protected void apply(Map jsons, - ResourceManager resourceManager, - ProfilerFiller profiler) { - + @NotNull ResourceManager resourceManager, + @NotNull ProfilerFiller profiler) { SkillEngine.LOGGER.info("Loading ability nodes..."); - AbilityNodeRegistry.clear(); - jsons.forEach((id, json) -> { JsonObject obj = json.getAsJsonObject(); - Component title = Component.literal(obj.get("title").getAsString()); Component description = Component.literal(obj.get("description").getAsString()); JsonObject pos = obj.getAsJsonObject("position"); float x = pos.get("x").getAsFloat(); float y = pos.get("y").getAsFloat(); - List links = new ArrayList<>(); obj.getAsJsonArray("links").forEach(e -> links.add(new ResourceLocation(e.getAsString()))); - List tags = new ArrayList<>(); obj.getAsJsonArray("tags").forEach(e -> tags.add(new ResourceLocation(e.getAsString()))); - ResourceLocation icon = new ResourceLocation(obj.get("icon").getAsString()); - int cooldown = obj.has("cooldown") ? obj.get("cooldown").getAsInt() : 0; - AbilityNode node = new AbilityNode(id, title, description, x, y, links, tags, icon, cooldown); AbilityNodeRegistry.put(node); }); - SkillEngine.LOGGER.info("Loaded {} active ability nodes", AbilityNodeRegistry.all().size()); } } diff --git a/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeRegistry.java b/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeRegistry.java index 0c5fbfa..2801ee3 100644 --- a/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeRegistry.java +++ b/src/main/java/net/fretux/skillengine/skilltree/AbilityNodeRegistry.java @@ -7,21 +7,16 @@ import java.util.LinkedHashMap; import java.util.Map; public class AbilityNodeRegistry { - private static final Map ABILITIES = new LinkedHashMap<>(); - public static void clear() { ABILITIES.clear(); } - public static void put(AbilityNode node) { ABILITIES.put(node.getId(), node); } - public static AbilityNode get(ResourceLocation id) { return ABILITIES.get(id); } - public static Collection all() { return ABILITIES.values(); } diff --git a/src/main/java/net/fretux/skillengine/skilltree/SkillNodeLoader.java b/src/main/java/net/fretux/skillengine/skilltree/SkillNodeLoader.java index 63201cf..6c0953a 100644 --- a/src/main/java/net/fretux/skillengine/skilltree/SkillNodeLoader.java +++ b/src/main/java/net/fretux/skillengine/skilltree/SkillNodeLoader.java @@ -10,6 +10,7 @@ import net.minecraft.util.profiling.ProfilerFiller; import net.minecraftforge.event.AddReloadListenerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.HashMap; @@ -32,8 +33,8 @@ public class SkillNodeLoader extends SimpleJsonResourceReloadListener { @Override protected void apply(Map jsons, - ResourceManager resourceManager, - ProfilerFiller profiler) { + @NotNull ResourceManager resourceManager, + @NotNull ProfilerFiller profiler) { SkillEngine.LOGGER.info("Loading skill nodes..."); SkillNodeRegistry.clear(); jsons.forEach((id, element) -> { diff --git a/src/main/resources/assets/skillengine/lang/en_us.json b/src/main/resources/assets/skillengine/lang/en_us.json new file mode 100644 index 0000000..2583009 --- /dev/null +++ b/src/main/resources/assets/skillengine/lang/en_us.json @@ -0,0 +1,5 @@ +{ + "key.skillengine.openskilltree": "Open Skilltree", + "key.skillengine.openabilities": "Open Ability Screen" +} +