Browse Source

bookshelves for each wood variant, bugfixes

Kajetan Johannes Hammerle 4 years ago
parent
commit
d1190d8e11
38 changed files with 546 additions and 10 deletions
  1. 4 2
      src/main/java/me/km/Client.java
  2. 34 1
      src/main/java/me/km/CommonEvents.java
  3. 22 0
      src/main/java/me/km/blocks/BlockBookshelf.java
  4. 47 5
      src/main/java/me/km/blocks/ModBlocks.java
  5. 6 1
      src/main/java/me/km/snuviscript/MinecraftFunctions.java
  6. 1 1
      src/main/resources/META-INF/mods.toml
  7. 5 0
      src/main/resources/assets/km/blockstates/bookshelf_acacia.json
  8. 5 0
      src/main/resources/assets/km/blockstates/bookshelf_birch.json
  9. 5 0
      src/main/resources/assets/km/blockstates/bookshelf_dark_oak.json
  10. 5 0
      src/main/resources/assets/km/blockstates/bookshelf_jungle.json
  11. 5 0
      src/main/resources/assets/km/blockstates/bookshelf_spruce.json
  12. 8 0
      src/main/resources/assets/km/lang/en_us.json
  13. 7 0
      src/main/resources/assets/km/models/block/bookshelf/bookshelf_acacia.json
  14. 7 0
      src/main/resources/assets/km/models/block/bookshelf/bookshelf_birch.json
  15. 7 0
      src/main/resources/assets/km/models/block/bookshelf/bookshelf_dark_oak.json
  16. 7 0
      src/main/resources/assets/km/models/block/bookshelf/bookshelf_jungle.json
  17. 7 0
      src/main/resources/assets/km/models/block/bookshelf/bookshelf_spruce.json
  18. 3 0
      src/main/resources/assets/km/models/item/bookshelf_acacia.json
  19. 3 0
      src/main/resources/assets/km/models/item/bookshelf_birch.json
  20. 3 0
      src/main/resources/assets/km/models/item/bookshelf_dark_oak.json
  21. 3 0
      src/main/resources/assets/km/models/item/bookshelf_jungle.json
  22. 3 0
      src/main/resources/assets/km/models/item/bookshelf_spruce.json
  23. BIN
      src/main/resources/assets/km/textures/block/bookshelf/bookshelf_acacia.png
  24. BIN
      src/main/resources/assets/km/textures/block/bookshelf/bookshelf_birch.png
  25. BIN
      src/main/resources/assets/km/textures/block/bookshelf/bookshelf_dark_oak.png
  26. BIN
      src/main/resources/assets/km/textures/block/bookshelf/bookshelf_jungle.png
  27. BIN
      src/main/resources/assets/km/textures/block/bookshelf/bookshelf_spruce.png
  28. 47 0
      src/main/resources/data/km/loot_tables/blocks/bookshelf_acacia.json
  29. 47 0
      src/main/resources/data/km/loot_tables/blocks/bookshelf_birch.json
  30. 47 0
      src/main/resources/data/km/loot_tables/blocks/bookshelf_dark_oak.json
  31. 47 0
      src/main/resources/data/km/loot_tables/blocks/bookshelf_jungle.json
  32. 47 0
      src/main/resources/data/km/loot_tables/blocks/bookshelf_spruce.json
  33. 19 0
      src/main/resources/data/km/recipes/bookshelf/bookshelf_acacia.json
  34. 19 0
      src/main/resources/data/km/recipes/bookshelf/bookshelf_birch.json
  35. 19 0
      src/main/resources/data/km/recipes/bookshelf/bookshelf_dark_oak.json
  36. 19 0
      src/main/resources/data/km/recipes/bookshelf/bookshelf_jungle.json
  37. 19 0
      src/main/resources/data/km/recipes/bookshelf/bookshelf_spruce.json
  38. 19 0
      src/main/resources/data/minecraft/recipes/bookshelf.json

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

