Browse Source

cloth armor, resistant wheat, carrot, patotoe and beetroot crops

Kajetan Johannes Hammerle 2 years ago
parent
commit
dad2396dab
31 changed files with 762 additions and 222 deletions
  1. 4 0
      src/main/java/me/km/Client.java
  2. 35 0
      src/main/java/me/km/blocks/ModBlocks.java
  3. 17 0
      src/main/java/me/km/blocks/crops/ModBeetrootBlock.java
  4. 17 0
      src/main/java/me/km/blocks/crops/ModCarrotBlock.java
  5. 17 0
      src/main/java/me/km/blocks/crops/ModCropsBlock.java
  6. 17 0
      src/main/java/me/km/blocks/crops/ModPotatoBlock.java
  7. 21 9
      src/main/java/me/km/items/ModArmorMaterial.java
  8. 14 0
      src/main/java/me/km/items/ModItems.java
  9. 16 0
      src/main/resources/assets/km/blockstates/rbeetroots.json
  10. 28 0
      src/main/resources/assets/km/blockstates/rcarrots.json
  11. 28 0
      src/main/resources/assets/km/blockstates/rpotatoes.json
  12. 28 0
      src/main/resources/assets/km/blockstates/rwheat.json
  13. 182 213
      src/main/resources/assets/km/lang/en_us.json
  14. 6 0
      src/main/resources/assets/km/models/item/cloth_boots.json
  15. 6 0
      src/main/resources/assets/km/models/item/cloth_chestplate.json
  16. 6 0
      src/main/resources/assets/km/models/item/cloth_helmet.json
  17. 6 0
      src/main/resources/assets/km/models/item/cloth_leggings.json
  18. BIN
      src/main/resources/assets/km/textures/item/cloth/cloth_boots.png
  19. BIN
      src/main/resources/assets/km/textures/item/cloth/cloth_chestplate.png
  20. BIN
      src/main/resources/assets/km/textures/item/cloth/cloth_helmet.png
  21. BIN
      src/main/resources/assets/km/textures/item/cloth/cloth_leggings.png
  22. BIN
      src/main/resources/assets/km/textures/models/armor/cloth_layer_1.png
  23. BIN
      src/main/resources/assets/km/textures/models/armor/cloth_layer_2.png
  24. 66 0
      src/main/resources/data/km/loot_tables/blocks/rbeetroots.json
  25. 48 0
      src/main/resources/data/km/loot_tables/blocks/rcarrots.json
  26. 72 0
      src/main/resources/data/km/loot_tables/blocks/rpotatoes.json
  27. 66 0
      src/main/resources/data/km/loot_tables/blocks/rwheat.json
  28. 15 0
      src/main/resources/data/km/recipes/armor/cloth_boots.json
  29. 16 0
      src/main/resources/data/km/recipes/armor/cloth_chestplate.json
  30. 15 0
      src/main/resources/data/km/recipes/armor/cloth_helmet.json
  31. 16 0
      src/main/resources/data/km/recipes/armor/cloth_leggings.json

+ 4 - 0
src/main/java/me/km/Client.java

