Browse Source

refactoring, saplings for all new leaves, plum, pear and apricot leaves, tree generation for new leaves

Kajetan Johannes Hammerle 6 years ago
parent
commit
04bbbf3b3e
55 changed files with 722 additions and 62 deletions
  1. 2 6
      src/main/java/me/km/ClientEvents.java
  2. 20 21
      src/main/java/me/km/ClientProxy.java
  3. 48 6
      src/main/java/me/km/blocks/ModBlocks.java
  4. 3 1
      src/main/java/me/km/blocks/campfire/BlockCampFire.java
  5. 2 1
      src/main/java/me/km/blocks/campfire/BlockCampFireBurning.java
  6. 1 1
      src/main/java/me/km/blocks/campfire/BlockCampFireBurnt.java
  7. 2 1
      src/main/java/me/km/blocks/campfire/TileEntityCampFire.java
  8. 2 1
      src/main/java/me/km/blocks/cauldron/BlockModCauldron.java
  9. 1 1
      src/main/java/me/km/blocks/cauldron/BlockWoodCauldron.java
  10. 1 1
      src/main/java/me/km/blocks/cauldron/CauldronColorMixer.java
  11. 1 1
      src/main/java/me/km/blocks/cauldron/TileEntityCauldron.java
  12. 35 0
      src/main/java/me/km/blocks/leaves/BlockApricotLeaves.java
  13. 28 0
      src/main/java/me/km/blocks/leaves/BlockBlueCrystalLeaves.java
  14. 5 20
      src/main/java/me/km/blocks/leaves/BlockLeaves.java
  15. 35 0
      src/main/java/me/km/blocks/leaves/BlockPearLeaves.java
  16. 35 0
      src/main/java/me/km/blocks/leaves/BlockPlumLeaves.java
  17. 28 0
      src/main/java/me/km/blocks/leaves/BlockRedCrystalLeaves.java
  18. 144 0
      src/main/java/me/km/blocks/leaves/BlockSapling.java
  19. 28 0
      src/main/java/me/km/blocks/leaves/BlockWhiteCrystalLeaves.java
  20. 131 0
      src/main/java/me/km/blocks/leaves/WorldGenTree.java
  21. 1 1
      src/main/java/me/km/items/ItemColoredSoup.java
  22. 9 0
      src/main/resources/assets/km/blockstates/apricot_leaves.json
  23. 7 0
      src/main/resources/assets/km/blockstates/apricot_sapling.json
  24. 7 0
      src/main/resources/assets/km/blockstates/blue_crystal_sapling.json
  25. 9 0
      src/main/resources/assets/km/blockstates/pear_leaves.json
  26. 7 0
      src/main/resources/assets/km/blockstates/pear_sapling.json
  27. 9 0
      src/main/resources/assets/km/blockstates/plum_leaves.json
  28. 7 0
      src/main/resources/assets/km/blockstates/plum_sapling.json
  29. 7 0
      src/main/resources/assets/km/blockstates/red_crystal_sapling.json
  30. 7 0
      src/main/resources/assets/km/blockstates/white_crystal_sapling.json
  31. 10 0
      src/main/resources/assets/km/lang/en_US.lang
  32. 6 0
      src/main/resources/assets/km/models/block/leaves/apricot_leaves.json
  33. 6 0
      src/main/resources/assets/km/models/block/leaves/pear_leaves.json
  34. 6 0
      src/main/resources/assets/km/models/block/leaves/plum_leaves.json
  35. 6 0
      src/main/resources/assets/km/models/block/saplings/apricot_sapling.json
  36. 6 0
      src/main/resources/assets/km/models/block/saplings/blue_crystal_sapling.json
  37. 6 0
      src/main/resources/assets/km/models/block/saplings/pear_sapling.json
  38. 6 0
      src/main/resources/assets/km/models/block/saplings/plum_sapling.json
  39. 6 0
      src/main/resources/assets/km/models/block/saplings/red_crystal_sapling.json
  40. 6 0
      src/main/resources/assets/km/models/block/saplings/white_crystal_sapling.json
  41. 6 0
      src/main/resources/assets/km/models/item/apricot_sapling.json
  42. 6 0
      src/main/resources/assets/km/models/item/blue_crystal_sapling.json
  43. 6 0
      src/main/resources/assets/km/models/item/pear_sapling.json
  44. 6 0
      src/main/resources/assets/km/models/item/plum_sapling.json
  45. 6 0
      src/main/resources/assets/km/models/item/red_crystal_sapling.json
  46. 6 0
      src/main/resources/assets/km/models/item/white_crystal_sapling.json
  47. BIN
      src/main/resources/assets/km/textures/blocks/leaves/apricot_leaves.png
  48. BIN
      src/main/resources/assets/km/textures/blocks/leaves/pear_leaves.png
  49. BIN
      src/main/resources/assets/km/textures/blocks/leaves/plum_leaves.png
  50. BIN
      src/main/resources/assets/km/textures/blocks/saplings/apricot_sapling.png
  51. BIN
      src/main/resources/assets/km/textures/blocks/saplings/blue_crystal_sapling.png
  52. BIN
      src/main/resources/assets/km/textures/blocks/saplings/pear_sapling.png
  53. BIN
      src/main/resources/assets/km/textures/blocks/saplings/plum_sapling.png
  54. BIN
      src/main/resources/assets/km/textures/blocks/saplings/red_crystal_sapling.png
  55. BIN
      src/main/resources/assets/km/textures/blocks/saplings/white_crystal_sapling.png