@@ -165,16 +165,18 @@ public class Client
                 String s = text.getFormattedText();
                 String[] parts = s.split("\n");
                 
+                int packedLight = renderer.getPackedLight(ent, Minecraft.getInstance().getRenderPartialTicks());
+                
                 IRenderTypeBuffer buffer = e.getRenderTypeBuffer();
                 
                 Vector3f up = new Vector3f(0.0f, 9.0f * 1.15f * 0.025f, 0.0f);
                 for(String line : parts)
                 {
                     float f2 = -0.5f * fontrenderer.getStringWidth(line);
-                    fontrenderer.renderString(line, f2, 0.0f, 553648127, false, matrix4f, buffer, flag, j, 0xF00000);
+                    fontrenderer.renderString(line, f2, 0.0f, 553648127, false, matrix4f, buffer, flag, j, packedLight);
                     if(flag)
                     {
-                        fontrenderer.renderString(line, f2, 0.0f, -1, false, matrix4f, buffer, false, 0, 0xF00000);
+                        fontrenderer.renderString(line, f2, 0.0f, -1, false, matrix4f, buffer, false, 0, packedLight);
                     }
                     matrix4f.translate(up);
                 }

+ 34 - 1
src/main/java/me/km/CommonEvents.java

@@ -1,6 +1,10 @@
 package me.km;
 
+import me.km.blocks.ModBlocks;
+import me.km.items.ModItems;
 import me.km.utils.ExplosionUtils;
+import net.minecraft.item.Item;
+import net.minecraftforge.event.furnace.FurnaceFuelBurnTimeEvent;
 import net.minecraftforge.event.world.ExplosionEvent;
 import net.minecraftforge.eventbus.api.SubscribeEvent;
 
@@ -14,7 +18,36 @@ public class CommonEvents
             ExplosionUtils.explosion(e.getExplosion(), e.getWorld());
         }
     }