@@ -82,6 +82,10 @@ public class Client {
         RenderTypeLookup.setRenderLayer(ModBlocks.apricotLeaves, RenderType.getCutoutMipped());
         RenderTypeLookup.setRenderLayer(ModBlocks.pearLeaves, RenderType.getCutoutMipped());
         RenderTypeLookup.setRenderLayer(ModBlocks.plumLeaves, RenderType.getCutoutMipped());
+        RenderTypeLookup.setRenderLayer(ModBlocks.wheat, RenderType.getCutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.carrots, RenderType.getCutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.potatoes, RenderType.getCutout());
+        RenderTypeLookup.setRenderLayer(ModBlocks.beetroots, RenderType.getCutout());
 
         BlockColors bColors = Minecraft.getInstance().getBlockColors();
         bColors.register((state, w, pos, tintIndex) -> {

+ 35 - 0
src/main/java/me/km/blocks/ModBlocks.java

@@ -1,8 +1,10 @@
 package me.km.blocks;
 
 import me.km.blocks.cookingpot.BlockCookingPot;
+import me.km.blocks.crops.*;
 import me.km.utils.ReflectionUtils;
 import net.minecraft.block.AbstractBlock.Properties;
+import net.minecraft.block.AbstractBlock;
 import net.minecraft.block.Block;
 import net.minecraft.block.SoundType;
 import net.minecraft.block.material.Material;
@@ -81,6 +83,12 @@ public class ModBlocks {
     public static Block barrierLight;
     public static Block barrierSolid;
 
+    // crops
+    public static Block wheat;
+    public static Block carrots;
+    public static Block potatoes;
+    public static Block beetroots;
+
     private static Block create(String registry, Material m, float hardness, float resistance) {
         Block b = new Block(Properties.create(m).hardnessAndResistance(hardness, resistance));
         b.setRegistryName(registry);
@@ -228,6 +236,27 @@ public class ModBlocks {
         barrierLight = register(r, createInvisibleLight("barrier_light"));
         barrierSolid = register(r, createInvisible("barrier_solid"));
 
+        // crops
+        wheat = register(r, "rwheat",
+                new ModCropsBlock(
+                        AbstractBlock.Properties.create(Material.PLANTS).doesNotBlockMovement()
+                                .tickRandomly().zeroHardnessAndResistance().sound(SoundType.CROP)));
+        carrots =
+                register(r, "rcarrots",
+                        new ModCarrotBlock(AbstractBlock.Properties.create(Material.PLANTS)
+                                .doesNotBlockMovement().tickRandomly().zeroHardnessAndResistance()
+                                .sound(SoundType.CROP)));
+        potatoes =
+                register(r, "rpotatoes",
+                        new ModPotatoBlock(AbstractBlock.Properties.create(Material.PLANTS)
+                                .doesNotBlockMovement().tickRandomly().zeroHardnessAndResistance()
+                                .sound(SoundType.CROP)));
+        beetroots =
+                register(r, "rbeetroots",
+                        new ModBeetrootBlock(AbstractBlock.Properties.create(Material.PLANTS)
+                                .doesNotBlockMovement().tickRandomly().zeroHardnessAndResistance()
+                                .sound(SoundType.CROP)));
+
         ReflectionUtils.setFireInfo(bookshelfAcacia, 30, 20);
         ReflectionUtils.setFireInfo(bookshelfBirch, 30, 20);
         ReflectionUtils.setFireInfo(bookshelfDarkOak, 30, 20);
@@ -319,6 +348,12 @@ public class ModBlocks {
         return block;
     }
 
+    private static Block register(IForgeRegistry<Block> r, String registry, Block block) {
+        block.setRegistryName(registry);
+        r.register(block);
+        return block;
+    }
+
     private static BlockItem getItemBlock(Block block, ItemGroup group) {
         BlockItem itemBlock = new BlockItem(block, new Item.Properties().group(group));
         itemBlock.setRegistryName(block.getRegistryName());

+ 17 - 0
src/main/java/me/km/blocks/crops/ModBeetrootBlock.java

@@ -0,0 +1,17 @@
+package me.km.blocks.crops;
+
+import net.minecraft.block.BeetrootBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IBlockReader;
+
+public class ModBeetrootBlock extends BeetrootBlock {
+    public ModBeetrootBlock(Properties properties) {
+        super(properties);
+    }
+
+    @Override
+    protected boolean isValidGround(BlockState state, IBlockReader w, BlockPos pos) {
+        return true;
+    }
+}

+ 17 - 0
src/main/java/me/km/blocks/crops/ModCarrotBlock.java

@@ -0,0 +1,17 @@
+package me.km.blocks.crops;
+
+import net.minecraft.block.CarrotBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IBlockReader;
+
+public class ModCarrotBlock extends CarrotBlock {
+    public ModCarrotBlock(Properties properties) {
+        super(properties);
+    }
+
+    @Override
+    protected boolean isValidGround(BlockState state, IBlockReader w, BlockPos pos) {
+        return true;
+    }
+}

+ 17 - 0
src/main/java/me/km/blocks/crops/ModCropsBlock.java

@@ -0,0 +1,17 @@
+package me.km.blocks.crops;
+
+import net.minecraft.block.BlockState;
+import net.minecraft.block.CropsBlock;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IBlockReader;
+
+public class ModCropsBlock extends CropsBlock {
+    public ModCropsBlock(Properties builder) {
+        super(builder);
+    }
+
+    @Override
+    protected boolean isValidGround(BlockState state, IBlockReader w, BlockPos pos) {
+        return true;
+    }
+}

+ 17 - 0
src/main/java/me/km/blocks/crops/ModPotatoBlock.java

@@ -0,0 +1,17 @@
+package me.km.blocks.crops;
+
+import net.minecraft.block.PotatoBlock;
+import net.minecraft.block.BlockState;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IBlockReader;
+
+public class ModPotatoBlock extends PotatoBlock {
+    public ModPotatoBlock(Properties properties) {
+        super(properties);
+    }
+
+    @Override
+    protected boolean isValidGround(BlockState state, IBlockReader w, BlockPos pos) {
+        return true;
+    }
+}

+ 21 - 9
src/main/java/me/km/items/ModArmorMaterial.java

@@ -12,15 +12,25 @@ import net.minecraftforge.api.distmarker.Dist;
 import net.minecraftforge.api.distmarker.OnlyIn;
 
 public enum ModArmorMaterial implements IArmorMaterial {
-    COPPER("km:copper", 9, new int[]{1, 4, 5, 1}, 20, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f, () -> Ingredient.fromItems(ModItems.copperIngot)),
-    BRONZE("km:bronze", 13, new int[]{2, 5, 6, 2}, 3, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f, () -> Ingredient.fromItems(ModItems.bronzeIngot)),
-    STRAW("km:straw", 3, new int[]{1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f, () -> Ingredient.fromItems(Items.WHEAT)),
-    CYLINDER("km:cylinder", 3, new int[]{1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f, () -> Ingredient.fromItems(Items.STRING)),
-    SILK("km:silk", 3, new int[]{1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f, () -> Ingredient.fromItems(Items.STRING));
+    COPPER("km:copper", 9, new int[] {1, 4, 5, 1}, 20, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f,
+            () -> Ingredient.fromItems(ModItems.copperIngot)),
 
-    private static final int[] MAX_DAMAGE_ARRAY = new int[]{
-        13, 15, 16, 11
-    };
+    BRONZE("km:bronze", 13, new int[] {2, 5, 6, 2}, 3, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f,
+            () -> Ingredient.fromItems(ModItems.bronzeIngot)),
+
+    STRAW("km:straw", 3, new int[] {1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f,
+            () -> Ingredient.fromItems(Items.WHEAT)),
+
+    CYLINDER("km:cylinder", 3, new int[] {1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER,
+            0.0f, () -> Ingredient.fromItems(Items.STRING)),
+
+    SILK("km:silk", 3, new int[] {1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f,
+            () -> Ingredient.fromItems(Items.STRING)),
+
+    CLOTH("km:cloth", 4, new int[] {1, 2, 2, 1}, 15, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f,
+            () -> Ingredient.fromItems(ModItems.cloth));
+
+    private static final int[] MAX_DAMAGE_ARRAY = new int[] {13, 15, 16, 11};
 
     private final String name;
     private final int maxDamageFactor;
@@ -30,7 +40,9 @@ public enum ModArmorMaterial implements IArmorMaterial {
     private final float toughness;
     private final LazyValue<Ingredient> repairMaterial;
 
-    private ModArmorMaterial(String name, int maxDamageFactor, int[] damageReduction, int enchantability, SoundEvent se, float toughness, Supplier<Ingredient> repairMaterial) {
+    private ModArmorMaterial(String name, int maxDamageFactor, int[] damageReduction,
+            int enchantability, SoundEvent se, float toughness,
+            Supplier<Ingredient> repairMaterial) {
         this.name = name;
         this.maxDamageFactor = maxDamageFactor;
         this.damageReductionAmountArray = damageReduction;

+ 14 - 0
src/main/java/me/km/items/ModItems.java

@@ -65,6 +65,11 @@ public class ModItems {
 
     public static Item strawHat;
 
+    public static Item clothHelmet;
+    public static Item clothChestplate;
+    public static Item clothLeggings;
+    public static Item clothBoots;
+
     // sticks
     public static Item woodenStick;
     public static Item stoneStick;
@@ -314,6 +319,15 @@ public class ModItems {
 
         strawHat = register(r, new ItemHat(ModArmorMaterial.STRAW, new Properties()), "straw_hat");
 
+        clothHelmet = register(r, newArmor(ModArmorMaterial.CLOTH, EquipmentSlotType.HEAD),
+                "cloth_helmet");
+        clothChestplate = register(r, newArmor(ModArmorMaterial.CLOTH, EquipmentSlotType.CHEST),
+                "cloth_chestplate");
+        clothLeggings = register(r, newArmor(ModArmorMaterial.CLOTH, EquipmentSlotType.LEGS),
+                "cloth_leggings");
+        clothBoots = register(r, newArmor(ModArmorMaterial.CLOTH, EquipmentSlotType.FEET),
+                "cloth_boots");
+
         // sticks
         woodenStick = register(r, newStick(ItemTier.WOOD), "wooden_stick");
         stoneStick = register(r, newStick(ItemTier.STONE), "stone_stick");

+ 16 - 0
src/main/resources/assets/km/blockstates/rbeetroots.json

@@ -0,0 +1,16 @@
+{
+    "variants": {
+        "age=0": {
+            "model": "minecraft:block/beetroots_stage0"
+        },
+        "age=1": {
+            "model": "minecraft:block/beetroots_stage1"
+        },
+        "age=2": {
+            "model": "minecraft:block/beetroots_stage2"
+        },
+        "age=3": {
+            "model": "minecraft:block/beetroots_stage3"
+        }
+    }
+}

+ 28 - 0
src/main/resources/assets/km/blockstates/rcarrots.json

@@ -0,0 +1,28 @@
+{
+    "variants": {
+        "age=0": {
+            "model": "minecraft:block/carrots_stage0"
+        },
+        "age=1": {
+            "model": "minecraft:block/carrots_stage0"
+        },
+        "age=2": {
+            "model": "minecraft:block/carrots_stage1"
+        },
+        "age=3": {
+            "model": "minecraft:block/carrots_stage1"
+        },
+        "age=4": {
+            "model": "minecraft:block/carrots_stage2"
+        },
+        "age=5": {
+            "model": "minecraft:block/carrots_stage2"
+        },
+        "age=6": {
+            "model": "minecraft:block/carrots_stage2"
+        },
+        "age=7": {
+            "model": "minecraft:block/carrots_stage3"
+        }
+    }
+}

+ 28 - 0
src/main/resources/assets/km/blockstates/rpotatoes.json

@@ -0,0 +1,28 @@
+{
+    "variants": {
+        "age=0": {
+            "model": "minecraft:block/potatoes_stage0"
+        },
+        "age=1": {
+            "model": "minecraft:block/potatoes_stage0"
+        },
+        "age=2": {
+            "model": "minecraft:block/potatoes_stage1"
+        },
+        "age=3": {
+            "model": "minecraft:block/potatoes_stage1"
+        },
+        "age=4": {
+            "model": "minecraft:block/potatoes_stage2"
+        },
+        "age=5": {
+            "model": "minecraft:block/potatoes_stage2"
+        },
+        "age=6": {
+            "model": "minecraft:block/potatoes_stage2"
+        },
+        "age=7": {
+            "model": "minecraft:block/potatoes_stage3"
+        }
+    }
+}

+ 28 - 0
src/main/resources/assets/km/blockstates/rwheat.json

@@ -0,0 +1,28 @@
+{
+    "variants": {
+        "age=0": {
+            "model": "minecraft:block/wheat_stage0"
+        },
+        "age=1": {
+            "model": "minecraft:block/wheat_stage1"
+        },
+        "age=2": {
+            "model": "minecraft:block/wheat_stage2"
+        },
+        "age=3": {
+            "model": "minecraft:block/wheat_stage3"
+        },
+        "age=4": {
+            "model": "minecraft:block/wheat_stage4"
+        },
+        "age=5": {
+            "model": "minecraft:block/wheat_stage5"
+        },
+        "age=6": {
+            "model": "minecraft:block/wheat_stage6"
+        },
+        "age=7": {
+            "model": "minecraft:block/wheat_stage7"
+        }
+    }
+}

+ 182 - 213
src/main/resources/assets/km/lang/en_us.json

@@ -1,207 +1,178 @@
-{ 
-    "item.km.copper_ingot": "Copper Ingot", 
-    "item.km.copper_nugget": "Copper Nugget", 
-    "item.km.tin_ingot": "Tin Ingot", 
-    "item.km.tin_nugget": "Tin Nugget", 
-    "item.km.bronze_ingot": "Bronze Ingot", 
-    "item.km.bronze_nugget": "Bronze Nugget", 
-    "item.km.silver_ingot": "Silver Ingot", 
-    "item.km.silver_nugget": "Silver Nugget", 
- 
-    "item.km.copper_sword": "Copper Sword", 
-    "item.km.copper_shovel": "Copper Shovel", 
-    "item.km.copper_pickaxe": "Copper Pickaxe", 
-    "item.km.copper_axe": "Copper Axe", 
-    "item.km.copper_hoe": "Copper Hoe", 
- 
-    "item.km.bronze_sword": "Bronze Sword", 
-    "item.km.bronze_shovel": "Bronze Shovel", 
-    "item.km.bronze_pickaxe": "Bronze Pickaxe", 
-    "item.km.bronze_axe": "Bronze Axe", 
-    "item.km.bronze_hoe": "Bronze Hoe", 
- 
-    "item.km.sling": "Sling", 
- 
-    "item.km.copper_helmet": "Copper Helmet", 
-    "item.km.copper_chestplate": "Copper Chestplate", 
-    "item.km.copper_leggings": "Copper Leggings", 
-    "item.km.copper_boots": "Copper Boots", 
- 
-    "item.km.bronze_helmet": "Bronze Helmet", 
-    "item.km.bronze_chestplate": "Bronze Chestplate", 
-    "item.km.bronze_leggings": "Bronze Leggings", 
-    "item.km.bronze_boots": "Bronze Boots", 
-  
-    "block.km.copper_ore": "Copper Ore", 
-    "block.km.copper_block": "Copper Block", 
-    "block.km.tin_ore": "Tin Ore", 
-    "block.km.tin_block": "Tin Block", 
-    "block.km.bronze_block": "Bronze Block", 
-    "block.km.silver_ore": "Silver Ore", 
-    "block.km.silver_block": "Silver Block", 
- 
-    "block.km.guild_block": "Guild Block", 
-    "block.km.artefact": "Artefact", 
-
+{
+    "item.km.copper_ingot": "Copper Ingot",
+    "item.km.copper_nugget": "Copper Nugget",
+    "item.km.tin_ingot": "Tin Ingot",
+    "item.km.tin_nugget": "Tin Nugget",
+    "item.km.bronze_ingot": "Bronze Ingot",
+    "item.km.bronze_nugget": "Bronze Nugget",
+    "item.km.silver_ingot": "Silver Ingot",
+    "item.km.silver_nugget": "Silver Nugget",
+    "item.km.copper_sword": "Copper Sword",
+    "item.km.copper_shovel": "Copper Shovel",
+    "item.km.copper_pickaxe": "Copper Pickaxe",
+    "item.km.copper_axe": "Copper Axe",
+    "item.km.copper_hoe": "Copper Hoe",
+    "item.km.bronze_sword": "Bronze Sword",
+    "item.km.bronze_shovel": "Bronze Shovel",
+    "item.km.bronze_pickaxe": "Bronze Pickaxe",
+    "item.km.bronze_axe": "Bronze Axe",
+    "item.km.bronze_hoe": "Bronze Hoe",
+    "item.km.sling": "Sling",
+    "item.km.copper_helmet": "Copper Helmet",
+    "item.km.copper_chestplate": "Copper Chestplate",
+    "item.km.copper_leggings": "Copper Leggings",
+    "item.km.copper_boots": "Copper Boots",
+    "item.km.bronze_helmet": "Bronze Helmet",
+    "item.km.bronze_chestplate": "Bronze Chestplate",
+    "item.km.bronze_leggings": "Bronze Leggings",
+    "item.km.bronze_boots": "Bronze Boots",
+    "block.km.copper_ore": "Copper Ore",
+    "block.km.copper_block": "Copper Block",
+    "block.km.tin_ore": "Tin Ore",
+    "block.km.tin_block": "Tin Block",
+    "block.km.bronze_block": "Bronze Block",
+    "block.km.silver_ore": "Silver Ore",
+    "block.km.silver_block": "Silver Block",
+    "block.km.guild_block": "Guild Block",
+    "block.km.artefact": "Artefact",
     "block.minecraft.hay_block": "Straw Bale",
-    "block.km.real_hay_block": "Hay Bale", 
-
-    "block.km.crate_acacia": "Acacia Crate", 
-    "block.km.crate_big_oak": "Dark Oak Crate", 
-    "block.km.crate_birch": "Birch Crate", 
-    "block.km.crate_jungle": "Jungle Crate", 
-    "block.km.crate_oak": "Oak Crate", 
-    "block.km.crate_spruce": "Spruce Crate", 
-
-    "block.km.cooking_pot_copper": "Copper Cooking Pot", 
-
-    "block.km.spikes_copper": "Copper Spikes", 
-    "block.km.spikes_bronze": "Bronze Spikes", 
-    "block.km.spikes_gold": "Gold Spikes", 
-    "block.km.spikes_iron": "Iron Spikes", 
- 
-    "block.km.lantern": "Lantern", 
-
-    "block.km.rtall_grass": "Resistant Grass", 
-
-    "block.km.gravel_slab": "Gravel Slab", 
+    "block.km.real_hay_block": "Hay Bale",
+    "block.km.crate_acacia": "Acacia Crate",
+    "block.km.crate_big_oak": "Dark Oak Crate",
+    "block.km.crate_birch": "Birch Crate",
+    "block.km.crate_jungle": "Jungle Crate",
+    "block.km.crate_oak": "Oak Crate",
+    "block.km.crate_spruce": "Spruce Crate",
+    "block.km.cooking_pot_copper": "Copper Cooking Pot",
+    "block.km.spikes_copper": "Copper Spikes",
+    "block.km.spikes_bronze": "Bronze Spikes",
+    "block.km.spikes_gold": "Gold Spikes",
+    "block.km.spikes_iron": "Iron Spikes",
+    "block.km.lantern": "Lantern",
+    "block.km.rtall_grass": "Resistant Grass",
+    "block.km.gravel_slab": "Gravel Slab",
     "block.km.coarse_dirt_slab": "Coarse Dirt Slab",
-
-    "block.km.cherry_leaves": "Cherry Leaves", 
-    "block.km.apricot_leaves": "Apricot Leaves", 
-    "block.km.pear_leaves": "Pear Leaves", 
-    "block.km.plum_leaves": "Plum Leaves", 
-
-    "block.km.cherry_sapling": "Cherry Sapling", 
-    "block.km.apricot_sapling": "Apricot Sapling", 
-    "block.km.pear_sapling": "Pear Sapling", 
-    "block.km.plum_sapling": "Plum Sapling", 
-    
+    "block.km.cherry_leaves": "Cherry Leaves",
+    "block.km.apricot_leaves": "Apricot Leaves",
+    "block.km.pear_leaves": "Pear Leaves",
+    "block.km.plum_leaves": "Plum Leaves",
+    "block.km.cherry_sapling": "Cherry Sapling",
+    "block.km.apricot_sapling": "Apricot Sapling",
+    "block.km.pear_sapling": "Pear Sapling",
+    "block.km.plum_sapling": "Plum Sapling",
     "block.minecraft.bookshelf": "Oak Bookshelf",
-    "block.km.bookshelf_acacia": "Acacia Bookshelf", 
-    "block.km.bookshelf_birch": "Birch Bookshelf", 
-    "block.km.bookshelf_dark_oak": "Dark Oak Bookshelf", 
-    "block.km.bookshelf_jungle": "Jungle Bookshelf", 
-    "block.km.bookshelf_spruce": "Spruce Bookshelf", 
-    
-    "block.km.barrier_light": "Light Barrier", 
-    "block.km.barrier_solid": "Solid Barrier", 
-
-    "item.km.wooden_stick": "Wooden Stick", 
-    "item.km.stone_stick": "Stone Stick", 
-    "item.km.copper_stick": "Copper Stick", 
-    "item.km.bronze_stick": "Bronze Stick", 
-    "item.km.iron_stick": "Iron Stick", 
-    "item.km.golden_stick": "Golden Stick", 
-    "item.km.diamond_stick": "Diamond Stick", 
-
-    "item.km.wooden_scepter": "Wooden Scepter", 
-    "item.km.stone_scepter": "Stone Scepter", 
-    "item.km.copper_scepter": "Copper Scepter", 
-    "item.km.bronze_scepter": "Bronze Scepter", 
-    "item.km.iron_scepter": "Iron Scepter", 
-    "item.km.golden_scepter": "Golden Scepter", 
-    "item.km.diamond_scepter": "Diamond Scepter", 
-
-    "item.km.wooden_dagger": "Wooden Dagger", 
-    "item.km.stone_dagger": "Stone Dagger", 
-    "item.km.copper_dagger": "Copper Dagger", 
-    "item.km.bronze_dagger": "Bronze Dagger", 
-    "item.km.iron_dagger": "Iron Dagger", 
-    "item.km.golden_dagger": "Golden Dagger", 
-    "item.km.diamond_dagger": "Diamond Dagger", 
-
-    "item.km.wooden_hammer": "Wooden Hammer", 
-    "item.km.stone_hammer": "Stone Hammer", 
-    "item.km.copper_hammer": "Copper Hammer", 
-    "item.km.bronze_hammer": "Bronze Hammer", 
-    "item.km.iron_hammer": "Iron Hammer", 
-    "item.km.golden_hammer": "Golden Hammer", 
-    "item.km.diamond_hammer": "Diamond Hammer", 
-    
-    "item.km.wooden_battleaxe": "Wooden Battleaxe", 
-    "item.km.stone_battleaxe": "Stone Battleaxe", 
-    "item.km.copper_battleaxe": "Copper Battleaxe", 
-    "item.km.bronze_battleaxe": "Bronze Battleaxe", 
-    "item.km.iron_battleaxe": "Iron Battleaxe", 
-    "item.km.golden_battleaxe": "Golden Battleaxe", 
-    "item.km.diamond_battleaxe": "Diamond Battleaxe", 
-
-    "item.km.wooden_key": "Wooden Key", 
-    "item.km.silver_key": "Silver Key", 
-    "item.km.copper_key": "Copper Key", 
-    "item.km.bronze_key": "Bronze Key", 
-    "item.km.iron_key": "Iron Key", 
-    "item.km.golden_key": "Golden Key", 
-    "item.km.diamond_key": "Diamond Key", 
-
-    "item.km.cylinder": "Cylinder Hat", 
-    "item.km.suit_chestplate": "Suit Jacket", 
-    "item.km.suit_leggings": "Dress Pants ", 
-    "item.km.suit_boots": "Dress Shoes", 
-
-    "item.km.straw_hat": "Straw Hat", 
-
-    "item.km.coin_copper": "Copper Coin", 
-    "item.km.coin_silver": "Silver Coin", 
-    "item.km.coin_gold": "Gold Coin", 
-
-    "block.km.real_hay_bed": "Hay Mat", 
-    "item.km.hay_bundle": "Hay Bundle", 
-    "item.km.bat_wing": "Bat Wing", 
-    "item.km.wolf_fur": "Wolf Fur", 
-    "item.km.bear_polar_fur": "Polar Bear Fur", 
-    "item.km.cloth": "Cloth", 
-    "item.km.coarse_cloth": "Coarse Cloth", 
-    "item.km.gem_stone": "Gemstone", 
-    "item.km.raw_gem_stone": "Raw Gemstone", 
-    "item.km.flawless_gem_stone": "Flawless Gemstone", 
-    "item.km.scroll": "Scroll", 
-    "item.km.soul_stone": "Soul Stone", 
-    "item.km.piercing_stone": "Piercing Stone", 
-    "item.km.shell": "Shell", 
-
-    "item.km.colored_soup": "Stew", 
-    "item.km.fried_egg": "Fried Egg", 
-    "item.km.mushroom_stick_raw": "Raw Mushroom Stick", 
-    "item.km.mushroom_stick_cooked": "Cooked Mushroom Stick", 
-    "item.km.apricot": "Apricot", 
-    "item.km.pear": "Pear", 
-    "item.km.plum": "Plum", 
-
-    "item.km.arrow_down": "Down Arrow", 
-    "item.km.arrow_left": "Left Arrow", 
-    "item.km.arrow_right": "Right Arrow", 
-    "item.km.arrow_up": "Up Arrow", 
-    "item.km.check_green": "Green Check", 
-    "item.km.check_red": "Red Check", 
-    "item.km.cross_green": "Green Cross", 
-    "item.km.cross_red": "Red Cross", 
-    "item.km.minus_green": "Green Minus", 
-    "item.km.minus_red": "Red Minus", 
-    "item.km.plus_green": "Green Plus", 
-    "item.km.plus_red": "Red Plus", 
-    "item.km.return_green": "Green Return", 
-    "item.km.return_red": "Red Return", 
-    "item.km.refresh_green": "Green Refresh", 
-    "item.km.refresh_red": "Red Refresh", 
-    "item.km.gear": "Gear", 
-
-    "item.km.herb_strong": "Power Herb", 
-    "item.km.herb_shadow": "Shadow Herb", 
-    "item.km.herb_xp": "Apprentice Herb", 
-    "item.km.herb_sea": "Sea Herb", 
-    "item.km.herb_gold": "Gold Herb", 
-    "item.km.herb_breathing": "Dianthus Herb", 
-    "item.km.herb_fire": "Fire Herb", 
-    
-    "item.km.berry_beast": "Beast Berry", 
-    "item.km.berry_cloud": "Cloud Berry", 
-    "item.km.berry_gold": "Gold Berry", 
-    "item.km.berry_magma": "Magma Berry", 
-    "item.km.berry_work": "Work Berry", 
-    "item.km.berry_experience": "Experience Berry", 
-    
+    "block.km.bookshelf_acacia": "Acacia Bookshelf",
+    "block.km.bookshelf_birch": "Birch Bookshelf",
+    "block.km.bookshelf_dark_oak": "Dark Oak Bookshelf",
+    "block.km.bookshelf_jungle": "Jungle Bookshelf",
+    "block.km.bookshelf_spruce": "Spruce Bookshelf",
+    "block.km.barrier_light": "Light Barrier",
+    "block.km.barrier_solid": "Solid Barrier",
+    "item.km.wooden_stick": "Wooden Stick",
+    "item.km.stone_stick": "Stone Stick",
+    "item.km.copper_stick": "Copper Stick",
+    "item.km.bronze_stick": "Bronze Stick",
+    "item.km.iron_stick": "Iron Stick",
+    "item.km.golden_stick": "Golden Stick",
+    "item.km.diamond_stick": "Diamond Stick",
+    "item.km.wooden_scepter": "Wooden Scepter",
+    "item.km.stone_scepter": "Stone Scepter",
+    "item.km.copper_scepter": "Copper Scepter",
+    "item.km.bronze_scepter": "Bronze Scepter",
+    "item.km.iron_scepter": "Iron Scepter",
+    "item.km.golden_scepter": "Golden Scepter",
+    "item.km.diamond_scepter": "Diamond Scepter",
+    "item.km.wooden_dagger": "Wooden Dagger",
+    "item.km.stone_dagger": "Stone Dagger",
+    "item.km.copper_dagger": "Copper Dagger",
+    "item.km.bronze_dagger": "Bronze Dagger",
+    "item.km.iron_dagger": "Iron Dagger",
+    "item.km.golden_dagger": "Golden Dagger",
+    "item.km.diamond_dagger": "Diamond Dagger",
+    "item.km.wooden_hammer": "Wooden Hammer",
+    "item.km.stone_hammer": "Stone Hammer",
+    "item.km.copper_hammer": "Copper Hammer",
+    "item.km.bronze_hammer": "Bronze Hammer",
+    "item.km.iron_hammer": "Iron Hammer",
+    "item.km.golden_hammer": "Golden Hammer",
+    "item.km.diamond_hammer": "Diamond Hammer",
+    "item.km.wooden_battleaxe": "Wooden Battleaxe",
+    "item.km.stone_battleaxe": "Stone Battleaxe",
+    "item.km.copper_battleaxe": "Copper Battleaxe",
+    "item.km.bronze_battleaxe": "Bronze Battleaxe",
+    "item.km.iron_battleaxe": "Iron Battleaxe",
+    "item.km.golden_battleaxe": "Golden Battleaxe",
+    "item.km.diamond_battleaxe": "Diamond Battleaxe",
+    "item.km.wooden_key": "Wooden Key",
+    "item.km.silver_key": "Silver Key",
+    "item.km.copper_key": "Copper Key",
+    "item.km.bronze_key": "Bronze Key",
+    "item.km.iron_key": "Iron Key",
+    "item.km.golden_key": "Golden Key",
+    "item.km.diamond_key": "Diamond Key",
+    "item.km.cylinder": "Cylinder Hat",
+    "item.km.suit_chestplate": "Suit Jacket",
+    "item.km.suit_leggings": "Dress Pants ",
+    "item.km.suit_boots": "Dress Shoes",
+    "item.km.straw_hat": "Straw Hat",
+    "item.km.cloth_helmet": "Cloth Beanie",
+    "item.km.cloth_chestplate": "Cloth Vest",
+    "item.km.cloth_leggings": "Cloth Pants",
+    "item.km.cloth_boots": "Cloth Boots",
+    "item.km.coin_copper": "Copper Coin",
+    "item.km.coin_silver": "Silver Coin",
+    "item.km.coin_gold": "Gold Coin",
+    "block.km.real_hay_bed": "Hay Mat",
+    "item.km.hay_bundle": "Hay Bundle",
+    "item.km.bat_wing": "Bat Wing",
+    "item.km.wolf_fur": "Wolf Fur",
+    "item.km.bear_polar_fur": "Polar Bear Fur",
+    "item.km.cloth": "Cloth",
+    "item.km.coarse_cloth": "Coarse Cloth",
+    "item.km.gem_stone": "Gemstone",
+    "item.km.raw_gem_stone": "Raw Gemstone",
+    "item.km.flawless_gem_stone": "Flawless Gemstone",
+    "item.km.scroll": "Scroll",
+    "item.km.soul_stone": "Soul Stone",
+    "item.km.piercing_stone": "Piercing Stone",
+    "item.km.shell": "Shell",
+    "item.km.colored_soup": "Stew",
+    "item.km.fried_egg": "Fried Egg",
+    "item.km.mushroom_stick_raw": "Raw Mushroom Stick",
+    "item.km.mushroom_stick_cooked": "Cooked Mushroom Stick",
+    "item.km.apricot": "Apricot",
+    "item.km.pear": "Pear",
+    "item.km.plum": "Plum",
+    "item.km.arrow_down": "Down Arrow",
+    "item.km.arrow_left": "Left Arrow",
+    "item.km.arrow_right": "Right Arrow",
+    "item.km.arrow_up": "Up Arrow",
+    "item.km.check_green": "Green Check",
+    "item.km.check_red": "Red Check",
+    "item.km.cross_green": "Green Cross",
+    "item.km.cross_red": "Red Cross",
+    "item.km.minus_green": "Green Minus",
+    "item.km.minus_red": "Red Minus",
+    "item.km.plus_green": "Green Plus",
+    "item.km.plus_red": "Red Plus",
+    "item.km.return_green": "Green Return",
+    "item.km.return_red": "Red Return",
+    "item.km.refresh_green": "Green Refresh",
+    "item.km.refresh_red": "Red Refresh",
+    "item.km.gear": "Gear",
+    "item.km.herb_strong": "Power Herb",
+    "item.km.herb_shadow": "Shadow Herb",
+    "item.km.herb_xp": "Apprentice Herb",
+    "item.km.herb_sea": "Sea Herb",
+    "item.km.herb_gold": "Gold Herb",
+    "item.km.herb_breathing": "Dianthus Herb",
+    "item.km.herb_fire": "Fire Herb",
+    "item.km.berry_beast": "Beast Berry",
+    "item.km.berry_cloud": "Cloud Berry",
+    "item.km.berry_gold": "Gold Berry",
+    "item.km.berry_magma": "Magma Berry",
+    "item.km.berry_work": "Work Berry",
+    "item.km.berry_experience": "Experience Berry",
     "item.km.digit_0": "Digit 0",
     "item.km.digit_1": "Digit 1",
     "item.km.digit_2": "Digit 2",
@@ -212,7 +183,6 @@
     "item.km.digit_7": "Digit 7",
     "item.km.digit_8": "Digit 8",
     "item.km.digit_9": "Digit 9",
-    
     "item.km.skill1": "Skill 1",
     "item.km.skill2": "Skill 2",
     "item.km.skill3": "Skill 3",
@@ -270,15 +240,14 @@
     "item.km.skill55": "Skill 55",
     "item.km.skill56": "Skill 56",
     "item.km.skill57": "Skill 57",
-
-    "key.km.function": "Kajetans Mod ", 
-    "key.function.1": "Function Key 1", 
-    "key.function.2": "Function Key 2", 
-    "key.function.3": "Function Key 3", 
-    "key.function.4": "Function Key 4", 
-    "key.function.5": "Function Key 5", 
-    "key.function.6": "Function Key 6", 
-    "key.function.7": "Function Key 7", 
-    "key.function.8": "Function Key 8", 
+    "key.km.function": "Kajetans Mod ",
+    "key.function.1": "Function Key 1",
+    "key.function.2": "Function Key 2",
+    "key.function.3": "Function Key 3",
+    "key.function.4": "Function Key 4",
+    "key.function.5": "Function Key 5",
+    "key.function.6": "Function Key 6",
+    "key.function.7": "Function Key 7",
+    "key.function.8": "Function Key 8",
     "key.function.9": "Function Key 9"
-}
+}

+ 6 - 0
src/main/resources/assets/km/models/item/cloth_boots.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:item/cloth/cloth_boots"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/cloth_chestplate.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:item/cloth/cloth_chestplate"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/cloth_helmet.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:item/cloth/cloth_helmet"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/cloth_leggings.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:item/cloth/cloth_leggings"
+    }
+}

BIN
src/main/resources/assets/km/textures/item/cloth/cloth_boots.png


BIN
src/main/resources/assets/km/textures/item/cloth/cloth_chestplate.png


BIN
src/main/resources/assets/km/textures/item/cloth/cloth_helmet.png


BIN
src/main/resources/assets/km/textures/item/cloth/cloth_leggings.png


BIN
src/main/resources/assets/km/textures/models/armor/cloth_layer_1.png


BIN
src/main/resources/assets/km/textures/models/armor/cloth_layer_2.png


+ 66 - 0
src/main/resources/data/km/loot_tables/blocks/rbeetroots.json

@@ -0,0 +1,66 @@
+{
+    "type": "minecraft:block",
+    "pools": [
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:alternatives",
+                    "children": [
+                        {
+                            "type": "minecraft:item",
+                            "conditions": [
+                                {
+                                    "condition": "minecraft:block_state_property",
+                                    "block": "km:rbeetroots",
+                                    "properties": {
+                                        "age": "3"
+                                    }
+                                }
+                            ],
+                            "name": "minecraft:beetroot"
+                        },
+                        {
+                            "type": "minecraft:item",
+                            "name": "minecraft:beetroot_seeds"
+                        }
+                    ]
+                }
+            ]
+        },
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "functions": [
+                        {
+                            "function": "minecraft:apply_bonus",
+                            "enchantment": "minecraft:fortune",
+                            "formula": "minecraft:binomial_with_bonus_count",
+                            "parameters": {
+                                "extra": 3,
+                                "probability": 0.5714286
+                            }
+                        }
+                    ],
+                    "name": "minecraft:beetroot_seeds"
+                }
+            ],
+            "conditions": [
+                {
+                    "condition": "minecraft:block_state_property",
+                    "block": "km:rbeetroots",
+                    "properties": {
+                        "age": "3"
+                    }
+                }
+            ]
+        }
+    ],
+    "functions": [
+        {
+            "function": "minecraft:explosion_decay"
+        }
+    ]
+}

+ 48 - 0
src/main/resources/data/km/loot_tables/blocks/rcarrots.json

@@ -0,0 +1,48 @@
+{
+    "type": "minecraft:block",
+    "pools": [
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "name": "minecraft:carrot"
+                }
+            ]
+        },
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "functions": [
+                        {
+                            "function": "minecraft:apply_bonus",
+                            "enchantment": "minecraft:fortune",
+                            "formula": "minecraft:binomial_with_bonus_count",
+                            "parameters": {
+                                "extra": 3,
+                                "probability": 0.5714286
+                            }
+                        }
+                    ],
+                    "name": "minecraft:carrot"
+                }
+            ],
+            "conditions": [
+                {
+                    "condition": "minecraft:block_state_property",
+                    "block": "km:rcarrots",
+                    "properties": {
+                        "age": "7"
+                    }
+                }
+            ]
+        }
+    ],
+    "functions": [
+        {
+            "function": "minecraft:explosion_decay"
+        }
+    ]
+}

+ 72 - 0
src/main/resources/data/km/loot_tables/blocks/rpotatoes.json

@@ -0,0 +1,72 @@
+{
+    "type": "minecraft:block",
+    "pools": [
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "name": "minecraft:potato"
+                }
+            ]
+        },
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "functions": [
+                        {
+                            "function": "minecraft:apply_bonus",
+                            "enchantment": "minecraft:fortune",
+                            "formula": "minecraft:binomial_with_bonus_count",
+                            "parameters": {
+                                "extra": 3,
+                                "probability": 0.5714286
+                            }
+                        }
+                    ],
+                    "name": "minecraft:potato"
+                }
+            ],
+            "conditions": [
+                {
+                    "condition": "minecraft:block_state_property",
+                    "block": "km:rpotatoes",
+                    "properties": {
+                        "age": "7"
+                    }
+                }
+            ]
+        },
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "conditions": [
+                        {
+                            "condition": "minecraft:random_chance",
+                            "chance": 0.02
+                        }
+                    ],
+                    "name": "minecraft:poisonous_potato"
+                }
+            ],
+            "conditions": [
+                {
+                    "condition": "minecraft:block_state_property",
+                    "block": "km:rpotatoes",
+                    "properties": {
+                        "age": "7"
+                    }
+                }
+            ]
+        }
+    ],
+    "functions": [
+        {
+            "function": "minecraft:explosion_decay"
+        }
+    ]
+}

