diff --git a/build.gradle b/build.gradle index e87d1aa7..3087b056 100644 --- a/build.gradle +++ b/build.gradle @@ -22,10 +22,12 @@ repositories { dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.minecraft_version}+build.${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation "vazkii.patchouli:Patchouli:${project.minecraft_version}-${project.patchouli_version}" + optional "vazkii.patchouli:Patchouli:${project.minecraft_version}-${project.patchouli_version}:api" optional "me.shedaniel:RoughlyEnoughItems:${project.rei_version}" optional "me.shedaniel:RoughlyEnoughItems-api:${project.rei_version}" optional "grondag:canvas-mc116:${project.canvas_version}" diff --git a/src/main/java/ru/betterend/blocks/AeterniumBlock.java b/src/main/java/ru/betterend/blocks/AeterniumBlock.java index e5e11578..a1f5dff6 100644 --- a/src/main/java/ru/betterend/blocks/AeterniumBlock.java +++ b/src/main/java/ru/betterend/blocks/AeterniumBlock.java @@ -3,12 +3,14 @@ package ru.betterend.blocks; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; + import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.block.MaterialColor; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; + import ru.betterend.blocks.basis.BlockBase; public class AeterniumBlock extends BlockBase { diff --git a/src/main/java/ru/betterend/item/EternalCrystal.java b/src/main/java/ru/betterend/item/EternalCrystal.java index f233bacf..656c4b32 100644 --- a/src/main/java/ru/betterend/item/EternalCrystal.java +++ b/src/main/java/ru/betterend/item/EternalCrystal.java @@ -5,6 +5,6 @@ import ru.betterend.registry.EndItems; public class EternalCrystal extends PatternedItem { public EternalCrystal() { - super(EndItems.makeSettings()); + super(EndItems.makeItemSettings().maxCount(16)); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/item/GuideBook.java b/src/main/java/ru/betterend/item/GuideBook.java new file mode 100644 index 00000000..13dc2a60 --- /dev/null +++ b/src/main/java/ru/betterend/item/GuideBook.java @@ -0,0 +1,43 @@ +package ru.betterend.item; + +import java.util.List; + +import net.minecraft.client.item.TooltipContext; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.Style; +import net.minecraft.text.Text; +import net.minecraft.text.TextColor; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; +import ru.betterend.BetterEnd; +import ru.betterend.registry.EndItems; +import vazkii.patchouli.api.PatchouliAPI; + +public class GuideBook extends PatternedItem { + + private static final Style TEXT_STYLE = Style.EMPTY.withColor(TextColor.fromRgb(0x7e6b9a)).withItalic(true); + public final static Identifier BOOK_ID = BetterEnd.makeID("guidebook"); + + public GuideBook() { + super(EndItems.makeItemSettings().maxCount(1)); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + if (!world.isClient && user instanceof ServerPlayerEntity) { + PatchouliAPI.get().openBookGUI((ServerPlayerEntity) user, BOOK_ID); + return TypedActionResult.success(user.getStackInHand(hand)); + } + return TypedActionResult.consume(user.getStackInHand(hand)); + } + + @Override + public void appendTooltip(ItemStack stack, World world, List tooltip, TooltipContext context) { + tooltip.add(new TranslatableText("book.betterend.subtitle").setStyle(TEXT_STYLE)); + } +} diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index cd88b3fb..9842b6d1 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -4,9 +4,9 @@ import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.MaterialColor; import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; + import ru.betterend.BetterEnd; import ru.betterend.blocks.AeterniumBlock; import ru.betterend.blocks.AuroraCrystalBlock; @@ -70,7 +70,6 @@ import ru.betterend.blocks.complex.StoneMaterial; import ru.betterend.blocks.complex.WoodenMaterial; import ru.betterend.config.ItemConfig; import ru.betterend.config.MainConfig; -import ru.betterend.tab.CreativeTab; public class EndBlocks { private static final ItemConfig CONFIG = MainConfig.ITEM_CONFIG; @@ -222,7 +221,7 @@ public class EndBlocks { return block; } Registry.register(Registry.BLOCK, id, block); - EndItems.registerItem(id, new BlockItem(block, new Item.Settings().group(CreativeTab.END_TAB))); + EndItems.registerItem(id, new BlockItem(block, EndItems.makeBlockItemSettings())); return block; } diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index d06c933f..2f01e100 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -40,6 +40,7 @@ import ru.betterend.item.EndHoe; import ru.betterend.item.EndPickaxe; import ru.betterend.item.EndToolMaterial; import ru.betterend.item.EternalCrystal; +import ru.betterend.item.GuideBook; import ru.betterend.item.PatternedItem; import ru.betterend.tab.CreativeTab; import ru.betterend.util.TagHelper; @@ -64,49 +65,50 @@ public class EndItems { public final static Item CRYSTALLINE_SULPHUR = registerItem("crystalline_sulphur"); // Armor // - public static final Item TERMINITE_HELMET = registerItem("terminite_helmet", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.HEAD, makeSettings())); - public static final Item TERMINITE_CHESTPLATE = registerItem("terminite_chestplate", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.CHEST, makeSettings())); - public static final Item TERMINITE_LEGGINGS = registerItem("terminite_leggings", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.LEGS, makeSettings())); - public static final Item TERMINITE_BOOTS = registerItem("terminite_boots", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.FEET, makeSettings())); - public static final Item AETERNIUM_HELMET = registerItem("aeternium_helmet", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.HEAD, makeSettings())); - public static final Item AETERNIUM_CHESTPLATE = registerItem("aeternium_chestplate", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.CHEST, makeSettings())); - public static final Item AETERNIUM_LEGGINGS = registerItem("aeternium_leggings", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.LEGS, makeSettings())); - public static final Item AETERNIUM_BOOTS = registerItem("aeternium_boots", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.FEET, makeSettings())); - public static final Item CRYSTALITE_HELMET = registerItem("crystalite_helmet", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.HEAD, makeSettings())); - public static final Item CRYSTALITE_CHESTPLATE = registerItem("crystalite_chestplate", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.CHEST, makeSettings())); - public static final Item CRYSTALITE_LEGGINGS = registerItem("crystalite_leggings", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.LEGS, makeSettings())); - public static final Item CRYSTALITE_BOOTS = registerItem("crystalite_boots", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.FEET, makeSettings())); + public static final Item TERMINITE_HELMET = registerItem("terminite_helmet", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.HEAD, makeItemSettings())); + public static final Item TERMINITE_CHESTPLATE = registerItem("terminite_chestplate", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.CHEST, makeItemSettings())); + public static final Item TERMINITE_LEGGINGS = registerItem("terminite_leggings", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.LEGS, makeItemSettings())); + public static final Item TERMINITE_BOOTS = registerItem("terminite_boots", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.FEET, makeItemSettings())); + public static final Item AETERNIUM_HELMET = registerItem("aeternium_helmet", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.HEAD, makeItemSettings())); + public static final Item AETERNIUM_CHESTPLATE = registerItem("aeternium_chestplate", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.CHEST, makeItemSettings())); + public static final Item AETERNIUM_LEGGINGS = registerItem("aeternium_leggings", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.LEGS, makeItemSettings())); + public static final Item AETERNIUM_BOOTS = registerItem("aeternium_boots", new ArmorItem(EndArmorMaterial.AETERNIUM, EquipmentSlot.FEET, makeItemSettings())); + public static final Item CRYSTALITE_HELMET = registerItem("crystalite_helmet", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.HEAD, makeItemSettings())); + public static final Item CRYSTALITE_CHESTPLATE = registerItem("crystalite_chestplate", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.CHEST, makeItemSettings())); + public static final Item CRYSTALITE_LEGGINGS = registerItem("crystalite_leggings", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.LEGS, makeItemSettings())); + public static final Item CRYSTALITE_BOOTS = registerItem("crystalite_boots", new ArmorItem(EndArmorMaterial.CRYSTALITE, EquipmentSlot.FEET, makeItemSettings())); // Tools // - public static final ToolItem TERMINITE_SHOVEL = registerTool("terminite_shovel", new ShovelItem(EndToolMaterial.TERMINITE, 1.5F, -3.0F, makeSettings())); - public static final ToolItem TERMINITE_SWORD = registerTool("terminite_sword", new SwordItem(EndToolMaterial.TERMINITE, 3, -2.4F, makeSettings())); - public static final ToolItem TERMINITE_PICKAXE = registerTool("terminite_pickaxe", new EndPickaxe(EndToolMaterial.TERMINITE, 1, -2.8F, makeSettings())); - public static final ToolItem TERMINITE_AXE = registerTool("terminite_axe", new EndAxe(EndToolMaterial.TERMINITE, 6.0F, -3.0F, makeSettings())); - public static final ToolItem TERMINITE_HOE = registerTool("terminite_hoe", new EndHoe(EndToolMaterial.TERMINITE, -3, 0.0F, makeSettings())); - public static final ToolItem TERMINITE_HAMMER = registerTool("terminite_hammer", new EndHammer(EndToolMaterial.TERMINITE, 5.0F, -3.2F, 0.3D, makeSettings())); - public static final ToolItem AETERNIUM_SHOVEL = registerTool("aeternium_shovel", new ShovelItem(EndToolMaterial.AETERNIUM, 1.5F, -3.0F, makeSettings())); - public static final ToolItem AETERNIUM_SWORD = registerTool("aeternium_sword", new SwordItem(EndToolMaterial.AETERNIUM, 3, -2.4F, makeSettings())); - public static final ToolItem AETERNIUM_PICKAXE = registerTool("aeternium_pickaxe", new EndPickaxe(EndToolMaterial.AETERNIUM, 1, -2.8F, makeSettings())); - public static final ToolItem AETERNIUM_AXE = registerTool("aeternium_axe", new EndAxe(EndToolMaterial.AETERNIUM, 5.0F, -3.0F, makeSettings())); - public static final ToolItem AETERNIUM_HOE = registerTool("aeternium_hoe", new EndHoe(EndToolMaterial.AETERNIUM, -3, 0.0F, makeSettings())); - public static final ToolItem AETERNIUM_HAMMER = registerTool("aeternium_hammer", new EndHammer(EndToolMaterial.AETERNIUM, 6.0F, -3.0F, 0.3D, makeSettings())); - public static final ToolItem IRON_HAMMER = registerTool("iron_hammer", new EndHammer(ToolMaterials.IRON, 5.0F, -3.2F, 0.2D, makeSettings())); - public static final ToolItem GOLDEN_HAMMER = registerTool("golden_hammer", new EndHammer(ToolMaterials.GOLD, 4.5F, -3.4F, 0.3D, makeSettings())); - public static final ToolItem DIAMOND_HAMMER = registerTool("diamond_hammer", new EndHammer(ToolMaterials.DIAMOND, 5.5F, -3.1F, 0.2D, makeSettings())); - public static final ToolItem NETHERITE_HAMMER = registerTool("netherite_hammer", new EndHammer(ToolMaterials.NETHERITE, 5.0F, -3.0F, 0.2D, makeSettings())); + public static final ToolItem TERMINITE_SHOVEL = registerTool("terminite_shovel", new ShovelItem(EndToolMaterial.TERMINITE, 1.5F, -3.0F, makeItemSettings())); + public static final ToolItem TERMINITE_SWORD = registerTool("terminite_sword", new SwordItem(EndToolMaterial.TERMINITE, 3, -2.4F, makeItemSettings())); + public static final ToolItem TERMINITE_PICKAXE = registerTool("terminite_pickaxe", new EndPickaxe(EndToolMaterial.TERMINITE, 1, -2.8F, makeItemSettings())); + public static final ToolItem TERMINITE_AXE = registerTool("terminite_axe", new EndAxe(EndToolMaterial.TERMINITE, 6.0F, -3.0F, makeItemSettings())); + public static final ToolItem TERMINITE_HOE = registerTool("terminite_hoe", new EndHoe(EndToolMaterial.TERMINITE, -3, 0.0F, makeItemSettings())); + public static final ToolItem TERMINITE_HAMMER = registerTool("terminite_hammer", new EndHammer(EndToolMaterial.TERMINITE, 5.0F, -3.2F, 0.3D, makeItemSettings())); + public static final ToolItem AETERNIUM_SHOVEL = registerTool("aeternium_shovel", new ShovelItem(EndToolMaterial.AETERNIUM, 1.5F, -3.0F, makeItemSettings())); + public static final ToolItem AETERNIUM_SWORD = registerTool("aeternium_sword", new SwordItem(EndToolMaterial.AETERNIUM, 3, -2.4F, makeItemSettings())); + public static final ToolItem AETERNIUM_PICKAXE = registerTool("aeternium_pickaxe", new EndPickaxe(EndToolMaterial.AETERNIUM, 1, -2.8F, makeItemSettings())); + public static final ToolItem AETERNIUM_AXE = registerTool("aeternium_axe", new EndAxe(EndToolMaterial.AETERNIUM, 5.0F, -3.0F, makeItemSettings())); + public static final ToolItem AETERNIUM_HOE = registerTool("aeternium_hoe", new EndHoe(EndToolMaterial.AETERNIUM, -3, 0.0F, makeItemSettings())); + public static final ToolItem AETERNIUM_HAMMER = registerTool("aeternium_hammer", new EndHammer(EndToolMaterial.AETERNIUM, 6.0F, -3.0F, 0.3D, makeItemSettings())); + public static final ToolItem IRON_HAMMER = registerTool("iron_hammer", new EndHammer(ToolMaterials.IRON, 5.0F, -3.2F, 0.2D, makeItemSettings())); + public static final ToolItem GOLDEN_HAMMER = registerTool("golden_hammer", new EndHammer(ToolMaterials.GOLD, 4.5F, -3.4F, 0.3D, makeItemSettings())); + public static final ToolItem DIAMOND_HAMMER = registerTool("diamond_hammer", new EndHammer(ToolMaterials.DIAMOND, 5.5F, -3.1F, 0.2D, makeItemSettings())); + public static final ToolItem NETHERITE_HAMMER = registerTool("netherite_hammer", new EndHammer(ToolMaterials.NETHERITE, 5.0F, -3.0F, 0.2D, makeItemSettings())); // Food // public final static Item SHADOW_BERRY_RAW = registerFood("shadow_berry_raw", 4, 0.5F); public final static Item SHADOW_BERRY_COOKED = registerFood("shadow_berry_cooked", 6, 0.7F); public final static Item END_FISH_RAW = registerFood("end_fish_raw", FoodComponents.SALMON); public final static Item END_FISH_COOKED = registerFood("end_fish_cooked", FoodComponents.COOKED_SALMON); - public final static Item BUCKET_END_FISH = registerItem("bucket_end_fish", new FishBucketItem(EndEntities.END_FISH, Fluids.WATER, makeSettings().maxCount(1))); + public final static Item BUCKET_END_FISH = registerItem("bucket_end_fish", new FishBucketItem(EndEntities.END_FISH, Fluids.WATER, makeItemSettings().maxCount(1))); // Other // public static final Item ETERNAL_CRYSTAL = registerItem("eternal_crystal", new EternalCrystal()); + public static final Item GUIDE_BOOK = registerItem(GuideBook.BOOK_ID, new GuideBook()); protected static Item registerItem(String name) { - return registerItem(BetterEnd.makeID(name), new PatternedItem(makeSettings())); + return registerItem(BetterEnd.makeID(name), new PatternedItem(makeItemSettings())); } protected static Item registerItem(String name, Item item) { @@ -153,7 +155,7 @@ public class EndItems { } public static Item registerEgg(String name, EntityType type, int background, int dots) { - SpawnEggItem item = new SpawnEggItem(type, background, dots, makeSettings()); + SpawnEggItem item = new SpawnEggItem(type, background, dots, makeItemSettings()); ItemDispenserBehavior behavior = new ItemDispenserBehavior() { public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) { Direction direction = pointer.getBlockState().get(DispenserBlock.FACING); @@ -172,11 +174,15 @@ public class EndItems { } public static Item registerFood(String name, FoodComponent foodComponent) { - return registerItem(name, new Item(makeSettings().food(foodComponent))); + return registerItem(name, new Item(makeItemSettings().food(foodComponent))); } - public static Settings makeSettings() { - return new Item.Settings().group(CreativeTab.END_TAB); + public static Settings makeItemSettings() { + return new Item.Settings().group(CreativeTab.TAB_ITEMS); + } + + public static Settings makeBlockItemSettings() { + return new Item.Settings().group(CreativeTab.TAB_BLOCKS); } public static void register() {} diff --git a/src/main/java/ru/betterend/tab/CreativeTab.java b/src/main/java/ru/betterend/tab/CreativeTab.java index a279459f..0a57512c 100644 --- a/src/main/java/ru/betterend/tab/CreativeTab.java +++ b/src/main/java/ru/betterend/tab/CreativeTab.java @@ -4,18 +4,31 @@ import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; + import ru.betterend.BetterEnd; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; public class CreativeTab { - public static final ItemGroup END_TAB = FabricItemGroupBuilder.create(BetterEnd.makeID("items")) - .icon(() -> new ItemStack(EndBlocks.END_MYCELIUM)).appendItems(stacks -> { - for (Item i : EndItems.getModBlocks()) { - stacks.add(new ItemStack(i)); - } - for (Item i : EndItems.getModItems()) { - stacks.add(new ItemStack(i)); - } - }).build(); + public static final ItemGroup TAB_ITEMS; + public static final ItemGroup TAB_BLOCKS; + + static { + TAB_ITEMS = FabricItemGroupBuilder.create(BetterEnd.makeID("end_items")) + .icon(() -> new ItemStack(EndItems.ETERNAL_CRYSTAL)).appendItems(stacks -> { + for (Item i : EndItems.getModItems()) { + stacks.add(new ItemStack(i)); + } + }).build(); + TAB_BLOCKS = FabricItemGroupBuilder.create(BetterEnd.makeID("end_blocks")) + .icon(() -> new ItemStack(EndBlocks.END_MYCELIUM)).appendItems(stacks -> { + for (Item i : EndItems.getModBlocks()) { + stacks.add(new ItemStack(i)); + } + }).build(); + if (BetterEnd.isDevEnvironment()) { + System.out.println("CREATIVE_TAB_ITEMS: " + TAB_ITEMS.getName()); + System.out.println("CREATIVE_TAB_BLOCKS: " + TAB_BLOCKS.getName()); + } + } } diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index 09754d89..59996b86 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -1,5 +1,10 @@ { - "itemGroup.betterend.items": "Better End", + "itemGroup.betterend.end_items": "Better End: Items", + "itemGroup.betterend.end_blocks": "Better End: Blocks", + + "item.betterend.guidebook": "The End For Dummies", + "book.betterend.landing_text": "A short guide about surviving in the extreme conditions of The End.", + "book.betterend.subtitle": "Surviving in The End", "category.rei.damage.amount&dmg": "Tool damage: %s", "category.rei.infusion.time&val": "Time: %s", diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index 4650be78..140cccc8 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -1,5 +1,10 @@ { - "itemGroup.betterend.items": "Улучшенный Край", + "itemGroup.betterend.end_items": "Better End: Предметы", + "itemGroup.betterend.end_blocks": "Better End: Блоки", + + "item.betterend.guidebook": "Край для чайников", + "book.betterend.landing_text": "Короткое руководство по выживанию в экстримальных условиях Края.", + "book.betterend.subtitle": "Выживание в Краю", "category.rei.damage.amount&dmg": "Износ инструмента: %s", "category.rei.infusion.time&val": "Время: %s", diff --git a/src/main/resources/assets/betterend/models/item/guide_book.json b/src/main/resources/assets/betterend/models/item/guide_book.json new file mode 100644 index 00000000..28747129 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/guide_book.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/guidebook" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/item/guidebook.png b/src/main/resources/assets/betterend/textures/item/guidebook.png new file mode 100644 index 00000000..aa16602f Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/guidebook.png differ diff --git a/src/main/resources/data/betterend/patchouli_books/the_end_for_dummies/book.json b/src/main/resources/data/betterend/patchouli_books/the_end_for_dummies/book.json new file mode 100644 index 00000000..c5acfc3b --- /dev/null +++ b/src/main/resources/data/betterend/patchouli_books/the_end_for_dummies/book.json @@ -0,0 +1,11 @@ +{ + "name": "item.betterend.guidebook", + "landing_text": "book.betterend.landing_text", + "subtitle": "book.betterend.subtitle", + "creative_tab": "betterend.end_items", + "custom_book_item": "betterend:guidebook", + "model": "betterend:guide_book", + "dont_generate_book": true, + "show_progress": false, + "version": 1 +} \ No newline at end of file