+ 2 - 6
src/main/java/me/km/ClientEvents.java

@@ -1,17 +1,13 @@
 package me.km;
 
 import java.util.List;
-import me.km.api.GlobalText;
 import me.km.networking.PlayerDisplayGui;
 import me.km.networking.StatusDisplayGui;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemArmor;
 import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.text.TextComponentString;
-import net.minecraft.util.text.TextComponentTranslation;
 import net.minecraft.util.text.TextFormatting;
-import net.minecraftforge.client.event.ClientChatReceivedEvent;
 import net.minecraftforge.client.event.RenderGameOverlayEvent;
 import net.minecraftforge.event.entity.player.ItemTooltipEvent;
 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -22,7 +18,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
 @SideOnly(Side.CLIENT)
 public class ClientEvents 
 {   
-    @SubscribeEvent
+    /*@SubscribeEvent
     public void preventChatMessage(ClientChatReceivedEvent e) 
     {
         if(e.getMessage() instanceof TextComponentTranslation)
@@ -36,7 +32,7 @@ public class ClientEvents
                 }
             }   
         }
-    }
+    }*/
 
     @SubscribeEvent
     public void onClientTick(TickEvent.ClientTickEvent e)

+ 20 - 21
src/main/java/me/km/ClientProxy.java

@@ -3,7 +3,7 @@ package me.km;
 import java.awt.Color;
 import java.lang.reflect.Field;
 import me.km.blocks.ModBlocks;
-import me.km.blocks.TileEntityCauldron;
+import me.km.blocks.cauldron.TileEntityCauldron;
 import me.km.entities.ModEntities;
 import me.km.items.ItemColoredSoup;
 import me.km.items.ModItems;
@@ -27,6 +27,7 @@ import net.minecraft.client.resources.GrassColorReloadListener;
 import net.minecraft.entity.Entity;
 import net.minecraft.init.Blocks;
 import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
 import net.minecraft.item.ItemStack;
 import net.minecraft.util.ResourceLocation;
 import net.minecraft.util.math.BlockPos;
@@ -85,7 +86,8 @@ public class ClientProxy extends CommonProxy
         MinecraftForge.EVENT_BUS.register(new ClientEvents());
         MinecraftForge.EVENT_BUS.register(new KeyManager());
         
-        IBlockColor colorer = (IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) -> 
+        BlockColors bColors = Minecraft.getMinecraft().getBlockColors();
+        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) -> 
         {
             TileEntityCauldron tile = (TileEntityCauldron) w.getTileEntity(pos);
             if(tile == null) 
@@ -94,31 +96,28 @@ public class ClientProxy extends CommonProxy
             }
             Color c = tile.getColor();
             return -16777216 | c.getRed() << 16 | c.getGreen() << 8 | c.getBlue();
-        };
-        BlockColors bColors = Minecraft.getMinecraft().getBlockColors();
-        bColors.registerBlockColorHandler(colorer, ModBlocks.cauldronOak);
-        bColors.registerBlockColorHandler(colorer, ModBlocks.cauldronAcacia);
-        bColors.registerBlockColorHandler(colorer, ModBlocks.cauldronBigOak);
-        bColors.registerBlockColorHandler(colorer, ModBlocks.cauldronBirch);
-        bColors.registerBlockColorHandler(colorer, ModBlocks.cauldronJungle);
-        bColors.registerBlockColorHandler(colorer, ModBlocks.cauldronSpruce);
+        }, ModBlocks.cauldronOak, ModBlocks.cauldronAcacia, ModBlocks.cauldronBigOak, ModBlocks.cauldronBirch, ModBlocks.cauldronJungle, ModBlocks.cauldronSpruce);
 
-        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 16626126, ModBlocks.redCrystalLeaves);
-        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 11460861, ModBlocks.blueCrystalLeaves);
-        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 15067367, ModBlocks.whiteCrystalLeaves);
+        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 0xFFD4F7, ModBlocks.redCrystalLeaves);
+        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 0xD0FFFF, ModBlocks.blueCrystalLeaves);
+        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 0xFFFFFF, ModBlocks.whiteCrystalLeaves);
         
-        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) -> 
-                w != null && pos != null ? BiomeColorHelper.getFoliageColorAtPos(w, pos) : ColorizerFoliage.getFoliageColorBasic(), Blocks.LEAVES);
+        bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 
+            w != null && pos != null ? BiomeColorHelper.getFoliageColorAtPos(w, pos) : ColorizerFoliage.getFoliageColorBasic(), 
+                Blocks.LEAVES, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);
         
         ItemColors iColors = Minecraft.getMinecraft().getItemColors();
-        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 
+        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemColoredSoup) stack.getItem()).getColor(stack), ModItems.coloredSoup);
+        
+        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) ->
         {
-            return tintIndex > 0 ? -1 : ((ItemColoredSoup) stack.getItem()).getColor(stack);
-        }, ModItems.coloredSoup);
+            IBlockState iblockstate = ((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata());
+            return bColors.colorMultiplier(iblockstate, null, null, tintIndex);
+        }, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);
         
