From a76522363b5649d23d5ec1ba0786316636ee8fc4 Mon Sep 17 00:00:00 2001 From: Badtz Date: Mon, 16 Oct 2023 15:55:28 -0700 Subject: [PATCH] Change charcoal to firewood --- .../me/woach/bone/block/BlocksRegistry.java | 8 +- .../me/woach/bone/items/ItemsRegistry.java | 46 +++++----- ...harcoal_block.json => firewood_block.json} | 2 +- .../resources/assets/bone/lang/en_us.json | 2 +- .../bone/models/block/charcoal_block.json | 6 -- .../bone/models/block/firewood_block.json | 81 +++++++++++++++++ .../bone/models/item/charcoal_block.json | 3 - .../bone/models/item/firewood_block.json | 85 ++++++++++++++++++ .../bone/textures/block/charcoal_block.png | Bin 4458 -> 0 bytes .../bone/textures/block/firewood_block.png | Bin 0 -> 3270 bytes .../loot_tables/blocks/charcoal_block.json | 2 +- .../resources/data/bone/recipes/charcoal.json | 12 --- ...harcoal_block.json => firewood_block.json} | 13 +-- .../tags/blocks/infiniburn_overworld.json | 2 +- .../minecraft/tags/blocks/mineable/axe.json | 6 ++ .../tags/blocks/mineable/pickaxe.json | 3 +- .../tags/blocks/needs_iron_tool.json | 3 +- .../configured_feature/lake_lava.json | 20 +++++ 18 files changed, 234 insertions(+), 60 deletions(-) rename src/main/resources/assets/bone/blockstates/{charcoal_block.json => firewood_block.json} (51%) delete mode 100644 src/main/resources/assets/bone/models/block/charcoal_block.json create mode 100644 src/main/resources/assets/bone/models/block/firewood_block.json delete mode 100644 src/main/resources/assets/bone/models/item/charcoal_block.json create mode 100644 src/main/resources/assets/bone/models/item/firewood_block.json delete mode 100644 src/main/resources/assets/bone/textures/block/charcoal_block.png create mode 100644 src/main/resources/assets/bone/textures/block/firewood_block.png delete mode 100644 src/main/resources/data/bone/recipes/charcoal.json rename src/main/resources/data/bone/recipes/{charcoal_block.json => firewood_block.json} (51%) create mode 100644 src/main/resources/data/minecraft/tags/blocks/mineable/axe.json create mode 100644 src/main/resources/data/minecraft/worldgen/configured_feature/lake_lava.json diff --git a/src/main/java/me/woach/bone/block/BlocksRegistry.java b/src/main/java/me/woach/bone/block/BlocksRegistry.java index fba06e6..4002ded 100644 --- a/src/main/java/me/woach/bone/block/BlocksRegistry.java +++ b/src/main/java/me/woach/bone/block/BlocksRegistry.java @@ -1,5 +1,7 @@ package me.woach.bone.block; +import java.util.function.Supplier; + import me.woach.bone.Bone; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; @@ -7,13 +9,11 @@ import net.minecraft.registry.Registry; import net.minecraft.sound.BlockSoundGroup; -import java.util.function.Supplier; - public enum BlocksRegistry { BONE_FORGE_BLOCK("bone_forge", BoneForgeBlock::new), BONE_FIRE_BLOCK("bone_fire", BoneFireBlock::new), - CHARCOAL_BLOCK("charcoal_block", () -> new Block( - FabricBlockSettings.create().requiresTool().strength(3.0f).sounds(BlockSoundGroup.STONE).burnable())); + FIREWOOD_BLOCK("firewood_block", () -> new Block( + FabricBlockSettings.create().strength(1.5f).sounds(BlockSoundGroup.WOOD).burnable())); private final String path; private final Supplier blockSupplier; diff --git a/src/main/java/me/woach/bone/items/ItemsRegistry.java b/src/main/java/me/woach/bone/items/ItemsRegistry.java index 401746f..eca1385 100644 --- a/src/main/java/me/woach/bone/items/ItemsRegistry.java +++ b/src/main/java/me/woach/bone/items/ItemsRegistry.java @@ -1,5 +1,8 @@ package me.woach.bone.items; +import java.util.Arrays; +import java.util.function.Supplier; + import me.woach.bone.Bone; import me.woach.bone.block.BlocksRegistry; import me.woach.bone.material.BonesteelArmorMaterial; @@ -7,35 +10,34 @@ import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; import net.minecraft.data.client.BlockStateVariantMap.QuadFunction; -import net.minecraft.item.*; +import net.minecraft.item.ArmorItem; import net.minecraft.item.ArmorItem.Type; +import net.minecraft.item.AxeItem; +import net.minecraft.item.BlockItem; +import net.minecraft.item.HoeItem; +import net.minecraft.item.Item; +import net.minecraft.item.PickaxeItem; +import net.minecraft.item.ShovelItem; +import net.minecraft.item.ToolMaterial; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Rarity; -import java.util.Arrays; -import java.util.function.Supplier; - public enum ItemsRegistry { BONE_ITEM("bone", BoneItem::new), BONE_FORGE_BLOCK_ITEM("bone_forge", () -> new BlockItem(BlocksRegistry.BONE_FORGE_BLOCK.get(), new FabricItemSettings())), - CHARCOAL_BLOCK_ITEM("charcoal_block", () -> new BlockItem(BlocksRegistry.CHARCOAL_BLOCK.get(), + FIREWOOD_BLOCK_BLOCK_ITEM("firewood_block", () -> new BlockItem(BlocksRegistry.FIREWOOD_BLOCK.get(), new FabricItemSettings())), BONESTEEL_HELMET("bonesteel_helmet", () -> ItemBuilder.newItemArmor(Type.HELMET)), BONESTEEL_CHESTPLATE("bonesteel_chestplate", () -> ItemBuilder.newItemArmor(Type.CHESTPLATE)), BONESTEEL_LEGGINGS("bonesteel_leggings", () -> ItemBuilder.newItemArmor(Type.LEGGINGS)), BONESTEEL_BOOTS("bonesteel_boots", () -> ItemBuilder.newItemArmor(Type.BOOTS)), - BONESTEEL_PICKAXE("bonesteel_pickaxe", () -> - ItemBuilder.newToolItem(PickaxeItem::new, 1, -2.4f)), - BONESTEEL_AXE("bonesteel_axe", () -> - ItemBuilder.newToolItem(AxeItem::new, 6.0f, -2.9f)), - BONESTEEL_SHOVEL("bonesteel_shovel", () -> - ItemBuilder.newToolItem(ShovelItem::new, 1.5F, -3.0F)), - BONESTEEL_HOE("bonesteel_hoe", () -> - ItemBuilder.newToolItem(HoeItem::new, -1, -1.0F)), - BONESTEEL_SWORD("bonesteel_sword", () -> - ItemBuilder.newToolItem(HoeItem::new, 3, -2.2F)), + BONESTEEL_PICKAXE("bonesteel_pickaxe", () -> ItemBuilder.newToolItem(PickaxeItem::new, 1, -2.4f)), + BONESTEEL_AXE("bonesteel_axe", () -> ItemBuilder.newToolItem(AxeItem::new, 6.0f, -2.9f)), + BONESTEEL_SHOVEL("bonesteel_shovel", () -> ItemBuilder.newToolItem(ShovelItem::new, 1.5F, -3.0F)), + BONESTEEL_HOE("bonesteel_hoe", () -> ItemBuilder.newToolItem(HoeItem::new, -1, -1.0F)), + BONESTEEL_SWORD("bonesteel_sword", () -> ItemBuilder.newToolItem(HoeItem::new, 3, -2.2F)), AMETHYST_DUST("amethyst_dust", ItemBuilder::newItemDust), LAPIS_DUST("lapis_dust", ItemBuilder::newItemDust), EMERALD_DUST("emerald_dust", ItemBuilder::newItemDust), @@ -64,9 +66,8 @@ public static void registerAll() { register(item.path, item.get()); } ItemGroupEvents.modifyEntriesEvent(Bone.ITEM_GROUP).register(entries -> entries.addAll( - Arrays.stream(values()).filter(item -> item.addToItemGroup).map(item -> - item.get().getDefaultStack()).toList()) - ); + Arrays.stream(values()).filter(item -> item.addToItemGroup).map(item -> item.get().getDefaultStack()) + .toList())); } public Item get() { @@ -88,13 +89,14 @@ protected static Item newItemArmor(Type armorType) { return new ArmorItem(new BonesteelArmorMaterial(), armorType, new FabricItemSettings().rarity(Rarity.EPIC)); } - protected static Item newToolItem(QuadFunction toolCreator, - int damage, float attackspeed) { + protected static Item newToolItem(QuadFunction toolCreator, + int damage, float attackspeed) { return toolCreator.apply(BonesteelToolMaterial.INSTANCE, damage, attackspeed, new FabricItemSettings().rarity(Rarity.EPIC)); } - protected static Item newToolItem(QuadFunction toolCreator, - float damage, float attackspeed) { + + protected static Item newToolItem(QuadFunction toolCreator, + float damage, float attackspeed) { return toolCreator.apply(BonesteelToolMaterial.INSTANCE, damage, attackspeed, new FabricItemSettings().rarity(Rarity.EPIC)); } diff --git a/src/main/resources/assets/bone/blockstates/charcoal_block.json b/src/main/resources/assets/bone/blockstates/firewood_block.json similarity index 51% rename from src/main/resources/assets/bone/blockstates/charcoal_block.json rename to src/main/resources/assets/bone/blockstates/firewood_block.json index a8eda14..be7ed9b 100644 --- a/src/main/resources/assets/bone/blockstates/charcoal_block.json +++ b/src/main/resources/assets/bone/blockstates/firewood_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "bone:block/charcoal_block" + "model": "bone:block/firewood_block" } } } \ No newline at end of file diff --git a/src/main/resources/assets/bone/lang/en_us.json b/src/main/resources/assets/bone/lang/en_us.json index ed1f540..5713fc3 100644 --- a/src/main/resources/assets/bone/lang/en_us.json +++ b/src/main/resources/assets/bone/lang/en_us.json @@ -1,6 +1,6 @@ { "block.bone.bone_forge": "Bone Forge", - "block.bone.charcoal_block": "Block of Charcoal", + "block.bone.firewood_block": "Bundle of Firewood", "block.bone.bone_fire": "Bone Fire", "block.bone.bone_fire.type=jord": "Jord Fire", "block.bone.bone_fire.type=aegir": "Aegir Fire", diff --git a/src/main/resources/assets/bone/models/block/charcoal_block.json b/src/main/resources/assets/bone/models/block/charcoal_block.json deleted file mode 100644 index 01c10e7..0000000 --- a/src/main/resources/assets/bone/models/block/charcoal_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "bone:block/charcoal_block" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bone/models/block/firewood_block.json b/src/main/resources/assets/bone/models/block/firewood_block.json new file mode 100644 index 0000000..8c27b14 --- /dev/null +++ b/src/main/resources/assets/bone/models/block/firewood_block.json @@ -0,0 +1,81 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [ + 64, + 64 + ], + "textures": { + "1": "bone:block/firewood_block", + "particle": "bone:block/firewood_block" + }, + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "north": { + "uv": [ + 0, + 0, + 4, + 4 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0, + 4, + 4, + 8 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 4, + 0, + 8, + 4 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4, + 4, + 8, + 8 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 4, + 12, + 0, + 8 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 12, + 0, + 8, + 4 + ], + "texture": "#1" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bone/models/item/charcoal_block.json b/src/main/resources/assets/bone/models/item/charcoal_block.json deleted file mode 100644 index e1283bb..0000000 --- a/src/main/resources/assets/bone/models/item/charcoal_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "bone:block/charcoal_block" -} \ No newline at end of file diff --git a/src/main/resources/assets/bone/models/item/firewood_block.json b/src/main/resources/assets/bone/models/item/firewood_block.json new file mode 100644 index 0000000..c153d12 --- /dev/null +++ b/src/main/resources/assets/bone/models/item/firewood_block.json @@ -0,0 +1,85 @@ +{ + "parent": "bone:block/firewood_block", + "display": { + "ground": { + "translation": [ + 0, + 2, + 0 + ], + "scale": [ + 0.3, + 0.3, + 0.3 + ] + }, + "gui": { + "rotation": [ + 30, + 225, + 0 + ], + "translation": [ + 0, + 0, + 0 + ], + "scale": [ + 0.625, + 0.625, + 0.625 + ] + }, + "thirdperson_righthand": { + "rotation": [ + 10, + -45, + 0 + ], + "translation": [ + 0, + 1.5, + -2.75 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + -135, + 25 + ], + "translation": [ + 0, + 4, + 2 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] + }, + "fixed": { + "rotation": [ + 0, + 0, + 0 + ], + "translation": [ + 0, + 0, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bone/textures/block/charcoal_block.png b/src/main/resources/assets/bone/textures/block/charcoal_block.png deleted file mode 100644 index 90bc9fee916bed05cc292e777807d42d8be693b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4458 zcmeHLdr(x@8NW+-Wm_vmqKT+n*CL?ay^nq0vI?@m-oPS3biq!<`&_Q>?p=28va2no z#Ka_;@qtW5$2K}@Xh{=|mL_8>0hOj5V-q`3rfDcCCS$8k(Xqi9Q)AD)yDZRVro&A0 zAIqFQ-~G<-{LXiN=Q|%3?n4@MAM$mSKv7Ge zbnpO>nq)|$U_jGMu#+^8K#u_5cF-OJwt`XGTuqAFzXI&+xZMuy{5U2F*tjMMngRMl zpb@~%0(}=~;)}7hdVsBb($ya)uoUL8zMOJZ!-O8k^adlCj}ZnE$4J}+;|3D5l7tPQ zHHXI|QkeP{Cf@=q&x<7`)l^9d90*E+=;a|OdZ=Zu-Fd!fUVp>t?wTd@--n0y93ktI zA8-1_n*5b7R4@JIjSb81r?}>}Wz8w?>;Cl9_n0ev{q^oNcX7tQpr&wBjlB1E2LKR0LP$Zx?4t86S8*PQBK`tS_ioa>sV(9cs>Zw{mB0-O0Yzc5&Xt z&n|g|pLXQUe(ITJk+*8hreSfoqwDYOAADZ8_DKo9+7&+DvTF34v$&yNATMPeJNZ)X zOBwLdUD~dbnVoC$`d4lr-M9QJdH`*!SnN*G+Gba8Oa1*9+aC0d_}>`*=-B=&D(Nh` z>n^T+zPWYn`KF%T^E<;y$*;C9J$vnhsr65*{+K-w&JT(NRz1Um#@~MHAzYGoy{`pHYwP4XS0%|xK0VDz46l#+0?L6wg)5=~n%%_9FvEL9zg;)->vwgq z$k}ynlM8bNO87?6xh2T2-cnV|ZrQ}zINgfn+QKLa2z!lN8^ow7d3Nvz0`s%aIB0yqyGAq-|4Vze+ELYrs;!Aur{<2k`% zv|GJh6y+WNG4FM3W^{r zY460S6ej*dfXMIXOfrWG}Dv&~|}FcW4YY$lV{ zG!9zJ2SXqe6;8Ewsw2v=kYF=FSX#+bK%n};UdWOlPs>uUR+7ASU83qHhF#z~akNZ3 zXqgA3i8@?6R)-PHLShNsNteWl!sh>lRxS@*7&~&O7y|2WR$Z|hwVH2=J;ffqqI#8J zSiKY^&BnG6qMLb6jT3OihS)~h@8Lo9h^OnAU;LU>u;84LFd1kB8bvPg7ejbDwvFpH1f(R0KpI(LvYi73Wmlv zj4Cx_Y{!M@e`!*v0wxq0FfZl<#S7FzG*JxWnki-H8~nu2;u~B6P){#1C4HymnwD!y z3QP$+on6y%O-X?%fv2*djh&mOJ++j?)w?IU*TcU8gD$KMjl_U#_Ies|{KFTT^;H1AkD^t0}y z!(HpMS?HuMyCC<%k22?Fv%XjU+S_J;PW5f-bHXAaD1>sc^!-AGU7(^m?LF25f>*meJG-sQ%1r|n!NL%3hd^?c?T z>U=cytKSTM@=nLOD|71a`d!DfMh77{U$$?1-R1l!>(b8qY>R0$ ar()TY|2#MQ%bx?4AgZ*=@#e}6&;1)1y#wt4 diff --git a/src/main/resources/assets/bone/textures/block/firewood_block.png b/src/main/resources/assets/bone/textures/block/firewood_block.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5e341b0f200f2bdc8ca86bc60d98e7867b6f92 GIT binary patch literal 3270 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