+ 66 - 0
src/main/resources/data/km/loot_tables/blocks/rwheat.json

@@ -0,0 +1,66 @@
+{
+    "type": "minecraft:block",
+    "pools": [
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:alternatives",
+                    "children": [
+                        {
+                            "type": "minecraft:item",
+                            "conditions": [
+                                {
+                                    "condition": "minecraft:block_state_property",
+                                    "block": "km:rwheat",
+                                    "properties": {
+                                        "age": "7"
+                                    }
+                                }
+                            ],
+                            "name": "minecraft:wheat"
+                        },
+                        {
+                            "type": "minecraft:item",
+                            "name": "minecraft:wheat_seeds"
+                        }
+                    ]
+                }
+            ]
+        },
+        {
+            "rolls": 1.0,
+            "entries": [
+                {
+                    "type": "minecraft:item",
+                    "functions": [
+                        {
+                            "function": "minecraft:apply_bonus",
+                            "enchantment": "minecraft:fortune",
+                            "formula": "minecraft:binomial_with_bonus_count",
+                            "parameters": {
+                                "extra": 3,
+                                "probability": 0.5714286
+                            }
+                        }
+                    ],
+                    "name": "minecraft:wheat_seeds"
+                }
+            ],
+            "conditions": [
+                {
+                    "condition": "minecraft:block_state_property",
+                    "block": "km:rwheat",
+                    "properties": {
+                        "age": "7"
+                    }
+                }
+            ]
+        }
+    ],
+    "functions": [
+        {
+            "function": "minecraft:explosion_decay"
+        }
+    ]
+}