-        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 16626126, Item.getItemFromBlock(ModBlocks.redCrystalLeaves));
-        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 11460861, Item.getItemFromBlock(ModBlocks.blueCrystalLeaves));
-        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 15067367, Item.getItemFromBlock(ModBlocks.whiteCrystalLeaves));
+        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 0xFFD4F7, Item.getItemFromBlock(ModBlocks.redCrystalLeaves));
+        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 0xD0FFFF, Item.getItemFromBlock(ModBlocks.blueCrystalLeaves));
+        iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 0xFFFFFF, Item.getItemFromBlock(ModBlocks.whiteCrystalLeaves));
     }
 
     @SideOnly(Side.CLIENT)

+ 48 - 6
src/main/java/me/km/blocks/ModBlocks.java

@@ -1,5 +1,12 @@
 package me.km.blocks;
 
+import me.km.blocks.cauldron.BlockWoodCauldron;
+import me.km.blocks.cauldron.TileEntityCauldron;
+import me.km.blocks.campfire.TileEntityCampFire;
+import me.km.blocks.campfire.BlockCampFireBurning;
+import me.km.blocks.campfire.BlockCampFire;
+import me.km.blocks.campfire.BlockCampFireBurnt;
+import me.km.blocks.leaves.*;
 import me.km.fluids.BlockFluidBase;
 import me.km.fluids.BlockFluidHoney;
 import me.km.fluids.BlockFluidPoison;
@@ -13,6 +20,8 @@ import net.minecraft.block.material.Material;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemMultiTexture;
+import net.minecraft.item.ItemStack;
 import net.minecraftforge.fml.common.registry.GameRegistry;
 import net.minecraftforge.registries.IForgeRegistry;
 
@@ -74,9 +83,20 @@ public class ModBlocks
     public static BlockModSlab gravelSlab;
     
     // leaves
-    public static BlockModLeaves redCrystalLeaves;
-    public static BlockModLeaves blueCrystalLeaves;
-    public static BlockModLeaves whiteCrystalLeaves;
+    public static BlockLeaves redCrystalLeaves;
+    public static BlockLeaves blueCrystalLeaves;
+    public static BlockLeaves whiteCrystalLeaves;
+    public static BlockLeaves apricotLeaves;
+    public static BlockLeaves pearLeaves;
+    public static BlockLeaves plumLeaves;
+    
+    // saplings
+    public static BlockSapling redCrystalSapling;
+    public static BlockSapling blueCrystalSapling;
+    public static BlockSapling whiteCrystalSapling;
+    public static BlockSapling apricotSapling;
+    public static BlockSapling pearSapling;
+    public static BlockSapling plumSapling;
     
     public static void initBlocks(IForgeRegistry<Block> r) 
     {
@@ -141,9 +161,20 @@ public class ModBlocks
         gravelSlab = register(r, (BlockModSlab) new BlockModSlab(Material.SAND, "gravel_slab", "gravelSlab").setSoundType(SoundType.GROUND).setHardness(0.6F));
         
         // leaves
-        redCrystalLeaves = register(r, new BlockModLeaves("red_crystal_leaves", "redCrystalLeaves", BlockPlanks.EnumType.JUNGLE));
-        blueCrystalLeaves = register(r, new BlockModLeaves("blue_crystal_leaves", "blueCrystalLeaves", BlockPlanks.EnumType.OAK));
-        whiteCrystalLeaves = register(r, new BlockModLeaves("white_crystal_leaves", "whiteCrystalLeaves", BlockPlanks.EnumType.SPRUCE));
+        redCrystalLeaves = register(r, new BlockRedCrystalLeaves("red_crystal_leaves", "redCrystalLeaves"));
+        blueCrystalLeaves = register(r, new BlockBlueCrystalLeaves("blue_crystal_leaves", "blueCrystalLeaves"));
+        whiteCrystalLeaves = register(r, new BlockWhiteCrystalLeaves("white_crystal_leaves", "whiteCrystalLeaves"));
+        apricotLeaves = register(r, new BlockApricotLeaves("apricot_leaves", "apricotLeaves"));
+        pearLeaves = register(r, new BlockPearLeaves("pear_leaves", "pearLeaves"));
+        plumLeaves = register(r, new BlockPlumLeaves("plum_leaves", "plumLeaves"));
+        
+        // saplings
+        redCrystalSapling = register(r, new BlockSapling("red_crystal_sapling", "redCrystalSapling", BlockPlanks.EnumType.JUNGLE, redCrystalLeaves));
+        blueCrystalSapling = register(r, new BlockSapling("blue_crystal_sapling", "blueCrystalSapling", BlockPlanks.EnumType.OAK, blueCrystalLeaves));
+        whiteCrystalSapling = register(r, new BlockSapling("white_crystal_sapling", "whiteCrystalSapling", BlockPlanks.EnumType.SPRUCE, whiteCrystalLeaves));
+        apricotSapling = register(r, new BlockSapling("apricot_sapling", "apricotSapling", BlockPlanks.EnumType.OAK, apricotLeaves));
+        pearSapling = register(r, new BlockSapling("pear_sapling", "pearSapling", BlockPlanks.EnumType.OAK, pearLeaves));
+        plumSapling = register(r, new BlockSapling("plum_sapling", "plumSapling", BlockPlanks.EnumType.OAK, plumLeaves));
     }
     
     public static void initItemBlocks(IForgeRegistry<Item> r) 
@@ -203,6 +234,17 @@ public class ModBlocks
         register(r, redCrystalLeaves, getItemBlock(redCrystalLeaves));
         register(r, blueCrystalLeaves, getItemBlock(blueCrystalLeaves));
         register(r, whiteCrystalLeaves, getItemBlock(whiteCrystalLeaves));
