From e8206a16e7c5492be732528e52637bcb97f6f576 Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 8 Jan 2019 22:23:22 +0200 Subject: [PATCH] Implemented tomato plants --- .../com/minelittlepony/unicopia/UBlocks.java | 6 +- .../com/minelittlepony/unicopia/UItems.java | 17 +- .../unicopia/block/BlockTomatoPlant.java | 151 ++++++++++++++++++ .../forgebullshit/RegistryLockSpinner.java | 15 ++ .../unicopia/item/ItemStick.java | 57 +++++++ .../unicopia/item/ItemTomatoSeeds.java | 36 +++++ .../unicopia/blockstates/tomato_plant.json | 20 +++ .../resources/assets/unicopia/lang/en_US.lang | 3 + .../models/block/tomato_plant/stage0.json | 20 +++ .../models/block/tomato_plant/stage1.json | 47 ++++++ .../models/block/tomato_plant/stage2.json | 6 + .../models/block/tomato_plant/stage3.json | 6 + .../models/block/tomato_plant/stage4.json | 6 + .../unicopia/models/item/tomato_seeds.json | 6 + .../assets/unicopia/textures/blocks/stick.png | Bin 0 -> 2948 bytes .../textures/blocks/tomato_plant/stage_1.png | Bin 0 -> 3021 bytes .../textures/blocks/tomato_plant/stage_2.png | Bin 0 -> 3215 bytes .../textures/blocks/tomato_plant/stage_3.png | Bin 0 -> 3218 bytes .../textures/blocks/tomato_plant/stage_4.png | Bin 0 -> 3218 bytes .../unicopia/textures/items/tomato_seeds.png | Bin 0 -> 3239 bytes 20 files changed, 391 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java create mode 100644 src/main/java/com/minelittlepony/unicopia/item/ItemStick.java create mode 100644 src/main/java/com/minelittlepony/unicopia/item/ItemTomatoSeeds.java create mode 100644 src/main/resources/assets/unicopia/blockstates/tomato_plant.json create mode 100644 src/main/resources/assets/unicopia/models/block/tomato_plant/stage0.json create mode 100644 src/main/resources/assets/unicopia/models/block/tomato_plant/stage1.json create mode 100644 src/main/resources/assets/unicopia/models/block/tomato_plant/stage2.json create mode 100644 src/main/resources/assets/unicopia/models/block/tomato_plant/stage3.json create mode 100644 src/main/resources/assets/unicopia/models/block/tomato_plant/stage4.json create mode 100644 src/main/resources/assets/unicopia/models/item/tomato_seeds.json create mode 100644 src/main/resources/assets/unicopia/textures/blocks/stick.png create mode 100644 src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_1.png create mode 100644 src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_2.png create mode 100644 src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_3.png create mode 100644 src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_4.png create mode 100644 src/main/resources/assets/unicopia/textures/items/tomato_seeds.png diff --git a/src/main/java/com/minelittlepony/unicopia/UBlocks.java b/src/main/java/com/minelittlepony/unicopia/UBlocks.java index f8c15c5b..1365904d 100644 --- a/src/main/java/com/minelittlepony/unicopia/UBlocks.java +++ b/src/main/java/com/minelittlepony/unicopia/UBlocks.java @@ -5,6 +5,7 @@ import com.minelittlepony.unicopia.block.BlockCloud; import com.minelittlepony.unicopia.block.BlockCloudAnvil; import com.minelittlepony.unicopia.block.BlockCloudSlab; import com.minelittlepony.unicopia.block.BlockCloudStairs; +import com.minelittlepony.unicopia.block.BlockTomatoPlant; import com.minelittlepony.unicopia.block.BlockCloudDoor; import com.minelittlepony.unicopia.block.BlockCloudFarm; @@ -25,10 +26,13 @@ public class UBlocks { public static final BlockAlfalfa alfalfa = new BlockAlfalfa(Unicopia.MODID, "alfalfa"); + public static final BlockTomatoPlant tomato_plant = new BlockTomatoPlant(Unicopia.MODID, "tomato_plant"); + public static final BlockCloudFarm cloud_farmland = new BlockCloudFarm(Unicopia.MODID, "cloud_farmland"); static void registerBlocks(IForgeRegistry registry) { registry.registerAll(cloud, cloud_stairs, double_cloud_slab, cloud_slab, mist_door, anvil, cloud_farmland, - alfalfa); + alfalfa, + tomato_plant); } } diff --git a/src/main/java/com/minelittlepony/unicopia/UItems.java b/src/main/java/com/minelittlepony/unicopia/UItems.java index 3dd8791b..bc7283dd 100644 --- a/src/main/java/com/minelittlepony/unicopia/UItems.java +++ b/src/main/java/com/minelittlepony/unicopia/UItems.java @@ -5,7 +5,9 @@ import com.minelittlepony.unicopia.item.ItemCloud; import com.minelittlepony.unicopia.item.ItemCurse; import com.minelittlepony.unicopia.item.ItemOfHolding; import com.minelittlepony.unicopia.item.ItemSpell; +import com.minelittlepony.unicopia.item.ItemStick; import com.minelittlepony.unicopia.item.ItemTomato; +import com.minelittlepony.unicopia.item.ItemTomatoSeeds; import com.minelittlepony.unicopia.item.UItemBlock; import com.minelittlepony.unicopia.item.UItemMultiTexture; import com.minelittlepony.unicopia.item.UItemSlab; @@ -29,7 +31,6 @@ import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.Ingredient; import net.minecraft.item.crafting.ShapedRecipes; import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.registries.IForgeRegistry; @@ -83,7 +84,10 @@ public class UItems { public static final Item alfalfa_seeds = new ItemSeedFood(1, 4, UBlocks.alfalfa, Blocks.FARMLAND) .setTranslationKey("alfalfa_seeds") - .setRegistryName(Unicopia.MODID, "alfalfa_seeds"); + .setRegistryName(Unicopia.MODID, "alfalfa_seeds") + .setCreativeTab(CreativeTabs.MATERIALS); + + public static final ItemStick stick = new ItemStick(); public static final Item alfalfa_leaves = new ItemFood(1, 3, false) .setTranslationKey("alfalfa_leaves") @@ -95,18 +99,22 @@ public class UItems { public static final ItemTomato tomato = new ItemTomato(Unicopia.MODID, "tomato", 4, 34); public static final ItemTomato cloudsdale_tomato = new ItemTomato(Unicopia.MODID, "cloudsdale_tomato", 16, 4); + public static final ItemTomatoSeeds tomato_seeds = new ItemTomatoSeeds(Unicopia.MODID, "tomato_seeds"); static void registerItems(IForgeRegistry registry) { RegistryLockSpinner.unlock(Item.REGISTRY); - Item.REGISTRY.register(Item.getIdFromItem(Items.APPLE), new ResourceLocation("apple"), apple); + RegistryLockSpinner.commit(Item.REGISTRY, Items.APPLE, apple, Items.class); + RegistryLockSpinner.commit(Item.REGISTRY, Items.STICK, stick, Items.class); RegistryLockSpinner.lock(Item.REGISTRY); registry.registerAll(cloud_spawner, dew_drop, cloud_matter, cloud_block, cloud_stairs, cloud_slab, mist_door, anvil, bag_of_holding, spell, curse, - alfalfa_seeds, alfalfa_leaves, cereal, tomato); + alfalfa_seeds, alfalfa_leaves, cereal, + + tomato_seeds, tomato); if (UClient.isClientSide()) { registerAllVariants(apple, apple.getVariants()); @@ -126,6 +134,7 @@ public class UItems { registerAllVariants(cereal, "cereal"); registerAllVariants(tomato, "tomato", "rotten_tomato"); registerAllVariants(cloudsdale_tomato, "cloudsdale_tomato", "rotten_cloudsdale_tomato"); + registerAllVariants(tomato_seeds, "tomato_seeds"); } registerFuels(); diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java b/src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java new file mode 100644 index 00000000..58ddabd1 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java @@ -0,0 +1,151 @@ +package com.minelittlepony.unicopia.block; + +import java.util.Random; + +import com.minelittlepony.unicopia.UItems; + +import net.minecraft.block.BlockCrops; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.EnumPlantType; + +public class BlockTomatoPlant extends BlockCrops { + + public static final PropertyEnum TYPE = PropertyEnum.create("type", Type.class); + + public BlockTomatoPlant(String domain, String name) { + setRegistryName(domain, name); + setTranslationKey(name); + + setDefaultState(getDefaultState().withProperty(TYPE, Type.NORMAL)); + } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, TYPE, AGE); + } + + @Override + public EnumOffsetType getOffsetType() { + return EnumOffsetType.XZ; + } + + @Override + protected Item getSeed() { + return UItems.tomato_seeds; + } + + @Override + protected Item getCrop() { + return UItems.tomato; + } + + @Override + public void updateTick(World world, BlockPos pos, IBlockState state, Random rand) { + if (getAge(state) == 0) { + return; + } + + if (state.getValue(TYPE) != Type.CLOUDSDALE) { + if (world.isAreaLoaded(pos, 1) && world.getBlockState(pos.down()).getBlock() instanceof BlockCloudFarm) { + state = state.withProperty(TYPE, Type.CLOUDSDALE); + + world.setBlockState(pos, state); + } + } + + super.updateTick(world, pos, state, rand); + } + + @Override + public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient) { + return getAge(state) > 0 && super.canGrow(worldIn, pos, state, isClient); + } + + @Override + public int quantityDropped(IBlockState state, int fortune, Random random) { + return 1; + } + + @Override + public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos) { + return EnumPlantType.Crop; + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) { + if (getAge(state) == 0) { + return UItems.stick; + } + + if (isMaxAge(state)) { + return state.getValue(TYPE) == Type.CLOUDSDALE ? UItems.cloudsdale_tomato : UItems.tomato; + } + + return getSeed(); + } + + @Override + public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { + Random rand = world instanceof World ? ((World)world).rand : RANDOM; + + Item item = getItemDropped(state, rand, fortune); + if (item != Items.AIR) { + drops.add(new ItemStack(item, 1, damageDropped(state))); + + if (getAge(state) > 0) { + drops.add(new ItemStack(item, rand.nextInt(2), 1)); + } + } + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + + if (hand == EnumHand.MAIN_HAND && isMaxAge(state)) { + if (player.getHeldItem(hand).isEmpty()) { + Item crop = state.getValue(TYPE) == Type.CLOUDSDALE ? UItems.cloudsdale_tomato : UItems.tomato; + spawnAsEntity(world, pos, new ItemStack(crop, getAge(state), 0)); + world.setBlockState(pos, state.withProperty(getAgeProperty(), 0)); + + return true; + } + } + + return false; + } + + public boolean plant(World world, BlockPos pos, IBlockState state) { + if (getAge(state) == 0) { + world.setBlockState(pos, state.withProperty(getAgeProperty(), 1)); + return true; + } + + return false; + } + + public static enum Type implements IStringSerializable { + NORMAL, + CLOUDSDALE; + + public String toString() { + return getName(); + } + + public String getName() { + return this == NORMAL ? "normal" : "cloudsdale"; + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/forgebullshit/RegistryLockSpinner.java b/src/main/java/com/minelittlepony/unicopia/forgebullshit/RegistryLockSpinner.java index d0877f37..2648c782 100644 --- a/src/main/java/com/minelittlepony/unicopia/forgebullshit/RegistryLockSpinner.java +++ b/src/main/java/com/minelittlepony/unicopia/forgebullshit/RegistryLockSpinner.java @@ -20,6 +20,21 @@ public class RegistryLockSpinner { } } + public static void commit(RegistryNamespaced registry, V from, V to, Class inClass) { + + registry.register(registry.getIDForObject(from), registry.getNameForObject(from), to); + + for (Field i : inClass.getDeclaredFields()) { + try { + if (i.get(null) == from) { + i.set(null, to); + } + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + } + } + public static void lock(RegistryNamespaced registry) { if (registry instanceof ILockableRegistry) { ((ILockableRegistry) registry).lock(); diff --git a/src/main/java/com/minelittlepony/unicopia/item/ItemStick.java b/src/main/java/com/minelittlepony/unicopia/item/ItemStick.java new file mode 100644 index 00000000..2d7f417c --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/item/ItemStick.java @@ -0,0 +1,57 @@ +package com.minelittlepony.unicopia.item; + +import com.minelittlepony.unicopia.UBlocks; +import com.minelittlepony.unicopia.block.BlockCloudFarm; +import com.minelittlepony.unicopia.block.BlockTomatoPlant; +import com.minelittlepony.unicopia.block.BlockTomatoPlant.Type; + +import net.minecraft.advancements.CriteriaTriggers; +import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemSeeds; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class ItemStick extends ItemSeeds { + + public ItemStick() { + super(UBlocks.tomato_plant, Blocks.FARMLAND); + + setFull3D(); + setTranslationKey("stick"); + setCreativeTab(CreativeTabs.MATERIALS); + } + + @Override + public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + ItemStack itemstack = player.getHeldItem(hand); + IBlockState state = worldIn.getBlockState(pos); + + if (facing == EnumFacing.UP && player.canPlayerEdit(pos.offset(facing), facing, itemstack) && state.getBlock().canSustainPlant(state, worldIn, pos, EnumFacing.UP, this) && worldIn.isAirBlock(pos.up())) { + + IBlockState cropState = UBlocks.tomato_plant.getDefaultState(); + + if (state.getBlock() instanceof BlockCloudFarm) { + cropState = cropState.withProperty(BlockTomatoPlant.TYPE, Type.CLOUDSDALE); + } + + worldIn.setBlockState(pos.up(), cropState); + + if (player instanceof EntityPlayerMP) { + CriteriaTriggers.PLACED_BLOCK.trigger((EntityPlayerMP)player, pos.up(), itemstack); + } + + itemstack.shrink(1); + return EnumActionResult.SUCCESS; + } + + return EnumActionResult.FAIL; + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/item/ItemTomatoSeeds.java b/src/main/java/com/minelittlepony/unicopia/item/ItemTomatoSeeds.java new file mode 100644 index 00000000..673700f4 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/item/ItemTomatoSeeds.java @@ -0,0 +1,36 @@ +package com.minelittlepony.unicopia.item; + +import com.minelittlepony.unicopia.block.BlockTomatoPlant; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class ItemTomatoSeeds extends Item { + + public ItemTomatoSeeds(String domain, String name) { + setTranslationKey(name); + setRegistryName(domain, name); + setCreativeTab(CreativeTabs.MATERIALS); + } + + @Override + public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + + IBlockState state = world.getBlockState(pos); + + if (state.getBlock() instanceof BlockTomatoPlant) { + if (((BlockTomatoPlant)state.getBlock()).plant(world, pos, state)) { + return EnumActionResult.SUCCESS; + } + } + + return EnumActionResult.PASS; + } +} diff --git a/src/main/resources/assets/unicopia/blockstates/tomato_plant.json b/src/main/resources/assets/unicopia/blockstates/tomato_plant.json new file mode 100644 index 00000000..ae8099a7 --- /dev/null +++ b/src/main/resources/assets/unicopia/blockstates/tomato_plant.json @@ -0,0 +1,20 @@ +{ + "variants": { + "age=0,type=normal": { "model": "unicopia:tomato_plant/stage0" }, + "age=1,type=normal": { "model": "unicopia:tomato_plant/stage1" }, + "age=2,type=normal": { "model": "unicopia:tomato_plant/stage1" }, + "age=3,type=normal": { "model": "unicopia:tomato_plant/stage2" }, + "age=4,type=normal": { "model": "unicopia:tomato_plant/stage2" }, + "age=5,type=normal": { "model": "unicopia:tomato_plant/stage3" }, + "age=6,type=normal": { "model": "unicopia:tomato_plant/stage4" }, + "age=7,type=normal": { "model": "unicopia:tomato_plant/stage4" }, + "age=0,type=cloudsdale": { "model": "unicopia:tomato_plant/stage0" }, + "age=1,type=cloudsdale": { "model": "unicopia:tomato_plant/stage1" }, + "age=2,type=cloudsdale": { "model": "unicopia:tomato_plant/stage1" }, + "age=3,type=cloudsdale": { "model": "unicopia:tomato_plant/stage2" }, + "age=4,type=cloudsdale": { "model": "unicopia:tomato_plant/stage2" }, + "age=5,type=cloudsdale": { "model": "unicopia:tomato_plant/stage3" }, + "age=6,type=cloudsdale": { "model": "unicopia:tomato_plant/stage4" }, + "age=7,type=cloudsdale": { "model": "unicopia:tomato_plant/stage4" } + } +} diff --git a/src/main/resources/assets/unicopia/lang/en_US.lang b/src/main/resources/assets/unicopia/lang/en_US.lang index eeb09fc5..a8f539c5 100644 --- a/src/main/resources/assets/unicopia/lang/en_US.lang +++ b/src/main/resources/assets/unicopia/lang/en_US.lang @@ -48,10 +48,13 @@ item.apple.zap_cooked.name=Cooked Zap Apple item.tomato.name=Tomato item.tomato.rotten.name=Rotten Tomato item.tomato.cloud.name=Cloudsdale Tomato +item.tomato_seeds.name=Tomato Seeds item.alfalfa_leaves.name=Alfalfa item.alfalfa_seeds.name=Grain +item.cereal.name=Breakfast Cereal + entity.racing_cloud.name=Bucking Bronco entity.construction_cloud.name=Construction Cloud entity.cloud.name=Cloud diff --git a/src/main/resources/assets/unicopia/models/block/tomato_plant/stage0.json b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage0.json new file mode 100644 index 00000000..efbe728d --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage0.json @@ -0,0 +1,20 @@ +{ + "textures": { + "stick_top": "minecraft:blocks/log_oak_top", + "stick_side": "minecraft:blocks/log_oak", + "particle": "#stick_side" + }, + "elements": [ + { "from": [ 7, -1, 7 ], + "to": [ 9, 15, 9 ], + "faces": { + "up": { "uv": [ 7, 7, 9, 9 ], "texture": "#stick_top", "cullface": "up" }, + "down": { "uv": [ 7, 7, 9, 9 ], "texture": "#stick_top", "cullface": "down" }, + "north": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "south" }, + "west": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "west" }, + "east": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "east" } + } + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/block/tomato_plant/stage1.json b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage1.json new file mode 100644 index 00000000..8af58efd --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage1.json @@ -0,0 +1,47 @@ +{ + "parent": "unicopia:block/tomato_plant/stage0", + "textures": { + "crop": "unicopia:blocks/tomato_plant/stage_1" + }, + "elements": [ + { "from": [ 7, -1, 7 ], + "to": [ 9, 15, 9 ], + "faces": { + "up": { "uv": [ 7, 7, 9, 9 ], "texture": "#stick_top", "cullface": "up" }, + "down": { "uv": [ 7, 7, 9, 9 ], "texture": "#stick_top", "cullface": "down" }, + "north": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "south" }, + "west": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "west" }, + "east": { "uv": [ 0, 0, 2, 16 ], "texture": "#stick_side", "cullface": "east" } + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { + "origin": [ 8, 8, 8 ], + "axis": "y", + "angle": 45, + "rescale": true + }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#crop" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#crop" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { + "origin": [ 8, 8, 8 ], + "axis": "y", + "angle": 45, + "rescale": true + }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#crop" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#crop" } + } + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/block/tomato_plant/stage2.json b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage2.json new file mode 100644 index 00000000..26870c55 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/tomato_plant/stage1", + "textures": { + "crop": "unicopia:blocks/tomato_plant/stage_2" + } +} diff --git a/src/main/resources/assets/unicopia/models/block/tomato_plant/stage3.json b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage3.json new file mode 100644 index 00000000..1ca02e78 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/tomato_plant/stage1", + "textures": { + "crop": "unicopia:blocks/tomato_plant/stage_3" + } +} diff --git a/src/main/resources/assets/unicopia/models/block/tomato_plant/stage4.json b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage4.json new file mode 100644 index 00000000..3829a8fe --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/tomato_plant/stage4.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/tomato_plant/stage1", + "textures": { + "crop": "unicopia:blocks/tomato_plant/stage_4" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/tomato_seeds.json b/src/main/resources/assets/unicopia/models/item/tomato_seeds.json new file mode 100644 index 00000000..5430f61b --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/tomato_seeds.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:items/tomato_seeds" + } +} diff --git a/src/main/resources/assets/unicopia/textures/blocks/stick.png b/src/main/resources/assets/unicopia/textures/blocks/stick.png new file mode 100644 index 0000000000000000000000000000000000000000..07d42453a60e1d473f8b121a002df223b1f0e262 GIT binary patch literal 2948 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 P00000NkvXXu0mjflDE)m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_2.png b/src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c79380f6473274b10478ef7a222a29a1e963ef75 GIT binary patch literal 3215 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 Ef;u`a%K!iX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_4.png b/src/main/resources/assets/unicopia/textures/blocks/tomato_plant/stage_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb9c2bb7a7b13f3a129235ff0724b6d72fbbcf1 GIT binary patch literal 3218 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 Z_zk|4+Q6uo=aK*b002ovPDHLkV1n6lIK2P> literal 0 HcmV?d00001