-
+    
+    @SubscribeEvent
+    public void getFuelBurnTime(FurnaceFuelBurnTimeEvent e)
+    {
+        Item item = e.getItemStack().getItem();
+        if(item == ModItems.sling || item == ModBlocks.bookshelfAcacia.asItem() || 
+                item == ModBlocks.bookshelfBirch.asItem() || 
+                item == ModBlocks.bookshelfDarkOak.asItem() || 
+                item == ModBlocks.bookshelfJungle.asItem() || 
+                item == ModBlocks.bookshelfSpruce.asItem())
+        {
+            e.setBurnTime(300);
+        }
+        else if(item == ModItems.woodenBattleAxe || item == ModItems.woodenDagger || 
+                item == ModItems.woodenHammer || item == ModItems.woodenScepter || 
+                item == ModItems.woodenStick)
+        {
+            e.setBurnTime(200);
+        }
+        else if(item == ModBlocks.crateAcacia.asItem() ||
+                item == ModBlocks.crateBigOak.asItem() ||
+                item == ModBlocks.crateBirch.asItem() ||
+                item == ModBlocks.crateJungle.asItem() ||
+                item == ModBlocks.crateOak.asItem() ||
+                item == ModBlocks.crateSpruce.asItem())
+        {
+            e.setBurnTime(2700);
+        }
+    }
+    
     /*private static final java.util.HashSet<Class> test = new java.util.HashSet<>();
     
     static

+ 22 - 0
src/main/java/me/km/blocks/BlockBookshelf.java

@@ -0,0 +1,22 @@
+package me.km.blocks;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockState;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.material.Material;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IWorldReader;
+
+public class BlockBookshelf extends Block
+{
+    public BlockBookshelf()
+    {
+        super(Block.Properties.create(Material.WOOD).hardnessAndResistance(1.5f).sound(SoundType.WOOD));
+    }
+
+    @Override
+    public float getEnchantPowerBonus(BlockState state, IWorldReader world, BlockPos pos)
+    {
+        return 1;
+    }
+}

+ 47 - 5
src/main/java/me/km/blocks/ModBlocks.java

@@ -1,6 +1,5 @@
 package me.km.blocks;
 
-import me.km.KajetansMod;
 import me.km.blocks.cookingpot.BlockCookingPot;
 import net.minecraft.block.Block;
 import net.minecraft.block.Block.Properties;
@@ -9,14 +8,11 @@ import net.minecraft.block.material.Material;
 import net.minecraft.block.material.MaterialColor;
 import net.minecraft.block.BlockState;
 import net.minecraft.block.Blocks;
+import net.minecraft.block.FireBlock;
 import net.minecraft.block.LeavesBlock;
-import net.minecraft.fluid.FlowingFluid;
-import net.minecraft.fluid.Fluid;
 import net.minecraft.item.Item;
 import net.minecraft.item.BlockItem;
 import net.minecraft.item.ItemGroup;
-import net.minecraft.potion.Effect;
-import net.minecraft.potion.Effects;
 import net.minecraftforge.registries.IForgeRegistry;
 
 public class ModBlocks 
@@ -73,6 +69,13 @@ public class ModBlocks
     public static Block pearSapling;
     public static Block plumSapling;
     
+    // bookshelves
+    public static Block bookshelfAcacia;
+    public static Block bookshelfBirch;
+    public static Block bookshelfDarkOak;
+    public static Block bookshelfJungle;
+    public static Block bookshelfSpruce;
+    
     private static Block create(String registry, Material m, float hardness, float resistance)
     {
         Block b = new Block(Properties.create(m).hardnessAndResistance(hardness, resistance));
@@ -117,6 +120,13 @@ public class ModBlocks
         return b;
     }
     
+    private static Block createBookshelf(String registry)
+    {
+        Block b = new BlockBookshelf();
+        b.setRegistryName(registry);
+        return b;
+    }
+    
     public static void initBlocks(IForgeRegistry<Block> r) 
     {
         // ores + blocks
@@ -169,6 +179,31 @@ public class ModBlocks
         apricotSapling = register(r, createSapling("apricot_sapling", Blocks.OAK_LOG.getDefaultState(), apricotLeaves.getDefaultState()));
         pearSapling = register(r, createSapling("pear_sapling", Blocks.OAK_LOG.getDefaultState(), pearLeaves.getDefaultState()));
         plumSapling = register(r, createSapling("plum_sapling", Blocks.OAK_LOG.getDefaultState(), plumLeaves.getDefaultState()));
+        
+        // bookshelves
+        bookshelfAcacia = register(r, createBookshelf("bookshelf_acacia"));
+        bookshelfBirch = register(r, createBookshelf("bookshelf_birch"));
+        bookshelfDarkOak = register(r, createBookshelf("bookshelf_dark_oak"));
+        bookshelfJungle = register(r, createBookshelf("bookshelf_jungle"));
+        bookshelfSpruce = register(r, createBookshelf("bookshelf_spruce"));
+        
+        
+        FireBlock fireblock = (FireBlock)Blocks.FIRE;
+        fireblock.setFireInfo(bookshelfAcacia, 30, 20);
+        fireblock.setFireInfo(bookshelfBirch, 30, 20);
+        fireblock.setFireInfo(bookshelfDarkOak, 30, 20);
+        fireblock.setFireInfo(bookshelfJungle, 30, 20);
+        fireblock.setFireInfo(bookshelfSpruce, 30, 20);
+        fireblock.setFireInfo(cherryLeaves, 30, 60);
+        fireblock.setFireInfo(apricotLeaves, 30, 60);
+        fireblock.setFireInfo(pearLeaves, 30, 60);
+        fireblock.setFireInfo(plumLeaves, 30, 60);
+        fireblock.setFireInfo(crateAcacia, 5, 5);
+        fireblock.setFireInfo(crateBigOak, 5, 5);
+        fireblock.setFireInfo(crateBirch, 5, 5);
+        fireblock.setFireInfo(crateJungle, 5, 5);
+        fireblock.setFireInfo(crateOak, 5, 5);
+        fireblock.setFireInfo(crateSpruce, 5, 5);
     }
     
     public static void initItemBlocks(IForgeRegistry<Item> r) 
@@ -223,6 +258,13 @@ public class ModBlocks
         register(r, apricotSapling, getItemBlock(apricotSapling, ItemGroup.BUILDING_BLOCKS));
         register(r, pearSapling, getItemBlock(pearSapling, ItemGroup.BUILDING_BLOCKS));
         register(r, plumSapling, getItemBlock(plumSapling, ItemGroup.BUILDING_BLOCKS));
+        
+        // bookshelves
+        register(r, bookshelfAcacia, getItemBlock(bookshelfAcacia, ItemGroup.BUILDING_BLOCKS));
+        register(r, bookshelfBirch, getItemBlock(bookshelfBirch, ItemGroup.BUILDING_BLOCKS));
+        register(r, bookshelfDarkOak, getItemBlock(bookshelfDarkOak, ItemGroup.BUILDING_BLOCKS));
+        register(r, bookshelfJungle, getItemBlock(bookshelfJungle, ItemGroup.BUILDING_BLOCKS));
+        register(r, bookshelfSpruce, getItemBlock(bookshelfSpruce, ItemGroup.BUILDING_BLOCKS));
     }
 
     private static void register(IForgeRegistry<Item> r, Block block, Item itemBlock) 

+ 6 - 1
src/main/java/me/km/snuviscript/MinecraftFunctions.java

@@ -1114,7 +1114,12 @@ public class MinecraftFunctions
             Location l = (Location) in[0].get(sc);
             BlockStateParser parser = new BlockStateParser(new StringReader(in[1].getString(sc)), true);
             BlockState state = parser.parse(true).getState();
-            l.getWorld().setBlockState(l.getBlockPos(), state, 2);
+            int flag = 2;
+            if(in.length >= 3 && in[2].getBoolean(sc))
+            {
+                flag |= 16;
+            }
+            l.getWorld().setBlockState(l.getBlockPos(), state, flag);
             return Void.TYPE; 
         });
         sm.registerFunction("block.setsign", (sc, in) -> 

+ 1 - 1
src/main/resources/META-INF/mods.toml

@@ -2,7 +2,7 @@ modLoader="javafml"
 loaderVersion="[31,)"
 [[mods]]
 modId="km"
-version="0.0.41"
+version="0.0.42"
 displayName="Kajetans Mod"
 credits="kajetanjohannes"
 authors="kajetanjohannes"

+ 5 - 0
src/main/resources/assets/km/blockstates/bookshelf_acacia.json

@@ -0,0 +1,5 @@
+{
+    "variants": {
+        "": { "model": "km:block/bookshelf/bookshelf_acacia" }
+    }
+}

+ 5 - 0
src/main/resources/assets/km/blockstates/bookshelf_birch.json

@@ -0,0 +1,5 @@
+{
+    "variants": {
+        "": { "model": "km:block/bookshelf/bookshelf_birch" }
+    }
+}

+ 5 - 0
src/main/resources/assets/km/blockstates/bookshelf_dark_oak.json

@@ -0,0 +1,5 @@
+{
+    "variants": {
+        "": { "model": "km:block/bookshelf/bookshelf_dark_oak" }
+    }
+}

+ 5 - 0
src/main/resources/assets/km/blockstates/bookshelf_jungle.json

@@ -0,0 +1,5 @@
+{
+    "variants": {
+        "": { "model": "km:block/bookshelf/bookshelf_jungle" }
+    }
+}

+ 5 - 0
src/main/resources/assets/km/blockstates/bookshelf_spruce.json

@@ -0,0 +1,5 @@
+{
+    "variants": {
+        "": { "model": "km:block/bookshelf/bookshelf_spruce" }
+    }
+}

+ 8 - 0
src/main/resources/assets/km/lang/en_us.json

@@ -43,6 +43,7 @@
     "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", 
@@ -74,6 +75,13 @@
     "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", 
 
     "item.km.wooden_stick": "Wooden Stick", 
     "item.km.stone_stick": "Stone Stick", 

+ 7 - 0
src/main/resources/assets/km/models/block/bookshelf/bookshelf_acacia.json

@@ -0,0 +1,7 @@
+{
+    "parent": "block/cube_column",
+    "textures": {
+        "end": "block/acacia_planks",
+        "side": "km:block/bookshelf/bookshelf_acacia"
+    }
+}

+ 7 - 0
src/main/resources/assets/km/models/block/bookshelf/bookshelf_birch.json

@@ -0,0 +1,7 @@
+{
+    "parent": "block/cube_column",
+    "textures": {
+        "end": "block/birch_planks",
+        "side": "km:block/bookshelf/bookshelf_birch"
+    }
+}

+ 7 - 0
src/main/resources/assets/km/models/block/bookshelf/bookshelf_dark_oak.json

@@ -0,0 +1,7 @@
+{
+    "parent": "block/cube_column",
+    "textures": {
+        "end": "block/dark_oak_planks",
+        "side": "km:block/bookshelf/bookshelf_dark_oak"
+    }
+}

+ 7 - 0
src/main/resources/assets/km/models/block/bookshelf/bookshelf_jungle.json

@@ -0,0 +1,7 @@
+{
+    "parent": "block/cube_column",
+    "textures": {
+        "end": "block/jungle_planks",
+        "side": "km:block/bookshelf/bookshelf_jungle"
+    }
+}

+ 7 - 0
src/main/resources/assets/km/models/block/bookshelf/bookshelf_spruce.json

@@ -0,0 +1,7 @@
+{
+    "parent": "block/cube_column",
+    "textures": {
+        "end": "block/spruce_planks",
+        "side": "km:block/bookshelf/bookshelf_spruce"
+    }
+}

+ 3 - 0
src/main/resources/assets/km/models/item/bookshelf_acacia.json

@@ -0,0 +1,3 @@
+{
+    "parent": "km:block/bookshelf/bookshelf_acacia"
+}

+ 3 - 0
src/main/resources/assets/km/models/item/bookshelf_birch.json

@@ -0,0 +1,3 @@
+{
+    "parent": "km:block/bookshelf/bookshelf_birch"
+}

+ 3 - 0
src/main/resources/assets/km/models/item/bookshelf_dark_oak.json

@@ -0,0 +1,3 @@
+{
+    "parent": "km:block/bookshelf/bookshelf_dark_oak"
+}

+ 3 - 0
src/main/resources/assets/km/models/item/bookshelf_jungle.json

@@ -0,0 +1,3 @@
+{
+    "parent": "km:block/bookshelf/bookshelf_jungle"
+}

+ 3 - 0
src/main/resources/assets/km/models/item/bookshelf_spruce.json

@@ -0,0 +1,3 @@
+{
+    "parent": "km:block/bookshelf/bookshelf_spruce"
+}

BIN
src/main/resources/assets/km/textures/block/bookshelf/bookshelf_acacia.png


BIN
src/main/resources/assets/km/textures/block/bookshelf/bookshelf_birch.png


BIN
src/main/resources/assets/km/textures/block/bookshelf/bookshelf_dark_oak.png


BIN
src/main/resources/assets/km/textures/block/bookshelf/bookshelf_jungle.png


BIN
src/main/resources/assets/km/textures/block/bookshelf/bookshelf_spruce.png


+ 47 - 0
src/main/resources/data/km/loot_tables/blocks/bookshelf_acacia.json

@@ -0,0 +1,47 @@
+{
+  "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": "km:bookshelf_acacia"
+            },
+            {
+              "type": "minecraft:item",
+              "functions": [
+                {
+                  "function": "minecraft:set_count",
+                  "count": 3
+                },
+                {
+                  "function": "minecraft:explosion_decay"
+                }
+              ],
+              "name": "minecraft:book"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 47 - 0
src/main/resources/data/km/loot_tables/blocks/bookshelf_birch.json

@@ -0,0 +1,47 @@
+{
+  "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": "km:bookshelf_birch"
+            },
+            {
+              "type": "minecraft:item",
+              "functions": [
+                {
+                  "function": "minecraft:set_count",
+                  "count": 3
+                },
+                {
+                  "function": "minecraft:explosion_decay"
+                }
+              ],
+              "name": "minecraft:book"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 47 - 0
src/main/resources/data/km/loot_tables/blocks/bookshelf_dark_oak.json

@@ -0,0 +1,47 @@
+{
+  "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": "km:bookshelf_dark_oak"
+            },
+            {
+              "type": "minecraft:item",
+              "functions": [
+                {
+                  "function": "minecraft:set_count",
+                  "count": 3
+                },
+                {
+                  "function": "minecraft:explosion_decay"
+                }
+              ],
+              "name": "minecraft:book"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 47 - 0
src/main/resources/data/km/loot_tables/blocks/bookshelf_jungle.json

@@ -0,0 +1,47 @@
+{
+  "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": "km:bookshelf_jungle"
+            },
+            {
+              "type": "minecraft:item",
+              "functions": [
+                {
+                  "function": "minecraft:set_count",
+                  "count": 3
+                },
+                {
+                  "function": "minecraft:explosion_decay"
+                }
+              ],
+              "name": "minecraft:book"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 47 - 0
src/main/resources/data/km/loot_tables/blocks/bookshelf_spruce.json

@@ -0,0 +1,47 @@
+{
+  "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": "km:bookshelf_spruce"
+            },
+            {
+              "type": "minecraft:item",
+              "functions": [
+                {
+                  "function": "minecraft:set_count",
+                  "count": 3
+                },
+                {
+                  "function": "minecraft:explosion_decay"
+                }
+              ],
+              "name": "minecraft:book"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 19 - 0
src/main/resources/data/km/recipes/bookshelf/bookshelf_acacia.json

@@ -0,0 +1,19 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    "XXX",
+    "###"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:acacia_planks"
+    },
+    "X": {
+      "item": "minecraft:book"
+    }
+  },
+  "result": {
+    "item": "km:bookshelf_acacia"
+  }
+}

+ 19 - 0
src/main/resources/data/km/recipes/bookshelf/bookshelf_birch.json

@@ -0,0 +1,19 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    "XXX",
+    "###"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:birch_planks"
+    },
+    "X": {
+      "item": "minecraft:book"
+    }
+  },
+  "result": {
+    "item": "km:bookshelf_birch"
+  }
+}

+ 19 - 0
src/main/resources/data/km/recipes/bookshelf/bookshelf_dark_oak.json

@@ -0,0 +1,19 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    "XXX",
+    "###"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:dark_oak_planks"
+    },
+    "X": {
+      "item": "minecraft:book"
+    }
+  },
+  "result": {
+    "item": "km:bookshelf_dark_oak"
+  }
+}

+ 19 - 0
src/main/resources/data/km/recipes/bookshelf/bookshelf_jungle.json

@@ -0,0 +1,19 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    "XXX",
+    "###"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:jungle_planks"
+    },
+    "X": {
+      "item": "minecraft:book"
+    }
+  },
+  "result": {
+    "item": "km:bookshelf_jungle"
+  }
+}

+ 19 - 0
src/main/resources/data/km/recipes/bookshelf/bookshelf_spruce.json

@@ -0,0 +1,19 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    "XXX",
+    "###"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:spruce_planks"
+    },
+    "X": {
+      "item": "minecraft:book"
+    }
+  },
+  "result": {
+    "item": "km:bookshelf_spruce"
+  }
+}

+ 19 - 0
src/main/resources/data/minecraft/recipes/bookshelf.json

@@ -0,0 +1,19 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    "XXX",
+    "###"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:oak_planks"
+    },
+    "X": {
+      "item": "minecraft:book"
+    }
+  },
+  "result": {
+    "item": "minecraft:bookshelf"
+  }
+}