diff options
author | Maximusbarcz <maxim.baranek@gmail.com> | 2022-12-24 14:00:57 +0100 |
---|---|---|
committer | Maximusbarcz <maxim.baranek@gmail.com> | 2022-12-24 14:00:57 +0100 |
commit | b1d919ad2ebf0b176953d57edef8e75835c633e3 (patch) | |
tree | f3f754a46d475493711bab31310cd36344b312bd | |
parent | f7ca47ba8132addd94928aa8615448c47a6b3d7b (diff) | |
download | ygasi-b1d919ad2ebf0b176953d57edef8e75835c633e3.tar.gz ygasi-b1d919ad2ebf0b176953d57edef8e75835c633e3.tar.bz2 ygasi-b1d919ad2ebf0b176953d57edef8e75835c633e3.zip |
Last christmas I gave you my commit
But the very next day you pushed it
This year, to save me from conflicts
I'll give it to github directly
18 files changed, 136 insertions, 49 deletions
diff --git a/src/main/generated/data/minecraft/advancements/ygasi/druidry.json b/src/main/generated/data/minecraft/advancements/ygasi/druidry.json index 635c05f..884cfed 100644 --- a/src/main/generated/data/minecraft/advancements/ygasi/druidry.json +++ b/src/main/generated/data/minecraft/advancements/ygasi/druidry.json @@ -33,5 +33,8 @@ [ "gotten_previous" ] - ] + ], + "rewards": { + "experience": 1 + } }
\ No newline at end of file diff --git a/src/main/generated/data/minecraft/advancements/ygasi/mercenary.json b/src/main/generated/data/minecraft/advancements/ygasi/mercenary.json index a10aaa0..fcf77bc 100644 --- a/src/main/generated/data/minecraft/advancements/ygasi/mercenary.json +++ b/src/main/generated/data/minecraft/advancements/ygasi/mercenary.json @@ -34,5 +34,8 @@ [ "gotten_previous" ] - ] + ], + "rewards": { + "experience": 1 + } }
\ No newline at end of file diff --git a/src/main/generated/data/minecraft/advancements/ygasi/root.json b/src/main/generated/data/minecraft/advancements/ygasi/root.json index 4452389..5606565 100644 --- a/src/main/generated/data/minecraft/advancements/ygasi/root.json +++ b/src/main/generated/data/minecraft/advancements/ygasi/root.json @@ -24,5 +24,8 @@ [ "opened_skill_menu" ] - ] + ], + "rewards": { + "experience": 1 + } }
\ No newline at end of file diff --git a/src/main/generated/data/minecraft/advancements/ygasi/wizardry.json b/src/main/generated/data/minecraft/advancements/ygasi/wizardry.json index 8e86cc7..d52332b 100644 --- a/src/main/generated/data/minecraft/advancements/ygasi/wizardry.json +++ b/src/main/generated/data/minecraft/advancements/ygasi/wizardry.json @@ -33,5 +33,8 @@ [ "gotten_previous" ] - ] + ], + "rewards": { + "experience": 1 + } }
\ No newline at end of file diff --git a/src/main/generated/data/ygasi/advancements/recipes/minecraft_ygasi/skill_book.json b/src/main/generated/data/ygasi/advancements/recipes/minecraft_ygasi/skill_book.json new file mode 100644 index 0000000..b44f4de --- /dev/null +++ b/src/main/generated/data/ygasi/advancements/recipes/minecraft_ygasi/skill_book.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_book": { + "trigger": "minecraft:impossible" + }, + "has_the_recipe": { + "conditions": { + "recipe": "ygasi:skill_book" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_book", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "ygasi:skill_book" + ] + } +}
\ No newline at end of file diff --git a/src/main/generated/data/ygasi/recipes/skill_book.json b/src/main/generated/data/ygasi/recipes/skill_book.json new file mode 100644 index 0000000..046fc1e --- /dev/null +++ b/src/main/generated/data/ygasi/recipes/skill_book.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:book" + }, + { + "tag": "minecraft:saplings" + } + ], + "result": { + "item": "ygasi:skill_book" + } +}
\ No newline at end of file diff --git a/src/main/java/dev/mayaqq/ygasi/Ygasi.java b/src/main/java/dev/mayaqq/ygasi/Ygasi.java index ebfec85..4d13d53 100644 --- a/src/main/java/dev/mayaqq/ygasi/Ygasi.java +++ b/src/main/java/dev/mayaqq/ygasi/Ygasi.java @@ -4,15 +4,16 @@ import dev.mayaqq.ygasi.items.SkillBookItem; import dev.mayaqq.ygasi.registry.CommandRegistry; import dev.mayaqq.ygasi.registry.ConfigRegistry; import dev.mayaqq.ygasi.registry.StatRegistry; +import dev.mayaqq.ygasi.util.GrantAdvancementCriterion; +import eu.pb4.polymer.api.item.PolymerItemGroup; import eu.pb4.polymer.api.resourcepack.PolymerModelData; import eu.pb4.polymer.api.resourcepack.PolymerRPUtils; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; -import net.fabricmc.fabric.impl.resource.loader.ModResourcePackUtil; import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import org.slf4j.Logger; @@ -21,25 +22,29 @@ import org.slf4j.LoggerFactory; public class Ygasi implements ModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger("ygasi"); - public static final SkillBookItem SKILL_BOOK = new SkillBookItem(new Item.Settings().group(ItemGroup.MISC).maxCount(1), Items.BOOK); + public static final PolymerItemGroup YGASI_GROUP = PolymerItemGroup.create(new Identifier("ygasi"), Text.translatable("creative.ygasi.group"), () -> new ItemStack(Items.BOOK)); + + public static final SkillBookItem SKILL_BOOK = new SkillBookItem(new Item.Settings().group(YGASI_GROUP).maxCount(1), Items.BOOK); @Override public void onInitialize() { StatRegistry.skillRegister(); CommandRegistry.RegisterCommands(); ConfigRegistry.load(); - LOGGER.info("You've got a skill issue!"); PolymerRPUtils.addAssetSource("ygasi"); PolymerModelData modelData = PolymerRPUtils.requestModel(Items.BOOK, new Identifier("ygasi", "item/skill_book")); Registry.register(Registry.ITEM, "ygasi:skill_book", SKILL_BOOK); + LOGGER.info("You've got a skill issue!"); + if (ConfigRegistry.CONFIG.enableSkillBook) { ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { if (!handler.player.getScoreboardTags().contains("ygasi:skill_book_unlocked")) { handler.player.addScoreboardTag("ygasi:skill_book_unlocked"); handler.player.getInventory().offerOrDrop(new ItemStack(SKILL_BOOK)); + GrantAdvancementCriterion.grantAdvancementCriterion(handler.player, new Identifier("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 535d37e..ca02eec 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/BranchGui.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/BranchGui.java @@ -3,14 +3,11 @@ package dev.mayaqq.ygasi.gui; import dev.mayaqq.ygasi.util.GetAdvancementProgress; import dev.mayaqq.ygasi.util.GrantAdvancementCriterion; import eu.pb4.sgui.api.elements.*; -import eu.pb4.sgui.api.gui.SimpleGui; import net.minecraft.item.ItemStack; 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.Style; import net.minecraft.text.Text; @@ -23,37 +20,40 @@ import net.minecraft.util.Identifier; public class BranchGui { public static void gui(ServerPlayerEntity player) { + int skillPoints = player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)); + try { SkillGui gui = new SkillGui(ScreenHandlerType.GENERIC_9X3, player, false) {}; - gui.setTitle(Text.of("§3Skill Points: " + player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(SKILL_POINTS)))); + gui.setTitle(Text.of("§3Skill Points: " + skillPoints)); //background items - for (int x = 0; x <= 17; x++) { + for (int x = 0; x <= 26; x++) { gui.setSlot(x, new GuiElementBuilder() .setItem(Items.GRAY_STAINED_GLASS_PANE) .setName(Text.of(" ")) ); } - for (int x = 18; x <= 26; x++) { + for (int x = 10; x <= 16; x++) { gui.setSlot(x, new GuiElementBuilder() - .setItem(Items.RED_STAINED_GLASS_PANE) + .setItem(Items.LIGHT_BLUE_STAINED_GLASS_PANE) .setName(Text.of(" ")) ); } - - //close button - gui.setSlot(22, new GuiElementBuilder() - .setItem(Items.BARRIER) - .setName(Text.literal("Close") - .setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.DARK_RED))) - .setCallback((index, clickType, actionType) -> close(player)) - ); + for (int x = 0; x <= 2; x++) { + for (int y = 2; y <= 6; y+=2) { + gui.setSlot(x * 9 + y, new GuiElementBuilder() + .setItem(Items.LIGHT_BLUE_STAINED_GLASS_PANE) + .setName(Text.of(" ")) + ); + } + } //branch items if (!GetAdvancementProgress.get(player, "mercenary")) { gui.setSlot(11, new GuiElementBuilder() .setItem(Items.IRON_SWORD) + .setCustomModelData(1) .hideFlag(ItemStack.TooltipSection.MODIFIERS) .addLoreLine(Text.literal("Cost: " + ConfigRegistry.CONFIG.branchCost).setStyle(Style.EMPTY.withFormatting(Formatting.DARK_GRAY))) .setName(Text.literal("Mercenary") @@ -130,12 +130,8 @@ public class BranchGui { } } else { - player.sendMessage(Text.literal("You don't have enough skill points to unlock this branch!").setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.RED)), false); + player.sendMessage(Text.translatable("gui.ygasi.no.skill").setStyle(Style.EMPTY.withBold(true).withFormatting(Formatting.RED)), false); player.closeHandledScreen(); } } - public static void close(ServerPlayerEntity player) { - player.playSound(SoundEvents.ITEM_BOOK_PAGE_TURN, SoundCategory.PLAYERS, 1.0F, 1.0F); - player.closeHandledScreen(); - } }
\ No newline at end of file diff --git a/src/main/java/dev/mayaqq/ygasi/gui/DruidryGui.java b/src/main/java/dev/mayaqq/ygasi/gui/DruidryGui.java index 2b865f2..d2be67e 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/DruidryGui.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/DruidryGui.java @@ -2,12 +2,9 @@ package dev.mayaqq.ygasi.gui; import dev.mayaqq.ygasi.util.GetAdvancementProgress; import eu.pb4.sgui.api.elements.GuiElementBuilder; -import eu.pb4.sgui.api.gui.SimpleGui; 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; diff --git a/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java b/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java index c3e89b1..ea75c43 100644 --- a/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java +++ b/src/main/java/dev/mayaqq/ygasi/gui/MercenaryGui.java @@ -2,12 +2,9 @@ package dev.mayaqq.ygasi.gui; import dev.mayaqq.ygasi.util.GetAdvancementProgress; import eu.pb4.sgui.api.elements.GuiElementBuilder; -import eu.pb4.sgui.api.gui.SimpleGui; 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; @@ -30,6 +27,8 @@ public class MercenaryGui { .setName(Text.of(" ")) ); } + + gui.open(); } } catch (Exception e) { diff --git a/src/main/java/dev/mayaqq/ygasi/items/SkillBookItem.java b/src/main/java/dev/mayaqq/ygasi/items/SkillBookItem.java index ce4143f..c96de2a 100644 --- a/src/main/java/dev/mayaqq/ygasi/items/SkillBookItem.java +++ b/src/main/java/dev/mayaqq/ygasi/items/SkillBookItem.java @@ -29,7 +29,6 @@ public class SkillBookItem extends SimplePolymerItem { public ItemStack getPolymerItemStack(ItemStack itemStack, ServerPlayerEntity player) { ItemStack out = PolymerItemUtils.createItemStack(itemStack, player); out.addEnchantment(Enchantments.LURE, 0); - out.setCustomName(Text.translatable("item.ygasi.skill_book").formatted(Formatting.GOLD).formatted(Formatting.BOLD)); return out; } diff --git a/src/main/java/dev/mayaqq/ygasi/mixin/AdvancementRewardsMixin.java b/src/main/java/dev/mayaqq/ygasi/mixin/AdvancementRewardsMixin.java index a2c1330..58e8353 100644 --- a/src/main/java/dev/mayaqq/ygasi/mixin/AdvancementRewardsMixin.java +++ b/src/main/java/dev/mayaqq/ygasi/mixin/AdvancementRewardsMixin.java @@ -1,11 +1,7 @@ package dev.mayaqq.ygasi.mixin; import dev.mayaqq.ygasi.registry.ConfigRegistry; -import net.minecraft.advancement.Advancement; -import net.minecraft.advancement.AdvancementDisplay; -import net.minecraft.advancement.AdvancementFrame; import net.minecraft.advancement.AdvancementRewards; -import net.minecraft.server.ServerAdvancementLoader; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; @@ -20,12 +16,16 @@ import static dev.mayaqq.ygasi.registry.StatRegistry.SKILL_POINTS; @Mixin(AdvancementRewards.class) public class AdvancementRewardsMixin { + @Shadow @Final private Identifier[] recipes; + @Shadow @Final private int experience; @Inject(method = "apply", at = @At("HEAD")) - private void inject(ServerPlayerEntity player, CallbackInfo ci) { - if (recipes.length == 0) { + private void apply(ServerPlayerEntity player, CallbackInfo ci) { + if (recipes.length == 0 && experience != 1) { player.increaseStat(SKILL_POINTS, ConfigRegistry.CONFIG.pointsRewarded); + } else if (experience == 1) { + player.addExperience(-1); } } } diff --git a/src/main/java/dev/mayaqq/ygasi/registry/advancements/dataGen/DataGenRegistry.java b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/DataGenRegistry.java index 9bba67d..8cd9b6e 100644 --- a/src/main/java/dev/mayaqq/ygasi/registry/advancements/dataGen/DataGenRegistry.java +++ b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/DataGenRegistry.java @@ -1,5 +1,7 @@ -package dev.mayaqq.ygasi.registry.advancements.dataGen; +package dev.mayaqq.ygasi.registry.dataGen; +import dev.mayaqq.ygasi.registry.dataGen.advancements.AdvancementProvider; +import dev.mayaqq.ygasi.registry.dataGen.recipes.YgasiRecipes; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; @@ -7,5 +9,6 @@ public class DataGenRegistry implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator dataGenerator) { dataGenerator.addProvider(AdvancementProvider::new); + dataGenerator.addProvider(YgasiRecipes::new); } } diff --git a/src/main/java/dev/mayaqq/ygasi/registry/advancements/dataGen/AdvancementProvider.java b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/advancements/AdvancementProvider.java index a9b1a64..6a91296 100644 --- a/src/main/java/dev/mayaqq/ygasi/registry/advancements/dataGen/AdvancementProvider.java +++ b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/advancements/AdvancementProvider.java @@ -1,6 +1,6 @@ -package dev.mayaqq.ygasi.registry.advancements.dataGen; +package dev.mayaqq.ygasi.registry.dataGen.advancements; -import dev.mayaqq.ygasi.registry.advancements.Advancements; +import dev.mayaqq.ygasi.registry.dataGen.advancements.Advancements; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; import net.fabricmc.fabric.api.datagen.v1.provider.FabricAdvancementProvider; import net.minecraft.advancement.Advancement; @@ -8,7 +8,7 @@ import net.minecraft.advancement.Advancement; import java.util.function.Consumer; public class AdvancementProvider extends FabricAdvancementProvider { - protected AdvancementProvider(FabricDataGenerator dataGenerator) { + public AdvancementProvider(FabricDataGenerator dataGenerator) { super(dataGenerator); } @Override diff --git a/src/main/java/dev/mayaqq/ygasi/registry/advancements/Advancements.java b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/advancements/Advancements.java index ac33abe..6cd5665 100644 --- a/src/main/java/dev/mayaqq/ygasi/registry/advancements/Advancements.java +++ b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/advancements/Advancements.java @@ -1,8 +1,9 @@ -package dev.mayaqq.ygasi.registry.advancements; +package dev.mayaqq.ygasi.registry.dataGen.advancements; import de.dafuqs.revelationary.advancement_criteria.AdvancementGottenCriterion; import net.minecraft.advancement.Advancement; import net.minecraft.advancement.AdvancementFrame; +import net.minecraft.advancement.AdvancementRewards; import net.minecraft.advancement.criterion.ImpossibleCriterion; import net.minecraft.item.Items; import net.minecraft.predicate.entity.EntityPredicate; @@ -28,6 +29,7 @@ public class Advancements implements Consumer<Consumer<Advancement>> { ) // The first string used in criterion is the name referenced by other advancements when they want to have 'requirements' .criterion("opened_skill_menu", new ImpossibleCriterion.Conditions()) + .rewards(AdvancementRewards.Builder.experience(1)) .build(consumer, "ygasi" + "/root"); Advancement mercenary = Advancement.Builder.create().parent(rootAdvancement) @@ -43,6 +45,7 @@ public class Advancements implements Consumer<Consumer<Advancement>> { ) .criterion("unlocked_mercenary", new ImpossibleCriterion.Conditions()) .criterion("gotten_previous", new AdvancementGottenCriterion.Conditions(EntityPredicate.Extended.EMPTY, rootAdvancement.getId())) + .rewards(AdvancementRewards.Builder.experience(1)) .build(consumer, "ygasi" + "/mercenary"); Advancement wizardry = Advancement.Builder.create().parent(rootAdvancement) .display( @@ -57,6 +60,7 @@ public class Advancements implements Consumer<Consumer<Advancement>> { ) .criterion("unlocked_wizardry", new ImpossibleCriterion.Conditions()) .criterion("gotten_previous", new AdvancementGottenCriterion.Conditions(EntityPredicate.Extended.EMPTY, rootAdvancement.getId())) + .rewards(AdvancementRewards.Builder.experience(1)) .build(consumer, "ygasi" + "/wizardry"); Advancement druidry = Advancement.Builder.create().parent(rootAdvancement) .display( @@ -71,6 +75,7 @@ public class Advancements implements Consumer<Consumer<Advancement>> { ) .criterion("unlocked_druidry", new ImpossibleCriterion.Conditions()) .criterion("gotten_previous", new AdvancementGottenCriterion.Conditions(EntityPredicate.Extended.EMPTY, rootAdvancement.getId())) + .rewards(AdvancementRewards.Builder.experience(1)) .build(consumer, "ygasi" + "/druidry"); } }
\ No newline at end of file diff --git a/src/main/java/dev/mayaqq/ygasi/registry/dataGen/recipes/YgasiRecipes.java b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/recipes/YgasiRecipes.java new file mode 100644 index 0000000..75afdfe --- /dev/null +++ b/src/main/java/dev/mayaqq/ygasi/registry/dataGen/recipes/YgasiRecipes.java @@ -0,0 +1,28 @@ +package dev.mayaqq.ygasi.registry.dataGen.recipes; + +import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; +import net.minecraft.advancement.criterion.ImpossibleCriterion; +import net.minecraft.data.server.recipe.RecipeJsonProvider; +import net.minecraft.data.server.recipe.ShapelessRecipeJsonBuilder; +import net.minecraft.item.Items; +import net.minecraft.tag.ItemTags; + +import java.util.function.Consumer; + +import static dev.mayaqq.ygasi.Ygasi.SKILL_BOOK; + +public class YgasiRecipes extends FabricRecipeProvider { + public YgasiRecipes(FabricDataGenerator dataGenerator) { + super(dataGenerator); + } + + @Override + public void generateRecipes(Consumer<RecipeJsonProvider> exporter) { + ShapelessRecipeJsonBuilder.create(SKILL_BOOK) + .criterion("has_book", new ImpossibleCriterion.Conditions()) + .input(Items.BOOK) + .input(ItemTags.SAPLINGS) + .offerTo(exporter); + } +}
\ 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 b2a4afd..4af9c88 100644 --- a/src/main/resources/data/ygasi/lang/en_us.json +++ b/src/main/resources/data/ygasi/lang/en_us.json @@ -1,4 +1,8 @@ { - "item.ygasi.skill_book": "Skill Book", - "item.ygasi.skill_book.tooltip": "Right click to open the skill book" + "item.ygasi.skill_book": "§6Skill Book", + "item.ygasi.skill_book.tooltip": "Right click to open", + + "creative.ygasi.group": "Ygasi", + + "gui.ygasi.no.skill": "You don't have enough skill points to unlock this branch!" }
\ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8e8bc38..bec8142 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -19,7 +19,7 @@ "environment": "server", "entrypoints": { "fabric-datagen": [ - "dev.mayaqq.ygasi.registry.advancements.dataGen.DataGenRegistry" + "dev.mayaqq.ygasi.registry.dataGen.DataGenRegistry" ], "main": [ "dev.mayaqq.ygasi.Ygasi" |