+ 15 - 0
src/main/resources/data/km/recipes/armor/cloth_boots.json

@@ -0,0 +1,15 @@
+{
+    "type": "minecraft:crafting_shaped",
+    "pattern": [
+        "X X",
+        "X X"
+    ],
+    "key": {
+        "X": {
+            "item": "km:cloth"
+        }
+    },
+    "result": {
+        "item": "km:cloth_boots"
+    }
+}

+ 16 - 0
src/main/resources/data/km/recipes/armor/cloth_chestplate.json

@@ -0,0 +1,16 @@
+{
+    "type": "minecraft:crafting_shaped",
+    "pattern": [
+        "X X",
+        "XXX",
+        "XXX"
+    ],
+    "key": {
+        "X": {
+            "item": "km:cloth"
+        }
+    },
+    "result": {
+        "item": "km:cloth_chestplate"
+    }
+}

+ 15 - 0
src/main/resources/data/km/recipes/armor/cloth_helmet.json

@@ -0,0 +1,15 @@
+{
+    "type": "minecraft:crafting_shaped",
+    "pattern": [
+        "XXX",
+        "X X"
+    ],
+    "key": {
+        "X": {
+            "item": "km:cloth"
+        }
+    },
+    "result": {
+        "item": "km:cloth_helmet"
+    }
+}

+ 16 - 0
src/main/resources/data/km/recipes/armor/cloth_leggings.json

@@ -0,0 +1,16 @@
+{
+    "type": "minecraft:crafting_shaped",
+    "pattern": [
+        "XXX",
+        "X X",
+        "X X"
+    ],
+    "key": {
+        "X": {
+            "item": "km:cloth"
+        }
+    },
+    "result": {
+        "item": "km:cloth_leggings"
+    }
+}