+        register(r, apricotLeaves, getItemBlock(apricotLeaves));
+        register(r, pearLeaves, getItemBlock(pearLeaves));
+        register(r, plumLeaves, getItemBlock(plumLeaves));
+        
+        // saplings
+        register(r, redCrystalSapling, getItemBlock(redCrystalSapling));
+        register(r, blueCrystalSapling, getItemBlock(blueCrystalSapling));
+        register(r, whiteCrystalSapling, getItemBlock(whiteCrystalSapling));
+        register(r, apricotSapling, getItemBlock(apricotSapling));
+        register(r, pearSapling, getItemBlock(pearSapling));
+        register(r, plumSapling, getItemBlock(plumSapling));
     }
 
     private static void register(IForgeRegistry<Item> r, Block block, Item itemBlock) 

+ 3 - 1
src/main/java/me/km/blocks/BlockCampFire.java → src/main/java/me/km/blocks/campfire/BlockCampFire.java

@@ -1,6 +1,8 @@
-package me.km.blocks;
+package me.km.blocks.campfire;
 
 import java.util.Random;
+import me.km.blocks.BlockBase;
+import me.km.blocks.ModBlocks;
 import me.km.items.ModItems;
 import net.minecraft.block.Block;
 import net.minecraft.block.material.Material;

+ 2 - 1
src/main/java/me/km/blocks/BlockCampFireBurning.java → src/main/java/me/km/blocks/campfire/BlockCampFireBurning.java

@@ -1,6 +1,7 @@
-package me.km.blocks;
+package me.km.blocks.campfire;
 
 import java.util.Random;
+import me.km.blocks.ModBlocks;
 import me.km.inventory.ContainerCampFire;
 import net.minecraft.block.ITileEntityProvider;
 import net.minecraft.block.state.IBlockState;

+ 1 - 1
src/main/java/me/km/blocks/BlockCampFireBurnt.java → src/main/java/me/km/blocks/campfire/BlockCampFireBurnt.java

@@ -1,4 +1,4 @@
-package me.km.blocks;
+package me.km.blocks.campfire;
 
 import java.util.Random;
 import net.minecraft.block.state.IBlockState;

+ 2 - 1
src/main/java/me/km/blocks/TileEntityCampFire.java → src/main/java/me/km/blocks/campfire/TileEntityCampFire.java

@@ -1,6 +1,7 @@
-package me.km.blocks;
+package me.km.blocks.campfire;
 
 import java.util.Arrays;
+import me.km.blocks.ModBlocks;
 import me.km.inventory.ContainerCampFire;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.entity.player.InventoryPlayer;

+ 2 - 1
src/main/java/me/km/blocks/BlockModCauldron.java → src/main/java/me/km/blocks/cauldron/BlockModCauldron.java

@@ -1,7 +1,8 @@
-package me.km.blocks;
+package me.km.blocks.cauldron;
 
 import java.util.Random;
 import me.km.KajetansMod;
+import me.km.blocks.IBlockBase;
 import me.km.items.ModItems;
 import net.minecraft.block.BlockCauldron;
 import net.minecraft.block.ITileEntityProvider;

+ 1 - 1
src/main/java/me/km/blocks/BlockWoodCauldron.java → src/main/java/me/km/blocks/cauldron/BlockWoodCauldron.java

@@ -1,4 +1,4 @@
-package me.km.blocks;
+package me.km.blocks.cauldron;
 
 import net.minecraft.block.SoundType;
 import net.minecraft.block.material.MapColor;

+ 1 - 1
src/main/java/me/km/blocks/CauldronColorMixer.java → src/main/java/me/km/blocks/cauldron/CauldronColorMixer.java

@@ -1,4 +1,4 @@
-package me.km.blocks;
+package me.km.blocks.cauldron;
 
 import java.awt.Color;
 import java.util.LinkedList;

+ 1 - 1
src/main/java/me/km/blocks/TileEntityCauldron.java → src/main/java/me/km/blocks/cauldron/TileEntityCauldron.java

@@ -1,4 +1,4 @@
-package me.km.blocks;
+package me.km.blocks.cauldron;
 
 import java.awt.Color;
 import java.util.LinkedList;

+ 35 - 0
src/main/java/me/km/blocks/leaves/BlockApricotLeaves.java

@@ -0,0 +1,35 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.blocks.ModBlocks;
+import me.km.items.ModItems;
+import static net.minecraft.block.Block.spawnAsEntity;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BlockApricotLeaves extends BlockLeaves
+{
+    public BlockApricotLeaves(String name, String local) 
+    {
+        super(name, local, BlockPlanks.EnumType.OAK);
+    }
+  
+    @Override
+    public Item getItemDropped(IBlockState state, Random rand, int fortune)
+    {
+        return Item.getItemFromBlock(ModBlocks.apricotSapling);
+    }
+    
+    @Override
+    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
+    {
+        if(worldIn.rand.nextInt(chance) == 0)
+        {
+            spawnAsEntity(worldIn, pos, new ItemStack(ModItems.apricot));
+        }
+    }
+}

+ 28 - 0
src/main/java/me/km/blocks/leaves/BlockBlueCrystalLeaves.java

