diff options
author | Maximusbarcz <maxim.baranek@gmail.com> | 2023-01-16 18:34:34 +0100 |
---|---|---|
committer | Maximusbarcz <maxim.baranek@gmail.com> | 2023-01-16 18:34:34 +0100 |
commit | f7770f7e2b6d3029b207d8e574a9bb63b10a2651 (patch) | |
tree | 1204cf4b609666811955e3993522728fe408e4c6 | |
parent | 290ad0d1d979431fe8bfda966013a8de7b77a7fd (diff) | |
download | ygasi-f7770f7e2b6d3029b207d8e574a9bb63b10a2651.tar.gz ygasi-f7770f7e2b6d3029b207d8e574a9bb63b10a2651.tar.bz2 ygasi-f7770f7e2b6d3029b207d8e574a9bb63b10a2651.zip |
Improved Reset function, added more translations, added more features to AdvUtils, added more stuff to gui common (now you cannot accidentally click higher skill than the before making you lose skill points), made the entries in the main gui display a barrier because they will be done later after the first public beta release, tried and fail to improve PlayerConnectEvent and thats about it
7 files changed, 69 insertions, 17 deletions
diff --git a/src/main/java/dev/mayaqq/ygasi/events/PlayerConnectEvent.java b/src/main/java/dev/mayaqq/ygasi/events/PlayerConnectEvent.java index 52b3047..97cd225 100644 --- a/src/main/java/dev/mayaqq/ygasi/events/PlayerConnectEvent.java +++ b/src/main/java/dev/mayaqq/ygasi/events/PlayerConnectEvent.java @@ -1,10 +1,8 @@ package dev.mayaqq.ygasi.events; import dev.mayaqq.ygasi.registry.ConfigRegistry; -import dev.mayaqq.ygasi.util.AdvUtils; import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; import static dev.mayaqq.ygasi.registry.ItemRegistry.SKILL_BOOK; @@ -15,7 +13,6 @@ public class PlayerConnectEvent { if (!handler.player.getScoreboardTags().contains("skill_book_unlocked") && ConfigRegistry.CONFIG.enableSkillBook) { handler.player.addScoreboardTag("skill_book_unlocked"); handler.player.getInventory().offerOrDrop(new ItemStack(SKILL_BOOK)); - AdvUtils.grantAdvancementCriterion(handler.player, new Identifier("ygasi", "recipes/minecraft_ygasi/skill_book"), "opened_skill_menu"); } }); } diff --git a/src/main/java/dev/mayaqq/ygasi/gui/BranchGui.java b/src/main/java/dev/mayaqq/ygasi/gui/BranchGui.java index 4180771..8c1fa4b 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/BranchGui.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/BranchGui.java @@ -74,6 +74,18 @@ public class BranchGui { ); } + for (int i = 13; i <=15; i += 2) { + gui.setSlot(i, new GuiElementBuilder() + .setItem(Items.BARRIER) + .setName(Text.translatable("gui.ygasi.branch.wip").formatted(Formatting.RED)) + ); + } + gui.setSlot(26, new GuiElementBuilder() + .setItem(Items.BARRIER) + .setName(Text.translatable("gui.ygasi.branch.wip").formatted(Formatting.RED)) + ); + + /* //wizardry gui button if (!AdvUtils.getAdvancementProgress(player, "minecraft", "ygasi/wizardry")) { gui.setSlot(13, new GuiElementBuilder() @@ -124,6 +136,7 @@ public class BranchGui { .setCallback((index, clickType, actionType) -> ExtraGui.gui(player)) ); } + */ //info item button gui.setSlot(18, new GuiElementBuilder() @@ -136,7 +149,7 @@ public class BranchGui { ); //reset item button gui.setSlot(8, new GuiElementBuilder() - .setItem(Items.BARRIER) + .setItem(Items.TNT) .setName(Text.translatable("gui.ygasi.branch.reset.title")) .addLoreLine(Text.translatable("gui.ygasi.branch.reset.lore")) .addLoreLine(Text.translatable("gui.ygasi.branch.reset.lore2")) @@ -189,6 +202,7 @@ public class BranchGui { Class<?> guiClass = BRANCH_TO_GUI.get(branch); if (hasMercenary || hasWizadry || hasDrudiry) { player.sendMessage(Text.translatable("gui.ygasi.branch.no.unlock"), true); + player.playSound(SoundEvents.BLOCK_ANVIL_BREAK, SoundCategory.PLAYERS, 1.0F, 1.0F); player.closeHandledScreen(); } else { AdvUtils.grantAdvancementCriterion(player, advancementId, advancementCriterion); @@ -204,6 +218,7 @@ public class BranchGui { //if the player doesn't have enough skill points } else { player.sendMessage(Text.translatable("gui.ygasi.branch.no.skill"), true); + player.playSound(SoundEvents.BLOCK_ANVIL_BREAK, SoundCategory.PLAYERS, 1.0F, 1.0F); player.closeHandledScreen(); } } diff --git a/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java b/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java index 87a0c85..cdbb989 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java @@ -10,8 +10,6 @@ import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; import net.minecraft.util.Formatting; diff --git a/src/main/java/dev/mayaqq/ygasi/gui/ResetGui.java b/src/main/java/dev/mayaqq/ygasi/gui/ResetGui.java index 6d8e538..c74280f 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/ResetGui.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/ResetGui.java @@ -1,7 +1,6 @@ package dev.mayaqq.ygasi.gui; -import dev.mayaqq.ygasi.abilities.mercenary.Offence1; -import dev.mayaqq.ygasi.abilities.mercenary.Offence2; +import dev.mayaqq.ygasi.abilities.mercenary.*; import dev.mayaqq.ygasi.gui.common.SkillGui; import dev.mayaqq.ygasi.registry.ConfigRegistry; import dev.mayaqq.ygasi.util.AdvUtils; @@ -14,6 +13,9 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; import net.minecraft.text.Text; +import java.util.Arrays; + +import static dev.mayaqq.ygasi.Ygasi.LOGGER; import static dev.mayaqq.ygasi.registry.StatRegistry.SKILL_POINTS; import static dev.mayaqq.ygasi.registry.StatRegistry.SKILL_POINTS_TOTAL; @@ -62,12 +64,26 @@ public class ResetGui { //check if player experience level is greater than 10 //revoke the abilities first if (AdvUtils.getAdvancementProgress(player, "minecraft", "ygasi/mercenary")) { - Offence1.revoke(player); - Offence2.revoke(player); + AdvUtils.revokeAllAdvancements(player, "minecraft", "ygasi/mercenary"); + String[] subBranches = {"mercenary.Offence", "mercenary.Ninja", "mercenary.Defence"}; + resetBranch(subBranches, player); } - AdvUtils.revokeAllAdvancements(player, "minecraft", "ygasi/"); player.sendMessage(Text.translatable("gui.ygasi.reset.success"), true); player.getStatHandler().setStat(player, Stats.CUSTOM.getOrCreateStat(SKILL_POINTS), player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS_TOTAL))); + } + private static void resetBranch (String[] subBranches, ServerPlayerEntity player) { + for (String subBranch : subBranches) { + for (int i = 1; i < 4; i++) { + String branch = subBranch + i; + try { + Class<?> branchClass = Class.forName("dev.mayaqq.ygasi.abilities." + branch); + branchClass.getMethod("revoke", ServerPlayerEntity.class).invoke(null, player); + + } catch (Exception e) { + LOGGER.error(Arrays.toString(e.getStackTrace())); + } + } + } } }
\ No newline at end of file diff --git a/src/main/java/dev/mayaqq/ygasi/gui/common/GuiCommon.java b/src/main/java/dev/mayaqq/ygasi/gui/common/GuiCommon.java index c6946b4..3f54ee6 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/common/GuiCommon.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/common/GuiCommon.java @@ -1,6 +1,7 @@ package dev.mayaqq.ygasi.gui.common; import dev.mayaqq.ygasi.gui.BranchGui; +import dev.mayaqq.ygasi.util.AdvUtils; import eu.pb4.sgui.api.elements.GuiElementBuilder; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -39,6 +40,7 @@ public class GuiCommon { } } public static void setSkillSlot(SkillGui gui, ServerPlayerEntity player, int itemIndex, Item item, String nameKey, int cost, Class<?> skillClass, Class<?> guiClass) { + String advName = nameKey.split("\\.")[3]; gui.setSlot(itemIndex, new GuiElementBuilder() .setItem(item) .hideFlag(ItemStack.TooltipSection.MODIFIERS) @@ -48,11 +50,15 @@ public class GuiCommon { .setCallback((index, clickType, actionType) -> { if (player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)) >= cost) { try { - skillClass.getMethod("give", ServerPlayerEntity.class).invoke(null, player); - player.getStatHandler().setStat(player, Stats.CUSTOM.getOrCreateStat(SKILL_POINTS), player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)) - cost); - guiClass.getMethod("gui", ServerPlayerEntity.class).invoke(null, player); - player.playSound(SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.PLAYERS, 1.0F, 1.0F); - + if (AdvUtils.hasBeforeAdvancements(player, "minecraft", "ygasi/"+ advName)) { + skillClass.getMethod("give", ServerPlayerEntity.class).invoke(null, player); + player.getStatHandler().setStat(player, Stats.CUSTOM.getOrCreateStat(SKILL_POINTS), player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)) - cost); + guiClass.getMethod("gui", ServerPlayerEntity.class).invoke(null, player); + player.playSound(SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.PLAYERS, 1.0F, 1.0F); + } else { + player.playSound(SoundEvents.BLOCK_ANVIL_BREAK, SoundCategory.PLAYERS, 1.0F, 1.0F); + player.sendMessage(Text.translatable("gui.ygasi.branches.no.previous"), true); + } } catch (Exception e) { throw new RuntimeException(e); } diff --git a/src/main/java/dev/mayaqq/ygasi/util/AdvUtils.java b/src/main/java/dev/mayaqq/ygasi/util/AdvUtils.java index b2227fe..708ed36 100644 --- a/src/main/java/dev/mayaqq/ygasi/util/AdvUtils.java +++ b/src/main/java/dev/mayaqq/ygasi/util/AdvUtils.java @@ -26,7 +26,7 @@ public class AdvUtils { } } - public static void revokeAllAdvancements(ServerPlayerEntity player, String namespace ,String path) { + public static void revokeAllAdvancements(ServerPlayerEntity player, String namespace, String path) { if (player.getServer() == null) { return; } @@ -48,4 +48,21 @@ public class AdvUtils { } return player.getAdvancementTracker().getProgress(player.getServer().getAdvancementLoader().get(new Identifier(namespace, path))).isDone(); } + + public static boolean hasBeforeAdvancements(ServerPlayerEntity player, String namespace, String path) { + int level = Integer.parseInt(path.substring(path.length() - 1)); + if (player.getServer() == null) { + return false; + } + for (int i = 1; i < level; i++) { + try { + if (!getAdvancementProgress(player, namespace, path.substring(0, path.length() - 1) + i)) { + return false; + } + } catch (Exception e) { + return false; + } + } + return true; + } }
\ No newline at end of file diff --git a/src/main/resources/data/ygasi/lang/en_us.json b/src/main/resources/data/ygasi/lang/en_us.json index 5e9e48b..1fc826b 100644 --- a/src/main/resources/data/ygasi/lang/en_us.json +++ b/src/main/resources/data/ygasi/lang/en_us.json @@ -16,6 +16,7 @@ "gui.ygasi.branch.extra.title": "§9§lExtra", "gui.ygasi.branch.info.title": "§6§lInfo", "gui.ygasi.branch.info.main": "§6§lYgasi Skill Advancement System:\n§r§3When using Ygasi, every time you get an Advancement, you will get a §6Skill Point!§3 Then when you gather enough skill points throughout your journey you can unlock new interesting skills in the §6skill book§3 and improve your game experience, from protecting yourself from falling to summoning a horde of undead you can do everything with just a bit of patience, skill and fun!", + "gui.ygasi.branch.wip": "§c§l To be added in the future!", "gui.ygasi.branch.reset.title": "§4§lReset", "gui.ygasi.branch.reset.lore": "§8This will reset all your skills and give you back all of your skill points.", @@ -35,6 +36,8 @@ "gui.ygasi.branches.fail": "§cYou have not unlocked this branch yet!", "gui.ygasi.branches.no.skill": "§cYou don't have enough skill points to unlock this skill!", + "gui.ygasi.branches.no.previous": "§cYou have not unlocked the previous skill yet!", + "gui.ygasi.branches.back": "§cBack", "gui.ygasi.mercenary.offence1": "§cOffence I", "gui.ygasi.mercenary.offence1.lore": "§8Lore", "gui.ygasi.mercenary.offence2": "§cOffence II", |