added cotton

This commit is contained in:
Jörg Henke 2020-10-31 17:33:50 +01:00
parent eaed21a3ff
commit 0e52a495a0
28 changed files with 217 additions and 8 deletions

View File

@ -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

View File

@ -19,5 +19,6 @@ public class QuickieFabric implements ModInitializer {
RegistryManager.registerBlockEntities();
RegistryManager.registerContainer();
RegistryManager.registerFeatures();
RegistryManager.registerLootings();
}
}

View File

@ -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());
}
}

View File

@ -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<ItemStack> 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);
}
}

View File

@ -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();
}

View File

@ -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<ItemHoarderBlockEntity>) registerBlockEntity("itemhoarderblockentity", ItemHoarderBlockEntity::new,
QuickieBlocks.ITEMHOARDER);
QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity("monsterhoarderblockentity",
MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER);
QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) registerBlockEntity("emptylavahoarderblockentity",
EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER, QuickieBlocks.LAVAHOARDER);
QuickieFabricBlockEntity.ITEMHOARDER = (BlockEntityType<ItemHoarderBlockEntity>) registerBlockEntity(
"itemhoarderblockentity", ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER);
QuickieFabricBlockEntity.MONSTERHOARDER = (BlockEntityType<MonsterHoarderBlockEntity>) registerBlockEntity(
"monsterhoarderblockentity", MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER);
QuickieFabricBlockEntity.EMPTYLAVAHOARDER = (BlockEntityType<EmptyLavaHoarderBlockEntity>) 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"));
}
}

View File

@ -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));
}
}

View File

@ -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);
}
}

View File

@ -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();
}

View File

@ -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" }
}
}

View File

@ -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",

View File

@ -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",

View File

@ -0,0 +1,6 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant0"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant1"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant2"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant3"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/cross",
"textures":{
"cross":"quickiefabric:block/cottonplant4"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "quickiefabric:item/cotton"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "quickiefabric:item/cottonseed"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "quickiefabric:item/cottonseed"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,12 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "quickiefabric:cotton"
}
],
"result": {
"item": "minecraft:string",
"count": 1
}
}