@@ -0,0 +1,28 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.blocks.ModBlocks;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.item.Item;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BlockBlueCrystalLeaves extends BlockLeaves
+{
+    public BlockBlueCrystalLeaves(String name, String local) 
+    {
+        super(name, local, BlockPlanks.EnumType.OAK);
+    }
+  
+    @Override
+    public Item getItemDropped(IBlockState state, Random rand, int fortune)
+    {
+        return Item.getItemFromBlock(ModBlocks.blueCrystalSapling);
+    }
+    
+    @Override
+    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
+    {
+    }
+}

+ 5 - 20
src/main/java/me/km/blocks/BlockModLeaves.java → src/main/java/me/km/blocks/leaves/BlockLeaves.java

@@ -1,9 +1,9 @@
-package me.km.blocks;
+package me.km.blocks.leaves;
 
 import java.util.Random;
 import javax.annotation.Nullable;
 import me.km.KajetansMod;
-import net.minecraft.block.BlockLeaves;
+import me.km.blocks.IBlockBase;
 import net.minecraft.block.BlockPlanks;
 import net.minecraft.block.SoundType;
 import net.minecraft.block.properties.IProperty;
@@ -25,12 +25,12 @@ import net.minecraft.world.World;
 import net.minecraftforge.fml.relauncher.Side;
 import net.minecraftforge.fml.relauncher.SideOnly;
 
-public class BlockModLeaves extends BlockLeaves implements IBlockBase
+public class BlockLeaves extends net.minecraft.block.BlockLeaves implements IBlockBase
 {
     protected String name;
     private final BlockPlanks.EnumType planks;
 
-    public BlockModLeaves(String name, String local, BlockPlanks.EnumType planks) 
+    public BlockLeaves(String name, String local, BlockPlanks.EnumType planks) 
     {
         this.name = name;
         this.setRegistryName(name);
@@ -47,17 +47,11 @@ public class BlockModLeaves extends BlockLeaves implements IBlockBase
     }
     
     @Override
-    public BlockModLeaves setSoundType(SoundType sound) 
+    public BlockLeaves setSoundType(SoundType sound) 
     {
         super.setSoundType(sound);
         return this;
     }
-
-    @Override
-    public int quantityDropped(Random random)
-    {
-        return 0;
-    }
     
     @Override
     public Item getItemDropped(IBlockState state, Random rand, int fortune)
@@ -65,15 +59,6 @@ public class BlockModLeaves extends BlockLeaves implements IBlockBase
         return Item.getItemFromBlock(this);
     }
 
