From 0e52a495a0470e4f191885c43a74b7b162e52619 Mon Sep 17 00:00:00 2001 From: jottyfan Date: Sat, 31 Oct 2020 17:33:50 +0100 Subject: [PATCH] added cotton --- gradle.properties | 2 +- .../quickiefabric/QuickieFabric.java | 1 + .../quickiefabric/QuickieFabricClient.java | 5 ++ .../blocks/BlockCottonplant.java | 44 ++++++++++++++++++ .../quickiefabric/blocks/QuickieBlocks.java | 1 + .../quickiefabric/init/RegistryManager.java | 41 +++++++++++++--- .../quickiefabric/items/ItemCotton.java | 15 ++++++ .../quickiefabric/items/ItemCottonseed.java | 36 ++++++++++++++ .../quickiefabric/items/QuickieItems.java | 2 + .../blockstates/cottonplant.json | 12 +++++ .../assets/quickiefabric/lang/de_de.json | 3 ++ .../assets/quickiefabric/lang/en_us.json | 3 ++ .../models/block/cottonplant0.json | 6 +++ .../models/block/cottonplant1.json | 6 +++ .../models/block/cottonplant2.json | 6 +++ .../models/block/cottonplant3.json | 6 +++ .../models/block/cottonplant4.json | 6 +++ .../quickiefabric/models/item/cotton.json | 6 +++ .../models/item/cottonplant.json | 6 +++ .../quickiefabric/models/item/cottonseed.json | 6 +++ .../textures/block/cottonplant0.png | Bin 0 -> 1429 bytes .../textures/block/cottonplant1.png | Bin 0 -> 1246 bytes .../textures/block/cottonplant2.png | Bin 0 -> 1395 bytes .../textures/block/cottonplant3.png | Bin 0 -> 1725 bytes .../textures/block/cottonplant4.png | Bin 0 -> 2118 bytes .../quickiefabric/textures/item/cotton.png | Bin 0 -> 2304 bytes .../textures/item/cottonseed.png | Bin 0 -> 1700 bytes .../recipes/string_from_cotton.json | 12 +++++ 28 files changed, 217 insertions(+), 8 deletions(-) create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockCottonplant.java create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCotton.java create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCottonseed.java create mode 100644 src/main/resources/assets/quickiefabric/blockstates/cottonplant.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/cottonplant0.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/cottonplant1.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/cottonplant2.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/cottonplant3.json create mode 100644 src/main/resources/assets/quickiefabric/models/block/cottonplant4.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/cotton.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/cottonplant.json create mode 100644 src/main/resources/assets/quickiefabric/models/item/cottonseed.json create mode 100644 src/main/resources/assets/quickiefabric/textures/block/cottonplant0.png create mode 100644 src/main/resources/assets/quickiefabric/textures/block/cottonplant1.png create mode 100644 src/main/resources/assets/quickiefabric/textures/block/cottonplant2.png create mode 100644 src/main/resources/assets/quickiefabric/textures/block/cottonplant3.png create mode 100644 src/main/resources/assets/quickiefabric/textures/block/cottonplant4.png create mode 100644 src/main/resources/assets/quickiefabric/textures/item/cotton.png create mode 100644 src/main/resources/assets/quickiefabric/textures/item/cottonseed.png create mode 100644 src/main/resources/data/quickiefabric/recipes/string_from_cotton.json diff --git a/gradle.properties b/gradle.properties index d6db115..7c542d5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.9.3+build.207 # Mod Properties - mod_version = 1.16.3.8 + mod_version = 1.16.3.9 maven_group = de.jottyfan.minecraft archives_base_name = quickiefabric diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabric.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabric.java index 7a3c7af..3c8eeef 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabric.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabric.java @@ -19,5 +19,6 @@ public class QuickieFabric implements ModInitializer { RegistryManager.registerBlockEntities(); RegistryManager.registerContainer(); RegistryManager.registerFeatures(); + RegistryManager.registerLootings(); } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java index b909283..0f120d9 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/QuickieFabricClient.java @@ -1,11 +1,14 @@ package de.jottyfan.minecraft.quickiefabric; +import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import de.jottyfan.minecraft.quickiefabric.container.BackpackScreen; import de.jottyfan.minecraft.quickiefabric.init.RegistryManager; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; +import net.minecraft.client.render.RenderLayer; /** * @@ -17,5 +20,7 @@ public class QuickieFabricClient implements ClientModInitializer { @Override public void onInitializeClient() { ScreenRegistry.register(RegistryManager.BACKPACK_SCREEN_HANDLER, BackpackScreen::new); + // make cotton plant block transparent + BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.COTTONPLANT, RenderLayer.getCutout()); } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockCottonplant.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockCottonplant.java new file mode 100644 index 0000000..1a57f17 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockCottonplant.java @@ -0,0 +1,44 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.Random; + +import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.CropBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +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.world.World; + +public class BlockCottonplant extends CropBlock { + + public BlockCottonplant() { + super(FabricBlockSettings.copy(Blocks.WHEAT)); + } + + @Override + protected ItemConvertible getSeedsItem() { + return QuickieItems.COTTONSEED; + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, + BlockHitResult hitResult) { + if (!world.isClient && isMature(state)) { + DefaultedList list = DefaultedList.of(); + list.add(new ItemStack(getSeedsItem(), new Random().nextInt(3) + 1)); + list.add(new ItemStack(QuickieItems.COTTON, new Random().nextFloat() > 0.9f ? 2 : 1)); + world.setBlockState(pos, state.with(AGE, 0)); + ItemScatterer.spawn(world, pos, list); + } + return super.onUse(state, world, pos, player, hand, hitResult); + } +} \ No newline at end of file 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 951c0ef..86d5223 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/QuickieBlocks.java @@ -17,4 +17,5 @@ public class QuickieBlocks { public static final BlockItemhoarder ITEMHOARDER = new BlockItemhoarder(); public static final BlockMonsterhoarder MONSTERHOARDER = new BlockMonsterhoarder(); public static final BlockKelpstack KELPSTACK = new BlockKelpstack(); + public static final BlockCottonplant COTTONPLANT = new BlockCottonplant(); } 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 20a769b..94e46eb 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/init/RegistryManager.java @@ -18,6 +18,8 @@ import de.jottyfan.minecraft.quickiefabric.event.EventBlockBreak; import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; import de.jottyfan.minecraft.quickiefabric.tools.QuickieTools; import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; +import net.fabricmc.fabric.api.loot.v1.FabricLootPoolBuilder; +import net.fabricmc.fabric.api.loot.v1.event.LootTableLoadingCallback; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; import net.minecraft.block.Block; import net.minecraft.block.Blocks; @@ -28,6 +30,9 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; +import net.minecraft.loot.ConstantLootTableRange; +import net.minecraft.loot.condition.RandomChanceLootCondition; +import net.minecraft.loot.entry.ItemEntry; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.structure.rule.BlockMatchRuleTest; import net.minecraft.util.ActionResult; @@ -99,6 +104,8 @@ public class RegistryManager { stacks.add(new ItemStack(QuickieItems.PENCIL)); stacks.add(new ItemStack(QuickieItems.ROTTEN_FLESH_STRIPES)); stacks.add(new ItemStack(QuickieItems.CARROTSTACK)); + stacks.add(new ItemStack(QuickieItems.COTTON)); + stacks.add(new ItemStack(QuickieItems.COTTONSEED)); stacks.add(new ItemStack(QuickieItems.BACKPACK_BROWN)); stacks.add(new ItemStack(QuickieItems.BACKPACK_WHITE)); stacks.add(new ItemStack(QuickieItems.BACKPACK_BLACK)); @@ -152,12 +159,13 @@ public class RegistryManager { @SuppressWarnings("unchecked") public static final void registerBlockEntities() { LOGGER.debug("registering quickiefabric block entities"); - QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType) registerBlockEntity("itemhoarderblockentity", ItemHoarderBlockEntity::new, - QuickieBlocks.ITEMHOARDER); - QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType) registerBlockEntity("monsterhoarderblockentity", - MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER); - QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType) registerBlockEntity("emptylavahoarderblockentity", - EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER, QuickieBlocks.LAVAHOARDER); + QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType) registerBlockEntity( + "itemhoarderblockentity", ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER); + QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType) registerBlockEntity( + "monsterhoarderblockentity", MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER); + QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType) registerBlockEntity( + "emptylavahoarderblockentity", EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER, + QuickieBlocks.LAVAHOARDER); } public static final void registerBlocks() { @@ -173,6 +181,7 @@ public class RegistryManager { registerBlock(QuickieBlocks.ITEMHOARDER, "itemhoarder"); registerBlock(QuickieBlocks.MONSTERHOARDER, "monsterhoarder"); registerBlock(QuickieBlocks.KELPSTACK, "kelpstack"); + registerBlock(QuickieBlocks.COTTONPLANT, "cottonplant"); } public static final void registerItems() { @@ -184,6 +193,8 @@ public class RegistryManager { registerItem(QuickieItems.SULPHOR, "sulphor"); registerItem(QuickieItems.ROTTEN_FLESH_STRIPES, "rotten_flesh_stripes"); registerItem(QuickieItems.CARROTSTACK, "carrotstack"); + registerItem(QuickieItems.COTTON, "cotton"); + registerItem(QuickieItems.COTTONSEED, "cottonseed"); registerItem(QuickieItems.BACKPACK_BROWN, "backpack_brown"); registerItem(QuickieItems.BACKPACK_WHITE, "backpack_white"); registerItem(QuickieItems.BACKPACK_BLACK, "backpack_black"); @@ -210,7 +221,6 @@ public class RegistryManager { } public static final void registerContainer() { -// ScreenHandlerRegistry.registerSimple(BACKPACK_CONTAINTER, (syncId, inventory) -> new BackpackScreenHandler(syncId, inventory)); } public static final void registerEvents() { @@ -242,4 +252,21 @@ public class RegistryManager { registerFeature("feature_sandsalpeter", FEATURE_SANDSALPETER); registerFeature("feature_oresandsalpeter", FEATURE_ORESANDSALPETER); } + + public static final void registerLootings() { + LootTableLoadingCallback.EVENT.register((resourceManager, lootManager, id, supplier, setter) -> { + if (isGrass(id)) { + FabricLootPoolBuilder poolBuilder = FabricLootPoolBuilder.builder().rolls(ConstantLootTableRange.create(1)) + .withCondition(RandomChanceLootCondition.builder(0.125f).build()) + .withEntry(ItemEntry.builder(QuickieItems.COTTONSEED).build()); + supplier.withPool(poolBuilder.build()); + } + }); + } + + private final static boolean isGrass(Identifier id) { + return id.equals(new Identifier("blocks/grass")) || id.equals(new Identifier("blocks/fern")) + || id.equals(new Identifier("blocks/tall_grass")); + } + } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCotton.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCotton.java new file mode 100644 index 0000000..43ee503 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCotton.java @@ -0,0 +1,15 @@ +package de.jottyfan.minecraft.quickiefabric.items; + +import de.jottyfan.minecraft.quickiefabric.init.RegistryManager; +import net.minecraft.item.Item; + +/** + * + * @author jotty + * + */ +public class ItemCotton extends Item { + public ItemCotton() { + super(new Item.Settings().group(RegistryManager.QUICKIEFABRIC_GROUP).maxCount(99)); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCottonseed.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCottonseed.java new file mode 100644 index 0000000..30c7340 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/ItemCottonseed.java @@ -0,0 +1,36 @@ +package de.jottyfan.minecraft.quickiefabric.items; + +import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; +import de.jottyfan.minecraft.quickiefabric.init.RegistryManager; +import net.minecraft.block.BlockState; +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; + +/** + * + * @author jotty + * + */ +public class ItemCottonseed extends Item { + public ItemCottonseed() { + super(new Item.Settings().group(RegistryManager.QUICKIEFABRIC_GROUP).maxCount(99)); + } + + @Override + public ActionResult useOnBlock(ItemUsageContext context) { + BlockPos pos = context.getBlockPos(); + World world = context.getWorld(); + if (QuickieItems.COTTONSEED.equals(context.getStack().getItem())) { + BlockState state = world.getBlockState(pos); + if (Blocks.FARMLAND.equals(state.getBlock()) && world.getBlockState(pos.up()).isAir()) { + world.setBlockState(pos.up(), QuickieBlocks.COTTONPLANT.getDefaultState()); + context.getStack().decrement(1); + } + } + return super.useOnBlock(context); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/items/QuickieItems.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/QuickieItems.java index 71754fc..b92821e 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/items/QuickieItems.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/items/QuickieItems.java @@ -29,4 +29,6 @@ public class QuickieItems { public static final ItemBackpack BACKPACK_LIGHTBLUE = new ItemBackpack(); public static final ItemRottenFleshStripes ROTTEN_FLESH_STRIPES = new ItemRottenFleshStripes(); public static final ItemCarrotstack CARROTSTACK = new ItemCarrotstack(); + public static final ItemCotton COTTON = new ItemCotton(); + public static final ItemCottonseed COTTONSEED = new ItemCottonseed(); } diff --git a/src/main/resources/assets/quickiefabric/blockstates/cottonplant.json b/src/main/resources/assets/quickiefabric/blockstates/cottonplant.json new file mode 100644 index 0000000..d9b6251 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/blockstates/cottonplant.json @@ -0,0 +1,12 @@ +{ + "variants": { + "age=0": { "model": "quickiefabric:block/cottonplant0" }, + "age=1": { "model": "quickiefabric:block/cottonplant1" }, + "age=2": { "model": "quickiefabric:block/cottonplant1" }, + "age=3": { "model": "quickiefabric:block/cottonplant2" }, + "age=4": { "model": "quickiefabric:block/cottonplant2" }, + "age=5": { "model": "quickiefabric:block/cottonplant3" }, + "age=6": { "model": "quickiefabric:block/cottonplant3" }, + "age=7": { "model": "quickiefabric:block/cottonplant4" } + } +} \ 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 8476693..ec02e4b 100644 --- a/src/main/resources/assets/quickiefabric/lang/de_de.json +++ b/src/main/resources/assets/quickiefabric/lang/de_de.json @@ -29,6 +29,8 @@ "item.quickiefabric.backpack_lightblue": "hellblauer Rucksack", "item.quickiefabric.rotten_flesh_stripes": "geschnittenes Gammelfleisch", "item.quickiefabric.carrotstack": "Karottenbündel", + "item.quickiefabric.cotton": "Baumwolle", + "item.quickiefabric.cottonseed": "Baumwollsaat", "block.quickiefabric.orenethersulphor": "Nether-Schwefel", "block.quickiefabric.oresalpeter": "Salpetererz", "block.quickiefabric.oresandsalpeter": "Salpetergestein", @@ -48,6 +50,7 @@ "block.quickiefabric.itemhoarder": "Itemsauger", "block.quickiefabric.monsterhoarder": "Monstersauger", "block.quickiefabric.kelpstack": "Seegrassbündel", + "block.quickiefabric.cottonplant": "Baumwollpflanze", "container.quickiefabric.backpack": "Rucksack", "msg.buildingplan.start": "beginne Konstruktionsaufnahme bei %s,%s,%s", "msg.buildingplan.end": "beende 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 ffa7106..589d764 100644 --- a/src/main/resources/assets/quickiefabric/lang/en_us.json +++ b/src/main/resources/assets/quickiefabric/lang/en_us.json @@ -29,6 +29,8 @@ "item.quickiefabric.backpack_lightblue": "light blue backpack", "item.quickiefabric.rotten_flesh_stripes": "rotten flesh stripes", "item.quickiefabric.carrotstack": "a bundle of carrots", + "item.quickiefabric.cotton": "cotton", + "item.quickiefabric.cottonseed": "cotton seed", "block.quickiefabric.orenethersulphor": "nether sulfur", "block.quickiefabric.oresalpeter": "salpeter ore", "block.quickiefabric.oresandsalpeter": "salpeter stone", @@ -48,6 +50,7 @@ "block.quickiefabric.itemhoarder": "item hoarder", "block.quickiefabric.monsterhoarder": "monster hoarder", "block.quickiefabric.kelpstack": "kelp bundle", + "block.quickiefabric.cottonplant": "cotton plant", "container.quickiefabric.backpack": "backpack", "msg.buildingplan.start": "started recording of construction at %s,%s,%s", "msg.buildingplan.end": "finished recording of construction at %s,%s,%s", diff --git a/src/main/resources/assets/quickiefabric/models/block/cottonplant0.json b/src/main/resources/assets/quickiefabric/models/block/cottonplant0.json new file mode 100644 index 0000000..1828a11 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/cottonplant0.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures":{ + "cross":"quickiefabric:block/cottonplant0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/cottonplant1.json b/src/main/resources/assets/quickiefabric/models/block/cottonplant1.json new file mode 100644 index 0000000..5802f46 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/cottonplant1.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures":{ + "cross":"quickiefabric:block/cottonplant1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/cottonplant2.json b/src/main/resources/assets/quickiefabric/models/block/cottonplant2.json new file mode 100644 index 0000000..eb8559f --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/cottonplant2.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures":{ + "cross":"quickiefabric:block/cottonplant2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/cottonplant3.json b/src/main/resources/assets/quickiefabric/models/block/cottonplant3.json new file mode 100644 index 0000000..54b53a2 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/cottonplant3.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures":{ + "cross":"quickiefabric:block/cottonplant3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/block/cottonplant4.json b/src/main/resources/assets/quickiefabric/models/block/cottonplant4.json new file mode 100644 index 0000000..f88ca26 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/block/cottonplant4.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures":{ + "cross":"quickiefabric:block/cottonplant4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/cotton.json b/src/main/resources/assets/quickiefabric/models/item/cotton.json new file mode 100644 index 0000000..d7dd1a3 --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/cotton.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "quickiefabric:item/cotton" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/cottonplant.json b/src/main/resources/assets/quickiefabric/models/item/cottonplant.json new file mode 100644 index 0000000..518ef4a --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/cottonplant.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "quickiefabric:item/cottonseed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/models/item/cottonseed.json b/src/main/resources/assets/quickiefabric/models/item/cottonseed.json new file mode 100644 index 0000000..518ef4a --- /dev/null +++ b/src/main/resources/assets/quickiefabric/models/item/cottonseed.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "quickiefabric:item/cottonseed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickiefabric/textures/block/cottonplant0.png b/src/main/resources/assets/quickiefabric/textures/block/cottonplant0.png new file mode 100644 index 0000000000000000000000000000000000000000..afcb1cef275c2d677a90894d71d3630e9190f7f7 GIT binary patch literal 1429 zcmV;G1#0? zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|avLq)A{O1%t0z!bqaabdK10UbXQq{}6_h$2t zBc|wXK!7AN1*JCqpTCFs3y&kO#s|@uVzhXC^2ud1)b3~3Wc~U*9eXui8#8CX*=iZ>QQ@?zxTZW zj257eopGIsEq--c;r-21hF@lylTb4He#za(*qOWe2HxFz!_MX-=T|6a_fD;i^lE|Jw6EBNJR)WD6&-2BBX5JKZ%8Wz5* zn5Ve0PsB193=3w(2D2?&MG5qXEnYk`<^}7G-A99@9R+|0wga3Y1_L${2a06HIUxd$ z3Vt#?ckEpO0~CU5WCplljvz0db>BmeUAp$v^FXW( z9)5%ohYTHQMLvX#@yGe(P3>e=GQ!Vum-WnrGn;l5+-M0%y|OiG8sTXyUCeV z^4?A6CTBJ|9E#w;8ih$tqsbT;^qpK7baVG$?n~ZG@IS?y`;0j=srxUOGn2Z*+_$`a zz*@`ejlzqdc?u_{mIp32Oz4`O=J`(g<=XtNfDEc2L8kzTL86`5#8J9MDuHbMD zUs+GL;ds~K)9!We2hy69*V2fKA^AY~;E+0GglAP!3R^o~+c=o*n9{&~=l*8 z)ZzE0OIE2W!={Yux_Lb4>@XuFL~hZ5LUJFrWM=-LC1#5r44eewIuNW|}zk zj^_MuHPdmsrb0KY4!L9A8v>#a3^Z&o4PX`ZQtY*&O3qUG+cjU;<|Cl{c(-@V<#w6t zQXJlF4{DK(NXci|12wJJwwW7VV%N6ua_znjd!nr;KjQBn+EMa}*Ob6yrHsf%HzPl$ za^l7j;wBzH5{B^F-m4RCGvE>Nv6ALh3z@`M=_cwJ(Ci{8*HH6eKoX&Dk)sgQPH&Z7bp*O6T!7px z9~A^A*g(Cg0000qNkleVX-vJGfyY59Nc+BNbG jShsE+!=FEY=oel9+5Zm~x*Gdq00000NkvXXu0mjfZFQ|Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/cottonplant1.png b/src/main/resources/assets/quickiefabric/textures/block/cottonplant1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5a64e24dd48e79b958673be9c1dcca67ac63de GIT binary patch literal 1246 zcmV<41R?v0P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHlH@21MgLjFECERf!E$&;%noMxeQ{z})}yPl zt1_ZLrcESZS(bzjvYl@H_wRK7;9wuT3u-Cm7(I@VL*{}>^0%WLJwb2v`^2AA~&JbBvegSMpRZ7Z*8q;+wOlImc~vB}6Pa?nRwTIcCtSD_h515zX*Z zpH{M0%V-HD(SWmKlU1}vnHb0>1?p62(m2LO4Iu^|Y#5mvP&Nl)0*uTJkV(R7G}$Ce zmjuKO+d&}ZD;7H3=EGg11jn6{!|ov%qqQr()7&FUbFP9S^6API;^MU(5yc`$1$>XG2Hy*(CJ0YN>|oUp*+>#_j+Rq17O$pKoRs2Fc`MAo+fqzDlxf*}C`A4!xV zd1H1)ghVC)DhQn=a0M1p<&GdZh(y3a6~H&{F*;OP`6kAL5Fk{d69bzp1+YR;>>mpW zd#I>rP}QiWNwbzHaaCB17S|KCm{>5iXlBW>6_+H1q$ws#Ddki$XTcL!GwLy?oO3B~ zT41^0?gE8UDp#qYYK_%us=1cNu1O0`TWr=+%dK?o(ox4fcI&ClC3#s{gTXcsj|%}x`v9w)k(ffxq@a9adO9P?u4 z6NSKw++yZ4qbigUq%Js}7BLVEgIFhB>|V&JllUBN4j}j$`~R4=H$+JjQi_15{t=pI%4Yv`|`|AnD=jCjA3^kahe+A3#GC^y^J{8vWzfFk95 z#_=MOEz-84V0?|p6;U5I8NQ8we{_#1O44g~$+|xS7=5JTjwx@^H^$Em4Y|D5Q&000JJOGiWi`~a{3 zFqZ(xp8x;=32;bRa{vGf6951U69E94oEQKA00(qQO+^Rf3Lg{=7FnKb>;M1&8FWQh zbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0G~-jK~y-)?UFGL!ypg@mnalS zmMGj`!Mk_{@9Smt{dp3Bxdeh(JW=6O7}C)*8I`kWzw(#H9oPgi?x~bC6Pst{WI* zewq&fF-F!}i|!UuO8qs~S~-N!518i}+qRtsytQDh6<0p-1w2tSPst4tmH+?%07*qo IM6N<$g04z4VgLXD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/cottonplant2.png b/src/main/resources/assets/quickiefabric/textures/block/cottonplant2.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c57c52d377efd7c7e0142fb381ad758f694fd4 GIT binary patch literal 1395 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 T1u`th00000NkvXXu0mjfI1C#v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quickiefabric/textures/block/cottonplant4.png b/src/main/resources/assets/quickiefabric/textures/block/cottonplant4.png new file mode 100644 index 0000000000000000000000000000000000000000..4a296a119a59489c955325d82340dd4e448e6edd GIT binary patch literal 2118 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