From 57a3ebfdc0059d260a5787e3fac50ee8c1e348d1 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 2 Dec 2023 20:06:55 +0100 Subject: [PATCH] added sulforpad, but not yet spawning on lava lakes (as wished) --- gradle.properties | 2 +- .../quickiefabric/QuickieFabricClient.java | 3 +- .../quickiefabric/blocks/BlockSulforpad.java | 87 ++++++++++++++++++ .../quickiefabric/blocks/QuickieBlocks.java | 1 + .../quickiefabric/init/FeaturesManager.java | 2 +- .../quickiefabric/init/RegistryManager.java | 3 +- .../quickiefabric/items/ItemSulphor.java | 21 +++++ .../quickiefabric/blockstates/sulforpad.json | 12 +++ .../assets/quickiefabric/lang/de_de.json | 1 + .../assets/quickiefabric/lang/en_us.json | 1 + .../models/block/sulforpad0.json | 16 ++++ .../models/block/sulforpad1.json | 16 ++++ .../models/block/sulforpad2.json | 16 ++++ .../quickiefabric/models/item/sulphorpad.json | 6 ++ .../textures/block/sulforpad0.png | Bin 0 -> 5364 bytes .../textures/block/sulforpad1.png | Bin 0 -> 5399 bytes .../textures/block/sulforpad2.png | Bin 0 -> 5642 bytes 17 files changed, 183 insertions(+), 4 deletions(-) create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java create mode 100644 src/main/resources/assets/quickiefabric/blockstates/sulforpad.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/sulforpad0.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/sulforpad1.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/sulforpad2.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/sulphorpad.json create mode 100644 src/main/resources/assets/quickiefabric/textures/block/sulforpad0.png create mode 100644 src/main/resources/assets/quickiefabric/textures/block/sulforpad1.png create mode 100644 src/main/resources/assets/quickiefabric/textures/block/sulforpad2.png diff --git a/gradle.properties b/gradle.properties index 06dd847..3c5dbac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.3-pre2+build.5 loader_version=0.14.24 # Mod Properties - mod_version = 1.20.3.3 + mod_version = 1.20.3.4 maven_group = de.jottyfan.minecraft archives_base_name = quickiefabric diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java index f8b1859..e55b3a4 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java @@ -22,7 +22,8 @@ public class QuickieFabricClient implements ClientModInitializer { public void onInitializeClient() { HandledScreens.register(RegistryManager.BACKPACK_SCREEN_HANDLER, BackpackScreen::new); HandledScreens.register(RegistryManager.BLOCKSTACKER_SCREEN_HANDLER, BlockStackerScreen::new); - // make cotton plant block transparent + // make cotton plant block and sulforpad transparent BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.COTTONPLANT, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.SULFORPAD, RenderLayer.getCutout()); } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java new file mode 100644 index 0000000..a1eb241 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockSulforpad.java @@ -0,0 +1,87 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.Arrays; +import java.util.List; + +import com.mojang.serialization.MapCodec; + +import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.CropBlock; +import net.minecraft.block.ShapeContext; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.ItemScatterer; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockSulforpad extends CropBlock { + + public BlockSulforpad(AbstractBlock.Settings settings) { + super(settings.nonOpaque().blockVision(Blocks::never).solidBlock(Blocks::never)); + } + + protected BlockSulforpad() { + super(FabricBlockSettings.create()); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SULPHOR, 2) }); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return Block.createCuboidShape(1.0, 0.0, 1.0, 15.0, 1.5, 15.0); + } + + @Override + protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) { + return floor.getBlock().equals(Blocks.LAVA) || floor.getBlock().equals(Blocks.LAVA_CAULDRON); + } + + @Override + protected ItemConvertible getSeedsItem() { + return QuickieItems.SULPHOR; + } + + private void spawnHarvested(World world, BlockPos pos, BlockState state) { + DefaultedList list = DefaultedList.of(); + getDroppedStacks(state, null).forEach(itemStack -> { + list.add(itemStack); + }); + ItemScatterer.spawn(world, pos, list); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, + BlockHitResult hitResult) { + if (!world.isClient && isMature(state)) { + spawnHarvested(world, pos, state); + world.setBlockState(pos, state.with(AGE, 0)); + } + return super.onUse(state, world, pos, player, hand, hitResult); + } + + @Override + public MapCodec getCodec() { + return BlockSulforpad.createCodec(BlockSulforpad::new); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java index edee31c..5fea876 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java @@ -36,4 +36,5 @@ public class QuickieBlocks { public static final BlockSpreader BLOCKSPREADER = new BlockSpreader(); public static final BlockSpeedpowder BLOCKSPEEDPOWDER = new BlockSpeedpowder(); public static final BlockQuickiepowder BLOCKQUICKIEPOWDER = new BlockQuickiepowder(); + public static final BlockSulforpad SULFORPAD = new BlockSulforpad(); } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java index e3280a7..02e077e 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/FeaturesManager.java @@ -40,7 +40,7 @@ public class FeaturesManager { return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, new Identifier(RegistryManager.QUICKIEFABRIC, name)); } - private static final RegistryKey genPf(String name) { + private static final RegistryKey genPf(String name) { return RegistryKey.of(RegistryKeys.PLACED_FEATURE, new Identifier(RegistryManager.QUICKIEFABRIC, name)); } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java index 34a3714..488801c 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java @@ -141,7 +141,7 @@ public class RegistryManager { stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERNORTH)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSTACKERSOUTH)); stacks.add(new ItemStack(QuickieBlocks.BLOCKSPREADER)); - }).build()); + }).build()); } private static final void registerBlock(Block block, String name) { @@ -222,6 +222,7 @@ public class RegistryManager { registerBlock(QuickieBlocks.BLOCKSTACKERNORTH, "blockstackernorth"); registerBlock(QuickieBlocks.BLOCKSTACKERSOUTH, "blockstackersouth"); registerBlock(QuickieBlocks.BLOCKSPREADER, "blockspreader"); + registerBlock(QuickieBlocks.SULFORPAD, "sulforpad"); } public static final void registerItems() { diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemSulphor.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemSulphor.java index fcd2511..07ab369 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemSulphor.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemSulphor.java @@ -1,7 +1,14 @@ package de.jottyfan.minecraft.quickiefabric.items; +import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.ItemUsageContext; +import net.minecraft.util.ActionResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; /** * @@ -13,4 +20,18 @@ public class ItemSulphor extends Item { public ItemSulphor() { super(new FabricItemSettings()); } + + @Override + public ActionResult useOnBlock(ItemUsageContext context) { + World world = context.getWorld(); + BlockPos pos = context.getBlockPos(); + Block block = world.getBlockState(pos).getBlock(); + if (Blocks.LAVA_CAULDRON.equals(block)) { + if (world.getBlockState(pos.up()).isAir()) { + world.setBlockState(pos.up(), QuickieBlocks.SULFORPAD.getDefaultState()); + context.getStack().decrement(1); + } + } + return ActionResult.PASS; + } } diff --git a/src/main/resources/assets/quickiefabric/blockstates/sulforpad.json b/src/main/resources/assets/quickiefabric/blockstates/sulforpad.json new file mode 100644 index 0000000..9fcb5d0 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/sulforpad.json @@ -0,0 +1,12 @@ +{ + "variants": { + "age=0": { "model": "quickiefabric:block/sulforpad0" }, + "age=1": { "model": "quickiefabric:block/sulforpad0" }, + "age=2": { "model": "quickiefabric:block/sulforpad0" }, + "age=3": { "model": "quickiefabric:block/sulforpad0" }, + "age=4": { "model": "quickiefabric:block/sulforpad1" }, + "age=5": { "model": "quickiefabric:block/sulforpad1" }, + "age=6": { "model": "quickiefabric:block/sulforpad1" }, + "age=7": { "model": "quickiefabric:block/sulforpad2" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/lang/de_de.json b/src/main/resources/assets/quickiefabric/lang/de_de.json index 68ceab1..c97b395 100644 --- a/src/main/resources/assets/quickiefabric/lang/de_de.json +++ b/src/main/resources/assets/quickiefabric/lang/de_de.json @@ -79,6 +79,7 @@ "block.quickiefabric.blockstackernorth": "Nordstapler", "block.quickiefabric.blockstackersouth": "Südstapler", "block.quickiefabric.blockspreader": "Blockverteiler", + "block.quickiefabric.sulforpad": "Schwefelablagerung", "container.quickiefabric.backpack": "Rucksack", "container.quickiefabric.blockstacker": "Blockstapler", "msg.buildingplan.start": "beginne Konstruktionsaufnahme bei %s,%s,%s", diff --git a/src/main/resources/assets/quickiefabric/lang/en_us.json b/src/main/resources/assets/quickiefabric/lang/en_us.json index 28be357..c23f338 100644 --- a/src/main/resources/assets/quickiefabric/lang/en_us.json +++ b/src/main/resources/assets/quickiefabric/lang/en_us.json @@ -79,6 +79,7 @@ "block.quickiefabric.blockstackernorth": "north stacker", "block.quickiefabric.blockstackersouth": "south stacker", "block.quickiefabric.blockspreader": "block spreader", + "block.quickiefabric.sulforpad": "sulphur deposition", "container.quickiefabric.backpack": "backpack", "container.quickiefabric.blockstacker": "block stacker", "msg.buildingplan.start": "started recording of construction at %s,%s,%s", diff --git a/src/main/resources/assets/quickiefabric/models/block/sulforpad0.json b/src/main/resources/assets/quickiefabric/models/block/sulforpad0.json new file mode 100644 index 0000000..8c54013 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/sulforpad0.json @@ -0,0 +1,16 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "quickiefabric:block/sulforpad0", + "texture": "quickiefabric:block/sulforpad0" + }, + "elements": [ + { "from": [ 0, 0.25, 0 ], + "to": [ 16, 0.25, 16 ], + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/quickiefabric/models/block/sulforpad1.json b/src/main/resources/assets/quickiefabric/models/block/sulforpad1.json new file mode 100644 index 0000000..952db6d --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/sulforpad1.json @@ -0,0 +1,16 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "quickiefabric:block/sulforpad1", + "texture": "quickiefabric:block/sulforpad1" + }, + "elements": [ + { "from": [ 0, 0.25, 0 ], + "to": [ 16, 0.25, 16 ], + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/quickiefabric/models/block/sulforpad2.json b/src/main/resources/assets/quickiefabric/models/block/sulforpad2.json new file mode 100644 index 0000000..1d8992c --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/sulforpad2.json @@ -0,0 +1,16 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "quickiefabric:block/sulforpad2", + "texture": "quickiefabric:block/sulforpad2" + }, + "elements": [ + { "from": [ 0, 0.25, 0 ], + "to": [ 16, 0.25, 16 ], + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/quickiefabric/models/item/sulphorpad.json b/src/main/resources/assets/quickiefabric/models/item/sulphorpad.json new file mode 100644 index 0000000..d95f4ed --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/sulphorpad.json @@ -0,0 +1,6 @@ +{ + "parent": "item/coal", + "textures": { + "layer0": "quickiefabric:item/sulphorpad2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/textures/block/sulforpad0.png b/src/main/resources/assets/quickiefabric/textures/block/sulforpad0.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff980f49240a5f758a282f1ca3e05c0dfe4416f GIT binary patch literal 5364 zcmeHLeNYtV8DGQ*o*#)0#?OiC`Bl^G-G1He-pUDhhj8ct!l}sU=(}IA@xI(!xPyvm zB$}#`NL6ADrtOHWj*UT>G_B(Jg|X2wHnGO97^SAgs?jQKBx6SU?j0gbGt+UZ{>9Dg z?e6nF@9%wnzxR3G-FH{#W@ijCj4~hyGRT$b%!B6_^dqq!{2$xa0pRJIa!-Ml2f}Dj z4akaDLbbA>gh~-bMv%ybb+a!HI)V=TzGzL=VsG0&*{>&-R90P{iM#T5=3y=EgZZ%; z1&dB$$=_Z%o|eD!ygKQPEu)yEP35yPs_HUIQ@8!$PRo~zb60$z72o{c@KTB9oi?GW zZQEzIoxjdHJ7dYGIpO7ZS1mX&`j359SCH6)N@i$j`h`0;*EF0__gx@Q+pmA(kMCRdU4otI}P&Ufz1I{!{){HZ^s#wBbUkvcS8 zZaES;oIkzK#&@58Ron92KTiJbv$xw@3tI*aYc1VX-Ensug2YuS4o9xb;dn?K(ygti zwr3tm9dmS1{&wTAw5dO1#U0tDcLp3QTxs+qemH&C;7RW+Pus9+!qKC%gBaVsr=TRb z^ouix=Dg51C3V5V+N6bb%^ee0zDT?@=HAsy`;T3knp*7HESDUObANPFBge_1UHr9S zAaTS&nkO6IvbnMjg_m6#fAH+S5vT5^+-tp--}YjBALG*6k-u>_r6o5iqigT29{;-u zyP8{@uTEOHzPt zUl|59+(_uCynLx}i=S71agh&c{AJzQ zi-rG6ymq;tY4^n~4G9ZwA?-s8KI>ZT+a4&EPGkw17u({tr#o4zW%&sHGhU*=rz z$FhAtUbAukt+re5efre{`|0bq6D~KYpKt1)eHcN8^i^OU7Px0|LcnJNVt|)S5nm7{ zD1s!XM1nwAB55cu6)AqZ@%Fw0MpO~)#(5Su?hZPnVkNU&mGaB8Jwo{s!6q70rWukW z90c%58bBjHuRp{^?8YcA2d{Or*@#A6v?X?9fjbv<1XKy7O|%Ke(j!VKX`E(2lT}gX z@|-g|A>f_eSgdJ5&TI~c!=^B03aCY9!e+CXanekZ81%qGWqu7rFn?&g4iUp}N+Cg2 zf|?TWqdF$w10|Z>XoT(P!}xqbx4R48AL>*A>S2z6pqVh?W}na8y+=q(FNGkT0sUZ) zkO!8tIZp}&N>o8gFO~e-`0fy*(A7U!qI#orM8Pb1B_DJR!BL4GLuR<#xm`VU35pb7 zFxm@>-NRE;wcm1c3vY#|cX42IcaHG~gE`9SVY*6o_M`tt>6#Bt|hZ zjnM+dU@R_Cm?T(as}&~*i$ryU$WaxTmB8CQDjiCMP?StDf()Tp5(3ax$%gTQMZ|0* z10*X&kv0O4LWu%5BcS>KoKD3DiX?N;UleW71?SRoU3MdBin&HDxn7{ju!G$=OYxUP z9=UoHpOmiwT}^_)2@6e;R*Iz=)2ur76=BH1Qp(P6eO9Z2Fn+>B$fyH>z z%3w0!0Yi(j%vkxJLI1xLS&o7^K|ec+6iqP_L*f`O+Wv^_hDA`5UrWJ!#WXe*pWnZbaCXEBmxEkK|dk)>nx|HKj%RyM)W#IvIaXhL8~ z!h$g}1+$eG;L6StIA)=NjS=A@$AZ|h{3I#DM5TICOg8J!?}w{TviZN(rdO40*~d~n_azfJ(dEG<=mTH zPfRYuqfZ->AMQxP@WVy%g(~=Y3hBqs%y1$nkVd3qUG2%G(9%DcIX{FTrt$g_7ulXt z3XKVx%blLkI+t$k;dESnUn!mrlwW*_JcR~I( zXU({b*7^;%)uj6RyiMYUE4x=6n>_KSUuyLYS(OHW%sgDTV$PX09a9X=mn!&<7MJ>y zkFLBXcD(X_b;t8-g|9t(>+}Ad(y*2ZXM)0Iuf{Fi)3Ckrz8+sZGUm;>Z@<~+Wo NaiwQFcTZou;y-_jPcZ-h literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/sulforpad1.png b/src/main/resources/assets/quickiefabric/textures/block/sulforpad1.png new file mode 100644 index 0000000000000000000000000000000000000000..da3163a6da7cfe5702ef8d544f9158f84d8d1492 GIT binary patch literal 5399 zcmeHLdsNhB77tQHvAPyf#20atQq(X>CiBWN0>TJW9YsLJO0}6JGensOGht@X%C6{c z6{UcPf>i_`M?HJQN0%x-K}FXWwIX(ph*H$GiuGCFuI!f?L^#`X_IOtNmvc@g$^GvA zefR$Ez4`KGaomKMo<0M7APDNIiH(j2=ib86ttpn!2;ilXUldx80kFn!;YtUikmU(ZShgd z%cE!4PIP46|7-HWft6hr&%=?I^X0yF^@V%4vUk>7=U%|;8gHg2`dnX5Pja#&f(AC9 z*x>a%*utqr_g30}J^V6biqq3yW-pIf^36;L@>sw{Ma5~NqFx0K!d*QtUln^eVo=S@ z1a*G)qQTLF@WkM~Ngp-N>YE)m^qkLDvMBkPmv+E1KmVBOil(Mxy87yxX;ZzYM)rOI zrKP9E^ZCB5EB!t@;t>PHdQ8imTswVr#iuzHw~x>4f1+jN z$>dGS?BV@(e9&FwcP?(Mmu%hNZ*EA6t;;-gEWG(ykTvA$hz0qy$K;f}&%>VtzPNpU z#F3BpZ;0#ib7tD=T&&dKpK^Zi_2>UgTNNB}H(>YKhL^KEi=GbOf9bp^rm9M2Nozd6 zT-9Xt?w^S>3HFV!wk!_1^!?A@SgXz;XLkMT;rR>4Zg}REmB-7gs)wR8Hrz^I>v(K` z^yp6Uls|<(3a~bOwW4|*sL7!msKX@fc#<|7Ln+3rV?&)r3n)+s3JZ5yD0()_!#dW$ znN*@Xdk>0Wj!}uGO0}rg62+!)v2(0!!kh_-^qkqWk`aZE_6c*60Kmxd6znvnnrx&~ zC34}C;93xiMX*bSpRE!lY2)B1vz3L3P$CpX)K1Qhi$?pvVOB;@#z&8Bg8+9bQ3}sn zNU_-AaD+M}p=PT=j472$F^Y?E903}LEyKi9PQ+vzCP26`qFEbl{}^TD01Bc$2M-1;B^cNm;~LC@MA@#T_kdyxI;x+8p{#3tJ*+XK_4hGpAc= zR&8fZ{IHG?4Bc*TNw=oD!eMAJo5~u2stwGFb(%6pqm65~5GXKkMvKb|kljg>=k%}1 z>g1a+;tHpuBfz{Jx0Cj(*j>s%ORFWL&2+lpo+er)66PlvGtDui>ry9Y^%z0W2!Y{J zgiuOoM29gbg2^xprSv)!lh7TYG$tEQnP^sk0^p$>z>(roy^@tP2+d#&Lg*M4(a9JZ zQA*?lE|Ke%Iyu?_VxpA;RY|3G^h$tY0F*>8k<)q3{8$TTa6S*CugJ#tk_~QxaJTDCnMuDDiI#)R&`0@QYl^!3{;}=oGIP;S~Za~ zvI#sTu!+f0OiD;F6hkFAp;Ww9n!;Lbpb`a43=NeKt`Q+EBnSo&O9^!f09NG@DaZBEbPzuxuaJf_7pko{FY;7J#C-gv4+X#S<|lDaA;Md?bpIXa{{W!|5~r zm$uM6aF{#gv78OepWza@J1T)qbKkjdQ#n^F!LX|-NQ!ocV596T%a6$Q~TzNQqM#r`TyH%4D9zq?&NM+ht=u( zoO3VlA7^=%yhgm*cHsMrT3b_i>i8TV|37<|u2#!7edX13zsfMw-oH@vvOsZ z9K{mI>6n_g_VVH6?vp)sr?)0ewl)uc^su$G=$>ZN%tgVod`g$K) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/sulforpad2.png b/src/main/resources/assets/quickiefabric/textures/block/sulforpad2.png new file mode 100644 index 0000000000000000000000000000000000000000..29bbb3c9652c3241910bf7c4e87a1e3d3d727afb GIT binary patch literal 5642 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 literal 0 HcmV?d00001