-    @Override
-    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
-    {
-        if(planks == BlockPlanks.EnumType.OAK && worldIn.rand.nextInt(chance) == 0)
-        {
-            spawnAsEntity(worldIn, pos, new ItemStack(Items.APPLE));
-        }
-    }
-
     @Override
     protected ItemStack getSilkTouchDrop(IBlockState state)
     {

+ 35 - 0
src/main/java/me/km/blocks/leaves/BlockPearLeaves.java

@@ -0,0 +1,35 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.blocks.ModBlocks;
+import me.km.items.ModItems;
+import static net.minecraft.block.Block.spawnAsEntity;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BlockPearLeaves extends BlockLeaves
+{
+    public BlockPearLeaves(String name, String local) 
+    {
+        super(name, local, BlockPlanks.EnumType.OAK);
+    }
+  
+    @Override
+    public Item getItemDropped(IBlockState state, Random rand, int fortune)
+    {
+        return Item.getItemFromBlock(ModBlocks.pearSapling);
+    }
+    
+    @Override
+    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
+    {
+        if(worldIn.rand.nextInt(chance) == 0)
+        {
+            spawnAsEntity(worldIn, pos, new ItemStack(ModItems.pear));
+        }
+    }
+}

+ 35 - 0
src/main/java/me/km/blocks/leaves/BlockPlumLeaves.java

@@ -0,0 +1,35 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.blocks.ModBlocks;
+import me.km.items.ModItems;
+import static net.minecraft.block.Block.spawnAsEntity;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BlockPlumLeaves extends BlockLeaves
+{
+    public BlockPlumLeaves(String name, String local) 
+    {
+        super(name, local, BlockPlanks.EnumType.OAK);
+    }
+  
+    @Override
+    public Item getItemDropped(IBlockState state, Random rand, int fortune)
+    {
+        return Item.getItemFromBlock(ModBlocks.plumSapling);
+    }
+    
+    @Override
+    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
+    {
+        if(worldIn.rand.nextInt(chance) == 0)
+        {
+            spawnAsEntity(worldIn, pos, new ItemStack(ModItems.plum));
+        }
+    }
+}

+ 28 - 0
src/main/java/me/km/blocks/leaves/BlockRedCrystalLeaves.java

@@ -0,0 +1,28 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.blocks.ModBlocks;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.item.Item;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BlockRedCrystalLeaves extends BlockLeaves
+{
+    public BlockRedCrystalLeaves(String name, String local) 
+    {
+        super(name, local, BlockPlanks.EnumType.JUNGLE);
+    }
+  
+    @Override
+    public Item getItemDropped(IBlockState state, Random rand, int fortune)
+    {
+        return Item.getItemFromBlock(ModBlocks.redCrystalSapling);
+    }
+    
+    @Override
+    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
+    {
+    }
+}

+ 144 - 0
src/main/java/me/km/blocks/leaves/BlockSapling.java

@@ -0,0 +1,144 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.KajetansMod;
+import me.km.blocks.IBlockBase;
+import net.minecraft.block.BlockBush;
+import net.minecraft.block.BlockOldLog;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.IGrowable;
+import net.minecraft.block.SoundType;
+import net.minecraft.block.properties.IProperty;
+import net.minecraft.block.properties.PropertyInteger;
+import net.minecraft.block.state.BlockStateContainer;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.util.math.AxisAlignedBB;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraft.world.gen.feature.WorldGenerator;
+
+public class BlockSapling extends BlockBush implements IBlockBase, IGrowable
+{
+    public static final PropertyInteger STAGE = PropertyInteger.create("stage", 0, 1);
+    protected static final AxisAlignedBB SAPLING_AABB = new AxisAlignedBB(0.1d, 0, 0.1d, 0.9d, 0.8d, 0.9d);
+    
+    protected String name;
+    private final IBlockState log;
+    private final IBlockState leaf;
+    
+    public BlockSapling(String name, String local, BlockPlanks.EnumType planks, BlockLeaves leaf) 
+    {
+        this.name = name;
+        this.setRegistryName(name);
+        super.setUnlocalizedName(local);
+        super.setHardness(0.0F);
+        super.setSoundType(SoundType.PLANT);
+        
+        super.setDefaultState(this.blockState.getBaseState().withProperty(STAGE, 0));
+        super.setCreativeTab(CreativeTabs.DECORATIONS);
+        
+        this.log = Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, planks);
+        this.leaf = leaf.getDefaultState().withProperty(net.minecraft.block.BlockLeaves.CHECK_DECAY, false);
+    }
+    
+    @Override
+    public void registerItemModel(Item itemBlock) 
+    {
+        KajetansMod.proxy.registerItemRenderer(itemBlock, 0, name);
+    }
+    
+    @Override
+    public BlockSapling setSoundType(SoundType sound) 
+    {
+        super.setSoundType(sound);
+        return this;
+    }
+    
+    @Override
+    public net.minecraftforge.common.EnumPlantType getPlantType(net.minecraft.world.IBlockAccess world, BlockPos pos)
+    {
+        return net.minecraftforge.common.EnumPlantType.Plains;
+    }
+
+    @Override
+    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
+    {
+        return SAPLING_AABB;
+    }
+
+    @Override
+    public void updateTick(World w, BlockPos pos, IBlockState state, Random rand)
+    {
+        if(!w.isRemote)
+        {
+            super.updateTick(w, pos, state, rand);
+
+            if(w.getLightFromNeighbors(pos.up()) >= 9 && rand.nextInt(7) == 0)
+            {
+                this.grow(w, pos, state, rand);
+            }
+        }
+    }
+
+    public void grow(World worldIn, BlockPos pos, IBlockState state, Random rand)
+    {
+        if(state.getValue(STAGE) == 0)
+        {
+            worldIn.setBlockState(pos, state.cycleProperty(STAGE), 4);
+        }
+        else
+        {
+            this.generateTree(worldIn, pos, state, rand);
+        }
+    }
+
+    public void generateTree(World w, BlockPos pos, IBlockState state, Random rand)
+    {
+        WorldGenerator gen = new WorldGenTree(true, log, leaf);
+        w.setBlockState(pos, Blocks.AIR.getDefaultState(), 4); 
+        if(!gen.generate(w, rand, pos))
+        {
+            w.setBlockState(pos, state, 4);
+        }
+    }
+
+    @Override
+    public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient)
+    {
+        return true;
+    }
+
+    @Override
+    public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state)
+    {
+        return worldIn.rand.nextFloat() < 0.45d;
+    }
+
+    @Override
+    public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state)
+    {
+        this.grow(worldIn, pos, state, rand);
+    }
+
+    @Override
+    public IBlockState getStateFromMeta(int meta)
+    {
+        return this.getDefaultState().withProperty(STAGE, meta);
+    }
+
+    @Override
+    public int getMetaFromState(IBlockState state)
+    {
+        return state.getValue(STAGE);
+    }
+
+    @Override
+    protected BlockStateContainer createBlockState()
+    {
+        return new BlockStateContainer(this, new IProperty[] {STAGE});
+    }
+}

+ 28 - 0
src/main/java/me/km/blocks/leaves/BlockWhiteCrystalLeaves.java

@@ -0,0 +1,28 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import me.km.blocks.ModBlocks;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.item.Item;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
+public class BlockWhiteCrystalLeaves extends BlockLeaves
+{
+    public BlockWhiteCrystalLeaves(String name, String local) 
+    {
+        super(name, local, BlockPlanks.EnumType.SPRUCE);
+    }
+  
+    @Override
+    public Item getItemDropped(IBlockState state, Random rand, int fortune)
+    {
+        return Item.getItemFromBlock(ModBlocks.whiteCrystalSapling);
+    }
+    
+    @Override
+    protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance)
+    {
+    }
+}

+ 131 - 0
src/main/java/me/km/blocks/leaves/WorldGenTree.java

