From 83ddc724bd985dc802b7aad4524301b48c619764 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Thu, 25 Dec 2025 17:47:16 +0100 Subject: [PATCH] added rotten flesh stripes --- .../java/de/jottyfan/minecraft/Quickly.java | 38 ++---------------- .../minecraft/composter/QuicklyComposter.java | 18 +++++++++ .../jottyfan/minecraft/item/QuicklyItems.java | 2 + .../minecraft/loot/QuicklyLootTables.java | 36 +++++++++++++++++ .../quickly/items/rotten_flesh_stripes.json | 6 +++ .../resources/assets/quickly/lang/de_de.json | 1 + .../resources/assets/quickly/lang/en_us.json | 1 + .../models/item/rotten_flesh_stripes.json | 6 +++ .../textures/item/rotten_flesh_stripes.png | Bin 0 -> 1667 bytes .../smoking_leather_from_flesh_stripes.json | 9 +++++ .../recipe/stonecutting_flesh_stripes.json | 8 ++++ 11 files changed, 91 insertions(+), 34 deletions(-) create mode 100644 src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java create mode 100644 src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java create mode 100644 src/main/resources/assets/quickly/items/rotten_flesh_stripes.json create mode 100644 src/main/resources/assets/quickly/models/item/rotten_flesh_stripes.json create mode 100644 src/main/resources/assets/quickly/textures/item/rotten_flesh_stripes.png create mode 100644 src/main/resources/data/quickly/recipe/smoking_leather_from_flesh_stripes.json create mode 100644 src/main/resources/data/quickly/recipe/stonecutting_flesh_stripes.json diff --git a/src/main/java/de/jottyfan/minecraft/Quickly.java b/src/main/java/de/jottyfan/minecraft/Quickly.java index a877312..edd4e56 100644 --- a/src/main/java/de/jottyfan/minecraft/Quickly.java +++ b/src/main/java/de/jottyfan/minecraft/Quickly.java @@ -4,16 +4,11 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import de.jottyfan.minecraft.block.QuicklyBlocks; +import de.jottyfan.minecraft.composter.QuicklyComposter; import de.jottyfan.minecraft.feature.QuicklyFeatures; import de.jottyfan.minecraft.item.QuicklyItems; +import de.jottyfan.minecraft.loot.QuicklyLootTables; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.loot.v3.LootTableEvents; -import net.fabricmc.fabric.api.registry.CompostingChanceRegistry; -import net.minecraft.resources.Identifier; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; /** * * @author jotty @@ -24,30 +19,6 @@ public class Quickly implements ModInitializer { public static final Logger LOGGER = LogManager.getLogger(MOD_ID); - private void registerComposterItems() { - CompostingChanceRegistry.INSTANCE.add(QuicklyItems.COTTONSEED, 0.5f); - CompostingChanceRegistry.INSTANCE.add(QuicklyItems.COTTON, 0.75f); - } - - private void registerLootTableChanges() { - LootTableEvents.MODIFY.register((key, tableBuilder, source, registries) -> { - if (source.isBuiltin()) { - // TODO: maybe, better harvest cotton from dry grass instead? - Identifier shortGrass = Identifier.fromNamespaceAndPath("minecraft", "blocks/short_grass"); - Identifier tallGrass = Identifier.fromNamespaceAndPath("minecraft", "blocks/tall_grass"); - if (key.identifier().equals(shortGrass)) { - LootPool.Builder poolBuilder = LootPool.lootPool() - .setRolls(ConstantValue.exactly(1f)) - .when(LootItemRandomChanceCondition.randomChance(0.1f)) - .add(LootItem.lootTableItem(QuicklyItems.COTTONSEED)); - tableBuilder.withPool(poolBuilder); - } else if (key.identifier().equals(tallGrass)) { - // for the canola loot table block later - } - } - }); - } - @Override public void onInitialize() { LOGGER.info("loading {}", MOD_ID); @@ -55,8 +26,7 @@ public class Quickly implements ModInitializer { QuicklyItems.registerModItems(); QuicklyBlocks.registerModBlocks(); QuicklyFeatures.registerFeatures(); - registerComposterItems(); - registerLootTableChanges(); - + QuicklyComposter.registerComposterItems(); + QuicklyLootTables.registerChanges(); } } \ No newline at end of file diff --git a/src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java b/src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java new file mode 100644 index 0000000..8310cd8 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/composter/QuicklyComposter.java @@ -0,0 +1,18 @@ +package de.jottyfan.minecraft.composter; + +import de.jottyfan.minecraft.item.QuicklyItems; +import net.fabricmc.fabric.api.registry.CompostingChanceRegistry; + +/** + * + * @author jotty + * + */ +public class QuicklyComposter { + + public static final void registerComposterItems() { + CompostingChanceRegistry.INSTANCE.add(QuicklyItems.COTTONSEED, 0.5f); + CompostingChanceRegistry.INSTANCE.add(QuicklyItems.COTTON, 0.75f); + } + +} diff --git a/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java b/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java index 5167e22..8b97b71 100644 --- a/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java +++ b/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java @@ -25,6 +25,7 @@ public class QuicklyItems { public static final Item COTTON = registerItem("cotton"); public static final Item COTTONPLANT = registerItem("cottonplant"); public static final Item COTTONSEED = registerItem("cottonseed", properties -> new Plant(properties, "blockcottonplant")); + public static final Item ROTTENFLESHSTRIPES = registerItem("rotten_flesh_stripes"); private static final Item registerItem(String name) { return QuicklyItems.registerItem(name, new Item.Properties()); @@ -52,6 +53,7 @@ public class QuicklyItems { item.accept(TURQUOISEINGOT); item.accept(COTTON); item.accept(COTTONSEED); + item.accept(ROTTENFLESHSTRIPES); }); } } diff --git a/src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java b/src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java new file mode 100644 index 0000000..4cc31b9 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/loot/QuicklyLootTables.java @@ -0,0 +1,36 @@ +package de.jottyfan.minecraft.loot; + +import de.jottyfan.minecraft.item.QuicklyItems; +import net.fabricmc.fabric.api.loot.v3.LootTableEvents; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; + +/** + * + * @author jotty + * + */ +public class QuicklyLootTables { + + public static final void registerChanges() { + LootTableEvents.MODIFY.register((key, tableBuilder, source, registries) -> { + if (source.isBuiltin()) { + // TODO: maybe, better harvest cotton from dry grass instead? + Identifier shortGrass = Identifier.fromNamespaceAndPath("minecraft", "blocks/short_grass"); + Identifier tallGrass = Identifier.fromNamespaceAndPath("minecraft", "blocks/tall_grass"); + if (key.identifier().equals(shortGrass)) { + LootPool.Builder poolBuilder = LootPool.lootPool() + .setRolls(ConstantValue.exactly(1f)) + .when(LootItemRandomChanceCondition.randomChance(0.1f)) + .add(LootItem.lootTableItem(QuicklyItems.COTTONSEED)); + tableBuilder.withPool(poolBuilder); + } else if (key.identifier().equals(tallGrass)) { + // for the canola loot table block later + } + } + }); + } +} diff --git a/src/main/resources/assets/quickly/items/rotten_flesh_stripes.json b/src/main/resources/assets/quickly/items/rotten_flesh_stripes.json new file mode 100644 index 0000000..c11e692 --- /dev/null +++ b/src/main/resources/assets/quickly/items/rotten_flesh_stripes.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:item/rotten_flesh_stripes" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/lang/de_de.json b/src/main/resources/assets/quickly/lang/de_de.json index ba7abfd..b9f66ba 100644 --- a/src/main/resources/assets/quickly/lang/de_de.json +++ b/src/main/resources/assets/quickly/lang/de_de.json @@ -7,6 +7,7 @@ "item.quickly.oredeepslateturquoise": "Türkistiefenerz", "item.quickly.oreturquoise": "Türkiserz", "item.quickly.rawturquoise": "rohes Türkis", + "item.quickly.rotten_flesh_stripes": "geschnittenes Gammelfleisch", "item.quickly.stub": "Stummel", "item.quickly.turquoiseingot": "Türkisbarren" } diff --git a/src/main/resources/assets/quickly/lang/en_us.json b/src/main/resources/assets/quickly/lang/en_us.json index ec2ee68..5d2d913 100644 --- a/src/main/resources/assets/quickly/lang/en_us.json +++ b/src/main/resources/assets/quickly/lang/en_us.json @@ -7,6 +7,7 @@ "item.quickly.oredeepslateturquoise": "turquoise deepslate ore", "item.quickly.oreturquoise": "turquoise ore", "item.quickly.rawturquoise": "raw turquoise", + "item.quickly.rotten_flesh_stripes": "rotton flesh stripes", "item.quickly.stub": "stub", "item.quickly.turquoiseingot": "turquoise ingot" } diff --git a/src/main/resources/assets/quickly/models/item/rotten_flesh_stripes.json b/src/main/resources/assets/quickly/models/item/rotten_flesh_stripes.json new file mode 100644 index 0000000..aab805a --- /dev/null +++ b/src/main/resources/assets/quickly/models/item/rotten_flesh_stripes.json @@ -0,0 +1,6 @@ +{ + "parent": "item/coal", + "textures": { + "layer0": "quickly:item/rotten_flesh_stripes" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/textures/item/rotten_flesh_stripes.png b/src/main/resources/assets/quickly/textures/item/rotten_flesh_stripes.png new file mode 100644 index 0000000000000000000000000000000000000000..229a0572f1a37c7700726b34bcaf59c7f62ba627 GIT binary patch literal 1667 zcmV-}27LL6P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+SONEk|ZY#{O1%t0z!bK;{XK_zJZVLd)HqD2b@4fXrkHTk&Sr{nL&2f2F;1c(?l z?{4mAet|r_Es%KR^`qQLJ9_jeqKD%3@Z5Q}&pbVfIBYqczO%Eg#COLzztE1_qx`ua z1z=nW`Z&1Inb_m4a~IyfGG%ysHcTSc)t2>6ud#EF<`a02))RKV965i4!ufnA<|-9Cm2Hv27D$?l*vm7 zLIfNY{1jLoIED%aD5Y?b8{mdHgB%TWZ>$kob3+PSjMM@m5@!U7f}sMkVodNKi3%So ziBohbrJN*bvQ#qXm{ZPK^2||1SfV7!BBEkalr?J7tfH!>#ey+XSh8&5OwFtmY+9hY zV0FQaQfjDNV@)+zsama;2KQ;PrIwpCZPv;aF1`@{SH8qudf8Pvb+}TGJ@wqBYqwqo zd~NWEBaJ*{=&(^9tQ}TAvPMtL{hBp8tWCz^nkR3pK`e5spqWn6!=pjDf+}DWpLU?%tUDC2uapFYy+B#+;kfeFt-HQg@j9 zk+&DDU1fbyco8(CaAN9tAhESvf|gK6Y&=r+tA{-Jwc7dLT=;)d6zD)j#yx14B`#M) z76yfT3^`>WwY<>fzQLF`MewNGnu`Y#AMbAD;z!)mtG1DS54WAjw%y9=jLYJ17waCI z7m`1y-HU;qc55_=qYdqS_j~4x8IF3)t-hDOMvMXW@khjn?>D5%y~eK@=KgzPtuYa9 zhzKERW(|n~f>f<%>y_7F^iF%u+i>9vXG&{UMiS7yz~_?WHnnjt`e}?lTbFd3nx#AB zGFyFQnCf%eW|&oLvfCF-=1p{qBed%QrEnkZsCE8Z$bY4%&@q^cG`6d!1J%4Et)^O6 zYkFgDc45HH&ZvP#j$6aL@%~2bela1XJ8(c2#a33gXqNJ@EedT1a7fVj=-d#iRoN#C zpx}-`@o>=g#}4^iYd!&#;!woQjuO`mH;o$h-t*F9`vgX<@Lqxp(0bkN%G$c*JL+{* z-PytEH>F4@3Uwnl@Z}o8=L1*)ulTYoz*y-7l@N$u0M3qBCBLUT+_Fwm-ImI?C4bI0 zm=U?iIFvhgj~l34Hs{4`;=kN|rlzIlF z7Kik?#)3553G$u@^IDT4XIW7i#kM!&I`y)4KO6XbO_r9T8Rv?Bwg{+WjvQ#o*mmV_YU3|_+QZzELu`ujgyN7{UQkp@Om6u_$y~_VX zG1~u$HXwED1x6Kd4u%{1uP`WEt22BOVPJUo^asPK^6>vec>xC2x~ctt`1~V-oRR8ruK> literal 0 HcmV?d00001 diff --git a/src/main/resources/data/quickly/recipe/smoking_leather_from_flesh_stripes.json b/src/main/resources/data/quickly/recipe/smoking_leather_from_flesh_stripes.json new file mode 100644 index 0000000..ec12309 --- /dev/null +++ b/src/main/resources/data/quickly/recipe/smoking_leather_from_flesh_stripes.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": "quickly:rotten_flesh_stripes", + "result": { + "id":"minecraft:leather" + }, + "experience": 0, + "cookingtime": 100 +} diff --git a/src/main/resources/data/quickly/recipe/stonecutting_flesh_stripes.json b/src/main/resources/data/quickly/recipe/stonecutting_flesh_stripes.json new file mode 100644 index 0000000..2dbbc0f --- /dev/null +++ b/src/main/resources/data/quickly/recipe/stonecutting_flesh_stripes.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": "minecraft:rotten_flesh", + "result": { + "id": "quickly:rotten_flesh_stripes" + }, + "count": 2 +}