From 5c3efb55065c42d739019048e7da671b0690e759 Mon Sep 17 00:00:00 2001 From: Steven Tracey Date: Sun, 7 Nov 2021 22:40:44 -0500 Subject: [PATCH] Port from EverythingVanilla TODO: make enchanted apples glow, add ore gen, daggers, golden netherite, villager meat, vertical slabs, aether, reaplant/replenish enchantment. --- .gitignore | 117 +++++++++++ .idea/.gitignore | 8 + .idea/compiler.xml | 6 + .idea/jarRepositories.xml | 35 ++++ .idea/misc.xml | 10 + .idea/runConfigurations.xml | 10 + .idea/runConfigurations/Minecraft_Client.xml | 12 ++ .idea/runConfigurations/Minecraft_Server.xml | 12 ++ .idea/vcs.xml | 6 + build.gradle | 46 +++++ gradle.properties | 16 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 ++++++++++++++++++ gradlew.bat | 89 +++++++++ settings.gradle | 9 + src/main/java/tech/nevets/vplus/Main.java | 24 +++ .../nevets/vplus/armor/ArmorMaterials.java | 81 ++++++++ .../tech/nevets/vplus/armor/BaseArmor.java | 12 ++ .../java/tech/nevets/vplus/armor/VPArmor.java | 44 +++++ .../nevets/vplus/blocks/ColorTorchBlock.java | 46 +++++ .../vplus/blocks/ColorWallTorchBlock.java | 110 +++++++++++ .../nevets/vplus/blocks/LavaSpongeBlock.java | 81 ++++++++ .../nevets/vplus/blocks/PlatinumBlock.java | 13 ++ .../tech/nevets/vplus/blocks/PlatinumOre.java | 36 ++++ .../tech/nevets/vplus/blocks/RubyBlock.java | 13 ++ .../tech/nevets/vplus/blocks/RubyOre.java | 35 ++++ .../blocks/SaturatedLavaSpongeBlock.java | 61 ++++++ .../tech/nevets/vplus/blocks/VPBlocks.java | 49 +++++ .../tech/nevets/vplus/food/DiamondApple.java | 13 ++ .../tech/nevets/vplus/food/EmeraldApple.java | 13 ++ .../vplus/food/EnchantedDiamondApple.java | 13 ++ .../vplus/food/EnchantedEmeraldApple.java | 13 ++ .../nevets/vplus/food/EnchantedIronApple.java | 13 ++ .../vplus/food/EnchantedNetheriteApple.java | 13 ++ .../vplus/food/EnchantedPlatinumApple.java | 13 ++ .../nevets/vplus/food/EnchantedRubyApple.java | 13 ++ .../tech/nevets/vplus/food/IronApple.java | 13 ++ .../nevets/vplus/food/NetheriteApple.java | 13 ++ .../tech/nevets/vplus/food/PlatinumApple.java | 13 ++ .../tech/nevets/vplus/food/RubyApple.java | 13 ++ .../java/tech/nevets/vplus/food/VPFood.java | 41 ++++ .../java/tech/nevets/vplus/init/ZoomInit.java | 2 + .../nevets/vplus/items/PlatinumIngot.java | 9 + .../nevets/vplus/items/PlatinumNugget.java | 9 + .../java/tech/nevets/vplus/items/Ruby.java | 9 + .../tech/nevets/vplus/items/VPItemGroups.java | 31 +++ .../java/tech/nevets/vplus/items/VPItems.java | 23 +++ .../java/tech/nevets/vplus/misc/VPFuels.java | 10 + .../java/tech/nevets/vplus/misc/VPOreGen.java | 37 ++++ .../java/tech/nevets/vplus/misc/VPZoom.java | 25 +++ .../tech/nevets/vplus/mixin/ZoomMixin.java | 2 + .../java/tech/nevets/vplus/tools/AxeBase.java | 11 ++ .../java/tech/nevets/vplus/tools/HoeBase.java | 11 ++ .../tech/nevets/vplus/tools/PickaxeBase.java | 11 ++ .../tech/nevets/vplus/tools/ShovelBase.java | 11 ++ .../tech/nevets/vplus/tools/SwordBase.java | 11 ++ .../nevets/vplus/tools/ToolMaterials.java | 60 ++++++ .../java/tech/nevets/vplus/tools/VPTools.java | 45 +++++ .../textures/models/armor/emerald_layer_1.png | Bin 0 -> 2923 bytes .../textures/models/armor/emerald_layer_2.png | Bin 0 -> 2184 bytes .../models/armor/platinum_layer_1.png | Bin 0 -> 2875 bytes .../models/armor/platinum_layer_2.png | Bin 0 -> 2170 bytes .../vplus/blockstates/green_wall_torch.json | 19 ++ .../assets/vplus/blockstates/greentorch.json | 7 + .../assets/vplus/blockstates/lava_sponge.json | 5 + .../vplus/blockstates/platinum_block.json | 5 + .../vplus/blockstates/platinum_ore.json | 5 + .../assets/vplus/blockstates/ruby_block.json | 5 + .../assets/vplus/blockstates/ruby_ore.json | 5 + .../blockstates/saturated_lava_sponge.json | 5 + src/main/resources/assets/vplus/icon.png | Bin 0 -> 9052 bytes .../resources/assets/vplus/lang/en_us.json | 63 ++++++ .../vplus/models/block/green_wall_torch.json | 6 + .../assets/vplus/models/block/greentorch.json | 6 + .../vplus/models/block/lava_sponge.json | 6 + .../vplus/models/block/platinum_block.json | 6 + .../vplus/models/block/platinum_ore.json | 6 + .../assets/vplus/models/block/ruby_block.json | 6 + .../assets/vplus/models/block/ruby_ore.json | 6 + .../models/block/saturated_lava_sponge.json | 6 + .../vplus/models/item/diamond_apple.json | 6 + .../vplus/models/item/emerald_apple.json | 6 + .../assets/vplus/models/item/emerald_axe.json | 6 + .../vplus/models/item/emerald_boots.json | 6 + .../vplus/models/item/emerald_chestplate.json | 6 + .../vplus/models/item/emerald_helmet.json | 6 + .../assets/vplus/models/item/emerald_hoe.json | 6 + .../vplus/models/item/emerald_leggings.json | 6 + .../vplus/models/item/emerald_pickaxe.json | 6 + .../vplus/models/item/emerald_shovel.json | 6 + .../vplus/models/item/emerald_sword.json | 6 + .../models/item/enchanted_diamond_apple.json | 6 + .../models/item/enchanted_emerald_apple.json | 6 + .../models/item/enchanted_iron_apple.json | 6 + .../item/enchanted_netherite_apple.json | 6 + .../models/item/enchanted_platinum_apple.json | 6 + .../models/item/enchanted_ruby_apple.json | 6 + .../assets/vplus/models/item/greentorch.json | 6 + .../assets/vplus/models/item/iron_apple.json | 6 + .../assets/vplus/models/item/lava_sponge.json | 3 + .../vplus/models/item/netherite_apple.json | 6 + .../vplus/models/item/platinum_apple.json | 6 + .../vplus/models/item/platinum_axe.json | 6 + .../vplus/models/item/platinum_block.json | 3 + .../vplus/models/item/platinum_boots.json | 6 + .../models/item/platinum_chestplate.json | 6 + .../vplus/models/item/platinum_helmet.json | 6 + .../vplus/models/item/platinum_hoe.json | 6 + .../vplus/models/item/platinum_ingot.json | 6 + .../vplus/models/item/platinum_leggings.json | 6 + .../vplus/models/item/platinum_nugget.json | 6 + .../vplus/models/item/platinum_ore.json | 3 + .../vplus/models/item/platinum_pickaxe.json | 6 + .../vplus/models/item/platinum_shovel.json | 6 + .../vplus/models/item/platinum_sword.json | 6 + .../assets/vplus/models/item/ruby.json | 6 + .../assets/vplus/models/item/ruby_apple.json | 6 + .../assets/vplus/models/item/ruby_axe.json | 6 + .../assets/vplus/models/item/ruby_block.json | 3 + .../assets/vplus/models/item/ruby_boots.json | 6 + .../vplus/models/item/ruby_chestplate.json | 6 + .../assets/vplus/models/item/ruby_helmet.json | 6 + .../assets/vplus/models/item/ruby_hoe.json | 6 + .../vplus/models/item/ruby_leggings.json | 6 + .../assets/vplus/models/item/ruby_ore.json | 3 + .../vplus/models/item/ruby_pickaxe.json | 6 + .../assets/vplus/models/item/ruby_shovel.json | 6 + .../assets/vplus/models/item/ruby_sword.json | 6 + .../models/item/saturated_lava_sponge.json | 3 + .../vplus/textures/block/greentorch.png | Bin 0 -> 138 bytes .../vplus/textures/block/lava_sponge.png | Bin 0 -> 534 bytes .../vplus/textures/block/platinum_block.png | Bin 0 -> 1566 bytes .../vplus/textures/block/platinum_ore.png | Bin 0 -> 2073 bytes .../vplus/textures/block/ruby_block.png | Bin 0 -> 1713 bytes .../assets/vplus/textures/block/ruby_ore.png | Bin 0 -> 1798 bytes .../textures/block/saturated_lava_sponge.png | Bin 0 -> 681 bytes .../vplus/textures/item/diamond_apple.png | Bin 0 -> 1726 bytes .../vplus/textures/item/emerald_apple.png | Bin 0 -> 1713 bytes .../vplus/textures/item/emerald_axe.png | Bin 0 -> 1660 bytes .../vplus/textures/item/emerald_boots.png | Bin 0 -> 1583 bytes .../textures/item/emerald_chestplate.png | Bin 0 -> 1658 bytes .../vplus/textures/item/emerald_helmet.png | Bin 0 -> 1587 bytes .../vplus/textures/item/emerald_hoe.png | Bin 0 -> 1670 bytes .../vplus/textures/item/emerald_leggings.png | Bin 0 -> 1605 bytes .../vplus/textures/item/emerald_pickaxe.png | Bin 0 -> 1688 bytes .../vplus/textures/item/emerald_shovel.png | Bin 0 -> 1648 bytes .../vplus/textures/item/emerald_sword.png | Bin 0 -> 1649 bytes .../textures/item/enchanted_diamond_apple.png | Bin 0 -> 1726 bytes .../textures/item/enchanted_emerald_apple.png | Bin 0 -> 1713 bytes .../textures/item/enchanted_iron_apple.png | Bin 0 -> 1679 bytes .../item/enchanted_netherite_apple.png | Bin 0 -> 1705 bytes .../item/enchanted_platinum_apple.png | Bin 0 -> 1714 bytes .../textures/item/enchanted_ruby_apple.png | Bin 0 -> 228 bytes .../assets/vplus/textures/item/iron_apple.png | Bin 0 -> 1679 bytes .../vplus/textures/item/netherite_apple.png | Bin 0 -> 1705 bytes .../vplus/textures/item/platinum_apple.png | Bin 0 -> 1714 bytes .../vplus/textures/item/platinum_axe.png | Bin 0 -> 1698 bytes .../vplus/textures/item/platinum_boots.png | Bin 0 -> 1607 bytes .../textures/item/platinum_chestplate.png | Bin 0 -> 1679 bytes .../vplus/textures/item/platinum_helmet.png | Bin 0 -> 1624 bytes .../vplus/textures/item/platinum_hoe.png | Bin 0 -> 1667 bytes .../vplus/textures/item/platinum_ingot.png | Bin 0 -> 1655 bytes .../vplus/textures/item/platinum_leggings.png | Bin 0 -> 1626 bytes .../vplus/textures/item/platinum_nugget.png | Bin 0 -> 1565 bytes .../vplus/textures/item/platinum_pickaxe.png | Bin 0 -> 1733 bytes .../vplus/textures/item/platinum_shovel.png | Bin 0 -> 1679 bytes .../vplus/textures/item/platinum_sword.png | Bin 0 -> 1671 bytes .../assets/vplus/textures/item/ruby.png | Bin 0 -> 434 bytes .../assets/vplus/textures/item/ruby_apple.png | Bin 0 -> 228 bytes .../assets/vplus/textures/item/ruby_axe.png | Bin 0 -> 1701 bytes .../assets/vplus/textures/item/ruby_boots.png | Bin 0 -> 1611 bytes .../vplus/textures/item/ruby_chestplate.png | Bin 0 -> 1686 bytes .../vplus/textures/item/ruby_helmet.png | Bin 0 -> 1621 bytes .../assets/vplus/textures/item/ruby_hoe.png | Bin 0 -> 1694 bytes .../vplus/textures/item/ruby_leggings.png | Bin 0 -> 1636 bytes .../vplus/textures/item/ruby_pickaxe.png | Bin 0 -> 1731 bytes .../vplus/textures/item/ruby_shovel.png | Bin 0 -> 1672 bytes .../assets/vplus/textures/item/ruby_sword.png | Bin 0 -> 1705 bytes .../minecraft/recipes/chainmail_boots.json | 16 ++ .../recipes/chainmail_chestplate.json | 17 ++ .../minecraft/recipes/chainmail_helmet.json | 16 ++ .../minecraft/recipes/chainmail_leggings.json | 17 ++ .../recipes/enchanted_golden_apple.json | 20 ++ .../tags/blocks/beacon_base_blocks.json | 7 + .../tags/items/beacon_payment_items.json | 7 + .../vplus/loot_tables/blocks/lava_sponge.json | 19 ++ .../loot_tables/blocks/platinum_block.json | 19 ++ .../loot_tables/blocks/platinum_ore.json | 56 ++++++ .../vplus/loot_tables/blocks/ruby_block.json | 19 ++ .../vplus/loot_tables/blocks/ruby_ore.json | 56 ++++++ .../blocks/saturated_lava_sponge.json | 19 ++ .../data/vplus/recipes/diamond_apple.json | 20 ++ .../data/vplus/recipes/emerald_apple.json | 20 ++ .../data/vplus/recipes/emerald_axe.json | 19 ++ .../data/vplus/recipes/emerald_boots.json | 16 ++ .../vplus/recipes/emerald_chestplate.json | 17 ++ .../data/vplus/recipes/emerald_helmet.json | 16 ++ .../data/vplus/recipes/emerald_hoe.json | 20 ++ .../data/vplus/recipes/emerald_leggings.json | 17 ++ .../data/vplus/recipes/emerald_pickaxe.json | 20 ++ .../data/vplus/recipes/emerald_shovel.json | 20 ++ .../data/vplus/recipes/emerald_sword.json | 20 ++ .../recipes/enchanted_diamond_apple.json | 20 ++ .../recipes/enchanted_emerald_apple.json | 20 ++ .../vplus/recipes/enchanted_iron_apple.json | 20 ++ .../recipes/enchanted_netherite_apple.json | 20 ++ .../recipes/enchanted_platinum_apple.json | 20 ++ .../data/vplus/recipes/iron_apple.json | 20 ++ .../data/vplus/recipes/lava_sponge.json | 20 ++ .../data/vplus/recipes/netherite_apple.json | 20 ++ .../data/vplus/recipes/platinum_apple.json | 20 ++ .../data/vplus/recipes/platinum_axe.json | 19 ++ .../vplus/recipes/platinum_axe_smithing.json | 12 ++ .../data/vplus/recipes/platinum_block.json | 17 ++ .../data/vplus/recipes/platinum_boots.json | 16 ++ .../recipes/platinum_boots_smithing.json | 12 ++ .../vplus/recipes/platinum_chestplate.json | 17 ++ .../recipes/platinum_chestplate_smithing.json | 12 ++ .../data/vplus/recipes/platinum_helmet.json | 16 ++ .../recipes/platinum_helmet_smithing.json | 12 ++ .../data/vplus/recipes/platinum_hoe.json | 20 ++ .../vplus/recipes/platinum_hoe_smithing.json | 12 ++ .../data/vplus/recipes/platinum_ingot.json | 9 + .../recipes/platinum_ingot_from_blasting.json | 9 + .../recipes/platinum_ingot_from_block.json | 15 ++ .../recipes/platinum_ingot_from_nuggets.json | 17 ++ .../data/vplus/recipes/platinum_leggings.json | 17 ++ .../recipes/platinum_leggings_smithing.json | 12 ++ .../recipes/platinum_nugget_from_ingot.json | 15 ++ .../data/vplus/recipes/platinum_pickaxe.json | 20 ++ .../recipes/platinum_pickaxe_smithing.json | 12 ++ .../data/vplus/recipes/platinum_shovel.json | 20 ++ .../recipes/platinum_shovel_smithing.json | 12 ++ .../data/vplus/recipes/platinum_sword.json | 20 ++ .../recipes/platinum_sword_smithing.json | 12 ++ .../data/vplus/recipes/ruby_apple.json | 20 ++ .../data/vplus/recipes/ruby_axe.json | 19 ++ .../data/vplus/recipes/ruby_axe_smithing.json | 12 ++ .../data/vplus/recipes/ruby_block.json | 17 ++ .../data/vplus/recipes/ruby_boots.json | 16 ++ .../vplus/recipes/ruby_boots_smithing.json | 12 ++ .../data/vplus/recipes/ruby_from_block.json | 15 ++ src/main/resources/fabric.mod.json | 38 ++++ src/main/resources/vplus.mixins.json | 13 ++ 245 files changed, 3318 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/runConfigurations/Minecraft_Client.xml create mode 100644 .idea/runConfigurations/Minecraft_Server.xml create mode 100644 .idea/vcs.xml create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/tech/nevets/vplus/Main.java create mode 100644 src/main/java/tech/nevets/vplus/armor/ArmorMaterials.java create mode 100644 src/main/java/tech/nevets/vplus/armor/BaseArmor.java create mode 100644 src/main/java/tech/nevets/vplus/armor/VPArmor.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/ColorTorchBlock.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/ColorWallTorchBlock.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/LavaSpongeBlock.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/PlatinumBlock.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/PlatinumOre.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/RubyBlock.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/RubyOre.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/SaturatedLavaSpongeBlock.java create mode 100644 src/main/java/tech/nevets/vplus/blocks/VPBlocks.java create mode 100644 src/main/java/tech/nevets/vplus/food/DiamondApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EmeraldApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EnchantedDiamondApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EnchantedEmeraldApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EnchantedIronApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EnchantedNetheriteApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EnchantedPlatinumApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/EnchantedRubyApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/IronApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/NetheriteApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/PlatinumApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/RubyApple.java create mode 100644 src/main/java/tech/nevets/vplus/food/VPFood.java create mode 100644 src/main/java/tech/nevets/vplus/init/ZoomInit.java create mode 100644 src/main/java/tech/nevets/vplus/items/PlatinumIngot.java create mode 100644 src/main/java/tech/nevets/vplus/items/PlatinumNugget.java create mode 100644 src/main/java/tech/nevets/vplus/items/Ruby.java create mode 100644 src/main/java/tech/nevets/vplus/items/VPItemGroups.java create mode 100644 src/main/java/tech/nevets/vplus/items/VPItems.java create mode 100644 src/main/java/tech/nevets/vplus/misc/VPFuels.java create mode 100644 src/main/java/tech/nevets/vplus/misc/VPOreGen.java create mode 100644 src/main/java/tech/nevets/vplus/misc/VPZoom.java create mode 100644 src/main/java/tech/nevets/vplus/mixin/ZoomMixin.java create mode 100644 src/main/java/tech/nevets/vplus/tools/AxeBase.java create mode 100644 src/main/java/tech/nevets/vplus/tools/HoeBase.java create mode 100644 src/main/java/tech/nevets/vplus/tools/PickaxeBase.java create mode 100644 src/main/java/tech/nevets/vplus/tools/ShovelBase.java create mode 100644 src/main/java/tech/nevets/vplus/tools/SwordBase.java create mode 100644 src/main/java/tech/nevets/vplus/tools/ToolMaterials.java create mode 100644 src/main/java/tech/nevets/vplus/tools/VPTools.java create mode 100644 src/main/resources/assets/minecraft/textures/models/armor/emerald_layer_1.png create mode 100644 src/main/resources/assets/minecraft/textures/models/armor/emerald_layer_2.png create mode 100644 src/main/resources/assets/minecraft/textures/models/armor/platinum_layer_1.png create mode 100644 src/main/resources/assets/minecraft/textures/models/armor/platinum_layer_2.png create mode 100644 src/main/resources/assets/vplus/blockstates/green_wall_torch.json create mode 100644 src/main/resources/assets/vplus/blockstates/greentorch.json create mode 100644 src/main/resources/assets/vplus/blockstates/lava_sponge.json create mode 100644 src/main/resources/assets/vplus/blockstates/platinum_block.json create mode 100644 src/main/resources/assets/vplus/blockstates/platinum_ore.json create mode 100644 src/main/resources/assets/vplus/blockstates/ruby_block.json create mode 100644 src/main/resources/assets/vplus/blockstates/ruby_ore.json create mode 100644 src/main/resources/assets/vplus/blockstates/saturated_lava_sponge.json create mode 100644 src/main/resources/assets/vplus/icon.png create mode 100644 src/main/resources/assets/vplus/lang/en_us.json create mode 100644 src/main/resources/assets/vplus/models/block/green_wall_torch.json create mode 100644 src/main/resources/assets/vplus/models/block/greentorch.json create mode 100644 src/main/resources/assets/vplus/models/block/lava_sponge.json create mode 100644 src/main/resources/assets/vplus/models/block/platinum_block.json create mode 100644 src/main/resources/assets/vplus/models/block/platinum_ore.json create mode 100644 src/main/resources/assets/vplus/models/block/ruby_block.json create mode 100644 src/main/resources/assets/vplus/models/block/ruby_ore.json create mode 100644 src/main/resources/assets/vplus/models/block/saturated_lava_sponge.json create mode 100644 src/main/resources/assets/vplus/models/item/diamond_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_axe.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_boots.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_chestplate.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_helmet.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_hoe.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_leggings.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_pickaxe.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_shovel.json create mode 100644 src/main/resources/assets/vplus/models/item/emerald_sword.json create mode 100644 src/main/resources/assets/vplus/models/item/enchanted_diamond_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/enchanted_emerald_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/enchanted_iron_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/enchanted_netherite_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/enchanted_platinum_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/enchanted_ruby_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/greentorch.json create mode 100644 src/main/resources/assets/vplus/models/item/iron_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/lava_sponge.json create mode 100644 src/main/resources/assets/vplus/models/item/netherite_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_axe.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_block.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_boots.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_chestplate.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_helmet.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_hoe.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_ingot.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_leggings.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_nugget.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_ore.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_pickaxe.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_shovel.json create mode 100644 src/main/resources/assets/vplus/models/item/platinum_sword.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_apple.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_axe.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_block.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_boots.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_chestplate.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_helmet.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_hoe.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_leggings.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_ore.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_pickaxe.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_shovel.json create mode 100644 src/main/resources/assets/vplus/models/item/ruby_sword.json create mode 100644 src/main/resources/assets/vplus/models/item/saturated_lava_sponge.json create mode 100644 src/main/resources/assets/vplus/textures/block/greentorch.png create mode 100644 src/main/resources/assets/vplus/textures/block/lava_sponge.png create mode 100644 src/main/resources/assets/vplus/textures/block/platinum_block.png create mode 100644 src/main/resources/assets/vplus/textures/block/platinum_ore.png create mode 100644 src/main/resources/assets/vplus/textures/block/ruby_block.png create mode 100644 src/main/resources/assets/vplus/textures/block/ruby_ore.png create mode 100644 src/main/resources/assets/vplus/textures/block/saturated_lava_sponge.png create mode 100644 src/main/resources/assets/vplus/textures/item/diamond_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_axe.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_boots.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_chestplate.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_helmet.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_hoe.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_leggings.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_pickaxe.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_shovel.png create mode 100644 src/main/resources/assets/vplus/textures/item/emerald_sword.png create mode 100644 src/main/resources/assets/vplus/textures/item/enchanted_diamond_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/enchanted_emerald_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/enchanted_iron_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/enchanted_netherite_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/enchanted_platinum_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/enchanted_ruby_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/iron_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/netherite_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_axe.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_boots.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_chestplate.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_helmet.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_hoe.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_ingot.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_leggings.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_nugget.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_pickaxe.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_shovel.png create mode 100644 src/main/resources/assets/vplus/textures/item/platinum_sword.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_apple.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_axe.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_boots.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_chestplate.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_helmet.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_hoe.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_leggings.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_pickaxe.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_shovel.png create mode 100644 src/main/resources/assets/vplus/textures/item/ruby_sword.png create mode 100644 src/main/resources/data/minecraft/recipes/chainmail_boots.json create mode 100644 src/main/resources/data/minecraft/recipes/chainmail_chestplate.json create mode 100644 src/main/resources/data/minecraft/recipes/chainmail_helmet.json create mode 100644 src/main/resources/data/minecraft/recipes/chainmail_leggings.json create mode 100644 src/main/resources/data/minecraft/recipes/enchanted_golden_apple.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/beacon_base_blocks.json create mode 100644 src/main/resources/data/minecraft/tags/items/beacon_payment_items.json create mode 100644 src/main/resources/data/vplus/loot_tables/blocks/lava_sponge.json create mode 100644 src/main/resources/data/vplus/loot_tables/blocks/platinum_block.json create mode 100644 src/main/resources/data/vplus/loot_tables/blocks/platinum_ore.json create mode 100644 src/main/resources/data/vplus/loot_tables/blocks/ruby_block.json create mode 100644 src/main/resources/data/vplus/loot_tables/blocks/ruby_ore.json create mode 100644 src/main/resources/data/vplus/loot_tables/blocks/saturated_lava_sponge.json create mode 100644 src/main/resources/data/vplus/recipes/diamond_apple.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_apple.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_axe.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_boots.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_chestplate.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_helmet.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_hoe.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_leggings.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_pickaxe.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_shovel.json create mode 100644 src/main/resources/data/vplus/recipes/emerald_sword.json create mode 100644 src/main/resources/data/vplus/recipes/enchanted_diamond_apple.json create mode 100644 src/main/resources/data/vplus/recipes/enchanted_emerald_apple.json create mode 100644 src/main/resources/data/vplus/recipes/enchanted_iron_apple.json create mode 100644 src/main/resources/data/vplus/recipes/enchanted_netherite_apple.json create mode 100644 src/main/resources/data/vplus/recipes/enchanted_platinum_apple.json create mode 100644 src/main/resources/data/vplus/recipes/iron_apple.json create mode 100644 src/main/resources/data/vplus/recipes/lava_sponge.json create mode 100644 src/main/resources/data/vplus/recipes/netherite_apple.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_apple.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_axe.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_axe_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_block.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_boots.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_boots_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_chestplate.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_chestplate_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_helmet.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_helmet_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_hoe.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_hoe_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_ingot.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_ingot_from_blasting.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_ingot_from_block.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_ingot_from_nuggets.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_leggings.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_leggings_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_nugget_from_ingot.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_pickaxe.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_pickaxe_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_shovel.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_shovel_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_sword.json create mode 100644 src/main/resources/data/vplus/recipes/platinum_sword_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_apple.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_axe.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_axe_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_block.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_boots.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_boots_smithing.json create mode 100644 src/main/resources/data/vplus/recipes/ruby_from_block.json create mode 100644 src/main/resources/fabric.mod.json create mode 100644 src/main/resources/vplus.mixins.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5761c5c --- /dev/null +++ b/.gitignore @@ -0,0 +1,117 @@ +# ---> Java +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +#Fabric +run/ + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# ---> JetBrains +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +# ---> Gradle +.gradle +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..659bf43 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..59d8f95 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..adc47b4 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..797acea --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/Minecraft_Client.xml b/.idea/runConfigurations/Minecraft_Client.xml new file mode 100644 index 0000000..ead8fdd --- /dev/null +++ b/.idea/runConfigurations/Minecraft_Client.xml @@ -0,0 +1,12 @@ + + + + diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml new file mode 100644 index 0000000..19e6ddb --- /dev/null +++ b/.idea/runConfigurations/Minecraft_Server.xml @@ -0,0 +1,12 @@ + + + + diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..8a52160 --- /dev/null +++ b/build.gradle @@ -0,0 +1,46 @@ +plugins { + id 'fabric-loom' version '0.9-SNAPSHOT' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_16 +targetCompatibility = JavaVersion.VERSION_16 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +repositories { + mavenCentral() +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" +} + +processResources { + inputs.property "version", project.version + + filesMatching("fabric.mod.json") { + expand "version": project.version + } +} + +tasks.withType(JavaCompile).configureEach { + it.options.encoding = "UTF-8" + it.options.release = 16 +} + +java { + withSourcesJar() +} + +jar { + from("LICENSE") { + rename { "${it}_${project.archivesBaseName}"} + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..899d87f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,16 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx2G + +# Fabric Properties +# check these on https://fabricmc.net/versions.html +minecraft_version=1.17.1 +yarn_mappings=1.17.1+build.63 +loader_version=0.11.7 + +# Mod Properties +mod_version = 1.0.0 +maven_group = tech.nevets +archives_base_name = vplus + +# Dependencies +fabric_version=0.41.0+1.17 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..69a9715 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..2875cde --- /dev/null +++ b/settings.gradle @@ -0,0 +1,9 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/Main.java b/src/main/java/tech/nevets/vplus/Main.java new file mode 100644 index 0000000..42c5e6c --- /dev/null +++ b/src/main/java/tech/nevets/vplus/Main.java @@ -0,0 +1,24 @@ +package tech.nevets.vplus; + +import net.fabricmc.api.ModInitializer; +import tech.nevets.vplus.armor.VPArmor; +import tech.nevets.vplus.blocks.VPBlocks; +import tech.nevets.vplus.food.VPFood; +import tech.nevets.vplus.items.VPItems; +import tech.nevets.vplus.misc.VPFuels; +import tech.nevets.vplus.misc.VPZoom; +import tech.nevets.vplus.tools.VPTools; + +public class Main implements ModInitializer { + + @Override + public void onInitialize() { + VPBlocks.vpBlocks(); + VPItems.vpItems(); + VPFood.vpFood(); + VPTools.vpTools(); + VPArmor.vpArmor(); + VPFuels.vpFuels(); + VPZoom.vpZoom(); + } +} diff --git a/src/main/java/tech/nevets/vplus/armor/ArmorMaterials.java b/src/main/java/tech/nevets/vplus/armor/ArmorMaterials.java new file mode 100644 index 0000000..69a11f0 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/armor/ArmorMaterials.java @@ -0,0 +1,81 @@ +package tech.nevets.vplus.armor; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.Items; +import net.minecraft.recipe.Ingredient; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.Lazy; +import tech.nevets.vplus.items.VPItems; + +import java.util.function.Supplier; + +public enum ArmorMaterials implements ArmorMaterial { + EMERALD("emerald", 30, new int[]{2, 6, 8, 2}, 30, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 1.0F, 0.0F, () -> { + return Ingredient.ofItems(new ItemConvertible[]{Items.EMERALD}); + }), + PLATINUM("platinum", 40, new int[]{6, 8, 10, 6}, 40, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 1.0F, 0.5F, () -> { + return Ingredient.ofItems(new ItemConvertible[]{VPItems.PLATINUMINGOT}); + }), + RUBY("ruby", 75, new int[]{10, 15, 20, 10}, 100, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 4.0F, 1.0F, () -> { + return Ingredient.ofItems(new ItemConvertible[]{VPItems.RUBY}); + }); + + private static final int[] BASE_DURABILITY = new int[]{13, 15, 16, 11}; + private final String name; + private final int durabilityMultiplier; + private final int[] protectionAmounts; + private final int enchantability; + private final SoundEvent equipSound; + private final float toughness; + private final float knockbackResistance; + private final Lazy repairIngredientSupplier; + + private ArmorMaterials(String name, int durabilityMultiplier, int[] protectionAmounts, int enchantability, SoundEvent equipSound, float toughness, float knockbackResistance, Supplier repairIngredientSupplier) { + this.name = name; + this.durabilityMultiplier = durabilityMultiplier; + this.protectionAmounts = protectionAmounts; + this.enchantability = enchantability; + this.equipSound = equipSound; + this.toughness = toughness; + this.knockbackResistance = knockbackResistance; + this.repairIngredientSupplier = new Lazy(repairIngredientSupplier); + } + + public int getDurability(EquipmentSlot slot) { + return BASE_DURABILITY[slot.getEntitySlotId()] * this.durabilityMultiplier; + } + + public int getProtectionAmount(EquipmentSlot slot) { + return this.protectionAmounts[slot.getEntitySlotId()]; + } + + public int getEnchantability() { + return this.enchantability; + } + + public SoundEvent getEquipSound() { + return this.equipSound; + } + + public Ingredient getRepairIngredient() { + return (Ingredient)this.repairIngredientSupplier.get(); + } + + @Environment(EnvType.CLIENT) + public String getName() { + return this.name; + } + + public float getToughness() { + return this.toughness; + } + + public float getKnockbackResistance() { + return this.knockbackResistance; + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/armor/BaseArmor.java b/src/main/java/tech/nevets/vplus/armor/BaseArmor.java new file mode 100644 index 0000000..7e712dd --- /dev/null +++ b/src/main/java/tech/nevets/vplus/armor/BaseArmor.java @@ -0,0 +1,12 @@ +package tech.nevets.vplus.armor; + +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; +import tech.nevets.vplus.items.VPItemGroups; + +public class BaseArmor extends ArmorItem { + public BaseArmor(ArmorMaterial material, EquipmentSlot slot) { + super(material, slot, new Settings().group(VPItemGroups.COMBAT)); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/armor/VPArmor.java b/src/main/java/tech/nevets/vplus/armor/VPArmor.java new file mode 100644 index 0000000..941558f --- /dev/null +++ b/src/main/java/tech/nevets/vplus/armor/VPArmor.java @@ -0,0 +1,44 @@ +package tech.nevets.vplus.armor; + +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class VPArmor { + + public static final ArmorMaterial EMERALD_ARMOR = ArmorMaterials.EMERALD; + public static final ArmorMaterial PLATINUM_ARMOR = ArmorMaterials.PLATINUM; + public static final ArmorMaterial RUBY_ARMOR = ArmorMaterials.RUBY; + + public static void vpArmor() { + initializeHelmet(); + initializeChestplates(); + initialzeLeggings(); + initializeBoots(); + } + + public static void initializeHelmet() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_helmet"), new BaseArmor(EMERALD_ARMOR, EquipmentSlot.HEAD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_helmet"), new BaseArmor(PLATINUM_ARMOR, EquipmentSlot.HEAD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_helmet"), new BaseArmor(RUBY_ARMOR, EquipmentSlot.HEAD)); + } + + public static void initializeChestplates() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_chestplate"), new BaseArmor(EMERALD_ARMOR, EquipmentSlot.CHEST)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_chestplate"), new BaseArmor(PLATINUM_ARMOR, EquipmentSlot.CHEST)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_chestplate"), new BaseArmor(RUBY_ARMOR, EquipmentSlot.CHEST)); + } + + public static void initialzeLeggings() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_leggings"), new BaseArmor(EMERALD_ARMOR, EquipmentSlot.LEGS)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_leggings"), new BaseArmor(PLATINUM_ARMOR, EquipmentSlot.LEGS)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_leggings"), new BaseArmor(RUBY_ARMOR, EquipmentSlot.LEGS)); + } + + public static void initializeBoots() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_boots"), new BaseArmor(EMERALD_ARMOR, EquipmentSlot.FEET)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_boots"), new BaseArmor(PLATINUM_ARMOR, EquipmentSlot.FEET)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_boots"), new BaseArmor(RUBY_ARMOR, EquipmentSlot.FEET)); + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/ColorTorchBlock.java b/src/main/java/tech/nevets/vplus/blocks/ColorTorchBlock.java new file mode 100644 index 0000000..80516b0 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/ColorTorchBlock.java @@ -0,0 +1,46 @@ +package tech.nevets.vplus.blocks; + +import java.util.Random; + +import net.minecraft.block.*; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; + +public class ColorTorchBlock extends Block { + protected static final int field_31265 = 2; + protected static final VoxelShape BOUNDING_SHAPE = Block.createCuboidShape(6.0D, 0.0D, 6.0D, 10.0D, 10.0D, 10.0D); + protected final ParticleEffect particle; + + + public ColorTorchBlock(Settings settings, ParticleEffect particle) { + super(settings); + this.particle = particle; + } + + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return BOUNDING_SHAPE; + } + + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + return direction == Direction.DOWN && !this.canPlaceAt(state, world, pos) ? Blocks.AIR.getDefaultState() : super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos); + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return sideCoversSmallSquare(world, pos.down(), Direction.UP); + } + + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + double d = (double)pos.getX() + 0.5D; + double e = (double)pos.getY() + 0.7D; + double f = (double)pos.getZ() + 0.5D; + world.addParticle(ParticleTypes.SMOKE, d, e, f, 0.0D, 0.0D, 0.0D); + world.addParticle(this.particle, d, e, f, 0.0D, 0.0D, 0.0D); + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/ColorWallTorchBlock.java b/src/main/java/tech/nevets/vplus/blocks/ColorWallTorchBlock.java new file mode 100644 index 0000000..4f6390a --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/ColorWallTorchBlock.java @@ -0,0 +1,110 @@ +package tech.nevets.vplus.blocks; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import net.minecraft.block.*; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Property; +import net.minecraft.util.BlockMirror; +import net.minecraft.util.BlockRotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.Random; + +public class ColorWallTorchBlock extends TorchBlock { + public static final DirectionProperty FACING; + protected static final float field_31285 = 2.5F; + private static final Map BOUNDING_SHAPES; + + protected ColorWallTorchBlock(Settings settings, ParticleEffect particleEffect) { + super(settings, particleEffect); + this.setDefaultState((BlockState)((BlockState)this.stateManager.getDefaultState()).with(FACING, Direction.NORTH)); + } + + public String getTranslationKey() { + return this.asItem().getTranslationKey(); + } + + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return getBoundingShape(state); + } + + public static VoxelShape getBoundingShape(BlockState state) { + return (VoxelShape)BOUNDING_SHAPES.get(state.get(FACING)); + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + Direction direction = (Direction)state.get(FACING); + BlockPos blockPos = pos.offset(direction.getOpposite()); + BlockState blockState = world.getBlockState(blockPos); + return blockState.isSideSolidFullSquare(world, blockPos, direction); + } + + @Nullable + public BlockState getPlacementState(ItemPlacementContext ctx) { + BlockState blockState = this.getDefaultState(); + WorldView worldView = ctx.getWorld(); + BlockPos blockPos = ctx.getBlockPos(); + Direction[] directions = ctx.getPlacementDirections(); + Direction[] var6 = directions; + int var7 = directions.length; + + for(int var8 = 0; var8 < var7; ++var8) { + Direction direction = var6[var8]; + if (direction.getAxis().isHorizontal()) { + Direction direction2 = direction.getOpposite(); + blockState = (BlockState)blockState.with(FACING, direction2); + if (blockState.canPlaceAt(worldView, blockPos)) { + return blockState; + } + } + } + + return null; + } + + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + return direction.getOpposite() == state.get(FACING) && !state.canPlaceAt(world, pos) ? Blocks.AIR.getDefaultState() : state; + } + + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + Direction direction = (Direction)state.get(FACING); + double d = (double)pos.getX() + 0.5D; + double e = (double)pos.getY() + 0.7D; + double f = (double)pos.getZ() + 0.5D; + double g = 0.22D; + double h = 0.27D; + Direction direction2 = direction.getOpposite(); + world.addParticle(ParticleTypes.SMOKE, d + 0.27D * (double)direction2.getOffsetX(), e + 0.22D, f + 0.27D * (double)direction2.getOffsetZ(), 0.0D, 0.0D, 0.0D); + world.addParticle(this.particle, d + 0.27D * (double)direction2.getOffsetX(), e + 0.22D, f + 0.27D * (double)direction2.getOffsetZ(), 0.0D, 0.0D, 0.0D); + } + + public BlockState rotate(BlockState state, BlockRotation rotation) { + return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING))); + } + + public BlockState mirror(BlockState state, BlockMirror mirror) { + return state.rotate(mirror.getRotation((Direction)state.get(FACING))); + } + + protected void appendProperties(StateManager.Builder builder) { + builder.add(new Property[]{FACING}); + } + + static { + FACING = HorizontalFacingBlock.FACING; + BOUNDING_SHAPES = Maps.newEnumMap(ImmutableMap.of(Direction.NORTH, Block.createCuboidShape(5.5D, 3.0D, 11.0D, 10.5D, 13.0D, 16.0D), Direction.SOUTH, Block.createCuboidShape(5.5D, 3.0D, 0.0D, 10.5D, 13.0D, 5.0D), Direction.WEST, Block.createCuboidShape(11.0D, 3.0D, 5.5D, 16.0D, 13.0D, 10.5D), Direction.EAST, Block.createCuboidShape(0.0D, 3.0D, 5.5D, 5.0D, 13.0D, 10.5D))); + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/LavaSpongeBlock.java b/src/main/java/tech/nevets/vplus/blocks/LavaSpongeBlock.java new file mode 100644 index 0000000..85da91a --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/LavaSpongeBlock.java @@ -0,0 +1,81 @@ +package tech.nevets.vplus.blocks; + +import com.google.common.collect.Lists; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.fluid.FluidState; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.tag.FluidTags; +import net.minecraft.util.Pair; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +import java.util.Queue; + +public class LavaSpongeBlock extends Block { + + + public LavaSpongeBlock() { + super(FabricBlockSettings.of(Material.STONE).strength(0.6F).sounds(BlockSoundGroup.BASALT)); + } + + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) { + if (!oldState.isOf(state.getBlock())) { + this.update(world, pos); + } + } + + public void neighborUpdate(BlockState state, World world, BlockPos pos, Block block, BlockPos fromPos, boolean notify) { + this.update(world, pos); + super.neighborUpdate(state, world, pos, block, fromPos, notify); + } + + protected void update(World world, BlockPos pos) { + if (this.absorbLava(world, pos)) { + world.setBlockState(pos, VPBlocks.SATURATEDLAVASPONGEBLOCK.getDefaultState(), 2); + world.syncWorldEvent(2001, pos, Block.getRawIdFromState(Blocks.LAVA.getDefaultState())); + } + + } + + private boolean absorbLava(World world, BlockPos pos) { + Queue> queue = Lists.newLinkedList(); + queue.add(new Pair(pos, 0)); + int i = 0; + + while(!queue.isEmpty()) { + Pair pair = (Pair)queue.poll(); + BlockPos blockPos = (BlockPos)pair.getLeft(); + int j = (Integer)pair.getRight(); + Direction[] var8 = Direction.values(); + int var9 = var8.length; + + for(int var10 = 0; var10 < var9; ++var10) { + Direction direction = var8[var10]; + BlockPos blockPos2 = blockPos.offset(direction); + BlockState blockState = world.getBlockState(blockPos2); + FluidState fluidState = world.getFluidState(blockPos2); + Material material = blockState.getMaterial(); + if (fluidState.isIn(FluidTags.LAVA)) { + if (blockState.getBlock() instanceof FluidDrainable && !((FluidDrainable)blockState.getBlock()).tryDrainFluid(world, blockPos2, blockState).isEmpty()) { + ++i; + if (j < 6) { + queue.add(new Pair(blockPos2, j + 1)); + } + } else if (blockState.getBlock() instanceof FluidBlock) { + world.setBlockState(blockPos2, Blocks.AIR.getDefaultState(), 3); + ++i; + if (j < 6) { + queue.add(new Pair(blockPos2, j + 1)); + } + } + } + } + if (i > 64) { + break; + } + } + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/blocks/PlatinumBlock.java b/src/main/java/tech/nevets/vplus/blocks/PlatinumBlock.java new file mode 100644 index 0000000..5d0ff84 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/PlatinumBlock.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.Material; +import net.minecraft.sound.BlockSoundGroup; + +public class PlatinumBlock extends Block { + public PlatinumBlock() { + super(FabricBlockSettings.of(Material.STONE).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.METAL).strength(30, 1000f)); + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/PlatinumOre.java b/src/main/java/tech/nevets/vplus/blocks/PlatinumOre.java new file mode 100644 index 0000000..c9fb578 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/PlatinumOre.java @@ -0,0 +1,36 @@ +package tech.nevets.vplus.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; + +import java.util.Random; + +public class PlatinumOre extends Block { + public PlatinumOre() { + super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES, 3).sounds(BlockSoundGroup.STONE).strength(3, 1500f)); + } + protected int getExperienceWhenMined(Random random) { + return MathHelper.nextInt(random, 3, 7); + } + + public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack) { + super.onStacksDropped(state, world, pos, stack); + if (EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, stack) == 0) { + int i = this.getExperienceWhenMined(world.random); + if (i > 0) { + this.dropExperience(world, pos, i); + } + } + + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/RubyBlock.java b/src/main/java/tech/nevets/vplus/blocks/RubyBlock.java new file mode 100644 index 0000000..21a1e2b --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/RubyBlock.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.Material; +import net.minecraft.sound.BlockSoundGroup; + +public class RubyBlock extends Block { + public RubyBlock() { + super(FabricBlockSettings.of(Material.STONE).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).sounds(BlockSoundGroup.METAL).strength(5, 6.0f)); + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/RubyOre.java b/src/main/java/tech/nevets/vplus/blocks/RubyOre.java new file mode 100644 index 0000000..7a7a2c6 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/RubyOre.java @@ -0,0 +1,35 @@ +package tech.nevets.vplus.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; + +import java.util.Random; + +public class RubyOre extends Block { + public RubyOre() { + super(FabricBlockSettings.of(Material.STONE).breakByTool(FabricToolTags.PICKAXES, 3).sounds(BlockSoundGroup.STONE).strength(3, 1500f)); + } + protected int getExperienceWhenMined(Random random) { + return MathHelper.nextInt(random, 3, 7); + } + + public void onStacksDropped(BlockState state, ServerWorld world, BlockPos pos, ItemStack stack) { + super.onStacksDropped(state, world, pos, stack); + if (EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, stack) == 0) { + int i = this.getExperienceWhenMined(world.random); + if (i > 0) { + this.dropExperience(world, pos, i); + } + } + } +} diff --git a/src/main/java/tech/nevets/vplus/blocks/SaturatedLavaSpongeBlock.java b/src/main/java/tech/nevets/vplus/blocks/SaturatedLavaSpongeBlock.java new file mode 100644 index 0000000..47413da --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/SaturatedLavaSpongeBlock.java @@ -0,0 +1,61 @@ +package tech.nevets.vplus.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.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +import java.util.Random; + +public class SaturatedLavaSpongeBlock extends Block { + + public SaturatedLavaSpongeBlock() { + super(FabricBlockSettings.of(Material.STONE).strength(0.6F).sounds(BlockSoundGroup.BASALT)); + } + + @Environment(EnvType.CLIENT) + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + Direction direction = Direction.random(random); + if (direction != Direction.UP) { + BlockPos blockPos = pos.offset(direction); + BlockState blockState = world.getBlockState(blockPos); + if (!state.isOpaque() || !blockState.isSideSolidFullSquare(world, blockPos, direction.getOpposite())) { + double d = (double)pos.getX(); + double e = (double)pos.getY(); + double f = (double)pos.getZ(); + if (direction == Direction.DOWN) { + e -= 0.05D; + d += random.nextDouble(); + f += random.nextDouble(); + } else { + e += random.nextDouble() * 0.8D; + if (direction.getAxis() == Direction.Axis.X) { + f += random.nextDouble(); + if (direction == Direction.EAST) { + ++d; + } else { + d += 0.05D; + } + } else { + d += random.nextDouble(); + if (direction == Direction.SOUTH) { + ++f; + } else { + f += 0.05D; + } + } + } + + world.addParticle(ParticleTypes.DRIPPING_LAVA, d, e, f, 0.0D, 0.0D, 0.0D); + } + } + } + +} diff --git a/src/main/java/tech/nevets/vplus/blocks/VPBlocks.java b/src/main/java/tech/nevets/vplus/blocks/VPBlocks.java new file mode 100644 index 0000000..6bb8d5b --- /dev/null +++ b/src/main/java/tech/nevets/vplus/blocks/VPBlocks.java @@ -0,0 +1,49 @@ +package tech.nevets.vplus.blocks; + +import net.minecraft.block.*; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; +import tech.nevets.vplus.items.VPItemGroups; + +public class VPBlocks { + + public static final Block LAVASPONGEBLOCK = new LavaSpongeBlock(); + public static final Block SATURATEDLAVASPONGEBLOCK = new SaturatedLavaSpongeBlock(); + public static final Block PLATINUMORE = new PlatinumOre(); + public static final Block PLATINUMBLOCK = new PlatinumBlock(); + public static final Block RUBYBLOCK = new RubyBlock(); + public static final Block RUBYORE = new RubyOre(); + + public static void vpBlocks() { + initializeBlocks(); + initializeBlockItems(); + initializeTorches(); + } + + public static void initializeBlocks() { + Registry.register(Registry.BLOCK, new Identifier("vplus", "lava_sponge"), LAVASPONGEBLOCK); + Registry.register(Registry.BLOCK, new Identifier("vplus", "saturated_lava_sponge"), SATURATEDLAVASPONGEBLOCK); + Registry.register(Registry.BLOCK, new Identifier("vplus", "platinum_ore"), PLATINUMORE); + Registry.register(Registry.BLOCK, new Identifier("vplus", "platinum_block"), PLATINUMBLOCK); + Registry.register(Registry.BLOCK, new Identifier("vplus", "ruby_block"), RUBYBLOCK); + Registry.register(Registry.BLOCK, new Identifier("vplus", "ruby_ore"), RUBYORE); + } + + public static void initializeBlockItems() { + Registry.register(Registry.ITEM, new Identifier("vplus", "lava_sponge"), new BlockItem(LAVASPONGEBLOCK, new Item.Settings().group(VPItemGroups.ALL))); + Registry.register(Registry.ITEM, new Identifier("vplus", "saturated_lava_sponge"), new BlockItem(SATURATEDLAVASPONGEBLOCK, new Item.Settings().group(VPItemGroups.ALL).recipeRemainder(Item.fromBlock(VPBlocks.LAVASPONGEBLOCK)))); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_ore"), new BlockItem(PLATINUMORE, new Item.Settings().group(VPItemGroups.ALL))); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_block"), new BlockItem(PLATINUMBLOCK, new Item.Settings().group(VPItemGroups.ALL))); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_block"), new BlockItem(RUBYBLOCK, new Item.Settings().group(VPItemGroups.ALL))); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_ore"), new BlockItem(RUBYORE, new Item.Settings().group(VPItemGroups.ALL))); + } + + public static void initializeTorches() { + Registry.register(Registry.BLOCK, new Identifier("vplus", "green_torch"), new ColorTorchBlock(AbstractBlock.Settings.of(Material.DECORATION).noCollision().breakInstantly().luminance((state) -> {return 14;}).sounds(BlockSoundGroup.WOOD), ParticleTypes.FLAME)); + Registry.register(Registry.BLOCK, new Identifier("vplus", "green_wall_torch"), new ColorWallTorchBlock(AbstractBlock.Settings.of(Material.DECORATION).noCollision().breakInstantly().luminance((state) -> {return 14;}).sounds(BlockSoundGroup.WOOD).dropsLike(Blocks.TORCH), ParticleTypes.FLAME)); + } +} diff --git a/src/main/java/tech/nevets/vplus/food/DiamondApple.java b/src/main/java/tech/nevets/vplus/food/DiamondApple.java new file mode 100644 index 0000000..dc16f05 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/DiamondApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class DiamondApple extends Item { + public DiamondApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(8).saturationModifier(14).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 3),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EmeraldApple.java b/src/main/java/tech/nevets/vplus/food/EmeraldApple.java new file mode 100644 index 0000000..091298d --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EmeraldApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EmeraldApple extends Item { + public EmeraldApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(12).saturationModifier(16).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 5),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EnchantedDiamondApple.java b/src/main/java/tech/nevets/vplus/food/EnchantedDiamondApple.java new file mode 100644 index 0000000..79582da --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EnchantedDiamondApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EnchantedDiamondApple extends Item { + public EnchantedDiamondApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(8).saturationModifier(14).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 4),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EnchantedEmeraldApple.java b/src/main/java/tech/nevets/vplus/food/EnchantedEmeraldApple.java new file mode 100644 index 0000000..5ed0c25 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EnchantedEmeraldApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EnchantedEmeraldApple extends Item { + public EnchantedEmeraldApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(12).saturationModifier(16).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 6),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EnchantedIronApple.java b/src/main/java/tech/nevets/vplus/food/EnchantedIronApple.java new file mode 100644 index 0000000..e826f6e --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EnchantedIronApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EnchantedIronApple extends Item { + public EnchantedIronApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(6).saturationModifier(10).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 2),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EnchantedNetheriteApple.java b/src/main/java/tech/nevets/vplus/food/EnchantedNetheriteApple.java new file mode 100644 index 0000000..a7d8aa4 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EnchantedNetheriteApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EnchantedNetheriteApple extends Item { + public EnchantedNetheriteApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(14).saturationModifier(18).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 8),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EnchantedPlatinumApple.java b/src/main/java/tech/nevets/vplus/food/EnchantedPlatinumApple.java new file mode 100644 index 0000000..b8ca1e1 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EnchantedPlatinumApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EnchantedPlatinumApple extends Item { + public EnchantedPlatinumApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(16).saturationModifier(20).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 10),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/EnchantedRubyApple.java b/src/main/java/tech/nevets/vplus/food/EnchantedRubyApple.java new file mode 100644 index 0000000..2772ad6 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/EnchantedRubyApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class EnchantedRubyApple extends Item { + public EnchantedRubyApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(18).saturationModifier(22).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 12),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/IronApple.java b/src/main/java/tech/nevets/vplus/food/IronApple.java new file mode 100644 index 0000000..6737c07 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/IronApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class IronApple extends Item { + public IronApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(6).saturationModifier(10).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 1),1f).build())); + } +} diff --git a/src/main/java/tech/nevets/vplus/food/NetheriteApple.java b/src/main/java/tech/nevets/vplus/food/NetheriteApple.java new file mode 100644 index 0000000..1c326eb --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/NetheriteApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class NetheriteApple extends Item { + public NetheriteApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(14).saturationModifier(18).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 7),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/PlatinumApple.java b/src/main/java/tech/nevets/vplus/food/PlatinumApple.java new file mode 100644 index 0000000..3ee0b04 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/PlatinumApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class PlatinumApple extends Item { + public PlatinumApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(16).saturationModifier(20).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 9),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/RubyApple.java b/src/main/java/tech/nevets/vplus/food/RubyApple.java new file mode 100644 index 0000000..75a8b19 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/RubyApple.java @@ -0,0 +1,13 @@ +package tech.nevets.vplus.food; + +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.Item; +import tech.nevets.vplus.items.VPItemGroups; + +public class RubyApple extends Item { + public RubyApple() { + super(new Settings().group(VPItemGroups.FOOD).food(new FoodComponent.Builder().hunger(18).saturationModifier(22).alwaysEdible().statusEffect(new StatusEffectInstance(StatusEffects.REGENERATION, 20*120, 11),1f).build())); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/food/VPFood.java b/src/main/java/tech/nevets/vplus/food/VPFood.java new file mode 100644 index 0000000..4b54c17 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/food/VPFood.java @@ -0,0 +1,41 @@ +package tech.nevets.vplus.food; + +import net.minecraft.item.Item; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class VPFood { + + public static final Item IRONAPPLE = new IronApple(); + public static final Item ENCHANTEDIRONAPPLE = new EnchantedIronApple(); + public static final Item DIAMONDAPPLE = new DiamondApple(); + public static final Item ENCHANTEDDIAMONDAPPLE = new EnchantedDiamondApple(); + public static final Item EMERALDAPPLE = new EmeraldApple(); + public static final Item ENCHANTEDEMERALDAPPLE = new EnchantedEmeraldApple(); + public static final Item NETHERITEAPPLE = new NetheriteApple(); + public static final Item ENCHANTEDNETHERITEAPPLE = new EnchantedNetheriteApple(); + public static final Item PLATINUMAPPLE = new PlatinumApple(); + public static final Item ENCHANTEDPLATINUMAPPLE = new EnchantedPlatinumApple(); + public static final Item RUBYAPPLE = new RubyApple(); + public static final Item ENCHANTEDRUBYAPPLE = new EnchantedRubyApple(); + + public static void vpFood() { + initializeApples(); + } + + //TODO Balance apple strengths + public static void initializeApples() { + Registry.register(Registry.ITEM, new Identifier("vplus", "iron_apple"), IRONAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "enchanted_iron_apple"), ENCHANTEDIRONAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "diamond_apple"), DIAMONDAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "enchanted_diamond_apple"), ENCHANTEDDIAMONDAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_apple"), EMERALDAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "enchanted_emerald_apple"), ENCHANTEDEMERALDAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "netherite_apple"), NETHERITEAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "enchanted_netherite_apple"), ENCHANTEDNETHERITEAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_apple"), PLATINUMAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "enchanted_platinum_apple"), ENCHANTEDPLATINUMAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_apple"), RUBYAPPLE); + Registry.register(Registry.ITEM, new Identifier("vplus", "enchanted_ruby_apple"), ENCHANTEDRUBYAPPLE); + } +} diff --git a/src/main/java/tech/nevets/vplus/init/ZoomInit.java b/src/main/java/tech/nevets/vplus/init/ZoomInit.java new file mode 100644 index 0000000..f6d0c0f --- /dev/null +++ b/src/main/java/tech/nevets/vplus/init/ZoomInit.java @@ -0,0 +1,2 @@ +package tech.nevets.vplus.init;public class ZoomInit { +} diff --git a/src/main/java/tech/nevets/vplus/items/PlatinumIngot.java b/src/main/java/tech/nevets/vplus/items/PlatinumIngot.java new file mode 100644 index 0000000..08e7a47 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/items/PlatinumIngot.java @@ -0,0 +1,9 @@ +package tech.nevets.vplus.items; + +import net.minecraft.item.Item; + +public class PlatinumIngot extends Item { + public PlatinumIngot(Settings settings) { + super(settings); + } +} diff --git a/src/main/java/tech/nevets/vplus/items/PlatinumNugget.java b/src/main/java/tech/nevets/vplus/items/PlatinumNugget.java new file mode 100644 index 0000000..a1623b6 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/items/PlatinumNugget.java @@ -0,0 +1,9 @@ +package tech.nevets.vplus.items; + +import net.minecraft.item.Item; + +public class PlatinumNugget extends Item { + public PlatinumNugget(Settings settings) { + super(settings); + } +} diff --git a/src/main/java/tech/nevets/vplus/items/Ruby.java b/src/main/java/tech/nevets/vplus/items/Ruby.java new file mode 100644 index 0000000..2e05af5 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/items/Ruby.java @@ -0,0 +1,9 @@ +package tech.nevets.vplus.items; + +import net.minecraft.item.Item; + +public class Ruby extends Item { + public Ruby(Settings settings) { + super(settings); + } +} diff --git a/src/main/java/tech/nevets/vplus/items/VPItemGroups.java b/src/main/java/tech/nevets/vplus/items/VPItemGroups.java new file mode 100644 index 0000000..1029e0f --- /dev/null +++ b/src/main/java/tech/nevets/vplus/items/VPItemGroups.java @@ -0,0 +1,31 @@ +package tech.nevets.vplus.items; + +import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.Identifier; + +public class VPItemGroups { + //Creative Tab + public static final ItemGroup ALL = FabricItemGroupBuilder.build( + new Identifier("vplus", "all"), + () -> new ItemStack((Items.GRASS_BLOCK))); + //Combat Tab + public static final ItemGroup COMBAT = FabricItemGroupBuilder.build( + new Identifier("vplus", "combat"), + () -> new ItemStack((Items.DIAMOND_SWORD))); + //Tools Tab + public static final ItemGroup TOOLS = FabricItemGroupBuilder.create( + new Identifier("vplus", "tools")) + .icon(() -> new ItemStack(Items.DIAMOND_PICKAXE)) + /*.appendItems(stacks -> { + stacks.add(new ItemStack(Main.RUBY)); + stacks.add(new ItemStack(Items.EMERALD_BLOCK)); + })*/ + .build(); + //Food Tab + public static final ItemGroup FOOD = FabricItemGroupBuilder.build( + new Identifier("vplus", "food"), + () -> new ItemStack((Items.ENCHANTED_GOLDEN_APPLE))); +} diff --git a/src/main/java/tech/nevets/vplus/items/VPItems.java b/src/main/java/tech/nevets/vplus/items/VPItems.java new file mode 100644 index 0000000..02aec0a --- /dev/null +++ b/src/main/java/tech/nevets/vplus/items/VPItems.java @@ -0,0 +1,23 @@ +package tech.nevets.vplus.items; + +import net.minecraft.item.Item; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class VPItems { + + public static final Item PLATINUMINGOT = new PlatinumIngot(new Item.Settings().group(VPItemGroups.ALL)); + public static final Item PLATINUMNUGGET = new PlatinumNugget(new Item.Settings().group(VPItemGroups.ALL)); + public static final Item RUBY = new Ruby(new Item.Settings().group(VPItemGroups.ALL)); + + public static void vpItems() { + initializeValuables(); + } + + public static void initializeValuables() { + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_ingot"), PLATINUMINGOT); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_nugget"), PLATINUMNUGGET); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby"), RUBY); + } + +} diff --git a/src/main/java/tech/nevets/vplus/misc/VPFuels.java b/src/main/java/tech/nevets/vplus/misc/VPFuels.java new file mode 100644 index 0000000..28c5679 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/misc/VPFuels.java @@ -0,0 +1,10 @@ +package tech.nevets.vplus.misc; + +import net.fabricmc.fabric.api.registry.FuelRegistry; +import tech.nevets.vplus.blocks.SaturatedLavaSpongeBlock; + +public class VPFuels { + public static void vpFuels() { + FuelRegistry.INSTANCE.add(new SaturatedLavaSpongeBlock(), 20000); + } +} diff --git a/src/main/java/tech/nevets/vplus/misc/VPOreGen.java b/src/main/java/tech/nevets/vplus/misc/VPOreGen.java new file mode 100644 index 0000000..2032dbd --- /dev/null +++ b/src/main/java/tech/nevets/vplus/misc/VPOreGen.java @@ -0,0 +1,37 @@ +package tech.nevets.vplus.misc; + +import net.minecraft.world.gen.decorator.Decorator; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.OreFeatureConfig; +import tech.nevets.vplus.blocks.VPBlocks; + +public class VPOreGen { + + /* + private static ConfiguredFeature ORE_PLATINUM_OVERWORLD = Feature.ORE + .configure(new OreFeatureConfig( + OreFeatureConfig.Rules.BASE_STONE_OVERWORLD, + VPBlocks.PLATINUMORE.getDefaultState(), + 3)) // vein size + .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig( + 0, // bottom offset + 0, // min y level + 15))) // max y level + .spreadHorizontally() + .repeat(2); // number of veins per chunk + + private static ConfiguredFeature ORE_RUBY_OVERWORLD = Feature.ORE + .configure(new OreFeatureConfig( + OreFeatureConfig.Rules.BASE_STONE_OVERWORLD, + VPBlocks.RUBYORE.getDefaultState(), + 1)) // vein size + .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig( + 0, // bottom offset + 0, // min y level + 256))) // max y level + .spreadHorizontally() + .repeat(8); // number of veins per chunk + */ + +} diff --git a/src/main/java/tech/nevets/vplus/misc/VPZoom.java b/src/main/java/tech/nevets/vplus/misc/VPZoom.java new file mode 100644 index 0000000..f12cf63 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/misc/VPZoom.java @@ -0,0 +1,25 @@ +package tech.nevets.vplus.misc; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import org.lwjgl.glfw.GLFW; + +public class VPZoom { + + public static Boolean currentlyZoomed; + public static KeyBinding keyBinding; + public static Boolean originalSmoothCameraEnabled; + public static final MinecraftClient mc = MinecraftClient.getInstance(); + + @Environment(EnvType.CLIENT) + public static void vpZoom() { + keyBinding = new KeyBinding("key.vplus.zoom", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_C, "category.vplus.zoom"); + currentlyZoomed = false; + originalSmoothCameraEnabled = false; + KeyBindingHelper.registerKeyBinding(keyBinding); + } +} \ No newline at end of file diff --git a/src/main/java/tech/nevets/vplus/mixin/ZoomMixin.java b/src/main/java/tech/nevets/vplus/mixin/ZoomMixin.java new file mode 100644 index 0000000..e6f5357 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/mixin/ZoomMixin.java @@ -0,0 +1,2 @@ +package tech.nevets.vplus.mixin;public class ZoomMixin { +} diff --git a/src/main/java/tech/nevets/vplus/tools/AxeBase.java b/src/main/java/tech/nevets/vplus/tools/AxeBase.java new file mode 100644 index 0000000..fd9dad5 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/AxeBase.java @@ -0,0 +1,11 @@ +package tech.nevets.vplus.tools; + +import net.minecraft.item.AxeItem; +import net.minecraft.item.ToolMaterial; +import tech.nevets.vplus.items.VPItemGroups; + +public class AxeBase extends AxeItem { + public AxeBase(ToolMaterial toolMaterial_1) { + super(toolMaterial_1, 5, -3.0f, new Settings().group(VPItemGroups.TOOLS)); + } +} diff --git a/src/main/java/tech/nevets/vplus/tools/HoeBase.java b/src/main/java/tech/nevets/vplus/tools/HoeBase.java new file mode 100644 index 0000000..22d2ea4 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/HoeBase.java @@ -0,0 +1,11 @@ +package tech.nevets.vplus.tools; + +import net.minecraft.item.HoeItem; +import net.minecraft.item.ToolMaterial; +import tech.nevets.vplus.items.VPItemGroups; + +public class HoeBase extends HoeItem { + public HoeBase(ToolMaterial toolMaterial_1) { + super(toolMaterial_1, -3, 0f, new Settings().group(VPItemGroups.TOOLS)); + } +} diff --git a/src/main/java/tech/nevets/vplus/tools/PickaxeBase.java b/src/main/java/tech/nevets/vplus/tools/PickaxeBase.java new file mode 100644 index 0000000..e39d003 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/PickaxeBase.java @@ -0,0 +1,11 @@ +package tech.nevets.vplus.tools; + +import net.minecraft.item.PickaxeItem; +import net.minecraft.item.ToolMaterial; +import tech.nevets.vplus.items.VPItemGroups; + +public class PickaxeBase extends PickaxeItem { + public PickaxeBase(ToolMaterial toolMaterial_1) { + super(toolMaterial_1, 1, -2.8f, new Settings().group(VPItemGroups.TOOLS)); + } +} diff --git a/src/main/java/tech/nevets/vplus/tools/ShovelBase.java b/src/main/java/tech/nevets/vplus/tools/ShovelBase.java new file mode 100644 index 0000000..68f41ce --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/ShovelBase.java @@ -0,0 +1,11 @@ +package tech.nevets.vplus.tools; + +import net.minecraft.item.ShovelItem; +import net.minecraft.item.ToolMaterial; +import tech.nevets.vplus.items.VPItemGroups; + +public class ShovelBase extends ShovelItem { + public ShovelBase(ToolMaterial toolMaterial_1) { + super(toolMaterial_1, 1, -3f, new Settings().group(VPItemGroups.TOOLS)); + } +} diff --git a/src/main/java/tech/nevets/vplus/tools/SwordBase.java b/src/main/java/tech/nevets/vplus/tools/SwordBase.java new file mode 100644 index 0000000..79e9b70 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/SwordBase.java @@ -0,0 +1,11 @@ +package tech.nevets.vplus.tools; + +import net.minecraft.item.SwordItem; +import net.minecraft.item.ToolMaterial; +import tech.nevets.vplus.items.VPItemGroups; + +public class SwordBase extends SwordItem { + public SwordBase(ToolMaterial toolMaterial_1) { + super(toolMaterial_1, 2, -2.4f, new Settings().group(VPItemGroups.COMBAT)); + } +} diff --git a/src/main/java/tech/nevets/vplus/tools/ToolMaterials.java b/src/main/java/tech/nevets/vplus/tools/ToolMaterials.java new file mode 100644 index 0000000..7d1427e --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/ToolMaterials.java @@ -0,0 +1,60 @@ +package tech.nevets.vplus.tools; + +import java.util.function.Supplier; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.Items; +import net.minecraft.item.ToolMaterial; +import net.minecraft.recipe.Ingredient; +import net.minecraft.util.Lazy; +import tech.nevets.vplus.items.VPItems; + +public enum ToolMaterials implements ToolMaterial { + EMERALD(3, 750, 7.0F, 4.0F, 30, () -> { + return Ingredient.ofItems(new ItemConvertible[]{Items.EMERALD}); + }), + PLATINUM(4, 3000, 10.0F, 6.0F, 40, () -> { + return Ingredient.ofItems(new ItemConvertible[]{VPItems.PLATINUMINGOT}); + }), + RUBY(4, 5000, 12.0F, 10.0F, 100, () -> { + return Ingredient.ofItems(new ItemConvertible[]{VPItems.RUBY}); + }); + + private final int miningLevel; + private final int itemDurability; + private final float miningSpeed; + private final float attackDamage; + private final int enchantability; + private final Lazy repairIngredient; + private ToolMaterials(int miningLevel, int itemDurability, float miningSpeed, float attackDamage, int enchantability, Supplier repairIngredient) { + this.miningLevel = miningLevel; + this.itemDurability = itemDurability; + this.miningSpeed = miningSpeed; + this.attackDamage = attackDamage; + this.enchantability = enchantability; + this.repairIngredient = new Lazy(repairIngredient); + } + + public int getDurability() { + return this.itemDurability; + } + + public float getMiningSpeedMultiplier() { + return this.miningSpeed; + } + + public float getAttackDamage() { + return this.attackDamage; + } + + public int getMiningLevel() { + return this.miningLevel; + } + + public int getEnchantability() { + return this.enchantability; + } + + public Ingredient getRepairIngredient() { + return (Ingredient)this.repairIngredient.get(); + } +} diff --git a/src/main/java/tech/nevets/vplus/tools/VPTools.java b/src/main/java/tech/nevets/vplus/tools/VPTools.java new file mode 100644 index 0000000..5ee97d4 --- /dev/null +++ b/src/main/java/tech/nevets/vplus/tools/VPTools.java @@ -0,0 +1,45 @@ +package tech.nevets.vplus.tools; + +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class VPTools { + + public static void vpTools() { + initializeAxes(); + initializeHoes(); + initializePickaxes(); + initializeShovels(); + initializeSwords(); + } + + public static void initializeAxes() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_axe"), new AxeBase(ToolMaterials.EMERALD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_axe"), new AxeBase(ToolMaterials.PLATINUM)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_axe"), new AxeBase(ToolMaterials.RUBY)); + } + + public static void initializeHoes() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_hoe"), new HoeBase(ToolMaterials.EMERALD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_hoe"), new HoeBase(ToolMaterials.PLATINUM)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_hoe"), new HoeBase(ToolMaterials.RUBY)); + } + + public static void initializePickaxes() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_pickaxe"), new PickaxeBase(ToolMaterials.EMERALD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_pickaxe"), new PickaxeBase(ToolMaterials.PLATINUM)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_pickaxe"), new PickaxeBase(ToolMaterials.RUBY)); + } + + public static void initializeShovels() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_shovel"), new ShovelBase(ToolMaterials.EMERALD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_shovel"), new ShovelBase(ToolMaterials.PLATINUM)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_shovel"), new ShovelBase(ToolMaterials.RUBY)); + } + + public static void initializeSwords() { + Registry.register(Registry.ITEM, new Identifier("vplus", "emerald_sword"), new SwordBase(ToolMaterials.EMERALD)); + Registry.register(Registry.ITEM, new Identifier("vplus", "platinum_sword"), new SwordBase(ToolMaterials.PLATINUM)); + Registry.register(Registry.ITEM, new Identifier("vplus", "ruby_sword"), new SwordBase(ToolMaterials.RUBY)); + } +} diff --git a/src/main/resources/assets/minecraft/textures/models/armor/emerald_layer_1.png b/src/main/resources/assets/minecraft/textures/models/armor/emerald_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..68dc351827387af3cbcef1f442003039b9378ea5 GIT binary patch literal 2923 zcmbVO3piA1A3t(QMN(U&;xs6gnK^SY%rL}^^#po=RN2By}$qOe|=_SaFCDb zc&qUM0GRqN=7!+Uh4=*;8{zl7J*n&P$2i&I6$${DFhzIi0lRZ70l=_B%nMhB2L`YZ zOhSSM7#}66B{Cch0B#;?8H}t#l^`D#iKT2pZ~0jQC>F2@VNQWipp1jYh!-cx(a@wI z9+I>QVG0Ny?x35Rg%e0nB@C)1aZ&|K%_a=-vhcO;GnoJmL6oc51W%noFg!3A5XVUi&iGKEHjC@hGxg>XrxM5O_VBZM;N%M0+EYlN--t{b&N0{ zQz_X5T9^7C^-aGU@AF+dMDsA zZFSzrSR6SDD=|3_!{SB~6+9vtq~czK4q;-c083QN`{)45g_S6qK!vCfkwPI-oOqBk zi{`?jP>GNe3xYmC12KVEsQDC1g?LmN3kOk{pFr`F5x`3LZ@~hDCB)m{P*Cp%><2O1&Wb$DrB9lg^F_~041UZkM=VFLTR{|sF z1^9VqCSAxt7*wLbi3SttFr7+dG9V$*#n}l$sC*$xMW`e8m&nC<3&L^#nn%}|y4qna z7Ax?qYKB`U6pbHV#fib8a$&)Ut_|1(M3;Y5Kp6fk{!9e^nFk+e6Jt=E^e^h-15AMl zm5Hz%^%UXJ`rEoA|Cx9NobcDu|5@@rC;c;Z`fsEUhZTu|r6LrcsbqrA8M1Erd`JrU z|MNAp_tB&pf#c&(w;Y|j_{-?zMx{8l9G}bBf*k|+xF`8?J$W(dt-Cy8W`xbW>~YX_ z64T9~Bm53Oz|a4Xqnl;Zc7vRHZ{M*8c$_hn=|SfsCN#MT9P*XRP8|*=Pvk9q5bT4P zJdCz5`@LZj%b>%%YTBZ;<_2~vH{4vE%G#rnqfM%`=(^RtiM?lfd*2O4+OEs1%x^iu z(1RR9Yd13&uId^b-*UgcO4a&H_a!j9Vx>lZVW-+m+at9W?q8a~^Ze4+YB2!p9qhL+ zI{jv8TW5#^4>%UP?aEW@qSKmK*A{t{@rA;G<^$z-tHjZ!lk#JKT^5$6tpWp@T9dEm zu=jM!H-&xgWw>w67ss(BUE22>jACGu8~pn9QwsI=Kk?h(`3GHlES45rxz-^5zp6fy zMULmvpK1M))?RrUReEee{NTGQGae_a30;Pb{*jhDsyExez1OnhI#);ty;@PW^|s9e z=7C>3yUfka?-!Tr1W_B_x%92AxO4UAw+;T0K)|E?YEUQ3c$q1oAF9S)m(x{Z?vBcKH6>+yJz-CEs_yoo2L8b?!7!ntQjh zFyMv$&X=awrg(J$v!gv8G}kivJ=6LsjHxCy`AZY-p%L_wPA>jk_wI#m_9J*EG?Ip>vrZjc-QdsVWR3+>Id zSj)+p8jZ`1x`^mG)XJM1eegJ$sp>RYyGwI?48}ETBd_;POsUe`)GW&M?AJ?q$KA{K z4Q-4nX+805Y=haO+l|kkp0g5W#?XR2z;EV1G@TPN;aR(d|9>hhwYgi%Z;7USHL$*C zcSU~t)@j?MCx1}(CEq!g?`(Jb)dEaiB=B#?H;7DQim09ySwqgmC!Oi%hef=V1=viTH5}#5zcw_%jhh?dN=ma-T z8ddPNrFTm)=R)Gxv(rqPi)|uwtx(<4;gW5icd4Yn!gb5tCP%%f&T+Y!4Q>}+CGED! zsI!A}CHpRI)R*Yr;LGe`51Oy*PUQ?58vPl`GrukdLe+;PZh&gJQ=r>ocqxn^QknLG2oSR0hMAV8ZtbH>h~ z`ogQ$Pf~x&V9xFVeP+HqYdk$9tpB+<$^CIq{Da1hzHyoAZS4xO~De;!|&!r2zo zh4dLq)p~xwwC+6OPtQt^MCn(G4ob6;c?O~rc2=bH1aY`<3Dy2P%cjkiSpeZ{baHm~ z<=k3LdwSU2f%?vji)Cpu@1d^8k38h6!_?Qx&v!#l_<@6}Bx8$ua@~vMJEn4Ns%((i vnQc9l{bQ(s!QAC}yor+^6rNcFnZ6!Nmn}S8J$AZ4_jlOWJBVB06}{$vT`YE@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/models/armor/emerald_layer_2.png b/src/main/resources/assets/minecraft/textures/models/armor/emerald_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..872594bdf835886c0e9378f329914db45451b87f GIT binary patch literal 2184 zcmbVO2}~4M7#>t;!KIj@Eg`7GtOuyGbL>4~ITvJ$iyWJ{#){0&%(A1qJIl@hi$bfG zkkXp8L~2wN5lyT|scD<^0E40?rVUbzZLo@@6)deHL?ad>wr@E$+Talo%M5|Vr#n%Trju#GF?-3DZ+r4503)_|;0n{l%zjdSps zo4s8A=4=bIc@v{&k)%X8!AAiC7bnrM&*gNBl+S>S^HN~!pT-b)93pKpASr%>u+^Lc zrwLvTRx30pL#TAHR<9s5DqN{q0h2hP$8a4+C{diCa1Eu_!jl&Qta({Gm1oSDv<1El zh(nS*6o!?Rl_|=U3c*{15qdq~ATg3e0Rk1v-4g9X-J*Po!N`e>m-k4#;D-H-v`r|H z3_G*3Z6$*{CUzYxqalwI(;Xy7pKqKi1p<1RwrKp3es!6|rw zVW3X=>ms!_E{&!LQ6r9o{vr58~9slNUi&%O{UcK36hx8lPllCo(C#7*^i&M-JA?VV&qPwN|L1Fb?TJn`1qbcVKMeF;@Db?T zoEuPkL0`U<;Mxj7GqOy^6pLfqpw%E8N}f~Mz5HO#_nxYOYX?@meW4FKytuS>nY(NB zfwigR@9tmKwg0Am79Jt2V61q&s}NrGWWvNpl(x=3MT_JC2MtkMt+P@5Hu+G&+wYEtgxf zBDx!v4-^zY7h-P99uCMJwtuc1IJBiacHfZfVRysA`<+;ijmM z)xt+^A*|<{sDn{OS6syi3cSpU{_&FaGHB~2Z{HE%||F=Ecsela#vhH^jA ze-V3<^7@ZIYIDkaKiOV9RyRjX?z*z!W@dx0uvhMT|IGb}l_$12o9eP|x$a4YNu^&m zoE^OPptX77rxg*)=53{q4EGx2e%p!E-R)Y-6YFt*ua(_>uqJn150|>9a{fP; zZ{bQ+F8S357w^exhvw_g=Jyt?GVTn{*|_1g#Qg<>SH4wkSWt1SVto>{b$9gDwoC0L jdrtj$aro-UGIU$S(%t&KzS!Y-|G$DMJ=@rvTDbi`F{Awa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/models/armor/platinum_layer_1.png b/src/main/resources/assets/minecraft/textures/models/armor/platinum_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..76227220ce4ac34928712c72a2c6c8ab22c98b77 GIT binary patch literal 2875 zcmbVO2~-p379L!{VpXtIu?h~+K8YnvGLVD>0}5f4uv;i@nM@{&37MD#5~M=m2~_d9 z9O1YC0xFvoaYLl)!-`J|R$N+f0XG(T3L?cPf}p-XY)5 zA_W0loQ!tF#H5IDG(@Wb8iE$N8`K!CAat;Zkjhm&%Cpl|6j(0iQ6iWEx0_TV+?r!iR0~a`mCUh8Vh*qk!Tmz3X!~3y9jOT?N#$svf=4OCD99SNkC3axq+UyX$AI8tI)X<*=_sAXV9*$x za1`aDEH28R(V1L2eHbbr#d1m9`%sh~jyeGZmyW&%1uY}Sbl9JQ#W+_&YN9causj-* z5{OzQrNCn{ay>~UsR4ljJEwQ|{X9K`HKatY1TVCqJ|3{2mnVzCVXF{7!Rhg zceuWCEvRbT$k7QS){d-{a(Jj+xEO9c20RLGtUm!V7~YnDK!LxO!LYqvMgXUO&=`5H#V9AAd=>Ea~oUUI6Z6QImLO zuBAm~o(Dh5JZ!$rzO`%3kNIl7_$HfllX5g3JD*V23Ig-FA**!GX{}xRCUuxQ*sWM$ zfBn`mirw7;IM`R_du8R&@{*#NHaR z-m-eZC)X65tAa3}@v_p}uAA~+QU1H8nq8LB+)_U0sl@(-*`xxq=12P8EvMZVA2|M_ z{HI3e>vPGaoAjC7b>G;_YX*H2f1cd6Zrp}#c0%dE+v?KB)&uConcdXl@~Ppy4gtcl z=k@V7v3)dSO#@{YSt~SH9%&x!iCvUGxpd`druj#G{kN z+M>hRmrJ=&*lPaWhKD)LjZA2!u%~VI@rQjE!n2Y^LL}8b;z>oq0K_QBSo>lIM=DI% ztFn#1>3S~-fM*ILs2QQM(%NV2o42h+2iyaXG840`u0^>I2!S1p_WSF?LL_3rmQS9>5?)#I1$2|xd1e(=o>lO^8P z*{fMq%WWS(V(oW_*#r9czVGrB?)-&eGN;4l>Vd|uOh6svGn!*c(8F62~y;s>2rC@_@ED87lpkr@JYc?Niydo6` zWrVio@|<6!gx0aE+*~DnfxlcEUw?jr$MhX-bsHb1#m{yS6agtJO9GMxca-(7FSE3t zMsI3_-*)CxFM7Xfap=kxO)Xj08oSdieD}b?E8Xd?MfYc{ikO}6aZ)iY*nd{B;`IFn z>|Zr6pB;71QH9<60;y0&>5>J2G>$0uR$|Jw&)`P)gle2dc>#NSu`KqP^{PW`FHYaf5TE?3JHmkeIzNl()IR9`;&yf9^ErRrfXVP9BYs0*IQvslnk zX%}+p_TO4{^(3e0rRPTdNsm%9t)K`W!LK7lz8rd2eXy3v;@lXi8yX{Q!uPV^ad4?GmtPdC}&L#)8btmpm4Vqt-d&<-J_twuVkbl@inEZbke{p93 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/models/armor/platinum_layer_2.png b/src/main/resources/assets/minecraft/textures/models/armor/platinum_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ca99439088e3c95cfde4e294b008399be96d5f GIT binary patch literal 2170 zcmbVO3rrJd96#oq3PH!vfX=|}aGRT6@6q<42h{@QQAYs*10%^tJmCSm5+XvDS>6o$0(y z$X?*$3m4=Tu?s3#9f!=E0jIcWK;YmN26j8_qD;H>NPw3HWB)XUzyXL-p+{2v2H_HO zKAbMOcv!2VP?pdn!HGH*L1}O`H612#LWki=7@f4Xn1_NnmbOSP2Ll`y9E_F6oT3$hLt&)TCA;JT zhJiZu-SejO^n90O5$s?=F33uQO&RGFp`$32R1pEWW;1OPWrY!0-elAxAUG;P;OKIT zB}u2YuxMgAOQ960Nkkcj@Vku@l#ZhqHLe-jZzgHc?$p0il76(|Ild96`qZ*gXD&>8~9+TaZCkJ;9?>$j=Xs>;fDp z7n))H$3Ty;{`~VC5}X!>iNK?IFi2Z%;{oXd>S7QkOBSV?aq+2E5Uq#S9d5rDY;iL~!r;j5&7*^KCh*lo-R1EPugZaD9U{bLE=PR&wSEm|+gZAeihWak}2z72= z1k^6jm!pZ-_d(DTdXq7=$hPEaiC#Kyc>0Zx-%Z_?S)8-%`iQTgXI3t6zSDHpbU96) zbA6O|$HAF~#_`2F=@qKTsK^5E7xDEQbE4iaFs9Y*`L4J#_nTD-8MCi^l28*F*H`BA zB*#b0T|edTll}Y0*tU;1Y_6qdh3$LrFy*hzg-N+k?WR;C)N^~rk62S9+&3_dRQDY8 z)g5jdfy-WOAg1LxNX=?i5u36mEeg+izV}kkPdVN;eMCy(jZV3xx2x@z;Zl?5`0ced z;*$}V!;;(4<=taz=hQN72^0i|W5*qu)z7po>%Y@sccorQwePP4K+PzoHHveH**4O^&s5iTq53Xf2Pi#R? zQk~XIYu24u72Ah97X`;^eRP zj5=`ik*gso3>wl150qNzRM zH(LGTpJ%?G{GNG(reo>6L-iH^o^F*I!)m&3m)^pT`9>eSjC$b>o+3?&}{XhT! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/blockstates/green_wall_torch.json b/src/main/resources/assets/vplus/blockstates/green_wall_torch.json new file mode 100644 index 0000000..7314344 --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/green_wall_torch.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "minecraft:block/wall_torch" + }, + "facing=north": { + "model": "minecraft:block/wall_torch", + "y": 270 + }, + "facing=south": { + "model": "minecraft:block/wall_torch", + "y": 90 + }, + "facing=west": { + "model": "minecraft:block/wall_torch", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/greentorch.json b/src/main/resources/assets/vplus/blockstates/greentorch.json new file mode 100644 index 0000000..7d14911 --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/greentorch.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/torch" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/lava_sponge.json b/src/main/resources/assets/vplus/blockstates/lava_sponge.json new file mode 100644 index 0000000..8c743f7 --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/lava_sponge.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "vplus:block/lava_sponge"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/platinum_block.json b/src/main/resources/assets/vplus/blockstates/platinum_block.json new file mode 100644 index 0000000..82824d2 --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/platinum_block.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "vplus:block/platinum_block"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/platinum_ore.json b/src/main/resources/assets/vplus/blockstates/platinum_ore.json new file mode 100644 index 0000000..b3f6335 --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/platinum_ore.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "vplus:block/platinum_ore"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/ruby_block.json b/src/main/resources/assets/vplus/blockstates/ruby_block.json new file mode 100644 index 0000000..887ea9e --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/ruby_block.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "vplus:block/ruby_block"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/ruby_ore.json b/src/main/resources/assets/vplus/blockstates/ruby_ore.json new file mode 100644 index 0000000..4d905ee --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/ruby_ore.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "vplus:block/ruby_ore"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/blockstates/saturated_lava_sponge.json b/src/main/resources/assets/vplus/blockstates/saturated_lava_sponge.json new file mode 100644 index 0000000..5625d4c --- /dev/null +++ b/src/main/resources/assets/vplus/blockstates/saturated_lava_sponge.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "vplus:block/saturated_lava_sponge"} + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vplus/icon.png b/src/main/resources/assets/vplus/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba3324f840b8584134db3380a69118c6a2c70e4 GIT binary patch literal 9052 zcmV-iBct4jP)D7b=J4{nNOXX>yB@@@4l&r_qyHf?zo58jyr89I3Nd!L?jSlD-kFWNFb#A;t%-) z0tEOERz$>LhmZi45O(aucnG#Tj?*^npb@TQ+Kz4U3(i&P z*1c7A_TFoK>s#Midl&v+zXYxSFMsqTf*``$$~tOp4Vo!&sYyxugV6xz&TPW7>qxT%H*Q`>i2^ID%cz+h+}^&6M>aRHxpd;OTjRao2-4&sAYPU~qoZ7D0?#PdV!=lXlre;FZbSR~8>*fsvVTjYG&!E%pz@PgFqd9cl zK!3W2qAcN>bw~iJ1e(n@>U9s($pp7<-+|O5P98sjRm%M#E4Ap~??Yqpw=kA!LZckd1k&Z$hHOf$^080Su&L(8edGA$fT z`q%)oC_i7$zVkYMO~SjbTb1S(#xH%}@pr#`?F4a5eo@rt*9wL|r5K@EGv;s;DMx)8V5N_t!+AU4$cS=?6>lzLW z-53fXcFLl>k!I;s6cR;|Lx>+Rf2DqS1C&Z3FA4}Lj8duRv$FX0<0m#gl!S@!{W+32 zh2z>VEelPzjz*)0WA+*j{2`(|Mwmtjqlg{VYqViX1Jn5oz6#N5w&2(fOj~C^?oSSp z#4&Wk&@`c~n9x=<&4z8;j~zkVt+~*24P~Jqr9NLHu1cMUlirbN~tSCh`A7Q z2%!#hRUT%l7$#XdPm47F0R~X~Acz-vPX7?5slRWz)BRg%nEis|D(_@-jV6fQ;XX{w zK*MlhI}XA!fuS2n^Bn!rfFW-?HaxG6X46ETWoS5cm`Xz^LqutUD2{O_*urc!*h>x&#}Q1+M4cAzHISw$CVqrTIzhv$quuF1L^>}-*EHxY9l?B# zy}doSUX2lznil*xKoo>X@))LJLP`k@l0&hCVxtl=(jRY z9;AkC+9zD$yd?yb;)M$-P^faP>306kMa%u=0(fBDm|`>@BhNF6NtmXIFpH688Op4H zAvNS>0cmN-^PE{ciXv#Hj+$3vG(=$pJs0ro8hdnSe1K^Y!ZJ*xNrF7fVc8aY-EmzG zw}$SbX*QrVfobGJGc+`eCV2?0dIN2z2~jGHW)mFD1|aX(Y6g-dVUN=s!Z1QvY8Fa7_!k_ z$K`Mff`I+e?RL@eS}>tw9tDgzP1jKt1wW>~kLlbeVnUn{SLhtI