@@ -0,0 +1,131 @@
+package me.km.blocks.leaves;
+
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraft.world.gen.feature.WorldGenAbstractTree;
+
+public class WorldGenTree extends WorldGenAbstractTree
+{
+    private final IBlockState log; 
+    private final IBlockState leaf; 
+
+    public WorldGenTree(boolean notify, IBlockState log, IBlockState leaf)
+    {
+        super(notify);
+        this.log = log;
+        this.leaf = leaf;
+    }
+    
+    @Override
+    protected boolean canGrowInto(Block blockType)
+    {
+        Material material = blockType.getDefaultState().getMaterial();
+        return material == Material.AIR || material == Material.LEAVES || 
+                blockType == Blocks.GRASS || blockType == Blocks.DIRT || 
+                blockType == Blocks.LOG || blockType == Blocks.LOG2 || 
+                blockType == Blocks.SAPLING || blockType == Blocks.VINE ||
+                blockType instanceof BlockLeaves;
+    }
+
+    @Override
+    public boolean generate(World worldIn, Random rand, BlockPos pos)
+    {
+        int i = rand.nextInt(3) + 5;
+        boolean flag = true;
+        if(pos.getY() >= 1 && pos.getY() + i + 1 <= 256)
+        {
+            for(int j = pos.getY(); j <= pos.getY() + 1 + i; j++)
+            {
+                int k = 1;
+                if (j == pos.getY())
+                {
+                    k = 0;
+                }
+                if (j >= pos.getY() + 1 + i - 2)
+                {
+                    k = 2;
+                }
+
+                BlockPos.MutableBlockPos mPos = new BlockPos.MutableBlockPos();
+                for(int x = pos.getX() - k; x <= pos.getX() + k && flag; x++)
+                {
+                    for(int z = pos.getZ() - k; z <= pos.getZ() + k && flag; z++)
+                    {
+                        if(j >= 0 && j < worldIn.getHeight())
+                        {
+                            if(!this.isReplaceable(worldIn, mPos.setPos(x, j, z)))
+                            {
+                                flag = false;
+                            }
+                        }
+                        else
+                        {
+                            flag = false;
+                        }
+                    }
+                }
+            }
+            if(!flag)
+            {
+                return false;
+            }
+            else
+            {
+                BlockPos down = pos.down();
+                IBlockState state = worldIn.getBlockState(down);
+                boolean isSoil = state.getBlock().canSustainPlant(state, worldIn, down, EnumFacing.UP, (net.minecraft.block.BlockSapling) Blocks.SAPLING);
+
+                if(isSoil && pos.getY() < worldIn.getHeight() - i - 1)
+                {
+                    state.getBlock().onPlantGrow(state, worldIn, down, pos);
+                    for(int y = pos.getY() - 3 + i; y <= pos.getY() + i; y++)
+                    {
+                        int k = y - (pos.getY() + i);
+                        int l = 1 - k / 2;
+                        for(int x = pos.getX() - l; x <= pos.getX() + l; x++)
+                        {
+                            int j = x - pos.getX();
+                            for(int z = pos.getZ() - l; z <= pos.getZ() + l; z++)
+                            {
+                                int m = z - pos.getZ();
+                                if(Math.abs(j) != l || Math.abs(m) != l || rand.nextInt(2) != 0 && k != 0)
+                                {
+                                    BlockPos blockpos = new BlockPos(x, y, z);
+                                    IBlockState state2 = worldIn.getBlockState(blockpos);
+                                    if(state2.getBlock().isAir(state2, worldIn, blockpos) || state2.getBlock().isAir(state2, worldIn, blockpos))
+                                    {
+                                        this.setBlockAndNotifyAdequately(worldIn, blockpos, leaf);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    for(int j = 0; j < i; j++)
+                    {
+                        BlockPos upN = pos.up(j);
+                        IBlockState state2 = worldIn.getBlockState(upN);
+                        if (state2.getBlock().isAir(state2, worldIn, upN) || state2.getBlock().isLeaves(state2, worldIn, upN))
+                        {
+                            this.setBlockAndNotifyAdequately(worldIn, pos.up(j), log);
+                        }
+                    }
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+        }
+        else
+        {
+            return false;
+        }
+    }
+}

+ 1 - 1
src/main/java/me/km/items/ItemColoredSoup.java

@@ -2,7 +2,7 @@ package me.km.items;
 
 import java.util.LinkedList;
 import java.util.List;
-import me.km.blocks.CauldronColorMixer;
+import me.km.blocks.cauldron.CauldronColorMixer;
 import net.minecraft.client.util.ITooltipFlag;
 import net.minecraft.entity.EntityLivingBase;
 import net.minecraft.entity.player.EntityPlayer;

+ 9 - 0
src/main/resources/assets/km/blockstates/apricot_leaves.json

@@ -0,0 +1,9 @@
+{
+    "variants": {
+        "normal": { "model": "km:leaves/apricot_leaves" },
+        "check_decay=true,decayable=true": { "model": "km:leaves/apricot_leaves" },
+        "check_decay=false,decayable=true": { "model": "km:leaves/apricot_leaves" },
+        "check_decay=true,decayable=false": { "model": "km:leaves/apricot_leaves" },
+        "check_decay=false,decayable=false": { "model": "km:leaves/apricot_leaves" }
+    }
+}

+ 7 - 0
src/main/resources/assets/km/blockstates/apricot_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/apricot_sapling" },
+        "stage=0": { "model": "km:saplings/apricot_sapling" },
+        "stage=1": { "model": "km:saplings/apricot_sapling" }
+    }
+}

+ 7 - 0
src/main/resources/assets/km/blockstates/blue_crystal_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/blue_crystal_sapling" },
+        "stage=0": { "model": "km:saplings/blue_crystal_sapling" },
+        "stage=1": { "model": "km:saplings/blue_crystal_sapling" }
+    }
+}

+ 9 - 0
src/main/resources/assets/km/blockstates/pear_leaves.json

@@ -0,0 +1,9 @@
+{
+    "variants": {
+        "normal": { "model": "km:leaves/pear_leaves" },
+        "check_decay=true,decayable=true": { "model": "km:leaves/pear_leaves" },
+        "check_decay=false,decayable=true": { "model": "km:leaves/pear_leaves" },
+        "check_decay=true,decayable=false": { "model": "km:leaves/pear_leaves" },
+        "check_decay=false,decayable=false": { "model": "km:leaves/pear_leaves" }
+    }
+}

+ 7 - 0
src/main/resources/assets/km/blockstates/pear_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/pear_sapling" },
+        "stage=0": { "model": "km:saplings/pear_sapling" },
+        "stage=1": { "model": "km:saplings/pear_sapling" }
+    }
+}

+ 9 - 0
src/main/resources/assets/km/blockstates/plum_leaves.json

@@ -0,0 +1,9 @@
+{
+    "variants": {
+        "normal": { "model": "km:leaves/plum_leaves" },
+        "check_decay=true,decayable=true": { "model": "km:leaves/plum_leaves" },
+        "check_decay=false,decayable=true": { "model": "km:leaves/plum_leaves" },
+        "check_decay=true,decayable=false": { "model": "km:leaves/plum_leaves" },
+        "check_decay=false,decayable=false": { "model": "km:leaves/plum_leaves" }
+    }
+}

+ 7 - 0
src/main/resources/assets/km/blockstates/plum_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/plum_sapling" },
+        "stage=0": { "model": "km:saplings/plum_sapling" },
+        "stage=1": { "model": "km:saplings/plum_sapling" }
+    }
+}

+ 7 - 0
src/main/resources/assets/km/blockstates/red_crystal_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/red_crystal_sapling" },
+        "stage=0": { "model": "km:saplings/red_crystal_sapling" },
+        "stage=1": { "model": "km:saplings/red_crystal_sapling" }
+    }
+}

+ 7 - 0
src/main/resources/assets/km/blockstates/white_crystal_sapling.json

@@ -0,0 +1,7 @@
+{
+    "variants": {
+        "normal": { "model": "km:saplings/white_crystal_sapling" },
+        "stage=0": { "model": "km:saplings/white_crystal_sapling" },
+        "stage=1": { "model": "km:saplings/white_crystal_sapling" }
+    }
+}

+ 10 - 0
src/main/resources/assets/km/lang/en_US.lang

@@ -90,6 +90,16 @@ tile.gravelSlab.name=Gravel Slab
 tile.redCrystalLeaves.name=Red Crystal Leaves
 tile.blueCrystalLeaves.name=Blue Crystal Leaves
 tile.whiteCrystalLeaves.name=White Crystal Leaves
+tile.apricotLeaves.name=Apricot Leaves
+tile.pearLeaves.name=Pear Leaves
+tile.plumLeaves.name=Plum Leaves
+
+tile.redCrystalSapling.name=Red Crystal Sapling
+tile.blueCrystalSapling.name=Blue Crystal Sapling
+tile.whiteCrystalSapling.name=White Crystal Sapling
+tile.apricotSapling.name=Apricot Sapling
+tile.pearSapling.name=Pear Sapling
+tile.plumSapling.name=Plum Sapling
 
 
 item.wandWood.name=Wooden Wand

+ 6 - 0
src/main/resources/assets/km/models/block/leaves/apricot_leaves.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/leaves",
+    "textures": {
+        "all": "km:blocks/leaves/apricot_leaves"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/leaves/pear_leaves.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/leaves",
+    "textures": {
+        "all": "km:blocks/leaves/pear_leaves"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/leaves/plum_leaves.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/leaves",
+    "textures": {
+        "all": "km:blocks/leaves/plum_leaves"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/apricot_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/apricot_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/blue_crystal_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/blue_crystal_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/pear_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/pear_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/plum_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/plum_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/red_crystal_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/red_crystal_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/block/saplings/white_crystal_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "block/cross",
+    "textures": {
+        "cross": "km:blocks/saplings/white_crystal_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/apricot_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/apricot_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/blue_crystal_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/blue_crystal_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/pear_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/pear_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/plum_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/plum_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/red_crystal_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/red_crystal_sapling"
+    }
+}

+ 6 - 0
src/main/resources/assets/km/models/item/white_crystal_sapling.json

@@ -0,0 +1,6 @@
+{
+    "parent": "item/generated",
+    "textures": {
+        "layer0": "km:blocks/saplings/white_crystal_sapling"
+    }
+}

BIN
src/main/resources/assets/km/textures/blocks/leaves/apricot_leaves.png


BIN
src/main/resources/assets/km/textures/blocks/leaves/pear_leaves.png


BIN
src/main/resources/assets/km/textures/blocks/leaves/plum_leaves.png


BIN
src/main/resources/assets/km/textures/blocks/saplings/apricot_sapling.png


BIN
src/main/resources/assets/km/textures/blocks/saplings/blue_crystal_sapling.png


BIN
src/main/resources/assets/km/textures/blocks/saplings/pear_sapling.png


BIN
src/main/resources/assets/km/textures/blocks/saplings/plum_sapling.png


BIN
src/main/resources/assets/km/textures/blocks/saplings/red_crystal_sapling.png


BIN
src/main/resources/assets/km/textures/blocks/saplings/white_crystal_sapling.png