rwd44{h^Z0}o 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 z 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 Y0rAKl6JJi=2><{907*qoM6N<$f;|=L6aWAK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/block/platinum_block.png b/src/main/resources/assets/vplus/textures/block/platinum_block.png new file mode 100644 index 0000000000000000000000000000000000000000..e3fcec2a022495a39fef5467cf898446c4580160 GIT binary patch literal 1566 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 P00000NkvXXu0mjfRVO%8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/diamond_apple.png b/src/main/resources/assets/vplus/textures/item/diamond_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..2f22b54df52821d2c66f73dc4c3c4ba02f88ad40 GIT binary patch literal 1726 zcmbVNeQeZZ81E9<2X1D81bWXLP-F`)Dt=&z$|^)7Nb%aJ$_tIaK>eUW3cInNPM*O~Npxcy>>SCd zEC@=K%^FzWTqHZkC%fPj{O<-soVl=w3Qd1#X z&()%=q5;%yao_@FbD~8q3+1qpR>x|TCMg#|Itj{(lN3Wb7<&<#crd6<69Y`0=h=iV z_~piehM_V95s5@B5vxVf8VJhef*dqK(>O%ndMs@4Q9P^{CK)_H7c@yVBqfZRjJ#iI zGTa!nbj}4?P0@z+M3`W}h$ycTl!Y{1iUUOA0^gvYb+(8|6Eo8;OA27p?nZDj@2Bt~6-^DBl6iEHu4Q8CC=go05?XHG>KCbPLn>`%8*XRYR5@CLy~h) zP7$R*>>eoPBT0rL8JpuSC`=iVH~0sFMS%$@n#@CoC7Evkgc@$Z&{P;1RtYH@R1B@N z&foX4Y^|mQq!2vN>nh4nZ#nCrTn-0LTd26X9LIRWy1|D9;PtpM7#xcvi3~3~0p+yQ zI1P9a_xo)DoVPigxDD6@J6}YTg42nF2|9@qfzKXc89IiB(8K{P`Ofc^sh*)A3ie~Gt=X(nwi{u>(&o{o^H83y5>;l)V{Z`x99ffUC8gqLr?eiR#m^S1;272 zST(Zk$CksFSIuVmcJ54DH@f(v&J(TYjH9;L(l3Uzlj+CgyiE{vl@3Q936*bd;gf6xqBkxbN9@k$HKG?J5Id*1@?LRv{y|@2-S^kZQ=dX4z zUAH+`QaWUi*&%<~+ZNio_0SA4Q|b4m zdKC?z4l9ETl)V;px~vpqCvD8bC{0o>f~+Md8%|Oz$*>M5ntL#)O%tPRlkd@-F8Jlf z;)bEJ1d&RmtSOsS(P9MUazPH7plKW;aJ^SH_%tr-)p-UV&;?CW4M~wvlaY@o-G&>3 zmae*xR137So(mHU7?I{xg0hmPOIe^O6mV*{mdGj>1p*{M63B)Qu~Y%8#uY=+~4?1DFF}krfm&qpwY`vE{4HrE0r~u~I=vWy@oGwj)T9C*bphYo9$bO6~YC zRJJg1;DzPVucs>(Kd}Ss!gi9Kd1rdouwB{Mdd7247jSlwW$_65(ctEnxQbt@KHc3v z#@v?)EY9w}Joo4MtM2=;m4)EDhY!6mHBwh}XKFa`{rr1}tM|Q9R#R4UWMSd%5BA&^ zKHWU=7(d8wSyxq~UKr0D-}gn(_ghEB$n3?FFZK=1UMzXOc`sxFg5fCi=$5raHGoYO6#Kjghj<;dQp z7`E&3e5Tw|`6}_brT$dI%V&1>`43vUuqOv+PCZvtF+e&Nzw7g eZ;s5j|7iJa*U|lnl8-lHJ&IJ7Ahp34<)TIi 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/emerald_leggings.png b/src/main/resources/assets/vplus/textures/item/emerald_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b08fbea850572b97e8e35561e3bf5da74f4780 GIT binary patch literal 1605 zcmbVMU2GIZ9A8WerC35!Y#K0OSrnD9w>#Inz1vCGa=k0`l&!T~puUjK?atk8?sjL{ z-S)0EAtFIj4Uk}K3^9lVA8Z3_p-e;_)owEJFh8D>?RKbA4a-|t|U z#&#n$FJOH4uuj5jg;)kk~10WrHG+1u-gsPF@61lwdf*RzHqPbMy=xOl+^pqC17ld7cdg zp;#;iik$)CWCbA0lp`nvgFHp>?wIAF5^uSiY77bNYK~!h2C-P55v9q9r*Kr$iV3D& zr?uRwo2bKt60!vl5Pg%%KwYcj>=CC>7OraoE?^T|o=dTyj*~RbkR{J!EM(nNT?DoPc5IP>xDcSfu$RM^J?T4G2_cl&n)|u0X zC-*IX`uF*(yI<^hVsg0q%lV(d%p2dfPJVO0Y1F+k@%8rM{a^HqewfZ&Te!Gle*?-N zI&dNM+4Wrj&!;i*TR76p0l%&Q#O);d=rrOxXAJwLb4R~i?p$2X2BzNwe zd%yGe&OPVMP*bD7wB(Tz48ux;0betkZPq9*Lhr|}uL@||s0H>K7IyL-%?n~m zpic*T`WnMhU#H}jiS66)x)hHTB!DU4sYF~g_>_l8>*dkf+NKFS4KX`CM7?DYZwocy zUZ?}yMRBCWI&1M7H^p*J#=%wNc7}D+OfAhiNQUJZj(64I*@r;ZbUDH|`*vn+p)U^+ zGfj=B>0~lVB^?yhqcrPwBOP|yZYL3fGJ8|(U#NaRfzWUqBI^Wh;2>F%5lP1B1f=Mw zag$C_mSg~Aw@Z|B@;)eaTPcu}m;a~yZe2koD8%ntk5!mf?(hM{K)2ePEuB4}E4zv- zcsgBpL9)ugLrB*B1H>S+t=x44GV;k7KuZ53FETI#M$Dw3gZe0n)*bVXM$Xe#!De{S z|D>2cTT|RQIO-VIGT*AuN50ts6?HfrwX*Zh6H6FYur=tb57)kV;^@q-!g|~5b3>ee zc>K~?VWgu>>UyKNb*Wt{J6m}E*TUj$-i7-Dzm!eR%-9xQvTYcw;67KXUKP5)=0kse zH@!S27M1t(L{?Uhk8NrJl~ao?rPY@o+SFCGe|U1^&+ko~3@i^6p7X!#pRL=sZ~j~J z#sPNAfj_QnsGRsAd=kUn?myK3B-U~B!o^EhhaO+_wLG)>+|{z8wgzICIBlWSP z!v$YWKidCk&pk($=L>DnTo;Bw$_>)`hb!Kn(V;^E65M~jkA zT%>P3VDpz7qrtuHTRwX*vUKL$h2inPu1r0Bga3Nu)EA$)uATnv%V#UacdDJI4-f2$ zJYRr+G%)(gt#{v_J92Ysuzj|jnq4^7vT|xac5wW)+Q|=hj#&SWU_+yCdPm2=--!%8 A5&!@I literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/emerald_shovel.png b/src/main/resources/assets/vplus/textures/item/emerald_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2d738c93c8f1d8999beda1d7f8036f62b2d808 GIT binary patch literal 1648 zcmbVNU2NM_6n4dkx}u_@vQc1T#$(gQ=GaagC-$0_Gzo1a5~3{90!XEfeUn(ReO=pa z(xN>u=n#{J#wtLtqOpew6*fRj1yoj6{vN2NO+%V0kPr<|fF^-}QEdW^>-?#M!Ne?G z-|Kt7^PQi2&hfL!M1OnRU2PbKwZ{e`DKvLDqt%7p8-BeaqG`1;@Q8(Bw{$wA1$$+x z3&U<+tE4k_CjO8hLCr17Fbmve%|K`j>+UTZqErMno&|YD4-!9pc#6OkIY{jC#p$>a z1_fnc+ypzv6KQF@DDg7U+kB0)e%{S+EbZmC;~tvfDLOzgUXo@6niG6}y#5eKn7 z3bt(s6jdsf+$FCYnt6)hdBowNJRTAuNNY^D#WJZ|8ygG}U`eK8*b3Bfhf&PJ5j#jA zOKUD@Mw3>z>S00wqspQ|F>cy%sS1>(Ce9c!)v9t?qJRoCpxYM0GEJ;efHt%W@L#B# z$5$ypp^e9zI<9GprZrVqc61cEQ4h#9(N=oQ08|QCaKw~AbQGDn(ecI*!X^-HXr>`l z8yA&qn2dXn*Z7uQiY~*FwRMF6h=?`_5+2$^lMF*LY?|>4Oh8~blJ*HSU4zDhHs2(J;sG97lTGOx4_YT!`tGE$R}8MS=thj$2V=f#bb^4ft7-@nvaJe-6oZopB;aF)$hg+7|i4(O=EnW&YmenJ_-uof&938e%3k4_#*eD=WY(X&|Y z#J=`PwIiB3xA)le;11VQOPxy_THB(Z^y0=gCezc>x(9!{^TJD&@7LbyU0lGs$M^T&^yP`Od>0nmzRxC`7kwo90a;(G1VyJpuuwe7gu zV$d771egkvEX&3RCSS~mFJIK@771Y@kt|4viGDCTYlL7EBBte0e1f$OthWHtW89?ei--hOh$1rU`SAQBwIF(k{9tS`m332Z=M{UpN+3{!z7prWaR|AYnv zh7-If(kq}SWfaMgZVOgqL4}qsA%itt$^hClG6Y_CqY!~PXd%H!JMYTQl)Gadw=mt@5n`H+qB>YDogVOFb(Yic za=HkT?3RH@$Zq_BLR7c4JN7_@HlGEE^gr^V0<)p&tw6A>h zL22^ScYeQga>sNix!^hNTwt(C^?A;BClzYpPQO5eg0O-yZ_=@AIB`m zw|eHMHhzZf@?I|8Hxl-&qUK)x`jelU=JD~z0!t^>kFnhTi|nH_*TxplpL%aJd$@G& ztEHR6BaP=qe|=+vaqVR=zx3R;=9}+_k3|>Ojem&GHXm7ojWr(Jz5bz=9`~mZ@9c`c I8}1wa6S1f%UjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/enchanted_diamond_apple.png b/src/main/resources/assets/vplus/textures/item/enchanted_diamond_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..8200e1836757eb81c52e4aaa71f77402fb1b9d73 GIT binary patch literal 1726 zcmbVNeN5D57%$1>!@)w7=t3NJWr;J|YkS9?T;(RvV{nch1TPam;?`^5<0{t=+v43p z)Xjx3XW$Pcix>zcHt+OQ_+0wS3-XhUgYt*upG_Ob&PEh>75|LDhMv$U45tZZXfr0u#ohZAopH82{P*HGU>+LMb zstgE<6^$BL*XZ@}jrF`!z}7s67DZ@CAOV9zBT`7#>4*!9@zQW?P7@d!gBbNLti&{k z*0R+oqi6uNTO2q~6%?YYoEFMaK-wHDQ7cI~39^u&Y&c2Lq=UAvLK7DTt!YAlu5mw~ zum!(dSkN$3njpgAuqAA>C|VssIh~NhN?5HpMBsW-n<`ZlLp;s2ZXoqb4Kg zR~if#20e{SkkllttS7<*14cwRm7px7DJcdN_#{qk&_Xfe0#AStkbrFH5KASoYEUs0 zJ*fN(b#nP012D8Ko3!yjUnD7MLO05`Lm7#HJP@t>qADP2fUY!XJSf`^-OM-Ds5GMi z&QLU;qJ(A-s(RLC)CyIj&#o6`K?&>2=WGCO&HygVN?J*rqHrtev)X8~kha-z(oU0P z9Lg$!7>M2nrFO zv(26NFif?k1jGfRvWFbzHe1PZuLcm`Tmkam16~4htf!Y1S|J+}tiLeB@&?EDhg=yvv zT_Ni5RHKQ~SqHWyMj;W6r3=mRW*N9J-aLOGV2Nq*ks}bN4F>@v{g1qe!*nHJggFhA z)WK*yH17!LJYg1WTnBN##Ms)L;+}=Wj$saytqOi5n;np0htpsyJO0)V6hTtF9(Rea zu=UWsf%=b&b1v*!hIQZUw=`!y&9tO0*}OV^Y+x7j)!!MDJrlJp{e42_yq5l_o>|_# z`?ZO&i&x(1ee4=N-R-HIp4fEz_V<6DZMr(L`e4Uo``b5Kv-@%`<+kOZXM1`oy)SLX zuk8<34sZRj>Cn{`Ga0^}J5$zY3x{5HT6g6auYKA-gxs#{Z;<`J&Rsorbn5+^J7zc`!1H|-W-4N zhpxqIH)V@Tn*`F^q%V3}LR+>RoF=9#{GQ_*Mzi0oUNBPhm+zx(#qPSm#1x|Uioq-v*_OLBj5ccJIn-qqcy>5leTTa>lA>Pp1l9y<8@-(md zKwJ)FG|-Z13X7R8(IXLCAHr+X93n^pL%`F?grak4FOlWt(Ab=&2s{fhy1YcaX%KJY zL%0uW0C!qhQe+%%+~u({tb?|*58^hO@ldpzV(cW%a5T#~U3l&ykTp$;a?SpSbGFcz zmxvpN%28A*m9nPnR;a}&#^XU8Hp*rr5rWkF6hlapie8;(@B>}cWYv(Nf}4y&1ojwS z0(rVBA*mK<6+IUw6fi0+s1#$RO-WgxBo=ULkCw<9mqZFAKoTg1j<8GttHz-L^*H<& z>ca9>22f~uzF_0Jz9f?c6S~pZi)7>ia$U3@?o$EP40PC|iJ-9;xmj(hQ8}Lm1OsYe z2ow2(3gunKZAdk~rBzlWn9}cGvjO-819%A=ZKFwsA#HTnX6I-RXJ<*;$%9Gt^*6%?h6BpAXC!IH>Dp_UYoU^ywo0HrE10xyJ-^T7nvkYVJVeeHbE z=L=~tDkso_-n^{=4>tN(#>29t&B|om<#{fs=!T$(An5lJC^%MGmN=31IGhX+$f(C1 zAz9JkCf#KNv*(5lc!q1gcibvO;RGT&Zu1;dK!gZ}!k`oGJCk{ZIf0X8C-kF{?>{m9novy#D8@RgZvUmjlXlV0Ge8n$SpY9qs z$lj9)F3#?{H23GZ74N;o@{@*$)MrSXac(H$Y_Cm??B?oF;9sAp>`mWe#Cg%ry zXQO+SWBk&^$s@hd5`OO7c%t>yN|5A37)M zMuwNZS^oCzfv1lDy1_N(I`L)nXnSQH^hS=hPxOx;oa!vM?CTgFbWOL0{!n%=m1Db? zV#Ll%^O<*U@^mb#M-FQ4AgA2?v?CY~6YIr&^s#USlm{I321XXv)q#(run4p{zL fesgrb<44P9JCE#3lzhC={HX*RoBUG^olpM*GDSu@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/enchanted_iron_apple.png b/src/main/resources/assets/vplus/textures/item/enchanted_iron_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..c26b11d6f536b0e1cf2d0210b3f153a9477bf54d GIT binary patch literal 1679 zcmbVNYitx%6rMt=r4LggmP(=>2CULJJ9lPxr@Ld<+U_iLjazEF39V>kI&-(3?9SX_ zW|n;<6dyq&Nuw$JDK_E{TeTQs6G@bo^oOLWM8yZ95+B6UG(e(>LWoAKcecBmLQo=; z+_`t|{myqD_nb2?b+m7(DqmMl5JXkDP3**TwKK|Y!|%G^79~8bGTM49f~dID870KQ zky?T%tx==hc6a14K}MQOQcy2+r8NVi38JYvZAfw)+GH>6Q}qD#%j7ggs!D*`=8b@e z5rq9}Th@eK+4iWMjmv(8YJQk(N(-1kgSJGbwS;a7=>V1E74X{GW+*ZTvEu=%#ZgFh zM>@zLG9l@8@wCi(d}O2F#qu8D<{uQ+8XIABa#G8onc9G7xHMK0ouq?yPmS7Zhzpayl@!dSM5HTsc_tbX(_ z)Wzd#6yVTCB1IiHv_;d3Dl9v+3%ijI$PLj}G-E)f6Iv)~$}qGGo4LX9#t?!glx$>1 z5lR#;s-s{s$ziX_2ezrYf>PF|Wdcx?Y#5+8zyX?NX%0j=w*Y(s>!X2J0AL9kL5dp7 zTnA;N0AQTp^Dy&nmzd<2=5`g1m_2q>};#dF6k~Z#7k1f>Pp^d7Q#@az|)WEqtq)eCc$- zo%vNlC3EQ_NU~D~0ZMl6A1YLSTfOB7EYYU=AtwEgyjX%+C}yW56Snl>Xx%jL7;HS_ z6zq~8%=Iqj&XyH-0ggL{vn;kM{84OnP{$q4#I5Yjp4bZnQBoHcTcWgH-fI{=vF9Rn z`{?OSv$gw)uaZyw{L#zI{UcAFIlHFSw|nt-en(HuGhLZS-#Ae7&e8BJyLo*4WO`!# z)ZmJ^mTkKCZEgF-WA!t$SF-a1)7Iqo#1LD5x6Cbc4qZAnrmma1+H~kt<*z@iJU24; z*TBk+6Uo}%AFp2CJ$<3-!$-dK%)fHHv}9mlzVh{>^)v6+y*u_v)2ZQeBl2qt-!+d1 zEAH!#AOB#_9S!tbU%YxI8~p5vxskam*_Mg5la*uY+0~)FQ};A5?nVlb> wPmVTj&m4HReEr5%cU6D;5Vz*=pI`q`IwT(6`uWo*Oy`#o4z-I%T6aA64}Z%v>;M1& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/enchanted_netherite_apple.png b/src/main/resources/assets/vplus/textures/item/enchanted_netherite_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..4878cf92d206905f3f2c6727c16f8690e2bd25d2 GIT binary patch literal 1705 zcmbVNe{9rL9PgNHH-4DO5C{KIOHhXP+TQJc)zxvko4YRDxNPTk7!&EW@3!WyeWmT~ zZkw28gam>l8jU01BvBB5WeEw9I5kt^h9SX3jEEx&4iiU0hGucdA8x+h?k+=7B28Z3 z>wBN?=lkP*zu)eQv^1?;wr&}QVJrDiuocaf*07bK_xhQ60ZkQJXuE-7%d4zWf*pFj z8pD>Zk)ts)7T(H=P_YXVj01aC(GVKL>guzaASQu{$3ds8a>R{~M+sb(IHJQ9ro&nQ zbjhJ!9klhfM8)2u=#z;0C-J&0iwG283V2pYsRoswrei)!0yA2m(XYWzCeKid&3A9Hvc< zK$b4JplC%})yRhl1&qoH8pYUY%cUGp5{o!3t*3IzC6NLtpa9i05SA%owJvBvqYM5E zb@BK%1t_%Pa8bt{ZBdk>3d3ydMsDN-a!0fg?a=_$3JjRmMbOxd%-mpkqp<-U2qx5{ z5T*(j6)BjEJCN7-rVd$^V8*CfBmjbf2{^(*J7|(&NCy*T+-$9bW!xm~VrhB-8itab z==mqq!_rRHaXS>Hj3k)CUBQybCZMhe$YEI#Isv7rodjMCBO8Dzs3XP5I_KhjJ`jlL zFd?VVfzjI3fb)$3H{)}=Nr#=unHvtXylR+&Dgr*p5hyrzS(ezi822Vb4@1T!(MvKy zEg-$X<0XB9lNNo9)16>E1^FNp(^d);9zfG4>2@0uu=CKOX${jW&8|YSh@}<)T zcIHTv0vvS=Yguen=%d)|fQmYtj#}AkBjYNDmH7CeKk7Yjtc`=G>B?Qh zBVSzku&Vj`(S~^F+W7p`#9ZIe6}PsmjqKn3!_wi>i|J5h>8YQef8plz8#hkxwcWh< zmQgKs_?w%TeD>bREYtDFPwji^&V3o{`+e>af2OX#>FaN24<h67FJHSlv;0|Gb&@%}^~Bl1gWM>F)zt93@A?(8Z=?Ob^S72v^7za9%3bNw zPruo;-!*XrVq3O9y~6f(<)I(tsiEnysqgS1s=r^tKQEz1zbeNbeAIS)vSQ?F2^LY- z9f_<-Mh}mlIg^Su*xGlVf8x1SdsfBX36JrVf2`tc{J^9+>s)W{I9c}4n}bt(U%W8* z>l{&2BYbe|d#QI~w=pntY1c3B!&8@jyFa`7MEB(f>gzXSC+A1XA3Hbw=g>ShHSq3* T_OdF!^)ulcTY|$4I|lv&neIVi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/enchanted_platinum_apple.png b/src/main/resources/assets/vplus/textures/item/enchanted_platinum_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..cb85bd874588acf6d76b47a0c50a6adc35f2d2a0 GIT binary patch literal 1714 zcmbVNdu$VR96!c}Fhh`)A#O1qH=?s}y+_w>J?UQUT$|82yM~Q`kK5g^?b-Hzx4Y}w z4J8OFE^G!(76=()KuwTr2FR8yi_T@ngy=A4@eh(|Ae+g2&Sa5I48z}bZ8Hf<+}13-{0$MY^YzKUzCqw*m|$W?MLH7#=CY6`aU*)n@7Vs#j{7lum?@Xy9ztmw*|xU zHcNpPy~VeS6JX53i?9_~k}(CLF>Gg5QsIRN(D7Cfl4K__H!@1#lISFwZ9dwkxIkF) zbgH1KvmqdKMg)gQR8`_TlN=(50iDN_v8b$ZNhguw<^XTLlon1AP$ydSrQ>gtwYxNBq?hp83s4d1XWUW3Cg&^$hX3{?j(?= z%O=E>EUm1i-Gm%QC3%HnEVN-#3MdL$oDx@~DdD0(fhdRpS=SJj$zqi-)S(uJ|3aNT z{)YhMTAwc~Q*N)UIF|1KImkM|tssRY2 znLssWRK{6kHD1~*$s$Z>Pp-HC+`JB)1WU6t$uJ~K2Ush|&>T}i(l(B!m!Uo=O2Ljh zpiF?KIhNsA6zLUElrkc(^Y;Xc0vCj8j7J7bF+Kz+MGg^o){UGCMxlxXBkim!_q{Gx zqY8sk6dh>(`dZvu=dv>nyPae$OiEp!kMqi!&dUPux}5}ajzyA0jB8}XQ3g&zFyaqHBE2o$w+EJK6JdZz|06G!VHynT30?&?A>^%l<{gEU zr;LJKwu8FU#MIe};?BTP$1tYZR)rSXW(Q={;Z)Shaz>v+9dcEz*Ig5+==q>&Yh=87 z)6#E4)x%ZvrP)9Kc;Kt}z)R*zb{9j$ATlDef#UFiO?fM3AgyLxx3V(5=8zxeKWU8&e3PaF209f zzWnoz#lOZcj9){mt5=RiE}c4ejK1>yp~(CvU%dRnTm9Y#_zfp)ckL@2U>|5jBBt=b6oZVVEdUNx>_uGJZyE8oa)ESRZboyle!7m3M emD+yPmhzrII#vAB{BhCvt9a`g+yk{Q9{L;8)kV7i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/enchanted_ruby_apple.png b/src/main/resources/assets/vplus/textures/item/enchanted_ruby_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee2b885717563fb943f521c0cf834b72ecdb183 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t36#DLo7}wCoEvsxSH_Gf7>&w z;(h-WwdVYPnf+Ua@#B95o=ZHNWL<<)1w1Z`CGPzHfB9L~%L-=|Htv43D#0$U`N6Ez zE&u=bpJtI}I<8|~nlXkmJor=gYA?0v(N4^j+F3akds37lOSXHT>pcqBbXs0~a3%ad-M&#wCz4smdKI;Vst05@4z(f|Me literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/iron_apple.png b/src/main/resources/assets/vplus/textures/item/iron_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..609a278b78f6a1a83dda67ecb82eea9e96aa3b16 GIT binary patch literal 1679 zcmbVNYitxn9N$8!r4Lggwv|M?ELf#+Zy&whW4*Jsw+DB|E496ZRy4A=JJ;LX?as2h z$2}5?j}RkCqbYnTUc?W!(PD^ABvD$@50d62Dn1aE_#l?10TN9VLNscfy;llBiEJ`E zvopW>{ont6xvzI?L+$!n48t0N0lpv2jn=5S1HD^+TNco?MhgrX7*=<;HL9>fxfTqo zZj!@;=3wXvPK1h0kYEJZ(u#)A80P6pYl0XDCLRI9vg##%nVBPSS@IIwJ419x^MRNg z$m(Dq+Zz_ManUUiU610PG=~TjUAwia6F8&G~=dd7sYgtG{eyjuG5K^9s)_zr6||WZz;(_UtS_+ zni@w@sZ`3A>aan5m}1;+#KBT5OCkhmWK>f~ld7??%)kRf)Md?-p^96KLIfsFFM%{I znxJSETGc4I2|0{P3mV1PXv?GmP!cOREvY98!X=Rc37`PgG!T}lV6_-Dp%H`sLR~q& zP5^RkC{&SgQ(Y9LBEm5JyO9|shujoxgfkkT`hfwHx(NKck(wJVYc$TM1HpuP7{Ww3 zP<>^UaTZyPKeSy|C73ccuebns!317{rCFL}7?P#KYzId>IlGIbJ2{#zLPJoJqnR6^ zOqixQ#)SfW9TcUEB$&c2!IH>Dp{@wXU|A7{0i~(K1YU6?=Yt8TBf&_!j+OgCpRZ4c zQ8|GQjQ*`Xc+l^2Fm8u~WNl1A-B5@Ns)i}3A_($c0y)Pf%MvHiQPIf=5fV6^c9M;a)%4Z28wE?R5}A- zS80`y@j|+Af@qb2mk_P^1BobY%eU=;B5f)L5b1y9MGnttjp?9CZw9S!q@1qtfhviaMN*T3IsRY{#&w)*#;I;7+ssZuxjXx{qKhOIJW=Fvg4b};~@H8`^3q;mxwzj z&TP)N9KgOxKJ)WOuTT%>o<4hSU5{(e^6!qFLru>OWFCL>VADItf_Y}k)YPf;^oH5d zRdFTjx&Lit$ED+K^ZBdU#gRE<=6h_6X}ecsm-@#pAD@)h&tCH!K3)Io53A4T7XBJp zy=gkx68Z7kl|6G88$NvOOZ(!hC#tJPMi%SeIMz1*e(SrFpLkA>pU;V}FMZcF<*R#O zFn;2Ly?3>fZ+-FF*{tugrxtPxSF_#I%`^3r^0~GCeY5wq4>t4r8d>d7+x)JNFC-_N tJ2D5Kuida|%{`6ZKEkd$^5@roRFCmTwtfEWN!|Ko1pU4I(Vm?z`~&K-Hpl<~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/netherite_apple.png b/src/main/resources/assets/vplus/textures/item/netherite_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..4edfd97f65ab2c6831238dd10b7670217c354a52 GIT binary patch literal 1705 zcmbVNYitx%6rNI{TOOuT#KIrOAt*&>=dq7=$Bt#YTf5V+Wz(*0F(fiObGM!B&fH;U zw!3Y`G$lgcMCc)sR-)}zdw2^cLDebBFb13%RYzzHtEtWCqLcs@9s?bU#uGO`8YOT==7}~>m=5a! z(5Zxa4A9ck6qR}sl20aTpT=u493oJGCE^)1shM1cC$hX8THD(cfoCCBf+zg8LcBd3 z!2{3$xX0-wCB|KiSNWWb*G;>;PvR`i_$a!XVq7H6aI}~6RN=XYK-vsB&NT<0$>~C0 zJke=cI!96IblRDAIib-(F+LySU@4X*5rQYdPnW+(g? z>ca6I3Q%an;ew94+M=oj6{c0+h1|#mmcw#7`XsULIWvA*0~n$3xPny zfN>>>4$S6;I$Wp^cp0D9OR`QTYi>Bq37Tn%ngoO(PoUs96-DOc7#*kGF@~gLah3$E zJ5Kss5=*+JSWNb^UY{gOdHEoeQg#aD<>mh=ztvDs35v=4=CKRY&K)kKnCMo!bEVS) zcIH+|1<$4nCrWl1@PuUFKah#swsPMQn5Rv50z~>Bc`*+&VcbfK2Jm;FXx%gKC}cck z7wo(r)Zbmqo-HWuJREflds%2z=%di=fQCApfm+$m1KUqwSdmW%`lHqRkGAmeG+nl9 zc;xe|AC@=XI8ql2T|YB7IX>HaWclsQYa;u0f4_LR_);oVR($fO7hb$I^~TN9dmOhe zy=7KNZT`l_MW4PmGQ+g}@nh>i&G|3ddw-vO%%865YxwG$nFEOpuf2S1%_&(TGpo8k zewEqu=vLQr=o|i5T z{yIxkR*D}S{Z8%~-);6!U*7f0`|#xD-yY1YI^K2Vq1xI_*onE3k|)kj{W&y;P4>Tg Uv2{tg-~O2h^-aOyx*h$00Z2bWbpQYW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_apple.png b/src/main/resources/assets/vplus/textures/item/platinum_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..82be198a3db96633d04644f17973e09bb9fa8590 GIT binary patch literal 1714 zcmbVNeQXnD7(ZY`m?6l@5VshQo6%Xg-h0=NwI|(IJJ%+3&aPo25cPKVwmsY4-R`by zH-sRlNZbsXED|!rfSMrL43I5Z7R6=8gy=A4@eh(|Ae+hjoXH}a7>4h4Z8Hc;-YSgkN0_=JJQtHu&$`I2*a>-exEmp#)ph|&1&?0Z0;6^hP8@smxf^vnv8b^cD!#h zh81oSL#=viU~2@5C4ZP1cVCa}%|OLcBH5 zgnMKa;&zLJsg48-ColBFFR-R+Qo>VgqoaGd05|p%q%y&QCN=(IbBvm zvK-G{R8!7moIzgW6)mD9$SLiqWdhL4>CjCufB_^;lMDzkR+a`V?IeMn1z-spkOeW^ zc?XmZ0l+deYX!GKQOXFM&fOC%@N8IC6C83_OmGoMDN=;M^I>E?a$HuCVq~3l`M%%d zX;S5|7)J+Mu%Qn3*Lxha%i$my3!O1H5Mce1rgIVx{a!bLf@2Xyfwj?GWgBpEq|-** zN#14yBxf~@x3w`e&p1GsbLQl|GM_Y3ASW;UPx)t65tSepzi%F+Fpb<{eWHeLwKH2f z&9FT?i;H+BU09Ac%D_$V#{ENq$Zm`G9f2jvx5@qa4KqLr4#!+7`CF$@2w3vdp>O55*w@8 zxcK`}&2TliF!R@+4}6^*c*$I)4w@!RCc3P9=wr31`H3m>O8bW1*Mb%OM=DBQDRvIX zAI)~`DmLH1r@tSW-#7nRYPMj*wc?R*!G|2kp?j)g2vt`jn3^J$bz7z*hs0 eitRsXi-pg>Ia&7e+`EGDSMk?3dI#!WJopa;?nLqc literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_axe.png b/src/main/resources/assets/vplus/textures/item/platinum_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..f8bd462696b66fdc2f09dab12544a5a979d3db62 GIT binary patch literal 1698 zcmbVNYitx%6rMsrrB-dk)|j>oLrhxJ*?H{l?CvcqF1w|>z_#0V4F%M6I&*h-?9SYA zX4>7>1bhKDu|k3sBTW=cO-V`YBJM^@D_njqG1$m*ih2`#b%CKb(3UHo*MA{E(BZF5K2 zs2+qVCERPk*51ar)Y~cfWNO2s-$z&WErvn*DhV%I_2hZ?4jS;ljqgi5>*35Ma3?XPrhN4>v(ny<8>_AP?icfy~{}F#AS(rX{bWYGBK7bVD%KTkeNdN zLS0zCNdSj78ZBrnX^W~BBuuNm8@rJY$dYI?-lIdN1)8YKkYIf`HglcrjShka6fI=L z5lSx{RBXXylE+??)!P(JMj5ka(FPb2E$F9smS<^>qd8xk=YY!#I1kOb0n5%qqexZ~ zJxf8|JaBq%g5s2sMN7OTSe8Hn8LEgKR#Y(w8C^?KWFd?oh|erP=*rCdR-jt z6+A2rI}!=anoFaOW|O@@L?P)y%8k6oB{?trjj;#2L(mrg5u zCO=9mWG-ERDA{G;rzHFQp-kncmD`TMJZ&ZgG3kHg#XQVJ2`eKSFp$L2x@F!m*m%Y+ z*m*ygf4Z1kTU6W&aNIHMVWCywk3zG98t!lgZe`^`p_m|w_(&)a_x2ARd~eI?$5v15 z&b-^+Tt4){!J^Xdn)i(k)E;TA^Cjr(HI1X-fr>G&_lL+V^<-^j-OIt*$+fX>HU}nW z+D+F_FNN>DN6U_1J$do-x`(Ne_eXwv`?bxrldqN^8=g8{LTqXah0PG1D~l^Nub153F4N*~xt$uTlSKd2003^!I(2el2~jxoX!}!yoOn zt^`K5)?eQ3X|Ah!rD54GJN&c9*Y1CZdE`vROw#?u%(DY$o;QwHb=Q17bRszP#?_sN zggsAxLYDV0_nkd=;P*o{SH2v$EIe`aMLgME({$pmiBoS4Ph1DrT+HiT=U0@TJ%7jD z*CLmScb19Yc9%JXJvXWw2K!=k`ShRJy2BUtz>12g!^`Bo{d13x&v|~dj`e<+;s@=& ONTj|oG`g|Pak5aIG))*Qi&FO;m*Bt z?{~iQbI&=ai^GTdHb1bLVVJ)BP<8~?ZQw2N;&SouMZ@hS_p&I3vvYm--pz zuKUc=xIbQa1nJZgutCd2Xj%@S8D?Lq>0o_=_-vU}Ods#)2RZ&Wca+H^3BqdOMknIc(w7EtFjbsmYbitp-)qLMU zqS$COgho`LZdH_36*v@8QFuV`-n8xGCU1MYy9`<4>8|PcCbij+5tr$duW?{$+Xc(% z(b`@oOb{@!i5*cEq|l`n(9nB0XUeU&lpDH8>ck?p?*UfsVVxTFsaK=_LfyN*Ndbhm zQ0VDc*A~m_sqp;V5pbgukaf{sY1$#;2=VBYtCQRjFmre4je{~S!9I0Ml-9csRqUF~ zD&RG{XUwz>+VCD)BS5m)CmN?nip0w@FRLX*MzJK42YD%uB&iK8P{XWDuLq6CP&9cH z6jH{(KE5T`&{2iD76yk+3s;Hg*j0}0g%M?Fow}eHtc$Ka&u214msZR=TzDgg4zT%L zCLybd1g{8k%iKZ%}fGVeq%UJMJi?T7eJ7h890in|Mk zjuCEqtqOj6&5qd6;aq5CIp?AZZSc!{HeE_Sr~erQsSOVvKg}(EAsv6_X&7^J+wrTT zJKve_4}N~~K|XFW&x}0`Au2qOHY3E!Dq*o&X0XJ`|`EFe!WMSwIf^3e12i) zojdkkxb*z?t88TQlV`twW9#Cl>HhmqP5w|FVD=wA`rhN^m4UF;=X1l^w+=jY;%|O5 BA4mWI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_chestplate.png b/src/main/resources/assets/vplus/textures/item/platinum_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..27d33ecc437beb352076ded490df5d2fbb8f5c14 GIT binary patch literal 1679 zcmbVNe@xs|94|u!ZeomMW zKJWAW{q0b=wW-)q>cB9pIM^JBp!s@x6kdbg6&L;z(Nv^2cbFKqdW}8uu>GU!Fzo6Z zm1w)w9@-#CP<4tji~(m_)e#!Q*4L(WQR)U39s>zQ^AU3sM+sb!eMFllM2B=g=u(>d z46v!MH7fOWOT0|f-ifbI3y44kmWZd-q-F|fACch|(AwUn2s{I^x_v~QEf8-Hg>gSL z0Pb;eq{O&ua4+vr9UGQJ1bH|qm zK&}miaxzxbMOAYmOsiolG9&Ad713t2R|ixCn6Sr?K*Ls~W~FV7F8B=~TF{6>m|O}} zcu8fPMONdtwJDkmQ)bn&3m_m`z(=q&OOp&kGJKR}1b2-YL`?$0fR8}VaVm-|xOv*^c1dp16X$snaBhYaMIe&# zSllDUq&UyTbN2&K>akN`>Aw6w?{72|RDxpiih1n9v~x#jR!kJt-fZb?0{3TENd?cO ziy%sN8Tbgvjz5rz?6z{n9$2JJbpb^BA9=9|Ghy6Hi3X@kAa7kZ?Xv{n@wI-prn5*hI{Op4pe$4N$7_4>_ze+hLsm3z} z&+WeJ_VUVaFCP5vs`2-CH~cv^vAOh%w}y)Mu36YJA;OCz9e4D9{Ng7~-0IhhTB;tY t`DOIL1E1HetxX~oYYA1%bV6$b&d%Tdj$K2#yJ^N|V@MaeQYpDRb9Z;h%-q?T zNq09E8Wp6eijP_=SWxgyL0=+85=_-lkO)@rL9Ky`eW+Lwp@L>TvwuX17JK2&y>st( zzVma>ISZ2$NBVZ|-APeYpE8!3f_0ZacLd-&@M|5xa*sXsluJ=P_xrPpdi{-lirThE z&*r>bW?WW@8AKY%<6zaa0ZmbdhO0JGXRt@-aZ$Gt%+HsW7+Tj7%<*uB&)7*^(#Pf; zd~9watIo}+ag7;%oIX^QfxyHbqN}E1xpFnZGlw`O^$%3AJVn<0f=)zNKFCl>89qCA=P5)4?{biuSc zw3gcn69kN_BAXL}yzf#2sHq*CJ?j_^<(kT21Dn|LT)+w)tX(1=aZBW1s5{qxQvjjO zWI8&ww8b<#DqJsp3fyP~WJ|Q0t=X8H!Y-M0RGdBqW)Aw^*mBar$Rkdc5TpH2lWmh} z5xk}k9@j06RNSFW0yu>{oM1#=!i)+N-{a=kb-W&g*$cRFs-DM z5g{IluwqbXn48JSisgF9Qn8XsFc6%eu4}TSN%?qQ#4IX^0xL-&iH%8Gj15Ip4TYmx z6vd)#`4mxS{S;`+YyVUJNk@kgM8;k7_=V}`jy$Hj@T#>|=^Vr5*3QuBM!LvI^~)f^ zsQ&w7jcFb0cO8KyZKZ^P^gr^V33Exos~`uD6d_u7%sUQ@=lp_g`oaCv#m3#H;%>vC zWBA)ntAd|Sv%?m2I0stU+45rww80xnY9t$bS^cA4AMV~izrcKZm7m{ser0uahw#SsdV2cyD_>H9Kw$CnN3Q*;F5cdVcEectXzk4U3m3b4IUdH- zr|TE?No?P~TkHFim#>F&eam}$&g*(_@4!ih2lTmbb{S77FMj&jwT=5C-+%Yxl6_*K z>!sE5m75Q(EiW(MdUJi{Xduv49t}OeApv1({N&2w)pOe~bzPr-cCBakgB0~iPI*{0 RYG3%hUrA4--aS11++RUu6Al0X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_hoe.png b/src/main/resources/assets/vplus/textures/item/platinum_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..56a81480e125e5d9fe448823c9634d16a0f65154 GIT binary patch literal 1667 zcmbVNeP|nH7{3hc*3J!KrN|V#UdwQGm-|R^NseXx$YssBB`a;DAO6$J-J9fS?%wn6 z(xlZY8xuR%32i~gK15}+W6Fx)9~+&l$n>9~LlmLKB5Y$r5LZ^Tt_u2InuJcO!yUZ$ zzW2Vr=l6WP&-2`oj(Gc)n(Z|hhHVj}LMNJ^aK@%8^nPaPF9}W6Mzq($u+7_?;lfUw zdJ@APt5Xv_c28_SFGI~ODKH7#1*erKrtSYW_X(8eSW<35J;P;r1(x@Z%G&W z3K1FGHh7B4=kxBo#|_Oi#RP+hgQZxOLQ+OUK>(I)s)nsX9d{U|B+S_% z0$IB1f@V}`b*mI66fmkF85HBD9hZtgMXunCoS7{uS7Zugfd+KjLRhAPH8RkKRtEkH zb>;X01t_$!SVhOWwrE;Kg=I$uksGCetc$i1Lk6HafdzA>3?hTb%m&9BgAbcPvZ0xP zFk8N;jwzK9#grY0eWRZU6*%FxpUUI`-~hFNGL#mG9(+I=w`?l56W z&7uRVv%L)$BVmpSavaIJnWDL|7%%FUE$K24g%E*)<5pFL4=O1S>-RCF*DEJUCgo+x zfKN)1Qh<|`q(3QhKDjI}Kso26Kv`b-pYjJx6_ucrePkY|FrD1tqpF2&b*NN2UErnC zDy!nfbm1l0DT5FpJNFM1qO`3(as*as^BI6h|06F}VHQl;dC3H=X%wx8<{gEMr<{Ua z^@IASi^a1w#a)J@j^QjTtqOfqnjO$lhci(tn_al%!Z6o1QD{vBj-8!+KYq2PHgfm! z$Mr|&&s3j(uD7w_y!h3bs#hZ9pRHF89ym9DxVeRVv%g6kA8l$GfA7S^_TPy99W!(4 z&bg`7z1#1;{Nw(;<5&0iKG}TsyLi`)?Bs>-m;L(9G4be) zguh8WJ^S{t&o)gBHcp*+s(o>#Y-SFbYk#1~p<$!D#%c_!q7SY5%z~7eoS4QQ$d9x!u~5;o$RlP%uSGOU3@QJbW$De;O_nU zJhgM_o8H*t9X?Nar#G%Cw zg4pn&ni#Xk;=4r|X>LhDDd;Y021XM^PjAtX@CqPe8#0oTMOQ5LbbW1FTsH$EO&z)_C0#%4T5u*AWgJ3K^ z48q8Sz~>fdnezsKKj`KJFY6Jy0nc(lh7B;Bhh{mE6-1vO)E^34GnKSB64_O^g;yae zYukp%Foio~JQ_wo1A!6=~h-Y-or;OEy)*R*?=IjZzBb?GS~T z)?Cnxrdr*qhY1IaDM|*zxmm}hDo~M|I3sW7s>T(WfjOu_-L^26YhsNovXPZV|Dw8i ze2W1b+IYNaV@)oa)-+++(Y@G>dO+4hTZxhZnGtBAyeY%zUQDyo@x~CtCX{SsCJ@Rs zE^4?z8SvO^(6vX^6;!YuTO|M^k_|%?&+;tIaWp3+IKSxei5`w-eIm=&pmC(A>C&3e zfanX}0>vq#NVaraup*0TWNH$2Sk)77YtrP!MR|%~k2f<6=y=Y)O}4EE1w{aNMe@h#oJO;?k^4L$9Bwg_PGzr~H__ z$EUCXf#-NWr8MLtNX|Pc(2!UDr~FfkOltGA+o%@H_gW9%w#}TN>7qSp5{g1q;!7P-v3z7-@GB{ed%{vB@XPknq`N90t z#p>Cr;%>lk$8e_2R)rVMW(RfL;Y{4hMj!5h1hMY!Sfnozcul@hsr0UYWO|NTB1v-o z^yBm5HP^+&xA5%er(M(U&VBXV;=%p+Sw8>6xvrUH$Mo^o^RI7?-u&e{Ua}7yZQTa8 zp6bY7y;3>$bPxIHxs|WqZ{7IgD`0u*kEPz3KNqH+Oi5>#ju@@uhmwE&dSV~>(|2F8 z<1bYXzr8a!yMM!bS$s&U-(ND`1Y27^{Oz)TcCmX)|Ghf#!4Axae0BSc)F;=L?;CF? z%c=F>Ouu-f!gpQf<&WB)z3|1EeXh^mIFLLw-|bLeIJt8DOu0<>?{bwF54$cdbdw8H zZ*4h00}gEdbjO%aYT31Ig}hK1_<7cI?B>po+uuo+txjU#YM}(i^-IpLAr>8q9PdxQ F{5LN%B-sD} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_leggings.png b/src/main/resources/assets/vplus/textures/item/platinum_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..eab4c63de4b65ac1ce842ee6b0b27f8ffa1537e3 GIT binary patch literal 1626 zcmbVNYiJxr9G?a~n#9zLj~av2?N+6w?(NRrdzwv1@AA0PJ7aR%q#v|T8WUj#o?w4#`bNI|JZ&e?krwOZ`L?99&m z=J$X9_sCRgqOWJL2LRBQn2b-;+3Svt9{Rrba$TlVw>ddy1JHZBJ2rq-qc9;y#X@l z_LcoUV&!-kjZzMg7e$UDIJ;^%a)mSOZEc1)wiQb=9gP@_%P40^$&py9Y10JV?9du^ z%T3f_d_^{S=o4I%8bDR);LMU$Xb4vo9v85V4acTf*uk24;t)Ge{)M`8{1*Y#waH{h z#x-@(^^OSJ89PYLXgTDXXgggsF+YuMQnD00c95#M&9%lvF$>EMvC@PT+JTyCtIUYh zYG(UB%}`0%-m&fij>`^~SWyrK4nht_(;`HH2!dfw2qHmfLX$+*vekb=MMPs9q>)|+ zr75Gzj(lCPs-P^fbeS5g>2eP9rjcWrjvG;o6o^FyQ|yfgae?6T6wj zSS$pip%5qfU_;$x5+w}VkqreW;u1@p;EZ5nZ=7ceh1sF7w_rr-gNQq+itpV8F)^6LR&vRruV=%< zclLjD(lh-2t^He{`0ZKle)#mswd#QP^pi&P%85s=hR>i`aOQk3csH6?mG1L zre7cUZ2VjQg`(+sY`N^jix$%U718J~gsU$DR4S-UH} z_8k~L`skORe>1mdi}zCaNbmPv=e?1y4p=|bw;WqNwF;J`H}_n=T3kG5Y>q#E{A}Hk fR`l1G{}_Dt177Xgb!CM97XV0%rQ+}GKJd(+{&f+s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_nugget.png b/src/main/resources/assets/vplus/textures/item/platinum_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd9f8a71879519e4d1438b101a23722588d4ff3 GIT binary patch literal 1565 zcmbVMUuYaf7~dnbYTAHMsIfkD-5^%#{=K`s+}Q1s+$GJa8{_q`DOBuacJ6M;?asP8 z$!&rd6?_O-3R2KEf{5UYSV06I6!OrQ7KI2x-&&CtEWU_TXsfpC?EP6%i55FBJF_#t z@Av(g@B3C~rVkAb?iu7bZm2RD(+jq-(}r0O{(t3S4`jLB zZcFW~M1qE_7K@BSlQm6b2r*ppD2zle9O*NZafkxPrw;M>gb~h>1!@S)(yj}xpVE3^ zFH9_8as+)@m6XJ#4$wv^&R+;x9pyHXaSOZHqankpDb{ZiO2Q`j7wYu-E(I*KmX+$* z(iYcERfKe6k-54^w&Y{EibJvxAUv_i%p6I)@j)rTkdmNANUQ%)GkueJjd{)Q zJK}gYX@^g362N6hu_0)RriiL4s-rbk2TBg81yRWZMd?BLhR>bJ%fV1IxbG5co8VphQ|EV2YV_+0EybQfVe2b*IHH!s?-MzA{nL)uOJ8 znxuBjwJcEaLJB>ED`i7q!I2!t23X7Gk%p0|Wa|YnpUvrFF;}ofU9pjk^=z(y3w`-A zK?_L=^yTgUDgQ#?uo8r=`{qdsGszt=<%H~2mwKgh7{A)vwH&^aE&!sW3=9D!?~iSv zckJAE1iG~CCT67nkr!Q9Nb0l=13cDX(Yj~e$;@~;DcG(b@;_bd+-)lEKAd%oWSh1s z_LDX{?6D3PuvYf$wi8!b8~m(N9;=O>K!3%tIq<|AtHPyo=eXT8GdVfAJsD@eug+f6 zelg9V_sqq}e0|{fnefv+!>6Ltj}Gpik6$^JdwcEVM>pd*-uM3gFMp4}d&a!;Vf5#X zc=fB5c;lPvS5|J_`aJ%2W99aSef7@XmyMSmxwhjA?bvJa+M8_rbouA?ohR3Cj~v`N z%*I9Yk4&Tev&ySuLK z@C)Z0V1&tH9LpA+N=O!+f-X1^#}Zt~RB#C~8Yd*C(O?KOA;ymc=X-6}3`L1ta(C~& z@9+IR&+mDk=eb>h#s=$(dsiR`V)c1FP4IoYc`v^iKFco8^YB%qdLP#j1(yCNVS%G1^>Mt!WT# z^#@S5q5-s$u;BvDI#9clplvKwVS5l|DB4L<4wA0GDVn2fT%{e&Ul_EeiD9nE^Kjl4 z{BmJY!%#VrOeT{=vVu^w2uVAgkb@x^28Re-Ps;|M!ezaDfx!cGL6cNNQe@O*lr zaADBXoP@Yqpq2G}m|(!j6t9vrL79@WKv5{*)Pxqx8W#l;#6TR#h7PfG0jow8L(!wk zzfc#JuQC8b>-QIIT+^3$ykJ5%>N}u}d_b;=)`MvkkWD~W5}E+&JD{88rW%!VYk)Tt zEvP85g@Xz#xQsGTHM+hXmK72mg0N_kg6QP&_WnFw-Qq{Xc&4|v3TC+ zb_X;iEXCl0-qcWs`s&>_+G(@l3_)kz_4_%WtQ)*60H4Q&!Qc>*Byx5!D&j ziw-u7I{@p%?RJV~*%0Nh^EtV2zef=gW(q9q7ysw}$219+ARoJ79(eRy0-7%ytOBoC>bd0@1Oj5I-D7u y?l`@szvY{*?|Ww1oefK#y`!q@?JKYRS$ckcY;?&(fsLs7qw&=@dPeJ>eEu)dxlCFB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_shovel.png b/src/main/resources/assets/vplus/textures/item/platinum_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..306a85d45fa3d35e880afecd55fd233c33d9cd81 GIT binary patch literal 1679 zcmbVNdu$X%7~hLfu>@$uD76|k+r)^vw~yP~>kU2Ha(AVda;3eVa)L4J?ao~{z1`XF zZhP1IAZfHsc@!-P8bT8aR3xdW$R9k68XqyyL}E~bQStGIlC+@`8i}!{&R*{>MNuM~ z%+Bo0@B4j^`Mz(5T3a?OE5Em#Ac$p=rceye70y^vhTp5N&PjN>!)SWkB8a6co#7(( zA6P{Yi|3sT#J5bkbpzlBnAb zP}tIW7c`?pt6POI;eatY$zV7)>$sE$Dsl;DbeoyHaz$of25L~ZEsW(#Sfc~k$m&4< zLR~t(P5};WG+NSeLt8Yhq{6bpJ=l#xKyHY(;=KlBV$ed}rVPV9*vx9j8v_JQDA~x2 zBa|s#RBO>>lE+??4{la<1!b)@3j|_c|y}8AY!me*kM(Z(vUIqG)0!e2!besOsp7N=UKQP2?kqD zlu|SJz=~~HPe#H)k@Jfp&AYk0xzQ+y=$0+%GK_=*6b_DCRTaQ-9-rc2W!eixjur($ zpp&d1(yYMCLdqv5eWI@@A3}1slLAF~<$ua=GF4oHQs$O9oVH z!YZSZ`E&u2?36)(lAZg93RT!vZ#e?mPAnZUJAm4G!-(95h;ATHgP{L#|`z z#=iB&w3vDRyJu!EUb}c@lpF%hUmbEyOzy5Y^!C<@b5rl^an)~}KJFTM_0C`!w^vAy z{Jg8Na{Or1i7ksNKb%@omiy$DQ}=I|wm&65xpncgzt1+Fy;61Tr}`%vwcDok*M6M2 zRPpD|hub3c(SfO+{io`5`aNP_UGma5wQIjVJej~;M~=RH#6Kbo&U~@!k4@x^_S^FN z&J4pH;e>Cl{osYuIVJ$N(WEeO`aPPI|FUQNeArw!G=^3ZXGS0RZ1DB* uH@Y6JohYxW0t1tYrKdklv|U>}N6Ze7J^lW3?JqjNj7Yd8bbS4`{=Wc9yE8-p literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/platinum_sword.png b/src/main/resources/assets/vplus/textures/item/platinum_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..bb21852755f7abeb0915089b65f28535691f4093 GIT binary patch literal 1671 zcmbVNYiJx*6rK>R+HN3FAG=z~I4kuLXXml+Y1cKKO*aeOxNaAlVj;OZb9Z;l?%Z)^ zw!0g!!6KmrqpkHvBH9${FTsd^tRhme3N4LAvbMOq$(-=V;71ab~S~Z+ah6pqyUC~ShsiegS(x_;L zC~Rrng@V?iRgFfNaKM-{&=}6eS}xUqved$9MLk~=mn8<~VF9Y9fw5c*tL2c1j2!wG z>eluR0ywnscuV7^wiF623B&B&i`{4h3`}rKuq+7~q!$2oSSf%kWHdEPk*zQaBFZBj3uEitYu96R+p8Qn(4dPN@>^!aGs#nsG>$Ay?`m_U_aEE1w{a9oNa3vSjg@m|(PyCuI&rvn~| zPNyNHJ#GL4EC)SOpmjciq@tAq&GYjAJpZh&;1UG++vc$f)5;y8PciVVRvM+V6TZ}# zf%MB4+gNKYy-F3Ds&8~pnEW6`cX zO9xMkR;S7SuPs!g4_}{o z=B>76kK6I-@h4wR-}}*IY2Q%pXyw9P?`I}{`F&~d=dnZYIbI~b>~vnOx-b2?Jh*SQ zyXPDG-172#c^}FwB3V;#*zNY`7sq~@4V-@Djr@iqhqtujA$~tMYs1{1{*%{{qD^HUt0w literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby.png b/src/main/resources/assets/vplus/textures/item/ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..4f288d959b7e8b8e3cd9e4cc567b00d4588f3279 GIT binary patch literal 434 zcmV;j0ZsmiP)(-4rrOPKBFuYxrmXO{ne zoJHaPaVGiyoeYBiCvuAZ4`<-|U(G6j+km4$13*p&8vxSGAoG7agXI4h2JZheR1N<7 zGI0JcVd2Ma04Stk27sJ>oIw_>xtM|Pe-zMwIYzesJ%I*fGVx+J;1bY)Q^3%k$|Uyx zoP_58eg>icu|SO=+vk|rfo)F*Y7PQ=17|>jqUxf5G&s~Jaf$z*Dj@TJjxogM44~!! zAWbkTH}FdR-@zjDzm8exe-tCne-8$Bu+9Dq9KM9ZN{6Ah{+2S c&w z;(h-WwdVYPnf+Ua@#B95o=ZHNWL<<)1w1Z`CGPzHfB9L~%L-=|Htv43D#0$U`N6Ez zE&u=bpJtI}I<8|~nlXkmJor=gYA?0v(N4^j+F3akds37lOSXHT>pcqBbXs0~a3%ad-M&#wCz4smdKI;Vst05@4z(f|Me literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_axe.png b/src/main/resources/assets/vplus/textures/item/ruby_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..fd32f31fc19aaa4f3d5dc9ee11b6b9c7d0e4f343 GIT binary patch literal 1701 zcmbVNTTC2P7@k7wrHCcP*2afA9V)iUTz6-7XTr47UFfcMk#1MO5))@<&hAdwxi~Yh z3q}(gV=Spg1TRt0l3?0mgornYrWoXfG-$1tn)ZRjhuRp_M%!4Lrg&yqHdL#Poy?hY z`_A`Y&j0_jzoC9->FT>yBM4F&4h5sIFLT>1H^J}Se=JC_yVVRmY9mNVx!YDCZ}e?I zkX7r|ShLd{*(Jz^Mo5Yg2SipgAsRudw`WaBZUqh+2T4^IvEM$Oz))2Yu_iV`Ma%$5 zsi95_?CGqJ$(^k-uVCA^q19Od5@^7Y(5#l$Z6PaSIbH#d-DMI(a}cLh#A;lDXmg|i z4HyTDaB+c`XgCQ9PhX~y6&>bm@>vqKwLlD@qrJ9av=%~vm#f>&c#Gs~& zCTM1XR=4wRf(|3Il1b78<(iZODslm5wpr<%a789T8fZXwY>1@`STkifhMhA0g}ShP zl>q44NTeX+n!0FOL4@tpwnH=W4!I`Uj&+!Ti~`$evt&@)4%Mu1tucjw1tiC?Vuq1k zx~PUFl~D#-jc#dDb;ZcoTbCUGLCFCk#!w7}(+p1eVhkg&9)V$TiWMko5gIWRHPP`; zs7Ii9f%aYng(0Izj&xnHA`1z_(j;iGs!2&entBpL3vLtwM%u8TV5psE`Fc1IXt0cg znuZ&8bmtBo4m~AASjAVhDB=pvG>_oEr5W4#SUAX~Qvnz=^qAjT}pS`_gEMC<+ z(?1%TjJ-LxFmu_{vm2Wvx?9BFXk+(C|0C8sy zW&`Ix3iMU2Joxjvv#*{$oa*vEM!aS0SB_k1qvmGc9cnt*IBjnf(a4`8<~Qq$Mm9IS zcJGfHe>pZ-e&T_Lit(QMl)ts)nWmTb-t$$eTE2AY2vXU9{PNq|F3fqFZ!Y#8uPdLn zo+?pKe>^`pexSGov=oK3P3Io8zQ0djb?6KK;gd(#BwBv(&tB-8KsI%a4m3YMHRS$C N!nO6m;T@0f`wLJbKkNVi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_boots.png b/src/main/resources/assets/vplus/textures/item/ruby_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..db3248e3b620d4568f09b1e53fd5cf1d8d9dadd3 GIT binary patch literal 1611 zcmbVNU5MON6wbEpI&NvHii;F=({zzlCX=6;$xg0~b$2p$1~%JqI+~Q`;UTxB37Rn9x&6->h0L@Fl9n3-CJFW+<`+@hTEE9w;Pdlq{J< z4kY6df!4TKf*cbgoDgH9LYU-PPGr~w!$oP91FQhzV`S%{ur^08f}H$#M;HE*sIuqT zfMM$OdZZqWAg9D|qKG+ohUaOFpxuV$sXlGFTe=J~bT!AYJp)-}z^E2b&66l>Y1;+U z?$KIqCrmhCjIY`Z7hwaJT0mXv;q01IZ7J6^23Da7EziYRu7|bD$U|-!{R?&P_&NnR zw2IQxaYI{7v!}xKQnT2NPC#ymcJmDzGCAm?nxnzgEH-mX;EfHE4pcql8S2Lv`PTVss|;CXL*+9c$yu{^E`-00UxK?IAGZ}R6)8?Z2S`%1uPGu z+;vc#GP>%iHwEh&C?dyHvBQR`mLOwWC5r5Y5hPI+Iao2aF1mU@lT2nER5Ysiz|C!+ zATz0?z=?uD^AWCPuA+d9<$9{6!Hg_XI5-i*&;iHCv{*vdX+9xflhv3`i}8d?i+n6m z(2B*F7>#x1Wu(=D6zIz9|5JX4W8e~0tGCP(6lRb+AZ@t#RvVqt*$JQNtf~gtN*ADN zK^aJt7TiD7sm``>%MobP*2@r+{zqQ4VJ<3qb=866B^<4r<{g8LXM%!l`@#I(#n#!X z;_kw6#|W0aR)s%$%??_)!#TK>y?b)cE4U4QpOMG&iC53PCJml^Y~#KkUkneu^I^03 z$;$^Gxh>p(?7q`KtR0Ymxf94@Y2fSwc&5?zw0X6 Uz3(#+{2ho)YD#{8;_1DA0gu8FK>z>% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_chestplate.png b/src/main/resources/assets/vplus/textures/item/ruby_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..bf20e19db8524870b32a215c2d1173fe49cb1985 GIT binary patch literal 1686 zcmbVNeM}o=7(b#@WRPH37Q!4HH-{hLdLM1C?S*rJmO-`GA+5qD#$E5;mJ7X)-5p$E znQqhRtT7sw%&Djtor>8y1YEe>p{>f zw+|U0HWZDELw#aE!ZzH2Hf2~ypa4riGfG-D*$ju}cv(1iwh0W)L99LwYjzZ(-Fycc z)C_=nT?{T#9zW^}xG2U$x|v3lCaC~H`U%R7lN3ubtk;L;9}H?Uq$JxJ+L+e`R~*)B zSvpG)wr#s?w@Wip1QiHC4w|5893pUYP_={%uA1u#3?X2OhOAq%rlJm`kkI-q4uh61 zxuEDpTGh;l2?mVF2s%NzNXMldP!fwcz28XZluIH3(m(;KWkM`f#Ol48rJ23jzfc#C zFHrzP%kxDYm$gMviYiR2bpX1N56ETFW_(ZwL?t<;$PI_6AT!QkNBqs;| z33an1&AOROpfF`5!4j?rmP9tG8HxZMmK7ld2whEKXfcdzP)lnDR1B?iFW(ObgB^yJ zl+*CQ>}+d6!>vJv3NQ>#yQrMGJkN$z(-Kq>ghLz#gX5BAiIox_iuRDu+JMO5exFCg z0|~zur$j~)X^~_Y(OZxYX=1;V0tI>Lf68w%WLSbi`l@-H!gO+nZI?}WtAqK{iGgkT zSz1PO>B0)4QwAI+I`W>ERxZ~(Qxn;jUB6@3=+D=de!I2ywC}*7BezsMy7T7BP<{PbemoLgb-KJ^WIFM# z&;Ds<)6@@hixc+5?{jta2VYw`^x}IZ*MBFa&aV!Bb7p>s8u$aBI5+!({^j(-%yZ+3 zQ$NmB%)ZlguWwD;QzK=_XkE$J+h3oV8?95etva@IvwyhZ^}UhB(m?rr;|t|T?aQ^* zYj3K5tbY6VRHVw)IGs2?(tY&!iq94vK6HDDpS$a9fv_J&Sg)XtV(|T zRr%BRtRJj=0xq_kj9iGlnmr$xyyig6{l>*F&P87N?eMd2_FOzM@9|}S%}#zkmwxHP z7Wb~Px2Eolo3qW05AqjwteJZM#yw4YTVp-e;=}`!$M$a@w#V*v{v6@fXy{1G*4=*r Dxj{OS literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_helmet.png b/src/main/resources/assets/vplus/textures/item/ruby_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..7364fbb0e4438574ee7a635898492c3e1f386cff GIT binary patch literal 1621 zcmbVMUuYaf7~c?j*tEfdQjMj$ZYd~sZ)bONd$&WcX?hov6E8iI(?lV$li9huHMcw4 z-A(V3mn4eC!WBdWsRYHoh>(a_@u7WaBw|C;H+`r@MFgJ|tWB#vq&;WvAE{Q09hjZj zncw&O{>=A%Co+TmogI&Ka2(f}8b}VYbw@Do3$gEG>s7>-t;BaAee33I|~nU z+?JhYcGMqDKMOIn!pNW#BwV%}hUU2aJ!J>sN#gSpByZYr;n#EL1>Q8`!bl_y(oTXD z%z+t~49^T^@ysOF4WZ`%zrPF_fkk}8m#w1h!E#)v@j|u_jwOMwLHxJY^N7ETT zL0!T}!kUQX?ie4{!?M;5RBa!x09ltnOp;X*$Pj2S66G61VA@~itm}+JkrYK_2+^CieN+~0Z%>mUNj&VDj&D+%4;aw|o$})Xv$XDl z<+NyRuMs8|FsY0jNe+X+r5ez{Eu1su7Hi54ERiCyi0yj}E4Q#tf%?=d(0`$BUEijF zg*KgT>A0gUmeo?>`F+Qj8;yY65$$EC9U=`8k50Lm^c`bn?g_kcV8SKHr*4+gV)LOg zO_ON3U5I(74TDv`*zG-npsg*ViH zh)?w;G+Ea)Q3=a6bJJ;9$q9%76q8>v?)D<1+ z*wER5(Ueb8JQbusQ{MQW@`qiMl^`nKGfz;MLGHi-(_^nX-6)-5at{Wp#CR znT;PVUVL@!rOLV4S#}s7-hA`Q_UesD=8OAxf4>ISSJtXC+ZQXbG488< zSH?eIUV8u1)f-=q9Upm01Hrhwo>GJL(#F+mJ?-u7-|nb@xo;|qr+)jf^TC93mJ5w9 zU0%+7ip7QMwLcCY_uGyxhK`(k?ey-+uJK#9wqD45fQO%XvHQ`D>u-JBR(XgnTYE!5 zxbWewT@s^PslI)FR(bu*C+g|0>+j9a&p$qPa6$h0CjKS#MtkUhlqquD_|kJ-pY^Yn QgT|lg8%%z5=*TO70VvKGUH||9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_hoe.png b/src/main/resources/assets/vplus/textures/item/ruby_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..60dcd28d5148a1d7e14c0c7894e5171534b51038 GIT binary patch literal 1694 zcmbVNeP|nH7{AU=*12|VH;OoL$F;C^dbzJ$(p;OCG^tJO(sf?VR3rO+N^V&FH)N${!*cYV_beCWhUz!G5c-=bpb6 z!&Wybk*F07ZxgF0Y^5aBQ%C}bY*o>8U+>}0|`a*63eGf6SyLKi9LLn4(oo9 zRD$CM*friCk;X?Qk4$uR;vHE55u|`6;@Om{nL^e}6nF(Rx3?(*FF>qOFX6Kl;?eK` z?uQ1zd54RX7-t*q_Ba@qljdA^;w;U0D7uYeIFe=r+9mLAyz~%An<2-A!N6T5U1;Sc zl9r_l6qU(j92w35jReJbJcxs(Se8Tx(#&a=m?br{xy%p%rer9(r9ch08O0b(TV4WL zT67_$S7~p1yqm%nq?v^Q^D#kNVIicMmZ(V}6z~!#I1WXT1vA0IEW3D!q<3*#%ql zgZjIRg|ijKU52BMVNWZq3N0$l4rr*u8K{+2HFlrFuqsC=;ES{!dF2_VZ*pMcqo=pb z)PEUTbN)iwNwj?U;>d_leg2dD&feBb3-c{?PxjBg@wiogv}ySFnkLQ~J7JC0Z?w+V zec{`ys*Nwbu-JLI{o+^V+_r|fuB{W@t^7H4=$MjDdvixNe-xdXT7Tfx-A}!fe_-#y zpRkj^<{t?*RNcO1dDYp^?l`nO`)#Imwd>v2XBMX(zB>?{yzupbRnhj&qjmb*C#H9Q zzx|Z^>eUuPCTAzlOcJxTXWnnlEZy6LDnejDToUVCrse}7q@Vh1bv8NN-+*?0aPc5A6Jw{9O_8%nF(;s-Vd*4HU E0#xERA^-pY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_leggings.png b/src/main/resources/assets/vplus/textures/item/ruby_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..23ca18ea3f0fe343b62e63e9a3a4fa3bc73e9e31 GIT binary patch literal 1636 zcmbVNYiJx*6rQA;qOFyNVrc9She@dhIyMr zW)x<%{z(fCPY$M($#F$gsh)1Ks|YZG4jq{+>N&#(#V}Rj1$gXEGZa~YIOAa|;u<7J zr6DqkEJ*sj0b1dFAu=d>xqy!q0$WL*$A0%rRg{@g?8YE*6)okIf zFqL&26EIAnQ1BK6FS0TWCyJPZXLz2*2-+?gj$EV-yQ9t!gSKL6rlTQ)bQ$F_ly|}u z_OvQNHygBuT?-Qq7*mu@hV!znqzX_~8aOj==ED}_+5 zeo#Yomq{M0CLb8l3>6jZ&J`PAOm<+H;#r=hIi6;NDV_&@0q}mB^#hizLM5bX>C!); z0$_O{_-=sWlu>0zz9m>yKpI)Pj0J1DoPmsKWGJ!`Mi50gWMRYDJ7MK~A{rgCP+H63 z1v}Z-OD5vc04D|lH1Fjq?n)9!7`7uD3QWYp6b_D8(^Me)xuD|1BGY4nNC!k8ON#+E zL@Oaq^rd-D6gZ{6KZcaNn*#Oy>i^uo-O_Lg%DLO-aSPMU9ni1Y_*6@^(iw((YNMP+ zR?-E?idzO@N^#F0s#I-SyX^>6X$x71N&h1+sxTX+oq}w^NCrpimU+iu=NY$Pt2&s! zORTJ|DDFBOcMNyfXjS;5(d?jsJDi1E*|Wlx9^3}6CSs9P==o0%%{~0dw)N9x(YteF zj`nQY^wx&oPTw>0%E`6Y2QGTzTQ9fFhAyp2ytGC7>6!OIbLR|w{>0OZxl7 z>E9#m+um;8wNU!%(DYn)d2{!%*7V^>-^;$fufIR{;$o!lz~`Q+&mP-uE?)`mot;c= z`RLIfPF-8{9OymYHvPd7{^yS$%(ox@ao@3llV^rI%PqO+@bNu&pZ#_B$fb8q1s>o0 zrnAKGQ+FM_xMT2%**P`4qu9~q*US5@tK)w(dzN;snt$%x1@}LYh!4hQdv`ze7n3R< A5C8xG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_pickaxe.png b/src/main/resources/assets/vplus/textures/item/ruby_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..b5124b8ed49fa5904fa2e01134202e4caaf88684 GIT binary patch literal 1731 zcmbVNeM}o=7{5A-urf!+G)k6m9+Rl!dLN}<7YdXX)((oLRKfTWu6J+SleTxgJJy26 zC~GD-HsbUT#Tmu1WeS>@@P|XkHk~FjGiWrC7-JS=+=pgMHnWc~(f3N*Fr6;$lK0;C z-uL(Xo{#r=o*VIZY+kdvay5b=YrGzJ0M6ywC@F^Ts*8WJa4MBNk17aasL+NE8Q*g^ zg6QuOf<0=Fubtt5HP0W5=0|NePdc;xjvwxArKJ~4($9#hcQ&(9ay*7NBSfe zhzg!T8FUSH1i8UJ&dy_v4QPFufdp}&vS>OUODIg*fn|9axYo7_49!B+J_qL16rw#o zKk5=?fSQdKoTKV&sMT(yEOn&GQj5|gWhY1*L78xpVn_>PwxYQQgW6<1%mm!6IbHC} zfkjnSVhAFYN*PloqbNrR%5H}oG(poiMBvImLS@roQgbN_X&0#I*}sz5ANz)De36_u#? zFVuzO>lDDy`g{c)H?$=lFQ`z|maWi@TtIG!R)PZ(AOb)U`(+NaY=vf4Yu-qVO9ree z%0W?#pltwEY*%qE65+><*grc$u4tU)T37K{j^FJX&FDxx;t_1>WjF zu5`LUGPjBeXf|CKmeb0>fpOaX10Kt53%4ABW!h8}K+^xni)EN1hSd}+17`$A>!x`} zK;sFmV3++M{_bM-Y(;VB;jm+9%R;MyABAQI60pO`u$7&)g}y`(U6R;~|`)y=@MP_oMbh0Ajcg~h|)`s6MzoIKzccQ)G7t(g+whb?i=*u#rMW&@*!*ESz zBpeRujvhN;8{YTCV_&o`bY4F6^!bCQK3**Ho)|j#+N|#9Pnt?z^1K2X+Q!pm4SQF4 zhrepx^H%M}>F#$=&&@e!4s|BK&MZpX9``z(-BR+`9o{13$dlygxu-raMo#{C^$6H& zn6E0?%^8GmH$ALF1Ig)BdhWxWZ)|^I)8SPHxz5(+Y}XGSEpNM2ZSo zOqpk{-q*D5hk)=+V-|oyxufaUCUuE5HKu`8tgP3&m-g1=-tF$X zr0qJPsAY7m12@oi8{$}Laq9Yqq8nOWD@^bQ3_*~>Iz0jbSxAQiiN_0UK`z9h&YX7S2x-xTboE-R=+*GJK#@ z3-p?xxwk2*^mZwtO6;h`Yf=&-NB~>LQ;E24NhvRp=9SRe*`^6R4Y9ktM4clLZwZBQ zA2b2(rUX)9T^_tzq*%el@In>NF|0^49-8GzhLspWa#!P-hd|OyH6}&;k7Z<`FE7z) z+lEBb$z+mB@)R^XXjT*v2S;-pi4dgKquX+d)UApvgCAImsTsBgb=+Z;+hMouC6K1e zCM1j;t!`!9gd9evWP@fY#xW@kRFxdg=r-eN;i^J|I7k59wh)%hVU12`L#q@13w7@J zF9MKjL!q3EyXulinzrWt>A+<6C!Yx(bulwiOqEU$%jl;24e}S&n3?qZ}u>d5LqAj9X%uWoQVhTCC@v zP+nq0$%*s|C`uVsw&i<*RYi(HGa(~`wS?ROXhZKH@SGbZAB;m22}auSEBAvwU)Y2( zEshSX$gX-k*x(abQ4mOuV$MKhf24T0@?fO|GfXCsi6{-pKM*4*Q(G*uGs+{bvP5XvQ@3$zl33Vr9ppP)H8hg<*CPK!VkST zz5Vm>x6#50-^0U=kCf~q2in%0I6l|<`p{V8=DNiq|04U%fwa>zlzp;Ev^& zJ=J`D;*+B93QDnH)l&U~edlT~N9NC$-R^tdGdf;At_`lgI`~ZGk=c{fNPoeHV_SyK zl7GChbISa=cJ@)bmA~`eLhZ2&!Vm8* p?(x8xkqx(QT$lrACU2jZ&iiq0_+$OX-Z!0pMX;gC|5kn5z@G?2FjD{k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vplus/textures/item/ruby_sword.png b/src/main/resources/assets/vplus/textures/item/ruby_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6b7cca1f5c8b3a55bea3d58ea9084d6c64c6ec GIT binary patch literal 1705 zcmbVNYitx%6dpn-P;6;}HV75R!56f%^VnDC+NGA=(p_OoTQ;^;LpnQicX#OS%yeeT zZkw8rS|S?)B4{C-_D_L?NLm#%V5&6uqeNq)X@c?5_$aZaRiVbjhR_7>Y>E75KcK1~eC$V?`c%Kl;aQ9!)D%Z?leJtJauf36|g48=?gHMpMzA?+-fx4hcsv#*dZZh&grQL85 z$kGKDVrq_7)-z#30izPUN--ANbSVuKg&a<8*P?0VqCmkYj6vDZ5thke)rev!dPMmb z>fG@i3Q%bM{+y1x+7gT9ROm+aUgSn5Aa_OUfesZ?4NzCwH33%dMP_a^y-|T%gS??= z0Y!;sFRCtUGR`8e@uwRlSybZsrbPnK!yC{=ury1P3`^3^0Lucq6|i=awgZ}8fch0t z3U&MwY6Ub0814=zN*R$i_&9^SB5U9E&80z#-Zp$8+T*&4qZ9 zW^GQAcZM7!wAt7ow9#UD2xjFyiqLMRKvrJ-pYl6336&rpy>A|~FwNWnUP(u{+L0-p zU9c^)ib{AoT>vkbW#A$N^ZuboWVWUIj=%zKJOUBvf8@miOjklioY!Dg7)9%zc}F4R zDYIY~{Gk5sV)|@RacAMEW0=cat3n^SW(Q@|;WX6BSYUe=!DC?e$%JpmxXO$)x9`I5RT)_3J-QPimSz{QT#? zCX?@s?%x@oOH8{ahu%2zUTPwB?A@j=xV@xjeCX;Eg&%*`cVfk%ncKhrynf}CDsM^8 z!xM7{UOo5=Hd#7M-vVD*qeC$Hs1!7KAtKyY`wBYdyv7U%l?^xv4SlmC}>- z1NF_He9>*t&s}XEy8hktmZy5R{j_TQ@}?p0jrnf}>LU-1wlRmFnJ=(yu1qcMt!N6& ZF6&F3?doCre=~n3zUo@f(AJjjzW@#uNI?Jq literal 0 HcmV?d00001 diff --git a/src/main/resources/data/minecraft/recipes/chainmail_boots.json b/src/main/resources/data/minecraft/recipes/chainmail_boots.json new file mode 100644 index 0000000..fc9ad6e --- /dev/null +++ b/src/main/resources/data/minecraft/recipes/chainmail_boots.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "# #" + ], + "key": { + "#": { + "item": "minecraft:chain" + } + }, + "result": { + "item": "minecraft:chainmail_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/recipes/chainmail_chestplate.json b/src/main/resources/data/minecraft/recipes/chainmail_chestplate.json new file mode 100644 index 0000000..444b3a7 --- /dev/null +++ b/src/main/resources/data/minecraft/recipes/chainmail_chestplate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:chain" + } + }, + "result": { + "item": "minecraft:chainmail_chestplate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/recipes/chainmail_helmet.json b/src/main/resources/data/minecraft/recipes/chainmail_helmet.json new file mode 100644 index 0000000..b78ce65 --- /dev/null +++ b/src/main/resources/data/minecraft/recipes/chainmail_helmet.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #" + ], + "key": { + "#": { + "item": "minecraft:chain" + } + }, + "result": { + "item": "minecraft:chainmail_helmet", + "count": 1 + } +} diff --git a/src/main/resources/data/minecraft/recipes/chainmail_leggings.json b/src/main/resources/data/minecraft/recipes/chainmail_leggings.json new file mode 100644 index 0000000..5d4ccac --- /dev/null +++ b/src/main/resources/data/minecraft/recipes/chainmail_leggings.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "# #" + ], + "key": { + "#": { + "item": "minecraft:chain" + } + }, + "result": { + "item": "minecraft:chainmail_leggings", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/recipes/enchanted_golden_apple.json b/src/main/resources/data/minecraft/recipes/enchanted_golden_apple.json new file mode 100644 index 0000000..b4fbae1 --- /dev/null +++ b/src/main/resources/data/minecraft/recipes/enchanted_golden_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:gold_block" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "minecraft:enchanted_golden_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/main/resources/data/minecraft/tags/blocks/beacon_base_blocks.json new file mode 100644 index 0000000..bd9f367 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/beacon_base_blocks.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "vplus:platinum_block", + "vplus:ruby_block" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/beacon_payment_items.json b/src/main/resources/data/minecraft/tags/items/beacon_payment_items.json new file mode 100644 index 0000000..1b887bd --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/beacon_payment_items.json @@ -0,0 +1,7 @@ +{ + "repalce": false, + "values": [ + "vplus:platinum_ingot", + "vplus:ruby" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/loot_tables/blocks/lava_sponge.json b/src/main/resources/data/vplus/loot_tables/blocks/lava_sponge.json new file mode 100644 index 0000000..4f07593 --- /dev/null +++ b/src/main/resources/data/vplus/loot_tables/blocks/lava_sponge.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "vplus:lava_sponge" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/loot_tables/blocks/platinum_block.json b/src/main/resources/data/vplus/loot_tables/blocks/platinum_block.json new file mode 100644 index 0000000..ce305ac --- /dev/null +++ b/src/main/resources/data/vplus/loot_tables/blocks/platinum_block.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "vplus:platinum_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/loot_tables/blocks/platinum_ore.json b/src/main/resources/data/vplus/loot_tables/blocks/platinum_ore.json new file mode 100644 index 0000000..fb37983 --- /dev/null +++ b/src/main/resources/data/vplus/loot_tables/blocks/platinum_ore.json @@ -0,0 +1,56 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "vplus:platinum_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "parameters": { + "bonusMultiplier": 1 + } + } + ], + "name": "vplus:platinum_nugget" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/loot_tables/blocks/ruby_block.json b/src/main/resources/data/vplus/loot_tables/blocks/ruby_block.json new file mode 100644 index 0000000..3ef35ad --- /dev/null +++ b/src/main/resources/data/vplus/loot_tables/blocks/ruby_block.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "vplus:ruby_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/loot_tables/blocks/ruby_ore.json b/src/main/resources/data/vplus/loot_tables/blocks/ruby_ore.json new file mode 100644 index 0000000..496fed9 --- /dev/null +++ b/src/main/resources/data/vplus/loot_tables/blocks/ruby_ore.json @@ -0,0 +1,56 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "vplus:ruby_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 1.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "parameters": { + "bonusMultiplier": 1 + } + } + ], + "name": "vplus:ruby" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/loot_tables/blocks/saturated_lava_sponge.json b/src/main/resources/data/vplus/loot_tables/blocks/saturated_lava_sponge.json new file mode 100644 index 0000000..612ab18 --- /dev/null +++ b/src/main/resources/data/vplus/loot_tables/blocks/saturated_lava_sponge.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "vplus:saturated_lava_sponge" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/diamond_apple.json b/src/main/resources/data/vplus/recipes/diamond_apple.json new file mode 100644 index 0000000..01d3741 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/diamond_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:diamond" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:diamond_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_apple.json b/src/main/resources/data/vplus/recipes/emerald_apple.json new file mode 100644 index 0000000..dbcadc3 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:emerald" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:emerald_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_axe.json b/src/main/resources/data/vplus/recipes/emerald_axe.json new file mode 100644 index 0000000..e063f82 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_axe.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XX", + "X#", + " #" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "vplus:emerald_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_boots.json b/src/main/resources/data/vplus/recipes/emerald_boots.json new file mode 100644 index 0000000..08f8e72 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_boots.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "# #" + ], + "key": { + "#": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "vplus:emerald_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_chestplate.json b/src/main/resources/data/vplus/recipes/emerald_chestplate.json new file mode 100644 index 0000000..dd63411 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_chestplate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "vplus:emerald_chestplate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_helmet.json b/src/main/resources/data/vplus/recipes/emerald_helmet.json new file mode 100644 index 0000000..a5d0ed4 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_helmet.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #" + ], + "key": { + "#": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "vplus:emerald_helmet", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_hoe.json b/src/main/resources/data/vplus/recipes/emerald_hoe.json new file mode 100644 index 0000000..06fe807 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_hoe.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + " /", + " /" + ], + "key": { + "#": { + "item": "minecraft:emerald" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:emerald_hoe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_leggings.json b/src/main/resources/data/vplus/recipes/emerald_leggings.json new file mode 100644 index 0000000..6aa1cf0 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_leggings.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "# #" + ], + "key": { + "#": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "vplus:emerald_leggings", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_pickaxe.json b/src/main/resources/data/vplus/recipes/emerald_pickaxe.json new file mode 100644 index 0000000..0b4411e --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_pickaxe.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " / ", + " / " + ], + "key": { + "#": { + "item": "minecraft:emerald" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:emerald_pickaxe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_shovel.json b/src/main/resources/data/vplus/recipes/emerald_shovel.json new file mode 100644 index 0000000..54acfc4 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_shovel.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "/", + "/" + ], + "key": { + "#": { + "item": "minecraft:emerald" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:emerald_shovel", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/emerald_sword.json b/src/main/resources/data/vplus/recipes/emerald_sword.json new file mode 100644 index 0000000..f11c878 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/emerald_sword.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "#", + "/" + ], + "key": { + "#": { + "item": "minecraft:emerald" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:emerald_sword", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/enchanted_diamond_apple.json b/src/main/resources/data/vplus/recipes/enchanted_diamond_apple.json new file mode 100644 index 0000000..06802c4 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/enchanted_diamond_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:diamond_block" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:enchanted_diamond_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/enchanted_emerald_apple.json b/src/main/resources/data/vplus/recipes/enchanted_emerald_apple.json new file mode 100644 index 0000000..f494bc2 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/enchanted_emerald_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:emerald_block" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:enchanted_emerald_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/enchanted_iron_apple.json b/src/main/resources/data/vplus/recipes/enchanted_iron_apple.json new file mode 100644 index 0000000..57f75dc --- /dev/null +++ b/src/main/resources/data/vplus/recipes/enchanted_iron_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#A#", + "###" + ], + "key": { + "#": { + "item": "minecraft:iron_block" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:enchanted_iron_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/enchanted_netherite_apple.json b/src/main/resources/data/vplus/recipes/enchanted_netherite_apple.json new file mode 100644 index 0000000..9eb4925 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/enchanted_netherite_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:netherite_block" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:enchanted_netherite_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/enchanted_platinum_apple.json b/src/main/resources/data/vplus/recipes/enchanted_platinum_apple.json new file mode 100644 index 0000000..3ecde69 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/enchanted_platinum_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "vplus:platinum_block" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:enchanted_platinum_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/iron_apple.json b/src/main/resources/data/vplus/recipes/iron_apple.json new file mode 100644 index 0000000..119384c --- /dev/null +++ b/src/main/resources/data/vplus/recipes/iron_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:iron_ingot" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:iron_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/lava_sponge.json b/src/main/resources/data/vplus/recipes/lava_sponge.json new file mode 100644 index 0000000..f617b68 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/lava_sponge.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#S#", + "###" + ], + "key": { + "#": { + "item": "minecraft:netherite_scrap" + }, + "S": { + "item": "minecraft:sponge" + } + }, + "result": { + "item": "vplus:lava_sponge", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/netherite_apple.json b/src/main/resources/data/vplus/recipes/netherite_apple.json new file mode 100644 index 0000000..1f7ed08 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/netherite_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "minecraft:netherite_ingot" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:netherite_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_apple.json b/src/main/resources/data/vplus/recipes/platinum_apple.json new file mode 100644 index 0000000..da25de0 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "iii", + "iAi", + "iii" + ], + "key": { + "i": { + "item": "vplus:platinum_ingot" + }, + "A": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:platinum_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_axe.json b/src/main/resources/data/vplus/recipes/platinum_axe.json new file mode 100644 index 0000000..9e5d6fb --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_axe.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XX", + "X#", + " #" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_axe_smithing.json b/src/main/resources/data/vplus/recipes/platinum_axe_smithing.json new file mode 100644 index 0000000..cef03b6 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_axe_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_axe" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_block.json b/src/main/resources/data/vplus/recipes/platinum_block.json new file mode 100644 index 0000000..7a4b74b --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_block.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_block", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_boots.json b/src/main/resources/data/vplus/recipes/platinum_boots.json new file mode 100644 index 0000000..a5834d5 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_boots.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "# #" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_boots_smithing.json b/src/main/resources/data/vplus/recipes/platinum_boots_smithing.json new file mode 100644 index 0000000..96f8662 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_boots_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_boots" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_chestplate.json b/src/main/resources/data/vplus/recipes/platinum_chestplate.json new file mode 100644 index 0000000..c590ab0 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_chestplate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "###", + "###" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_chestplate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_chestplate_smithing.json b/src/main/resources/data/vplus/recipes/platinum_chestplate_smithing.json new file mode 100644 index 0000000..5907447 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_chestplate_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_chestplate" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_helmet.json b/src/main/resources/data/vplus/recipes/platinum_helmet.json new file mode 100644 index 0000000..4c4db72 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_helmet.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_helmet", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_helmet_smithing.json b/src/main/resources/data/vplus/recipes/platinum_helmet_smithing.json new file mode 100644 index 0000000..326f913 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_helmet_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_helmet" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_hoe.json b/src/main/resources/data/vplus/recipes/platinum_hoe.json new file mode 100644 index 0000000..8ab2ed1 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_hoe.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + " /", + " /" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:platinum_hoe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_hoe_smithing.json b/src/main/resources/data/vplus/recipes/platinum_hoe_smithing.json new file mode 100644 index 0000000..4e82f10 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_hoe_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_hoe" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_hoe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_ingot.json b/src/main/resources/data/vplus/recipes/platinum_ingot.json new file mode 100644 index 0000000..ecba660 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_ingot.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "vplus:platinum_ore" + }, + "result": "vplus:platinum_ingot", + "experience": 2.5, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_ingot_from_blasting.json b/src/main/resources/data/vplus/recipes/platinum_ingot_from_blasting.json new file mode 100644 index 0000000..88c2479 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_ingot_from_blasting.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "vplus:platinum_ore" + }, + "result": "vplus:platinum_ingot", + "experience": 2.5, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_ingot_from_block.json b/src/main/resources/data/vplus/recipes/platinum_ingot_from_block.json new file mode 100644 index 0000000..8d7f854 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_ingot_from_block.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#" + ], + "key": { + "#": { + "item": "vplus:platinum_block" + } + }, + "result": { + "item": "vplus:platinum_ingot", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_ingot_from_nuggets.json b/src/main/resources/data/vplus/recipes/platinum_ingot_from_nuggets.json new file mode 100644 index 0000000..63759b0 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_ingot_from_nuggets.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "vplus:platinum_nugget" + } + }, + "result": { + "item": "vplus:platinum_ingot", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_leggings.json b/src/main/resources/data/vplus/recipes/platinum_leggings.json new file mode 100644 index 0000000..8f1d4ff --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_leggings.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "# #" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_leggings", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_leggings_smithing.json b/src/main/resources/data/vplus/recipes/platinum_leggings_smithing.json new file mode 100644 index 0000000..1377a54 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_leggings_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_leggings" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_nugget_from_ingot.json b/src/main/resources/data/vplus/recipes/platinum_nugget_from_ingot.json new file mode 100644 index 0000000..33f9d3f --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_nugget_from_ingot.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + } + }, + "result": { + "item": "vplus:platinum_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_pickaxe.json b/src/main/resources/data/vplus/recipes/platinum_pickaxe.json new file mode 100644 index 0000000..7b1ed1e --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_pickaxe.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " / ", + " / " + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:platinum_pickaxe", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_pickaxe_smithing.json b/src/main/resources/data/vplus/recipes/platinum_pickaxe_smithing.json new file mode 100644 index 0000000..2d4975a --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_pickaxe_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_pickaxe" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_pickaxe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_shovel.json b/src/main/resources/data/vplus/recipes/platinum_shovel.json new file mode 100644 index 0000000..af12bd6 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_shovel.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "/", + "/" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:platinum_shovel", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_shovel_smithing.json b/src/main/resources/data/vplus/recipes/platinum_shovel_smithing.json new file mode 100644 index 0000000..7a784f6 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_shovel_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_shovel" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_shovel" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_sword.json b/src/main/resources/data/vplus/recipes/platinum_sword.json new file mode 100644 index 0000000..557ab3d --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_sword.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "#", + "/" + ], + "key": { + "#": { + "item": "vplus:platinum_ingot" + }, + "/": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "vplus:platinum_sword", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/platinum_sword_smithing.json b/src/main/resources/data/vplus/recipes/platinum_sword_smithing.json new file mode 100644 index 0000000..665aa00 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/platinum_sword_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "minecraft:netherite_sword" + }, + "addition": { + "item": "vplus:platinum_ingot" + }, + "result": { + "item": "vplus:platinum_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_apple.json b/src/main/resources/data/vplus/recipes/ruby_apple.json new file mode 100644 index 0000000..02127c9 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_apple.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#/#", + "###" + ], + "key": { + "#": { + "item": "vplus:ruby" + }, + "/": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "vplus:ruby_apple", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_axe.json b/src/main/resources/data/vplus/recipes/ruby_axe.json new file mode 100644 index 0000000..7ee9dd9 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_axe.json @@ -0,0 +1,19 @@ +{ +"type": "minecraft:crafting_shaped", +"pattern": [ +"XX", +"X#", +" #" +], +"key": { +"#": { +"item": "minecraft:stick" +}, +"X": { +"item": "vplus:ruby" +} +}, +"result": { +"item": "vplus:ruby_axe" +} +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_axe_smithing.json b/src/main/resources/data/vplus/recipes/ruby_axe_smithing.json new file mode 100644 index 0000000..1404c37 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_axe_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "vplus:platinum_axe" + }, + "addition": { + "item": "vplus:ruby" + }, + "result": { + "item": "vplus:ruby_axe" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_block.json b/src/main/resources/data/vplus/recipes/ruby_block.json new file mode 100644 index 0000000..f113d95 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_block.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "vplus:ruby" + } + }, + "result": { + "item": "vplus:ruby_block", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_boots.json b/src/main/resources/data/vplus/recipes/ruby_boots.json new file mode 100644 index 0000000..deec6f1 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_boots.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "# #" + ], + "key": { + "#": { + "item": "vplus:ruby" + } + }, + "result": { + "item": "vplus:ruby_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_boots_smithing.json b/src/main/resources/data/vplus/recipes/ruby_boots_smithing.json new file mode 100644 index 0000000..b32af39 --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_boots_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "base": { + "item": "vplus:platinum_boots" + }, + "addition": { + "item": "vplus:ruby" + }, + "result": { + "item": "vplus:ruby_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/data/vplus/recipes/ruby_from_block.json b/src/main/resources/data/vplus/recipes/ruby_from_block.json new file mode 100644 index 0000000..c42afbe --- /dev/null +++ b/src/main/resources/data/vplus/recipes/ruby_from_block.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#" + ], + "key": { + "#": { + "item": "vplus:ruby_block" + } + }, + "result": { + "item": "vplus:ruby", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..7347a0f --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,38 @@ +{ + "schemaVersion": 1, + "id": "vplus", + "version": "${version}", + + "name": "Vanilla Plus", + "description": "Adding things that should be in the vanilla game!", + "authors": [ + "nevetS-718" + ], + "contact": { + "homepage": "https://nevets.tech/", + "sources": "https://github.com/nevetS-718/VanillaPlus" + }, + + "license": "CC0-1.0", + "icon": "assets/vplus/icon.png", + + "environment": "*", + "entrypoints": { + "main": [ + "tech.nevets.vplus.Main" + ] + }, + "mixins": [ + "vplus.mixins.json" + ], + + "depends": { + "fabricloader": ">=0.11.3", + "fabric": "*", + "minecraft": "1.17.x", + "java": ">=16" + }, + "suggests": { + "another-mod": "*" + } +} \ No newline at end of file diff --git a/src/main/resources/vplus.mixins.json b/src/main/resources/vplus.mixins.json new file mode 100644 index 0000000..787a8af --- /dev/null +++ b/src/main/resources/vplus.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "tech.nevets.vplus.mixin", + "compatibilityLevel": "JAVA_16", + "mixins": [ + ], + "client": [ + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file