From de54a8cd930e499783d576dcc57c7fb3a6398b86 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Wed, 23 Oct 2013 16:16:30 +0200 Subject: [PATCH 01/50] Condensed code, removed unused variables --- wildCaves/EventManager.java | 3 +- wildCaves/WildCaves.java | 72 +++++------ wildCaves/WorldGenWildCaves.java | 116 +++++++----------- .../generation/biomeGen/GenerationJungle.java | 59 ++++----- 4 files changed, 97 insertions(+), 153 deletions(-) diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index b4d4db3..2ee24f0 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -54,12 +54,13 @@ public void addOreSpawn(Block block, World world, Random random, int blockXPos, assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; int diffBtwnMinMaxY = maxY - minY; + WorldGenMinable mine = new WorldGenMinable(block.blockID, maxVeinSize); for(int x = 0; x < chancesToSpawn; x++) { int posX = blockXPos + random.nextInt(maxX); int posY = minY + random.nextInt(diffBtwnMinMaxY); int posZ = blockZPos + random.nextInt(maxZ); - (new WorldGenMinable(block.blockID, maxVeinSize)).generate(world, random, posX, posY, posZ); + mine.generate(world, random, posX, posY, posZ); } } } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 9bd8ee3..4c0e7a1 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -44,14 +44,10 @@ public void initBlocks() { if (blockStoneStalactiteID != 0) { blockStoneStalactite = new BlockStoneStalactite(blockStoneStalactiteID, solidStalactites, damageWhenFallenOn); Item.itemsList[blockStoneStalactiteID] = new ItemStoneStalactite(blockStoneStalactiteID - 256); - LanguageRegistry.instance().addStringLocalization("stalactite1.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactite2.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactite3.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactite4.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactiteConnection1.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactiteConnection2.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactiteConnection3.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactiteConnection4.name", "Stalactite"); + for (int i = 1; i < 5; i++) { + LanguageRegistry.instance().addStringLocalization("stalactite" + i + ".name", "Stalactite"); + LanguageRegistry.instance().addStringLocalization("stalactiteConnection" + i + ".name", "Stalactite"); + } LanguageRegistry.instance().addStringLocalization("stalactiteEnd.name", "Stalactite"); LanguageRegistry.instance().addStringLocalization("stalacmiteEnd.name", "Stalactite"); LanguageRegistry.instance().addStringLocalization("stalacmite1.name", "Stalagmite"); @@ -61,14 +57,10 @@ public void initBlocks() { if (blockSandStalactiteID != 0) { blockSandStalactite = new BlockSandstoneStalactite(blockSandStalactiteID, solidStalactites, damageWhenFallenOn); Item.itemsList[blockSandStalactiteID] = new ItemSandstoneStalactite(blockSandStalactiteID - 256); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactite1.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactite2.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactite3.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactite4.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteConnection1.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteConnection2.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteConnection3.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteConnection4.name", "Sandstone Stalactite"); + for (int i = 1; i < 5; i++) { + LanguageRegistry.instance().addStringLocalization("sandstoneStalactite" + i + ".name", "Sandstone Stalactite"); + LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteConnection" + i + ".name", "Sandstone Stalactite"); + } LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteEnd.name", "Sandstone Stalactite"); LanguageRegistry.instance().addStringLocalization("sandstoneStalacmiteEnd.name", "Sandstone Stalactite"); LanguageRegistry.instance().addStringLocalization("sandstoneStalacmite1.name", "Sandstone stalagmite"); @@ -78,23 +70,22 @@ public void initBlocks() { if (blockDecorationsID != 0) { blockDecorations = new BlockDecorations(blockDecorationsID); Item.itemsList[blockDecorationsID] = new ItemDecoration(blockDecorationsID - 256); - LanguageRegistry.instance().addStringLocalization("icicle1.name", "Icicle"); - LanguageRegistry.instance().addStringLocalization("icicle2.name", "Icicle"); - LanguageRegistry.instance().addStringLocalization("icicle3.name", "Icicle"); + for (int i = 1; i < 4; i++) { + LanguageRegistry.instance().addStringLocalization("icicle" + i + ".name", "Icicle"); + } } if (blockFloraID != 0) { blockFlora = new BlockFlora(blockFloraID, floraLightLevel); Item.itemsList[blockFloraID] = new ItemFlora(blockFloraID - 256); - LanguageRegistry.instance().addStringLocalization("glowcap1.name", "Glowcap"); - LanguageRegistry.instance().addStringLocalization("glowcap2.name", "Glowcap"); - LanguageRegistry.instance().addStringLocalization("glowcap3.name", "Glowcap"); + for (int i = 1; i < 4; i++) { + LanguageRegistry.instance().addStringLocalization("glowcap" + i + ".name", "Glowcap"); + } LanguageRegistry.instance().addStringLocalization("gloweed1.name", "Glow weed"); LanguageRegistry.instance().addStringLocalization("glowcap4top.name", "Glowcap"); LanguageRegistry.instance().addStringLocalization("glowcap4bottom.name", "Glowcap"); - LanguageRegistry.instance().addStringLocalization("bluecap1.name", "Iceshroom"); - LanguageRegistry.instance().addStringLocalization("bluecap2.name", "Iceshroom"); - LanguageRegistry.instance().addStringLocalization("bluecap3.name", "Iceshroom"); - LanguageRegistry.instance().addStringLocalization("bluecap4.name", "Iceshroom"); + for (int i = 1; i < 5; i++) { + LanguageRegistry.instance().addStringLocalization("bluecap" + i + ".name", "Iceshroom"); + } } if (blockFossilsID != 0) { blockFossils = new BlockFossils(blockFossilsID); @@ -110,18 +101,13 @@ public void load(FMLInitializationEvent event) { WorldGenWildCaves gen = new WorldGenWildCaves(config); GameRegistry.registerWorldGenerator(gen); //new itemstack(itemID, stackSize, damage) - ChestGenHooks.getInfo("DUNGEON_CHEST").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 0), 1, 2, 50));//skeleton - ChestGenHooks.getInfo("DUNGEON_CHEST").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 2), 1, 2, 50));//zombie - ChestGenHooks.getInfo("DUNGEON_CHEST").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 3), 1, 2, 50));//steve - ChestGenHooks.getInfo("DUNGEON_CHEST").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 4), 1, 2, 50));//creeper - ChestGenHooks.getInfo("MINESHAFT_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 0), 1, 2, 50));//skeleton - ChestGenHooks.getInfo("MINESHAFT_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 2), 1, 2, 50));//zombie - ChestGenHooks.getInfo("MINESHAFT_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 3), 1, 2, 50));//steve - ChestGenHooks.getInfo("MINESHAFT_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 4), 1, 2, 50));//creeper - ChestGenHooks.getInfo("STRONGHOLD_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 0), 1, 2, 50));//skeleton - ChestGenHooks.getInfo("STRONGHOLD_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 2), 1, 2, 50));//zombie - ChestGenHooks.getInfo("STRONGHOLD_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 3), 1, 2, 50));//steve - ChestGenHooks.getInfo("STRONGHOLD_CORRIDOR").addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 4), 1, 2, 50));//creeper + for (String txt : new String[] { "DUNGEON_CHEST", "MINESHAFT_CORRIDOR", "STRONGHOLD_CORRIDOR" }) { + for (int i = 0; i < 5; i++) { + if (i != 1) { + ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 0), 1, 2, 50));//skeleton//zombie//steve//creeper + } + } + } if (blockFossilsID != 0) { eventmanager = new EventManager(chanceForNodeToSpawn); GameRegistry.registerWorldGenerator(eventmanager); @@ -134,11 +120,11 @@ public void preInit(FMLPreInitializationEvent event) { try { config.load(); //--block IDs-------- - blockStoneStalactiteID = config.get(Configuration.CATEGORY_BLOCK, "Stalactite ID", 600).getInt(600); - blockSandStalactiteID = config.get(Configuration.CATEGORY_BLOCK, "Sandstone Stalactite ID", 601).getInt(601); - blockFloraID = config.get(Configuration.CATEGORY_BLOCK, "Flora ID", 602).getInt(602); - blockDecorationsID = config.get(Configuration.CATEGORY_BLOCK, "Decorations ID", 603).getInt(603); - blockFossilsID = config.get(Configuration.CATEGORY_BLOCK, "Fossils ID", 604).getInt(604); + blockStoneStalactiteID = config.getBlock("Stalactite ID", 600).getInt(600); + blockSandStalactiteID = config.getBlock("Sandstone Stalactite ID", 601).getInt(601); + blockFloraID = config.getBlock("Flora ID", 602).getInt(602); + blockDecorationsID = config.getBlock("Decorations ID", 603).getInt(603); + blockFossilsID = config.getBlock("Fossils ID", 604).getInt(604); solidStalactites = config.get(Configuration.CATEGORY_GENERAL, "Solid stalactites/stalgmites", false).getBoolean(false); damageWhenFallenOn = config.get(Configuration.CATEGORY_GENERAL, "Stalgmites damage entities when fallen on", false).getBoolean(false); floraLightLevel = config.get(Configuration.CATEGORY_GENERAL, "Flora light level", 5).getInt(5); diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index b2a5c19..615d177 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -1,6 +1,5 @@ package wildCaves; -import java.util.Arrays; import java.util.Random; import java.util.logging.Level; @@ -12,7 +11,6 @@ import wildCaves.generation.structureGen.GenerateFloodedCaves; import wildCaves.generation.structureGen.GenerateStoneStalactite; -import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; @@ -20,12 +18,10 @@ import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.IWorldGenerator; -public class WorldGenWildCaves implements IWorldGenerator -{ +public class WorldGenWildCaves implements IWorldGenerator { private static boolean stalactites; private static boolean sandstoneStalactites; private static boolean Flora; - private static float probabilityVinesJungle; private static float probabilityVines; private static float probabilityIcicle; @@ -38,18 +34,13 @@ public class WorldGenWildCaves implements IWorldGenerator private static float probabilitySpiderWeb; private static float probabilitySandStalactites; private static float probabilitySkulls; - private static int maxGenHeight; private static int maxLength; private static int timesPerChunck = 50; private static int maxGenHeightGlowcapNormal; private static int[] dimensionBlacklist; private static int[] blockWhiteList; - - private World world; - private Random random; private Configuration config; - private GenerateStoneStalactite stalactiteGen; private GenerationJungle jungleGen; private GenerationHumid wetGen; @@ -57,112 +48,89 @@ public class WorldGenWildCaves implements IWorldGenerator private GenerationNormal normalGen; private GenerationFrozen frozenGen; private GenerateFloodedCaves floodCave; - - public WorldGenWildCaves(Configuration config) - { - setConfig(config); - } - - @Override - public void generate(Random random, int chunkX, int chunkZ, World w, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) - { - Boolean genStalactiteNow; + public WorldGenWildCaves(Configuration config) { + setConfig(config); jungleGen = new GenerationJungle(probabilityStalactite, maxLength, probabilityVinesJungle, probabilityGlowcapsHumid, probabilitySpiderWeb, probabilitySkulls); wetGen = new GenerationHumid(probabilityStalactite, maxLength, probabilityWet, probabilityGlowcapsHumid, probabilityVines, probabilitySpiderWeb, probabilitySkulls); aridGen = new GenerationArid(probabilityStalactite, maxLength, probabilitySandStalactites, probabilitySpiderWeb, probabilityDry, probabilitySkulls); normalGen = new GenerationNormal(probabilityStalactite, maxLength, probabilityVines, probabilityGlowcaps, probabilitySpiderWeb, probabilitySkulls, maxGenHeightGlowcapNormal); frozenGen = new GenerationFrozen(probabilityStalactite, maxLength, probabilityIceshrooms, probabilitySpiderWeb, probabilityIcicle, probabilitySkulls); - - this.world = w; + } + + @Override + public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { + boolean genStalactiteNow; int blockX = chunkX * 16; int blockZ = chunkZ * 16; int Xcoord; - int Ycoord; + int Ycoord; int Zcoord; - int dist;// distance - this.random = random; BiomeGenBase biome; - //if( world.provider.dimensionId != 1 && world.provider.dimensionId != -1) // !world.provider.isHellWorld) - if(!Utils.arrayContainsInt(dimensionBlacklist, world.provider.dimensionId)) - { - for (int i = 0; i < timesPerChunck; i++) - { + if (!Utils.arrayContainsInt(dimensionBlacklist, world.provider.dimensionId)) { + for (int i = 0; i < timesPerChunck; i++) { genStalactiteNow = true; Xcoord = blockX + random.nextInt(16); Ycoord = random.nextInt(maxGenHeight); Zcoord = blockZ + random.nextInt(16); - // search for the first available spot - while (!(Utils.arrayContainsInt(blockWhiteList, world.getBlockId(Xcoord, Ycoord + 1, Zcoord)) && world.isAirBlock(Xcoord, Ycoord, Zcoord)) && Ycoord > 10) - { + while (!(Utils.arrayContainsInt(blockWhiteList, world.getBlockId(Xcoord, Ycoord + 1, Zcoord)) && world.isAirBlock(Xcoord, Ycoord, Zcoord)) && Ycoord > 10) { Ycoord--; } - // found a spot - if (Ycoord > 10) - { + if (Ycoord > 10) { // getting the biome biome = world.getBiomeGenForCoords(blockX, blockZ); dist = Utils.getNumEmptyBlocks(world, Xcoord, Ycoord, Zcoord); - - if(biome.temperature <= 0.1f) - frozenGen.generate(w, random, Xcoord, Ycoord, Zcoord); - else if(biome.temperature > 1.5f && biome.rainfall < 0.1f) - aridGen.generate(w, random, Xcoord, Ycoord, Zcoord); - else if(biome.isHighHumidity() && biome.temperature > 1) - jungleGen.generate(w, random, Xcoord, Ycoord, Zcoord); - else if(biome.isHighHumidity() || biome == BiomeGenBase.ocean || biome == BiomeGenBase.river) - wetGen.generate(w, random, Xcoord, Ycoord, Zcoord); + if (biome.temperature <= 0.1f) + frozenGen.generate(world, random, Xcoord, Ycoord, Zcoord); + else if (biome.temperature > 1.5f && biome.rainfall < 0.1f) + aridGen.generate(world, random, Xcoord, Ycoord, Zcoord); + else if (biome.isHighHumidity() && biome.temperature > 1) + jungleGen.generate(world, random, Xcoord, Ycoord, Zcoord); + else if (biome.isHighHumidity() || biome == BiomeGenBase.ocean || biome == BiomeGenBase.river) + wetGen.generate(world, random, Xcoord, Ycoord, Zcoord); else - normalGen.generate(w, random, Xcoord, Ycoord, Zcoord); + normalGen.generate(world, random, Xcoord, Ycoord, Zcoord); } } - } + } } - private void setConfig(Configuration config) - { - try - { + private void setConfig(Configuration config) { + try { config.load(); - // --generation permissions------ sandstoneStalactites = config.get("Permissions", "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); Flora = config.get("Permissions", "Generate flora on caves", true).getBoolean(true); stalactites = config.get("Permissions", "Generate stalactites on caves", true).getBoolean(true); - dimensionBlacklist = config.get("Permissions", "Dimension Blacklist", new int[]{-1,1}).getIntList(); - blockWhiteList = config.get("Permissions", "Block white list", new int[]{1,2,3,4,13,14,15,16,21,24,56,73,74,79,80,82,97,129}).getIntList(); + dimensionBlacklist = config.get("Permissions", "Dimension Blacklist", new int[] { -1, 1 }).getIntList(); + blockWhiteList = config.get("Permissions", "Block white list", new int[] { 1, 2, 3, 4, 13, 14, 15, 16, 21, 24, 56, 73, 74, 79, 80, 82, 97, 129 }).getIntList(); // --Biome specific ratios------ probabilityVinesJungle = (float) config.get("Biome specific", "Probability of vines on jungle caves", 0.5).getDouble(0.5); - probabilityIcicle = (float)config.get("Biome specific", "Probability of iciles on frozen caves", 0.6).getDouble(0.6); - probabilityWet = (float)config.get("Biome specific", "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); - probabilityDry = (float)config.get("Biome specific", "Probability of less generation arid caves", 0.5).getDouble(0.5); - probabilityGlowcapsHumid = (float)config.get("Biome specific", "Probability of Glowing mushrooms on humid/jungle caves", 0.3).getDouble(0.3); - probabilityIceshrooms = (float)config.get("Biome specific", "Probability of Glowing Ice mushrooms on frozen caves", 0.3).getDouble(0.3); - probabilitySandStalactites = (float)config.get("Biome specific", "Probability of sandstone stalactites on arid caves", 0.5).getDouble(0.5); + probabilityIcicle = (float) config.get("Biome specific", "Probability of iciles on frozen caves", 0.6).getDouble(0.6); + probabilityWet = (float) config.get("Biome specific", "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); + probabilityDry = (float) config.get("Biome specific", "Probability of less generation arid caves", 0.5).getDouble(0.5); + probabilityGlowcapsHumid = (float) config.get("Biome specific", "Probability of Glowing mushrooms on humid/jungle caves", 0.3).getDouble(0.3); + probabilityIceshrooms = (float) config.get("Biome specific", "Probability of Glowing Ice mushrooms on frozen caves", 0.3).getDouble(0.3); + probabilitySandStalactites = (float) config.get("Biome specific", "Probability of sandstone stalactites on arid caves", 0.5).getDouble(0.5); // --General ratios------ - probabilityVines = (float)config.get("Non biome specific", "Probability of vines on caves", 0.1).getDouble(0.1); - probabilityGlowcaps = (float)config.get("Non biome specific", "Probability of glowing mushrooms on caves", 0.1).getDouble(0.1); - probabilityStalactite = (float)config.get("Non biome specific", "Probability of Stalactites/stalagmites", 0.5).getDouble(0.5); - probabilitySpiderWeb = (float)config.get("Non biome specific", "Probability of spider webs", 0.15).getDouble(0.15); + probabilityVines = (float) config.get("Non biome specific", "Probability of vines on caves", 0.1).getDouble(0.1); + probabilityGlowcaps = (float) config.get("Non biome specific", "Probability of glowing mushrooms on caves", 0.1).getDouble(0.1); + probabilityStalactite = (float) config.get("Non biome specific", "Probability of Stalactites/stalagmites", 0.5).getDouble(0.5); + probabilitySpiderWeb = (float) config.get("Non biome specific", "Probability of spider webs", 0.15).getDouble(0.15); maxGenHeightGlowcapNormal = config.get("Non biome specific", "Max height at wich to generate glowcaps on normal biomes", 30).getInt(); - probabilitySkulls = (float)config.get("Non biome specific", "Probability of skulls", 0.0001).getDouble(0.0001); + probabilitySkulls = (float) config.get("Non biome specific", "Probability of skulls", 0.0001).getDouble(0.0001); // --other------ timesPerChunck = config.get(Configuration.CATEGORY_GENERAL, "times to attemp generating per chunk", 40).getInt(); maxGenHeight = config.get(Configuration.CATEGORY_GENERAL, "Max height at wich to generate", 80).getInt(); maxLength = config.get(Configuration.CATEGORY_GENERAL, "Max length of structure generation", 8).getInt(); + } catch (Exception e) { + FMLLog.log(Level.SEVERE, e, "WildCaves3 has a problem loading it's configuration"); + } finally { + config.save(); } - catch (Exception e) - { - FMLLog.log(Level.SEVERE, e, "WildCaves3 has a problem loading it's configuration"); - } - finally - { - config.save(); - } } - } diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index 41fa64a..fe1de0c 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -9,24 +9,18 @@ import wildCaves.generation.structureGen.GenerateVines; import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; -public class GenerationJungle extends WorldGenerator -{ - private Random random; - private World world; +public class GenerationJungle extends WorldGenerator { private static float probabilityVinesJungle; private static float probabilityGlowcapsHumid; private static float probabilityStalactite; private static float probabilitySpiderWeb; private static float probabilitySkulls; private static int maxLength; - - public GenerationJungle(float probabilityStalactite, int maxLength, float probabilityVinesJungle, float probabilityGlowcapsHumid, float probabilitySpiderWeb, float probabilitySkulls) - { + + public GenerationJungle(float probabilityStalactite, int maxLength, float probabilityVinesJungle, float probabilityGlowcapsHumid, float probabilitySpiderWeb, float probabilitySkulls) { this.probabilityStalactite = probabilityStalactite; this.maxLength = maxLength; this.probabilityVinesJungle = probabilityVinesJungle; @@ -36,33 +30,28 @@ public GenerationJungle(float probabilityStalactite, int maxLength, float probab } @Override - public boolean generate(World world, Random random, int x, int y, int z) - { + public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - this.random = random; - this.world = world; - - switch(Utils.weightedChoise(probabilityGlowcapsHumid, probabilityVinesJungle, probabilitySpiderWeb, probabilitySkulls, probabilityStalactite, 0)) - { - case 1: - GenerateGlowcaps.generate(world, random, x, y-Utils.getNumEmptyBlocks(world, x, y, z)+1, z); - success = true; - break; - case 2: - GenerateVines.generate(world, random, x, y, z); - success = true; - break; - case 3: - world.setBlock(x, y , z, Block.web.blockID); - break; - case 4: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; - default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); - success = true; - } + switch (Utils.weightedChoise(probabilityGlowcapsHumid, probabilityVinesJungle, probabilitySpiderWeb, probabilitySkulls, probabilityStalactite, 0)) { + case 1: + GenerateGlowcaps.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); + success = true; + break; + case 2: + GenerateVines.generate(world, random, x, y, z); + success = true; + break; + case 3: + world.setBlock(x, y, z, Block.web.blockID); + break; + case 4: + GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + success = true; + break; + default: + GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); + success = true; + } return success; } } From ada3df264f04ba752e01ebb34d4680448a773f2c Mon Sep 17 00:00:00 2001 From: GotoLink Date: Sat, 26 Oct 2013 00:05:15 +0200 Subject: [PATCH 02/50] Condensed generation code --- wildCaves/WorldGenWildCaves.java | 47 +++++------ .../generation/biomeGen/GenerationArid.java | 74 ++++++----------- .../generation/biomeGen/GenerationFrozen.java | 75 +++++++---------- .../generation/biomeGen/GenerationHumid.java | 83 +++++++------------ .../generation/biomeGen/GenerationJungle.java | 21 ++--- .../generation/biomeGen/GenerationNormal.java | 80 +++++++----------- 6 files changed, 142 insertions(+), 238 deletions(-) diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 615d177..e2b2e4c 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -22,40 +22,35 @@ public class WorldGenWildCaves implements IWorldGenerator { private static boolean stalactites; private static boolean sandstoneStalactites; private static boolean Flora; - private static float probabilityVinesJungle; - private static float probabilityVines; - private static float probabilityIcicle; - private static float probabilityWet; - private static float probabilityDry; - private static float probabilityGlowcapsHumid; - private static float probabilityGlowcaps; - private static float probabilityIceshrooms; - private static float probabilityStalactite; - private static float probabilitySpiderWeb; - private static float probabilitySandStalactites; - private static float probabilitySkulls; - private static int maxGenHeight; - private static int maxLength; + public static float probabilityVinesJungle; + public static float probabilityVines; + public static float probabilityIcicle; + public static float probabilityWet; + public static float probabilityDry; + public static float probabilityGlowcapsHumid; + public static float probabilityGlowcaps; + public static float probabilityIceshrooms; + public static float probabilityStalactite; + public static float probabilitySpiderWeb; + public static float probabilitySandStalactites; + public static float probabilitySkulls; + public static int maxGenHeight; + public static int maxLength; private static int timesPerChunck = 50; - private static int maxGenHeightGlowcapNormal; + public static int maxGenHeightGlowcapNormal; private static int[] dimensionBlacklist; private static int[] blockWhiteList; private Configuration config; private GenerateStoneStalactite stalactiteGen; - private GenerationJungle jungleGen; - private GenerationHumid wetGen; - private GenerationArid aridGen; - private GenerationNormal normalGen; - private GenerationFrozen frozenGen; + private static final GenerationJungle jungleGen = new GenerationJungle(); + private static final GenerationHumid wetGen = new GenerationHumid(); + private static final GenerationArid aridGen = new GenerationArid(); + private static final GenerationNormal normalGen = new GenerationNormal(); + private static final GenerationFrozen frozenGen = new GenerationFrozen(); private GenerateFloodedCaves floodCave; public WorldGenWildCaves(Configuration config) { setConfig(config); - jungleGen = new GenerationJungle(probabilityStalactite, maxLength, probabilityVinesJungle, probabilityGlowcapsHumid, probabilitySpiderWeb, probabilitySkulls); - wetGen = new GenerationHumid(probabilityStalactite, maxLength, probabilityWet, probabilityGlowcapsHumid, probabilityVines, probabilitySpiderWeb, probabilitySkulls); - aridGen = new GenerationArid(probabilityStalactite, maxLength, probabilitySandStalactites, probabilitySpiderWeb, probabilityDry, probabilitySkulls); - normalGen = new GenerationNormal(probabilityStalactite, maxLength, probabilityVines, probabilityGlowcaps, probabilitySpiderWeb, probabilitySkulls, maxGenHeightGlowcapNormal); - frozenGen = new GenerationFrozen(probabilityStalactite, maxLength, probabilityIceshrooms, probabilitySpiderWeb, probabilityIcicle, probabilitySkulls); } @Override @@ -99,7 +94,7 @@ else if (biome.isHighHumidity() || biome == BiomeGenBase.ocean || biome == Biome } } - private void setConfig(Configuration config) { + private static void setConfig(Configuration config) { try { config.load(); // --generation permissions------ diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 5426b5f..9dab3ed 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -2,62 +2,42 @@ import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; +import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.GenerateSandstoneStalactites; import wildCaves.generation.structureGen.GenerateSkulls; import wildCaves.generation.structureGen.GenerateStoneStalactite; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntitySkull; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class GenerationArid extends WorldGenerator -{ - private static float probabilityStalactite; - private static float probabilitySandStalactites; - private static float probabilitySpiderWeb; - private static float probabilityDry; - private static float probabilitySkulls; - private static int maxLength; - - public GenerationArid(float probabilityStalactite, int maxLength, float probabilitySandStalactites, float probabilitySpiderWeb, float probabilityDry, float probabilitySkulls) - { - this.probabilityStalactite = probabilityStalactite; - this.maxLength = maxLength; - this.probabilitySandStalactites = probabilitySandStalactites; - this.probabilitySpiderWeb = probabilitySpiderWeb; - this.probabilityDry = probabilityDry; - this.probabilitySkulls = probabilitySkulls; +public class GenerationArid extends WorldGenerator { + public GenerationArid() { } - + @Override - public boolean generate(World world, Random random, int x, int y, int z) - { + public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - - switch(Utils.weightedChoise(probabilitySandStalactites, probabilitySpiderWeb, probabilityDry, probabilitySkulls, probabilityStalactite, 0)) - { - case 1: - GenerateSandstoneStalactites.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); - success = true; - break; - case 2: - world.setBlock(x, y , z, Block.web.blockID); - success = true; - break; - case 3: - break; - case 4: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; - default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); - success = true; + switch (Utils.weightedChoise(WorldGenWildCaves.probabilitySandStalactites, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityDry, WorldGenWildCaves.probabilitySkulls, + WorldGenWildCaves.probabilityStalactite, 0)) { + case 1: + GenerateSandstoneStalactites.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + success = true; + break; + case 2: + world.setBlock(x, y, z, Block.web.blockID); + success = true; + break; + case 3: + break; + case 4: + GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + success = true; + break; + default: + GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + success = true; } return success; } - } diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index 91bb0e8..bd9e1d1 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -2,63 +2,44 @@ import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; +import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.GenerateIceshrooms; import wildCaves.generation.structureGen.GenerateIcicles; import wildCaves.generation.structureGen.GenerateSkulls; import wildCaves.generation.structureGen.GenerateStoneStalactite; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntitySkull; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class GenerationFrozen extends WorldGenerator -{ - private static float probabilityIceshrooms; - private static float probabilityStalactite; - private static float probabilitySpiderWeb; - private static float probabilityIcicle; - private static float probabilitySkulls; - public static int maxLength; - - public GenerationFrozen(float probabilityStalactite, int maxLength, float probabilityIceshrooms, float probabilitySpiderWeb, float probabilityIcicle, float probabilitySkulls) - { - this.probabilityStalactite = probabilityStalactite; - this.maxLength = maxLength; - this.probabilityIcicle = probabilityIcicle; - this.probabilityIceshrooms = probabilityIceshrooms; - this.probabilitySpiderWeb = probabilitySpiderWeb; - this.probabilitySkulls = probabilitySkulls; +public class GenerationFrozen extends WorldGenerator { + public GenerationFrozen() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) - { + public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - - switch(Utils.weightedChoise(probabilityIceshrooms, probabilitySpiderWeb, probabilityIcicle, probabilitySkulls, probabilityStalactite, 0)) - { - case 1: - GenerateIceshrooms.generate(world, random, x, y-Utils.getNumEmptyBlocks(world, x, y, z)+1, z); - success = true; - break; - case 2: - world.setBlock(x, y , z, Block.web.blockID); - success = true; - break; - case 3: - GenerateIcicles.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; - case 4: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; - default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); - success = true; + switch (Utils.weightedChoise(WorldGenWildCaves.probabilityIceshrooms, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityIcicle, WorldGenWildCaves.probabilitySkulls, + WorldGenWildCaves.probabilityStalactite, 0)) { + case 1: + GenerateIceshrooms.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); + success = true; + break; + case 2: + world.setBlock(x, y, z, Block.web.blockID); + success = true; + break; + case 3: + GenerateIcicles.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + success = true; + break; + case 4: + GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + success = true; + break; + default: + GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + success = true; } return success; } diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index 0220a9f..9624f9b 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -2,68 +2,47 @@ import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; +import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.GenerateGlowcaps; import wildCaves.generation.structureGen.GenerateSkulls; import wildCaves.generation.structureGen.GenerateStoneStalactite; import wildCaves.generation.structureGen.GenerateVines; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntitySkull; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class GenerationHumid extends WorldGenerator -{ - private static float probabilityWet; - private static float probabilityGlowcapsHumid; - private static float probabilityStalactite; - private static float probabilityVines; - private static float probabilitySpiderWeb; - private static float probabilitySkulls; - public static int maxLength; - - public GenerationHumid(float probabilityStalactite, int maxLength, float probabilityWet, float probabilityGlowcapsHumid, float probabilityVines, float probabilitySpiderWeb, float probabilitySkulls) - { - this.probabilityStalactite = probabilityStalactite; - this.maxLength = maxLength; - this.probabilityWet = probabilityWet; - this.probabilityGlowcapsHumid = probabilityGlowcapsHumid; - this.probabilityVines = probabilityVines; - this.probabilitySpiderWeb = probabilitySpiderWeb; - this.probabilitySkulls = probabilitySkulls; +public class GenerationHumid extends WorldGenerator { + public GenerationHumid() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) - { + public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - - switch(Utils.weightedChoise(probabilityGlowcapsHumid, probabilityWet, probabilityVines, probabilitySpiderWeb, probabilitySkulls, probabilityStalactite)) - { - case 1: - GenerateGlowcaps.generate(world, random, x, y-Utils.getNumEmptyBlocks(world, x, y, z)+1, z); - success = true; - break; - case 2: - world.setBlock(x, y + 1, z, Block.waterMoving.blockID); - success = true; - break; - case 3: - GenerateVines.generate(world, random, x, y, z); - success = true; - break; - case 4: - world.setBlock(x, y-Utils.getNumEmptyBlocks(world, x, y, z)+1, z, Block.web.blockID); - break; - case 5: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; - default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); - success = true; + switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityWet, WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, + WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite)) { + case 1: + GenerateGlowcaps.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); + success = true; + break; + case 2: + world.setBlock(x, y + 1, z, Block.waterMoving.blockID); + success = true; + break; + case 3: + GenerateVines.generate(world, random, x, y, z); + success = true; + break; + case 4: + world.setBlock(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Block.web.blockID); + break; + case 5: + GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + success = true; + break; + default: + GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + success = true; } return success; } diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index fe1de0c..8b10eed 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -3,6 +3,7 @@ import java.util.Random; import wildCaves.Utils; +import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.GenerateGlowcaps; import wildCaves.generation.structureGen.GenerateSkulls; import wildCaves.generation.structureGen.GenerateStoneStalactite; @@ -13,26 +14,14 @@ import net.minecraft.world.gen.feature.WorldGenerator; public class GenerationJungle extends WorldGenerator { - private static float probabilityVinesJungle; - private static float probabilityGlowcapsHumid; - private static float probabilityStalactite; - private static float probabilitySpiderWeb; - private static float probabilitySkulls; - private static int maxLength; - - public GenerationJungle(float probabilityStalactite, int maxLength, float probabilityVinesJungle, float probabilityGlowcapsHumid, float probabilitySpiderWeb, float probabilitySkulls) { - this.probabilityStalactite = probabilityStalactite; - this.maxLength = maxLength; - this.probabilityVinesJungle = probabilityVinesJungle; - this.probabilityGlowcapsHumid = probabilityVinesJungle; - this.probabilitySpiderWeb = probabilitySpiderWeb; - this.probabilitySkulls = probabilitySkulls; + public GenerationJungle() { } @Override public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - switch (Utils.weightedChoise(probabilityGlowcapsHumid, probabilityVinesJungle, probabilitySpiderWeb, probabilitySkulls, probabilityStalactite, 0)) { + switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityVinesJungle, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilitySkulls, + WorldGenWildCaves.probabilityStalactite, 0)) { case 1: GenerateGlowcaps.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); success = true; @@ -49,7 +38,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), maxLength); + GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); success = true; } return success; diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index 31702e6..012bedc 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -2,67 +2,47 @@ import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; +import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.GenerateGlowcaps; import wildCaves.generation.structureGen.GenerateSkulls; import wildCaves.generation.structureGen.GenerateStoneStalactite; import wildCaves.generation.structureGen.GenerateVines; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntitySkull; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class GenerationNormal extends WorldGenerator -{ - private static float probabilityGlowcaps; - private static float probabilityStalactite; - private static float probabilityVines; - private static float probabilitySpiderWeb; - private static float probabilitySkulls; - private static int maxLength; - private static int maxGenHeightGlowcapNormal; - - public GenerationNormal(float probabilityStalactite, int maxLength, float probabilityGlowcaps, float probabilityVines, float probabilitySpiderWeb, float probabilitySkulls, int maxGenHeightGlowcapNormal) - { - this.probabilityStalactite = probabilityStalactite; - this.maxLength = maxLength; - this.probabilityVines = probabilityVines; - this.probabilitySpiderWeb = probabilitySpiderWeb; - this.probabilitySkulls = probabilitySkulls; - this.maxGenHeightGlowcapNormal = maxGenHeightGlowcapNormal; +public class GenerationNormal extends WorldGenerator { + public GenerationNormal() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) - { + public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; float glowcapsAux = 0; - if(y Date: Mon, 28 Oct 2013 22:28:27 +0100 Subject: [PATCH 03/50] Improved dimension black list and block white list to be more extendable, if needed The config file would also be more readable --- wildCaves/EventManager.java | 2 +- wildCaves/Utils.java | 12 ------------ wildCaves/WorldGenWildCaves.java | 27 ++++++++++++++++++++------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 2ee24f0..c362cc3 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -15,7 +15,7 @@ public EventManager(int chanceForNodeToSpawn) { this.chanceForNodeToSpawn = chanceForNodeToSpawn; } - + @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.dimensionId) diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index add40fe..74dbf1b 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -6,18 +6,6 @@ import net.minecraft.world.World; public class Utils { - //checks if a given int is in the given array - public static boolean arrayContainsInt(int[] array, int a) { - boolean result = false; - int i = 0; - while (i < array.length && !result) { - if (array[i] == a) - result = true; - i++; - } - return result; - } - // transforms an area into snow and ice public static void convertToFrozenType(World world, Random random, int x, int y, int z) { int height = random.nextInt(5) + 3; diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index e2b2e4c..ee2538d 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -1,5 +1,7 @@ package wildCaves; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import java.util.logging.Level; @@ -38,9 +40,8 @@ public class WorldGenWildCaves implements IWorldGenerator { public static int maxLength; private static int timesPerChunck = 50; public static int maxGenHeightGlowcapNormal; - private static int[] dimensionBlacklist; - private static int[] blockWhiteList; - private Configuration config; + private static List dimensionBlacklist = new ArrayList(); + private static List blockWhiteList = new ArrayList(); private GenerateStoneStalactite stalactiteGen; private static final GenerationJungle jungleGen = new GenerationJungle(); private static final GenerationHumid wetGen = new GenerationHumid(); @@ -64,14 +65,14 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP int dist;// distance BiomeGenBase biome; //if( world.provider.dimensionId != 1 && world.provider.dimensionId != -1) // !world.provider.isHellWorld) - if (!Utils.arrayContainsInt(dimensionBlacklist, world.provider.dimensionId)) { + if (!dimensionBlacklist.contains(world.provider.dimensionId)) { for (int i = 0; i < timesPerChunck; i++) { genStalactiteNow = true; Xcoord = blockX + random.nextInt(16); Ycoord = random.nextInt(maxGenHeight); Zcoord = blockZ + random.nextInt(16); // search for the first available spot - while (!(Utils.arrayContainsInt(blockWhiteList, world.getBlockId(Xcoord, Ycoord + 1, Zcoord)) && world.isAirBlock(Xcoord, Ycoord, Zcoord)) && Ycoord > 10) { + while (!(blockWhiteList.contains(world.getBlockId(Xcoord, Ycoord + 1, Zcoord)) && world.isAirBlock(Xcoord, Ycoord, Zcoord)) && Ycoord > 10) { Ycoord--; } // found a spot @@ -101,8 +102,20 @@ private static void setConfig(Configuration config) { sandstoneStalactites = config.get("Permissions", "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); Flora = config.get("Permissions", "Generate flora on caves", true).getBoolean(true); stalactites = config.get("Permissions", "Generate stalactites on caves", true).getBoolean(true); - dimensionBlacklist = config.get("Permissions", "Dimension Blacklist", new int[] { -1, 1 }).getIntList(); - blockWhiteList = config.get("Permissions", "Block white list", new int[] { 1, 2, 3, 4, 13, 14, 15, 16, 21, 24, 56, 73, 74, 79, 80, 82, 97, 129 }).getIntList(); + String[] list = config.get("Permissions", "Dimension Blacklist", "-1,1").getString().split(","); + for (String txt : list) { + try { + dimensionBlacklist.add(Integer.parseInt(txt.trim())); + } catch (NumberFormatException n) { + } + } + list = config.get("Permissions", "Block white list", "1,2,3,4,13,14,15,16,21,24,56,73,74,79,80,82,97,129").getString().split(","); + for (String txt : list) { + try { + blockWhiteList.add(Integer.parseInt(txt.trim())); + } catch (NumberFormatException n) { + } + } // --Biome specific ratios------ probabilityVinesJungle = (float) config.get("Biome specific", "Probability of vines on jungle caves", 0.5).getDouble(0.5); probabilityIcicle = (float) config.get("Biome specific", "Probability of iciles on frozen caves", 0.6).getDouble(0.6); From 9e06fdff3f395573036d9c54338627156ea14a25 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Mon, 28 Oct 2013 23:18:34 +0100 Subject: [PATCH 04/50] Uses block field instead of ids. Less subject to being affected by Mojang updates --- wildCaves/BlockStalactite.java | 3 +- wildCaves/ItemSandstoneStalactite.java | 2 +- wildCaves/ItemStalactite.java | 12 ++-- .../structureGen/GenerateGlowcaps.java | 22 +++---- .../structureGen/GenerateIceshrooms.java | 16 ++--- .../structureGen/GenerateIcicles.java | 15 ++--- .../GenerateSandstoneStalactites.java | 59 ++++++------------- .../structureGen/GenerateStoneStalactite.java | 51 ++++++---------- 8 files changed, 64 insertions(+), 116 deletions(-) diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 10a6003..83706b6 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -43,7 +43,6 @@ else if (metadata == 6 || (metadata > 7 && metadata < 11) || metadata == 12) result = connected(world, x, y, z, false); else if (metadata == 0 || metadata == 4 || metadata == 5) result = connected(world, x, y, z, true) || connected(world, x, y, z, false); - ; return result; } @@ -61,7 +60,7 @@ public boolean connected(World world, int x, int y, int z, boolean searchUp) { else increment = -1; i = increment; - while (world.getBlockId(x, y + i, z) == WildCaves.blockStoneStalactiteID || world.getBlockId(x, y + i, z) == WildCaves.blockSandStalactiteID) + while (world.getBlockId(x, y + i, z) == WildCaves.blockStoneStalactite.blockID || world.getBlockId(x, y + i, z) == WildCaves.blockSandStalactite.blockID) i = i + increment; return world.isBlockNormalCube(x, y + i, z); } diff --git a/wildCaves/ItemSandstoneStalactite.java b/wildCaves/ItemSandstoneStalactite.java index 8ac7092..e9155b3 100644 --- a/wildCaves/ItemSandstoneStalactite.java +++ b/wildCaves/ItemSandstoneStalactite.java @@ -4,7 +4,7 @@ public class ItemSandstoneStalactite extends ItemStalactite { public ItemSandstoneStalactite(int par1) { super(par1, WildCaves.blockSandStalactite, "sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", "sandstoneStalactiteConnection2", "sandstoneStalactiteConnection3", "sandstoneStalactiteConnection4", "sandstoneStalactiteEnd", "sandstoneStalacmiteEnd", "sandstoneStalacmite1", - "sandstoneStalacmite2", "sandstoneStalacmite3", "-", "--", "---"); + "sandstoneStalacmite2", "sandstoneStalacmite3"); setUnlocalizedName("sandstoneStalactiteBlock"); } } diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index 2ddfac9..cdeb855 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -63,12 +63,12 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, Wor return false; } else if (y == 255) { return false; - } else if (world.canPlaceEntityOnSide(WildCaves.blockStoneStalactiteID, x, y, z, false, side, par2EntityPlayer, itemStack) - || world.canPlaceEntityOnSide(WildCaves.blockSandStalactiteID, x, y, z, false, side, par2EntityPlayer, itemStack)) { + } else if (world.canPlaceEntityOnSide(WildCaves.blockStoneStalactite.blockID, x, y, z, false, side, par2EntityPlayer, itemStack) + || world.canPlaceEntityOnSide(WildCaves.blockSandStalactite.blockID, x, y, z, false, side, par2EntityPlayer, itemStack)) { if (canPlace(itemStack, world, x, y, z)) { - Block block = Block.blocksList[WildCaves.blockStoneStalactiteID]; + Block block = WildCaves.blockStoneStalactite; int j1 = this.getMetadata(itemStack.getItemDamage()); - int k1 = Block.blocksList[WildCaves.blockStoneStalactiteID].onBlockPlaced(world, x, y, z, side, par8, par9, par10, j1); + int k1 = WildCaves.blockStoneStalactite.onBlockPlaced(world, x, y, z, side, par8, par9, par10, j1); if (placeBlockAt(itemStack, par2EntityPlayer, world, x, y, z, side, par8, par9, par10, k1)) { world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); --itemStack.stackSize; @@ -86,8 +86,8 @@ private boolean canPlace(ItemStack itemStack, World world, int x, int y, int z) int metadata = getMetadata(itemStack.getItemDamage()); boolean upNormal = world.isBlockNormalCube(x, y + 1, z); boolean downNormal = world.isBlockNormalCube(x, y - 1, z); - boolean upStalactite = world.getBlockId(x, y + 1, z) == WildCaves.blockStoneStalactiteID || world.getBlockId(x, y + 1, z) == WildCaves.blockSandStalactiteID; - boolean downStalactite = world.getBlockId(x, y - 1, z) == WildCaves.blockStoneStalactiteID || world.getBlockId(x, y - 1, z) == WildCaves.blockSandStalactiteID; + boolean upStalactite = world.getBlockId(x, y + 1, z) == WildCaves.blockStoneStalactite.blockID || world.getBlockId(x, y + 1, z) == WildCaves.blockSandStalactite.blockID; + boolean downStalactite = world.getBlockId(x, y - 1, z) == WildCaves.blockStoneStalactite.blockID || world.getBlockId(x, y - 1, z) == WildCaves.blockSandStalactite.blockID; if ((metadata == 0 || metadata == 4 || metadata == 5) && (upNormal || downNormal || upStalactite || downStalactite)) result = true; else if ((metadata < 4 || metadata == 7 || metadata == 11) && (upNormal || upStalactite)) diff --git a/wildCaves/generation/structureGen/GenerateGlowcaps.java b/wildCaves/generation/structureGen/GenerateGlowcaps.java index 6fb6a2b..388ee4d 100644 --- a/wildCaves/generation/structureGen/GenerateGlowcaps.java +++ b/wildCaves/generation/structureGen/GenerateGlowcaps.java @@ -6,27 +6,21 @@ import net.minecraft.world.World; -public class GenerateGlowcaps -{ +public class GenerateGlowcaps { // Genarates Glowing mushrooms at the specified x,y,z - public static boolean generate(World world, Random random, int x, int y, int z) - { - if(!world.isAirBlock(x, y-1, z)) - { + public static boolean generate(World world, Random random, int x, int y, int z) { + if (!world.isAirBlock(x, y - 1, z)) { int glowcapNum = 0; - if(world.isAirBlock(x, y+1, z)) + if (world.isAirBlock(x, y + 1, z)) glowcapNum = random.nextInt(5); else glowcapNum = random.nextInt(4); - - world.setBlock(x, y, z, WildCaves.blockFloraID, glowcapNum, 2); - if(glowcapNum == 4) - { - world.setBlock(x, y+1, z, WildCaves.blockFloraID, glowcapNum+1, 2); + world.setBlock(x, y, z, WildCaves.blockFlora.blockID, glowcapNum, 2); + if (glowcapNum == 4) { + world.setBlock(x, y + 1, z, WildCaves.blockFlora.blockID, glowcapNum + 1, 2); } return true; - } - else + } else return false; } } diff --git a/wildCaves/generation/structureGen/GenerateIceshrooms.java b/wildCaves/generation/structureGen/GenerateIceshrooms.java index 2338188..0ecd159 100644 --- a/wildCaves/generation/structureGen/GenerateIceshrooms.java +++ b/wildCaves/generation/structureGen/GenerateIceshrooms.java @@ -8,16 +8,12 @@ import net.minecraft.block.Block; import net.minecraft.world.World; -public class GenerateIceshrooms -{ - public static void generate(World world, Random random, int x, int y, int z) - { - if(!world.isAirBlock(x, y-1, z)) - { - if(!world.getBlockMaterial(x, y, z).isLiquid()) - { - world.setBlock(x, y-1, z, Block.ice.blockID); - world.setBlock(x, y, z, WildCaves.blockFloraID, Utils.randomChoise(6, 7, 8, 9), 2); +public class GenerateIceshrooms { + public static void generate(World world, Random random, int x, int y, int z) { + if (!world.isAirBlock(x, y - 1, z)) { + if (!world.getBlockMaterial(x, y, z).isLiquid()) { + world.setBlock(x, y - 1, z, Block.ice.blockID); + world.setBlock(x, y, z, WildCaves.blockFlora.blockID, Utils.randomChoise(6, 7, 8, 9), 2); } Utils.convertToFrozenType(world, random, x, y, z); } diff --git a/wildCaves/generation/structureGen/GenerateIcicles.java b/wildCaves/generation/structureGen/GenerateIcicles.java index f4f4f74..f60ab5c 100644 --- a/wildCaves/generation/structureGen/GenerateIcicles.java +++ b/wildCaves/generation/structureGen/GenerateIcicles.java @@ -8,18 +8,13 @@ import net.minecraft.block.Block; import net.minecraft.world.World; -public class GenerateIcicles -{ - public static void generate(World world, Random random, int x, int y, int z, int distance) - { +public class GenerateIcicles { + public static void generate(World world, Random random, int x, int y, int z, int distance) { int botY = y - distance + 1; - - world.setBlock(x, y+1, z, Block.ice.blockID); - world.setBlock(x, y, z, WildCaves.blockDecorationsID, Utils.randomChoise(0, 1, 2), 2); + world.setBlock(x, y + 1, z, Block.ice.blockID); + world.setBlock(x, y, z, WildCaves.blockDecorations.blockID, Utils.randomChoise(0, 1, 2), 2); Utils.convertToFrozenType(world, random, x, y, z); - - if(!world.getBlockMaterial(x, botY, z).isLiquid()) - { + if (!world.getBlockMaterial(x, botY, z).isLiquid()) { Utils.convertToFrozenType(world, random, x, botY, z); } } diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index 398ee60..c9d3f46 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -8,22 +8,15 @@ import net.minecraft.block.Block; import net.minecraft.world.World; -public class GenerateSandstoneStalactites -{ - public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) - { +public class GenerateSandstoneStalactites { + public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; - int blockId = WildCaves.blockSandStalactiteID; - - if(world.getBlockId(x, y+1, z)==Block.stone.blockID) - world.setBlock(x, y+1, z, blockId, 0, 2); - - if (distance == 1) - { + int blockId = WildCaves.blockSandStalactite.blockID; + if (world.getBlockId(x, y + 1, z) == Block.stone.blockID) + world.setBlock(x, y + 1, z, blockId, 0, 2); + if (distance == 1) { world.setBlock(x, y, z, blockId, 0, 2); - } - else - { + } else { int k = 0; // counter int j = 0; // blocks placed int topMetadata = 0; @@ -31,56 +24,44 @@ public static void generate(World world, Random random, int x, int y, int z, int int topY = y; int botY = y - distance + 1; int aux; - //stalactite base world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); Utils.convertToSandType(world, random, x, topY, z); j++; - // stalagmite base - if(!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY-1, z)) - { + if (!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY - 1, z)) { aux = Utils.randomChoise(-1, 8, 9, 10); - if (aux != -1) - { - if(world.getBlockId(x, botY-1, z)==Block.stone.blockID) - world.setBlock(x, botY-1, z, Block.sandStone.blockID, 0, 2); - + if (aux != -1) { + if (world.getBlockId(x, botY - 1, z) == Block.stone.blockID) + world.setBlock(x, botY - 1, z, Block.sandStone.blockID, 0, 2); world.setBlock(x, botY, z, blockId, aux, 2); j++; stalagmiteGenerated = true; - Utils.convertToSandType(world, random, x, botY, z); } } - - if (distance > 2) - { - while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY-1, z).isLiquid()) - { + if (distance > 2) { + while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); bottomMetadata = world.getBlockMetadata(x, botY, z); topY--; botY++; // Expand downwards - if(world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) - { + if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); - if (aux != 4) + if (aux != 4) world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); - else + else world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); j++; } - // Expand upwards - if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) - { + if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); - if (aux != 4) + if (aux != 4) world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); - else + else world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); j++; } @@ -88,6 +69,4 @@ public static void generate(World world, Random random, int x, int y, int z, int } } } - - } diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index 7917283..ecd6df4 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -7,19 +7,14 @@ import net.minecraft.world.World; -public class GenerateStoneStalactite -{ - public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) - { +public class GenerateStoneStalactite { + public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; - int blockId = WildCaves.blockStoneStalactiteID; - if (distance == 1) - { + int blockId = WildCaves.blockStoneStalactite.blockID; + if (distance == 1) { //x,y,z,blockID, metadate, set the last one to 2 world.setBlock(x, y, y, blockId, 0, 2); - } - else - { + } else { int k = 0; // counter int j = 0; // blocks placed int topMetadata = 0; @@ -27,51 +22,41 @@ public static void generate(World world, Random random, int x, int y, int z, int int topY = y; int botY = y - distance + 1; int aux; - //stalactite base world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); j++; - // stalagmite base - if(!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY-1, z)) - { + if (!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY - 1, z)) { aux = Utils.randomChoise(-1, 8, 9, 10); - if (aux != -1) - { + if (aux != -1) { world.setBlock(x, botY, z, blockId, aux, 2); j++; stalagmiteGenerated = true; } } - - if (distance > 2) - { - while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY-1, z).isLiquid()) - { + if (distance > 2) { + while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); bottomMetadata = world.getBlockMetadata(x, botY, z); topY--; botY++; // Expand downwards - if(world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) - { + if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); - if (aux != 4) + if (aux != 4) world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); - else - world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11),2); + else + world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); j++; } - // Expand upwards - if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) - { + if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); - if (aux != 4) - world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12),2); - else - world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6),2); + if (aux != 4) + world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); + else + world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); j++; } } From c7297914ef11fd486dadc49f46157e6853894043 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Mon, 28 Oct 2013 23:19:14 +0100 Subject: [PATCH 05/50] Exposed names into localization file --- assets/wildcaves3/lang/en_US.lang | 49 +++++++++++++++++++++++++ wildCaves/WildCaves.java | 59 +++++++------------------------ 2 files changed, 62 insertions(+), 46 deletions(-) create mode 100644 assets/wildcaves3/lang/en_US.lang diff --git a/assets/wildcaves3/lang/en_US.lang b/assets/wildcaves3/lang/en_US.lang new file mode 100644 index 0000000..797b0f6 --- /dev/null +++ b/assets/wildcaves3/lang/en_US.lang @@ -0,0 +1,49 @@ +itemGroup.WildCaves3=Wild Caves 3 + +fossil1.name=Bone pile + +stalactite1.name=Stalactite +stalactite2.name=Stalactite +stalactite3.name=Stalactite +stalactite4.name=Stalactite +stalactiteConnection1.name=Stalactite +stalactiteConnection2.name=Stalactite +stalactiteConnection3.name=Stalactite +stalactiteConnection4.name=Stalactite +stalactiteEnd.name=Stalactite +stalacmiteEnd.name=Stalagmite +stalacmite1.name=Stalagmite +stalacmite2.name=Stalagmite +stalacmite3.name=Stalagmite + +sandstoneStalactite1.name=Sandstone Stalactite +sandstoneStalactite2.name=Sandstone Stalactite +sandstoneStalactite3.name=Sandstone Stalactite +sandstoneStalactite4.name=Sandstone Stalactite +sandstoneStalactiteConnection1.name=Sandstone Stalactite +sandstoneStalactiteConnection2.name=Sandstone Stalactite +sandstoneStalactiteConnection3.name=Sandstone Stalactite +sandstoneStalactiteConnection4.name=Sandstone Stalactite +sandstoneStalactiteEnd.name=Sandstone Stalactite +sandstoneStalacmiteEnd.name=Sandstone Stalagmite +sandstoneStalacmite1.name=Sandstone stalagmite +sandstoneStalacmite2.name=Sandstone stalagmite +sandstoneStalacmite3.name=Sandstone stalagmite + +glowcap1.name=Glowcap +glowcap2.name=Glowcap +glowcap3.name=Glowcap +gloweed1.name=Glow weed +glowcap4top.name=Glowcap +glowcap4bottom.name=Glowcap + +bluecap1.name=Iceshroom +bluecap2.name=Iceshroom +bluecap3.name=Iceshroom +bluecap4.name=Iceshroom + +icicle.name=Icicle +icicle1.name=Icicle +icicle2.name=Icicle +icicle3.name=Icicle + diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 4c0e7a1..658955b 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -16,9 +16,8 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; -@Mod(modid = WildCaves.modid, name = "Wild Caves 3", version = "0.4.3.4") +@Mod(modid = WildCaves.modid, name = "Wild Caves 3", version = "0.4.3.5") @NetworkMod(clientSideRequired = true) public class WildCaves { public static final String modid = "wildcaves3"; @@ -26,9 +25,9 @@ public class WildCaves { public static BlockStoneStalactite blockStoneStalactite; public static BlockSandstoneStalactite blockSandStalactite; public static int floraLightLevel; - public static int blockStoneStalactiteID, blockSandStalactiteID, blockFloraID; + private static int blockStoneStalactiteID, blockSandStalactiteID, blockFloraID; public static int timesPerChunck; - public static int blockDecorationsID, blockFossilsID; + private static int blockDecorationsID, blockFossilsID; public static int chanceForNodeToSpawn; private boolean solidStalactites, damageWhenFallenOn; public static Configuration config; @@ -41,58 +40,26 @@ public ItemStack getIconItemStack() { }; public void initBlocks() { - if (blockStoneStalactiteID != 0) { + if (blockStoneStalactiteID > 0) { blockStoneStalactite = new BlockStoneStalactite(blockStoneStalactiteID, solidStalactites, damageWhenFallenOn); - Item.itemsList[blockStoneStalactiteID] = new ItemStoneStalactite(blockStoneStalactiteID - 256); - for (int i = 1; i < 5; i++) { - LanguageRegistry.instance().addStringLocalization("stalactite" + i + ".name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalactiteConnection" + i + ".name", "Stalactite"); - } - LanguageRegistry.instance().addStringLocalization("stalactiteEnd.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalacmiteEnd.name", "Stalactite"); - LanguageRegistry.instance().addStringLocalization("stalacmite1.name", "Stalagmite"); - LanguageRegistry.instance().addStringLocalization("stalacmite2.name", "Stalagmite"); - LanguageRegistry.instance().addStringLocalization("stalacmite3.name", "Stalagmite"); + GameRegistry.registerBlock(blockStoneStalactite, ItemStoneStalactite.class, "StoneStalactite"); } - if (blockSandStalactiteID != 0) { + if (blockSandStalactiteID > 0) { blockSandStalactite = new BlockSandstoneStalactite(blockSandStalactiteID, solidStalactites, damageWhenFallenOn); - Item.itemsList[blockSandStalactiteID] = new ItemSandstoneStalactite(blockSandStalactiteID - 256); - for (int i = 1; i < 5; i++) { - LanguageRegistry.instance().addStringLocalization("sandstoneStalactite" + i + ".name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteConnection" + i + ".name", "Sandstone Stalactite"); - } - LanguageRegistry.instance().addStringLocalization("sandstoneStalactiteEnd.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalacmiteEnd.name", "Sandstone Stalactite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalacmite1.name", "Sandstone stalagmite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalacmite2.name", "Sandstone stalagmite"); - LanguageRegistry.instance().addStringLocalization("sandstoneStalacmite3.name", "Sandstone stalagmite"); + GameRegistry.registerBlock(blockSandStalactite, ItemSandstoneStalactite.class, "SandstoneSalactite"); } - if (blockDecorationsID != 0) { + if (blockDecorationsID > 0) { blockDecorations = new BlockDecorations(blockDecorationsID); - Item.itemsList[blockDecorationsID] = new ItemDecoration(blockDecorationsID - 256); - for (int i = 1; i < 4; i++) { - LanguageRegistry.instance().addStringLocalization("icicle" + i + ".name", "Icicle"); - } + GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); } - if (blockFloraID != 0) { + if (blockFloraID > 0) { blockFlora = new BlockFlora(blockFloraID, floraLightLevel); - Item.itemsList[blockFloraID] = new ItemFlora(blockFloraID - 256); - for (int i = 1; i < 4; i++) { - LanguageRegistry.instance().addStringLocalization("glowcap" + i + ".name", "Glowcap"); - } - LanguageRegistry.instance().addStringLocalization("gloweed1.name", "Glow weed"); - LanguageRegistry.instance().addStringLocalization("glowcap4top.name", "Glowcap"); - LanguageRegistry.instance().addStringLocalization("glowcap4bottom.name", "Glowcap"); - for (int i = 1; i < 5; i++) { - LanguageRegistry.instance().addStringLocalization("bluecap" + i + ".name", "Iceshroom"); - } + GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); } - if (blockFossilsID != 0) { + if (blockFossilsID > 0) { blockFossils = new BlockFossils(blockFossilsID); Item.itemsList[blockFossilsID] = new MultiItemBlock(blockFossilsID - 256, "fossil1").setUnlocalizedName("fossilBlock"); - LanguageRegistry.instance().addStringLocalization("fossil1.name", "Bone pile"); } - LanguageRegistry.instance().addStringLocalization("itemGroup.WildCaves3", "en_US", "Wild Caves 3"); } @EventHandler @@ -108,7 +75,7 @@ public void load(FMLInitializationEvent event) { } } } - if (blockFossilsID != 0) { + if (blockFossilsID > 0) { eventmanager = new EventManager(chanceForNodeToSpawn); GameRegistry.registerWorldGenerator(eventmanager); } From 2df5e104ac5e28707985e1a1d59273f0946419e4 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 29 Oct 2013 01:47:03 +0100 Subject: [PATCH 06/50] Fixed localization file --- assets/wildcaves3/lang/en_US.lang | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/wildcaves3/lang/en_US.lang b/assets/wildcaves3/lang/en_US.lang index 797b0f6..8324ffb 100644 --- a/assets/wildcaves3/lang/en_US.lang +++ b/assets/wildcaves3/lang/en_US.lang @@ -1,4 +1,5 @@ -itemGroup.WildCaves3=Wild Caves 3 + +itemGroup.WildCaves3=Wild Caves 3 fossil1.name=Bone pile @@ -45,5 +46,4 @@ bluecap4.name=Iceshroom icicle.name=Icicle icicle1.name=Icicle icicle2.name=Icicle -icicle3.name=Icicle - +icicle3.name=Icicle \ No newline at end of file From b7fa43b93df3c713fcfd778a47fca0ffad414091 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 29 Oct 2013 17:55:28 +0100 Subject: [PATCH 07/50] Fixed unhandled config case leading to crash --- wildCaves/WildCaves.java | 4 +++- wildCaves/WorldGenWildCaves.java | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 658955b..6132d6e 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -66,7 +66,9 @@ public void initBlocks() { public void load(FMLInitializationEvent event) { initBlocks(); WorldGenWildCaves gen = new WorldGenWildCaves(config); - GameRegistry.registerWorldGenerator(gen); + if (gen.maxLength > 0) { + GameRegistry.registerWorldGenerator(gen); + } //new itemstack(itemID, stackSize, damage) for (String txt : new String[] { "DUNGEON_CHEST", "MINESHAFT_CORRIDOR", "STRONGHOLD_CORRIDOR" }) { for (int i = 0; i < 5; i++) { diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index ee2538d..6f2f359 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -64,7 +64,6 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP int Zcoord; int dist;// distance BiomeGenBase biome; - //if( world.provider.dimensionId != 1 && world.provider.dimensionId != -1) // !world.provider.isHellWorld) if (!dimensionBlacklist.contains(world.provider.dimensionId)) { for (int i = 0; i < timesPerChunck; i++) { genStalactiteNow = true; @@ -133,7 +132,7 @@ private static void setConfig(Configuration config) { probabilitySkulls = (float) config.get("Non biome specific", "Probability of skulls", 0.0001).getDouble(0.0001); // --other------ timesPerChunck = config.get(Configuration.CATEGORY_GENERAL, "times to attemp generating per chunk", 40).getInt(); - maxGenHeight = config.get(Configuration.CATEGORY_GENERAL, "Max height at wich to generate", 80).getInt(); + maxGenHeight = config.get(Configuration.CATEGORY_GENERAL, "Max height at which to generate", 80).getInt(); maxLength = config.get(Configuration.CATEGORY_GENERAL, "Max length of structure generation", 8).getInt(); } catch (Exception e) { FMLLog.log(Level.SEVERE, e, "WildCaves3 has a problem loading it's configuration"); From d0fcc44d622acf0dd06b47af34c00dc42d0044e5 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Wed, 13 Nov 2013 19:44:54 +0100 Subject: [PATCH 08/50] Fixed variable use and unnecessary casting --- wildCaves/BlockFossils.java | 149 +++++++++++------------- wildCaves/BlockSandstoneStalactite.java | 4 +- wildCaves/BlockStalactite.java | 15 +-- wildCaves/BlockStoneStalactite.java | 4 +- wildCaves/ItemFossil.java | 7 ++ wildCaves/ItemStalactite.java | 8 +- wildCaves/WildCaves.java | 8 +- 7 files changed, 89 insertions(+), 106 deletions(-) create mode 100644 wildCaves/ItemFossil.java diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index f3b03bf..4299cda 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -16,104 +16,85 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockFossils extends Block -{ +public class BlockFossils extends Block { @SideOnly(Side.CLIENT) private Icon[] iconArray; - private int numOfStructures=1; + private int numOfStructures = 1; - public BlockFossils(int id) - { + public BlockFossils(int id) { super(id, Material.rock); this.setHardness(1F); this.setCreativeTab(WildCaves.tabWildCaves); - setUnlocalizedName("fossilsBlock"); - this.setStepSound(soundStoneFootstep); + setUnlocalizedName("fossilsBlock"); + this.setStepSound(soundStoneFootstep); } - + @Override - public int idDropped(int metadata, Random random, int par3) - { - int choise = Utils.weightedChoise(0.5f, 0.15f, 0.05f, 0.5f, 0, 0); - int result = 0; - switch(choise) - { - case 1: - result=Item.bone.itemID; - break; - case 2: - result=Item.arrow.itemID; - break; - case 3: - result=Item.skull.itemID; - break; - case 4: - result=Block.cobblestone.blockID; - } - return result; - } - + public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) { + return true; + } + @Override - public int quantityDropped(Random rand) - { - return 1; - } - - @Override - public int damageDropped (int metadata) - { + public int damageDropped(int metadata) { return 0; } - - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) - { - if(metadata >= numOfStructures) - metadata = numOfStructures-1; - return this.iconArray[metadata]; - } - - /** - * Get the block's damage value (for use with pick block). - */ - @Override - public int getDamageValue(World world, int x, int y, int z) - { - return world.getBlockMetadata(x, y, z); - } - - @Override - public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) - { - return true; - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - for (int i = 0; i < numOfStructures; ++i) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side) - { - return this.iconArray[blockAccess.getBlockMetadata(x, y, z)]; - } @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - this.iconArray = new Icon[numOfStructures]; + public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side) { + return this.iconArray[blockAccess.getBlockMetadata(x, y, z)]; + } + + /** + * Get the block's damage value (for use with pick block). + */ + @Override + public int getDamageValue(World world, int x, int y, int z) { + return world.getBlockMetadata(x, y, z); + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getIcon(int side, int metadata) { + if (metadata >= numOfStructures) + metadata = numOfStructures - 1; + return this.iconArray[metadata]; + } - for (int i = 0; i < this.iconArray.length; ++i) - { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":fossils"+ i); - } + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + for (int i = 0; i < numOfStructures; ++i) { + par3List.add(new ItemStack(par1, 1, i)); + } + } + + @Override + public int idDropped(int metadata, Random random, int par3) { + int choise = Utils.weightedChoise(0.5f, 0.15f, 0.05f, 0.5f, 0, 0); + int result = 0; + switch (choise) { + case 1: + result = Item.bone.itemID; + break; + case 2: + result = Item.arrow.itemID; + break; + case 3: + result = Item.skull.itemID; + break; + case 4: + result = Block.cobblestone.blockID; + } + return result; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) { + this.iconArray = new Icon[numOfStructures]; + for (int i = 0; i < this.iconArray.length; ++i) { + this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":fossils" + i); + } } } diff --git a/wildCaves/BlockSandstoneStalactite.java b/wildCaves/BlockSandstoneStalactite.java index 8ff5d90..d4c102b 100644 --- a/wildCaves/BlockSandstoneStalactite.java +++ b/wildCaves/BlockSandstoneStalactite.java @@ -5,8 +5,8 @@ import net.minecraft.block.Block; public class BlockSandstoneStalactite extends BlockStalactite { - public BlockSandstoneStalactite(int id, boolean solidStalactites, boolean damageWhenFallenOn) { - super(id, solidStalactites, damageWhenFallenOn); + public BlockSandstoneStalactite(int id) { + super(id); setUnlocalizedName("sandstoneStalactiteBlock"); setTextureName(":sandstoneStructure"); } diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 83706b6..41307fb 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -6,7 +6,6 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,18 +18,14 @@ import cpw.mods.fml.relauncher.SideOnly; public abstract class BlockStalactite extends Block { - private int numOfStructures = 13; - private boolean solidStalactites; - private boolean damageWhenFallenOn; + private final int numOfStructures = 13; @SideOnly(Side.CLIENT) private Icon[] iconArray; - public BlockStalactite(int id, boolean solidStalactites, boolean damageWhenFallenOn) { + public BlockStalactite(int id) { super(id, Material.rock); this.setHardness(0.8F); this.setCreativeTab(WildCaves.tabWildCaves); - this.solidStalactites = solidStalactites; - this.damageWhenFallenOn = damageWhenFallenOn; } @Override @@ -73,7 +68,7 @@ public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int s @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { - if (solidStalactites) + if (WildCaves.solidStalactites) return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4); else return null; @@ -130,8 +125,8 @@ public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e @Override public void onFallenUpon(World world, int par2, int par3, int par4, Entity entity, float par6) { - if (entity.isEntityAlive() && damageWhenFallenOn) { - ((EntityLiving) entity).attackEntityFrom(DamageSource.generic, 5); + if (WildCaves.damageWhenFallenOn && entity.isEntityAlive()) { + entity.attackEntityFrom(DamageSource.generic, 5); } } diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index 562e29b..6946a48 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -5,8 +5,8 @@ import net.minecraft.block.Block; public class BlockStoneStalactite extends BlockStalactite { - public BlockStoneStalactite(int id, boolean solidStalactites, boolean damageWhenFallenOn) { - super(id, solidStalactites, damageWhenFallenOn); + public BlockStoneStalactite(int id) { + super(id); setUnlocalizedName("stoneStalactiteBlock"); setTextureName(":stoneStructure"); } diff --git a/wildCaves/ItemFossil.java b/wildCaves/ItemFossil.java new file mode 100644 index 0000000..daa794a --- /dev/null +++ b/wildCaves/ItemFossil.java @@ -0,0 +1,7 @@ +package wildCaves; + +public class ItemFossil extends MultiItemBlock { + public ItemFossil(int i) { + super(i, "fossil1"); + } +} diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index cdeb855..c90b934 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -25,10 +25,10 @@ public Icon getIconFromDamage(int damage) { } @Override - public int getMetadata(int damageValue) { - if (damageValue > 13) - damageValue = 13; - return damageValue; + public int getMetadata(int damage) { + if (damage >= block.getNumOfStructures()) + damage = block.getNumOfStructures() - 1; + return damage; } @Override diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 6132d6e..dd8537c 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -29,7 +29,7 @@ public class WildCaves { public static int timesPerChunck; private static int blockDecorationsID, blockFossilsID; public static int chanceForNodeToSpawn; - private boolean solidStalactites, damageWhenFallenOn; + public static boolean solidStalactites, damageWhenFallenOn; public static Configuration config; private EventManager eventmanager; public static CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { @@ -41,11 +41,11 @@ public ItemStack getIconItemStack() { public void initBlocks() { if (blockStoneStalactiteID > 0) { - blockStoneStalactite = new BlockStoneStalactite(blockStoneStalactiteID, solidStalactites, damageWhenFallenOn); + blockStoneStalactite = new BlockStoneStalactite(blockStoneStalactiteID); GameRegistry.registerBlock(blockStoneStalactite, ItemStoneStalactite.class, "StoneStalactite"); } if (blockSandStalactiteID > 0) { - blockSandStalactite = new BlockSandstoneStalactite(blockSandStalactiteID, solidStalactites, damageWhenFallenOn); + blockSandStalactite = new BlockSandstoneStalactite(blockSandStalactiteID); GameRegistry.registerBlock(blockSandStalactite, ItemSandstoneStalactite.class, "SandstoneSalactite"); } if (blockDecorationsID > 0) { @@ -58,7 +58,7 @@ public void initBlocks() { } if (blockFossilsID > 0) { blockFossils = new BlockFossils(blockFossilsID); - Item.itemsList[blockFossilsID] = new MultiItemBlock(blockFossilsID - 256, "fossil1").setUnlocalizedName("fossilBlock"); + GameRegistry.registerBlock(blockFossils, ItemFossil.class, "FossilBlock"); } } From b16dc4b4b474cf5fca5e51fc3b5ebe236b3ebb1d Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 14 Nov 2013 22:50:15 +0100 Subject: [PATCH 09/50] Fixed skulls --- wildCaves/WildCaves.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index dd8537c..1714ea8 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -53,7 +53,7 @@ public void initBlocks() { GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); } if (blockFloraID > 0) { - blockFlora = new BlockFlora(blockFloraID, floraLightLevel); + blockFlora = new BlockFlora(blockFloraID).setLightValue(floraLightLevel); GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); } if (blockFossilsID > 0) { @@ -73,7 +73,7 @@ public void load(FMLInitializationEvent event) { for (String txt : new String[] { "DUNGEON_CHEST", "MINESHAFT_CORRIDOR", "STRONGHOLD_CORRIDOR" }) { for (int i = 0; i < 5; i++) { if (i != 1) { - ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, 0), 1, 2, 50));//skeleton//zombie//steve//creeper + ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, i), 1, 2, 50));//skeleton//zombie//steve//creeper } } } From 55391d39dff5005cf7f75930fbbb3c149e5e25a1 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 14 Nov 2013 22:51:01 +0100 Subject: [PATCH 10/50] Added better inheritance-Removed "magic numbers" --- wildCaves/BlockDecorations.java | 278 ++++++++++-------------- wildCaves/BlockFlora.java | 245 +++++++++------------ wildCaves/BlockFossils.java | 12 +- wildCaves/BlockSandstoneStalactite.java | 2 +- wildCaves/BlockStalactite.java | 21 +- wildCaves/BlockStoneStalactite.java | 2 +- wildCaves/ItemDecoration.java | 16 +- wildCaves/ItemFlora.java | 16 +- wildCaves/ItemFossil.java | 4 +- wildCaves/ItemSandstoneStalactite.java | 8 +- wildCaves/ItemStalactite.java | 23 +- wildCaves/ItemStoneStalactite.java | 6 +- wildCaves/MultiItemBlock.java | 26 ++- 13 files changed, 268 insertions(+), 391 deletions(-) diff --git a/wildCaves/BlockDecorations.java b/wildCaves/BlockDecorations.java index 19f3f4d..58dd4b9 100644 --- a/wildCaves/BlockDecorations.java +++ b/wildCaves/BlockDecorations.java @@ -16,176 +16,126 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockDecorations extends Block -{ +public class BlockDecorations extends Block { @SideOnly(Side.CLIENT) private Icon[] iconArray; - private int numOfStructures=3; - - public BlockDecorations(int id) - { - super(id, Material.rock); - float f = 0.25F; - this.setCreativeTab(WildCaves.tabWildCaves); - setResistance(0.6F); - setUnlocalizedName("decorationsBlock"); - this.setStepSound(soundGlassFootstep); - } - - @Override - public int idDropped(int metadata, Random random, int par3) - { - return Block.ice.blockID; - } - - @Override - public int quantityDropped(Random rand) - { - return rand.nextInt(3)-1; - } - - @Override - public int damageDropped (int metadata) - { + private static final int numOfStructures = ItemDecoration.icicles.length; + + public BlockDecorations(int id) { + super(id, Material.rock); + this.setCreativeTab(WildCaves.tabWildCaves); + setResistance(0.6F); + setUnlocalizedName("decorationsBlock"); + this.setStepSound(soundGlassFootstep); + } + + @Override + public boolean canBlockStay(World world, int x, int y, int z) { + return world.isBlockNormalCube(x, y + 1, z) || world.getBlockId(x, y + 1, z) == Block.ice.blockID; + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + return super.canPlaceBlockAt(world, x, y, z) && canBlockStay(world, x, y, z); + } + + @Override + public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) { + return true; + } + + @Override + public int damageDropped(int metadata) { return 0; } - - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) - { - if(metadata >= numOfStructures) - metadata = numOfStructures-1; - return this.iconArray[metadata]; - } - - /** - * Get the block's damage value (for use with pick block). - */ - @Override - public int getDamageValue(World world, int x, int y, int z) - { - return world.getBlockMetadata(x, y, z); - } - - @Override - public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) - { - return true; - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - for (int i = 0; i < numOfStructures; ++i) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } - - @Override - public boolean canPlaceBlockAt(World world, int x, int y, int z) - { - return super.canPlaceBlockAt(world, x, y, z) && canBlockStay(world, x, y, z); - } - - @Override - public boolean canBlockStay(World world, int x, int y, int z) - { - return world.isBlockNormalCube(x, y+1, z) || world.getBlockId(x, y+1, z)==Block.ice.blockID; - } - - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) - { - if( !world.isRemote && !this.canBlockStay(world, x, y, z)) - { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); - } - } - - /** - * The type of render function that is called for this block - */ - @Override - public int getRenderType() - { - return 1; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - @Override - public boolean isOpaqueCube() - { - return false; - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - @Override - //Updates the blocks bounds based on its current state. Args: world, x, y, z - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - - switch(metadata) - { - case 1: - this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); - break; - case 2: - this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); - break; - case 9: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F,0.8F, 0.75F); - break; - case 10: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F,0.4F, 0.75F); - break; - default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); - break; - } - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side) - { - return this.iconArray[blockAccess.getBlockMetadata(x, y, z)]; - } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { + return null; + } + + @Override + public int getDamageValue(World world, int x, int y, int z) { + return world.getBlockMetadata(x, y, z); + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getIcon(int side, int metadata) { + if (metadata >= numOfStructures) + metadata = numOfStructures - 1; + return this.iconArray[metadata]; + } + + @Override + public int getRenderType() { + return 1; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + for (int i = 0; i < numOfStructures; ++i) { + par3List.add(new ItemStack(par1, 1, i)); + } + } + + @Override + public int idDropped(int metadata, Random random, int par3) { + return Block.ice.blockID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { + if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { + this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.setBlockToAir(x, y, z); + } + } + + @Override + public int quantityDropped(Random rand) { + return rand.nextInt(3) - 1; + } @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - this.iconArray = new Icon[numOfStructures]; - - for (int i = 0; i < this.iconArray.length; ++i) - { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":decorations"+ i); - } + public void registerIcons(IconRegister iconRegister) { + this.iconArray = new Icon[numOfStructures]; + for (int i = 0; i < this.iconArray.length; ++i) { + this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":decorations" + i); + } + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); + switch (metadata) { + case 1: + this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); + break; + case 2: + this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); + break; + case 9: + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); + break; + case 10: + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); + break; + default: + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + break; + } } } diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index 0047b15..83c7f7e 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -9,166 +9,127 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockFlora extends BlockFlower implements IShearable -{ - +public class BlockFlora extends BlockFlower implements IShearable { @SideOnly(Side.CLIENT) private Icon[] iconArray; - private int numOfStructures=10; - - public BlockFlora(int id, int floraLightLevel) - { - super(id, Material.plants); - float f = 0.25F; - this.setCreativeTab(WildCaves.tabWildCaves); - this.setTickRandomly(false); - this.setLightOpacity(0); - this.setStepSound(soundGrassFootstep); - setResistance(0.6F); - setLightValue(floraLightLevel); - setUnlocalizedName("floraBlock"); + private static final int numOfStructures = ItemFlora.caps.length; + + public BlockFlora(int id) { + super(id, Material.plants); + this.setCreativeTab(WildCaves.tabWildCaves); + this.setTickRandomly(false); + this.setLightOpacity(0); + this.setStepSound(soundGrassFootstep); + setResistance(0.6F); + setUnlocalizedName("floraBlock"); } - - + @Override - //Updates the blocks bounds based on its current state. Args: world, x, y, z - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - - - //setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ) - switch(metadata) - { - case 1: - this.setBlockBounds(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); - break; - case 2: - this.setBlockBounds(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); - break; - default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); - break; - } - } - + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + boolean result = false; + int metadata = world.getBlockMetadata(x, y, z); + int bellowId = world.getBlockId(x, y - 1, z); + int metadataBellow = world.getBlockMetadata(x, y - 1, z); + boolean solidBellow = world.isBlockNormalCube(x, y - 1, z); + if (solidBellow || bellowId == Block.ice.blockID || (bellowId == this.blockID && metadataBellow == 4)) { + result = true; + } + return result; + } + @Override - public int idDropped(int par1, Random par2Random, int par3) - { - return Item.glowstone.itemID; - } - - @Override - public int quantityDropped(Random rand) - { - return rand.nextInt(2); - } - - @Override - public int damageDropped (int metadata) - { + public int damageDropped(int metadata) { return 0; } - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - for (int i = 0; i < numOfStructures; ++i) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) - { - if(metadata >=numOfStructures) - metadata=numOfStructures-1; - return this.iconArray[metadata]; - } - - @Override - protected boolean canThisPlantGrowOnThisBlockID(int par1) - { - return true; - } - - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) - { - if(!this.canPlaceBlockAt(world, x, y, z)) - world.setBlock(x, y, z, 0); - } - - @Override - public boolean canPlaceBlockAt(World world, int x, int y, int z) - { - boolean result = false; - int metadata = world.getBlockMetadata(x, y, z); - int bellowId = world.getBlockId(x, y-1, z); - int metadataBellow = world.getBlockMetadata(x, y-1, z); - boolean solidBellow = world.isBlockNormalCube(x, y-1, z); - - if(solidBellow || bellowId == Block.ice.blockID || (bellowId==this.blockID && metadataBellow==4)) - { - result = true; - } - - return result; - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) - { - if(!this.canPlaceBlockAt(world, x, y, z)) - world.setBlock(x, y, z, 0); - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); - world.setBlockToAir(x, y, z); - return ret; - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side) - { - return this.iconArray[blockAccess.getBlockMetadata(x, y, z)]; - } - @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - this.iconArray = new Icon[numOfStructures]; - - for (int i = 0; i < this.iconArray.length; ++i) - { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":flora"+ i); - } + public Icon getIcon(int side, int metadata) { + if (metadata >= numOfStructures) + metadata = numOfStructures - 1; + return this.iconArray[metadata]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + for (int i = 0; i < numOfStructures; ++i) { + par3List.add(new ItemStack(par1, 1, i)); + } + } + + @Override + public int idDropped(int par1, Random par2Random, int par3) { + return Item.glowstone.itemID; + } + + @Override + public boolean isShearable(ItemStack item, World world, int x, int y, int z) { + return true; + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + if (!this.canPlaceBlockAt(world, x, y, z)) + world.setBlock(x, y, z, 0); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { + if (!this.canPlaceBlockAt(world, x, y, z)) + world.setBlock(x, y, z, 0); + } + + @Override + public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { + ArrayList ret = new ArrayList(); + ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); + world.setBlockToAir(x, y, z); + return ret; + } + + @Override + public int quantityDropped(Random rand) { + return rand.nextInt(2); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) { + this.iconArray = new Icon[numOfStructures]; + for (int i = 0; i < this.iconArray.length; ++i) { + this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":flora" + i); + } + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); + //setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ) + switch (metadata) { + case 1: + this.setBlockBounds(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); + break; + case 2: + this.setBlockBounds(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); + break; + default: + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + break; + } + } + + @Override + protected boolean canThisPlantGrowOnThisBlockID(int par1) { + return true; } } diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index 4299cda..3f6ee6b 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -13,13 +13,12 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; -import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockFossils extends Block { @SideOnly(Side.CLIENT) private Icon[] iconArray; - private int numOfStructures = 1; + private int numOfStructures = ItemFossil.fossils.length; public BlockFossils(int id) { super(id, Material.rock); @@ -39,15 +38,6 @@ public int damageDropped(int metadata) { return 0; } - @Override - @SideOnly(Side.CLIENT) - public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side) { - return this.iconArray[blockAccess.getBlockMetadata(x, y, z)]; - } - - /** - * Get the block's damage value (for use with pick block). - */ @Override public int getDamageValue(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); diff --git a/wildCaves/BlockSandstoneStalactite.java b/wildCaves/BlockSandstoneStalactite.java index d4c102b..ede383f 100644 --- a/wildCaves/BlockSandstoneStalactite.java +++ b/wildCaves/BlockSandstoneStalactite.java @@ -6,7 +6,7 @@ public class BlockSandstoneStalactite extends BlockStalactite { public BlockSandstoneStalactite(int id) { - super(id); + super(id, ItemSandstoneStalactite.sandStalacs.length); setUnlocalizedName("sandstoneStalactiteBlock"); setTextureName(":sandstoneStructure"); } diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 41307fb..2a3f7aa 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -18,12 +18,13 @@ import cpw.mods.fml.relauncher.SideOnly; public abstract class BlockStalactite extends Block { - private final int numOfStructures = 13; + private final int numOfStructures; @SideOnly(Side.CLIENT) private Icon[] iconArray; - public BlockStalactite(int id) { + public BlockStalactite(int id, int num) { super(id, Material.rock); + this.numOfStructures = num; this.setHardness(0.8F); this.setCreativeTab(WildCaves.tabWildCaves); } @@ -60,12 +61,6 @@ public boolean connected(World world, int x, int y, int z, boolean searchUp) { return world.isBlockNormalCube(x, y + i, z); } - @Override - @SideOnly(Side.CLIENT) - public Icon getBlockTexture(IBlockAccess blockAccess, int x, int y, int z, int side) { - return this.iconArray[blockAccess.getBlockMetadata(x, y, z)]; - } - @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { if (WildCaves.solidStalactites) @@ -82,15 +77,11 @@ public int getDamageValue(World world, int x, int y, int z) { @Override @SideOnly(Side.CLIENT) public Icon getIcon(int side, int metadata) { - if (metadata >= getNumOfStructures()) - metadata = getNumOfStructures() - 1; + if (metadata >= numOfStructures) + metadata = numOfStructures - 1; return this.iconArray[metadata]; } - public int getNumOfStructures() { - return numOfStructures; - } - @Override public int getRenderType() { return 1; @@ -140,7 +131,7 @@ public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister iconRegister) { - this.iconArray = new Icon[getNumOfStructures()]; + this.iconArray = new Icon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + getTextureName() + i); } diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index 6946a48..676a8ca 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -6,7 +6,7 @@ public class BlockStoneStalactite extends BlockStalactite { public BlockStoneStalactite(int id) { - super(id); + super(id, ItemStoneStalactite.stalacs.length); setUnlocalizedName("stoneStalactiteBlock"); setTextureName(":stoneStructure"); } diff --git a/wildCaves/ItemDecoration.java b/wildCaves/ItemDecoration.java index 2355268..4a46a31 100644 --- a/wildCaves/ItemDecoration.java +++ b/wildCaves/ItemDecoration.java @@ -1,20 +1,10 @@ package wildCaves; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.util.Icon; - public class ItemDecoration extends MultiItemBlock { + public static final String[] icicles = { "icicle1", "icicle2", "icicle3" }; + public ItemDecoration(int par1) { - super(par1, "icicle1", "icicle2", "icicle3"); + super(par1, WildCaves.blockDecorations, icicles); setUnlocalizedName("decorationsBlock"); } - - @SideOnly(Side.CLIENT) - @Override - public Icon getIconFromDamage(int damage) { - if (damage > 13) - damage = 13; - return WildCaves.blockDecorations.getIcon(0, damage); - } } diff --git a/wildCaves/ItemFlora.java b/wildCaves/ItemFlora.java index c1bf43c..8f887be 100644 --- a/wildCaves/ItemFlora.java +++ b/wildCaves/ItemFlora.java @@ -1,20 +1,10 @@ package wildCaves; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.util.Icon; - public class ItemFlora extends MultiItemBlock { + public static final String[] caps = { "glowcap1", "glowcap2", "glowcap3", "gloweed1", "glowcap4top", "glowcap4bottom", "bluecap1", "bluecap2", "bluecap3", "bluecap4" }; + public ItemFlora(int par1) { - super(par1, "glowcap1", "glowcap2", "glowcap3", "gloweed1", "glowcap4top", "glowcap4bottom", "bluecap1", "bluecap2", "bluecap3", "bluecap4"); + super(par1, WildCaves.blockFlora, caps); setUnlocalizedName("floraBlock"); } - - @SideOnly(Side.CLIENT) - @Override - public Icon getIconFromDamage(int damage) { - if (damage > 13) - damage = 13; - return WildCaves.blockFlora.getIcon(0, damage); - } } diff --git a/wildCaves/ItemFossil.java b/wildCaves/ItemFossil.java index daa794a..cb82dc7 100644 --- a/wildCaves/ItemFossil.java +++ b/wildCaves/ItemFossil.java @@ -1,7 +1,9 @@ package wildCaves; public class ItemFossil extends MultiItemBlock { + public static final String[] fossils = { "fossil1" }; + public ItemFossil(int i) { - super(i, "fossil1"); + super(i, WildCaves.blockFossils, fossils); } } diff --git a/wildCaves/ItemSandstoneStalactite.java b/wildCaves/ItemSandstoneStalactite.java index e9155b3..a596f9f 100644 --- a/wildCaves/ItemSandstoneStalactite.java +++ b/wildCaves/ItemSandstoneStalactite.java @@ -1,10 +1,12 @@ package wildCaves; public class ItemSandstoneStalactite extends ItemStalactite { + public static final String[] sandStalacs = { "sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", + "sandstoneStalactiteConnection2", "sandstoneStalactiteConnection3", "sandstoneStalactiteConnection4", "sandstoneStalactiteEnd", "sandstoneStalacmiteEnd", "sandstoneStalacmite1", + "sandstoneStalacmite2", "sandstoneStalacmite3" }; + public ItemSandstoneStalactite(int par1) { - super(par1, WildCaves.blockSandStalactite, "sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", - "sandstoneStalactiteConnection2", "sandstoneStalactiteConnection3", "sandstoneStalactiteConnection4", "sandstoneStalactiteEnd", "sandstoneStalacmiteEnd", "sandstoneStalacmite1", - "sandstoneStalacmite2", "sandstoneStalacmite3"); + super(par1, WildCaves.blockSandStalactite, sandStalacs); setUnlocalizedName("sandstoneStalactiteBlock"); } } diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index c90b934..5446ec0 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -1,34 +1,13 @@ package wildCaves; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; import net.minecraft.world.World; public abstract class ItemStalactite extends MultiItemBlock { - private BlockStalactite block; - public ItemStalactite(int par1, BlockStalactite block, String... names) { - super(par1, names); - this.block = block; - } - - @SideOnly(Side.CLIENT) - @Override - public Icon getIconFromDamage(int damage) { - if (damage >= block.getNumOfStructures()) - damage = block.getNumOfStructures() - 1; - return block.getIcon(0, damage); - } - - @Override - public int getMetadata(int damage) { - if (damage >= block.getNumOfStructures()) - damage = block.getNumOfStructures() - 1; - return damage; + super(par1, block, names); } @Override diff --git a/wildCaves/ItemStoneStalactite.java b/wildCaves/ItemStoneStalactite.java index b0dc273..90c92d4 100644 --- a/wildCaves/ItemStoneStalactite.java +++ b/wildCaves/ItemStoneStalactite.java @@ -1,9 +1,11 @@ package wildCaves; public class ItemStoneStalactite extends ItemStalactite { + public static final String[] stalacs = { "stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", + "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3" }; + public ItemStoneStalactite(int par1) { - super(par1, WildCaves.blockStoneStalactite, "stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", - "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3", "", "", "icicle"); + super(par1, WildCaves.blockStoneStalactite, stalacs); setUnlocalizedName("stoneStalactiteBlock"); } } diff --git a/wildCaves/MultiItemBlock.java b/wildCaves/MultiItemBlock.java index c152bd8..ea5e05d 100644 --- a/wildCaves/MultiItemBlock.java +++ b/wildCaves/MultiItemBlock.java @@ -1,20 +1,40 @@ package wildCaves; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; public class MultiItemBlock extends ItemBlock { private final String[] subNames; + private final Block block; - public MultiItemBlock(int par1, String... names) { + public MultiItemBlock(int par1, Block block, String... names) { super(par1); + this.block = block; this.subNames = names; setHasSubtypes(true); } + @SideOnly(Side.CLIENT) @Override - public int getMetadata(int damageValue) { - return damageValue; + public Icon getIconFromDamage(int damage) { + if (damage > getNumOfStructures()) + damage = getNumOfStructures() - 1; + return block.getIcon(0, damage); + } + + @Override + public int getMetadata(int damage) { + if (damage > getNumOfStructures()) + damage = getNumOfStructures() - 1; + return damage; + } + + public int getNumOfStructures() { + return subNames.length; } @Override From 056d3352871a527fab6ac2238c0be3203b6d6847 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 15 Nov 2013 00:05:26 +0100 Subject: [PATCH 11/50] Fixed mushroom lighting --- wildCaves/WildCaves.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 1714ea8..ce8c35e 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -53,7 +53,7 @@ public void initBlocks() { GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); } if (blockFloraID > 0) { - blockFlora = new BlockFlora(blockFloraID).setLightValue(floraLightLevel); + blockFlora = new BlockFlora(blockFloraID).setLightValue(floraLightLevel / 15); GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); } if (blockFossilsID > 0) { @@ -98,8 +98,7 @@ public void preInit(FMLPreInitializationEvent event) { damageWhenFallenOn = config.get(Configuration.CATEGORY_GENERAL, "Stalgmites damage entities when fallen on", false).getBoolean(false); floraLightLevel = config.get(Configuration.CATEGORY_GENERAL, "Flora light level", 5).getInt(5); if (floraLightLevel > 15) - floraLightLevel = 5; - floraLightLevel = 15 - floraLightLevel; //light level 5 in-game is level 10 in the code for some reason :V + floraLightLevel = 15; chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(5); } catch (Exception e) { FMLLog.log(Level.SEVERE, e, "WildCaves3 had a problem loading it's configuration"); From 4aad23fc7caad871fbcab50f277370e8776dccb5 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 29 Nov 2013 17:17:26 +0100 Subject: [PATCH 12/50] Cleaned things --- wildCaves/EventManager.java | 31 +++++++++---------- wildCaves/WorldGenWildCaves.java | 23 +++++--------- .../generation/biomeGen/GenerationNormal.java | 4 +-- .../structureGen/GenerateSkulls.java | 23 +++++++------- 4 files changed, 36 insertions(+), 45 deletions(-) diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index c362cc3..0016a7a 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -46,21 +46,20 @@ private void generateSurface(World world, Random random, int x, int z) **/ public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { - int maxPossY = minY + (maxY - 1); - assert maxY > minY: "The maximum Y must be greater than the Minimum Y"; - assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; - assert minY > 0: "addOreSpawn: The Minimum Y must be greater than 0"; - assert maxY < 256 && maxY > 0: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0"; - assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; - - int diffBtwnMinMaxY = maxY - minY; - WorldGenMinable mine = new WorldGenMinable(block.blockID, maxVeinSize); - for(int x = 0; x < chancesToSpawn; x++) - { - int posX = blockXPos + random.nextInt(maxX); - int posY = minY + random.nextInt(diffBtwnMinMaxY); - int posZ = blockZPos + random.nextInt(maxZ); - mine.generate(world, random, posX, posY, posZ); - } + assert maxY > minY: "The maximum Y must be greater than the Minimum Y"; + assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; + assert minY > 0: "addOreSpawn: The Minimum Y must be greater than 0"; + assert maxY < 256 && maxY > 0: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0"; + assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; + + int diffBtwnMinMaxY = maxY - minY; + WorldGenMinable mine = new WorldGenMinable(block.blockID, maxVeinSize); + for(int x = 0; x < chancesToSpawn; x++) + { + int posX = blockXPos + random.nextInt(maxX); + int posY = minY + random.nextInt(diffBtwnMinMaxY); + int posZ = blockZPos + random.nextInt(maxZ); + mine.generate(world, random, posX, posY, posZ); + } } } diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 6f2f359..057c548 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -5,18 +5,15 @@ import java.util.Random; import java.util.logging.Level; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraftforge.common.Configuration; import wildCaves.generation.biomeGen.GenerationArid; import wildCaves.generation.biomeGen.GenerationFrozen; import wildCaves.generation.biomeGen.GenerationHumid; import wildCaves.generation.biomeGen.GenerationJungle; import wildCaves.generation.biomeGen.GenerationNormal; -import wildCaves.generation.structureGen.GenerateFloodedCaves; -import wildCaves.generation.structureGen.GenerateStoneStalactite; - -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraftforge.common.Configuration; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.IWorldGenerator; @@ -40,15 +37,13 @@ public class WorldGenWildCaves implements IWorldGenerator { public static int maxLength; private static int timesPerChunck = 50; public static int maxGenHeightGlowcapNormal; - private static List dimensionBlacklist = new ArrayList(); - private static List blockWhiteList = new ArrayList(); - private GenerateStoneStalactite stalactiteGen; + private static List dimensionBlacklist = new ArrayList(); + private static List blockWhiteList = new ArrayList(); private static final GenerationJungle jungleGen = new GenerationJungle(); private static final GenerationHumid wetGen = new GenerationHumid(); private static final GenerationArid aridGen = new GenerationArid(); private static final GenerationNormal normalGen = new GenerationNormal(); private static final GenerationFrozen frozenGen = new GenerationFrozen(); - private GenerateFloodedCaves floodCave; public WorldGenWildCaves(Configuration config) { setConfig(config); @@ -56,17 +51,15 @@ public WorldGenWildCaves(Configuration config) { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { - boolean genStalactiteNow; int blockX = chunkX * 16; int blockZ = chunkZ * 16; int Xcoord; int Ycoord; int Zcoord; - int dist;// distance + //int dist;// distance BiomeGenBase biome; if (!dimensionBlacklist.contains(world.provider.dimensionId)) { for (int i = 0; i < timesPerChunck; i++) { - genStalactiteNow = true; Xcoord = blockX + random.nextInt(16); Ycoord = random.nextInt(maxGenHeight); Zcoord = blockZ + random.nextInt(16); @@ -78,7 +71,7 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP if (Ycoord > 10) { // getting the biome biome = world.getBiomeGenForCoords(blockX, blockZ); - dist = Utils.getNumEmptyBlocks(world, Xcoord, Ycoord, Zcoord); + //dist = Utils.getNumEmptyBlocks(world, Xcoord, Ycoord, Zcoord); if (biome.temperature <= 0.1f) frozenGen.generate(world, random, Xcoord, Ycoord, Zcoord); else if (biome.temperature > 1.5f && biome.rainfall < 0.1f) diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index 012bedc..cbc3f2d 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -19,9 +19,9 @@ public GenerationNormal() { @Override public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - float glowcapsAux = 0; + /*float glowcapsAux = 0; if (y < WorldGenWildCaves.maxGenHeightGlowcapNormal) - glowcapsAux = WorldGenWildCaves.probabilityGlowcaps; + glowcapsAux = WorldGenWildCaves.probabilityGlowcaps;*/ switch (Utils.weightedChoise(WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityStalactite, WorldGenWildCaves.probabilityGlowcaps, WorldGenWildCaves.probabilitySkulls, 0)) { case 1: diff --git a/wildCaves/generation/structureGen/GenerateSkulls.java b/wildCaves/generation/structureGen/GenerateSkulls.java index a2ab6d0..ddafa34 100644 --- a/wildCaves/generation/structureGen/GenerateSkulls.java +++ b/wildCaves/generation/structureGen/GenerateSkulls.java @@ -6,19 +6,18 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.world.World; -import wildCaves.Utils; -public class GenerateSkulls -{ - public static void generate(World world, Random random, int x, int y, int z, int numEmptyBlocks) - { - if(numEmptyBlocks > 0) - { - int auxY = y-numEmptyBlocks+1; - world.setBlock(x, auxY, z, Block.skull.blockID, 1, 2); - TileEntity skullTE = world.getBlockTileEntity(x, auxY, z); - //((TileEntitySkull)skullTE).setSkullType(0, ""); - ((TileEntitySkull)skullTE).setSkullRotation(random.nextInt(360)); +public class GenerateSkulls { + public static void generate(World world, Random random, int x, int y, int z, int numEmptyBlocks) { + if (numEmptyBlocks > 0) { + int auxY = y - numEmptyBlocks + 1; + if (auxY > 0) { + world.setBlock(x, auxY, z, Block.skull.blockID, 1, 2); + TileEntity skullTE = world.getBlockTileEntity(x, auxY, z); + if (skullTE instanceof TileEntitySkull) { + ((TileEntitySkull) skullTE).setSkullRotation(random.nextInt(360)); + } + } } } } From dfe2c32f2f354f74429858877d4686fb763fd845 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 13 Dec 2013 02:14:34 +0100 Subject: [PATCH 13/50] Added more checks for stalactites generation Should fix "floating" stalactites --- .../structureGen/GenerateSandstoneStalactites.java | 13 +++++++------ .../structureGen/GenerateStoneStalactite.java | 10 ++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index c9d3f46..78327ba 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -4,7 +4,6 @@ import wildCaves.Utils; import wildCaves.WildCaves; - import net.minecraft.block.Block; import net.minecraft.world.World; @@ -21,13 +20,15 @@ public static void generate(World world, Random random, int x, int y, int z, int int j = 0; // blocks placed int topMetadata = 0; int bottomMetadata = 0; - int topY = y; - int botY = y - distance + 1; + int topY = Math.max(y, y - distance + 1); + int botY = Math.min(y, y - distance + 1); int aux; //stalactite base - world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); - Utils.convertToSandType(world, random, x, topY, z); - j++; + if (!world.isAirBlock(x, topY + 1, z)) { + world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + Utils.convertToSandType(world, random, x, topY, z); + j++; + } // stalagmite base if (!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY - 1, z)) { aux = Utils.randomChoise(-1, 8, 9, 10); diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index ecd6df4..67729fe 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -19,12 +19,14 @@ public static void generate(World world, Random random, int x, int y, int z, int int j = 0; // blocks placed int topMetadata = 0; int bottomMetadata = 0; - int topY = y; - int botY = y - distance + 1; + int topY = Math.max(y, y - distance + 1); + int botY = Math.min(y, y - distance + 1); int aux; //stalactite base - world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); - j++; + if (!world.isAirBlock(x, topY + 1, z)) { + world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + j++; + } // stalagmite base if (!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY - 1, z)) { aux = Utils.randomChoise(-1, 8, 9, 10); From cee63313287b5a13d0b92ba36c34ea0b9fa004de Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 13 Dec 2013 02:15:21 +0100 Subject: [PATCH 14/50] Allowed updates for lighting --- wildCaves/BlockFlora.java | 1 - 1 file changed, 1 deletion(-) diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index 83c7f7e..bfdc4d2 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -26,7 +26,6 @@ public class BlockFlora extends BlockFlower implements IShearable { public BlockFlora(int id) { super(id, Material.plants); this.setCreativeTab(WildCaves.tabWildCaves); - this.setTickRandomly(false); this.setLightOpacity(0); this.setStepSound(soundGrassFootstep); setResistance(0.6F); From d5f390ce87a1266570302f6ef4b27238f4b93582 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 13 Dec 2013 02:15:34 +0100 Subject: [PATCH 15/50] Added dripping water particles --- wildCaves/BlockStoneStalactite.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index 676a8ca..0473a45 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -2,7 +2,10 @@ import java.util.Random; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.world.World; public class BlockStoneStalactite extends BlockStalactite { public BlockStoneStalactite(int id) { @@ -20,4 +23,23 @@ public int idDropped(int metadata, Random random, int par3) { public int quantityDropped(Random rand) { return rand.nextInt(3) - 1; } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random random) { + int l; + if (world.getBlockMetadata(x, y, z) < 4) { + boolean isWatered = world.getBlockMaterial(x, y + 2, z).isLiquid(); + int h = y; + while (world.getBlockId(x, h, z) == this.blockID) { + if (random.nextInt(5 + (isWatered ? 0 : 10)) == 0) { + double d0 = x + random.nextFloat(); + double d2 = z + random.nextFloat(); + double d1 = h + 0.05D + (d0 - x) * (d2 - z); + world.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D); + } + h--; + } + } + } } From 0cdd335daeac4635033ee8bca080c43aa68be531 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Wed, 8 Jan 2014 02:27:02 +0100 Subject: [PATCH 16/50] Derp fixes --- .gitignore | 228 ++---------------- WildCaves3.png | Bin 0 -> 9861 bytes build.gradle | 1 + mcmod.info | 21 ++ mcpmod.info | 17 -- .../GenerateSandstoneStalactites.java | 6 +- .../structureGen/GenerateStoneStalactite.java | 6 +- 7 files changed, 44 insertions(+), 235 deletions(-) create mode 100644 WildCaves3.png create mode 100644 build.gradle create mode 100644 mcmod.info delete mode 100644 mcpmod.info diff --git a/.gitignore b/.gitignore index b9d6bd9..98f617e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,215 +1,15 @@ -################# -## Eclipse -################# +#Ignore EVERYTHING +/* +/*/ + +#Except +!.gitignore +!build.gradle +!gradle* +!LICENSE.md +!README.md +!mcmod.info +!assets/* +!wildCaves/* +!WildCaves3.png -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg diff --git a/WildCaves3.png b/WildCaves3.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a5933391ec57d832bf7764a2397474578e4eb4 GIT binary patch literal 9861 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 literal 0 HcmV?d00001 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ff7a75f --- /dev/null +++ b/build.gradle @@ -0,0 +1 @@ +version = "1.0" \ No newline at end of file diff --git a/mcmod.info b/mcmod.info new file mode 100644 index 0000000..0a43567 --- /dev/null +++ b/mcmod.info @@ -0,0 +1,21 @@ +[ +{ + "modid": "wildcaves3", + "name": "Wild Caves 3", + "description": "This mod gives some much needed love to vanilla caves, adds stalactites, stalagmites, vines, glowing mushrooms, icicles and there's more to come.", + "mcversion": "1.6.4", + "version" : "0.4.3.5", + "url": "http://www.minecraftforum.net/topic/1554854-146forge-wildcaves-3-v032/", + "updateUrl": "", + "authors": [ + "Alexmania" + ], + "logoFile": "WildCaves3.png", + "screenshots": [ + ], + "parent":"", + "dependencies": [ + "MinecraftForge" + ] +} +] \ No newline at end of file diff --git a/mcpmod.info b/mcpmod.info deleted file mode 100644 index 9415410..0000000 --- a/mcpmod.info +++ /dev/null @@ -1,17 +0,0 @@ -[ -{ - "modid": "mcp", - "name": "Minecraft Coder Pack", - "description": "Modding toolkit to decompile and deobfuscate the Minecraft client and server files.", - "version": "8.04", - "mcversion": "1.6.2", - "logoFile": "/mcplogo.png", - "url": "http://mcp.ocean-labs.de/", - "updateUrl": "", - "authors": ["Searge", "ProfMobius", "IngisKahn", "Fesh0r", "ZeuX", "R4wk", "Others"], - "credits": "Made by the MCP team", - "parent": "", - "screenshots": [], - "dependencies": [] -} -] diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index 78327ba..0f52952 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -14,7 +14,9 @@ public static void generate(World world, Random random, int x, int y, int z, int if (world.getBlockId(x, y + 1, z) == Block.stone.blockID) world.setBlock(x, y + 1, z, blockId, 0, 2); if (distance == 1) { - world.setBlock(x, y, z, blockId, 0, 2); + if (!world.isAirBlock(x, y + 1, z)) { + world.setBlock(x, y, z, blockId, 0, 2); + } } else { int k = 0; // counter int j = 0; // blocks placed @@ -41,7 +43,7 @@ public static void generate(World world, Random random, int x, int y, int z, int Utils.convertToSandType(world, random, x, botY, z); } } - if (distance > 2) { + if (distance > 2 && j>2) { while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index 67729fe..527bfc7 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -13,7 +13,9 @@ public static void generate(World world, Random random, int x, int y, int z, int int blockId = WildCaves.blockStoneStalactite.blockID; if (distance == 1) { //x,y,z,blockID, metadate, set the last one to 2 - world.setBlock(x, y, y, blockId, 0, 2); + if (!world.isAirBlock(x, y + 1, z)) { + world.setBlock(x, y, z, blockId, 0, 2); + } } else { int k = 0; // counter int j = 0; // blocks placed @@ -36,7 +38,7 @@ public static void generate(World world, Random random, int x, int y, int z, int stalagmiteGenerated = true; } } - if (distance > 2) { + if (distance > 2 && j>2) { while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); From ee45fad73fa94c5edc745b59c50515c98929b7e6 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 9 Jan 2014 18:00:31 +0100 Subject: [PATCH 17/50] Stalactites will remove themselves in case of ... wrong placement. Fixed cases where long stalactites would generate without base --- build.gradle | 2 +- wildCaves/BlockStalactite.java | 13 +++++++++---- .../structureGen/GenerateSandstoneStalactites.java | 8 +++----- .../structureGen/GenerateStoneStalactite.java | 8 ++++---- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index ff7a75f..b0daa4a 100644 --- a/build.gradle +++ b/build.gradle @@ -1 +1 @@ -version = "1.0" \ No newline at end of file +version = "0.4.3.5" \ No newline at end of file diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 2a3f7aa..d2f8808 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -102,12 +102,17 @@ public boolean isOpaqueCube() { @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { - if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(this.blockID, 1, world.getBlockMetadata(x, y, z))); - world.setBlockToAir(x, y, z); - } + this.onBlockAdded(world, x, y, z); } + @Override + public void onBlockAdded(World world, int x, int y, int z) { + if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { + this.dropBlockAsItem_do(world, x, y, z, new ItemStack(this.blockID, 1, world.getBlockMetadata(x, y, z))); + world.setBlockToAir(x, y, z); + } + } + @Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { entity.motionX *= 0.7D; diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index 0f52952..6a641e5 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -11,8 +11,6 @@ public class GenerateSandstoneStalactites { public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; int blockId = WildCaves.blockSandStalactite.blockID; - if (world.getBlockId(x, y + 1, z) == Block.stone.blockID) - world.setBlock(x, y + 1, z, blockId, 0, 2); if (distance == 1) { if (!world.isAirBlock(x, y + 1, z)) { world.setBlock(x, y, z, blockId, 0, 2); @@ -20,8 +18,6 @@ public static void generate(World world, Random random, int x, int y, int z, int } else { int k = 0; // counter int j = 0; // blocks placed - int topMetadata = 0; - int bottomMetadata = 0; int topY = Math.max(y, y - distance + 1); int botY = Math.min(y, y - distance + 1); int aux; @@ -43,7 +39,9 @@ public static void generate(World world, Random random, int x, int y, int z, int Utils.convertToSandType(world, random, x, botY, z); } } - if (distance > 2 && j>2) { + if (j==2) { + int topMetadata = 0; + int bottomMetadata = 0; while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index 527bfc7..6deb5bd 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -12,15 +12,13 @@ public static void generate(World world, Random random, int x, int y, int z, int boolean stalagmiteGenerated = false; int blockId = WildCaves.blockStoneStalactite.blockID; if (distance == 1) { - //x,y,z,blockID, metadate, set the last one to 2 + //x,y,z,blockID, metadate, no update if (!world.isAirBlock(x, y + 1, z)) { world.setBlock(x, y, z, blockId, 0, 2); } } else { int k = 0; // counter int j = 0; // blocks placed - int topMetadata = 0; - int bottomMetadata = 0; int topY = Math.max(y, y - distance + 1); int botY = Math.min(y, y - distance + 1); int aux; @@ -38,7 +36,9 @@ public static void generate(World world, Random random, int x, int y, int z, int stalagmiteGenerated = true; } } - if (distance > 2 && j>2) { + if (j==2) { + int topMetadata = 0; + int bottomMetadata = 0; while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); From 13bd90ce527040111f3f5b8b5110b79e3ef8cc98 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Wed, 29 Jan 2014 00:55:43 +0100 Subject: [PATCH 18/50] Update for 1.7.2 --- build.gradle | 43 +++++- mcmod.info | 4 +- wildCaves/BlockDecorations.java | 77 +++++------ wildCaves/BlockFlora.java | 84 ++++++------ wildCaves/BlockFossils.java | 47 +++---- wildCaves/BlockSandstoneStalactite.java | 17 +-- wildCaves/BlockStalactite.java | 79 +++++------ wildCaves/BlockStoneStalactite.java | 23 ++-- wildCaves/EventManager.java | 24 ++-- wildCaves/ItemDecoration.java | 6 +- wildCaves/ItemFlora.java | 6 +- wildCaves/ItemFossil.java | 6 +- wildCaves/ItemSandstoneStalactite.java | 6 +- wildCaves/ItemStalactite.java | 29 ++-- wildCaves/ItemStoneStalactite.java | 6 +- wildCaves/MultiItemBlock.java | 10 +- wildCaves/Utils.java | 23 ++-- wildCaves/WildCaves.java | 88 ++++-------- wildCaves/WorldGenWildCaves.java | 127 ++++++++++-------- .../generation/biomeGen/GenerationArid.java | 4 +- .../generation/biomeGen/GenerationFrozen.java | 4 +- .../generation/biomeGen/GenerationHumid.java | 11 +- .../generation/biomeGen/GenerationJungle.java | 4 +- .../generation/biomeGen/GenerationNormal.java | 7 +- .../structureGen/GenerateFloodedCaves.java | 34 ++--- .../structureGen/GenerateGlowcaps.java | 8 +- .../structureGen/GenerateIceshrooms.java | 10 +- .../structureGen/GenerateIcicles.java | 8 +- .../GenerateSandstoneStalactites.java | 33 ++--- .../structureGen/GenerateSkulls.java | 8 +- .../structureGen/GenerateStoneStalactite.java | 29 ++-- .../structureGen/GenerateVines.java | 7 +- 32 files changed, 452 insertions(+), 420 deletions(-) diff --git a/build.gradle b/build.gradle index b0daa4a..4070866 100644 --- a/build.gradle +++ b/build.gradle @@ -1 +1,42 @@ -version = "0.4.3.5" \ No newline at end of file +buildscript { + repositories { + mavenCentral() + maven { + name = "forge" + url = "http://files.minecraftforge.net/maven" + } + maven { + name = "sonatype" + url = "https://oss.sonatype.org/content/repositories/snapshots/" + } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:1.1-SNAPSHOT' + } +} +apply plugin: 'forge' +minecraft { + version = "1.7.2-10.12.0.1019" + assetDir = "eclipse/assets" +} +version = "0.4.3.6(1.7.2)" +archivesBaseName = project.projectDir.name +sourceSets.main.java{srcDirs project.projectDir.getPath() exclude("build*", "bin/**" , ".*")} +sourceSets.main.resources{srcDirs project.projectDir.getPath() exclude("build*", "bin/**" , "*.*ml", "*3.i*", ".*")} +processResources { + // replace stuff in mcmod.info, nothing else + from(project.sourceSets.main.resources.srcDirs) { + include "mcmod.info" + // replace version and mcversion + expand([version:project.version, mcversion:project.minecraft.version]) + } + // copy images and lang files + from(project.sourceSets.main.resources.srcDirs) { + include "assets/**", "*WildCaves3.png", "*.md" + } +} +jar { + //Keep the jar as clean as possible + includeEmptyDirs = false + exclude('*.java', 'eclipse/**') +} \ No newline at end of file diff --git a/mcmod.info b/mcmod.info index 0a43567..c9a7d33 100644 --- a/mcmod.info +++ b/mcmod.info @@ -3,8 +3,8 @@ "modid": "wildcaves3", "name": "Wild Caves 3", "description": "This mod gives some much needed love to vanilla caves, adds stalactites, stalagmites, vines, glowing mushrooms, icicles and there's more to come.", - "mcversion": "1.6.4", - "version" : "0.4.3.5", + "mcversion": $mcversion, + "version" : $version, "url": "http://www.minecraftforum.net/topic/1554854-146forge-wildcaves-3-v032/", "updateUrl": "", "authors": [ diff --git a/wildCaves/BlockDecorations.java b/wildCaves/BlockDecorations.java index 58dd4b9..1d98741 100644 --- a/wildCaves/BlockDecorations.java +++ b/wildCaves/BlockDecorations.java @@ -5,12 +5,14 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Icon; +import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; @@ -18,25 +20,25 @@ public class BlockDecorations extends Block { @SideOnly(Side.CLIENT) - private Icon[] iconArray; + private IIcon[] iconArray; private static final int numOfStructures = ItemDecoration.icicles.length; - public BlockDecorations(int id) { - super(id, Material.rock); - this.setCreativeTab(WildCaves.tabWildCaves); - setResistance(0.6F); - setUnlocalizedName("decorationsBlock"); - this.setStepSound(soundGlassFootstep); + public BlockDecorations() { + super(Material.field_151576_e); + this.func_149647_a(WildCaves.tabWildCaves); + func_149752_b(0.6F); + func_149663_c("decorationsBlock"); + this.func_149672_a(field_149778_k); } @Override - public boolean canBlockStay(World world, int x, int y, int z) { - return world.isBlockNormalCube(x, y + 1, z) || world.getBlockId(x, y + 1, z) == Block.ice.blockID; + public boolean func_149718_j(World world, int x, int y, int z) { + return world.func_147439_a(x, y + 1, z).isNormalCube(world, x, y, z) || world.func_147439_a(x, y + 1, z) == Blocks.ice; } @Override - public boolean canPlaceBlockAt(World world, int x, int y, int z) { - return super.canPlaceBlockAt(world, x, y, z) && canBlockStay(world, x, y, z); + public boolean func_149742_c(World world, int x, int y, int z) { + return func_149718_j(world, x, y, z) && super.func_149742_c(world, x, y, z); } @Override @@ -45,96 +47,91 @@ public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, in } @Override - public int damageDropped(int metadata) { - return 0; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { + public AxisAlignedBB func_149668_a(World par1World, int par2, int par3, int par4) { return null; } @Override - public int getDamageValue(World world, int x, int y, int z) { + public int func_149643_k(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) { + public IIcon func_149691_a(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; } @Override - public int getRenderType() { + public int func_149645_b() { return 1; } @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public int idDropped(int metadata, Random random, int par3) { - return Block.ice.blockID; + public Item func_149650_a(int metadata, Random random, int par3) { + return Item.func_150898_a(Blocks.ice); } @Override - public boolean isOpaqueCube() { + public boolean func_149686_d() { return false; } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { - if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); + public void func_149695_a(World world, int x, int y, int z, Block block) { + if (!this.func_149718_j(world, x, y, z)){ + this.func_149697_b(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.func_147468_f(x, y, z); } } @Override - public int quantityDropped(Random rand) { + public int func_149745_a(Random rand) { return rand.nextInt(3) - 1; } @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) { - this.iconArray = new Icon[numOfStructures]; + public void func_149651_a(IIconRegister iconRegister) { + this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":decorations" + i); } } @Override - public boolean renderAsNormalBlock() { + public boolean func_149662_c() { return false; } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void func_149719_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); switch (metadata) { case 1: - this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); break; case 2: - this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); break; case 9: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); break; case 10: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); break; default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); break; } } diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index bfdc4d2..e2f050e 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -5,54 +5,56 @@ import java.util.Random; import net.minecraft.block.Block; +import net.minecraft.block.BlockBush; import net.minecraft.block.BlockFlower; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; +import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockFlora extends BlockFlower implements IShearable { +public class BlockFlora extends BlockBush implements IShearable { @SideOnly(Side.CLIENT) - private Icon[] iconArray; + private IIcon[] iconArray; private static final int numOfStructures = ItemFlora.caps.length; - public BlockFlora(int id) { - super(id, Material.plants); - this.setCreativeTab(WildCaves.tabWildCaves); - this.setLightOpacity(0); - this.setStepSound(soundGrassFootstep); - setResistance(0.6F); - setUnlocalizedName("floraBlock"); + public BlockFlora() { + super(Material.field_151585_k); + this.func_149647_a(WildCaves.tabWildCaves); + this.func_149713_g(0); + this.func_149672_a(field_149779_h); + func_149752_b(0.6F); + func_149663_c("floraBlock"); } @Override - public boolean canPlaceBlockAt(World world, int x, int y, int z) { + public boolean func_149718_j(World world, int x, int y, int z) { boolean result = false; - int metadata = world.getBlockMetadata(x, y, z); - int bellowId = world.getBlockId(x, y - 1, z); + Block bellowId = world.func_147439_a(x, y - 1, z); int metadataBellow = world.getBlockMetadata(x, y - 1, z); - boolean solidBellow = world.isBlockNormalCube(x, y - 1, z); - if (solidBellow || bellowId == Block.ice.blockID || (bellowId == this.blockID && metadataBellow == 4)) { + boolean solidBellow = world.func_147445_c(x, y - 1, z, false); + if (solidBellow || bellowId == Blocks.ice || (bellowId == this && metadataBellow == 4)) { result = true; } return result; } - @Override - public int damageDropped(int metadata) { - return 0; - } + @Override + public int func_149692_a(int meta){ + return 0; + } @Override @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) { + public IIcon func_149691_a(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; @@ -60,75 +62,75 @@ public Icon getIcon(int side, int metadata) { @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public int idDropped(int par1, Random par2Random, int par3) { - return Item.glowstone.itemID; + public Item func_149650_a(int par1, Random par2Random, int par3) { + return Items.glowstone_dust; } @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) { + public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) { return true; } @Override - public void onBlockAdded(World world, int x, int y, int z) { - if (!this.canPlaceBlockAt(world, x, y, z)) - world.setBlock(x, y, z, 0); + public void func_149855_e(World world, int x, int y, int z) { + if (!this.func_149718_j(world, x, y, z)) + world.func_147468_f(x, y, z); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { - if (!this.canPlaceBlockAt(world, x, y, z)) - world.setBlock(x, y, z, 0); + public void func_149695_a(World world, int x, int y, int z, Block blockID) { + if (!this.func_149718_j(world, x, y, z)) + world.func_147468_f(x, y, z); } @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { + public ArrayList onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) { ArrayList ret = new ArrayList(); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); - world.setBlockToAir(x, y, z); + ((World)world).func_147468_f(x, y, z); return ret; } @Override - public int quantityDropped(Random rand) { + public int func_149745_a(Random rand) { return rand.nextInt(2); } @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) { - this.iconArray = new Icon[numOfStructures]; + public void func_149651_a(IIconRegister iconRegister) { + this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":flora" + i); } } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void func_149719_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); //setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ) switch (metadata) { case 1: - this.setBlockBounds(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); + this.func_149676_a(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); break; case 2: - this.setBlockBounds(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); + this.func_149676_a(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); break; default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); break; } } @Override - protected boolean canThisPlantGrowOnThisBlockID(int par1) { + protected boolean func_149854_a(Block par1) { return true; } } diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index 3f6ee6b..d872556 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -7,25 +7,27 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; +import net.minecraft.util.IIcon; import net.minecraft.world.World; public class BlockFossils extends Block { @SideOnly(Side.CLIENT) - private Icon[] iconArray; + private IIcon[] iconArray; private int numOfStructures = ItemFossil.fossils.length; - public BlockFossils(int id) { - super(id, Material.rock); - this.setHardness(1F); - this.setCreativeTab(WildCaves.tabWildCaves); - setUnlocalizedName("fossilsBlock"); - this.setStepSound(soundStoneFootstep); + public BlockFossils() { + super(Material.field_151576_e); + this.func_149711_c(1F); + this.func_149647_a(WildCaves.tabWildCaves); + func_149663_c("fossilsBlock"); + this.func_149672_a(field_149780_i); } @Override @@ -34,18 +36,13 @@ public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, in } @Override - public int damageDropped(int metadata) { - return 0; - } - - @Override - public int getDamageValue(World world, int x, int y, int z) { + public int func_149643_k(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) { + public IIcon func_149691_a(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; @@ -53,36 +50,36 @@ public Icon getIcon(int side, int metadata) { @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public int idDropped(int metadata, Random random, int par3) { + public Item func_149650_a(int metadata, Random random, int par3) { int choise = Utils.weightedChoise(0.5f, 0.15f, 0.05f, 0.5f, 0, 0); - int result = 0; + Item result = null; switch (choise) { case 1: - result = Item.bone.itemID; + result = Items.bone; break; case 2: - result = Item.arrow.itemID; + result = Items.arrow; break; case 3: - result = Item.skull.itemID; + result = Items.skull; break; case 4: - result = Block.cobblestone.blockID; + result = Item.func_150898_a(Blocks.cobblestone); } return result; } @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) { - this.iconArray = new Icon[numOfStructures]; + public void func_149651_a(IIconRegister iconRegister) { + this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":fossils" + i); } diff --git a/wildCaves/BlockSandstoneStalactite.java b/wildCaves/BlockSandstoneStalactite.java index ede383f..4f48570 100644 --- a/wildCaves/BlockSandstoneStalactite.java +++ b/wildCaves/BlockSandstoneStalactite.java @@ -2,22 +2,23 @@ import java.util.Random; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; public class BlockSandstoneStalactite extends BlockStalactite { - public BlockSandstoneStalactite(int id) { - super(id, ItemSandstoneStalactite.sandStalacs.length); - setUnlocalizedName("sandstoneStalactiteBlock"); - setTextureName(":sandstoneStructure"); + public BlockSandstoneStalactite() { + super(ItemSandstoneStalactite.sandStalacs.length); + func_149663_c("sandstoneStalactiteBlock"); + func_149658_d(":sandstoneStructure"); } @Override - public int idDropped(int par1, Random par2Random, int par3) { - return Block.sandStone.blockID; + public Item func_149650_a(int par1, Random par2Random, int par3) { + return Item.func_150898_a(Blocks.sandstone); } @Override - public int quantityDropped(Random rand) { + public int func_149745_a(Random rand) { return rand.nextInt(3) - 1; } } diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index d2f8808..468ea8f 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -1,17 +1,20 @@ package wildCaves; import java.util.List; +import java.util.Random; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; -import net.minecraft.util.Icon; +import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; @@ -20,17 +23,17 @@ public abstract class BlockStalactite extends Block { private final int numOfStructures; @SideOnly(Side.CLIENT) - private Icon[] iconArray; + private IIcon[] iconArray; - public BlockStalactite(int id, int num) { - super(id, Material.rock); + public BlockStalactite(int num) { + super(Material.field_151576_e); this.numOfStructures = num; - this.setHardness(0.8F); - this.setCreativeTab(WildCaves.tabWildCaves); + this.func_149711_c(0.8F); + this.func_149647_a(WildCaves.tabWildCaves); } @Override - public boolean canBlockStay(World world, int x, int y, int z) { + public boolean func_149718_j(World world, int x, int y, int z) { boolean result = false; int metadata = world.getBlockMetadata(x, y, z); if ((metadata != 0 && metadata < 4) || metadata == 7 || metadata == 11) @@ -56,115 +59,115 @@ public boolean connected(World world, int x, int y, int z, boolean searchUp) { else increment = -1; i = increment; - while (world.getBlockId(x, y + i, z) == WildCaves.blockStoneStalactite.blockID || world.getBlockId(x, y + i, z) == WildCaves.blockSandStalactite.blockID) + while (world.func_147439_a(x, y + i, z) == WildCaves.blockStoneStalactite || world.func_147439_a(x, y + i, z) == WildCaves.blockSandStalactite) i = i + increment; - return world.isBlockNormalCube(x, y + i, z); + return world.func_147439_a(x, y + i, z).isNormalCube(world, x, y+i, z); } @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { + public AxisAlignedBB func_149668_a(World par1World, int par2, int par3, int par4) { if (WildCaves.solidStalactites) - return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4); + return super.func_149668_a(par1World, par2, par3, par4); else return null; } @Override - public int getDamageValue(World world, int x, int y, int z) { + public int func_149643_k(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int metadata) { + public IIcon func_149691_a(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; } @Override - public int getRenderType() { + public int func_149645_b() { return 1; } @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) { + public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public boolean isOpaqueCube() { + public boolean func_149686_d() { return false; } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { - this.onBlockAdded(world, x, y, z); + public void func_149689_a(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { + this.func_149674_a(world, x, y, z, null); } @Override - public void onBlockAdded(World world, int x, int y, int z) { - if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(this.blockID, 1, world.getBlockMetadata(x, y, z))); - world.setBlockToAir(x, y, z); + public void func_149674_a(World world, int x, int y, int z, Random random) { + if (!this.func_149718_j(world, x, y, z)){ + this.func_149697_b(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.func_147468_f(x, y, z); } } @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + public void func_149670_a(World world, int x, int y, int z, Entity entity) { entity.motionX *= 0.7D; entity.motionZ *= 0.7D; } @Override - public void onFallenUpon(World world, int par2, int par3, int par4, Entity entity, float par6) { + public void func_149746_a(World world, int par2, int par3, int par4, Entity entity, float par6) { if (WildCaves.damageWhenFallenOn && entity.isEntityAlive()) { entity.attackEntityFrom(DamageSource.generic, 5); } } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) { - if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { - world.destroyBlock(x, y, z, true); + public void func_149695_a(World world, int x, int y, int z, Block blockID) { + if (!world.isRemote && !this.func_149718_j(world, x, y, z)) { + world.func_147480_a(x, y, z, true); } } @Override @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) { - this.iconArray = new Icon[numOfStructures]; + public void func_149651_a(IIconRegister iconRegister) { + this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + getTextureName() + i); + this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + func_149641_N() + i); } } @Override - public boolean renderAsNormalBlock() { + public boolean func_149662_c() { return false; } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void func_149719_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); switch (metadata) { case 1: - this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); break; case 2: - this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); break; case 9: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); break; case 10: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); break; default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); break; } } diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index 0473a45..cf31b7d 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -4,34 +4,35 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; import net.minecraft.world.World; public class BlockStoneStalactite extends BlockStalactite { - public BlockStoneStalactite(int id) { - super(id, ItemStoneStalactite.stalacs.length); - setUnlocalizedName("stoneStalactiteBlock"); - setTextureName(":stoneStructure"); + public BlockStoneStalactite() { + super(ItemStoneStalactite.stalacs.length); + func_149663_c("stoneStalactiteBlock"); + func_149658_d(":stoneStructure"); } @Override - public int idDropped(int metadata, Random random, int par3) { - return Block.cobblestone.blockID; + public Item func_149650_a(int metadata, Random random, int par3) { + return Item.func_150898_a(Blocks.cobblestone); } @Override - public int quantityDropped(Random rand) { + public int func_149745_a(Random rand) { return rand.nextInt(3) - 1; } @Override @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random random) { + public void func_149734_b(World world, int x, int y, int z, Random random) { int l; if (world.getBlockMetadata(x, y, z) < 4) { - boolean isWatered = world.getBlockMaterial(x, y + 2, z).isLiquid(); + boolean isWatered = world.func_147439_a(x, y + 2, z).func_149688_o().isLiquid(); int h = y; - while (world.getBlockId(x, h, z) == this.blockID) { + while (world.func_147439_a(x, h, z) == this) { if (random.nextInt(5 + (isWatered ? 0 : 10)) == 0) { double d0 = x + random.nextFloat(); double d2 = z + random.nextFloat(); diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 0016a7a..13cc77a 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -32,17 +32,17 @@ private void generateSurface(World world, Random random, int x, int z) /** * Adds an Ore Spawn to Minecraft. Simply register all Ores to spawn with this method in your Generation method in your IWorldGeneration extending Class * - * @param The Block to spawn - * @param The World to spawn in - * @param A Random object for retrieving random positions within the world to spawn the Block - * @param An int for passing the X-Coordinate for the Generation method - * @param An int for passing the Z-Coordinate for the Generation method - * @param An int for setting the maximum X-Coordinate values for spawning on the X-Axis on a Per-Chunk basis - * @param An int for setting the maximum Z-Coordinate values for spawning on the Z-Axis on a Per-Chunk basis - * @param An int for setting the maximum size of a vein - * @param An int for the Number of chances available for the Block to spawn per-chunk - * @param An int for the minimum Y-Coordinate height at which this block may spawn - * @param An int for the maximum Y-Coordinate height at which this block may spawn + * @param block to spawn + * @param world to spawn in + * @param random object for retrieving random positions within the world to spawn the Block + * @param blockXPos the X-Coordinate for the Generation method + * @param blockZPos the Z-Coordinate for the Generation method + * @param maxX maximum X-Coordinate values for spawning on the X-Axis on a Per-Chunk basis + * @param maxZ maximum Z-Coordinate values for spawning on the Z-Axis on a Per-Chunk basis + * @param maxVeinSize maximum size of a vein + * @param chancesToSpawn Number of chances available for the Block to spawn per-chunk + * @param minY minimum Y-Coordinate height at which this block may spawn + * @param maxY maximum Y-Coordinate height at which this block may spawn **/ public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { @@ -53,7 +53,7 @@ public void addOreSpawn(Block block, World world, Random random, int blockXPos, assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; int diffBtwnMinMaxY = maxY - minY; - WorldGenMinable mine = new WorldGenMinable(block.blockID, maxVeinSize); + WorldGenMinable mine = new WorldGenMinable(block, maxVeinSize); for(int x = 0; x < chancesToSpawn; x++) { int posX = blockXPos + random.nextInt(maxX); diff --git a/wildCaves/ItemDecoration.java b/wildCaves/ItemDecoration.java index 4a46a31..3e5f3dc 100644 --- a/wildCaves/ItemDecoration.java +++ b/wildCaves/ItemDecoration.java @@ -1,10 +1,12 @@ package wildCaves; +import net.minecraft.block.Block; + public class ItemDecoration extends MultiItemBlock { public static final String[] icicles = { "icicle1", "icicle2", "icicle3" }; - public ItemDecoration(int par1) { - super(par1, WildCaves.blockDecorations, icicles); + public ItemDecoration(Block block) { + super(block, icicles); setUnlocalizedName("decorationsBlock"); } } diff --git a/wildCaves/ItemFlora.java b/wildCaves/ItemFlora.java index 8f887be..cd00a2a 100644 --- a/wildCaves/ItemFlora.java +++ b/wildCaves/ItemFlora.java @@ -1,10 +1,12 @@ package wildCaves; +import net.minecraft.block.Block; + public class ItemFlora extends MultiItemBlock { public static final String[] caps = { "glowcap1", "glowcap2", "glowcap3", "gloweed1", "glowcap4top", "glowcap4bottom", "bluecap1", "bluecap2", "bluecap3", "bluecap4" }; - public ItemFlora(int par1) { - super(par1, WildCaves.blockFlora, caps); + public ItemFlora(Block block) { + super(block, caps); setUnlocalizedName("floraBlock"); } } diff --git a/wildCaves/ItemFossil.java b/wildCaves/ItemFossil.java index cb82dc7..94669a3 100644 --- a/wildCaves/ItemFossil.java +++ b/wildCaves/ItemFossil.java @@ -1,9 +1,11 @@ package wildCaves; +import net.minecraft.block.Block; + public class ItemFossil extends MultiItemBlock { public static final String[] fossils = { "fossil1" }; - public ItemFossil(int i) { - super(i, WildCaves.blockFossils, fossils); + public ItemFossil(Block block) { + super(block, fossils); } } diff --git a/wildCaves/ItemSandstoneStalactite.java b/wildCaves/ItemSandstoneStalactite.java index a596f9f..0f0dcb1 100644 --- a/wildCaves/ItemSandstoneStalactite.java +++ b/wildCaves/ItemSandstoneStalactite.java @@ -1,12 +1,14 @@ package wildCaves; +import net.minecraft.block.Block; + public class ItemSandstoneStalactite extends ItemStalactite { public static final String[] sandStalacs = { "sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", "sandstoneStalactiteConnection2", "sandstoneStalactiteConnection3", "sandstoneStalactiteConnection4", "sandstoneStalactiteEnd", "sandstoneStalacmiteEnd", "sandstoneStalacmite1", "sandstoneStalacmite2", "sandstoneStalacmite3" }; - public ItemSandstoneStalactite(int par1) { - super(par1, WildCaves.blockSandStalactite, sandStalacs); + public ItemSandstoneStalactite(Block block) { + super(block, sandStalacs); setUnlocalizedName("sandstoneStalactiteBlock"); } } diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index 5446ec0..afcf667 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -2,21 +2,22 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public abstract class ItemStalactite extends MultiItemBlock { - public ItemStalactite(int par1, BlockStalactite block, String... names) { - super(par1, block, names); + public ItemStalactite(Block block, String... names) { + super(block, names); } @Override public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, World world, int x, int y, int z, int side, float par8, float par9, float par10) { - int blockId = world.getBlockId(x, y, z); - if (blockId == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1) { + Block blockId = world.func_147439_a(x, y, z); + if (blockId == Blocks.snow && (world.getBlockMetadata(x, y, z) & 7) < 1) { side = 1; - } else if (blockId != Block.vine.blockID && blockId != Block.tallGrass.blockID && blockId != Block.deadBush.blockID - && (Block.blocksList[blockId] == null || !Block.blocksList[blockId].isBlockReplaceable(world, x, y, z))) { + } else if (blockId != Blocks.vine && blockId != Blocks.tallgrass && blockId != Blocks.deadbush + && (blockId == Blocks.air || !blockId.isReplaceable(world, x, y, z))) { if (side == 0) { --y; } @@ -42,14 +43,14 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, Wor return false; } else if (y == 255) { return false; - } else if (world.canPlaceEntityOnSide(WildCaves.blockStoneStalactite.blockID, x, y, z, false, side, par2EntityPlayer, itemStack) - || world.canPlaceEntityOnSide(WildCaves.blockSandStalactite.blockID, x, y, z, false, side, par2EntityPlayer, itemStack)) { + } else if (world.func_147472_a(WildCaves.blockStoneStalactite, x, y, z, false, side, par2EntityPlayer, itemStack) + || world.func_147472_a(WildCaves.blockSandStalactite, x, y, z, false, side, par2EntityPlayer, itemStack)) { if (canPlace(itemStack, world, x, y, z)) { Block block = WildCaves.blockStoneStalactite; int j1 = this.getMetadata(itemStack.getItemDamage()); - int k1 = WildCaves.blockStoneStalactite.onBlockPlaced(world, x, y, z, side, par8, par9, par10, j1); + int k1 = block.func_149660_a(world, x, y, z, side, par8, par9, par10, j1); if (placeBlockAt(itemStack, par2EntityPlayer, world, x, y, z, side, par8, par9, par10, k1)) { - world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); + world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.field_149762_H.func_150496_b(), (block.field_149762_H.func_150497_c() + 1.0F) / 2.0F, block.field_149762_H.func_150494_d() * 0.8F); --itemStack.stackSize; } return true; @@ -63,10 +64,10 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, Wor private boolean canPlace(ItemStack itemStack, World world, int x, int y, int z) { boolean result = false; int metadata = getMetadata(itemStack.getItemDamage()); - boolean upNormal = world.isBlockNormalCube(x, y + 1, z); - boolean downNormal = world.isBlockNormalCube(x, y - 1, z); - boolean upStalactite = world.getBlockId(x, y + 1, z) == WildCaves.blockStoneStalactite.blockID || world.getBlockId(x, y + 1, z) == WildCaves.blockSandStalactite.blockID; - boolean downStalactite = world.getBlockId(x, y - 1, z) == WildCaves.blockStoneStalactite.blockID || world.getBlockId(x, y - 1, z) == WildCaves.blockSandStalactite.blockID; + boolean upNormal = world.func_147445_c(x, y + 1, z, false); + boolean downNormal = world.func_147445_c(x, y - 1, z, false); + boolean upStalactite = world.func_147439_a(x, y + 1, z) == WildCaves.blockStoneStalactite || world.func_147439_a(x, y + 1, z) == WildCaves.blockSandStalactite; + boolean downStalactite = world.func_147439_a(x, y - 1, z) == WildCaves.blockStoneStalactite || world.func_147439_a(x, y - 1, z) == WildCaves.blockSandStalactite; if ((metadata == 0 || metadata == 4 || metadata == 5) && (upNormal || downNormal || upStalactite || downStalactite)) result = true; else if ((metadata < 4 || metadata == 7 || metadata == 11) && (upNormal || upStalactite)) diff --git a/wildCaves/ItemStoneStalactite.java b/wildCaves/ItemStoneStalactite.java index 90c92d4..b79b81b 100644 --- a/wildCaves/ItemStoneStalactite.java +++ b/wildCaves/ItemStoneStalactite.java @@ -1,11 +1,13 @@ package wildCaves; +import net.minecraft.block.Block; + public class ItemStoneStalactite extends ItemStalactite { public static final String[] stalacs = { "stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3" }; - public ItemStoneStalactite(int par1) { - super(par1, WildCaves.blockStoneStalactite, stalacs); + public ItemStoneStalactite(Block block) { + super(block, stalacs); setUnlocalizedName("stoneStalactiteBlock"); } } diff --git a/wildCaves/MultiItemBlock.java b/wildCaves/MultiItemBlock.java index ea5e05d..e8f2243 100644 --- a/wildCaves/MultiItemBlock.java +++ b/wildCaves/MultiItemBlock.java @@ -5,14 +5,14 @@ import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; +import net.minecraft.util.IIcon; public class MultiItemBlock extends ItemBlock { private final String[] subNames; private final Block block; - public MultiItemBlock(int par1, Block block, String... names) { - super(par1); + public MultiItemBlock(Block block, String... names) { + super(block); this.block = block; this.subNames = names; setHasSubtypes(true); @@ -20,10 +20,10 @@ public MultiItemBlock(int par1, Block block, String... names) { @SideOnly(Side.CLIENT) @Override - public Icon getIconFromDamage(int damage) { + public IIcon getIconFromDamage(int damage) { if (damage > getNumOfStructures()) damage = getNumOfStructures() - 1; - return block.getIcon(0, damage); + return block.func_149691_a(0, damage); } @Override diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 74dbf1b..362bc24 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -3,6 +3,7 @@ import java.util.Random; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.world.World; public class Utils { @@ -14,15 +15,15 @@ public static void convertToFrozenType(World world, Random random, int x, int y, int newX = x - length / 2; int newY = y + height / 2; int newZ = z - width / 2; - int aux; + Block aux; for (int i = 0; i < height; i++) { for (int j = 0; j < length; j++) { for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.8f, 0.2f, 0, 0, 0, 0) == 1) { - aux = world.getBlockId(newX + j, newY - i, newZ + k); - if (aux == Block.stone.blockID || aux == Block.dirt.blockID || aux == Block.gravel.blockID || aux == Block.grass.blockID)// stone -> Ice - world.setBlock(newX + j, newY - i, newZ + k, Block.ice.blockID); + aux = world.func_147439_a(newX + j, newY - i, newZ + k); + if (aux == Blocks.stone || aux == Blocks.dirt || aux == Blocks.gravel || aux == Blocks.grass)// stone -> Ice + world.func_147449_b(newX + j, newY - i, newZ + k, Blocks.ice); } } } @@ -37,17 +38,17 @@ public static void convertToSandType(World world, Random random, int x, int y, i int newX = x - length / 2; int newY = y + height / 2; int newZ = z - width / 2; - int aux; + Block aux; for (int i = 0; i < height; i++) { for (int j = 0; j < length; j++) { for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.7f, 0.3f, 0, 0, 0, 0) == 1) { - aux = world.getBlockId(newX + j, newY - i, newZ + k); - if (aux == Block.stone.blockID)// stone -> sandstone - world.setBlock(newX + j, newY - i, newZ + k, Block.sandStone.blockID, 0, 2); - else if (aux == Block.dirt.blockID || aux == Block.gravel.blockID) // dirt/gravel -> sand - world.setBlock(newX + j, newY - i, newZ + k, Block.sand.blockID, 0, 2); + aux = world.func_147439_a(newX + j, newY - i, newZ + k); + if (aux == Blocks.stone)// stone -> sandstone + world.func_147465_d(newX + j, newY - i, newZ + k, Blocks.sandstone, 0, 2); + else if (aux == Blocks.dirt || aux == Blocks.gravel) // dirt/gravel -> sand + world.func_147465_d(newX + j, newY - i, newZ + k, Blocks.sand, 0, 2); } } } @@ -57,7 +58,7 @@ else if (aux == Block.dirt.blockID || aux == Block.gravel.blockID) // dirt/grave // gets the number of empty blocks between the current one and the closest one bellow public static int getNumEmptyBlocks(World world, int x, int y, int z) { int dist = 0; - while (!world.isBlockNormalCube(x, y, z) && y > 5 && world.getBlockTileEntity(x, y, z) == null) { + while (world.func_147437_c(x, y, z) && !world.func_147445_c(x, y, z, false) && y > 5) { y--; dist++; } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index ce8c35e..44d8238 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -1,109 +1,79 @@ package wildCaves; -import java.util.logging.Level; - import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; import net.minecraftforge.common.ChestGenHooks; -import net.minecraftforge.common.Configuration; -import cpw.mods.fml.common.FMLLog; +import net.minecraftforge.common.config.Configuration; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = WildCaves.modid, name = "Wild Caves 3", version = "0.4.3.5") -@NetworkMod(clientSideRequired = true) public class WildCaves { public static final String modid = "wildcaves3"; public static Block blockFlora, blockDecorations, blockFossils; public static BlockStoneStalactite blockStoneStalactite; public static BlockSandstoneStalactite blockSandStalactite; public static int floraLightLevel; - private static int blockStoneStalactiteID, blockSandStalactiteID, blockFloraID; public static int timesPerChunck; - private static int blockDecorationsID, blockFossilsID; public static int chanceForNodeToSpawn; public static boolean solidStalactites, damageWhenFallenOn; public static Configuration config; private EventManager eventmanager; public static CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { - @Override - public ItemStack getIconItemStack() { - return new ItemStack(Item.eyeOfEnder, 1, 0); - } - }; + @Override + public Item getTabIconItem() { + return Items.ender_eye; + } + }; public void initBlocks() { - if (blockStoneStalactiteID > 0) { - blockStoneStalactite = new BlockStoneStalactite(blockStoneStalactiteID); - GameRegistry.registerBlock(blockStoneStalactite, ItemStoneStalactite.class, "StoneStalactite"); - } - if (blockSandStalactiteID > 0) { - blockSandStalactite = new BlockSandstoneStalactite(blockSandStalactiteID); - GameRegistry.registerBlock(blockSandStalactite, ItemSandstoneStalactite.class, "SandstoneSalactite"); - } - if (blockDecorationsID > 0) { - blockDecorations = new BlockDecorations(blockDecorationsID); - GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); - } - if (blockFloraID > 0) { - blockFlora = new BlockFlora(blockFloraID).setLightValue(floraLightLevel / 15); - GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); - } - if (blockFossilsID > 0) { - blockFossils = new BlockFossils(blockFossilsID); - GameRegistry.registerBlock(blockFossils, ItemFossil.class, "FossilBlock"); - } + blockStoneStalactite = new BlockStoneStalactite(); + GameRegistry.registerBlock(blockStoneStalactite, ItemStoneStalactite.class, "StoneStalactite"); + blockSandStalactite = new BlockSandstoneStalactite(); + GameRegistry.registerBlock(blockSandStalactite, ItemSandstoneStalactite.class, "SandstoneSalactite"); + blockDecorations = new BlockDecorations(); + GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); + blockFlora = new BlockFlora().func_149715_a(floraLightLevel / 15); + GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); + blockFossils = new BlockFossils(); + GameRegistry.registerBlock(blockFossils, ItemFossil.class, "FossilBlock"); } @EventHandler public void load(FMLInitializationEvent event) { - initBlocks(); WorldGenWildCaves gen = new WorldGenWildCaves(config); if (gen.maxLength > 0) { - GameRegistry.registerWorldGenerator(gen); + GameRegistry.registerWorldGenerator(gen, 5); } //new itemstack(itemID, stackSize, damage) for (String txt : new String[] { "DUNGEON_CHEST", "MINESHAFT_CORRIDOR", "STRONGHOLD_CORRIDOR" }) { for (int i = 0; i < 5; i++) { if (i != 1) { - ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Item.skull.itemID, 1, i), 1, 2, 50));//skeleton//zombie//steve//creeper + ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Items.skull, 1, i), 1, 2, 50));//skeleton//zombie//steve//creeper } } } - if (blockFossilsID > 0) { - eventmanager = new EventManager(chanceForNodeToSpawn); - GameRegistry.registerWorldGenerator(eventmanager); - } + eventmanager = new EventManager(chanceForNodeToSpawn); + GameRegistry.registerWorldGenerator(eventmanager, 10); } @EventHandler public void preInit(FMLPreInitializationEvent event) { config = new Configuration(event.getSuggestedConfigurationFile()); - try { - config.load(); - //--block IDs-------- - blockStoneStalactiteID = config.getBlock("Stalactite ID", 600).getInt(600); - blockSandStalactiteID = config.getBlock("Sandstone Stalactite ID", 601).getInt(601); - blockFloraID = config.getBlock("Flora ID", 602).getInt(602); - blockDecorationsID = config.getBlock("Decorations ID", 603).getInt(603); - blockFossilsID = config.getBlock("Fossils ID", 604).getInt(604); - solidStalactites = config.get(Configuration.CATEGORY_GENERAL, "Solid stalactites/stalgmites", false).getBoolean(false); - damageWhenFallenOn = config.get(Configuration.CATEGORY_GENERAL, "Stalgmites damage entities when fallen on", false).getBoolean(false); - floraLightLevel = config.get(Configuration.CATEGORY_GENERAL, "Flora light level", 5).getInt(5); - if (floraLightLevel > 15) - floraLightLevel = 15; - chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(5); - } catch (Exception e) { - FMLLog.log(Level.SEVERE, e, "WildCaves3 had a problem loading it's configuration"); - } finally { - config.save(); - } + solidStalactites = config.get(Configuration.CATEGORY_GENERAL, "Solid stalactites/stalgmites", false).getBoolean(false); + damageWhenFallenOn = config.get(Configuration.CATEGORY_GENERAL, "Stalgmites damage entities when fallen on", false).getBoolean(false); + floraLightLevel = config.get(Configuration.CATEGORY_GENERAL, "Flora light level", 5).getInt(5); + if (floraLightLevel > 15) + floraLightLevel = 15; + chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(5); + config.save(); + initBlocks(); } } diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 057c548..c0ab8dd 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -3,24 +3,22 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import java.util.logging.Level; +import cpw.mods.fml.common.registry.GameData; +import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; -import net.minecraftforge.common.Configuration; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.config.Configuration; import wildCaves.generation.biomeGen.GenerationArid; import wildCaves.generation.biomeGen.GenerationFrozen; import wildCaves.generation.biomeGen.GenerationHumid; import wildCaves.generation.biomeGen.GenerationJungle; import wildCaves.generation.biomeGen.GenerationNormal; -import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.IWorldGenerator; public class WorldGenWildCaves implements IWorldGenerator { - private static boolean stalactites; - private static boolean sandstoneStalactites; - private static boolean Flora; public static float probabilityVinesJungle; public static float probabilityVines; public static float probabilityIcicle; @@ -38,7 +36,7 @@ public class WorldGenWildCaves implements IWorldGenerator { private static int timesPerChunck = 50; public static int maxGenHeightGlowcapNormal; private static List dimensionBlacklist = new ArrayList(); - private static List blockWhiteList = new ArrayList(); + private static List blockWhiteList = new ArrayList(); private static final GenerationJungle jungleGen = new GenerationJungle(); private static final GenerationHumid wetGen = new GenerationHumid(); private static final GenerationArid aridGen = new GenerationArid(); @@ -61,24 +59,24 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP if (!dimensionBlacklist.contains(world.provider.dimensionId)) { for (int i = 0; i < timesPerChunck; i++) { Xcoord = blockX + random.nextInt(16); - Ycoord = random.nextInt(maxGenHeight); Zcoord = blockZ + random.nextInt(16); + Ycoord = Math.min(world.getHeightValue(Xcoord, Zcoord)-1, random.nextInt(maxGenHeight)); // search for the first available spot - while (!(blockWhiteList.contains(world.getBlockId(Xcoord, Ycoord + 1, Zcoord)) && world.isAirBlock(Xcoord, Ycoord, Zcoord)) && Ycoord > 10) { + while (Ycoord > 10 && (!blockWhiteList.contains(world.func_147439_a(Xcoord, Ycoord + 1, Zcoord)) || !world.func_147437_c(Xcoord, Ycoord, Zcoord))) { Ycoord--; } // found a spot if (Ycoord > 10) { // getting the biome - biome = world.getBiomeGenForCoords(blockX, blockZ); + biome = world.getBiomeGenForCoords(Xcoord, Zcoord); //dist = Utils.getNumEmptyBlocks(world, Xcoord, Ycoord, Zcoord); - if (biome.temperature <= 0.1f) + if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FROZEN)) frozenGen.generate(world, random, Xcoord, Ycoord, Zcoord); else if (biome.temperature > 1.5f && biome.rainfall < 0.1f) aridGen.generate(world, random, Xcoord, Ycoord, Zcoord); - else if (biome.isHighHumidity() && biome.temperature > 1) + else if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.JUNGLE)) jungleGen.generate(world, random, Xcoord, Ycoord, Zcoord); - else if (biome.isHighHumidity() || biome == BiomeGenBase.ocean || biome == BiomeGenBase.river) + else if (biome.isHighHumidity() || BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.WATER)) wetGen.generate(world, random, Xcoord, Ycoord, Zcoord); else normalGen.generate(world, random, Xcoord, Ycoord, Zcoord); @@ -88,49 +86,64 @@ else if (biome.isHighHumidity() || biome == BiomeGenBase.ocean || biome == Biome } private static void setConfig(Configuration config) { - try { - config.load(); - // --generation permissions------ - sandstoneStalactites = config.get("Permissions", "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); - Flora = config.get("Permissions", "Generate flora on caves", true).getBoolean(true); - stalactites = config.get("Permissions", "Generate stalactites on caves", true).getBoolean(true); - String[] list = config.get("Permissions", "Dimension Blacklist", "-1,1").getString().split(","); - for (String txt : list) { - try { - dimensionBlacklist.add(Integer.parseInt(txt.trim())); - } catch (NumberFormatException n) { - } - } - list = config.get("Permissions", "Block white list", "1,2,3,4,13,14,15,16,21,24,56,73,74,79,80,82,97,129").getString().split(","); - for (String txt : list) { - try { - blockWhiteList.add(Integer.parseInt(txt.trim())); - } catch (NumberFormatException n) { - } - } - // --Biome specific ratios------ - probabilityVinesJungle = (float) config.get("Biome specific", "Probability of vines on jungle caves", 0.5).getDouble(0.5); - probabilityIcicle = (float) config.get("Biome specific", "Probability of iciles on frozen caves", 0.6).getDouble(0.6); - probabilityWet = (float) config.get("Biome specific", "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); - probabilityDry = (float) config.get("Biome specific", "Probability of less generation arid caves", 0.5).getDouble(0.5); - probabilityGlowcapsHumid = (float) config.get("Biome specific", "Probability of Glowing mushrooms on humid/jungle caves", 0.3).getDouble(0.3); - probabilityIceshrooms = (float) config.get("Biome specific", "Probability of Glowing Ice mushrooms on frozen caves", 0.3).getDouble(0.3); - probabilitySandStalactites = (float) config.get("Biome specific", "Probability of sandstone stalactites on arid caves", 0.5).getDouble(0.5); - // --General ratios------ - probabilityVines = (float) config.get("Non biome specific", "Probability of vines on caves", 0.1).getDouble(0.1); - probabilityGlowcaps = (float) config.get("Non biome specific", "Probability of glowing mushrooms on caves", 0.1).getDouble(0.1); - probabilityStalactite = (float) config.get("Non biome specific", "Probability of Stalactites/stalagmites", 0.5).getDouble(0.5); - probabilitySpiderWeb = (float) config.get("Non biome specific", "Probability of spider webs", 0.15).getDouble(0.15); - maxGenHeightGlowcapNormal = config.get("Non biome specific", "Max height at wich to generate glowcaps on normal biomes", 30).getInt(); - probabilitySkulls = (float) config.get("Non biome specific", "Probability of skulls", 0.0001).getDouble(0.0001); - // --other------ - timesPerChunck = config.get(Configuration.CATEGORY_GENERAL, "times to attemp generating per chunk", 40).getInt(); - maxGenHeight = config.get(Configuration.CATEGORY_GENERAL, "Max height at which to generate", 80).getInt(); - maxLength = config.get(Configuration.CATEGORY_GENERAL, "Max length of structure generation", 8).getInt(); - } catch (Exception e) { - FMLLog.log(Level.SEVERE, e, "WildCaves3 has a problem loading it's configuration"); - } finally { - config.save(); - } + // --generation permissions------ + boolean sandstoneStalactites = config.get("Permissions", "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); + boolean flora = config.get("Permissions", "Generate flora on caves", true).getBoolean(true); + boolean stalactites = config.get("Permissions", "Generate stalactites on caves", true).getBoolean(true); + String[] list = config.get("Permissions", "Dimension Blacklist", "-1,1").getString().split(","); + for (String txt : list) { + try { + dimensionBlacklist.add(Integer.parseInt(txt.trim())); + } catch (NumberFormatException n) { + } + } + list = config.get("Permissions", "Block white list", "stone,grass,dirt,cobblestone,gravel,gold_ore,iron_ore,coal_ore,lapis_ore,sandstone,diamond_ore,redstone_ore,lit_redstone_ore,ice,snow,clay,monster_egg,emerald_ore").getString().split(","); + Block block; + for (String txt : list) { + try { + block = GameData.blockRegistry.getObject(txt.trim()); + if(block!=null){ + blockWhiteList.add(block); + } + } catch (Exception n) { + } + } + // --Biome specific ratios------ + probabilityVinesJungle = (float) config.get("Biome specific", "Probability of vines on jungle caves", 0.5).getDouble(0.5); + probabilityIcicle = (float) config.get("Biome specific", "Probability of icicles on frozen caves", 0.6).getDouble(0.6); + probabilityWet = (float) config.get("Biome specific", "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); + probabilityDry = (float) config.get("Biome specific", "Probability of less generation arid caves", 0.5).getDouble(0.5); + probabilityGlowcapsHumid = (float) config.get("Biome specific", "Probability of Glowing mushrooms on humid/jungle caves", 0.3).getDouble(0.3); + probabilityIceshrooms = (float) config.get("Biome specific", "Probability of Glowing Ice mushrooms on frozen caves", 0.3).getDouble(0.3); + probabilitySandStalactites = (float) config.get("Biome specific", "Probability of sandstone stalactites on arid caves", 0.5).getDouble(0.5); + // --General ratios------ + probabilityVines = (float) config.get("Non biome specific", "Probability of vines on caves", 0.1).getDouble(0.1); + probabilityGlowcaps = (float) config.get("Non biome specific", "Probability of glowing mushrooms on caves", 0.1).getDouble(0.1); + probabilityStalactite = (float) config.get("Non biome specific", "Probability of Stalactites/stalagmites", 0.5).getDouble(0.5); + probabilitySpiderWeb = (float) config.get("Non biome specific", "Probability of spider webs", 0.15).getDouble(0.15); + maxGenHeightGlowcapNormal = config.get("Non biome specific", "Max height at which to generate glowcaps on normal biomes", 30).getInt(); + probabilitySkulls = (float) config.get("Non biome specific", "Probability of skulls", 0.0001).getDouble(0.0001); + if(!sandstoneStalactites){ + probabilitySandStalactites = 0; + } + if(!flora){ + probabilityGlowcaps = 0; + probabilityVinesJungle = 0; + probabilityGlowcapsHumid = 0; + probabilityIceshrooms = 0; + probabilityVines = 0; + probabilityGlowcaps = 0; + } + if(!stalactites){ + probabilityStalactite = 0; + probabilitySandStalactites = 0; + } + // --other------ + timesPerChunck = config.get(Configuration.CATEGORY_GENERAL, "times to attempt generating per chunk", 40).getInt(); + maxGenHeight = config.get(Configuration.CATEGORY_GENERAL, "Max height at which to generate", 80).getInt(); + maxLength = config.get(Configuration.CATEGORY_GENERAL, "Max length of structure generation", 8).getInt(); + if(config.hasChanged()){ + config.save(); + } } } diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 9dab3ed..0635a2c 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -2,7 +2,7 @@ import java.util.Random; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; @@ -25,7 +25,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.setBlock(x, y, z, Block.web.blockID); + world.func_147465_d(x, y, z, Blocks.web, 0, 2); success = true; break; case 3: diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index bd9e1d1..d03faf1 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -2,7 +2,7 @@ import java.util.Random; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; @@ -26,7 +26,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.setBlock(x, y, z, Block.web.blockID); + world.func_147465_d(x, y, z, Blocks.web, 0, 2); success = true; break; case 3: diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index 9624f9b..1f16c33 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -2,15 +2,12 @@ import java.util.Random; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.GenerateGlowcaps; -import wildCaves.generation.structureGen.GenerateSkulls; -import wildCaves.generation.structureGen.GenerateStoneStalactite; -import wildCaves.generation.structureGen.GenerateVines; +import wildCaves.generation.structureGen.*; public class GenerationHumid extends WorldGenerator { public GenerationHumid() { @@ -26,7 +23,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.setBlock(x, y + 1, z, Block.waterMoving.blockID); + GenerateFloodedCaves.generate(world, random, x, y, z); success = true; break; case 3: @@ -34,7 +31,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 4: - world.setBlock(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Block.web.blockID); + world.func_147465_d(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Blocks.web, 0, 2); break; case 5: GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index 8b10eed..bf00773 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -2,6 +2,7 @@ import java.util.Random; +import net.minecraft.init.Blocks; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.GenerateGlowcaps; @@ -9,7 +10,6 @@ import wildCaves.generation.structureGen.GenerateStoneStalactite; import wildCaves.generation.structureGen.GenerateVines; -import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; @@ -31,7 +31,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 3: - world.setBlock(x, y, z, Block.web.blockID); + world.func_147465_d(x, y, z, Blocks.web, 0, 2); break; case 4: GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index cbc3f2d..751b5b2 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -2,7 +2,7 @@ import java.util.Random; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; @@ -19,9 +19,6 @@ public GenerationNormal() { @Override public boolean generate(World world, Random random, int x, int y, int z) { boolean success = false; - /*float glowcapsAux = 0; - if (y < WorldGenWildCaves.maxGenHeightGlowcapNormal) - glowcapsAux = WorldGenWildCaves.probabilityGlowcaps;*/ switch (Utils.weightedChoise(WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityStalactite, WorldGenWildCaves.probabilityGlowcaps, WorldGenWildCaves.probabilitySkulls, 0)) { case 1: @@ -29,7 +26,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.setBlock(x, y, z, Block.web.blockID); + world.func_147465_d(x, y, z, Blocks.web, 0, 2); break; case 3: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); diff --git a/wildCaves/generation/structureGen/GenerateFloodedCaves.java b/wildCaves/generation/structureGen/GenerateFloodedCaves.java index 5842c48..eacdcb9 100644 --- a/wildCaves/generation/structureGen/GenerateFloodedCaves.java +++ b/wildCaves/generation/structureGen/GenerateFloodedCaves.java @@ -2,31 +2,31 @@ import java.util.Random; +import net.minecraft.init.Blocks; import wildCaves.Utils; -import net.minecraft.block.Block; import net.minecraft.world.World; public class GenerateFloodedCaves { public static void generate(World world, Random random, int x, int y, int z) { - int distance = Utils.getNumEmptyBlocks(world, x, y, z); - if(distance > 3) - { - y -= (distance/3)*2; - - int i=0, j=0; - while ((world.isAirBlock(x, y, z) || world.getBlockId(x, y, z) != Block.waterMoving.blockID)&&i<30) - { - while((world.isAirBlock(x, y, z) || world.getBlockId(x, y, z) != Block.waterMoving.blockID)&&j<30) - { - world.setBlock(x, y, z, Block.waterStill.blockID); - z--; - j++; - } - i++; - x--; + int blocks = 0; + for(int i=x-3;i 400) + return; + } + } + if(blocks > 150){ + y -= (Utils.getNumEmptyBlocks(world, x, y, z)/3)*2; + for(int i=x-3;i= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { + while (k < maxLength && topY >= botY && j < distance && !world.func_147439_a(x, topY - 1, z).func_149688_o().isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); bottomMetadata = world.getBlockMetadata(x, botY, z); topY--; botY++; // Expand downwards - if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { + if (world.func_147437_c(x, topY, z) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); if (aux != 4) - world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); + world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); else - world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); + world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); j++; } // Expand upwards - if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { + if (world.func_147437_c(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); if (aux != 4) - world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); + world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); else - world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); + world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); j++; } } diff --git a/wildCaves/generation/structureGen/GenerateSkulls.java b/wildCaves/generation/structureGen/GenerateSkulls.java index ddafa34..9037805 100644 --- a/wildCaves/generation/structureGen/GenerateSkulls.java +++ b/wildCaves/generation/structureGen/GenerateSkulls.java @@ -2,7 +2,7 @@ import java.util.Random; -import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.world.World; @@ -12,10 +12,10 @@ public static void generate(World world, Random random, int x, int y, int z, int if (numEmptyBlocks > 0) { int auxY = y - numEmptyBlocks + 1; if (auxY > 0) { - world.setBlock(x, auxY, z, Block.skull.blockID, 1, 2); - TileEntity skullTE = world.getBlockTileEntity(x, auxY, z); + world.func_147465_d(x, auxY, z, Blocks.skull, 1, 2); + TileEntity skullTE = world.func_147438_o(x, auxY, z); if (skullTE instanceof TileEntitySkull) { - ((TileEntitySkull) skullTE).setSkullRotation(random.nextInt(360)); + ((TileEntitySkull) skullTE).func_145903_a(random.nextInt(360));//set rotation } } } diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index 6deb5bd..4f7ac52 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -2,6 +2,7 @@ import java.util.Random; +import net.minecraft.block.Block; import wildCaves.Utils; import wildCaves.WildCaves; @@ -10,11 +11,11 @@ public class GenerateStoneStalactite { public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; - int blockId = WildCaves.blockStoneStalactite.blockID; + Block blockId = WildCaves.blockStoneStalactite; if (distance == 1) { //x,y,z,blockID, metadate, no update - if (!world.isAirBlock(x, y + 1, z)) { - world.setBlock(x, y, z, blockId, 0, 2); + if (!world.func_147437_c(x, y + 1, z)) { + world.func_147465_d(x, y, z, blockId, 0, 2); } } else { int k = 0; // counter @@ -23,15 +24,15 @@ public static void generate(World world, Random random, int x, int y, int z, int int botY = Math.min(y, y - distance + 1); int aux; //stalactite base - if (!world.isAirBlock(x, topY + 1, z)) { - world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + if (!world.func_147437_c(x, topY + 1, z)) { + world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); j++; } // stalagmite base - if (!world.getBlockMaterial(x, botY, z).isLiquid() && !world.isAirBlock(x, botY - 1, z)) { + if (!world.func_147439_a(x, botY, z).func_149688_o().isLiquid() && !world.func_147437_c(x, botY - 1, z)) { aux = Utils.randomChoise(-1, 8, 9, 10); if (aux != -1) { - world.setBlock(x, botY, z, blockId, aux, 2); + world.func_147465_d(x, botY, z, blockId, aux, 2); j++; stalagmiteGenerated = true; } @@ -39,28 +40,28 @@ public static void generate(World world, Random random, int x, int y, int z, int if (j==2) { int topMetadata = 0; int bottomMetadata = 0; - while (k < maxLength && topY >= botY && j < distance && !world.getBlockMaterial(x, topY - 1, z).isLiquid()) { + while (k < maxLength && topY >= botY && j < distance && !world.func_147439_a(x, topY - 1, z).func_149688_o().isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); bottomMetadata = world.getBlockMetadata(x, botY, z); topY--; botY++; // Expand downwards - if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { + if (world.func_147437_c(x, topY, z) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); if (aux != 4) - world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); + world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); else - world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); + world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); j++; } // Expand upwards - if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { + if (world.func_147437_c(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); if (aux != 4) - world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); + world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); else - world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); + world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); j++; } } diff --git a/wildCaves/generation/structureGen/GenerateVines.java b/wildCaves/generation/structureGen/GenerateVines.java index 58fc02d..0c42d07 100644 --- a/wildCaves/generation/structureGen/GenerateVines.java +++ b/wildCaves/generation/structureGen/GenerateVines.java @@ -2,11 +2,10 @@ import java.util.Random; +import net.minecraft.init.Blocks; import wildCaves.Utils; -import net.minecraft.block.Block; import net.minecraft.util.Direction; -import net.minecraft.util.Facing; import net.minecraft.world.World; public class GenerateVines @@ -29,9 +28,9 @@ public static boolean generate(World world, Random random, int x, int y, int z) // length of the vine int i=0; - while(i Date: Sat, 22 Feb 2014 22:46:29 +0100 Subject: [PATCH 19/50] Updated mappings --- build.gradle | 13 ++-- wildCaves/BlockDecorations.java | 60 ++++++++--------- wildCaves/BlockFlora.java | 55 ++++++++------- wildCaves/BlockFossils.java | 22 +++--- wildCaves/BlockSandstoneStalactite.java | 10 +-- wildCaves/BlockStalactite.java | 67 ++++++++++--------- wildCaves/BlockStoneStalactite.java | 16 ++--- wildCaves/ItemStalactite.java | 18 ++--- wildCaves/MultiItemBlock.java | 2 +- wildCaves/Utils.java | 12 ++-- wildCaves/WildCaves.java | 2 +- wildCaves/WorldGenWildCaves.java | 2 +- .../generation/biomeGen/GenerationArid.java | 2 +- .../generation/biomeGen/GenerationFrozen.java | 2 +- .../generation/biomeGen/GenerationHumid.java | 2 +- .../generation/biomeGen/GenerationJungle.java | 2 +- .../generation/biomeGen/GenerationNormal.java | 2 +- .../structureGen/GenerateFloodedCaves.java | 4 +- .../structureGen/GenerateGlowcaps.java | 8 +-- .../structureGen/GenerateIceshrooms.java | 8 +-- .../structureGen/GenerateIcicles.java | 6 +- .../GenerateSandstoneStalactites.java | 30 ++++----- .../structureGen/GenerateSkulls.java | 4 +- .../structureGen/GenerateStoneStalactite.java | 26 +++---- .../structureGen/GenerateVines.java | 4 +- 25 files changed, 188 insertions(+), 191 deletions(-) diff --git a/build.gradle b/build.gradle index 4070866..9e81f7b 100644 --- a/build.gradle +++ b/build.gradle @@ -16,13 +16,13 @@ buildscript { } apply plugin: 'forge' minecraft { - version = "1.7.2-10.12.0.1019" + version = "1.7.2-10.12.0.1032" assetDir = "eclipse/assets" } version = "0.4.3.6(1.7.2)" archivesBaseName = project.projectDir.name -sourceSets.main.java{srcDirs project.projectDir.getPath() exclude("build*", "bin/**" , ".*")} -sourceSets.main.resources{srcDirs project.projectDir.getPath() exclude("build*", "bin/**" , "*.*ml", "*3.i*", ".*")} +sourceSets.main.java{srcDirs project.projectDir.getPath() include("wildCaves/**")} +sourceSets.main.resources{srcDirs project.projectDir.getPath() include("assets/**" , "*.png", "*.info", "*.md")} processResources { // replace stuff in mcmod.info, nothing else from(project.sourceSets.main.resources.srcDirs) { @@ -32,11 +32,6 @@ processResources { } // copy images and lang files from(project.sourceSets.main.resources.srcDirs) { - include "assets/**", "*WildCaves3.png", "*.md" + include "assets/**", "*.png", "*.md" } -} -jar { - //Keep the jar as clean as possible - includeEmptyDirs = false - exclude('*.java', 'eclipse/**') } \ No newline at end of file diff --git a/wildCaves/BlockDecorations.java b/wildCaves/BlockDecorations.java index 1d98741..156e466 100644 --- a/wildCaves/BlockDecorations.java +++ b/wildCaves/BlockDecorations.java @@ -24,21 +24,21 @@ public class BlockDecorations extends Block { private static final int numOfStructures = ItemDecoration.icicles.length; public BlockDecorations() { - super(Material.field_151576_e); - this.func_149647_a(WildCaves.tabWildCaves); - func_149752_b(0.6F); - func_149663_c("decorationsBlock"); - this.func_149672_a(field_149778_k); + super(Material.rock); + this.setCreativeTab(WildCaves.tabWildCaves); + setResistance(0.6F); + setBlockName("decorationsBlock"); + this.setStepSound(soundTypeGlass); } @Override - public boolean func_149718_j(World world, int x, int y, int z) { - return world.func_147439_a(x, y + 1, z).isNormalCube(world, x, y, z) || world.func_147439_a(x, y + 1, z) == Blocks.ice; + public boolean canBlockStay(World world, int x, int y, int z) { + return world.getBlock(x, y + 1, z).isNormalCube(world, x, y, z) || world.getBlock(x, y + 1, z) == Blocks.ice; } @Override - public boolean func_149742_c(World world, int x, int y, int z) { - return func_149718_j(world, x, y, z) && super.func_149742_c(world, x, y, z); + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + return canBlockStay(world, x, y, z) && super.canPlaceBlockAt(world, x, y, z); } @Override @@ -47,62 +47,62 @@ public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, in } @Override - public AxisAlignedBB func_149668_a(World par1World, int par2, int par3, int par4) { + public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { return null; } @Override - public int func_149643_k(World world, int x, int y, int z) { + public int getDamageValue(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override @SideOnly(Side.CLIENT) - public IIcon func_149691_a(int side, int metadata) { + public IIcon getIcon(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; } @Override - public int func_149645_b() { + public int getRenderType() { return 1; } @Override @SideOnly(Side.CLIENT) - public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public Item func_149650_a(int metadata, Random random, int par3) { - return Item.func_150898_a(Blocks.ice); + public Item getItemDropped(int metadata, Random random, int par3) { + return Item.getItemFromBlock(Blocks.ice); } @Override - public boolean func_149686_d() { + public boolean renderAsNormalBlock() { return false; } @Override - public void func_149695_a(World world, int x, int y, int z, Block block) { - if (!this.func_149718_j(world, x, y, z)){ - this.func_149697_b(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.func_147468_f(x, y, z); + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + if (!this.canBlockStay(world, x, y, z)){ + this.onBlockEventReceived(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.setBlockToAir(x, y, z); } } @Override - public int func_149745_a(Random rand) { + public int quantityDropped(Random rand) { return rand.nextInt(3) - 1; } @Override @SideOnly(Side.CLIENT) - public void func_149651_a(IIconRegister iconRegister) { + public void registerBlockIcons(IIconRegister iconRegister) { this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":decorations" + i); @@ -110,28 +110,28 @@ public void func_149651_a(IIconRegister iconRegister) { } @Override - public boolean func_149662_c() { + public boolean isOpaqueCube() { return false; } @Override - public void func_149719_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); switch (metadata) { case 1: - this.func_149676_a(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); break; case 2: - this.func_149676_a(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); break; case 9: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); break; case 10: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); break; default: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); break; } } diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index e2f050e..f45ca51 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -6,7 +6,6 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockBush; -import net.minecraft.block.BlockFlower; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; @@ -27,20 +26,20 @@ public class BlockFlora extends BlockBush implements IShearable { private static final int numOfStructures = ItemFlora.caps.length; public BlockFlora() { - super(Material.field_151585_k); - this.func_149647_a(WildCaves.tabWildCaves); - this.func_149713_g(0); - this.func_149672_a(field_149779_h); - func_149752_b(0.6F); - func_149663_c("floraBlock"); + super(Material.plants); + this.setCreativeTab(WildCaves.tabWildCaves); + this.setLightOpacity(0); + this.setStepSound(soundTypeGrass); + setResistance(0.6F); + setBlockName("floraBlock"); } @Override - public boolean func_149718_j(World world, int x, int y, int z) { + public boolean canBlockStay(World world, int x, int y, int z) { boolean result = false; - Block bellowId = world.func_147439_a(x, y - 1, z); + Block bellowId = world.getBlock(x, y - 1, z); int metadataBellow = world.getBlockMetadata(x, y - 1, z); - boolean solidBellow = world.func_147445_c(x, y - 1, z, false); + boolean solidBellow = world.isBlockNormalCubeDefault(x, y - 1, z, false); if (solidBellow || bellowId == Blocks.ice || (bellowId == this && metadataBellow == 4)) { result = true; } @@ -48,13 +47,13 @@ public boolean func_149718_j(World world, int x, int y, int z) { } @Override - public int func_149692_a(int meta){ + public int damageDropped(int meta){ return 0; } @Override @SideOnly(Side.CLIENT) - public IIcon func_149691_a(int side, int metadata) { + public IIcon getIcon(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; @@ -62,14 +61,14 @@ public IIcon func_149691_a(int side, int metadata) { @Override @SideOnly(Side.CLIENT) - public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public Item func_149650_a(int par1, Random par2Random, int par3) { + public Item getItemDropped(int par1, Random par2Random, int par3) { return Items.glowstone_dust; } @@ -79,33 +78,33 @@ public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int } @Override - public void func_149855_e(World world, int x, int y, int z) { - if (!this.func_149718_j(world, x, y, z)) - world.func_147468_f(x, y, z); + public void checkAndDropBlock(World world, int x, int y, int z) { + if (!this.canBlockStay(world, x, y, z)) + world.setBlockToAir(x, y, z); } @Override - public void func_149695_a(World world, int x, int y, int z, Block blockID) { - if (!this.func_149718_j(world, x, y, z)) - world.func_147468_f(x, y, z); + public void onNeighborBlockChange(World world, int x, int y, int z, Block blockID) { + if (!this.canBlockStay(world, x, y, z)) + world.setBlockToAir(x, y, z); } @Override public ArrayList onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) { ArrayList ret = new ArrayList(); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); - ((World)world).func_147468_f(x, y, z); + ((World)world).setBlockToAir(x, y, z); return ret; } @Override - public int func_149745_a(Random rand) { + public int quantityDropped(Random rand) { return rand.nextInt(2); } @Override @SideOnly(Side.CLIENT) - public void func_149651_a(IIconRegister iconRegister) { + public void registerBlockIcons(IIconRegister iconRegister) { this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":flora" + i); @@ -113,24 +112,24 @@ public void func_149651_a(IIconRegister iconRegister) { } @Override - public void func_149719_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); //setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ) switch (metadata) { case 1: - this.func_149676_a(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); + this.setBlockBounds(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); break; case 2: - this.func_149676_a(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); + this.setBlockBounds(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); break; default: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); break; } } @Override - protected boolean func_149854_a(Block par1) { + protected boolean canPlaceBlockOn(Block par1) { return true; } } diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index d872556..4ecc6e2 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -23,11 +23,11 @@ public class BlockFossils extends Block { private int numOfStructures = ItemFossil.fossils.length; public BlockFossils() { - super(Material.field_151576_e); - this.func_149711_c(1F); - this.func_149647_a(WildCaves.tabWildCaves); - func_149663_c("fossilsBlock"); - this.func_149672_a(field_149780_i); + super(Material.rock); + this.setHardness(1F); + this.setCreativeTab(WildCaves.tabWildCaves); + setBlockName("fossilsBlock"); + this.setStepSound(soundTypePiston); } @Override @@ -36,13 +36,13 @@ public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, in } @Override - public int func_149643_k(World world, int x, int y, int z) { + public int getDamageValue(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override @SideOnly(Side.CLIENT) - public IIcon func_149691_a(int side, int metadata) { + public IIcon getIcon(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; @@ -50,14 +50,14 @@ public IIcon func_149691_a(int side, int metadata) { @Override @SideOnly(Side.CLIENT) - public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public Item func_149650_a(int metadata, Random random, int par3) { + public Item getItemDropped(int metadata, Random random, int par3) { int choise = Utils.weightedChoise(0.5f, 0.15f, 0.05f, 0.5f, 0, 0); Item result = null; switch (choise) { @@ -71,14 +71,14 @@ public Item func_149650_a(int metadata, Random random, int par3) { result = Items.skull; break; case 4: - result = Item.func_150898_a(Blocks.cobblestone); + result = Item.getItemFromBlock(Blocks.cobblestone); } return result; } @Override @SideOnly(Side.CLIENT) - public void func_149651_a(IIconRegister iconRegister) { + public void registerBlockIcons(IIconRegister iconRegister) { this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":fossils" + i); diff --git a/wildCaves/BlockSandstoneStalactite.java b/wildCaves/BlockSandstoneStalactite.java index 4f48570..22c2764 100644 --- a/wildCaves/BlockSandstoneStalactite.java +++ b/wildCaves/BlockSandstoneStalactite.java @@ -8,17 +8,17 @@ public class BlockSandstoneStalactite extends BlockStalactite { public BlockSandstoneStalactite() { super(ItemSandstoneStalactite.sandStalacs.length); - func_149663_c("sandstoneStalactiteBlock"); - func_149658_d(":sandstoneStructure"); + setBlockName("sandstoneStalactiteBlock"); + setBlockTextureName(":sandstoneStructure"); } @Override - public Item func_149650_a(int par1, Random par2Random, int par3) { - return Item.func_150898_a(Blocks.sandstone); + public Item getItemDropped(int par1, Random par2Random, int par3) { + return Item.getItemFromBlock(Blocks.sandstone); } @Override - public int func_149745_a(Random rand) { + public int quantityDropped(Random rand) { return rand.nextInt(3) - 1; } } diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 468ea8f..f15ba10 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -26,14 +26,14 @@ public abstract class BlockStalactite extends Block { private IIcon[] iconArray; public BlockStalactite(int num) { - super(Material.field_151576_e); + super(Material.rock); this.numOfStructures = num; - this.func_149711_c(0.8F); - this.func_149647_a(WildCaves.tabWildCaves); + this.setHardness(0.8F); + this.setCreativeTab(WildCaves.tabWildCaves); } @Override - public boolean func_149718_j(World world, int x, int y, int z) { + public boolean canBlockStay(World world, int x, int y, int z) { boolean result = false; int metadata = world.getBlockMetadata(x, y, z); if ((metadata != 0 && metadata < 4) || metadata == 7 || metadata == 11) @@ -59,115 +59,118 @@ public boolean connected(World world, int x, int y, int z, boolean searchUp) { else increment = -1; i = increment; - while (world.func_147439_a(x, y + i, z) == WildCaves.blockStoneStalactite || world.func_147439_a(x, y + i, z) == WildCaves.blockSandStalactite) + while (world.getBlock(x, y + i, z) == WildCaves.blockStoneStalactite || world.getBlock(x, y + i, z) == WildCaves.blockSandStalactite) i = i + increment; - return world.func_147439_a(x, y + i, z).isNormalCube(world, x, y+i, z); + return world.getBlock(x, y + i, z).isNormalCube(world, x, y+i, z); } @Override - public AxisAlignedBB func_149668_a(World par1World, int par2, int par3, int par4) { + public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { if (WildCaves.solidStalactites) - return super.func_149668_a(par1World, par2, par3, par4); + return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4); else return null; } @Override - public int func_149643_k(World world, int x, int y, int z) { + public int getDamageValue(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } @Override @SideOnly(Side.CLIENT) - public IIcon func_149691_a(int side, int metadata) { + public IIcon getIcon(int side, int metadata) { if (metadata >= numOfStructures) metadata = numOfStructures - 1; return this.iconArray[metadata]; } @Override - public int func_149645_b() { + public int getRenderType() { return 1; } @Override @SideOnly(Side.CLIENT) - public void func_149666_a(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < numOfStructures; ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public boolean func_149686_d() { + public boolean renderAsNormalBlock() { return false; } @Override - public void func_149689_a(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { - this.func_149674_a(world, x, y, z, null); + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { + this.updateTick(world, x, y, z, null); } @Override - public void func_149674_a(World world, int x, int y, int z, Random random) { - if (!this.func_149718_j(world, x, y, z)){ - this.func_149697_b(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.func_147468_f(x, y, z); + public void updateTick(World world, int x, int y, int z, Random random) { + if (!this.canBlockStay(world, x, y, z)){ + this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); + world.setBlockToAir(x, y, z); } } @Override - public void func_149670_a(World world, int x, int y, int z, Entity entity) { + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + if(entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode && ((EntityPlayer) entity).capabilities.isFlying){ + return; + } entity.motionX *= 0.7D; entity.motionZ *= 0.7D; } @Override - public void func_149746_a(World world, int par2, int par3, int par4, Entity entity, float par6) { + public void onFallenUpon(World world, int par2, int par3, int par4, Entity entity, float par6) { if (WildCaves.damageWhenFallenOn && entity.isEntityAlive()) { entity.attackEntityFrom(DamageSource.generic, 5); } } @Override - public void func_149695_a(World world, int x, int y, int z, Block blockID) { - if (!world.isRemote && !this.func_149718_j(world, x, y, z)) { + public void onNeighborBlockChange(World world, int x, int y, int z, Block blockID) { + if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { world.func_147480_a(x, y, z, true); } } @Override @SideOnly(Side.CLIENT) - public void func_149651_a(IIconRegister iconRegister) { + public void registerBlockIcons(IIconRegister iconRegister) { this.iconArray = new IIcon[numOfStructures]; for (int i = 0; i < this.iconArray.length; ++i) { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + func_149641_N() + i); + this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + getTextureName() + i); } } @Override - public boolean func_149662_c() { + public boolean isOpaqueCube() { return false; } @Override - public void func_149719_a(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); switch (metadata) { case 1: - this.func_149676_a(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); break; case 2: - this.func_149676_a(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); break; case 9: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); break; case 10: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); break; default: - this.func_149676_a(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); break; } } diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index cf31b7d..dc2a6e9 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -11,28 +11,28 @@ public class BlockStoneStalactite extends BlockStalactite { public BlockStoneStalactite() { super(ItemStoneStalactite.stalacs.length); - func_149663_c("stoneStalactiteBlock"); - func_149658_d(":stoneStructure"); + setBlockName("stoneStalactiteBlock"); + setBlockTextureName(":stoneStructure"); } @Override - public Item func_149650_a(int metadata, Random random, int par3) { - return Item.func_150898_a(Blocks.cobblestone); + public Item getItemDropped(int metadata, Random random, int par3) { + return Item.getItemFromBlock(Blocks.cobblestone); } @Override - public int func_149745_a(Random rand) { + public int quantityDropped(Random rand) { return rand.nextInt(3) - 1; } @Override @SideOnly(Side.CLIENT) - public void func_149734_b(World world, int x, int y, int z, Random random) { + public void randomDisplayTick(World world, int x, int y, int z, Random random) { int l; if (world.getBlockMetadata(x, y, z) < 4) { - boolean isWatered = world.func_147439_a(x, y + 2, z).func_149688_o().isLiquid(); + boolean isWatered = world.getBlock(x, y + 2, z).getMaterial().isLiquid(); int h = y; - while (world.func_147439_a(x, h, z) == this) { + while (world.getBlock(x, h, z) == this) { if (random.nextInt(5 + (isWatered ? 0 : 10)) == 0) { double d0 = x + random.nextFloat(); double d2 = z + random.nextFloat(); diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index afcf667..d1554cb 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -13,7 +13,7 @@ public ItemStalactite(Block block, String... names) { @Override public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, World world, int x, int y, int z, int side, float par8, float par9, float par10) { - Block blockId = world.func_147439_a(x, y, z); + Block blockId = world.getBlock(x, y, z); if (blockId == Blocks.snow && (world.getBlockMetadata(x, y, z) & 7) < 1) { side = 1; } else if (blockId != Blocks.vine && blockId != Blocks.tallgrass && blockId != Blocks.deadbush @@ -43,14 +43,14 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, Wor return false; } else if (y == 255) { return false; - } else if (world.func_147472_a(WildCaves.blockStoneStalactite, x, y, z, false, side, par2EntityPlayer, itemStack) - || world.func_147472_a(WildCaves.blockSandStalactite, x, y, z, false, side, par2EntityPlayer, itemStack)) { + } else if (world.canPlaceEntityOnSide(WildCaves.blockStoneStalactite, x, y, z, false, side, par2EntityPlayer, itemStack) + || world.canPlaceEntityOnSide(WildCaves.blockSandStalactite, x, y, z, false, side, par2EntityPlayer, itemStack)) { if (canPlace(itemStack, world, x, y, z)) { Block block = WildCaves.blockStoneStalactite; int j1 = this.getMetadata(itemStack.getItemDamage()); - int k1 = block.func_149660_a(world, x, y, z, side, par8, par9, par10, j1); + int k1 = block.onBlockPlaced(world, x, y, z, side, par8, par9, par10, j1); if (placeBlockAt(itemStack, par2EntityPlayer, world, x, y, z, side, par8, par9, par10, k1)) { - world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.field_149762_H.func_150496_b(), (block.field_149762_H.func_150497_c() + 1.0F) / 2.0F, block.field_149762_H.func_150494_d() * 0.8F); + world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.stepSound.func_150496_b(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); --itemStack.stackSize; } return true; @@ -64,10 +64,10 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, Wor private boolean canPlace(ItemStack itemStack, World world, int x, int y, int z) { boolean result = false; int metadata = getMetadata(itemStack.getItemDamage()); - boolean upNormal = world.func_147445_c(x, y + 1, z, false); - boolean downNormal = world.func_147445_c(x, y - 1, z, false); - boolean upStalactite = world.func_147439_a(x, y + 1, z) == WildCaves.blockStoneStalactite || world.func_147439_a(x, y + 1, z) == WildCaves.blockSandStalactite; - boolean downStalactite = world.func_147439_a(x, y - 1, z) == WildCaves.blockStoneStalactite || world.func_147439_a(x, y - 1, z) == WildCaves.blockSandStalactite; + boolean upNormal = world.isBlockNormalCubeDefault(x, y + 1, z, false); + boolean downNormal = world.isBlockNormalCubeDefault(x, y - 1, z, false); + boolean upStalactite = world.getBlock(x, y + 1, z) == WildCaves.blockStoneStalactite || world.getBlock(x, y + 1, z) == WildCaves.blockSandStalactite; + boolean downStalactite = world.getBlock(x, y - 1, z) == WildCaves.blockStoneStalactite || world.getBlock(x, y - 1, z) == WildCaves.blockSandStalactite; if ((metadata == 0 || metadata == 4 || metadata == 5) && (upNormal || downNormal || upStalactite || downStalactite)) result = true; else if ((metadata < 4 || metadata == 7 || metadata == 11) && (upNormal || upStalactite)) diff --git a/wildCaves/MultiItemBlock.java b/wildCaves/MultiItemBlock.java index e8f2243..0308b0d 100644 --- a/wildCaves/MultiItemBlock.java +++ b/wildCaves/MultiItemBlock.java @@ -23,7 +23,7 @@ public MultiItemBlock(Block block, String... names) { public IIcon getIconFromDamage(int damage) { if (damage > getNumOfStructures()) damage = getNumOfStructures() - 1; - return block.func_149691_a(0, damage); + return block.getIcon(0, damage); } @Override diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 362bc24..20a0e0f 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -21,9 +21,9 @@ public static void convertToFrozenType(World world, Random random, int x, int y, for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.8f, 0.2f, 0, 0, 0, 0) == 1) { - aux = world.func_147439_a(newX + j, newY - i, newZ + k); + aux = world.getBlock(newX + j, newY - i, newZ + k); if (aux == Blocks.stone || aux == Blocks.dirt || aux == Blocks.gravel || aux == Blocks.grass)// stone -> Ice - world.func_147449_b(newX + j, newY - i, newZ + k, Blocks.ice); + world.setBlock(newX + j, newY - i, newZ + k, Blocks.ice); } } } @@ -44,11 +44,11 @@ public static void convertToSandType(World world, Random random, int x, int y, i for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.7f, 0.3f, 0, 0, 0, 0) == 1) { - aux = world.func_147439_a(newX + j, newY - i, newZ + k); + aux = world.getBlock(newX + j, newY - i, newZ + k); if (aux == Blocks.stone)// stone -> sandstone - world.func_147465_d(newX + j, newY - i, newZ + k, Blocks.sandstone, 0, 2); + world.setBlock(newX + j, newY - i, newZ + k, Blocks.sandstone, 0, 2); else if (aux == Blocks.dirt || aux == Blocks.gravel) // dirt/gravel -> sand - world.func_147465_d(newX + j, newY - i, newZ + k, Blocks.sand, 0, 2); + world.setBlock(newX + j, newY - i, newZ + k, Blocks.sand, 0, 2); } } } @@ -58,7 +58,7 @@ else if (aux == Blocks.dirt || aux == Blocks.gravel) // dirt/gravel -> sand // gets the number of empty blocks between the current one and the closest one bellow public static int getNumEmptyBlocks(World world, int x, int y, int z) { int dist = 0; - while (world.func_147437_c(x, y, z) && !world.func_147445_c(x, y, z, false) && y > 5) { + while (world.isAirBlock(x, y, z) && !world.isBlockNormalCubeDefault(x, y, z, false) && y > 5) { y--; dist++; } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 44d8238..1b032f3 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -40,7 +40,7 @@ public void initBlocks() { GameRegistry.registerBlock(blockSandStalactite, ItemSandstoneStalactite.class, "SandstoneSalactite"); blockDecorations = new BlockDecorations(); GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); - blockFlora = new BlockFlora().func_149715_a(floraLightLevel / 15); + blockFlora = new BlockFlora().setLightLevel(floraLightLevel / 15); GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); blockFossils = new BlockFossils(); GameRegistry.registerBlock(blockFossils, ItemFossil.class, "FossilBlock"); diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index c0ab8dd..812792d 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -62,7 +62,7 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP Zcoord = blockZ + random.nextInt(16); Ycoord = Math.min(world.getHeightValue(Xcoord, Zcoord)-1, random.nextInt(maxGenHeight)); // search for the first available spot - while (Ycoord > 10 && (!blockWhiteList.contains(world.func_147439_a(Xcoord, Ycoord + 1, Zcoord)) || !world.func_147437_c(Xcoord, Ycoord, Zcoord))) { + while (Ycoord > 10 && (!blockWhiteList.contains(world.getBlock(Xcoord, Ycoord + 1, Zcoord)) || !world.isAirBlock(Xcoord, Ycoord, Zcoord))) { Ycoord--; } // found a spot diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 0635a2c..944356e 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -25,7 +25,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.func_147465_d(x, y, z, Blocks.web, 0, 2); + world.setBlock(x, y, z, Blocks.web, 0, 2); success = true; break; case 3: diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index d03faf1..8c10f3e 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -26,7 +26,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.func_147465_d(x, y, z, Blocks.web, 0, 2); + world.setBlock(x, y, z, Blocks.web, 0, 2); success = true; break; case 3: diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index 1f16c33..d19ab26 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -31,7 +31,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 4: - world.func_147465_d(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Blocks.web, 0, 2); + world.setBlock(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Blocks.web, 0, 2); break; case 5: GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index bf00773..494e077 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -31,7 +31,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 3: - world.func_147465_d(x, y, z, Blocks.web, 0, 2); + world.setBlock(x, y, z, Blocks.web, 0, 2); break; case 4: GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index 751b5b2..ffce688 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -26,7 +26,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { success = true; break; case 2: - world.func_147465_d(x, y, z, Blocks.web, 0, 2); + world.setBlock(x, y, z, Blocks.web, 0, 2); break; case 3: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); diff --git a/wildCaves/generation/structureGen/GenerateFloodedCaves.java b/wildCaves/generation/structureGen/GenerateFloodedCaves.java index eacdcb9..e9991d9 100644 --- a/wildCaves/generation/structureGen/GenerateFloodedCaves.java +++ b/wildCaves/generation/structureGen/GenerateFloodedCaves.java @@ -23,8 +23,8 @@ public static void generate(World world, Random random, int x, int y, int z) y -= (Utils.getNumEmptyBlocks(world, x, y, z)/3)*2; for(int i=x-3;i= botY && j < distance && !world.func_147439_a(x, topY - 1, z).func_149688_o().isLiquid()) { + while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); bottomMetadata = world.getBlockMetadata(x, botY, z); topY--; botY++; // Expand downwards - if (world.func_147437_c(x, topY, z) && topMetadata > 2 && topMetadata < 6) { + if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); if (aux != 4) - world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); + world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); else - world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); + world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); j++; } // Expand upwards - if (world.func_147437_c(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { + if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); if (aux != 4) - world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); + world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); else - world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); + world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); j++; } } diff --git a/wildCaves/generation/structureGen/GenerateSkulls.java b/wildCaves/generation/structureGen/GenerateSkulls.java index 9037805..beccd09 100644 --- a/wildCaves/generation/structureGen/GenerateSkulls.java +++ b/wildCaves/generation/structureGen/GenerateSkulls.java @@ -12,8 +12,8 @@ public static void generate(World world, Random random, int x, int y, int z, int if (numEmptyBlocks > 0) { int auxY = y - numEmptyBlocks + 1; if (auxY > 0) { - world.func_147465_d(x, auxY, z, Blocks.skull, 1, 2); - TileEntity skullTE = world.func_147438_o(x, auxY, z); + world.setBlock(x, auxY, z, Blocks.skull, 1, 2); + TileEntity skullTE = world.getTileEntity(x, auxY, z); if (skullTE instanceof TileEntitySkull) { ((TileEntitySkull) skullTE).func_145903_a(random.nextInt(360));//set rotation } diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index 4f7ac52..ad4536f 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -14,8 +14,8 @@ public static void generate(World world, Random random, int x, int y, int z, int Block blockId = WildCaves.blockStoneStalactite; if (distance == 1) { //x,y,z,blockID, metadate, no update - if (!world.func_147437_c(x, y + 1, z)) { - world.func_147465_d(x, y, z, blockId, 0, 2); + if (!world.isAirBlock(x, y + 1, z)) { + world.setBlock(x, y, z, blockId, 0, 2); } } else { int k = 0; // counter @@ -24,15 +24,15 @@ public static void generate(World world, Random random, int x, int y, int z, int int botY = Math.min(y, y - distance + 1); int aux; //stalactite base - if (!world.func_147437_c(x, topY + 1, z)) { - world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + if (!world.isAirBlock(x, topY + 1, z)) { + world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); j++; } // stalagmite base - if (!world.func_147439_a(x, botY, z).func_149688_o().isLiquid() && !world.func_147437_c(x, botY - 1, z)) { + if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && !world.isAirBlock(x, botY - 1, z)) { aux = Utils.randomChoise(-1, 8, 9, 10); if (aux != -1) { - world.func_147465_d(x, botY, z, blockId, aux, 2); + world.setBlock(x, botY, z, blockId, aux, 2); j++; stalagmiteGenerated = true; } @@ -40,28 +40,28 @@ public static void generate(World world, Random random, int x, int y, int z, int if (j==2) { int topMetadata = 0; int bottomMetadata = 0; - while (k < maxLength && topY >= botY && j < distance && !world.func_147439_a(x, topY - 1, z).func_149688_o().isLiquid()) { + while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); bottomMetadata = world.getBlockMetadata(x, botY, z); topY--; botY++; // Expand downwards - if (world.func_147437_c(x, topY, z) && topMetadata > 2 && topMetadata < 6) { + if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); if (aux != 4) - world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); + world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); else - world.func_147465_d(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); + world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); j++; } // Expand upwards - if (world.func_147437_c(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { + if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); if (aux != 4) - world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); + world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); else - world.func_147465_d(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); + world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); j++; } } diff --git a/wildCaves/generation/structureGen/GenerateVines.java b/wildCaves/generation/structureGen/GenerateVines.java index 0c42d07..13717a2 100644 --- a/wildCaves/generation/structureGen/GenerateVines.java +++ b/wildCaves/generation/structureGen/GenerateVines.java @@ -28,9 +28,9 @@ public static boolean generate(World world, Random random, int x, int y, int z) // length of the vine int i=0; - while(i Date: Fri, 7 Mar 2014 20:31:04 +0100 Subject: [PATCH 20/50] Gradle resources --- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 50514 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 +++++++++++++++++++++++ gradlew.bat | 90 +++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..667288ad6c2b3b87c990ece1267e56f0bcbf3622 GIT binary patch literal 50514 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 2f7fc54c0ea019600beaaa4935db5366f84e72ff Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 7 Mar 2014 20:31:14 +0100 Subject: [PATCH 21/50] Fixed credits --- mcmod.info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcmod.info b/mcmod.info index c9a7d33..ef3eef7 100644 --- a/mcmod.info +++ b/mcmod.info @@ -7,7 +7,7 @@ "version" : $version, "url": "http://www.minecraftforum.net/topic/1554854-146forge-wildcaves-3-v032/", "updateUrl": "", - "authors": [ + "authorList": [ "Alexmania" ], "logoFile": "WildCaves3.png", From b84e07a76dcc1fd7a26b301077bb2542cd3bab62 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 7 Mar 2014 20:31:29 +0100 Subject: [PATCH 22/50] Added safety for flooded caves generation --- wildCaves/Utils.java | 2 +- wildCaves/WildCaves.java | 21 +++++++------------ .../structureGen/GenerateFloodedCaves.java | 11 ++++++---- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 20a0e0f..2551a27 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -58,7 +58,7 @@ else if (aux == Blocks.dirt || aux == Blocks.gravel) // dirt/gravel -> sand // gets the number of empty blocks between the current one and the closest one bellow public static int getNumEmptyBlocks(World world, int x, int y, int z) { int dist = 0; - while (world.isAirBlock(x, y, z) && !world.isBlockNormalCubeDefault(x, y, z, false) && y > 5) { + while (y > 5 && !world.isBlockNormalCubeDefault(x, y, z, true) && world.isAirBlock(x, y, z)) { y--; dist++; } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 1b032f3..a519317 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -14,14 +14,12 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; -@Mod(modid = WildCaves.modid, name = "Wild Caves 3", version = "0.4.3.5") +@Mod(modid = WildCaves.modid, name = "Wild Caves 3", useMetadata = true) public class WildCaves { public static final String modid = "wildcaves3"; public static Block blockFlora, blockDecorations, blockFossils; - public static BlockStoneStalactite blockStoneStalactite; - public static BlockSandstoneStalactite blockSandStalactite; + public static Block blockStoneStalactite, blockSandStalactite; public static int floraLightLevel; - public static int timesPerChunck; public static int chanceForNodeToSpawn; public static boolean solidStalactites, damageWhenFallenOn; public static Configuration config; @@ -34,16 +32,11 @@ public Item getTabIconItem() { }; public void initBlocks() { - blockStoneStalactite = new BlockStoneStalactite(); - GameRegistry.registerBlock(blockStoneStalactite, ItemStoneStalactite.class, "StoneStalactite"); - blockSandStalactite = new BlockSandstoneStalactite(); - GameRegistry.registerBlock(blockSandStalactite, ItemSandstoneStalactite.class, "SandstoneSalactite"); - blockDecorations = new BlockDecorations(); - GameRegistry.registerBlock(blockDecorations, ItemDecoration.class, "Decorations"); - blockFlora = new BlockFlora().setLightLevel(floraLightLevel / 15); - GameRegistry.registerBlock(blockFlora, ItemFlora.class, "Flora"); - blockFossils = new BlockFossils(); - GameRegistry.registerBlock(blockFossils, ItemFossil.class, "FossilBlock"); + blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(), ItemStoneStalactite.class, "StoneStalactite"); + blockSandStalactite = GameRegistry.registerBlock(new BlockSandstoneStalactite(), ItemSandstoneStalactite.class, "SandstoneSalactite"); + blockDecorations = GameRegistry.registerBlock(new BlockDecorations(), ItemDecoration.class, "Decorations"); + blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel / 15), ItemFlora.class, "Flora"); + blockFossils = GameRegistry.registerBlock(new BlockFossils(), ItemFossil.class, "FossilBlock"); } @EventHandler diff --git a/wildCaves/generation/structureGen/GenerateFloodedCaves.java b/wildCaves/generation/structureGen/GenerateFloodedCaves.java index e9991d9..3f02499 100644 --- a/wildCaves/generation/structureGen/GenerateFloodedCaves.java +++ b/wildCaves/generation/structureGen/GenerateFloodedCaves.java @@ -3,6 +3,7 @@ import java.util.Random; import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; import wildCaves.Utils; import net.minecraft.world.World; @@ -12,8 +13,10 @@ public class GenerateFloodedCaves public static void generate(World world, Random random, int x, int y, int z) { int blocks = 0; - for(int i=x-3;i 400) return; @@ -21,8 +24,8 @@ public static void generate(World world, Random random, int x, int y, int z) } if(blocks > 150){ y -= (Utils.getNumEmptyBlocks(world, x, y, z)/3)*2; - for(int i=x-3;i Date: Sun, 9 Mar 2014 17:41:21 +0100 Subject: [PATCH 23/50] Removed derpyness --- build.gradle | 2 +- wildCaves/generation/structureGen/GenerateFloodedCaves.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 9e81f7b..5b4b629 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ minecraft { version = "0.4.3.6(1.7.2)" archivesBaseName = project.projectDir.name sourceSets.main.java{srcDirs project.projectDir.getPath() include("wildCaves/**")} -sourceSets.main.resources{srcDirs project.projectDir.getPath() include("assets/**" , "*.png", "*.info", "*.md")} +sourceSets.main.resources{srcDirs project.projectDir.getPath() include("assets/**" , "WildCaves3.png", "*.info", "*.md")} processResources { // replace stuff in mcmod.info, nothing else from(project.sourceSets.main.resources.srcDirs) { diff --git a/wildCaves/generation/structureGen/GenerateFloodedCaves.java b/wildCaves/generation/structureGen/GenerateFloodedCaves.java index 3f02499..7e727b7 100644 --- a/wildCaves/generation/structureGen/GenerateFloodedCaves.java +++ b/wildCaves/generation/structureGen/GenerateFloodedCaves.java @@ -13,8 +13,8 @@ public class GenerateFloodedCaves public static void generate(World world, Random random, int x, int y, int z) { int blocks = 0; - int di = 16* MathHelper.truncateDoubleToInt(x / 16) + random.nextInt(10); - int dk = 16* MathHelper.truncateDoubleToInt(z / 16) + random.nextInt(10); + int di = 16* MathHelper.floor_double(x / 16) + random.nextInt(10); + int dk = 16* MathHelper.floor_double(z / 16) + random.nextInt(10); for(int i=di;i Date: Sun, 9 Mar 2014 17:58:52 +0100 Subject: [PATCH 24/50] Fixed math error --- wildCaves/BlockFlora.java | 6 ++++++ wildCaves/WildCaves.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index f45ca51..ef0da39 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -132,4 +132,10 @@ public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, protected boolean canPlaceBlockOn(Block par1) { return true; } + + @Override + public Block setLightLevel(float val){ + this.lightValue = (int)val; + return this; + } } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index a519317..f07fbbb 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -35,7 +35,7 @@ public void initBlocks() { blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(), ItemStoneStalactite.class, "StoneStalactite"); blockSandStalactite = GameRegistry.registerBlock(new BlockSandstoneStalactite(), ItemSandstoneStalactite.class, "SandstoneSalactite"); blockDecorations = GameRegistry.registerBlock(new BlockDecorations(), ItemDecoration.class, "Decorations"); - blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel / 15), ItemFlora.class, "Flora"); + blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel), ItemFlora.class, "Flora"); blockFossils = GameRegistry.registerBlock(new BlockFossils(), ItemFossil.class, "FossilBlock"); } From 241af8d66f585b0faebd1a2c2f0e15688a85aa69 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 11 Mar 2014 23:50:51 +0100 Subject: [PATCH 25/50] Added frozen block type option --- wildCaves/BlockDecorations.java | 3 +- wildCaves/BlockFlora.java | 4 +- wildCaves/Utils.java | 3 +- wildCaves/WorldGenWildCaves.java | 54 +++++++++++-------- .../structureGen/GenerateIceshrooms.java | 3 +- .../structureGen/GenerateIcicles.java | 3 +- 6 files changed, 41 insertions(+), 29 deletions(-) diff --git a/wildCaves/BlockDecorations.java b/wildCaves/BlockDecorations.java index 156e466..8316ca7 100644 --- a/wildCaves/BlockDecorations.java +++ b/wildCaves/BlockDecorations.java @@ -4,6 +4,7 @@ import java.util.Random; import net.minecraft.block.Block; +import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; @@ -33,7 +34,7 @@ public BlockDecorations() { @Override public boolean canBlockStay(World world, int x, int y, int z) { - return world.getBlock(x, y + 1, z).isNormalCube(world, x, y, z) || world.getBlock(x, y + 1, z) == Blocks.ice; + return world.getBlock(x, y + 1, z).isNormalCube(world, x, y, z) || world.getBlock(x, y + 1, z).getMaterial().getMaterialMapColor() == MapColor.iceColor; } @Override diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index ef0da39..ee3fccc 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -6,10 +6,10 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockBush; +import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -40,7 +40,7 @@ public boolean canBlockStay(World world, int x, int y, int z) { Block bellowId = world.getBlock(x, y - 1, z); int metadataBellow = world.getBlockMetadata(x, y - 1, z); boolean solidBellow = world.isBlockNormalCubeDefault(x, y - 1, z, false); - if (solidBellow || bellowId == Blocks.ice || (bellowId == this && metadataBellow == 4)) { + if (solidBellow || bellowId.getMaterial().getMaterialMapColor() == MapColor.iceColor || (bellowId == this && metadataBellow == 4)) { result = true; } return result; diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 2551a27..abdd58f 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -7,6 +7,7 @@ import net.minecraft.world.World; public class Utils { + public static Block frozen = Blocks.ice; // transforms an area into snow and ice public static void convertToFrozenType(World world, Random random, int x, int y, int z) { int height = random.nextInt(5) + 3; @@ -23,7 +24,7 @@ public static void convertToFrozenType(World world, Random random, int x, int y, if (weightedChoise(0.8f, 0.2f, 0, 0, 0, 0) == 1) { aux = world.getBlock(newX + j, newY - i, newZ + k); if (aux == Blocks.stone || aux == Blocks.dirt || aux == Blocks.gravel || aux == Blocks.grass)// stone -> Ice - world.setBlock(newX + j, newY - i, newZ + k, Blocks.ice); + world.setBlock(newX + j, newY - i, newZ + k, frozen); } } } diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 812792d..e31a9f5 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -6,6 +6,7 @@ import cpw.mods.fml.common.registry.GameData; import net.minecraft.block.Block; +import net.minecraft.block.material.MapColor; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; @@ -87,17 +88,18 @@ else if (biome.isHighHumidity() || BiomeDictionary.isBiomeOfType(biome, BiomeDic private static void setConfig(Configuration config) { // --generation permissions------ - boolean sandstoneStalactites = config.get("Permissions", "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); - boolean flora = config.get("Permissions", "Generate flora on caves", true).getBoolean(true); - boolean stalactites = config.get("Permissions", "Generate stalactites on caves", true).getBoolean(true); - String[] list = config.get("Permissions", "Dimension Blacklist", "-1,1").getString().split(","); + String category = "Permissions"; + boolean sandstoneStalactites = config.get(category, "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); + boolean flora = config.get(category, "Generate flora on caves", true).getBoolean(true); + boolean stalactites = config.get(category, "Generate stalactites on caves", true).getBoolean(true); + String[] list = config.get(category, "Dimension Blacklist", "-1,1").getString().split(","); for (String txt : list) { try { dimensionBlacklist.add(Integer.parseInt(txt.trim())); } catch (NumberFormatException n) { } } - list = config.get("Permissions", "Block white list", "stone,grass,dirt,cobblestone,gravel,gold_ore,iron_ore,coal_ore,lapis_ore,sandstone,diamond_ore,redstone_ore,lit_redstone_ore,ice,snow,clay,monster_egg,emerald_ore").getString().split(","); + list = config.get(category, "Block white list", "stone,grass,dirt,cobblestone,gravel,gold_ore,iron_ore,coal_ore,lapis_ore,sandstone,diamond_ore,redstone_ore,lit_redstone_ore,ice,snow,clay,monster_egg,emerald_ore").getString().split(","); Block block; for (String txt : list) { try { @@ -109,20 +111,29 @@ private static void setConfig(Configuration config) { } } // --Biome specific ratios------ - probabilityVinesJungle = (float) config.get("Biome specific", "Probability of vines on jungle caves", 0.5).getDouble(0.5); - probabilityIcicle = (float) config.get("Biome specific", "Probability of icicles on frozen caves", 0.6).getDouble(0.6); - probabilityWet = (float) config.get("Biome specific", "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); - probabilityDry = (float) config.get("Biome specific", "Probability of less generation arid caves", 0.5).getDouble(0.5); - probabilityGlowcapsHumid = (float) config.get("Biome specific", "Probability of Glowing mushrooms on humid/jungle caves", 0.3).getDouble(0.3); - probabilityIceshrooms = (float) config.get("Biome specific", "Probability of Glowing Ice mushrooms on frozen caves", 0.3).getDouble(0.3); - probabilitySandStalactites = (float) config.get("Biome specific", "Probability of sandstone stalactites on arid caves", 0.5).getDouble(0.5); + category = "Biome specific"; + probabilityVinesJungle = (float) config.get(category, "Probability of vines on jungle caves", 0.5).getDouble(0.5); + probabilityIcicle = (float) config.get(category, "Probability of icicles on frozen caves", 0.6).getDouble(0.6); + try{ + block = GameData.blockRegistry.getObject(config.get(category, "Block to generate in frozen caves", "ice").getString().trim()); + if(block!=null && block.getMaterial().getMaterialMapColor()== MapColor.iceColor){ + Utils.frozen = block; + } + }catch (Exception n){ + } + probabilityWet = (float) config.get(category, "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); + probabilityDry = (float) config.get(category, "Probability of less generation arid caves", 0.5).getDouble(0.5); + probabilityGlowcapsHumid = (float) config.get(category, "Probability of Glowing mushrooms on humid/jungle caves", 0.3).getDouble(0.3); + probabilityIceshrooms = (float) config.get(category, "Probability of Glowing Ice mushrooms on frozen caves", 0.3).getDouble(0.3); + probabilitySandStalactites = (float) config.get(category, "Probability of sandstone stalactites on arid caves", 0.5).getDouble(0.5); // --General ratios------ - probabilityVines = (float) config.get("Non biome specific", "Probability of vines on caves", 0.1).getDouble(0.1); - probabilityGlowcaps = (float) config.get("Non biome specific", "Probability of glowing mushrooms on caves", 0.1).getDouble(0.1); - probabilityStalactite = (float) config.get("Non biome specific", "Probability of Stalactites/stalagmites", 0.5).getDouble(0.5); - probabilitySpiderWeb = (float) config.get("Non biome specific", "Probability of spider webs", 0.15).getDouble(0.15); - maxGenHeightGlowcapNormal = config.get("Non biome specific", "Max height at which to generate glowcaps on normal biomes", 30).getInt(); - probabilitySkulls = (float) config.get("Non biome specific", "Probability of skulls", 0.0001).getDouble(0.0001); + category = "Non biome specific"; + probabilityVines = (float) config.get(category, "Probability of vines on caves", 0.1).getDouble(0.1); + probabilityGlowcaps = (float) config.get(category, "Probability of glowing mushrooms on caves", 0.1).getDouble(0.1); + probabilityStalactite = (float) config.get(category, "Probability of Stalactites/stalagmites", 0.5).getDouble(0.5); + probabilitySpiderWeb = (float) config.get(category, "Probability of spider webs", 0.15).getDouble(0.15); + maxGenHeightGlowcapNormal = config.get(category, "Max height at which to generate glowcaps on normal biomes", 30).getInt(); + probabilitySkulls = (float) config.get(category, "Probability of skulls", 0.0001).getDouble(0.0001); if(!sandstoneStalactites){ probabilitySandStalactites = 0; } @@ -139,9 +150,10 @@ private static void setConfig(Configuration config) { probabilitySandStalactites = 0; } // --other------ - timesPerChunck = config.get(Configuration.CATEGORY_GENERAL, "times to attempt generating per chunk", 40).getInt(); - maxGenHeight = config.get(Configuration.CATEGORY_GENERAL, "Max height at which to generate", 80).getInt(); - maxLength = config.get(Configuration.CATEGORY_GENERAL, "Max length of structure generation", 8).getInt(); + category = Configuration.CATEGORY_GENERAL; + timesPerChunck = config.get(category, "times to attempt generating per chunk", 40).getInt(); + maxGenHeight = config.get(category, "Max height at which to generate", 80).getInt(); + maxLength = config.get(category, "Max length of structure generation", 8).getInt(); if(config.hasChanged()){ config.save(); } diff --git a/wildCaves/generation/structureGen/GenerateIceshrooms.java b/wildCaves/generation/structureGen/GenerateIceshrooms.java index f4300a2..9363682 100644 --- a/wildCaves/generation/structureGen/GenerateIceshrooms.java +++ b/wildCaves/generation/structureGen/GenerateIceshrooms.java @@ -2,7 +2,6 @@ import java.util.Random; -import net.minecraft.init.Blocks; import wildCaves.Utils; import wildCaves.WildCaves; @@ -12,7 +11,7 @@ public class GenerateIceshrooms { public static void generate(World world, Random random, int x, int y, int z) { if (!world.isAirBlock(x, y - 1, z)) { if (!world.getBlock(x, y, z).getMaterial().isLiquid()) { - world.setBlock(x, y - 1, z, Blocks.ice, 0, 2); + world.setBlock(x, y - 1, z, Utils.frozen, 0, 2); world.setBlock(x, y, z, WildCaves.blockFlora, Utils.randomChoise(6, 7, 8, 9), 2); } Utils.convertToFrozenType(world, random, x, y, z); diff --git a/wildCaves/generation/structureGen/GenerateIcicles.java b/wildCaves/generation/structureGen/GenerateIcicles.java index ea1e2b8..653629b 100644 --- a/wildCaves/generation/structureGen/GenerateIcicles.java +++ b/wildCaves/generation/structureGen/GenerateIcicles.java @@ -2,7 +2,6 @@ import java.util.Random; -import net.minecraft.init.Blocks; import wildCaves.Utils; import wildCaves.WildCaves; @@ -11,7 +10,7 @@ public class GenerateIcicles { public static void generate(World world, Random random, int x, int y, int z, int distance) { int botY = y - distance + 1; - world.setBlock(x, y + 1, z, Blocks.ice, 0, 2); + world.setBlock(x, y + 1, z, Utils.frozen, 0, 2); world.setBlock(x, y, z, WildCaves.blockDecorations, Utils.randomChoise(0, 1, 2), 2); Utils.convertToFrozenType(world, random, x, y, z); if (!world.getBlock(x, botY, z).getMaterial().isLiquid()) { From 718c85aeb4abe897ac9527c70f134bb293116e4a Mon Sep 17 00:00:00 2001 From: GotoLink Date: Wed, 26 Mar 2014 19:56:35 +0100 Subject: [PATCH 26/50] Reworked generation code --- wildCaves/BlockSandstoneStalactite.java | 24 ---------- wildCaves/EventManager.java | 47 +++++++++---------- wildCaves/ItemDecoration.java | 12 ----- wildCaves/ItemFlora.java | 12 ----- wildCaves/ItemFossil.java | 11 ----- wildCaves/ItemSandstoneStalactite.java | 14 ------ wildCaves/ItemStoneStalactite.java | 13 ----- .../generation/biomeGen/GenerationArid.java | 19 +++----- .../generation/biomeGen/GenerationFrozen.java | 27 ++++------- .../generation/biomeGen/GenerationHumid.java | 25 ++++------ .../generation/biomeGen/GenerationJungle.java | 26 ++++------ .../generation/biomeGen/GenerationNormal.java | 28 ++++------- .../structureGen/GenerateFloodedCaves.java | 36 -------------- .../structureGen/GenerateGlowcaps.java | 26 ---------- .../structureGen/GenerateIceshrooms.java | 20 -------- .../structureGen/GenerateIcicles.java | 20 -------- .../GenerateSandstoneStalactites.java | 2 +- .../structureGen/GenerateSkulls.java | 23 --------- .../structureGen/GenerateStoneStalactite.java | 2 +- .../structureGen/GenerateVines.java | 40 ---------------- 20 files changed, 69 insertions(+), 358 deletions(-) delete mode 100644 wildCaves/BlockSandstoneStalactite.java delete mode 100644 wildCaves/ItemDecoration.java delete mode 100644 wildCaves/ItemFlora.java delete mode 100644 wildCaves/ItemFossil.java delete mode 100644 wildCaves/ItemSandstoneStalactite.java delete mode 100644 wildCaves/ItemStoneStalactite.java delete mode 100644 wildCaves/generation/structureGen/GenerateFloodedCaves.java delete mode 100644 wildCaves/generation/structureGen/GenerateGlowcaps.java delete mode 100644 wildCaves/generation/structureGen/GenerateIceshrooms.java delete mode 100644 wildCaves/generation/structureGen/GenerateIcicles.java delete mode 100644 wildCaves/generation/structureGen/GenerateSkulls.java delete mode 100644 wildCaves/generation/structureGen/GenerateVines.java diff --git a/wildCaves/BlockSandstoneStalactite.java b/wildCaves/BlockSandstoneStalactite.java deleted file mode 100644 index 22c2764..0000000 --- a/wildCaves/BlockSandstoneStalactite.java +++ /dev/null @@ -1,24 +0,0 @@ -package wildCaves; - -import java.util.Random; - -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; - -public class BlockSandstoneStalactite extends BlockStalactite { - public BlockSandstoneStalactite() { - super(ItemSandstoneStalactite.sandStalacs.length); - setBlockName("sandstoneStalactiteBlock"); - setBlockTextureName(":sandstoneStructure"); - } - - @Override - public Item getItemDropped(int par1, Random par2Random, int par3) { - return Item.getItemFromBlock(Blocks.sandstone); - } - - @Override - public int quantityDropped(Random rand) { - return rand.nextInt(3) - 1; - } -} diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 13cc77a..1992e4d 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -10,23 +10,19 @@ public class EventManager implements IWorldGenerator { - private int chanceForNodeToSpawn; + private final int chanceForNodeToSpawn; public EventManager(int chanceForNodeToSpawn) { this.chanceForNodeToSpawn = chanceForNodeToSpawn; } + @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { - switch(world.provider.dimensionId) - { - case 0: generateSurface(world, random, chunkX * 16, chunkZ * 16); - } - } - - private void generateSurface(World world, Random random, int x, int z) - { - this.addOreSpawn(WildCaves.blockFossils, world, random, x, z, 16, 16, 4 + random.nextInt(3), chanceForNodeToSpawn, 1, 90); + if(world.provider.dimensionId==0) + { + this.addOreSpawn(WildCaves.blockFossils, world, random, chunkX*16, chunkZ*16, 16, 16, 4 + random.nextInt(3), chanceForNodeToSpawn, 1, 90); + } } /** @@ -46,20 +42,21 @@ private void generateSurface(World world, Random random, int x, int z) **/ public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { - assert maxY > minY: "The maximum Y must be greater than the Minimum Y"; - assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; - assert minY > 0: "addOreSpawn: The Minimum Y must be greater than 0"; - assert maxY < 256 && maxY > 0: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0"; - assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; - - int diffBtwnMinMaxY = maxY - minY; - WorldGenMinable mine = new WorldGenMinable(block, maxVeinSize); - for(int x = 0; x < chancesToSpawn; x++) - { - int posX = blockXPos + random.nextInt(maxX); - int posY = minY + random.nextInt(diffBtwnMinMaxY); - int posZ = blockZPos + random.nextInt(maxZ); - mine.generate(world, random, posX, posY, posZ); - } + assert minY > 0: "addOreSpawn: The Minimum Y must be greater than 0"; + int diffBtwnMinMaxY = maxY - minY; + if(maxY <= minY) + diffBtwnMinMaxY = 1; + assert maxY < 256: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0"; + assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; + assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; + + WorldGenMinable mine = new WorldGenMinable(block, maxVeinSize); + for(int x = 0; x < chancesToSpawn; x++) + { + int posX = blockXPos + random.nextInt(maxX); + int posY = minY + random.nextInt(diffBtwnMinMaxY); + int posZ = blockZPos + random.nextInt(maxZ); + mine.generate(world, random, posX, posY, posZ); + } } } diff --git a/wildCaves/ItemDecoration.java b/wildCaves/ItemDecoration.java deleted file mode 100644 index 3e5f3dc..0000000 --- a/wildCaves/ItemDecoration.java +++ /dev/null @@ -1,12 +0,0 @@ -package wildCaves; - -import net.minecraft.block.Block; - -public class ItemDecoration extends MultiItemBlock { - public static final String[] icicles = { "icicle1", "icicle2", "icicle3" }; - - public ItemDecoration(Block block) { - super(block, icicles); - setUnlocalizedName("decorationsBlock"); - } -} diff --git a/wildCaves/ItemFlora.java b/wildCaves/ItemFlora.java deleted file mode 100644 index cd00a2a..0000000 --- a/wildCaves/ItemFlora.java +++ /dev/null @@ -1,12 +0,0 @@ -package wildCaves; - -import net.minecraft.block.Block; - -public class ItemFlora extends MultiItemBlock { - public static final String[] caps = { "glowcap1", "glowcap2", "glowcap3", "gloweed1", "glowcap4top", "glowcap4bottom", "bluecap1", "bluecap2", "bluecap3", "bluecap4" }; - - public ItemFlora(Block block) { - super(block, caps); - setUnlocalizedName("floraBlock"); - } -} diff --git a/wildCaves/ItemFossil.java b/wildCaves/ItemFossil.java deleted file mode 100644 index 94669a3..0000000 --- a/wildCaves/ItemFossil.java +++ /dev/null @@ -1,11 +0,0 @@ -package wildCaves; - -import net.minecraft.block.Block; - -public class ItemFossil extends MultiItemBlock { - public static final String[] fossils = { "fossil1" }; - - public ItemFossil(Block block) { - super(block, fossils); - } -} diff --git a/wildCaves/ItemSandstoneStalactite.java b/wildCaves/ItemSandstoneStalactite.java deleted file mode 100644 index 0f0dcb1..0000000 --- a/wildCaves/ItemSandstoneStalactite.java +++ /dev/null @@ -1,14 +0,0 @@ -package wildCaves; - -import net.minecraft.block.Block; - -public class ItemSandstoneStalactite extends ItemStalactite { - public static final String[] sandStalacs = { "sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", - "sandstoneStalactiteConnection2", "sandstoneStalactiteConnection3", "sandstoneStalactiteConnection4", "sandstoneStalactiteEnd", "sandstoneStalacmiteEnd", "sandstoneStalacmite1", - "sandstoneStalacmite2", "sandstoneStalacmite3" }; - - public ItemSandstoneStalactite(Block block) { - super(block, sandStalacs); - setUnlocalizedName("sandstoneStalactiteBlock"); - } -} diff --git a/wildCaves/ItemStoneStalactite.java b/wildCaves/ItemStoneStalactite.java deleted file mode 100644 index b79b81b..0000000 --- a/wildCaves/ItemStoneStalactite.java +++ /dev/null @@ -1,13 +0,0 @@ -package wildCaves; - -import net.minecraft.block.Block; - -public class ItemStoneStalactite extends ItemStalactite { - public static final String[] stalacs = { "stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", - "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3" }; - - public ItemStoneStalactite(Block block) { - super(block, stalacs); - setUnlocalizedName("stoneStalactiteBlock"); - } -} diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 944356e..287ff1e 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -7,8 +7,8 @@ import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; +import wildCaves.generation.structureGen.DecorationHelper; import wildCaves.generation.structureGen.GenerateSandstoneStalactites; -import wildCaves.generation.structureGen.GenerateSkulls; import wildCaves.generation.structureGen.GenerateStoneStalactite; public class GenerationArid extends WorldGenerator { @@ -17,27 +17,22 @@ public GenerationArid() { @Override public boolean generate(World world, Random random, int x, int y, int z) { - boolean success = false; switch (Utils.weightedChoise(WorldGenWildCaves.probabilitySandStalactites, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityDry, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: GenerateSandstoneStalactites.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); - success = true; - break; + return true; case 2: world.setBlock(x, y, z, Blocks.web, 0, 2); - success = true; - break; + return true; case 3: - break; + return false; case 4: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; + DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + return true; default: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); - success = true; + return true; } - return success; } } diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index 8c10f3e..27989b3 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -7,10 +7,7 @@ import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.GenerateIceshrooms; -import wildCaves.generation.structureGen.GenerateIcicles; -import wildCaves.generation.structureGen.GenerateSkulls; -import wildCaves.generation.structureGen.GenerateStoneStalactite; +import wildCaves.generation.structureGen.*; public class GenerationFrozen extends WorldGenerator { public GenerationFrozen() { @@ -18,29 +15,23 @@ public GenerationFrozen() { @Override public boolean generate(World world, Random random, int x, int y, int z) { - boolean success = false; switch (Utils.weightedChoise(WorldGenWildCaves.probabilityIceshrooms, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityIcicle, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: - GenerateIceshrooms.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); - success = true; - break; + DecorationHelper.generateIceshrooms(world, random, x, y, z); + return true; case 2: world.setBlock(x, y, z, Blocks.web, 0, 2); - success = true; - break; + return true; case 3: - GenerateIcicles.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; + DecorationHelper.generateIcicles(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + return true; case 4: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; + DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + return true; default: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); - success = true; + return true; } - return success; } } diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index d19ab26..8e70ca8 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -19,28 +19,23 @@ public boolean generate(World world, Random random, int x, int y, int z) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityWet, WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite)) { case 1: - GenerateGlowcaps.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); - success = true; - break; + DecorationHelper.generateGlowcaps(world, random, x, y, z); + return true; case 2: - GenerateFloodedCaves.generate(world, random, x, y, z); - success = true; - break; + DecorationHelper.generateFloodedCaves(world, random, x, y, z); + return true; case 3: - GenerateVines.generate(world, random, x, y, z); - success = true; - break; + DecorationHelper.generateVines(world, random, x, y, z); + return true; case 4: world.setBlock(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Blocks.web, 0, 2); - break; + return true; case 5: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; + DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + return true; default: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); - success = true; + return true; } - return success; } } diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index 494e077..cd4b83f 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -5,10 +5,7 @@ import net.minecraft.init.Blocks; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.GenerateGlowcaps; -import wildCaves.generation.structureGen.GenerateSkulls; -import wildCaves.generation.structureGen.GenerateStoneStalactite; -import wildCaves.generation.structureGen.GenerateVines; +import wildCaves.generation.structureGen.*; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; @@ -19,28 +16,23 @@ public GenerationJungle() { @Override public boolean generate(World world, Random random, int x, int y, int z) { - boolean success = false; switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityVinesJungle, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: - GenerateGlowcaps.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); - success = true; - break; + DecorationHelper.generateGlowcaps(world, random, x, y, z); + return true; case 2: - GenerateVines.generate(world, random, x, y, z); - success = true; - break; + DecorationHelper.generateVines(world, random, x, y, z); + return true; case 3: world.setBlock(x, y, z, Blocks.web, 0, 2); - break; + return true; case 4: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; + DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + return true; default: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); - success = true; + return true; } - return success; } } diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index ffce688..efc6523 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -7,10 +7,7 @@ import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.GenerateGlowcaps; -import wildCaves.generation.structureGen.GenerateSkulls; -import wildCaves.generation.structureGen.GenerateStoneStalactite; -import wildCaves.generation.structureGen.GenerateVines; +import wildCaves.generation.structureGen.*; public class GenerationNormal extends WorldGenerator { public GenerationNormal() { @@ -18,29 +15,24 @@ public GenerationNormal() { @Override public boolean generate(World world, Random random, int x, int y, int z) { - boolean success = false; switch (Utils.weightedChoise(WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityStalactite, WorldGenWildCaves.probabilityGlowcaps, WorldGenWildCaves.probabilitySkulls, 0)) { case 1: - GenerateVines.generate(world, random, x, y, z); - success = true; - break; + DecorationHelper.generateVines(world, random, x, y, z); + return true; case 2: world.setBlock(x, y, z, Blocks.web, 0, 2); - break; + return true; case 3: GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); - success = true; - break; + return true; case 4: - GenerateGlowcaps.generate(world, random, x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z); - success = true; - break; + DecorationHelper.generateGlowcaps(world, random, x, y, z); + return true; case 5: - GenerateSkulls.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); - success = true; - break; + DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + return true; } - return success; + return false; } } diff --git a/wildCaves/generation/structureGen/GenerateFloodedCaves.java b/wildCaves/generation/structureGen/GenerateFloodedCaves.java deleted file mode 100644 index 7e727b7..0000000 --- a/wildCaves/generation/structureGen/GenerateFloodedCaves.java +++ /dev/null @@ -1,36 +0,0 @@ -package wildCaves.generation.structureGen; - -import java.util.Random; - -import net.minecraft.init.Blocks; -import net.minecraft.util.MathHelper; -import wildCaves.Utils; - -import net.minecraft.world.World; - -public class GenerateFloodedCaves -{ - public static void generate(World world, Random random, int x, int y, int z) - { - int blocks = 0; - int di = 16* MathHelper.floor_double(x / 16) + random.nextInt(10); - int dk = 16* MathHelper.floor_double(z / 16) + random.nextInt(10); - for(int i=di;i 400) - return; - } - } - if(blocks > 150){ - y -= (Utils.getNumEmptyBlocks(world, x, y, z)/3)*2; - for(int i=di;i 0) { - int auxY = y - numEmptyBlocks + 1; - if (auxY > 0) { - world.setBlock(x, auxY, z, Blocks.skull, 1, 2); - TileEntity skullTE = world.getTileEntity(x, auxY, z); - if (skullTE instanceof TileEntitySkull) { - ((TileEntitySkull) skullTE).func_145903_a(random.nextInt(360));//set rotation - } - } - } - } -} diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index ad4536f..4304131 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -12,7 +12,7 @@ public class GenerateStoneStalactite { public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; Block blockId = WildCaves.blockStoneStalactite; - if (distance == 1) { + if (distance <= 1) { //x,y,z,blockID, metadate, no update if (!world.isAirBlock(x, y + 1, z)) { world.setBlock(x, y, z, blockId, 0, 2); diff --git a/wildCaves/generation/structureGen/GenerateVines.java b/wildCaves/generation/structureGen/GenerateVines.java deleted file mode 100644 index 13717a2..0000000 --- a/wildCaves/generation/structureGen/GenerateVines.java +++ /dev/null @@ -1,40 +0,0 @@ -package wildCaves.generation.structureGen; - -import java.util.Random; - -import net.minecraft.init.Blocks; -import wildCaves.Utils; - -import net.minecraft.util.Direction; -import net.minecraft.world.World; - -public class GenerateVines -{ - // returns wether it managed to place a vine or not - public static boolean generate(World world, Random random, int x, int y, int z) - { - int distance = Utils.getNumEmptyBlocks(world, x, y, z); - int aux; - boolean result = false; - - if (distance > 5) - aux = random.nextInt(distance-5)+5; - else - aux = distance; - - //the side the vine should be facing - int side = random.nextInt(4)+2; - result = true; - - // length of the vine - int i=0; - while(i Date: Wed, 26 Mar 2014 19:57:47 +0100 Subject: [PATCH 27/50] Condensed block code --- wildCaves/BlockDecorations.java | 5 +++-- wildCaves/BlockFlora.java | 5 +++-- wildCaves/BlockFossils.java | 5 +++-- wildCaves/BlockStalactite.java | 16 ++++++++++++++-- wildCaves/BlockStoneStalactite.java | 14 ++------------ wildCaves/ItemStalactite.java | 6 ++++-- wildCaves/MultiItemBlock.java | 10 ++++++---- wildCaves/WildCaves.java | 25 +++++++++++++++++++------ 8 files changed, 54 insertions(+), 32 deletions(-) diff --git a/wildCaves/BlockDecorations.java b/wildCaves/BlockDecorations.java index 8316ca7..7eb5b8f 100644 --- a/wildCaves/BlockDecorations.java +++ b/wildCaves/BlockDecorations.java @@ -22,10 +22,11 @@ public class BlockDecorations extends Block { @SideOnly(Side.CLIENT) private IIcon[] iconArray; - private static final int numOfStructures = ItemDecoration.icicles.length; + private final int numOfStructures; - public BlockDecorations() { + public BlockDecorations(int number) { super(Material.rock); + this.numOfStructures = number; this.setCreativeTab(WildCaves.tabWildCaves); setResistance(0.6F); setBlockName("decorationsBlock"); diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index ee3fccc..64b9ea3 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -23,10 +23,11 @@ public class BlockFlora extends BlockBush implements IShearable { @SideOnly(Side.CLIENT) private IIcon[] iconArray; - private static final int numOfStructures = ItemFlora.caps.length; + private final int numOfStructures; - public BlockFlora() { + public BlockFlora(int number) { super(Material.plants); + this.numOfStructures = number; this.setCreativeTab(WildCaves.tabWildCaves); this.setLightOpacity(0); this.setStepSound(soundTypeGrass); diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index 4ecc6e2..e637523 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -20,10 +20,11 @@ public class BlockFossils extends Block { @SideOnly(Side.CLIENT) private IIcon[] iconArray; - private int numOfStructures = ItemFossil.fossils.length; + private final int numOfStructures; - public BlockFossils() { + public BlockFossils(int number) { super(Material.rock); + this.numOfStructures = number; this.setHardness(1F); this.setCreativeTab(WildCaves.tabWildCaves); setBlockName("fossilsBlock"); diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index f15ba10..38662bf 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -20,18 +20,30 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public abstract class BlockStalactite extends Block { +public class BlockStalactite extends Block { private final int numOfStructures; + private final Item droppedItem; @SideOnly(Side.CLIENT) private IIcon[] iconArray; - public BlockStalactite(int num) { + public BlockStalactite(int num, Item drop) { super(Material.rock); this.numOfStructures = num; + this.droppedItem = drop; this.setHardness(0.8F); this.setCreativeTab(WildCaves.tabWildCaves); } + @Override + public Item getItemDropped(int metadata, Random random, int par3) { + return droppedItem; + } + + @Override + public int quantityDropped(Random rand) { + return rand.nextInt(3) - 1; + } + @Override public boolean canBlockStay(World world, int x, int y, int z) { boolean result = false; diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index dc2a6e9..c7872e0 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -9,22 +9,12 @@ import net.minecraft.world.World; public class BlockStoneStalactite extends BlockStalactite { - public BlockStoneStalactite() { - super(ItemStoneStalactite.stalacs.length); + public BlockStoneStalactite(int number) { + super(number, Item.getItemFromBlock(Blocks.cobblestone)); setBlockName("stoneStalactiteBlock"); setBlockTextureName(":stoneStructure"); } - @Override - public Item getItemDropped(int metadata, Random random, int par3) { - return Item.getItemFromBlock(Blocks.cobblestone); - } - - @Override - public int quantityDropped(Random rand) { - return rand.nextInt(3) - 1; - } - @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) { diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index d1554cb..7d177e6 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -6,8 +6,10 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public abstract class ItemStalactite extends MultiItemBlock { - public ItemStalactite(Block block, String... names) { +import java.util.ArrayList; + +public class ItemStalactite extends MultiItemBlock { + public ItemStalactite(Block block, ArrayList names) { super(block, names); } diff --git a/wildCaves/MultiItemBlock.java b/wildCaves/MultiItemBlock.java index 0308b0d..eba8676 100644 --- a/wildCaves/MultiItemBlock.java +++ b/wildCaves/MultiItemBlock.java @@ -7,11 +7,13 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import java.util.ArrayList; + public class MultiItemBlock extends ItemBlock { - private final String[] subNames; + private final ArrayList subNames; private final Block block; - public MultiItemBlock(Block block, String... names) { + public MultiItemBlock(Block block, ArrayList names) { super(block); this.block = block; this.subNames = names; @@ -34,11 +36,11 @@ public int getMetadata(int damage) { } public int getNumOfStructures() { - return subNames.length; + return subNames.size(); } @Override public String getUnlocalizedName(ItemStack itemstack) { - return subNames[itemstack.getItemDamage()]; + return subNames.get(itemstack.getItemDamage()); } } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index f07fbbb..4de4710 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -2,6 +2,7 @@ import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -14,10 +15,21 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; +import java.util.ArrayList; +import java.util.Arrays; + @Mod(modid = WildCaves.modid, name = "Wild Caves 3", useMetadata = true) public class WildCaves { public static final String modid = "wildcaves3"; - public static Block blockFlora, blockDecorations, blockFossils; + public static final ArrayList stalacs = new ArrayList(Arrays.asList("stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", + "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3")); + public static final ArrayList sandStalacs = new ArrayList(Arrays.asList("sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", + "sandstoneStalactiteConnection2", "sandstoneStalactiteConnection3", "sandstoneStalactiteConnection4", "sandstoneStalactiteEnd", "sandstoneStalacmiteEnd", "sandstoneStalacmite1", + "sandstoneStalacmite2", "sandstoneStalacmite3")); + public static final ArrayList icicles = new ArrayList(Arrays.asList("icicle1", "icicle2", "icicle3")); + public static final ArrayList caps = new ArrayList(Arrays.asList("glowcap1", "glowcap2", "glowcap3", "gloweed1", "glowcap4top", "glowcap4bottom", "bluecap1", "bluecap2", "bluecap3", "bluecap4")); + public static final ArrayList fossils = new ArrayList(Arrays.asList("fossil1")); + public static Block blockFlora, blockDecorations, blockFossils; public static Block blockStoneStalactite, blockSandStalactite; public static int floraLightLevel; public static int chanceForNodeToSpawn; @@ -32,11 +44,12 @@ public Item getTabIconItem() { }; public void initBlocks() { - blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(), ItemStoneStalactite.class, "StoneStalactite"); - blockSandStalactite = GameRegistry.registerBlock(new BlockSandstoneStalactite(), ItemSandstoneStalactite.class, "SandstoneSalactite"); - blockDecorations = GameRegistry.registerBlock(new BlockDecorations(), ItemDecoration.class, "Decorations"); - blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel), ItemFlora.class, "Flora"); - blockFossils = GameRegistry.registerBlock(new BlockFossils(), ItemFossil.class, "FossilBlock"); + blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(stalacs.size()), ItemStalactite.class, "StoneStalactite", modid, stalacs); + blockSandStalactite = GameRegistry.registerBlock(new BlockStalactite(sandStalacs.size(), Item.getItemFromBlock(Blocks.sandstone)). + setBlockName("sandstoneStalactiteBlock").setBlockTextureName(":sandstoneStructure"), ItemStalactite.class, "SandstoneSalactite", modid, sandStalacs); + blockDecorations = GameRegistry.registerBlock(new BlockDecorations(icicles.size()), MultiItemBlock.class, "Decorations", modid, icicles); + blockFlora = GameRegistry.registerBlock(new BlockFlora(caps.size()).setLightLevel(floraLightLevel), MultiItemBlock.class, "Flora", modid, caps); + blockFossils = GameRegistry.registerBlock(new BlockFossils(fossils.size()), MultiItemBlock.class, "FossilBlock", modid, fossils); } @EventHandler From 2a758c9f0b3bc5168e3ae02281bd430ff60ccca4 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Wed, 26 Mar 2014 23:40:39 +0100 Subject: [PATCH 28/50] Made stalagmites obey white list --- wildCaves/WorldGenWildCaves.java | 4 ++++ .../structureGen/GenerateSandstoneStalactites.java | 9 +++++---- .../structureGen/GenerateStoneStalactite.java | 11 ++++++----- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index e31a9f5..2b9deb7 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -48,6 +48,10 @@ public WorldGenWildCaves(Configuration config) { setConfig(config); } + public static boolean isWhiteListed(Block block){ + return blockWhiteList.contains(block); + } + @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { int blockX = chunkX * 16; diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index 91948aa..aed5252 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -7,6 +7,7 @@ import wildCaves.WildCaves; import net.minecraft.block.Block; import net.minecraft.world.World; +import wildCaves.WorldGenWildCaves; public class GenerateSandstoneStalactites { public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { @@ -17,10 +18,9 @@ public static void generate(World world, Random random, int x, int y, int z, int world.setBlock(x, y, z, blockId, 0, 2); } } else { - int k = 0; // counter int j = 0; // blocks placed - int topY = Math.max(y, y - distance + 1); - int botY = Math.min(y, y - distance + 1); + int topY = y; + int botY = y - distance + 1; int aux; //stalactite base if (!world.isAirBlock(x, topY + 1, z)) { @@ -29,7 +29,7 @@ public static void generate(World world, Random random, int x, int y, int z, int j++; } // stalagmite base - if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && !world.isAirBlock(x, botY - 1, z)) { + if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && WorldGenWildCaves.isWhiteListed(world.getBlock(x, botY - 1, z))) { aux = Utils.randomChoise(-1, 8, 9, 10); if (aux != -1) { if (world.getBlock(x, botY - 1, z) == Blocks.stone) @@ -41,6 +41,7 @@ public static void generate(World world, Random random, int x, int y, int z, int } } if (j==2) { + int k = 0; // counter int topMetadata = 0; int bottomMetadata = 0; while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index 4304131..d30fe5d 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -7,21 +7,21 @@ import wildCaves.WildCaves; import net.minecraft.world.World; +import wildCaves.WorldGenWildCaves; public class GenerateStoneStalactite { public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; Block blockId = WildCaves.blockStoneStalactite; if (distance <= 1) { - //x,y,z,blockID, metadate, no update + //x,y,z,blockID, metadata, no update if (!world.isAirBlock(x, y + 1, z)) { world.setBlock(x, y, z, blockId, 0, 2); } } else { - int k = 0; // counter int j = 0; // blocks placed - int topY = Math.max(y, y - distance + 1); - int botY = Math.min(y, y - distance + 1); + int topY = y; + int botY = y - distance + 1; int aux; //stalactite base if (!world.isAirBlock(x, topY + 1, z)) { @@ -29,7 +29,7 @@ public static void generate(World world, Random random, int x, int y, int z, int j++; } // stalagmite base - if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && !world.isAirBlock(x, botY - 1, z)) { + if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && WorldGenWildCaves.isWhiteListed(world.getBlock(x, botY - 1, z))) { aux = Utils.randomChoise(-1, 8, 9, 10); if (aux != -1) { world.setBlock(x, botY, z, blockId, aux, 2); @@ -38,6 +38,7 @@ public static void generate(World world, Random random, int x, int y, int z, int } } if (j==2) { + int k = 0; // counter int topMetadata = 0; int bottomMetadata = 0; while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { From 63f69d0f4fdffe8dad7b7e845d0e820bfb1af3e1 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 4 Apr 2014 01:38:50 +0200 Subject: [PATCH 29/50] M.U.D support --- .gitignore | 3 ++- build.gradle | 9 ++++++++- changelog.md | 13 +++++++++++++ update.xml | 23 +++++++++++++++++++++++ wildCaves/WildCaves.java | 12 ++++++++++++ 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 changelog.md create mode 100644 update.xml diff --git a/.gitignore b/.gitignore index 98f617e..846e100 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ !assets/* !wildCaves/* !WildCaves3.png - +!update.xml +!changelog.md diff --git a/build.gradle b/build.gradle index 5b4b629..1e88f9a 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ minecraft { version = "1.7.2-10.12.0.1032" assetDir = "eclipse/assets" } -version = "0.4.3.6(1.7.2)" +version = "0.4.3.6" archivesBaseName = project.projectDir.name sourceSets.main.java{srcDirs project.projectDir.getPath() include("wildCaves/**")} sourceSets.main.resources{srcDirs project.projectDir.getPath() include("assets/**" , "WildCaves3.png", "*.info", "*.md")} @@ -34,4 +34,11 @@ processResources { from(project.sourceSets.main.resources.srcDirs) { include "assets/**", "*.png", "*.md" } +} +jar { + //Keep the jar as clean as possible + includeEmptyDirs = false + //Append with minecraft version + classifier = "("+minecraft.version+")" + archiveName = archivesBaseName + "-" + version + classifier+"."+extension } \ No newline at end of file diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..ff556e7 --- /dev/null +++ b/changelog.md @@ -0,0 +1,13 @@ +== WildCaves3 0.4.3.6 (1.7.2) == +* Updated for 1.7.2 +* Added "simple" flooded cave generation +* Fixed a few config options +* Changed block whitelist to use block names instead of id +* Added M.U.D support + +== WildCaves3 0.4.3.5 (1.6.X) == +* Added multiple language support +* Fixed and improved config file +* Fixed stalactite generation in air +* Fixed mushroom lighting +* Added dripping particles \ No newline at end of file diff --git a/update.xml b/update.xml new file mode 100644 index 0000000..f237bfc --- /dev/null +++ b/update.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 4de4710..82765fd 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -1,5 +1,7 @@ package wildCaves; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.ModContainer; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; @@ -81,5 +83,15 @@ public void preInit(FMLPreInitializationEvent event) { chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(5); config.save(); initBlocks(); + if(event.getSourceFile().getName().endsWith(".jar") && event.getSide().isClient()){ + try { + Class.forName("mods.mud.ModUpdateDetector").getDeclaredMethod("registerMod", ModContainer.class, String.class, String.class).invoke(null, + FMLCommonHandler.instance().findContainerFor(this), + "https://raw.github.com/GotoLink/WildCaves3/master/update.xml", + "https://raw.github.com/GotoLink/WildCaves3/master/changelog.md" + ); + } catch (Throwable e) { + } + } } } From a67cd4452827ae58094ba3e05992d724ed88fb83 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Fri, 4 Apr 2014 01:39:50 +0200 Subject: [PATCH 30/50] Fix --- update.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.xml b/update.xml index f237bfc..8051402 100644 --- a/update.xml +++ b/update.xml @@ -1,4 +1,4 @@ - + Date: Tue, 8 Apr 2014 17:01:50 +0200 Subject: [PATCH 31/50] Fixed links --- update.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/update.xml b/update.xml index 8051402..6f40583 100644 --- a/update.xml +++ b/update.xml @@ -1,21 +1,21 @@ From e9063a23af1c3a56b0179a6a25062e6654a21d68 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 10 Apr 2014 18:53:47 +0200 Subject: [PATCH 32/50] Cleaned stuff --- wildCaves/BlockStoneStalactite.java | 1 - wildCaves/Utils.java | 2 +- wildCaves/WildCaves.java | 5 ++--- wildCaves/generation/biomeGen/GenerationHumid.java | 1 - .../structureGen/GenerateSandstoneStalactites.java | 3 +-- .../generation/structureGen/GenerateStoneStalactite.java | 3 +-- 6 files changed, 5 insertions(+), 10 deletions(-) diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index c7872e0..fe3b314 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -18,7 +18,6 @@ public BlockStoneStalactite(int number) { @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) { - int l; if (world.getBlockMetadata(x, y, z) < 4) { boolean isWatered = world.getBlock(x, y + 2, z).getMaterial().isLiquid(); int h = y; diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index abdd58f..237966c 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -78,7 +78,7 @@ public static int randomChoise(int... val) { public static int weightedChoise(float par1, float par2, float par3, float par4, float par5, float par6) { float total = par1 + par2 + par3 + par4 + par5 + par6; float val = new Random().nextFloat(); - float previous = 0.0f; + float previous; par1 = par1 / total; par2 = par2 / total; par3 = par3 / total; diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 82765fd..3a5a477 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -37,8 +37,7 @@ public class WildCaves { public static int chanceForNodeToSpawn; public static boolean solidStalactites, damageWhenFallenOn; public static Configuration config; - private EventManager eventmanager; - public static CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { + public static final CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { @Override public Item getTabIconItem() { return Items.ender_eye; @@ -68,7 +67,7 @@ public void load(FMLInitializationEvent event) { } } } - eventmanager = new EventManager(chanceForNodeToSpawn); + EventManager eventmanager = new EventManager(chanceForNodeToSpawn); GameRegistry.registerWorldGenerator(eventmanager, 10); } diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index 8e70ca8..ef2ad7c 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -15,7 +15,6 @@ public GenerationHumid() { @Override public boolean generate(World world, Random random, int x, int y, int z) { - boolean success = false; switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityWet, WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite)) { case 1: diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index aed5252..70e94fd 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -42,8 +42,7 @@ public static void generate(World world, Random random, int x, int y, int z, int } if (j==2) { int k = 0; // counter - int topMetadata = 0; - int bottomMetadata = 0; + int topMetadata, bottomMetadata; while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index d30fe5d..fa59c9c 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -39,8 +39,7 @@ public static void generate(World world, Random random, int x, int y, int z, int } if (j==2) { int k = 0; // counter - int topMetadata = 0; - int bottomMetadata = 0; + int topMetadata, bottomMetadata; while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { k++; topMetadata = world.getBlockMetadata(x, topY, z); From f50272ff9953ed9ea2ed3bfec4588ac51d79e320 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 10 Apr 2014 18:59:58 +0200 Subject: [PATCH 33/50] Improved silk harvest --- wildCaves/BlockDecorations.java | 3 +-- wildCaves/BlockFossils.java | 5 ----- wildCaves/BlockStalactite.java | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/wildCaves/BlockDecorations.java b/wildCaves/BlockDecorations.java index 7eb5b8f..4227b0c 100644 --- a/wildCaves/BlockDecorations.java +++ b/wildCaves/BlockDecorations.java @@ -8,7 +8,6 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -44,7 +43,7 @@ public boolean canPlaceBlockAt(World world, int x, int y, int z) { } @Override - public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) { + protected boolean canSilkHarvest() { return true; } diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index e637523..6e1a750 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -31,11 +31,6 @@ public BlockFossils(int number) { this.setStepSound(soundTypePiston); } - @Override - public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) { - return true; - } - @Override public int getDamageValue(World world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 38662bf..5ffe75f 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -58,7 +58,7 @@ else if (metadata == 0 || metadata == 4 || metadata == 5) } @Override - public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) { + protected boolean canSilkHarvest() { return true; } From fe5efc869e81ce2f6425238f7862dc383bd6ea2c Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 10 Apr 2014 19:00:13 +0200 Subject: [PATCH 34/50] Improved fossil generation --- wildCaves/EventManager.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 1992e4d..7cdf272 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -2,7 +2,6 @@ import java.util.Random; -import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; @@ -10,6 +9,7 @@ public class EventManager implements IWorldGenerator { + private final WorldGenMinable[] mines = {new WorldGenMinable(WildCaves.blockFossils, 4), new WorldGenMinable(WildCaves.blockFossils, 5), new WorldGenMinable(WildCaves.blockFossils, 6)}; private final int chanceForNodeToSpawn; public EventManager(int chanceForNodeToSpawn) { @@ -21,26 +21,24 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP { if(world.provider.dimensionId==0) { - this.addOreSpawn(WildCaves.blockFossils, world, random, chunkX*16, chunkZ*16, 16, 16, 4 + random.nextInt(3), chanceForNodeToSpawn, 1, 90); + this.addOreSpawn(mines[random.nextInt(3)], world, random, chunkX*16, chunkZ*16, 16, 16, chanceForNodeToSpawn, 1, 90); } } /** - * Adds an Ore Spawn to Minecraft. Simply register all Ores to spawn with this method in your Generation method in your IWorldGeneration extending Class - * - * @param block to spawn + * Adds an Ore Spawn to Minecraft + * @param mine the ore generator * @param world to spawn in * @param random object for retrieving random positions within the world to spawn the Block * @param blockXPos the X-Coordinate for the Generation method * @param blockZPos the Z-Coordinate for the Generation method * @param maxX maximum X-Coordinate values for spawning on the X-Axis on a Per-Chunk basis * @param maxZ maximum Z-Coordinate values for spawning on the Z-Axis on a Per-Chunk basis - * @param maxVeinSize maximum size of a vein * @param chancesToSpawn Number of chances available for the Block to spawn per-chunk * @param minY minimum Y-Coordinate height at which this block may spawn * @param maxY maximum Y-Coordinate height at which this block may spawn **/ - public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) + public void addOreSpawn(WorldGenMinable mine, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int chancesToSpawn, int minY, int maxY) { assert minY > 0: "addOreSpawn: The Minimum Y must be greater than 0"; int diffBtwnMinMaxY = maxY - minY; @@ -49,8 +47,6 @@ public void addOreSpawn(Block block, World world, Random random, int blockXPos, assert maxY < 256: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0"; assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; - - WorldGenMinable mine = new WorldGenMinable(block, maxVeinSize); for(int x = 0; x < chancesToSpawn; x++) { int posX = blockXPos + random.nextInt(maxX); From b0c8afdf81ee8ba4735cf8a6779395c2fce9f8df Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 10 Apr 2014 19:11:10 +0200 Subject: [PATCH 35/50] Patch --- update.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.xml b/update.xml index 6f40583..5882858 100644 --- a/update.xml +++ b/update.xml @@ -3,7 +3,7 @@ From 23f20fc908d7918d3bd6882c804fcacae3839203 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Mon, 12 May 2014 18:51:21 +0200 Subject: [PATCH 36/50] Update Forge --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1e88f9a..2ad17ee 100644 --- a/build.gradle +++ b/build.gradle @@ -11,12 +11,12 @@ buildscript { } } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.1-SNAPSHOT' + classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' } } apply plugin: 'forge' minecraft { - version = "1.7.2-10.12.0.1032" + version = "1.7.2-10.12.1.1060" assetDir = "eclipse/assets" } version = "0.4.3.6" From 9374d52f60e81f5111b25a81f3801cfa0b5689c7 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 22 May 2014 19:50:41 +0400 Subject: [PATCH 37/50] Create ru_RU.lang --- assets/wildcaves3/lang/ru_RU.lang | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 assets/wildcaves3/lang/ru_RU.lang diff --git a/assets/wildcaves3/lang/ru_RU.lang b/assets/wildcaves3/lang/ru_RU.lang new file mode 100644 index 0000000..9690011 --- /dev/null +++ b/assets/wildcaves3/lang/ru_RU.lang @@ -0,0 +1,49 @@ + +itemGroup.WildCaves3=Wild Caves 3 + +fossil1.name=Костная кучка + +stalactite1.name=Сталактит +stalactite2.name=Сталактит +stalactite3.name=Сталактит +stalactite4.name=Сталактит +stalactiteConnection1.name=Сталактит +stalactiteConnection2.name=Сталактит +stalactiteConnection3.name=Сталактит +stalactiteConnection4.name=Сталактит +stalactiteEnd.name=Сталактит +stalacmiteEnd.name=Сталагмит +stalacmite1.name=Сталагмит +stalacmite2.name=Сталагмит +stalacmite3.name=Сталагмит + +sandstoneStalactite1.name=Песчаниковый сталактит +sandstoneStalactite2.name=Песчаниковый сталактит +sandstoneStalactite3.name=Песчаниковый сталактит +sandstoneStalactite4.name=Песчаниковый сталактит +sandstoneStalactiteConnection1.name=Песчаниковый сталактит +sandstoneStalactiteConnection2.name=Песчаниковый сталактит +sandstoneStalactiteConnection3.name=Песчаниковый сталактит +sandstoneStalactiteConnection4.name=Песчаниковый сталактит +sandstoneStalactiteEnd.name=Песчаниковый сталактит +sandstoneStalacmiteEnd.name=Песчаниковый сталагмит +sandstoneStalacmite1.name=Песчаниковый сталагмит +sandstoneStalacmite2.name=Песчаниковый сталагмит +sandstoneStalacmite3.name=Песчаниковый сталагмит + +glowcap1.name=Светящийся гриб +glowcap2.name=Светящийся гриб +glowcap3.name=Светящийся гриб +gloweed1.name=Светящийся сорняк +glowcap4top.name=Светящийся гриб +glowcap4bottom.name=Светящийся гриб + +bluecap1.name=Ледянной гриб +bluecap2.name=Ледянной гриб +bluecap3.name=Ледянной гриб +bluecap4.name=Ледянной гриб + +icicle.name=Сосулька +icicle1.name=Сосулька +icicle2.name=Сосулька +icicle3.name=Сосулька From f657868cad7e9d38a6a04ba2dbfd837498d3cffd Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 3 Jun 2014 17:37:53 +0200 Subject: [PATCH 38/50] Added skull chance option --- wildCaves/WildCaves.java | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 3a5a477..db490b0 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -10,6 +10,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; import net.minecraftforge.common.ChestGenHooks; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; @@ -34,7 +35,7 @@ public class WildCaves { public static Block blockFlora, blockDecorations, blockFossils; public static Block blockStoneStalactite, blockSandStalactite; public static int floraLightLevel; - public static int chanceForNodeToSpawn; + public static int chanceForNodeToSpawn, chestSkull; public static boolean solidStalactites, damageWhenFallenOn; public static Configuration config; public static final CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { @@ -57,18 +58,20 @@ public void initBlocks() { public void load(FMLInitializationEvent event) { WorldGenWildCaves gen = new WorldGenWildCaves(config); if (gen.maxLength > 0) { - GameRegistry.registerWorldGenerator(gen, 5); + MinecraftForge.EVENT_BUS.register(gen); } - //new itemstack(itemID, stackSize, damage) - for (String txt : new String[] { "DUNGEON_CHEST", "MINESHAFT_CORRIDOR", "STRONGHOLD_CORRIDOR" }) { - for (int i = 0; i < 5; i++) { - if (i != 1) { - ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Items.skull, 1, i), 1, 2, 50));//skeleton//zombie//steve//creeper - } - } - } - EventManager eventmanager = new EventManager(chanceForNodeToSpawn); - GameRegistry.registerWorldGenerator(eventmanager, 10); + if(chestSkull > 0) + for (String txt : new String[] { ChestGenHooks.DUNGEON_CHEST, ChestGenHooks.MINESHAFT_CORRIDOR, ChestGenHooks.STRONGHOLD_CORRIDOR }) { + for (int i = 0; i < 5; i++) { + if (i != 1) { + ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Items.skull, 1, i), 1, 2, chestSkull));//skeleton//zombie//steve//creeper + } + } + } + if(chanceForNodeToSpawn > 0) { + EventManager eventmanager = new EventManager(chanceForNodeToSpawn); + MinecraftForge.EVENT_BUS.register(eventmanager); + } } @EventHandler @@ -80,6 +83,7 @@ public void preInit(FMLPreInitializationEvent event) { if (floraLightLevel > 15) floraLightLevel = 15; chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(5); + chestSkull = config.get(Configuration.CATEGORY_GENERAL, "Chance for a skull to be added in chests", 50).getInt(50); config.save(); initBlocks(); if(event.getSourceFile().getName().endsWith(".jar") && event.getSide().isClient()){ From f6129bf88feb5591dc24b47ae9e0f1e51fd9384e Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 3 Jun 2014 17:38:21 +0200 Subject: [PATCH 39/50] Rebuilt event flow --- wildCaves/EventManager.java | 19 ++++++++----------- wildCaves/WorldGenWildCaves.java | 31 +++++++++++++++++-------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 7cdf272..61a8043 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -2,12 +2,12 @@ import java.util.Random; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; -import cpw.mods.fml.common.IWorldGenerator; +import net.minecraftforge.event.terraingen.OreGenEvent; -public class EventManager implements IWorldGenerator +public class EventManager { private final WorldGenMinable[] mines = {new WorldGenMinable(WildCaves.blockFossils, 4), new WorldGenMinable(WildCaves.blockFossils, 5), new WorldGenMinable(WildCaves.blockFossils, 6)}; private final int chanceForNodeToSpawn; @@ -16,12 +16,10 @@ public EventManager(int chanceForNodeToSpawn) this.chanceForNodeToSpawn = chanceForNodeToSpawn; } - @Override - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) - { - if(world.provider.dimensionId==0) - { - this.addOreSpawn(mines[random.nextInt(3)], world, random, chunkX*16, chunkZ*16, 16, 16, chanceForNodeToSpawn, 1, 90); + @SubscribeEvent + public void generate(OreGenEvent.Post oreGen){ + if (!WorldGenWildCaves.dimensionBlacklist.contains(oreGen.world.provider.dimensionId)) { + this.addOreSpawn(mines[oreGen.rand.nextInt(3)], oreGen.world, oreGen.rand, oreGen.worldX, oreGen.worldZ, 16, 16, chanceForNodeToSpawn, 1, 90); } } @@ -40,11 +38,10 @@ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkP **/ public void addOreSpawn(WorldGenMinable mine, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int chancesToSpawn, int minY, int maxY) { - assert minY > 0: "addOreSpawn: The Minimum Y must be greater than 0"; + assert minY > 0 && maxY > 0: "addOreSpawn: The Minimum Y and Maximum Y must be greater than 0"; int diffBtwnMinMaxY = maxY - minY; if(maxY <= minY) diffBtwnMinMaxY = 1; - assert maxY < 256: "addOreSpawn: The Maximum Y must be less than 256 but greater than 0"; assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; for(int x = 0; x < chancesToSpawn; x++) diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 2b9deb7..6f45340 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -4,22 +4,23 @@ import java.util.List; import java.util.Random; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.registry.GameData; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; +import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.IChunkProvider; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import wildCaves.generation.biomeGen.GenerationArid; import wildCaves.generation.biomeGen.GenerationFrozen; import wildCaves.generation.biomeGen.GenerationHumid; import wildCaves.generation.biomeGen.GenerationJungle; import wildCaves.generation.biomeGen.GenerationNormal; -import cpw.mods.fml.common.IWorldGenerator; -public class WorldGenWildCaves implements IWorldGenerator { +public class WorldGenWildCaves { public static float probabilityVinesJungle; public static float probabilityVines; public static float probabilityIcicle; @@ -36,7 +37,7 @@ public class WorldGenWildCaves implements IWorldGenerator { public static int maxLength; private static int timesPerChunck = 50; public static int maxGenHeightGlowcapNormal; - private static List dimensionBlacklist = new ArrayList(); + public static List dimensionBlacklist = new ArrayList(); private static List blockWhiteList = new ArrayList(); private static final GenerationJungle jungleGen = new GenerationJungle(); private static final GenerationHumid wetGen = new GenerationHumid(); @@ -52,16 +53,18 @@ public static boolean isWhiteListed(Block block){ return blockWhiteList.contains(block); } - @Override - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { - int blockX = chunkX * 16; - int blockZ = chunkZ * 16; - int Xcoord; - int Ycoord; - int Zcoord; - //int dist;// distance - BiomeGenBase biome; + @SubscribeEvent + public void decorate(DecorateBiomeEvent.Post decorationEvent){ + generate(decorationEvent.rand, decorationEvent.chunkX + 8, decorationEvent.chunkZ + 8, decorationEvent.world); + } + + public void generate(Random random, int blockX, int blockZ, World world) { if (!dimensionBlacklist.contains(world.provider.dimensionId)) { + int Xcoord; + int Ycoord; + int Zcoord; + //int dist;// distance + BiomeGenBase biome; for (int i = 0; i < timesPerChunck; i++) { Xcoord = blockX + random.nextInt(16); Zcoord = blockZ + random.nextInt(16); @@ -108,7 +111,7 @@ private static void setConfig(Configuration config) { for (String txt : list) { try { block = GameData.blockRegistry.getObject(txt.trim()); - if(block!=null){ + if(block != null && block.getMaterial() != Material.air){ blockWhiteList.add(block); } } catch (Exception n) { From 32650d947be71c2afed4a78703ee7b9ed8856379 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 3 Jun 2014 17:38:42 +0200 Subject: [PATCH 40/50] More extendable code --- wildCaves/Utils.java | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 237966c..5b40f58 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -1,6 +1,6 @@ package wildCaves; -import java.util.Random; +import java.util.*; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -8,6 +8,7 @@ public class Utils { public static Block frozen = Blocks.ice; + public static List freezable = Arrays.asList(Blocks.stone, Blocks.dirt, Blocks.gravel, Blocks.grass); // transforms an area into snow and ice public static void convertToFrozenType(World world, Random random, int x, int y, int z) { int height = random.nextInt(5) + 3; @@ -23,14 +24,19 @@ public static void convertToFrozenType(World world, Random random, int x, int y, // basically transform or not if (weightedChoise(0.8f, 0.2f, 0, 0, 0, 0) == 1) { aux = world.getBlock(newX + j, newY - i, newZ + k); - if (aux == Blocks.stone || aux == Blocks.dirt || aux == Blocks.gravel || aux == Blocks.grass)// stone -> Ice - world.setBlock(newX + j, newY - i, newZ + k, frozen); + if (freezable.contains(aux))// stone -> Ice + world.setBlock(newX + j, newY - i, newZ + k, frozen, 0, 2); } } } } } - + private static IdentityHashMap sandEquivalent = new IdentityHashMap(8); + static{ + sandEquivalent.put(Blocks.stone, Blocks.sandstone); + sandEquivalent.put(Blocks.dirt, Blocks.sand); + sandEquivalent.put(Blocks.gravel, Blocks.sand); + } //transform an area in to sand and sandstone public static void convertToSandType(World world, Random random, int x, int y, int z) { int height = random.nextInt(5) + 3; @@ -45,11 +51,9 @@ public static void convertToSandType(World world, Random random, int x, int y, i for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.7f, 0.3f, 0, 0, 0, 0) == 1) { - aux = world.getBlock(newX + j, newY - i, newZ + k); - if (aux == Blocks.stone)// stone -> sandstone - world.setBlock(newX + j, newY - i, newZ + k, Blocks.sandstone, 0, 2); - else if (aux == Blocks.dirt || aux == Blocks.gravel) // dirt/gravel -> sand - world.setBlock(newX + j, newY - i, newZ + k, Blocks.sand, 0, 2); + aux = sandEquivalent.get(world.getBlock(newX + j, newY - i, newZ + k)); + if (aux != null)// stone -> sandstone // dirt/gravel -> sand + world.setBlock(newX + j, newY - i, newZ + k, aux, 0, 2); } } } From 7c3ab0f797b1b17116a0c2cc792eb504be52fb97 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Tue, 3 Jun 2014 17:38:46 +0200 Subject: [PATCH 41/50] Patch --- update.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.xml b/update.xml index 5882858..0d2dadb 100644 --- a/update.xml +++ b/update.xml @@ -3,7 +3,7 @@ From 6da68a44b10213282d4b551ef2014a39d6933a26 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Thu, 12 Jun 2014 02:12:32 +0200 Subject: [PATCH 42/50] Extendable stalactite generation --- update.xml | 2 +- wildCaves/WildCaves.java | 2 +- .../generation/biomeGen/GenerationArid.java | 4 +- .../generation/biomeGen/GenerationFrozen.java | 2 +- .../generation/biomeGen/GenerationHumid.java | 2 +- .../generation/biomeGen/GenerationJungle.java | 2 +- .../generation/biomeGen/GenerationNormal.java | 2 +- .../GenerateSandstoneStalactites.java | 82 ++++--------------- .../structureGen/GenerateStoneStalactite.java | 23 ++++-- 9 files changed, 44 insertions(+), 77 deletions(-) diff --git a/update.xml b/update.xml index 0d2dadb..0f1a20c 100644 --- a/update.xml +++ b/update.xml @@ -3,7 +3,7 @@ diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index db490b0..f8ddcd3 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -70,7 +70,7 @@ public void load(FMLInitializationEvent event) { } if(chanceForNodeToSpawn > 0) { EventManager eventmanager = new EventManager(chanceForNodeToSpawn); - MinecraftForge.EVENT_BUS.register(eventmanager); + MinecraftForge.ORE_GEN_BUS.register(eventmanager); } } diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 287ff1e..18e21f7 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -20,7 +20,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilitySandStalactites, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityDry, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: - GenerateSandstoneStalactites.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateSandstoneStalactites().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); return true; case 2: world.setBlock(x, y, z, Blocks.web, 0, 2); @@ -31,7 +31,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); return true; default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index 27989b3..f365aeb 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -30,7 +30,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); return true; default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index ef2ad7c..ae8314c 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -33,7 +33,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); return true; default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index cd4b83f..53b21f3 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -31,7 +31,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); return true; default: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index efc6523..2ada1a0 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -24,7 +24,7 @@ public boolean generate(World world, Random random, int x, int y, int z) { world.setBlock(x, y, z, Blocks.web, 0, 2); return true; case 3: - GenerateStoneStalactite.generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); return true; case 4: DecorationHelper.generateGlowcaps(world, random, x, y, z); diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index 70e94fd..f056635 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -5,70 +5,24 @@ import net.minecraft.init.Blocks; import wildCaves.Utils; import wildCaves.WildCaves; -import net.minecraft.block.Block; import net.minecraft.world.World; -import wildCaves.WorldGenWildCaves; -public class GenerateSandstoneStalactites { - public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { - boolean stalagmiteGenerated = false; - Block blockId = WildCaves.blockSandStalactite; - if (distance <= 1) { - if (!world.isAirBlock(x, y + 1, z)) { - world.setBlock(x, y, z, blockId, 0, 2); - } - } else { - int j = 0; // blocks placed - int topY = y; - int botY = y - distance + 1; - int aux; - //stalactite base - if (!world.isAirBlock(x, topY + 1, z)) { - world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); - Utils.convertToSandType(world, random, x, topY, z); - j++; - } - // stalagmite base - if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && WorldGenWildCaves.isWhiteListed(world.getBlock(x, botY - 1, z))) { - aux = Utils.randomChoise(-1, 8, 9, 10); - if (aux != -1) { - if (world.getBlock(x, botY - 1, z) == Blocks.stone) - world.setBlock(x, botY - 1, z, Blocks.sandstone, 0, 2); - world.setBlock(x, botY, z, blockId, aux, 2); - j++; - stalagmiteGenerated = true; - Utils.convertToSandType(world, random, x, botY, z); - } - } - if (j==2) { - int k = 0; // counter - int topMetadata, bottomMetadata; - while (k < maxLength && topY >= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { - k++; - topMetadata = world.getBlockMetadata(x, topY, z); - bottomMetadata = world.getBlockMetadata(x, botY, z); - topY--; - botY++; - // Expand downwards - if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { - aux = random.nextInt(5); - if (aux != 4) - world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); - else - world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); - j++; - } - // Expand upwards - if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { - aux = random.nextInt(5); - if (aux != 4) - world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); - else - world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); - j++; - } - } - } - } - } +public class GenerateSandstoneStalactites extends GenerateStoneStalactite{ + public GenerateSandstoneStalactites(){ + super(WildCaves.blockSandStalactite); + } + + @Override + protected void generateStalactiteBase(World world, Random random, int x, int topY, int z) { + super.generateStalactiteBase(world, random, x, topY, z); + Utils.convertToSandType(world, random, x, topY, z); + } + + @Override + protected void generateStalagmiteBase(World world, Random random, int x, int botY, int z, int aux) { + if (world.getBlock(x, botY - 1, z) == Blocks.stone) + world.setBlock(x, botY - 1, z, Blocks.sandstone, 0, 2); + super.generateStalagmiteBase(world, random, x, botY, z, aux); + Utils.convertToSandType(world, random, x, botY, z); + } } diff --git a/wildCaves/generation/structureGen/GenerateStoneStalactite.java b/wildCaves/generation/structureGen/GenerateStoneStalactite.java index fa59c9c..6f00a86 100644 --- a/wildCaves/generation/structureGen/GenerateStoneStalactite.java +++ b/wildCaves/generation/structureGen/GenerateStoneStalactite.java @@ -4,15 +4,20 @@ import net.minecraft.block.Block; import wildCaves.Utils; -import wildCaves.WildCaves; import net.minecraft.world.World; +import wildCaves.WildCaves; import wildCaves.WorldGenWildCaves; public class GenerateStoneStalactite { - public static void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { + public final Block blockId; + public GenerateStoneStalactite(){this(WildCaves.blockStoneStalactite);} + public GenerateStoneStalactite(Block toGen){ + blockId = toGen; + } + + public void generate(World world, Random random, int x, int y, int z, int distance, int maxLength) { boolean stalagmiteGenerated = false; - Block blockId = WildCaves.blockStoneStalactite; if (distance <= 1) { //x,y,z,blockID, metadata, no update if (!world.isAirBlock(x, y + 1, z)) { @@ -25,14 +30,14 @@ public static void generate(World world, Random random, int x, int y, int z, int int aux; //stalactite base if (!world.isAirBlock(x, topY + 1, z)) { - world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + generateStalactiteBase(world, random, x, topY, z); j++; } // stalagmite base if (!world.getBlock(x, botY, z).getMaterial().isLiquid() && WorldGenWildCaves.isWhiteListed(world.getBlock(x, botY - 1, z))) { aux = Utils.randomChoise(-1, 8, 9, 10); if (aux != -1) { - world.setBlock(x, botY, z, blockId, aux, 2); + generateStalagmiteBase(world, random, x, botY, z, aux); j++; stalagmiteGenerated = true; } @@ -68,4 +73,12 @@ public static void generate(World world, Random random, int x, int y, int z, int } } } + + protected void generateStalagmiteBase(World world, Random random, int x, int botY, int z, int aux) { + world.setBlock(x, botY, z, blockId, aux, 2); + } + + protected void generateStalactiteBase(World world, Random random, int x, int topY, int z) { + world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + } } From b51dbbeca58cec23b4224056fa91b7fb2fe74668 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Mon, 21 Jul 2014 17:41:48 +0200 Subject: [PATCH 43/50] Fixed ru --- assets/wildcaves3/lang/ru_RU.lang | 52 +++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/assets/wildcaves3/lang/ru_RU.lang b/assets/wildcaves3/lang/ru_RU.lang index 9690011..1e53bb0 100644 --- a/assets/wildcaves3/lang/ru_RU.lang +++ b/assets/wildcaves3/lang/ru_RU.lang @@ -1,7 +1,7 @@ - + itemGroup.WildCaves3=Wild Caves 3 -fossil1.name=Костная кучка +fossil1.name=Окаменелость stalactite1.name=Сталактит stalactite2.name=Сталактит @@ -17,33 +17,33 @@ stalacmite1.name=Сталагмит stalacmite2.name=Сталагмит stalacmite3.name=Сталагмит -sandstoneStalactite1.name=Песчаниковый сталактит -sandstoneStalactite2.name=Песчаниковый сталактит -sandstoneStalactite3.name=Песчаниковый сталактит -sandstoneStalactite4.name=Песчаниковый сталактит -sandstoneStalactiteConnection1.name=Песчаниковый сталактит -sandstoneStalactiteConnection2.name=Песчаниковый сталактит -sandstoneStalactiteConnection3.name=Песчаниковый сталактит -sandstoneStalactiteConnection4.name=Песчаниковый сталактит -sandstoneStalactiteEnd.name=Песчаниковый сталактит -sandstoneStalacmiteEnd.name=Песчаниковый сталагмит -sandstoneStalacmite1.name=Песчаниковый сталагмит -sandstoneStalacmite2.name=Песчаниковый сталагмит -sandstoneStalacmite3.name=Песчаниковый сталагмит +sandstoneStalactite1.name=Песчаный сталактит +sandstoneStalactite2.name=Песчаный сталактит +sandstoneStalactite3.name=Песчаный сталактит +sandstoneStalactite4.name=Песчаный сталактит +sandstoneStalactiteConnection1.name=Песчаный сталактит +sandstoneStalactiteConnection2.name=Песчаный сталактит +sandstoneStalactiteConnection3.name=Песчаный сталактит +sandstoneStalactiteConnection4.name=Песчаный сталактит +sandstoneStalactiteEnd.name=Песчаный сталактит +sandstoneStalacmiteEnd.name=Песчаный сталактит +sandstoneStalacmite1.name=Песчаный сталагмит +sandstoneStalacmite2.name=Песчаный сталагмит +sandstoneStalacmite3.name=Песчаный сталагмит -glowcap1.name=Светящийся гриб -glowcap2.name=Светящийся гриб -glowcap3.name=Светящийся гриб -gloweed1.name=Светящийся сорняк -glowcap4top.name=Светящийся гриб -glowcap4bottom.name=Светящийся гриб +glowcap1.name=Огнешляпка +glowcap2.name=Огнешляпка +glowcap3.name=Огнешляпка +gloweed1.name=Огнесорняк +glowcap4top.name=Огнешляпка +glowcap4bottom.name=Огнешляпка -bluecap1.name=Ледянной гриб -bluecap2.name=Ледянной гриб -bluecap3.name=Ледянной гриб -bluecap4.name=Ледянной гриб +bluecap1.name=Ледогриб +bluecap2.name=Ледогриб +bluecap3.name=Ледогриб +bluecap4.name=Ледогриб icicle.name=Сосулька icicle1.name=Сосулька icicle2.name=Сосулька -icicle3.name=Сосулька +icicle3.name=Сосулька \ No newline at end of file From bde8791747e0ec1b49a56e0c72bce35f1f7c6637 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Mon, 21 Jul 2014 17:42:07 +0200 Subject: [PATCH 44/50] Update to 1.7.10 --- build.gradle | 7 +++++-- gradle/wrapper/gradle-wrapper.jar | Bin 50514 -> 51017 bytes gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 2ad17ee..5b1ef5f 100644 --- a/build.gradle +++ b/build.gradle @@ -16,14 +16,17 @@ buildscript { } apply plugin: 'forge' minecraft { - version = "1.7.2-10.12.1.1060" - assetDir = "eclipse/assets" + version = "1.7.10-10.13.0.1184" + runDir = "eclipse/assets" } version = "0.4.3.6" archivesBaseName = project.projectDir.name sourceSets.main.java{srcDirs project.projectDir.getPath() include("wildCaves/**")} sourceSets.main.resources{srcDirs project.projectDir.getPath() include("assets/**" , "WildCaves3.png", "*.info", "*.md")} processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(project.sourceSets.main.resources.srcDirs) { include "mcmod.info" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 667288ad6c2b3b87c990ece1267e56f0bcbf3622..b7612167031001b7b84baf2a959e8ea8ad03c011 100644 GIT binary patch delta 24889 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%0A`3;a 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 UFo_-vTpnOKhXa$yss0-AKkzv|fB*mh delta 24379 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 Date: Sun, 4 Jan 2015 18:25:02 +0100 Subject: [PATCH 45/50] Forge update --- build.gradle | 9 ++++++--- gradle/wrapper/gradle-wrapper.properties | 4 ++-- update.xml | 7 +++++++ wildCaves/BlockFlora.java | 20 ++++++++++--------- wildCaves/EventManager.java | 4 ++-- wildCaves/Utils.java | 2 +- wildCaves/WildCaves.java | 14 ++++++------- .../generation/biomeGen/GenerationArid.java | 2 +- .../generation/biomeGen/GenerationFrozen.java | 2 +- .../generation/biomeGen/GenerationHumid.java | 2 +- .../generation/biomeGen/GenerationJungle.java | 2 +- .../generation/biomeGen/GenerationNormal.java | 2 +- .../GenerateSandstoneStalactites.java | 2 +- 13 files changed, 42 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index 5b1ef5f..0212f91 100644 --- a/build.gradle +++ b/build.gradle @@ -15,11 +15,14 @@ buildscript { } } apply plugin: 'forge' +sourceCompatibility = 1.6 +targetCompatibility = 1.6 +version = "0.4.3.7" minecraft { - version = "1.7.10-10.13.0.1184" - runDir = "eclipse/assets" + version = "1.7.10-10.13.2.1230" + runDir = "eclipse" + replace '${version}', version } -version = "0.4.3.6" archivesBaseName = project.projectDir.name sourceSets.main.java{srcDirs project.projectDir.getPath() include("wildCaves/**")} sourceSets.main.resources{srcDirs project.projectDir.getPath() include("assets/**" , "WildCaves3.png", "*.info", "*.md")} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 678d9d8..5949406 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Jul 02 15:54:47 CDT 2014 +#Sun Jan 04 18:03:48 CET 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-all.zip diff --git a/update.xml b/update.xml index 0f1a20c..3880cf3 100644 --- a/update.xml +++ b/update.xml @@ -1,4 +1,11 @@ + + + 0 && maxY > 0: "addOreSpawn: The Minimum Y and Maximum Y must be greater than 0"; int diffBtwnMinMaxY = maxY - minY; diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 5b40f58..4547145 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -6,7 +6,7 @@ import net.minecraft.init.Blocks; import net.minecraft.world.World; -public class Utils { +public final class Utils { public static Block frozen = Blocks.ice; public static List freezable = Arrays.asList(Blocks.stone, Blocks.dirt, Blocks.gravel, Blocks.grass); // transforms an area into snow and ice diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index f8ddcd3..2802f4e 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -21,8 +21,8 @@ import java.util.ArrayList; import java.util.Arrays; -@Mod(modid = WildCaves.modid, name = "Wild Caves 3", useMetadata = true) -public class WildCaves { +@Mod(modid = WildCaves.modid, name = "Wild Caves 3", version = "${version}") +public final class WildCaves { public static final String modid = "wildcaves3"; public static final ArrayList stalacs = new ArrayList(Arrays.asList("stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3")); @@ -46,12 +46,12 @@ public Item getTabIconItem() { }; public void initBlocks() { - blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(stalacs.size()), ItemStalactite.class, "StoneStalactite", modid, stalacs); + blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(stalacs.size()), ItemStalactite.class, "StoneStalactite", stalacs); blockSandStalactite = GameRegistry.registerBlock(new BlockStalactite(sandStalacs.size(), Item.getItemFromBlock(Blocks.sandstone)). - setBlockName("sandstoneStalactiteBlock").setBlockTextureName(":sandstoneStructure"), ItemStalactite.class, "SandstoneSalactite", modid, sandStalacs); - blockDecorations = GameRegistry.registerBlock(new BlockDecorations(icicles.size()), MultiItemBlock.class, "Decorations", modid, icicles); - blockFlora = GameRegistry.registerBlock(new BlockFlora(caps.size()).setLightLevel(floraLightLevel), MultiItemBlock.class, "Flora", modid, caps); - blockFossils = GameRegistry.registerBlock(new BlockFossils(fossils.size()), MultiItemBlock.class, "FossilBlock", modid, fossils); + setBlockName("sandstoneStalactiteBlock").setBlockTextureName(":sandstoneStructure"), ItemStalactite.class, "SandstoneSalactite", sandStalacs); + blockDecorations = GameRegistry.registerBlock(new BlockDecorations(icicles.size()), MultiItemBlock.class, "Decorations", icicles); + blockFlora = GameRegistry.registerBlock(new BlockFlora(caps.size()).setLightLevel(floraLightLevel), MultiItemBlock.class, "Flora", caps); + blockFossils = GameRegistry.registerBlock(new BlockFossils(fossils.size()), MultiItemBlock.class, "FossilBlock", fossils); } @EventHandler diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 18e21f7..9962516 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -11,7 +11,7 @@ import wildCaves.generation.structureGen.GenerateSandstoneStalactites; import wildCaves.generation.structureGen.GenerateStoneStalactite; -public class GenerationArid extends WorldGenerator { +public final class GenerationArid extends WorldGenerator { public GenerationArid() { } diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index f365aeb..b14c070 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -9,7 +9,7 @@ import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.*; -public class GenerationFrozen extends WorldGenerator { +public final class GenerationFrozen extends WorldGenerator { public GenerationFrozen() { } diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index ae8314c..414adca 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -9,7 +9,7 @@ import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.*; -public class GenerationHumid extends WorldGenerator { +public final class GenerationHumid extends WorldGenerator { public GenerationHumid() { } diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index 53b21f3..40a4012 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -10,7 +10,7 @@ import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; -public class GenerationJungle extends WorldGenerator { +public final class GenerationJungle extends WorldGenerator { public GenerationJungle() { } diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index 2ada1a0..eba7dd6 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -9,7 +9,7 @@ import wildCaves.WorldGenWildCaves; import wildCaves.generation.structureGen.*; -public class GenerationNormal extends WorldGenerator { +public final class GenerationNormal extends WorldGenerator { public GenerationNormal() { } diff --git a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java index f056635..8feddcb 100644 --- a/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java +++ b/wildCaves/generation/structureGen/GenerateSandstoneStalactites.java @@ -7,7 +7,7 @@ import wildCaves.WildCaves; import net.minecraft.world.World; -public class GenerateSandstoneStalactites extends GenerateStoneStalactite{ +public final class GenerateSandstoneStalactites extends GenerateStoneStalactite{ public GenerateSandstoneStalactites(){ super(WildCaves.blockSandStalactite); } From 7b3dad908107a1b2d4817b2f1de78792c32a2486 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Sun, 4 Jan 2015 18:25:18 +0100 Subject: [PATCH 46/50] Added range support in dimension id --- wildCaves/WorldGenWildCaves.java | 40 +++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 6f45340..9b9b2d7 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -20,7 +20,7 @@ import wildCaves.generation.biomeGen.GenerationJungle; import wildCaves.generation.biomeGen.GenerationNormal; -public class WorldGenWildCaves { +public final class WorldGenWildCaves { public static float probabilityVinesJungle; public static float probabilityVines; public static float probabilityIcicle; @@ -99,18 +99,42 @@ private static void setConfig(Configuration config) { boolean sandstoneStalactites = config.get(category, "Generate Sandstone stalactites on arid biomes", true).getBoolean(true); boolean flora = config.get(category, "Generate flora on caves", true).getBoolean(true); boolean stalactites = config.get(category, "Generate stalactites on caves", true).getBoolean(true); - String[] list = config.get(category, "Dimension Blacklist", "-1,1").getString().split(","); - for (String txt : list) { - try { - dimensionBlacklist.add(Integer.parseInt(txt.trim())); - } catch (NumberFormatException n) { + String[] list = config.get(category, "Dimension Blacklist", "-1,1", "Worlds where generation won't occur, by dimension ids. Use [id1;id2] to add a range of id, prefix with - to exclude.").getString().split(","); + for(String text:list){ + if(text!=null && !text.isEmpty()){ + boolean done = false; + if(text.contains("[") && text.contains("]")){ + String[] results = text.substring(text.indexOf("[")+1, text.indexOf("]")).split(";"); + if(results.length==2){ + try { + int a = Integer.parseInt(results[0]); + int b = Integer.parseInt(results[1]); + boolean remove = text.startsWith("-"); + for(int x = a; x <=b; x++){ + if(remove) + dimensionBlacklist.remove(x); + else + dimensionBlacklist.add(x); + } + done = true; + }catch (Exception ignored){ + + } + } + } + if(!done) { + try { + dimensionBlacklist.add(Integer.parseInt(text.trim())); + } catch (Exception ignored) { + } + } } } list = config.get(category, "Block white list", "stone,grass,dirt,cobblestone,gravel,gold_ore,iron_ore,coal_ore,lapis_ore,sandstone,diamond_ore,redstone_ore,lit_redstone_ore,ice,snow,clay,monster_egg,emerald_ore").getString().split(","); Block block; for (String txt : list) { try { - block = GameData.blockRegistry.getObject(txt.trim()); + block = GameData.getBlockRegistry().getObject(txt.trim()); if(block != null && block.getMaterial() != Material.air){ blockWhiteList.add(block); } @@ -122,7 +146,7 @@ private static void setConfig(Configuration config) { probabilityVinesJungle = (float) config.get(category, "Probability of vines on jungle caves", 0.5).getDouble(0.5); probabilityIcicle = (float) config.get(category, "Probability of icicles on frozen caves", 0.6).getDouble(0.6); try{ - block = GameData.blockRegistry.getObject(config.get(category, "Block to generate in frozen caves", "ice").getString().trim()); + block = GameData.getBlockRegistry().getObject(config.get(category, "Block to generate in frozen caves", "ice").getString().trim()); if(block!=null && block.getMaterial().getMaterialMapColor()== MapColor.iceColor){ Utils.frozen = block; } From 769168ede8c910d8ad62149e032ac17d61e2953c Mon Sep 17 00:00:00 2001 From: Al Date: Wed, 14 Jan 2015 19:15:20 -0300 Subject: [PATCH 47/50] Create pt_BR.lang --- assets/wildcaves3/lang/pt_BR.lang | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 assets/wildcaves3/lang/pt_BR.lang diff --git a/assets/wildcaves3/lang/pt_BR.lang b/assets/wildcaves3/lang/pt_BR.lang new file mode 100644 index 0000000..15d5d10 --- /dev/null +++ b/assets/wildcaves3/lang/pt_BR.lang @@ -0,0 +1,49 @@ + +itemGroup.WildCaves3=Wild Caves 3 + +fossil1.name=Pilha de Ossos + +stalactite1.name=Estalactite +stalactite2.name=Estalactite +stalactite3.name=Estalactite +stalactite4.name=Estalactite +stalactiteConnection1.name=Estalactite +stalactiteConnection2.name=Estalactite +stalactiteConnection3.name=Estalactite +stalactiteConnection4.name=Estalactite +stalactiteEnd.name=Estalactite +stalacmiteEnd.name=Estalagmite +stalacmite1.name=Estalagmite +stalacmite2.name=Estalagmite +stalacmite3.name=Estalagmite + +sandstoneStalactite1.name=Estalactite de Arenito +sandstoneStalactite2.name=Estalactite de Arenito +sandstoneStalactite3.name=Estalactite de Arenito +sandstoneStalactite4.name=Estalactite de Arenito +sandstoneStalactiteConnection1.name=Estalactite de Arenito +sandstoneStalactiteConnection2.name=Estalactite de Arenito +sandstoneStalactiteConnection3.name=Estalactite de Arenito +sandstoneStalactiteConnection4.name=Estalactite de Arenito +sandstoneStalactiteEnd.name=Estalactite de Arenito +sandstoneStalacmiteEnd.name=Estalagmite de Arenito +sandstoneStalacmite1.name=Estalagmite de Arenito +sandstoneStalacmite2.name=Estalagmite de Arenito +sandstoneStalacmite3.name=Estalagmite de Arenito + +glowcap1.name=Chlorophos +glowcap2.name=Chlorophos +glowcap3.name=Chlorophos +gloweed1.name=Erva do Brilho +glowcap4top.name=Chlorophos +glowcap4bottom.name=Chlorophos + +bluecap1.name=Cogumelo Anil +bluecap2.name=Cogumelo Anil +bluecap3.name=Cogumelo Anil +bluecap4.name=Cogumelo Anil + +icicle.name=Cogumelo Picolé +icicle1.name=Cogumelo Picolé +icicle2.name=Cogumelo Picolé +icicle3.name=Cogumelo Picolé From 6a6b5a8b6bf11ae08ccdc0c9bc96a6c582056b6f Mon Sep 17 00:00:00 2001 From: GotoLink Date: Sun, 22 Feb 2015 20:25:24 +0100 Subject: [PATCH 48/50] ES / BR translations -thanks Al and DanNetwalker --- update.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.xml b/update.xml index 3880cf3..b0ef8ed 100644 --- a/update.xml +++ b/update.xml @@ -3,7 +3,7 @@ From 8829479222a1f542a2a8c53826e225259c5342ec Mon Sep 17 00:00:00 2001 From: GotoLink Date: Mon, 20 Jul 2015 20:08:23 +0200 Subject: [PATCH 49/50] Update for 1.8 --- .gitignore | 4 +- .../wildcaves3/blockstates/Decorations.json | 7 + assets/wildcaves3/blockstates/Flora.json | 14 ++ .../wildcaves3/blockstates/FossilBlock.json | 5 + .../blockstates/SandstoneSalactite.json | 17 +++ .../blockstates/StoneStalactite.json | 17 +++ assets/wildcaves3/lang/es_ES.lang | 49 +++++++ assets/wildcaves3/models/block/decor_0.json | 6 + assets/wildcaves3/models/block/decor_1.json | 6 + assets/wildcaves3/models/block/decor_2.json | 6 + assets/wildcaves3/models/block/flora_0.json | 6 + assets/wildcaves3/models/block/flora_1.json | 6 + assets/wildcaves3/models/block/flora_2.json | 6 + assets/wildcaves3/models/block/flora_3.json | 6 + assets/wildcaves3/models/block/flora_4.json | 6 + assets/wildcaves3/models/block/flora_5.json | 6 + assets/wildcaves3/models/block/flora_6.json | 6 + assets/wildcaves3/models/block/flora_7.json | 6 + assets/wildcaves3/models/block/flora_8.json | 6 + assets/wildcaves3/models/block/flora_9.json | 6 + assets/wildcaves3/models/block/fossil.json | 6 + .../wildcaves3/models/block/sandstone_0.json | 6 + .../wildcaves3/models/block/sandstone_1.json | 6 + .../wildcaves3/models/block/sandstone_10.json | 6 + .../wildcaves3/models/block/sandstone_11.json | 6 + .../wildcaves3/models/block/sandstone_12.json | 6 + .../wildcaves3/models/block/sandstone_2.json | 6 + .../wildcaves3/models/block/sandstone_3.json | 6 + .../wildcaves3/models/block/sandstone_4.json | 6 + .../wildcaves3/models/block/sandstone_5.json | 6 + .../wildcaves3/models/block/sandstone_6.json | 6 + .../wildcaves3/models/block/sandstone_7.json | 6 + .../wildcaves3/models/block/sandstone_8.json | 6 + .../wildcaves3/models/block/sandstone_9.json | 6 + assets/wildcaves3/models/block/stone_0.json | 6 + assets/wildcaves3/models/block/stone_1.json | 6 + assets/wildcaves3/models/block/stone_10.json | 6 + assets/wildcaves3/models/block/stone_11.json | 6 + assets/wildcaves3/models/block/stone_12.json | 6 + assets/wildcaves3/models/block/stone_2.json | 6 + assets/wildcaves3/models/block/stone_3.json | 6 + assets/wildcaves3/models/block/stone_4.json | 6 + assets/wildcaves3/models/block/stone_5.json | 6 + assets/wildcaves3/models/block/stone_6.json | 6 + assets/wildcaves3/models/block/stone_7.json | 6 + assets/wildcaves3/models/block/stone_8.json | 6 + assets/wildcaves3/models/block/stone_9.json | 6 + assets/wildcaves3/models/item/flora_0.json | 18 +++ assets/wildcaves3/models/item/flora_1.json | 18 +++ assets/wildcaves3/models/item/flora_2.json | 18 +++ assets/wildcaves3/models/item/flora_3.json | 18 +++ assets/wildcaves3/models/item/flora_4.json | 18 +++ assets/wildcaves3/models/item/flora_5.json | 18 +++ assets/wildcaves3/models/item/flora_6.json | 18 +++ assets/wildcaves3/models/item/flora_7.json | 18 +++ assets/wildcaves3/models/item/flora_8.json | 18 +++ assets/wildcaves3/models/item/flora_9.json | 18 +++ assets/wildcaves3/models/item/fossil_0.json | 10 ++ assets/wildcaves3/models/item/icicle_0.json | 18 +++ assets/wildcaves3/models/item/icicle_1.json | 18 +++ assets/wildcaves3/models/item/icicle_2.json | 18 +++ .../wildcaves3/models/item/sandstone_0.json | 18 +++ .../wildcaves3/models/item/sandstone_1.json | 18 +++ .../wildcaves3/models/item/sandstone_10.json | 18 +++ .../wildcaves3/models/item/sandstone_11.json | 18 +++ .../wildcaves3/models/item/sandstone_12.json | 18 +++ .../wildcaves3/models/item/sandstone_2.json | 18 +++ .../wildcaves3/models/item/sandstone_3.json | 18 +++ .../wildcaves3/models/item/sandstone_4.json | 18 +++ .../wildcaves3/models/item/sandstone_5.json | 18 +++ .../wildcaves3/models/item/sandstone_6.json | 18 +++ .../wildcaves3/models/item/sandstone_7.json | 18 +++ .../wildcaves3/models/item/sandstone_8.json | 18 +++ .../wildcaves3/models/item/sandstone_9.json | 18 +++ assets/wildcaves3/models/item/stone_0.json | 18 +++ assets/wildcaves3/models/item/stone_1.json | 18 +++ assets/wildcaves3/models/item/stone_10.json | 18 +++ assets/wildcaves3/models/item/stone_11.json | 18 +++ assets/wildcaves3/models/item/stone_12.json | 18 +++ assets/wildcaves3/models/item/stone_2.json | 18 +++ assets/wildcaves3/models/item/stone_3.json | 18 +++ assets/wildcaves3/models/item/stone_4.json | 18 +++ assets/wildcaves3/models/item/stone_5.json | 18 +++ assets/wildcaves3/models/item/stone_6.json | 18 +++ assets/wildcaves3/models/item/stone_7.json | 18 +++ assets/wildcaves3/models/item/stone_8.json | 18 +++ assets/wildcaves3/models/item/stone_9.json | 18 +++ build.gradle | 3 +- changelog.md | 4 + gradle/wrapper/gradle-wrapper.properties | 4 +- update.xml | 7 + wildCaves/BlockDecorations.java | 102 +++++++------ wildCaves/BlockFlora.java | 109 +++++++------- wildCaves/BlockFossils.java | 54 +------ wildCaves/BlockStalactite.java | 136 ++++++++++-------- wildCaves/BlockStoneStalactite.java | 42 +++--- wildCaves/ClientProxy.java | 59 ++++++++ wildCaves/EventManager.java | 38 ++--- wildCaves/ItemStalactite.java | 68 ++++----- wildCaves/MultiItemBlock.java | 23 +-- wildCaves/ServerProxy.java | 8 ++ wildCaves/Utils.java | 33 +++-- wildCaves/WildCaves.java | 82 +++++------ wildCaves/WorldGenWildCaves.java | 52 +++---- .../generation/biomeGen/GenerationArid.java | 15 +- .../generation/biomeGen/GenerationFrozen.java | 20 +-- .../generation/biomeGen/GenerationHumid.java | 22 +-- .../generation/biomeGen/GenerationJungle.java | 23 +-- .../generation/biomeGen/GenerationNormal.java | 20 +-- .../structureGen/DecorationHelper.java | 123 ++++++++++++++++ .../GenerateSandstoneStalactites.java | 23 +-- .../structureGen/GenerateStoneStalactite.java | 59 ++++---- 112 files changed, 1702 insertions(+), 492 deletions(-) create mode 100644 assets/wildcaves3/blockstates/Decorations.json create mode 100644 assets/wildcaves3/blockstates/Flora.json create mode 100644 assets/wildcaves3/blockstates/FossilBlock.json create mode 100644 assets/wildcaves3/blockstates/SandstoneSalactite.json create mode 100644 assets/wildcaves3/blockstates/StoneStalactite.json create mode 100644 assets/wildcaves3/lang/es_ES.lang create mode 100644 assets/wildcaves3/models/block/decor_0.json create mode 100644 assets/wildcaves3/models/block/decor_1.json create mode 100644 assets/wildcaves3/models/block/decor_2.json create mode 100644 assets/wildcaves3/models/block/flora_0.json create mode 100644 assets/wildcaves3/models/block/flora_1.json create mode 100644 assets/wildcaves3/models/block/flora_2.json create mode 100644 assets/wildcaves3/models/block/flora_3.json create mode 100644 assets/wildcaves3/models/block/flora_4.json create mode 100644 assets/wildcaves3/models/block/flora_5.json create mode 100644 assets/wildcaves3/models/block/flora_6.json create mode 100644 assets/wildcaves3/models/block/flora_7.json create mode 100644 assets/wildcaves3/models/block/flora_8.json create mode 100644 assets/wildcaves3/models/block/flora_9.json create mode 100644 assets/wildcaves3/models/block/fossil.json create mode 100644 assets/wildcaves3/models/block/sandstone_0.json create mode 100644 assets/wildcaves3/models/block/sandstone_1.json create mode 100644 assets/wildcaves3/models/block/sandstone_10.json create mode 100644 assets/wildcaves3/models/block/sandstone_11.json create mode 100644 assets/wildcaves3/models/block/sandstone_12.json create mode 100644 assets/wildcaves3/models/block/sandstone_2.json create mode 100644 assets/wildcaves3/models/block/sandstone_3.json create mode 100644 assets/wildcaves3/models/block/sandstone_4.json create mode 100644 assets/wildcaves3/models/block/sandstone_5.json create mode 100644 assets/wildcaves3/models/block/sandstone_6.json create mode 100644 assets/wildcaves3/models/block/sandstone_7.json create mode 100644 assets/wildcaves3/models/block/sandstone_8.json create mode 100644 assets/wildcaves3/models/block/sandstone_9.json create mode 100644 assets/wildcaves3/models/block/stone_0.json create mode 100644 assets/wildcaves3/models/block/stone_1.json create mode 100644 assets/wildcaves3/models/block/stone_10.json create mode 100644 assets/wildcaves3/models/block/stone_11.json create mode 100644 assets/wildcaves3/models/block/stone_12.json create mode 100644 assets/wildcaves3/models/block/stone_2.json create mode 100644 assets/wildcaves3/models/block/stone_3.json create mode 100644 assets/wildcaves3/models/block/stone_4.json create mode 100644 assets/wildcaves3/models/block/stone_5.json create mode 100644 assets/wildcaves3/models/block/stone_6.json create mode 100644 assets/wildcaves3/models/block/stone_7.json create mode 100644 assets/wildcaves3/models/block/stone_8.json create mode 100644 assets/wildcaves3/models/block/stone_9.json create mode 100644 assets/wildcaves3/models/item/flora_0.json create mode 100644 assets/wildcaves3/models/item/flora_1.json create mode 100644 assets/wildcaves3/models/item/flora_2.json create mode 100644 assets/wildcaves3/models/item/flora_3.json create mode 100644 assets/wildcaves3/models/item/flora_4.json create mode 100644 assets/wildcaves3/models/item/flora_5.json create mode 100644 assets/wildcaves3/models/item/flora_6.json create mode 100644 assets/wildcaves3/models/item/flora_7.json create mode 100644 assets/wildcaves3/models/item/flora_8.json create mode 100644 assets/wildcaves3/models/item/flora_9.json create mode 100644 assets/wildcaves3/models/item/fossil_0.json create mode 100644 assets/wildcaves3/models/item/icicle_0.json create mode 100644 assets/wildcaves3/models/item/icicle_1.json create mode 100644 assets/wildcaves3/models/item/icicle_2.json create mode 100644 assets/wildcaves3/models/item/sandstone_0.json create mode 100644 assets/wildcaves3/models/item/sandstone_1.json create mode 100644 assets/wildcaves3/models/item/sandstone_10.json create mode 100644 assets/wildcaves3/models/item/sandstone_11.json create mode 100644 assets/wildcaves3/models/item/sandstone_12.json create mode 100644 assets/wildcaves3/models/item/sandstone_2.json create mode 100644 assets/wildcaves3/models/item/sandstone_3.json create mode 100644 assets/wildcaves3/models/item/sandstone_4.json create mode 100644 assets/wildcaves3/models/item/sandstone_5.json create mode 100644 assets/wildcaves3/models/item/sandstone_6.json create mode 100644 assets/wildcaves3/models/item/sandstone_7.json create mode 100644 assets/wildcaves3/models/item/sandstone_8.json create mode 100644 assets/wildcaves3/models/item/sandstone_9.json create mode 100644 assets/wildcaves3/models/item/stone_0.json create mode 100644 assets/wildcaves3/models/item/stone_1.json create mode 100644 assets/wildcaves3/models/item/stone_10.json create mode 100644 assets/wildcaves3/models/item/stone_11.json create mode 100644 assets/wildcaves3/models/item/stone_12.json create mode 100644 assets/wildcaves3/models/item/stone_2.json create mode 100644 assets/wildcaves3/models/item/stone_3.json create mode 100644 assets/wildcaves3/models/item/stone_4.json create mode 100644 assets/wildcaves3/models/item/stone_5.json create mode 100644 assets/wildcaves3/models/item/stone_6.json create mode 100644 assets/wildcaves3/models/item/stone_7.json create mode 100644 assets/wildcaves3/models/item/stone_8.json create mode 100644 assets/wildcaves3/models/item/stone_9.json create mode 100644 wildCaves/ClientProxy.java create mode 100644 wildCaves/ServerProxy.java create mode 100644 wildCaves/generation/structureGen/DecorationHelper.java diff --git a/.gitignore b/.gitignore index 846e100..d9841bd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,8 @@ !LICENSE.md !README.md !mcmod.info -!assets/* -!wildCaves/* +!/assets/ +!/wildCaves/ !WildCaves3.png !update.xml !changelog.md diff --git a/assets/wildcaves3/blockstates/Decorations.json b/assets/wildcaves3/blockstates/Decorations.json new file mode 100644 index 0000000..adb4410 --- /dev/null +++ b/assets/wildcaves3/blockstates/Decorations.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=0": { "model": "wildcaves3:decor_0" }, + "type=1": { "model": "wildcaves3:decor_1" }, + "type=2": { "model": "wildcaves3:decor_2" } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/blockstates/Flora.json b/assets/wildcaves3/blockstates/Flora.json new file mode 100644 index 0000000..4edb33f --- /dev/null +++ b/assets/wildcaves3/blockstates/Flora.json @@ -0,0 +1,14 @@ +{ + "variants": { + "type=0": { "model": "wildcaves3:flora_0" }, + "type=1": { "model": "wildcaves3:flora_1" }, + "type=2": { "model": "wildcaves3:flora_2" }, + "type=3": { "model": "wildcaves3:flora_3" }, + "type=4": { "model": "wildcaves3:flora_4" }, + "type=5": { "model": "wildcaves3:flora_5" }, + "type=6": { "model": "wildcaves3:flora_6" }, + "type=7": { "model": "wildcaves3:flora_7" }, + "type=8": { "model": "wildcaves3:flora_8" }, + "type=9": { "model": "wildcaves3:flora_9" } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/blockstates/FossilBlock.json b/assets/wildcaves3/blockstates/FossilBlock.json new file mode 100644 index 0000000..2d8b8fe --- /dev/null +++ b/assets/wildcaves3/blockstates/FossilBlock.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "wildcaves3:fossil" } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/blockstates/SandstoneSalactite.json b/assets/wildcaves3/blockstates/SandstoneSalactite.json new file mode 100644 index 0000000..45f49f3 --- /dev/null +++ b/assets/wildcaves3/blockstates/SandstoneSalactite.json @@ -0,0 +1,17 @@ +{ + "variants": { + "type=0": { "model": "wildcaves3:sandstone_0" }, + "type=1": { "model": "wildcaves3:sandstone_1" }, + "type=2": { "model": "wildcaves3:sandstone_2" }, + "type=3": { "model": "wildcaves3:sandstone_3" }, + "type=4": { "model": "wildcaves3:sandstone_4" }, + "type=5": { "model": "wildcaves3:sandstone_5" }, + "type=6": { "model": "wildcaves3:sandstone_6" }, + "type=7": { "model": "wildcaves3:sandstone_7" }, + "type=8": { "model": "wildcaves3:sandstone_8" }, + "type=9": { "model": "wildcaves3:sandstone_9" }, + "type=10": { "model": "wildcaves3:sandstone_10" }, + "type=11": { "model": "wildcaves3:sandstone_11" }, + "type=12": { "model": "wildcaves3:sandstone_12" } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/blockstates/StoneStalactite.json b/assets/wildcaves3/blockstates/StoneStalactite.json new file mode 100644 index 0000000..28ad065 --- /dev/null +++ b/assets/wildcaves3/blockstates/StoneStalactite.json @@ -0,0 +1,17 @@ +{ + "variants": { + "type=0": { "model": "wildcaves3:stone_0" }, + "type=1": { "model": "wildcaves3:stone_1" }, + "type=2": { "model": "wildcaves3:stone_2" }, + "type=3": { "model": "wildcaves3:stone_3" }, + "type=4": { "model": "wildcaves3:stone_4" }, + "type=5": { "model": "wildcaves3:stone_5" }, + "type=6": { "model": "wildcaves3:stone_6" }, + "type=7": { "model": "wildcaves3:stone_7" }, + "type=8": { "model": "wildcaves3:stone_8" }, + "type=9": { "model": "wildcaves3:stone_9" }, + "type=10": { "model": "wildcaves3:stone_10" }, + "type=11": { "model": "wildcaves3:stone_11" }, + "type=12": { "model": "wildcaves3:stone_12" } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/lang/es_ES.lang b/assets/wildcaves3/lang/es_ES.lang new file mode 100644 index 0000000..0c03528 --- /dev/null +++ b/assets/wildcaves3/lang/es_ES.lang @@ -0,0 +1,49 @@ + +itemGroup.WildCaves3=Wild Caves 3 + +fossil1.name=Montón de Huesos + +stalactite1.name=Estalactita +stalactite2.name=Estalactita +stalactite3.name=Estalactita +stalactite4.name=Estalactita +stalactiteConnection1.name=Estalactita +stalactiteConnection2.name=Estalactita +stalactiteConnection3.name=Estalactita +stalactiteConnection4.name=Estalactita +stalactiteEnd.name=Estalagmita +stalacmiteEnd.name=Estalagmita +stalacmite1.name=Estalagmita +stalacmite2.name=Estalagmita +stalacmite3.name=Estalagmita + +sandstoneStalactite1.name=Estalactita de Arenisca +sandstoneStalactite2.name=Estalactita de Arenisca +sandstoneStalactite3.name=Estalactita de Arenisca +sandstoneStalactite4.name=Estalactita de Arenisca +sandstoneStalactiteConnection1.name=Estalactita de Arenisca +sandstoneStalactiteConnection2.name=Estalactita de Arenisca +sandstoneStalactiteConnection3.name=Estalactita de Arenisca +sandstoneStalactiteConnection4.name=Estalactita de Arenisca +sandstoneStalactiteEnd.name=Estalagmita de Arenisca +sandstoneStalacmiteEnd.name=Estalagmita de Arenisca +sandstoneStalacmite1.name=Estalagmita de Arenisca +sandstoneStalacmite2.name=Estalagmita de Arenisca +sandstoneStalacmite3.name=Estalagmita de Arenisca + +glowcap1.name=Seta Brillante +glowcap2.name=Seta Brillante +glowcap3.name=Seta Brillante +gloweed1.name=Hierba Brillante +glowcap4top.name=Seta Brillante +glowcap4bottom.name=Seta Brillante + +bluecap1.name=Seta de Hielo +bluecap2.name=Seta de Hielo +bluecap3.name=Seta de Hielo +bluecap4.name=Seta de Hielo + +icicle.name=Carámbano +icicle1.name=Carámbano +icicle2.name=Carámbano +icicle3.name=Carámbano \ No newline at end of file diff --git a/assets/wildcaves3/models/block/decor_0.json b/assets/wildcaves3/models/block/decor_0.json new file mode 100644 index 0000000..83f8a91 --- /dev/null +++ b/assets/wildcaves3/models/block/decor_0.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/decorations0" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/decor_1.json b/assets/wildcaves3/models/block/decor_1.json new file mode 100644 index 0000000..ec315de --- /dev/null +++ b/assets/wildcaves3/models/block/decor_1.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/decorations1" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/decor_2.json b/assets/wildcaves3/models/block/decor_2.json new file mode 100644 index 0000000..c697c35 --- /dev/null +++ b/assets/wildcaves3/models/block/decor_2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/decorations2" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_0.json b/assets/wildcaves3/models/block/flora_0.json new file mode 100644 index 0000000..01e520d --- /dev/null +++ b/assets/wildcaves3/models/block/flora_0.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora0" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_1.json b/assets/wildcaves3/models/block/flora_1.json new file mode 100644 index 0000000..d7a31c7 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_1.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora1" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_2.json b/assets/wildcaves3/models/block/flora_2.json new file mode 100644 index 0000000..4d18a69 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora2" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_3.json b/assets/wildcaves3/models/block/flora_3.json new file mode 100644 index 0000000..ad46026 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora3" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_4.json b/assets/wildcaves3/models/block/flora_4.json new file mode 100644 index 0000000..7cfd065 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_4.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora4" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_5.json b/assets/wildcaves3/models/block/flora_5.json new file mode 100644 index 0000000..fd91fd5 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_5.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora5" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_6.json b/assets/wildcaves3/models/block/flora_6.json new file mode 100644 index 0000000..dd5cb2e --- /dev/null +++ b/assets/wildcaves3/models/block/flora_6.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora6" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_7.json b/assets/wildcaves3/models/block/flora_7.json new file mode 100644 index 0000000..fb3ea72 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_7.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora7" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_8.json b/assets/wildcaves3/models/block/flora_8.json new file mode 100644 index 0000000..0aa6e9e --- /dev/null +++ b/assets/wildcaves3/models/block/flora_8.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora8" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/flora_9.json b/assets/wildcaves3/models/block/flora_9.json new file mode 100644 index 0000000..d571c53 --- /dev/null +++ b/assets/wildcaves3/models/block/flora_9.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures":{ + "cross": "wildcaves3:blocks/flora9" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/fossil.json b/assets/wildcaves3/models/block/fossil.json new file mode 100644 index 0000000..3f293c5 --- /dev/null +++ b/assets/wildcaves3/models/block/fossil.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cube_all", + "textures": { + "all": "wildcaves3:blocks/fossils0" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_0.json b/assets/wildcaves3/models/block/sandstone_0.json new file mode 100644 index 0000000..135c776 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_0.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure0" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_1.json b/assets/wildcaves3/models/block/sandstone_1.json new file mode 100644 index 0000000..87e4fc3 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_1.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure1" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_10.json b/assets/wildcaves3/models/block/sandstone_10.json new file mode 100644 index 0000000..eace93a --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_10.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure10" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_11.json b/assets/wildcaves3/models/block/sandstone_11.json new file mode 100644 index 0000000..222c858 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_11.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure11" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_12.json b/assets/wildcaves3/models/block/sandstone_12.json new file mode 100644 index 0000000..02ff5cc --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_12.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure12" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_2.json b/assets/wildcaves3/models/block/sandstone_2.json new file mode 100644 index 0000000..d551394 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_2.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure2" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_3.json b/assets/wildcaves3/models/block/sandstone_3.json new file mode 100644 index 0000000..7f0f0b2 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_3.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure3" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_4.json b/assets/wildcaves3/models/block/sandstone_4.json new file mode 100644 index 0000000..d1bf7a3 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_4.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure4" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_5.json b/assets/wildcaves3/models/block/sandstone_5.json new file mode 100644 index 0000000..9797808 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_5.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure5" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_6.json b/assets/wildcaves3/models/block/sandstone_6.json new file mode 100644 index 0000000..f3a0df4 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_6.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure6" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_7.json b/assets/wildcaves3/models/block/sandstone_7.json new file mode 100644 index 0000000..9250134 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_7.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure7" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_8.json b/assets/wildcaves3/models/block/sandstone_8.json new file mode 100644 index 0000000..6dd3b44 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_8.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure8" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/sandstone_9.json b/assets/wildcaves3/models/block/sandstone_9.json new file mode 100644 index 0000000..5fbab24 --- /dev/null +++ b/assets/wildcaves3/models/block/sandstone_9.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/sandstoneStructure9" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_0.json b/assets/wildcaves3/models/block/stone_0.json new file mode 100644 index 0000000..34d0810 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_0.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure0" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_1.json b/assets/wildcaves3/models/block/stone_1.json new file mode 100644 index 0000000..c240445 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_1.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure1" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_10.json b/assets/wildcaves3/models/block/stone_10.json new file mode 100644 index 0000000..9bf6cf0 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_10.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure10" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_11.json b/assets/wildcaves3/models/block/stone_11.json new file mode 100644 index 0000000..93f3fb1 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_11.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure11" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_12.json b/assets/wildcaves3/models/block/stone_12.json new file mode 100644 index 0000000..f1dadcd --- /dev/null +++ b/assets/wildcaves3/models/block/stone_12.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure12" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_2.json b/assets/wildcaves3/models/block/stone_2.json new file mode 100644 index 0000000..5ae84a9 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_2.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure2" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_3.json b/assets/wildcaves3/models/block/stone_3.json new file mode 100644 index 0000000..bb18f0d --- /dev/null +++ b/assets/wildcaves3/models/block/stone_3.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure3" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_4.json b/assets/wildcaves3/models/block/stone_4.json new file mode 100644 index 0000000..a43f97e --- /dev/null +++ b/assets/wildcaves3/models/block/stone_4.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure4" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_5.json b/assets/wildcaves3/models/block/stone_5.json new file mode 100644 index 0000000..c40b582 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_5.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure5" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_6.json b/assets/wildcaves3/models/block/stone_6.json new file mode 100644 index 0000000..31b559a --- /dev/null +++ b/assets/wildcaves3/models/block/stone_6.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure6" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_7.json b/assets/wildcaves3/models/block/stone_7.json new file mode 100644 index 0000000..6b2ef7b --- /dev/null +++ b/assets/wildcaves3/models/block/stone_7.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure7" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_8.json b/assets/wildcaves3/models/block/stone_8.json new file mode 100644 index 0000000..46d134d --- /dev/null +++ b/assets/wildcaves3/models/block/stone_8.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure8" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/block/stone_9.json b/assets/wildcaves3/models/block/stone_9.json new file mode 100644 index 0000000..b73d041 --- /dev/null +++ b/assets/wildcaves3/models/block/stone_9.json @@ -0,0 +1,6 @@ +{ + "parent":"block/cross", + "textures": { + "cross": "wildcaves3:blocks/stoneStructure9" + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_0.json b/assets/wildcaves3/models/item/flora_0.json new file mode 100644 index 0000000..29a2f32 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_0.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora0" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_1.json b/assets/wildcaves3/models/item/flora_1.json new file mode 100644 index 0000000..3f2ff99 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_1.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora1" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_2.json b/assets/wildcaves3/models/item/flora_2.json new file mode 100644 index 0000000..90134be --- /dev/null +++ b/assets/wildcaves3/models/item/flora_2.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora2" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_3.json b/assets/wildcaves3/models/item/flora_3.json new file mode 100644 index 0000000..295e09a --- /dev/null +++ b/assets/wildcaves3/models/item/flora_3.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora3" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_4.json b/assets/wildcaves3/models/item/flora_4.json new file mode 100644 index 0000000..cd292fc --- /dev/null +++ b/assets/wildcaves3/models/item/flora_4.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora4" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_5.json b/assets/wildcaves3/models/item/flora_5.json new file mode 100644 index 0000000..fab7eb1 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_5.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora5" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_6.json b/assets/wildcaves3/models/item/flora_6.json new file mode 100644 index 0000000..df78575 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_6.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora6" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_7.json b/assets/wildcaves3/models/item/flora_7.json new file mode 100644 index 0000000..915d5f1 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_7.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora7" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_8.json b/assets/wildcaves3/models/item/flora_8.json new file mode 100644 index 0000000..3cf6bc8 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_8.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora8" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_9.json b/assets/wildcaves3/models/item/flora_9.json new file mode 100644 index 0000000..bda6c32 --- /dev/null +++ b/assets/wildcaves3/models/item/flora_9.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/flora9" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/fossil_0.json b/assets/wildcaves3/models/item/fossil_0.json new file mode 100644 index 0000000..a96c456 --- /dev/null +++ b/assets/wildcaves3/models/item/fossil_0.json @@ -0,0 +1,10 @@ +{ + "parent": "wildcaves3:block/fossil", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/icicle_0.json b/assets/wildcaves3/models/item/icicle_0.json new file mode 100644 index 0000000..2085195 --- /dev/null +++ b/assets/wildcaves3/models/item/icicle_0.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/decorations0" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/icicle_1.json b/assets/wildcaves3/models/item/icicle_1.json new file mode 100644 index 0000000..6c54f5d --- /dev/null +++ b/assets/wildcaves3/models/item/icicle_1.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/decorations1" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/icicle_2.json b/assets/wildcaves3/models/item/icicle_2.json new file mode 100644 index 0000000..e506a9d --- /dev/null +++ b/assets/wildcaves3/models/item/icicle_2.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/decorations2" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_0.json b/assets/wildcaves3/models/item/sandstone_0.json new file mode 100644 index 0000000..72f320c --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_0.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure0" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_1.json b/assets/wildcaves3/models/item/sandstone_1.json new file mode 100644 index 0000000..fcf862a --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_1.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure1" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_10.json b/assets/wildcaves3/models/item/sandstone_10.json new file mode 100644 index 0000000..bb97d81 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_10.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure10" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_11.json b/assets/wildcaves3/models/item/sandstone_11.json new file mode 100644 index 0000000..237f3d2 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_11.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure11" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_12.json b/assets/wildcaves3/models/item/sandstone_12.json new file mode 100644 index 0000000..694d6e8 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_12.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure12" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_2.json b/assets/wildcaves3/models/item/sandstone_2.json new file mode 100644 index 0000000..fdb01a7 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_2.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure2" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_3.json b/assets/wildcaves3/models/item/sandstone_3.json new file mode 100644 index 0000000..b1163be --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_3.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure3" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_4.json b/assets/wildcaves3/models/item/sandstone_4.json new file mode 100644 index 0000000..87cacad --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_4.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure4" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_5.json b/assets/wildcaves3/models/item/sandstone_5.json new file mode 100644 index 0000000..4ac4f1f --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_5.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure5" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_6.json b/assets/wildcaves3/models/item/sandstone_6.json new file mode 100644 index 0000000..7c7ba16 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_6.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure6" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_7.json b/assets/wildcaves3/models/item/sandstone_7.json new file mode 100644 index 0000000..96ee6e6 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_7.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure7" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_8.json b/assets/wildcaves3/models/item/sandstone_8.json new file mode 100644 index 0000000..591936f --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_8.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure8" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_9.json b/assets/wildcaves3/models/item/sandstone_9.json new file mode 100644 index 0000000..bc04b17 --- /dev/null +++ b/assets/wildcaves3/models/item/sandstone_9.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/sandstoneStructure9" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_0.json b/assets/wildcaves3/models/item/stone_0.json new file mode 100644 index 0000000..9b66864 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_0.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure0" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_1.json b/assets/wildcaves3/models/item/stone_1.json new file mode 100644 index 0000000..5a3375e --- /dev/null +++ b/assets/wildcaves3/models/item/stone_1.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure1" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_10.json b/assets/wildcaves3/models/item/stone_10.json new file mode 100644 index 0000000..8da2a1e --- /dev/null +++ b/assets/wildcaves3/models/item/stone_10.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure10" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_11.json b/assets/wildcaves3/models/item/stone_11.json new file mode 100644 index 0000000..ec2f37d --- /dev/null +++ b/assets/wildcaves3/models/item/stone_11.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure11" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_12.json b/assets/wildcaves3/models/item/stone_12.json new file mode 100644 index 0000000..4041f3a --- /dev/null +++ b/assets/wildcaves3/models/item/stone_12.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure12" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_2.json b/assets/wildcaves3/models/item/stone_2.json new file mode 100644 index 0000000..7f8d6ad --- /dev/null +++ b/assets/wildcaves3/models/item/stone_2.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure2" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_3.json b/assets/wildcaves3/models/item/stone_3.json new file mode 100644 index 0000000..2ad3606 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_3.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure3" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_4.json b/assets/wildcaves3/models/item/stone_4.json new file mode 100644 index 0000000..17971e5 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_4.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure4" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_5.json b/assets/wildcaves3/models/item/stone_5.json new file mode 100644 index 0000000..2d6e4a1 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_5.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure5" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_6.json b/assets/wildcaves3/models/item/stone_6.json new file mode 100644 index 0000000..164ca84 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_6.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure6" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_7.json b/assets/wildcaves3/models/item/stone_7.json new file mode 100644 index 0000000..2c6cbc1 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_7.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure7" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_8.json b/assets/wildcaves3/models/item/stone_8.json new file mode 100644 index 0000000..08056d6 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_8.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure8" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_9.json b/assets/wildcaves3/models/item/stone_9.json new file mode 100644 index 0000000..e3d0c31 --- /dev/null +++ b/assets/wildcaves3/models/item/stone_9.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "wildcaves3:blocks/stoneStructure9" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0212f91..8b22e91 100644 --- a/build.gradle +++ b/build.gradle @@ -19,8 +19,9 @@ sourceCompatibility = 1.6 targetCompatibility = 1.6 version = "0.4.3.7" minecraft { - version = "1.7.10-10.13.2.1230" + version = "1.8-11.14.1.1350" runDir = "eclipse" + mappings = "snapshot_20150401" replace '${version}', version } archivesBaseName = project.projectDir.name diff --git a/changelog.md b/changelog.md index ff556e7..80127b9 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +== WildCaves3 0.4.3.7 (1.8) == +* Updated for 1.8 (block states and models) +* Made flooded caves bigger + == WildCaves3 0.4.3.6 (1.7.2) == * Updated for 1.7.2 * Added "simple" flooded cave generation diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5949406..678d9d8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Jan 04 18:03:48 CET 2015 +#Wed Jul 02 15:54:47 CDT 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip diff --git a/update.xml b/update.xml index b0ef8ed..b400081 100644 --- a/update.xml +++ b/update.xml @@ -1,4 +1,11 @@ + + + = numOfStructures) - metadata = numOfStructures - 1; - return this.iconArray[metadata]; - } - - @Override - public int getRenderType() { - return 1; + public EnumWorldBlockLayer getBlockLayer() + { + return EnumWorldBlockLayer.CUTOUT; } @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { - for (int i = 0; i < numOfStructures; ++i) { + for (int i = 0; i < getNumOfStructures(); ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public Item getItemDropped(int metadata, Random random, int par3) { + public Item getItemDropped(IBlockState metadata, Random random, int par3) { return Item.getItemFromBlock(Blocks.ice); } @Override - public boolean renderAsNormalBlock() { + public boolean isFullBlock() { return false; } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - if (!this.canBlockStay(world, x, y, z)){ - this.onBlockEventReceived(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { + if (!this.canBlockStay(world, pos)){ + world.setBlockToAir(pos); } } @@ -101,23 +118,14 @@ public int quantityDropped(Random rand) { return rand.nextInt(3) - 1; } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconArray = new IIcon[numOfStructures]; - for (int i = 0; i < this.iconArray.length; ++i) { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":decorations" + i); - } - } - @Override public boolean isOpaqueCube() { return false; } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { - int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, BlockPos pos) { + int metadata = getMetaFromState(par1IBlockAccess.getBlockState(pos)); switch (metadata) { case 1: this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index af4237b..83c7ace 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -1,97 +1,113 @@ package wildCaves; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - import net.minecraft.block.Block; import net.minecraft.block.BlockBush; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.IShearable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; public class BlockFlora extends BlockBush implements IShearable { - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - private final int numOfStructures; + private PropertyInteger ALL_TYPE; - public BlockFlora(int number) { + public BlockFlora() { super(Material.plants); - this.numOfStructures = number; this.setCreativeTab(WildCaves.tabWildCaves); this.setLightOpacity(0); this.setStepSound(soundTypeGrass); setResistance(0.6F); - setBlockName("floraBlock"); + setUnlocalizedName("floraBlock"); + this.setDefaultState(this.blockState.getBaseState().withProperty(ALL_TYPE, 0)); + } + + public int getNumOfStructures(){ + return WildCaves.caps.size(); + } + + @Override + protected BlockState createBlockState() + { + if(ALL_TYPE == null) { + ALL_TYPE = PropertyInteger.create("type", 0, getNumOfStructures() - 1); + } + return new BlockState(this, new IProperty[]{ALL_TYPE}); } @Override - public boolean canBlockStay(World world, int x, int y, int z) { - if(world.isBlockNormalCubeDefault(x, y - 1, z, false)) + public int getMetaFromState(IBlockState state){ + return (Integer) state.getValue(ALL_TYPE); + } + + @Override + public IBlockState getStateFromMeta(int meta){ + return this.getDefaultState().withProperty(ALL_TYPE, meta); + } + + @Override + public boolean canBlockStay(World world, BlockPos pos, IBlockState state) { + if(world.isBlockNormalCube(pos.down(), true)) return true; - Block bellowId = world.getBlock(x, y - 1, z); - return bellowId.getMaterial().getMaterialMapColor() == MapColor.iceColor || (bellowId == this && world.getBlockMetadata(x, y - 1, z) == 4); + Block bellowId = world.getBlockState(pos.down()).getBlock(); + return bellowId.getMaterial().getMaterialMapColor() == MapColor.iceColor || (bellowId == this && getMetaFromState(world.getBlockState(pos.down())) == 4); } @Override - public int damageDropped(int meta){ + public int damageDropped(IBlockState meta){ return 0; } - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - if (metadata >= numOfStructures) - metadata = numOfStructures - 1; - return this.iconArray[metadata]; - } - @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { - for (int i = 0; i < numOfStructures; ++i) { + for (int i = 0; i < getNumOfStructures(); ++i) { par3List.add(new ItemStack(par1, 1, i)); } } @Override - public Item getItemDropped(int par1, Random par2Random, int par3) { + public Item getItemDropped(IBlockState par1, Random par2Random, int par3) { return Items.glowstone_dust; } @Override - public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) { + public boolean isShearable(ItemStack item, IBlockAccess world, BlockPos pos) { return true; } @Override - public void checkAndDropBlock(World world, int x, int y, int z) { - if (!this.canBlockStay(world, x, y, z)) - world.setBlockToAir(x, y, z); + protected void checkAndDropBlock(World world, BlockPos pos, IBlockState state) { + if (!this.canBlockStay(world, pos, state)) + world.setBlockToAir(pos); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block blockID) { - checkAndDropBlock(world, x, y, z); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block blockID) { + checkAndDropBlock(world, pos, state); } @Override - public ArrayList onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) { + public ArrayList onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune) { ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); - ((World)world).setBlockToAir(x, y, z); + ret.add(new ItemStack(this, 1, getMetaFromState(world.getBlockState(pos)))); + ((World)world).setBlockToAir(pos); return ret; } @@ -101,17 +117,8 @@ public int quantityDropped(Random rand) { } @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconArray = new IIcon[numOfStructures]; - for (int i = 0; i < this.iconArray.length; ++i) { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":flora" + i); - } - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { - int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, BlockPos pos) { + int metadata = getMetaFromState(par1IBlockAccess.getBlockState(pos)); //setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ) switch (metadata) { case 1: @@ -132,7 +139,7 @@ protected boolean canPlaceBlockOn(Block par1) { } @Override - public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction, IPlantable plantable){ + public boolean canSustainPlant(IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable){ return true; } diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index 6e1a750..4ce9643 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -1,59 +1,25 @@ package wildCaves; -import java.util.List; -import java.util.Random; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -public class BlockFossils extends Block { - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - private final int numOfStructures; +import java.util.Random; - public BlockFossils(int number) { +public class BlockFossils extends Block { + public BlockFossils() { super(Material.rock); - this.numOfStructures = number; this.setHardness(1F); this.setCreativeTab(WildCaves.tabWildCaves); - setBlockName("fossilsBlock"); + setUnlocalizedName("fossilsBlock"); this.setStepSound(soundTypePiston); } @Override - public int getDamageValue(World world, int x, int y, int z) { - return world.getBlockMetadata(x, y, z); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - if (metadata >= numOfStructures) - metadata = numOfStructures - 1; - return this.iconArray[metadata]; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { - for (int i = 0; i < numOfStructures; ++i) { - par3List.add(new ItemStack(par1, 1, i)); - } - } - - @Override - public Item getItemDropped(int metadata, Random random, int par3) { + public Item getItemDropped(IBlockState metadata, Random random, int par3) { int choise = Utils.weightedChoise(0.5f, 0.15f, 0.05f, 0.5f, 0, 0); Item result = null; switch (choise) { @@ -72,12 +38,4 @@ public Item getItemDropped(int metadata, Random random, int par3) { return result; } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconArray = new IIcon[numOfStructures]; - for (int i = 0; i < this.iconArray.length; ++i) { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + ":fossils" + i); - } - } } diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 5ffe75f..4907202 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -1,11 +1,11 @@ package wildCaves; -import java.util.List; -import java.util.Random; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -13,29 +13,57 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.BlockPos; import net.minecraft.util.DamageSource; -import net.minecraft.util.IIcon; +import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.List; +import java.util.Random; public class BlockStalactite extends Block { - private final int numOfStructures; private final Item droppedItem; - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; + private PropertyInteger ALL_TYPE; - public BlockStalactite(int num, Item drop) { + public BlockStalactite(Item drop) { super(Material.rock); - this.numOfStructures = num; this.droppedItem = drop; this.setHardness(0.8F); this.setCreativeTab(WildCaves.tabWildCaves); + this.setDefaultState(this.blockState.getBaseState().withProperty(ALL_TYPE, 0)); + } + + public int getNumOfStructures(){ + return WildCaves.sandStalacs.size(); + } + + public boolean isUp(IBlockState state){ + return getMetaFromState(state) < 4; + } + + @Override + protected BlockState createBlockState(){ + if(ALL_TYPE == null) { + ALL_TYPE = PropertyInteger.create("type", 0, getNumOfStructures() - 1); + } + return new BlockState(this, new IProperty[]{ALL_TYPE}); + } + + @Override + public int getMetaFromState(IBlockState state){ + return (Integer) state.getValue(ALL_TYPE); + } + + @Override + public IBlockState getStateFromMeta(int meta){ + return this.getDefaultState().withProperty(ALL_TYPE, meta); } @Override - public Item getItemDropped(int metadata, Random random, int par3) { + public Item getItemDropped(IBlockState metadata, Random random, int par3) { return droppedItem; } @@ -44,16 +72,15 @@ public int quantityDropped(Random rand) { return rand.nextInt(3) - 1; } - @Override - public boolean canBlockStay(World world, int x, int y, int z) { + public boolean canBlockStay(World world, BlockPos pos, IBlockState state) { boolean result = false; - int metadata = world.getBlockMetadata(x, y, z); + int metadata = getMetaFromState(state); if ((metadata != 0 && metadata < 4) || metadata == 7 || metadata == 11) - result = connected(world, x, y, z, true); + result = connected(world, pos, true); else if (metadata == 6 || (metadata > 7 && metadata < 11) || metadata == 12) - result = connected(world, x, y, z, false); + result = connected(world, pos, false); else if (metadata == 0 || metadata == 4 || metadata == 5) - result = connected(world, x, y, z, true) || connected(world, x, y, z, false); + result = connected(world, pos, true) || connected(world, pos, false); return result; } @@ -63,7 +90,7 @@ protected boolean canSilkHarvest() { } //aux funtion for canblockStay - public boolean connected(World world, int x, int y, int z, boolean searchUp) { + public boolean connected(World world, BlockPos pos, boolean searchUp) { int increment; int i; if (searchUp) @@ -71,65 +98,59 @@ public boolean connected(World world, int x, int y, int z, boolean searchUp) { else increment = -1; i = increment; - while (world.getBlock(x, y + i, z) == WildCaves.blockStoneStalactite || world.getBlock(x, y + i, z) == WildCaves.blockSandStalactite) + while (world.getBlockState(pos.up(i)).getBlock() == WildCaves.blockStoneStalactite || world.getBlockState(pos.up(i)).getBlock() == WildCaves.blockSandStalactite) i = i + increment; - return world.getBlock(x, y + i, z).isNormalCube(world, x, y+i, z); + return world.getBlockState(pos.up(i)).getBlock().isNormalCube(world, pos.up(i)); } @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { + public AxisAlignedBB getCollisionBoundingBox(World par1World, BlockPos pos, IBlockState state) { if (WildCaves.solidStalactites) - return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4); + return super.getCollisionBoundingBox(par1World, pos, state); else return null; } @Override - public int getDamageValue(World world, int x, int y, int z) { - return world.getBlockMetadata(x, y, z); + public int getDamageValue(World world, BlockPos pos) { + return getMetaFromState(world.getBlockState(pos)); } @Override @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - if (metadata >= numOfStructures) - metadata = numOfStructures - 1; - return this.iconArray[metadata]; - } - - @Override - public int getRenderType() { - return 1; + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + for (int i = 0; i < getNumOfStructures(); ++i) { + par3List.add(new ItemStack(par1, 1, i)); + } } @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { - for (int i = 0; i < numOfStructures; ++i) { - par3List.add(new ItemStack(par1, 1, i)); - } + public EnumWorldBlockLayer getBlockLayer() + { + return EnumWorldBlockLayer.CUTOUT; } @Override - public boolean renderAsNormalBlock() { + public boolean isFullBlock() { return false; } @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { - this.updateTick(world, x, y, z, null); + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { + this.updateTick(world, pos, state, null); } @Override - public void updateTick(World world, int x, int y, int z, Random random) { - if (!this.canBlockStay(world, x, y, z)){ - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); + public void updateTick(World world, BlockPos pos, IBlockState state, Random random) { + if (!this.canBlockStay(world, pos, state)){ + this.dropBlockAsItem(world, pos, state, 0); + world.setBlockToAir(pos); } } @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + public void onEntityCollidedWithBlock(World world, BlockPos pos, Entity entity) { if(entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode && ((EntityPlayer) entity).capabilities.isFlying){ return; } @@ -138,25 +159,16 @@ public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e } @Override - public void onFallenUpon(World world, int par2, int par3, int par4, Entity entity, float par6) { + public void onFallenUpon(World world, BlockPos pos, Entity entity, float par6) { if (WildCaves.damageWhenFallenOn && entity.isEntityAlive()) { entity.attackEntityFrom(DamageSource.generic, 5); } } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block blockID) { - if (!world.isRemote && !this.canBlockStay(world, x, y, z)) { - world.func_147480_a(x, y, z, true); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconArray = new IIcon[numOfStructures]; - for (int i = 0; i < this.iconArray.length; ++i) { - this.iconArray[i] = iconRegister.registerIcon(WildCaves.modid + getTextureName() + i); + public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block neighbor) { + if (!world.isRemote && !this.canBlockStay(world, pos, state)) { + world.destroyBlock(pos, true); } } @@ -166,8 +178,8 @@ public boolean isOpaqueCube() { } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { - int metadata = par1IBlockAccess.getBlockMetadata(par2, par3, par4); + public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, BlockPos pos) { + int metadata = getMetaFromState(par1IBlockAccess.getBlockState(pos)); switch (metadata) { case 1: this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index fe3b314..3548146 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -1,34 +1,40 @@ package wildCaves; -import java.util.Random; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumParticleTypes; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.Random; public class BlockStoneStalactite extends BlockStalactite { - public BlockStoneStalactite(int number) { - super(number, Item.getItemFromBlock(Blocks.cobblestone)); - setBlockName("stoneStalactiteBlock"); - setBlockTextureName(":stoneStructure"); + public BlockStoneStalactite() { + super(Item.getItemFromBlock(Blocks.cobblestone)); + setUnlocalizedName("stoneStalactiteBlock"); + } + + @Override + public int getNumOfStructures(){ + return WildCaves.stalacs.size(); } @Override @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random random) { - if (world.getBlockMetadata(x, y, z) < 4) { - boolean isWatered = world.getBlock(x, y + 2, z).getMaterial().isLiquid(); - int h = y; - while (world.getBlock(x, h, z) == this) { + public void randomDisplayTick(World world, BlockPos pos, IBlockState state, Random random) { + if (isUp(state)) { + boolean isWatered = world.getBlockState(pos.up(2)).getBlock().getMaterial().isLiquid(); + while (world.getBlockState(pos).getBlock() == this) { if (random.nextInt(5 + (isWatered ? 0 : 10)) == 0) { - double d0 = x + random.nextFloat(); - double d2 = z + random.nextFloat(); - double d1 = h + 0.05D + (d0 - x) * (d2 - z); - world.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D); + double d0 = pos.getX() + random.nextFloat(); + double d2 = pos.getZ() + random.nextFloat(); + double d1 = pos.getY() + 0.05D + (d0 - pos.getX()) * (d2 - pos.getZ()); + world.spawnParticle(EnumParticleTypes.DRIP_WATER, d0, d1, d2, 0.0D, 0.0D, 0.0D); } - h--; + pos = pos.down(); } } } diff --git a/wildCaves/ClientProxy.java b/wildCaves/ClientProxy.java new file mode 100644 index 0000000..da1fdeb --- /dev/null +++ b/wildCaves/ClientProxy.java @@ -0,0 +1,59 @@ +package wildCaves; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemModelMesher; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.item.Item; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.ModContainer; + +public class ClientProxy extends ServerProxy{ + private static final String PREFIX = "wildcaves3:"; + + @Override + public void registerRenders() { + Item item = Item.getItemFromBlock(WildCaves.blockStoneStalactite); + ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher(); + for(int i = 0; i < WildCaves.stalacs.size(); i++) { + ModelLoader.addVariantName(item, PREFIX + "stone_" + i); + mesher.register(item, i, defaultModel("stone_" + i)); + } + item = Item.getItemFromBlock(WildCaves.blockSandStalactite); + for(int i = 0; i < WildCaves.sandStalacs.size(); i++) { + ModelLoader.addVariantName(item, PREFIX + "sandstone_" + i); + mesher.register(item, i, defaultModel("sandstone_" + i)); + } + item = Item.getItemFromBlock(WildCaves.blockDecorations); + for(int i = 0; i < WildCaves.icicles.size(); i++) { + ModelLoader.addVariantName(item, PREFIX + "icicle_" + i); + mesher.register(item, i, defaultModel("icicle_" + i)); + } + item = Item.getItemFromBlock(WildCaves.blockFlora); + for(int i = 0; i < WildCaves.caps.size(); i++) { + ModelLoader.addVariantName(item, PREFIX + "flora_" + i); + mesher.register(item, i, defaultModel("flora_" + i)); + } + item = Item.getItemFromBlock(WildCaves.blockFossils); + for(int i = 0; i < WildCaves.fossils.size(); i++) { + ModelLoader.addVariantName(item, PREFIX + "fossil_" + i); + mesher.register(item, i, defaultModel("fossil_" + i)); + } + } + + private ModelResourceLocation defaultModel(String type){ + return new ModelResourceLocation(PREFIX + type, "inventory"); + } + + @Override + public void MUD(){ + try { + Class.forName("mods.mud.ModUpdateDetector").getDeclaredMethod("registerMod", ModContainer.class, String.class, String.class).invoke(null, + FMLCommonHandler.instance().findContainerFor(this), + "https://raw.github.com/GotoLink/WildCaves3/master/update.xml", + "https://raw.github.com/GotoLink/WildCaves3/master/changelog.md" + ); + } catch (Throwable e) { + } + } +} diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 86da145..0f1a12a 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -1,15 +1,16 @@ package wildCaves; -import java.util.Random; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraftforge.event.terraingen.OreGenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.Random; public final class EventManager { - private final WorldGenMinable[] mines = {new WorldGenMinable(WildCaves.blockFossils, 4), new WorldGenMinable(WildCaves.blockFossils, 5), new WorldGenMinable(WildCaves.blockFossils, 6)}; + private final WorldGenMinable[] mines = {new WorldGenMinable(WildCaves.blockFossils.getDefaultState(), 4), new WorldGenMinable(WildCaves.blockFossils.getDefaultState(), 5), new WorldGenMinable(WildCaves.blockFossils.getDefaultState(), 6)}; private final int chanceForNodeToSpawn; public EventManager(int chanceForNodeToSpawn) { @@ -18,38 +19,23 @@ public EventManager(int chanceForNodeToSpawn) @SubscribeEvent public void generate(OreGenEvent.Post oreGen){ - if (!WorldGenWildCaves.dimensionBlacklist.contains(oreGen.world.provider.dimensionId)) { - this.addOreSpawn(mines[oreGen.rand.nextInt(3)], oreGen.world, oreGen.rand, oreGen.worldX, oreGen.worldZ, 16, 16, chanceForNodeToSpawn, 1, 90); + if (!WorldGenWildCaves.dimensionBlacklist.contains(oreGen.world.provider.getDimensionId())) { + this.addOreSpawn(oreGen.rand.nextInt(mines.length), oreGen.world, oreGen.rand, oreGen.pos); } } /** * Adds an Ore Spawn to Minecraft - * @param mine the ore generator + * @param mine the type of ore generator * @param world to spawn in + * @param pos to spawn around * @param random object for retrieving random positions within the world to spawn the Block - * @param blockXPos the X-Coordinate for the Generation method - * @param blockZPos the Z-Coordinate for the Generation method - * @param maxX maximum X-Coordinate values for spawning on the X-Axis on a Per-Chunk basis - * @param maxZ maximum Z-Coordinate values for spawning on the Z-Axis on a Per-Chunk basis - * @param chancesToSpawn Number of chances available for the Block to spawn per-chunk - * @param minY minimum Y-Coordinate height at which this block may spawn - * @param maxY maximum Y-Coordinate height at which this block may spawn **/ - private void addOreSpawn(WorldGenMinable mine, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int chancesToSpawn, int minY, int maxY) + private void addOreSpawn(int mine, World world, Random random, BlockPos pos) { - assert minY > 0 && maxY > 0: "addOreSpawn: The Minimum Y and Maximum Y must be greater than 0"; - int diffBtwnMinMaxY = maxY - minY; - if(maxY <= minY) - diffBtwnMinMaxY = 1; - assert maxX > 0 && maxX <= 16: "addOreSpawn: The Maximum X must be greater than 0 and less than 16"; - assert maxZ > 0 && maxZ <= 16: "addOreSpawn: The Maximum Z must be greater than 0 and less than 16"; - for(int x = 0; x < chancesToSpawn; x++) + for(int x = 0; x < chanceForNodeToSpawn; x++) { - int posX = blockXPos + random.nextInt(maxX); - int posY = minY + random.nextInt(diffBtwnMinMaxY); - int posZ = blockZPos + random.nextInt(maxZ); - mine.generate(world, random, posX, posY, posZ); + mines[mine].generate(world, random, pos.add(random.nextInt(16), 1 + random.nextInt(89), random.nextInt(16))); } } } diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index 7d177e6..0edcedd 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -1,9 +1,13 @@ package wildCaves; import net.minecraft.block.Block; +import net.minecraft.block.BlockSnow; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import java.util.ArrayList; @@ -14,45 +18,27 @@ public ItemStalactite(Block block, ArrayList names) { } @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, World world, int x, int y, int z, int side, float par8, float par9, float par10) { - Block blockId = world.getBlock(x, y, z); - if (blockId == Blocks.snow && (world.getBlockMetadata(x, y, z) & 7) < 1) { - side = 1; + public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, World world, BlockPos pos, EnumFacing side, float par8, float par9, float par10) { + IBlockState state = world.getBlockState(pos); + Block blockId = state.getBlock(); + if (blockId == Blocks.snow && ((Integer)state.getValue(BlockSnow.LAYERS)) < 1) { + side = EnumFacing.UP; } else if (blockId != Blocks.vine && blockId != Blocks.tallgrass && blockId != Blocks.deadbush - && (blockId == Blocks.air || !blockId.isReplaceable(world, x, y, z))) { - if (side == 0) { - --y; - } - if (side == 1) { - ++y; - } - if (side == 2) { - --z; - } - if (side == 3) { - ++z; - } - if (side == 4) { - --x; - } - if (side == 5) { - ++x; - } + && (blockId == Blocks.air || !blockId.isReplaceable(world, pos))) { + pos = pos.offset(side); } if (itemStack.stackSize == 0) { return false; - } else if (!par2EntityPlayer.canPlayerEdit(x, y, z, side, itemStack)) { + } else if (!par2EntityPlayer.canPlayerEdit(pos, side, itemStack)) { return false; - } else if (y == 255) { + } else if (pos.getY() == 255) { return false; - } else if (world.canPlaceEntityOnSide(WildCaves.blockStoneStalactite, x, y, z, false, side, par2EntityPlayer, itemStack) - || world.canPlaceEntityOnSide(WildCaves.blockSandStalactite, x, y, z, false, side, par2EntityPlayer, itemStack)) { - if (canPlace(itemStack, world, x, y, z)) { - Block block = WildCaves.blockStoneStalactite; - int j1 = this.getMetadata(itemStack.getItemDamage()); - int k1 = block.onBlockPlaced(world, x, y, z, side, par8, par9, par10, j1); - if (placeBlockAt(itemStack, par2EntityPlayer, world, x, y, z, side, par8, par9, par10, k1)) { - world.playSoundEffect(x + 0.5F, y + 0.5F, z + 0.5F, block.stepSound.func_150496_b(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); + } else if (world.canBlockBePlaced(block, pos, false, side, par2EntityPlayer, itemStack)) { + if (canPlace(itemStack, world, pos)) { + int j1 = this.getMetadata(itemStack.getMetadata()); + IBlockState k1 = block.onBlockPlaced(world, pos, side, par8, par9, par10, j1, par2EntityPlayer); + if (placeBlockAt(itemStack, par2EntityPlayer, world, pos, side, par8, par9, par10, k1)) { + world.playSoundEffect(pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getFrequency() * 0.8F); --itemStack.stackSize; } return true; @@ -63,13 +49,13 @@ public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, Wor } } - private boolean canPlace(ItemStack itemStack, World world, int x, int y, int z) { + private boolean canPlace(ItemStack itemStack, World world, BlockPos pos) { boolean result = false; - int metadata = getMetadata(itemStack.getItemDamage()); - boolean upNormal = world.isBlockNormalCubeDefault(x, y + 1, z, false); - boolean downNormal = world.isBlockNormalCubeDefault(x, y - 1, z, false); - boolean upStalactite = world.getBlock(x, y + 1, z) == WildCaves.blockStoneStalactite || world.getBlock(x, y + 1, z) == WildCaves.blockSandStalactite; - boolean downStalactite = world.getBlock(x, y - 1, z) == WildCaves.blockStoneStalactite || world.getBlock(x, y - 1, z) == WildCaves.blockSandStalactite; + int metadata = getMetadata(itemStack.getMetadata()); + boolean upNormal = world.isBlockNormalCube(pos.up(), false); + boolean downNormal = world.isBlockNormalCube(pos.down(), false); + boolean upStalactite = isStalactite(world.getBlockState(pos.up())); + boolean downStalactite = isStalactite(world.getBlockState(pos.down())); if ((metadata == 0 || metadata == 4 || metadata == 5) && (upNormal || downNormal || upStalactite || downStalactite)) result = true; else if ((metadata < 4 || metadata == 7 || metadata == 11) && (upNormal || upStalactite)) @@ -78,4 +64,8 @@ else if ((metadata == 6 || (metadata > 7 && metadata < 11) || metadata == 12) && result = true; return result; } + + private boolean isStalactite(IBlockState state){ + return state.getBlock() == WildCaves.blockStoneStalactite || state.getBlock() == WildCaves.blockSandStalactite; + } } \ No newline at end of file diff --git a/wildCaves/MultiItemBlock.java b/wildCaves/MultiItemBlock.java index eba8676..23d281d 100644 --- a/wildCaves/MultiItemBlock.java +++ b/wildCaves/MultiItemBlock.java @@ -1,46 +1,29 @@ package wildCaves; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; import java.util.ArrayList; public class MultiItemBlock extends ItemBlock { private final ArrayList subNames; - private final Block block; public MultiItemBlock(Block block, ArrayList names) { super(block); - this.block = block; this.subNames = names; setHasSubtypes(true); } - @SideOnly(Side.CLIENT) - @Override - public IIcon getIconFromDamage(int damage) { - if (damage > getNumOfStructures()) - damage = getNumOfStructures() - 1; - return block.getIcon(0, damage); - } - @Override public int getMetadata(int damage) { - if (damage > getNumOfStructures()) - damage = getNumOfStructures() - 1; + if (damage >= subNames.size()) + damage = 0; return damage; } - public int getNumOfStructures() { - return subNames.size(); - } - @Override public String getUnlocalizedName(ItemStack itemstack) { - return subNames.get(itemstack.getItemDamage()); + return subNames.get(itemstack.getMetadata()); } } diff --git a/wildCaves/ServerProxy.java b/wildCaves/ServerProxy.java new file mode 100644 index 0000000..047ba51 --- /dev/null +++ b/wildCaves/ServerProxy.java @@ -0,0 +1,8 @@ +package wildCaves; + +public class ServerProxy { + + public void registerRenders(){} + + public void MUD(){} +} diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 4547145..15a4360 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -4,28 +4,30 @@ import net.minecraft.block.Block; import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; public final class Utils { public static Block frozen = Blocks.ice; public static List freezable = Arrays.asList(Blocks.stone, Blocks.dirt, Blocks.gravel, Blocks.grass); // transforms an area into snow and ice - public static void convertToFrozenType(World world, Random random, int x, int y, int z) { + public static void convertToFrozenType(World world, Random random, BlockPos pos) { int height = random.nextInt(5) + 3; int length = random.nextInt(5) + 3; int width = random.nextInt(5) + 3; - int newX = x - length / 2; - int newY = y + height / 2; - int newZ = z - width / 2; + int newX = pos.getX() - length / 2; + int newY = pos.getY() + height / 2; + int newZ = pos.getZ() - width / 2; Block aux; for (int i = 0; i < height; i++) { for (int j = 0; j < length; j++) { for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.8f, 0.2f, 0, 0, 0, 0) == 1) { - aux = world.getBlock(newX + j, newY - i, newZ + k); + BlockPos newPos = new BlockPos(newX + j, newY - i, newZ + k); + aux = world.getBlockState(newPos).getBlock(); if (freezable.contains(aux))// stone -> Ice - world.setBlock(newX + j, newY - i, newZ + k, frozen, 0, 2); + world.setBlockState(newPos, frozen.getDefaultState(), 2); } } } @@ -38,22 +40,23 @@ public static void convertToFrozenType(World world, Random random, int x, int y, sandEquivalent.put(Blocks.gravel, Blocks.sand); } //transform an area in to sand and sandstone - public static void convertToSandType(World world, Random random, int x, int y, int z) { + public static void convertToSandType(World world, Random random, BlockPos pos) { int height = random.nextInt(5) + 3; int length = random.nextInt(5) + 3; int width = random.nextInt(5) + 3; - int newX = x - length / 2; - int newY = y + height / 2; - int newZ = z - width / 2; + int newX = pos.getX() - length / 2; + int newY = pos.getY() + height / 2; + int newZ = pos.getZ() - width / 2; Block aux; for (int i = 0; i < height; i++) { for (int j = 0; j < length; j++) { for (int k = 0; k < width; k++) { // basically transform or not if (weightedChoise(0.7f, 0.3f, 0, 0, 0, 0) == 1) { - aux = sandEquivalent.get(world.getBlock(newX + j, newY - i, newZ + k)); + BlockPos newPos = new BlockPos(newX + j, newY - i, newZ + k); + aux = sandEquivalent.get(world.getBlockState(newPos).getBlock()); if (aux != null)// stone -> sandstone // dirt/gravel -> sand - world.setBlock(newX + j, newY - i, newZ + k, aux, 0, 2); + world.setBlockState(newPos, aux.getDefaultState(), 2); } } } @@ -61,10 +64,10 @@ public static void convertToSandType(World world, Random random, int x, int y, i } // gets the number of empty blocks between the current one and the closest one bellow - public static int getNumEmptyBlocks(World world, int x, int y, int z) { + public static int getNumEmptyBlocks(World world, BlockPos pos) { int dist = 0; - while (y > 5 && !world.isBlockNormalCubeDefault(x, y, z, true) && world.isAirBlock(x, y, z)) { - y--; + while (pos.getY() > 5 && !world.isBlockNormalCube(pos, true) && world.isAirBlock(pos)) { + pos = pos.down(); dist++; } return dist; diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index 2802f4e..ae0f900 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -1,7 +1,5 @@ package wildCaves; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.ModContainer; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; @@ -12,18 +10,21 @@ import net.minecraftforge.common.ChestGenHooks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventHandler; +import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; import java.util.ArrayList; import java.util.Arrays; -@Mod(modid = WildCaves.modid, name = "Wild Caves 3", version = "${version}") +@Mod(modid = "wildcaves3", name = "Wild Caves 3", version = "${version}") public final class WildCaves { - public static final String modid = "wildcaves3"; + @SidedProxy(clientSide = "wildCaves.ClientProxy", serverSide = "wildCaves.ServerProxy") + public static ServerProxy proxy; + public static final ArrayList stalacs = new ArrayList(Arrays.asList("stalactite1", "stalactite2", "stalactite3", "stalactite4", "stalactiteConnection1", "stalactiteConnection2", "stalactiteConnection3", "stalactiteConnection4", "stalactiteEnd", "stalacmiteEnd", "stalacmite1", "stalacmite2", "stalacmite3")); public static final ArrayList sandStalacs = new ArrayList(Arrays.asList("sandstoneStalactite1", "sandstoneStalactite2", "sandstoneStalactite3", "sandstoneStalactite4", "sandstoneStalactiteConnection1", @@ -34,10 +35,8 @@ public final class WildCaves { public static final ArrayList fossils = new ArrayList(Arrays.asList("fossil1")); public static Block blockFlora, blockDecorations, blockFossils; public static Block blockStoneStalactite, blockSandStalactite; - public static int floraLightLevel; - public static int chanceForNodeToSpawn, chestSkull; public static boolean solidStalactites, damageWhenFallenOn; - public static Configuration config; + private static Configuration config; public static final CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { @Override public Item getTabIconItem() { @@ -45,21 +44,34 @@ public Item getTabIconItem() { } }; - public void initBlocks() { - blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(stalacs.size()), ItemStalactite.class, "StoneStalactite", stalacs); - blockSandStalactite = GameRegistry.registerBlock(new BlockStalactite(sandStalacs.size(), Item.getItemFromBlock(Blocks.sandstone)). - setBlockName("sandstoneStalactiteBlock").setBlockTextureName(":sandstoneStructure"), ItemStalactite.class, "SandstoneSalactite", sandStalacs); - blockDecorations = GameRegistry.registerBlock(new BlockDecorations(icicles.size()), MultiItemBlock.class, "Decorations", icicles); - blockFlora = GameRegistry.registerBlock(new BlockFlora(caps.size()).setLightLevel(floraLightLevel), MultiItemBlock.class, "Flora", caps); - blockFossils = GameRegistry.registerBlock(new BlockFossils(fossils.size()), MultiItemBlock.class, "FossilBlock", fossils); - } - @EventHandler public void load(FMLInitializationEvent event) { WorldGenWildCaves gen = new WorldGenWildCaves(config); if (gen.maxLength > 0) { MinecraftForge.EVENT_BUS.register(gen); } + proxy.registerRenders(); + } + + @EventHandler + public void preInit(FMLPreInitializationEvent event) { + config = new Configuration(event.getSuggestedConfigurationFile()); + solidStalactites = config.getBoolean("Solid stalactites/stalgmites", Configuration.CATEGORY_GENERAL, false, "Whether stalactites can be collided with."); + damageWhenFallenOn = config.getBoolean("Stalgmites damage entities when fallen on", Configuration.CATEGORY_GENERAL, false, "Whether living beings would be damaged when falling on the block."); + int floraLightLevel = config.getInt("Flora light level", Configuration.CATEGORY_GENERAL, 5, 0, 15, "How much light is emitted by the mushrooms."); + + blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(), ItemStalactite.class, "StoneStalactite", stalacs); + blockSandStalactite = GameRegistry.registerBlock(new BlockStalactite(Item.getItemFromBlock(Blocks.sandstone)). + setUnlocalizedName("sandstoneStalactiteBlock"), ItemStalactite.class, "SandstoneSalactite", sandStalacs); + blockDecorations = GameRegistry.registerBlock(new BlockDecorations(), MultiItemBlock.class, "Decorations", icicles); + blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel), MultiItemBlock.class, "Flora", caps); + blockFossils = GameRegistry.registerBlock(new BlockFossils(), MultiItemBlock.class, "FossilBlock", fossils); + + int chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(); + if(chanceForNodeToSpawn > 0) { + MinecraftForge.ORE_GEN_BUS.register(new EventManager(chanceForNodeToSpawn)); + } + int chestSkull = config.get(Configuration.CATEGORY_GENERAL, "Chance for a skull to be added in chests", 50).getInt(); if(chestSkull > 0) for (String txt : new String[] { ChestGenHooks.DUNGEON_CHEST, ChestGenHooks.MINESHAFT_CORRIDOR, ChestGenHooks.STRONGHOLD_CORRIDOR }) { for (int i = 0; i < 5; i++) { @@ -68,33 +80,9 @@ public void load(FMLInitializationEvent event) { } } } - if(chanceForNodeToSpawn > 0) { - EventManager eventmanager = new EventManager(chanceForNodeToSpawn); - MinecraftForge.ORE_GEN_BUS.register(eventmanager); - } - } - @EventHandler - public void preInit(FMLPreInitializationEvent event) { - config = new Configuration(event.getSuggestedConfigurationFile()); - solidStalactites = config.get(Configuration.CATEGORY_GENERAL, "Solid stalactites/stalgmites", false).getBoolean(false); - damageWhenFallenOn = config.get(Configuration.CATEGORY_GENERAL, "Stalgmites damage entities when fallen on", false).getBoolean(false); - floraLightLevel = config.get(Configuration.CATEGORY_GENERAL, "Flora light level", 5).getInt(5); - if (floraLightLevel > 15) - floraLightLevel = 15; - chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(5); - chestSkull = config.get(Configuration.CATEGORY_GENERAL, "Chance for a skull to be added in chests", 50).getInt(50); - config.save(); - initBlocks(); - if(event.getSourceFile().getName().endsWith(".jar") && event.getSide().isClient()){ - try { - Class.forName("mods.mud.ModUpdateDetector").getDeclaredMethod("registerMod", ModContainer.class, String.class, String.class).invoke(null, - FMLCommonHandler.instance().findContainerFor(this), - "https://raw.github.com/GotoLink/WildCaves3/master/update.xml", - "https://raw.github.com/GotoLink/WildCaves3/master/changelog.md" - ); - } catch (Throwable e) { - } + if(event.getSourceFile().getName().endsWith(".jar")){ + proxy.MUD(); } } } diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 9b9b2d7..5a12848 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -1,24 +1,21 @@ package wildCaves; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.registry.GameData; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; -import wildCaves.generation.biomeGen.GenerationArid; -import wildCaves.generation.biomeGen.GenerationFrozen; -import wildCaves.generation.biomeGen.GenerationHumid; -import wildCaves.generation.biomeGen.GenerationJungle; -import wildCaves.generation.biomeGen.GenerationNormal; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.registry.GameData; +import wildCaves.generation.biomeGen.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; public final class WorldGenWildCaves { public static float probabilityVinesJungle; @@ -55,39 +52,36 @@ public static boolean isWhiteListed(Block block){ @SubscribeEvent public void decorate(DecorateBiomeEvent.Post decorationEvent){ - generate(decorationEvent.rand, decorationEvent.chunkX + 8, decorationEvent.chunkZ + 8, decorationEvent.world); + generate(decorationEvent.rand, decorationEvent.pos.add(8, 0, 8), decorationEvent.world); } - public void generate(Random random, int blockX, int blockZ, World world) { - if (!dimensionBlacklist.contains(world.provider.dimensionId)) { - int Xcoord; - int Ycoord; - int Zcoord; + public void generate(Random random, BlockPos pos, World world) { + if (!dimensionBlacklist.contains(world.provider.getDimensionId())) { + BlockPos coord; //int dist;// distance BiomeGenBase biome; for (int i = 0; i < timesPerChunck; i++) { - Xcoord = blockX + random.nextInt(16); - Zcoord = blockZ + random.nextInt(16); - Ycoord = Math.min(world.getHeightValue(Xcoord, Zcoord)-1, random.nextInt(maxGenHeight)); + coord = pos.add(random.nextInt(16), 0, random.nextInt(16)); + coord = new BlockPos(pos.getX(), Math.min(world.getHeight(coord).getY()-1, random.nextInt(maxGenHeight)), pos.getZ()); // search for the first available spot - while (Ycoord > 10 && (!blockWhiteList.contains(world.getBlock(Xcoord, Ycoord + 1, Zcoord)) || !world.isAirBlock(Xcoord, Ycoord, Zcoord))) { - Ycoord--; + while (coord.getY() > 10 && (!blockWhiteList.contains(world.getBlockState(coord.up()).getBlock()) || !world.isAirBlock(coord))) { + coord = coord.down(); } // found a spot - if (Ycoord > 10) { + if (coord.getY() > 10) { // getting the biome - biome = world.getBiomeGenForCoords(Xcoord, Zcoord); + biome = world.getBiomeGenForCoords(coord); //dist = Utils.getNumEmptyBlocks(world, Xcoord, Ycoord, Zcoord); if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FROZEN)) - frozenGen.generate(world, random, Xcoord, Ycoord, Zcoord); + frozenGen.generate(world, random, coord); else if (biome.temperature > 1.5f && biome.rainfall < 0.1f) - aridGen.generate(world, random, Xcoord, Ycoord, Zcoord); + aridGen.generate(world, random, coord); else if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.JUNGLE)) - jungleGen.generate(world, random, Xcoord, Ycoord, Zcoord); + jungleGen.generate(world, random, coord); else if (biome.isHighHumidity() || BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.WATER)) - wetGen.generate(world, random, Xcoord, Ycoord, Zcoord); + wetGen.generate(world, random, coord); else - normalGen.generate(world, random, Xcoord, Ycoord, Zcoord); + normalGen.generate(world, random, coord); } } } diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index 9962516..a079cf4 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -1,8 +1,7 @@ package wildCaves.generation.biomeGen; -import java.util.Random; - import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; @@ -11,27 +10,29 @@ import wildCaves.generation.structureGen.GenerateSandstoneStalactites; import wildCaves.generation.structureGen.GenerateStoneStalactite; +import java.util.Random; + public final class GenerationArid extends WorldGenerator { public GenerationArid() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) { + public boolean generate(World world, Random random, BlockPos pos) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilitySandStalactites, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityDry, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: - new GenerateSandstoneStalactites().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateSandstoneStalactites().generate(world, random, pos, Utils.getNumEmptyBlocks(world, pos), WorldGenWildCaves.maxLength); return true; case 2: - world.setBlock(x, y, z, Blocks.web, 0, 2); + world.setBlockState(pos, Blocks.web.getDefaultState(), 2); return true; case 3: return false; case 4: - DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + DecorationHelper.generateSkulls(world, random, pos, Utils.getNumEmptyBlocks(world, pos)); return true; default: - new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, pos, Utils.getNumEmptyBlocks(world, pos), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index b14c070..47ee033 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -1,36 +1,38 @@ package wildCaves.generation.biomeGen; -import java.util.Random; - import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.*; +import wildCaves.generation.structureGen.DecorationHelper; +import wildCaves.generation.structureGen.GenerateStoneStalactite; + +import java.util.Random; public final class GenerationFrozen extends WorldGenerator { public GenerationFrozen() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) { + public boolean generate(World world, Random random, BlockPos pos) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilityIceshrooms, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityIcicle, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: - DecorationHelper.generateIceshrooms(world, random, x, y, z); + DecorationHelper.generateIceshrooms(world, random, pos); return true; case 2: - world.setBlock(x, y, z, Blocks.web, 0, 2); + world.setBlockState(pos, Blocks.web.getDefaultState(), 2); return true; case 3: - DecorationHelper.generateIcicles(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + DecorationHelper.generateIcicles(world, random, pos, Utils.getNumEmptyBlocks(world, pos)); return true; case 4: - DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + DecorationHelper.generateSkulls(world, random, pos, Utils.getNumEmptyBlocks(world, pos)); return true; default: - new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, pos, Utils.getNumEmptyBlocks(world, pos), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index 414adca..b98b516 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -1,39 +1,41 @@ package wildCaves.generation.biomeGen; -import java.util.Random; - import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.*; +import wildCaves.generation.structureGen.DecorationHelper; +import wildCaves.generation.structureGen.GenerateStoneStalactite; + +import java.util.Random; public final class GenerationHumid extends WorldGenerator { public GenerationHumid() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) { + public boolean generate(World world, Random random, BlockPos pos) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityWet, WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite)) { case 1: - DecorationHelper.generateGlowcaps(world, random, x, y, z); + DecorationHelper.generateGlowcaps(world, random, pos); return true; case 2: - DecorationHelper.generateFloodedCaves(world, random, x, y, z); + DecorationHelper.generateFloodedCaves(world, random, pos); return true; case 3: - DecorationHelper.generateVines(world, random, x, y, z); + DecorationHelper.generateVines(world, random, pos); return true; case 4: - world.setBlock(x, y - Utils.getNumEmptyBlocks(world, x, y, z) + 1, z, Blocks.web, 0, 2); + world.setBlockState(pos.down(Utils.getNumEmptyBlocks(world, pos) - 1), Blocks.web.getDefaultState(), 2); return true; case 5: - DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + DecorationHelper.generateSkulls(world, random, pos, Utils.getNumEmptyBlocks(world, pos)); return true; default: - new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, pos, Utils.getNumEmptyBlocks(world, pos), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index 40a4012..c2ecb2c 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -1,37 +1,38 @@ package wildCaves.generation.biomeGen; -import java.util.Random; - import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.*; +import wildCaves.generation.structureGen.DecorationHelper; +import wildCaves.generation.structureGen.GenerateStoneStalactite; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; +import java.util.Random; public final class GenerationJungle extends WorldGenerator { public GenerationJungle() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) { + public boolean generate(World world, Random random, BlockPos pos) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilityGlowcapsHumid, WorldGenWildCaves.probabilityVinesJungle, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilitySkulls, WorldGenWildCaves.probabilityStalactite, 0)) { case 1: - DecorationHelper.generateGlowcaps(world, random, x, y, z); + DecorationHelper.generateGlowcaps(world, random, pos); return true; case 2: - DecorationHelper.generateVines(world, random, x, y, z); + DecorationHelper.generateVines(world, random, pos); return true; case 3: - world.setBlock(x, y, z, Blocks.web, 0, 2); + world.setBlockState(pos, Blocks.web.getDefaultState(), 2); return true; case 4: - DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + DecorationHelper.generateSkulls(world, random, pos, Utils.getNumEmptyBlocks(world, pos)); return true; default: - new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, pos, Utils.getNumEmptyBlocks(world, pos), WorldGenWildCaves.maxLength); return true; } } diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index eba7dd6..fc7e686 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -1,36 +1,38 @@ package wildCaves.generation.biomeGen; -import java.util.Random; - import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; import wildCaves.WorldGenWildCaves; -import wildCaves.generation.structureGen.*; +import wildCaves.generation.structureGen.DecorationHelper; +import wildCaves.generation.structureGen.GenerateStoneStalactite; + +import java.util.Random; public final class GenerationNormal extends WorldGenerator { public GenerationNormal() { } @Override - public boolean generate(World world, Random random, int x, int y, int z) { + public boolean generate(World world, Random random, BlockPos pos) { switch (Utils.weightedChoise(WorldGenWildCaves.probabilityVines, WorldGenWildCaves.probabilitySpiderWeb, WorldGenWildCaves.probabilityStalactite, WorldGenWildCaves.probabilityGlowcaps, WorldGenWildCaves.probabilitySkulls, 0)) { case 1: - DecorationHelper.generateVines(world, random, x, y, z); + DecorationHelper.generateVines(world, random, pos); return true; case 2: - world.setBlock(x, y, z, Blocks.web, 0, 2); + world.setBlockState(pos, Blocks.web.getDefaultState(), 2); return true; case 3: - new GenerateStoneStalactite().generate(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z), WorldGenWildCaves.maxLength); + new GenerateStoneStalactite().generate(world, random, pos, Utils.getNumEmptyBlocks(world, pos), WorldGenWildCaves.maxLength); return true; case 4: - DecorationHelper.generateGlowcaps(world, random, x, y, z); + DecorationHelper.generateGlowcaps(world, random, pos); return true; case 5: - DecorationHelper.generateSkulls(world, random, x, y, z, Utils.getNumEmptyBlocks(world, x, y, z)); + DecorationHelper.generateSkulls(world, random, pos, Utils.getNumEmptyBlocks(world, pos)); return true; } return false; diff --git a/wildCaves/generation/structureGen/DecorationHelper.java b/wildCaves/generation/structureGen/DecorationHelper.java new file mode 100644 index 0000000..82a5883 --- /dev/null +++ b/wildCaves/generation/structureGen/DecorationHelper.java @@ -0,0 +1,123 @@ +package wildCaves.generation.structureGen; + +import net.minecraft.block.BlockVine; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntitySkull; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; +import wildCaves.Utils; +import wildCaves.WildCaves; + +import java.util.Random; + +public final class DecorationHelper { + + //flood some cave with water around the specified x,y,z + public static void generateFloodedCaves(World world, Random random, BlockPos pos){ + int blocks = 0; + int x = pos.getX(); + int z = pos.getZ(); + for(int i=x-3;i 400) + return; + } + } + if(blocks > 150){ + int y = pos.getY() - (Utils.getNumEmptyBlocks(world, pos)/3); + System.out.println(pos); + for(int i=x-6; i 0) { + BlockPos auxY = pos.down(numEmptyBlocks - 1); + if (auxY.getY() > 0 && numEmptyBlocks>0) { + world.setBlockState(auxY, Blocks.skull.getStateFromMeta(1), 2); + TileEntity skullTE = world.getTileEntity(auxY); + if (skullTE instanceof TileEntitySkull) { + ((TileEntitySkull) skullTE).setSkullRotation(random.nextInt(360)); + } + } + } + } + + // place a vine from top to bottom at the specified x,y,z + public static void generateVines(World world, Random random, BlockPos pos) { + int distance = Utils.getNumEmptyBlocks(world, pos); + int aux; + if (distance > 5) + aux = random.nextInt(distance-5)+5; + else + aux = distance; + + //the side the vine should be facing + EnumFacing side = EnumFacing.values()[random.nextInt(4)+2]; + // length of the vine + int i=0; + while(i= botY && j < distance && !world.getBlock(x, topY - 1, z).getMaterial().isLiquid()) { + while (k < maxLength && topY.getY() >= botY.getY() && j < distance && !world.getBlockState(topY.down()).getBlock().getMaterial().isLiquid()) { k++; - topMetadata = world.getBlockMetadata(x, topY, z); - bottomMetadata = world.getBlockMetadata(x, botY, z); - topY--; - botY++; + IBlockState state = world.getBlockState(topY); + topMetadata = state.getBlock().getMetaFromState(state); + state = world.getBlockState(botY); + bottomMetadata = state.getBlock().getMetaFromState(state); + topY = topY.down(); + botY = botY.up(); // Expand downwards - if (world.isAirBlock(x, topY, z) && topMetadata > 2 && topMetadata < 6) { + if (world.isAirBlock(topY) && topMetadata > 2 && topMetadata < 6) { aux = random.nextInt(5); if (aux != 4) - world.setBlock(x, topY, z, blockId, Utils.randomChoise(4, 5, 7, 11), 2); + world.setBlockState(topY, blockId.getStateFromMeta(Utils.randomChoise(4, 5, 7, 11)), 2); else - world.setBlock(x, topY, z, blockId, Utils.randomChoise(7, 11), 2); + world.setBlockState(topY, blockId.getStateFromMeta(Utils.randomChoise(7, 11)), 2); j++; } // Expand upwards - if (world.isAirBlock(x, botY, z) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { + if (world.isAirBlock(botY) && (bottomMetadata > 3 && bottomMetadata < 5 || bottomMetadata == 8) && j < distance && stalagmiteGenerated) { aux = random.nextInt(5); if (aux != 4) - world.setBlock(x, botY, z, blockId, Utils.randomChoise(4, 5, 6, 12), 2); + world.setBlockState(botY, blockId.getStateFromMeta(Utils.randomChoise(4, 5, 6, 12)), 2); else - world.setBlock(x, botY, z, blockId, Utils.randomChoise(12, 6), 2); + world.setBlockState(botY, blockId.getStateFromMeta(Utils.randomChoise(12, 6)), 2); j++; } } @@ -74,11 +77,11 @@ public void generate(World world, Random random, int x, int y, int z, int distan } } - protected void generateStalagmiteBase(World world, Random random, int x, int botY, int z, int aux) { - world.setBlock(x, botY, z, blockId, aux, 2); + protected void generateStalagmiteBase(World world, Random random, BlockPos botY, int aux) { + world.setBlockState(botY, blockId.getStateFromMeta(aux), 2); } - protected void generateStalactiteBase(World world, Random random, int x, int topY, int z) { - world.setBlock(x, topY, z, blockId, Utils.randomChoise(1, 2, 3, 3), 2); + protected void generateStalactiteBase(World world, Random random, BlockPos topY) { + world.setBlockState(topY, blockId.getStateFromMeta(Utils.randomChoise(1, 2, 3, 3)), 2); } } From facd90bb910b940a7d8a9cddfb8765b5779163a0 Mon Sep 17 00:00:00 2001 From: GotoLink Date: Sun, 5 Jun 2016 00:54:28 +0200 Subject: [PATCH 50/50] Update for 1.9 --- assets/wildcaves3/models/block/flora_0.json | 2 +- assets/wildcaves3/models/block/flora_1.json | 2 +- assets/wildcaves3/models/block/flora_2.json | 2 +- assets/wildcaves3/models/block/flora_3.json | 2 +- assets/wildcaves3/models/block/flora_4.json | 2 +- assets/wildcaves3/models/block/flora_5.json | 2 +- assets/wildcaves3/models/item/flora_0.json | 14 +-- assets/wildcaves3/models/item/flora_1.json | 14 +-- assets/wildcaves3/models/item/flora_2.json | 14 +-- assets/wildcaves3/models/item/flora_3.json | 14 +-- assets/wildcaves3/models/item/flora_4.json | 14 +-- assets/wildcaves3/models/item/flora_5.json | 14 +-- assets/wildcaves3/models/item/flora_6.json | 14 +-- assets/wildcaves3/models/item/flora_7.json | 14 +-- assets/wildcaves3/models/item/flora_8.json | 14 +-- assets/wildcaves3/models/item/flora_9.json | 14 +-- assets/wildcaves3/models/item/fossil_0.json | 9 +- assets/wildcaves3/models/item/icicle_0.json | 14 +-- assets/wildcaves3/models/item/icicle_1.json | 14 +-- assets/wildcaves3/models/item/icicle_2.json | 14 +-- .../wildcaves3/models/item/sandstone_0.json | 14 +-- .../wildcaves3/models/item/sandstone_1.json | 14 +-- .../wildcaves3/models/item/sandstone_10.json | 14 +-- .../wildcaves3/models/item/sandstone_11.json | 14 +-- .../wildcaves3/models/item/sandstone_12.json | 14 +-- .../wildcaves3/models/item/sandstone_2.json | 14 +-- .../wildcaves3/models/item/sandstone_3.json | 14 +-- .../wildcaves3/models/item/sandstone_4.json | 14 +-- .../wildcaves3/models/item/sandstone_5.json | 14 +-- .../wildcaves3/models/item/sandstone_6.json | 14 +-- .../wildcaves3/models/item/sandstone_7.json | 14 +-- .../wildcaves3/models/item/sandstone_8.json | 14 +-- .../wildcaves3/models/item/sandstone_9.json | 14 +-- assets/wildcaves3/models/item/stone_0.json | 14 +-- assets/wildcaves3/models/item/stone_1.json | 14 +-- assets/wildcaves3/models/item/stone_10.json | 14 +-- assets/wildcaves3/models/item/stone_11.json | 14 +-- assets/wildcaves3/models/item/stone_12.json | 14 +-- assets/wildcaves3/models/item/stone_2.json | 14 +-- assets/wildcaves3/models/item/stone_3.json | 14 +-- assets/wildcaves3/models/item/stone_4.json | 14 +-- assets/wildcaves3/models/item/stone_5.json | 14 +-- assets/wildcaves3/models/item/stone_6.json | 14 +-- assets/wildcaves3/models/item/stone_7.json | 14 +-- assets/wildcaves3/models/item/stone_8.json | 14 +-- assets/wildcaves3/models/item/stone_9.json | 14 +-- assets/wildcaves3/textures/blocks/flora0.png | Bin 577 -> 543 bytes assets/wildcaves3/textures/blocks/flora1.png | Bin 469 -> 444 bytes assets/wildcaves3/textures/blocks/flora2.png | Bin 400 -> 391 bytes assets/wildcaves3/textures/blocks/flora3.png | Bin 417 -> 408 bytes assets/wildcaves3/textures/blocks/flora4.png | Bin 598 -> 589 bytes assets/wildcaves3/textures/blocks/flora5.png | Bin 415 -> 419 bytes build.gradle | 23 ++-- gradle/wrapper/gradle-wrapper.jar | Bin 51017 -> 52271 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- update.xml | 7 ++ wildCaves/BlockDecorations.java | 112 ++++++++++-------- wildCaves/BlockFlora.java | 47 ++++---- wildCaves/BlockFossils.java | 4 +- wildCaves/BlockStalactite.java | 112 ++++++++++-------- wildCaves/BlockStoneStalactite.java | 6 +- wildCaves/ClientProxy.java | 39 +++++- wildCaves/EventManager.java | 6 +- wildCaves/ItemStalactite.java | 30 ++--- wildCaves/Utils.java | 21 +++- wildCaves/WildCaves.java | 55 +++++---- wildCaves/WorldGenWildCaves.java | 23 ++-- .../generation/biomeGen/GenerationArid.java | 2 +- .../generation/biomeGen/GenerationFrozen.java | 2 +- .../generation/biomeGen/GenerationHumid.java | 2 +- .../generation/biomeGen/GenerationJungle.java | 2 +- .../generation/biomeGen/GenerationNormal.java | 2 +- .../structureGen/DecorationHelper.java | 8 +- .../GenerateSandstoneStalactites.java | 2 +- .../structureGen/GenerateStoneStalactite.java | 6 +- 75 files changed, 345 insertions(+), 737 deletions(-) diff --git a/assets/wildcaves3/models/block/flora_0.json b/assets/wildcaves3/models/block/flora_0.json index 01e520d..a4a1de8 100644 --- a/assets/wildcaves3/models/block/flora_0.json +++ b/assets/wildcaves3/models/block/flora_0.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tinted_cross", "textures":{ "cross": "wildcaves3:blocks/flora0" } diff --git a/assets/wildcaves3/models/block/flora_1.json b/assets/wildcaves3/models/block/flora_1.json index d7a31c7..8d88b1f 100644 --- a/assets/wildcaves3/models/block/flora_1.json +++ b/assets/wildcaves3/models/block/flora_1.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tinted_cross", "textures":{ "cross": "wildcaves3:blocks/flora1" } diff --git a/assets/wildcaves3/models/block/flora_2.json b/assets/wildcaves3/models/block/flora_2.json index 4d18a69..be74720 100644 --- a/assets/wildcaves3/models/block/flora_2.json +++ b/assets/wildcaves3/models/block/flora_2.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tinted_cross", "textures":{ "cross": "wildcaves3:blocks/flora2" } diff --git a/assets/wildcaves3/models/block/flora_3.json b/assets/wildcaves3/models/block/flora_3.json index ad46026..74318f7 100644 --- a/assets/wildcaves3/models/block/flora_3.json +++ b/assets/wildcaves3/models/block/flora_3.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tinted_cross", "textures":{ "cross": "wildcaves3:blocks/flora3" } diff --git a/assets/wildcaves3/models/block/flora_4.json b/assets/wildcaves3/models/block/flora_4.json index 7cfd065..f17d4db 100644 --- a/assets/wildcaves3/models/block/flora_4.json +++ b/assets/wildcaves3/models/block/flora_4.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tinted_cross", "textures":{ "cross": "wildcaves3:blocks/flora4" } diff --git a/assets/wildcaves3/models/block/flora_5.json b/assets/wildcaves3/models/block/flora_5.json index fd91fd5..9d1e110 100644 --- a/assets/wildcaves3/models/block/flora_5.json +++ b/assets/wildcaves3/models/block/flora_5.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tinted_cross", "textures":{ "cross": "wildcaves3:blocks/flora5" } diff --git a/assets/wildcaves3/models/item/flora_0.json b/assets/wildcaves3/models/item/flora_0.json index 29a2f32..577fb0f 100644 --- a/assets/wildcaves3/models/item/flora_0.json +++ b/assets/wildcaves3/models/item/flora_0.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora0" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_1.json b/assets/wildcaves3/models/item/flora_1.json index 3f2ff99..1a73187 100644 --- a/assets/wildcaves3/models/item/flora_1.json +++ b/assets/wildcaves3/models/item/flora_1.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora1" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_2.json b/assets/wildcaves3/models/item/flora_2.json index 90134be..0ee5c5f 100644 --- a/assets/wildcaves3/models/item/flora_2.json +++ b/assets/wildcaves3/models/item/flora_2.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora2" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_3.json b/assets/wildcaves3/models/item/flora_3.json index 295e09a..e64fb54 100644 --- a/assets/wildcaves3/models/item/flora_3.json +++ b/assets/wildcaves3/models/item/flora_3.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora3" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_4.json b/assets/wildcaves3/models/item/flora_4.json index cd292fc..2428f71 100644 --- a/assets/wildcaves3/models/item/flora_4.json +++ b/assets/wildcaves3/models/item/flora_4.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora4" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_5.json b/assets/wildcaves3/models/item/flora_5.json index fab7eb1..13f4ac9 100644 --- a/assets/wildcaves3/models/item/flora_5.json +++ b/assets/wildcaves3/models/item/flora_5.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora5" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_6.json b/assets/wildcaves3/models/item/flora_6.json index df78575..993907e 100644 --- a/assets/wildcaves3/models/item/flora_6.json +++ b/assets/wildcaves3/models/item/flora_6.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora6" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_7.json b/assets/wildcaves3/models/item/flora_7.json index 915d5f1..886f38a 100644 --- a/assets/wildcaves3/models/item/flora_7.json +++ b/assets/wildcaves3/models/item/flora_7.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora7" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_8.json b/assets/wildcaves3/models/item/flora_8.json index 3cf6bc8..383b19f 100644 --- a/assets/wildcaves3/models/item/flora_8.json +++ b/assets/wildcaves3/models/item/flora_8.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora8" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/flora_9.json b/assets/wildcaves3/models/item/flora_9.json index bda6c32..42cb8ea 100644 --- a/assets/wildcaves3/models/item/flora_9.json +++ b/assets/wildcaves3/models/item/flora_9.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/flora9" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/fossil_0.json b/assets/wildcaves3/models/item/fossil_0.json index a96c456..c095c77 100644 --- a/assets/wildcaves3/models/item/fossil_0.json +++ b/assets/wildcaves3/models/item/fossil_0.json @@ -1,10 +1,3 @@ { - "parent": "wildcaves3:block/fossil", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } + "parent": "wildcaves3:block/fossil" } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/icicle_0.json b/assets/wildcaves3/models/item/icicle_0.json index 2085195..4d5e0f4 100644 --- a/assets/wildcaves3/models/item/icicle_0.json +++ b/assets/wildcaves3/models/item/icicle_0.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/decorations0" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/icicle_1.json b/assets/wildcaves3/models/item/icicle_1.json index 6c54f5d..95bdf8d 100644 --- a/assets/wildcaves3/models/item/icicle_1.json +++ b/assets/wildcaves3/models/item/icicle_1.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/decorations1" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/icicle_2.json b/assets/wildcaves3/models/item/icicle_2.json index e506a9d..6ef1638 100644 --- a/assets/wildcaves3/models/item/icicle_2.json +++ b/assets/wildcaves3/models/item/icicle_2.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/decorations2" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_0.json b/assets/wildcaves3/models/item/sandstone_0.json index 72f320c..58206ac 100644 --- a/assets/wildcaves3/models/item/sandstone_0.json +++ b/assets/wildcaves3/models/item/sandstone_0.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure0" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_1.json b/assets/wildcaves3/models/item/sandstone_1.json index fcf862a..742b371 100644 --- a/assets/wildcaves3/models/item/sandstone_1.json +++ b/assets/wildcaves3/models/item/sandstone_1.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure1" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_10.json b/assets/wildcaves3/models/item/sandstone_10.json index bb97d81..d619e0d 100644 --- a/assets/wildcaves3/models/item/sandstone_10.json +++ b/assets/wildcaves3/models/item/sandstone_10.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure10" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_11.json b/assets/wildcaves3/models/item/sandstone_11.json index 237f3d2..4ed0022 100644 --- a/assets/wildcaves3/models/item/sandstone_11.json +++ b/assets/wildcaves3/models/item/sandstone_11.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure11" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_12.json b/assets/wildcaves3/models/item/sandstone_12.json index 694d6e8..f4ad57a 100644 --- a/assets/wildcaves3/models/item/sandstone_12.json +++ b/assets/wildcaves3/models/item/sandstone_12.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure12" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_2.json b/assets/wildcaves3/models/item/sandstone_2.json index fdb01a7..d9ab503 100644 --- a/assets/wildcaves3/models/item/sandstone_2.json +++ b/assets/wildcaves3/models/item/sandstone_2.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure2" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_3.json b/assets/wildcaves3/models/item/sandstone_3.json index b1163be..8f08030 100644 --- a/assets/wildcaves3/models/item/sandstone_3.json +++ b/assets/wildcaves3/models/item/sandstone_3.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure3" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_4.json b/assets/wildcaves3/models/item/sandstone_4.json index 87cacad..db30168 100644 --- a/assets/wildcaves3/models/item/sandstone_4.json +++ b/assets/wildcaves3/models/item/sandstone_4.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure4" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_5.json b/assets/wildcaves3/models/item/sandstone_5.json index 4ac4f1f..1e9b250 100644 --- a/assets/wildcaves3/models/item/sandstone_5.json +++ b/assets/wildcaves3/models/item/sandstone_5.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure5" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_6.json b/assets/wildcaves3/models/item/sandstone_6.json index 7c7ba16..3819698 100644 --- a/assets/wildcaves3/models/item/sandstone_6.json +++ b/assets/wildcaves3/models/item/sandstone_6.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure6" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_7.json b/assets/wildcaves3/models/item/sandstone_7.json index 96ee6e6..3d8439a 100644 --- a/assets/wildcaves3/models/item/sandstone_7.json +++ b/assets/wildcaves3/models/item/sandstone_7.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure7" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_8.json b/assets/wildcaves3/models/item/sandstone_8.json index 591936f..7caef34 100644 --- a/assets/wildcaves3/models/item/sandstone_8.json +++ b/assets/wildcaves3/models/item/sandstone_8.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure8" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/sandstone_9.json b/assets/wildcaves3/models/item/sandstone_9.json index bc04b17..ab06dba 100644 --- a/assets/wildcaves3/models/item/sandstone_9.json +++ b/assets/wildcaves3/models/item/sandstone_9.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/sandstoneStructure9" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_0.json b/assets/wildcaves3/models/item/stone_0.json index 9b66864..1bd409b 100644 --- a/assets/wildcaves3/models/item/stone_0.json +++ b/assets/wildcaves3/models/item/stone_0.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure0" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_1.json b/assets/wildcaves3/models/item/stone_1.json index 5a3375e..58f986b 100644 --- a/assets/wildcaves3/models/item/stone_1.json +++ b/assets/wildcaves3/models/item/stone_1.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure1" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_10.json b/assets/wildcaves3/models/item/stone_10.json index 8da2a1e..2b3b93d 100644 --- a/assets/wildcaves3/models/item/stone_10.json +++ b/assets/wildcaves3/models/item/stone_10.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure10" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_11.json b/assets/wildcaves3/models/item/stone_11.json index ec2f37d..93b5e54 100644 --- a/assets/wildcaves3/models/item/stone_11.json +++ b/assets/wildcaves3/models/item/stone_11.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure11" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_12.json b/assets/wildcaves3/models/item/stone_12.json index 4041f3a..9e0bbaf 100644 --- a/assets/wildcaves3/models/item/stone_12.json +++ b/assets/wildcaves3/models/item/stone_12.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure12" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_2.json b/assets/wildcaves3/models/item/stone_2.json index 7f8d6ad..07c52e5 100644 --- a/assets/wildcaves3/models/item/stone_2.json +++ b/assets/wildcaves3/models/item/stone_2.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure2" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_3.json b/assets/wildcaves3/models/item/stone_3.json index 2ad3606..339a77d 100644 --- a/assets/wildcaves3/models/item/stone_3.json +++ b/assets/wildcaves3/models/item/stone_3.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure3" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_4.json b/assets/wildcaves3/models/item/stone_4.json index 17971e5..c6b9b0f 100644 --- a/assets/wildcaves3/models/item/stone_4.json +++ b/assets/wildcaves3/models/item/stone_4.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure4" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_5.json b/assets/wildcaves3/models/item/stone_5.json index 2d6e4a1..835daea 100644 --- a/assets/wildcaves3/models/item/stone_5.json +++ b/assets/wildcaves3/models/item/stone_5.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure5" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_6.json b/assets/wildcaves3/models/item/stone_6.json index 164ca84..12f5cb6 100644 --- a/assets/wildcaves3/models/item/stone_6.json +++ b/assets/wildcaves3/models/item/stone_6.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure6" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_7.json b/assets/wildcaves3/models/item/stone_7.json index 2c6cbc1..bf1c0ef 100644 --- a/assets/wildcaves3/models/item/stone_7.json +++ b/assets/wildcaves3/models/item/stone_7.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure7" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_8.json b/assets/wildcaves3/models/item/stone_8.json index 08056d6..3aadb54 100644 --- a/assets/wildcaves3/models/item/stone_8.json +++ b/assets/wildcaves3/models/item/stone_8.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure8" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/models/item/stone_9.json b/assets/wildcaves3/models/item/stone_9.json index e3d0c31..9dc1c8b 100644 --- a/assets/wildcaves3/models/item/stone_9.json +++ b/assets/wildcaves3/models/item/stone_9.json @@ -1,18 +1,6 @@ { - "parent": "builtin/generated", + "parent": "item/generated", "textures": { "layer0": "wildcaves3:blocks/stoneStructure9" - }, - "display": { - "thirdperson": { - "rotation": [ -90, 0, 0 ], - "translation": [ 0, 1, -3 ], - "scale": [ 0.55, 0.55, 0.55 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } } } \ No newline at end of file diff --git a/assets/wildcaves3/textures/blocks/flora0.png b/assets/wildcaves3/textures/blocks/flora0.png index b2e4f160d93714bbc6d9105f74930d17dcb11e1b..f63235bc8fa31cdfa1d5ec93b8a5dab56d655a90 100644 GIT binary patch delta 518 zcmV+h0{Q*H1fK+uBYyx1a7bBm000XT000XT0n*)m`~Uy}(Md!>RCwC$md&cdFc3!b zl3GPqwV1mt?X){xIj@SX4iB*2w00(#-s>(vS;(k5dK=YK+qqF`we@)vLo^^n1u z{sQm!yTVt15%CsiP!?3&Za1LNIUQQVTcG^)6?)OH3tTQ26^>(<@ZbWJ-~xu`qvp=% zvkJ%Y&v{{fLCvZnr8N$K^`k z-x5y1(%r;nvws0fXaNOnH1zp;y;k9?)ru9M_Xg9U)GC0Xr_+h;bZMHxa=BFK00=6hL%=#bTkt=kvKyfZ0X0`+<|d&r;U}X0sVkI04fRauSe`53RP%k|a^#qtOVC z$D=?@_X)a#XiK&V-B)b2_W*kkOF#rt3bcs2jsT`vR!)%>~_0~ zPNxHiE)Yc#P;>zqK$?}f-|uQ(zHb%icDsP+-+-%t+^Qyl4^-M+IMg8YWB>pF07*qo IM6N<$g0gM*CjbBd delta 553 zcmV+^0@nSX1i=K5BYy%2NklI7{~KPM5Lf#Efs1jRyTXSz6dTlx`>rl z(YiPY>Y|elI_cn|iw@$TW4k!|1swVTinu%Z!ef$>^toJeFAyk#!;d?1CI8G0fV2Z;5lLo(6{HPlMY;<`Y|HI*?p97>jD_- z0*3OD&#G^Uz5u;%b{7f5S`~*i92Y=X70@-GDpBc-%5ZjXT_B`tN#%76FjfUj?S~{t z`FUK1v-_3K9DiY069{QHQfeoG)0*H{+X50?GDB)HdoRDr1H1mmZXg+m1xszC8PBg2bl8KZz^6?x7Fkp#-EB*QCkIt9g(J~{!@ z3W_8kD7TYR053D=ASc6}{T$R@s)S)WPv8}VD>+o4^na9s(qqamus01Doq%o`M-~vD ziU~OME!Cna?92eC*}G~4JlnQuQwkMujw~Q^o0+;~BE6||9 z2%P{!>=!~noj+V)lLl<${Q`A5UZ0hi1VmlO7HG7VIE6JDK=BEz({Y3L_0wOgUK=J(tA_|DUFbVtuNDiAGvtv&y00000NkvXXu0mjf=#2CL diff --git a/assets/wildcaves3/textures/blocks/flora1.png b/assets/wildcaves3/textures/blocks/flora1.png index 3fa3d968ad0be9fc38f5df00e1bb2ac99ac1664a..5ef5247e5e9a02b97101c71ea0c179c9adef5c42 100644 GIT binary patch delta 419 zcmV;U0bKso1H1!}BYyx1a7bBm000XT000XT0n*)m`~Uy}Zb?KzRCwC$ld+0}KoEv~ zPeBM4qL9MarPb0dSO%L^3W>gg4`A=p%0L_q`Ea!X)yRz*6vn zh+P30Fbsncxkl6x)&!QqbqQ+%+<>=KHherDfZ)3dpRLu`TM@t@1i#gF4OLZ50*o~Q z)Af?Wb-UdFkpg<~W&zXGONp{9;d;Fi9})QFno$r66h%Sc`nGKeQ@uROmjo6joCGj9 z&vQZ-&}+HwReu43CtYqQ3Se-SWss&Rj5lIJ*7DJ87T`gXP4FGV&*w9N5(>KlT*&7v zuNi{Dr_%}IIA#&&a=A=k5A_5-8hsdfSXTwce>W329*+=35rkn#5{jqrw*`2sk|Y5{ z1v-)-2*CG!I2;Znp_smL50qp9ed~Gcs=(NMCV=6d=Ny6Sy7b&C@B@=;e^`OYOGj_sclNg$A5orz|3F*%KzV6Oi0AT$k zRv}ObjGRCKW5nnR=puzcA@KhMHem&j)tAKx{9S=-hI0)?NPiaQ1!TbS$4(-;M3Trr z0%^f1B4!0-z{TfjB65wWBa8{8h3gW=1h@fjschK!8V3a5Rd{TzzTSuc1|cNyUV_eB zDHLFg2_#)FIb6Z(1RzpC56&%+H1$#UTr&zHf%^*hcNG#?e_ke% z>g7@PC6F@VB!7V6-c1#}>uO9uujRUa1qhyWxt%D0;q9v$v@dJWyAdI>mX9X401ujM zg6|map4Y)WtCNJntN<6{86)zVAsFr)HNZKXCJBY*-A;vI5A_5-8hsdfSThBB|1Kur z95lh%v%%@wB%z3e4=li2<(@PEarT>5gxwivZO=k$Yc=jiqHBl0aS!z#3g}zUYcmCU m&0_)-zA+C=YYX(uEAS1npTNHyp8Zn*0000|WFpIRzisES)huAMMfsBZ41dB=p|c|Q5%5H;fS1S$ z;@En}7xDWE*a=9i3J?>ne}MR_#~31~1XPhD-WLE}*9j`YRv=7_5|gk3w#BCeyuyyi zwF0`px~@@-h!n6QXy;o3USUV%S^-WHl5dRTNE(iDLNzWx9xb#-Jt=@*#svDlCygG{ z0(R%DMC$Xp>t?53VK}O!u>y5nZ}2?crP!<96)=6>2~<@@nv?+lZ`+n)Z`xhqX_^F{ z6n?kF7|-)uD2jqKhy#0nS(fy@uuLx~DG=-lE3gRzWJn6|Ju!hV1?MaV=#}R700000 LNkvXXu0mjf{g|J~ delta 374 zcmV-+0g3*H1CRrdBYy!`NklV1F=w`F^C-1vM4vj({h^ z0$w2&#I^OVFUGqkzza~=1V|+O{sG2Uy~Yq}Bw#}7SYH5KydEm1Kp7AgCP_)K0Jpf2 zfEVnDv@2i(=AZXTNJIlz1npc)zzcRn+7*aJLh+KbuPw2}u~^W|E09ME`Ko6H(94v- zbTJf*owEXba&Ih=`@B~AX?J+~vLhB2m^|;6#C7qMQm=Yffcjby7(b50k`qwjw{1zi zX)D1~87O+pGAIjU{`mGlIeFL@3&sIIKc4T&_r?mlp{zi#7wmuw28758#Ai|hOWZ<^ U5Rx5_+W-In07*qoM6N<$f`H7byZ`_I diff --git a/assets/wildcaves3/textures/blocks/flora3.png b/assets/wildcaves3/textures/blocks/flora3.png index 5e1add28f47c87d695bcac8941cec0621e46799d..da11950b22ad818b2091eb8c92f6b2cc5f1c3594 100644 GIT binary patch delta 382 zcmV-^0fGLZ1DFGlBYyx1a7bBm000XT000XT0n*)m`~Uy}N=ZaPRCwC$mC+4@FbqVq zFmtd0e8T{U85n?-QjFrtm~#vTN~Q8~64;LK#Ze%{7{i?k55NO(J3!y}v-T_+$1(md z05U%U^qT;~FhrqM?ot44pdoag%ufT*jmX%W0-DHf0Be*90Dn&9G=QdQ-19^xUDw6a z06YlGgdi>fuy%{Y0DNn{4sgVL2B@lPR?gf5@bVu6Y&F+4=;~VE3lo4FPYT}njU$0I z8Ug}Ha}Pj6vN;2wFQ*I8w(Y{4-gD#E09&rG2|#8^isX{l1zYHYy}`1u6CwlvX%fOIGPUXjR0U_4oZpv cto6Fb3q0(3rh~#Z>i_@%07*qoM6N<$f;q>Zv;Y7A delta 392 zcmV;30eAkG1EB+uBYy#CNklYsZRfR0<`F=YKN_H`xvfE0*ZW?$0MfWp zipK9839PXY5I~zp02Wfr1ps|HLx9E4Q^TC!OXIfyU9PYTz-C#En93EW)a6Ke0qEUx ztg0oJHx(NfV}GVHzN)x9A=E;tnNGcxhwDBm04bu(@h36wU- zHB+M0 z6#)%cBcKwkaaPU#Q-R(%Q?qB;JfF``Bb5 zKoVf^`~6PH%;V*9=?QctngYB@1sJXZ2nVe_kOjgj0l@1;pnz)zj|6lTbiAPe2K5BA zo%A-LmH0>i^ndnR z6ZotGhr40$vRhE1-ia^0>lox2xK4z0f`jX6hIM zX22*xCAdN83M?~Cu#WRvtLo#0E8Fch(F*Sh*uQ9eZR)ajW>>-;2{*hefENp94>Z_@ zw6MWm_%6(0M1h0`Y&M%FOM93JpZ;@-@Lr(DD46^JE4%q=)M^k$00000NkvXXu0mjf DX}$&& delta 574 zcmV-E0>S;w1l9zQBYy%NNkl`^w?{=x&^fap_OfzgkEtz~ctefYXds0~;a_+0iiiIx=z z0tkMYJq2jy{`6y|CQy|q3&fjP0O2ek;X-i_%mv&ufeu`E0tvZB@Q^^Z3N+rJKv-5o zfZIWB6KaW30)Iknk5G7eR9q=U5U|D^6o^#I6jh)r1tbaDGlK#r@2g%oep@pI&`xJU zuTlh(NXN9?*YqZwBEaD+0Ri0CBp~77=yhE%+ejdReW9xdlWINm}O5O?{5oO;atah6%HRa1A1TRaP*6PT~WZQVW0(g&@ABhak+#0?W|3% zJIZH4OC5`V8qiZv3NGNP0^LjlsN?w7%KBL0%>M08pcGye(0|eJ+T>-g%r1o+5@vW+ zKwc~|dpCiDbw~*vY=yTRMi2;az~0qvk*?jfgg5^=mGD}i#ZWN#0XyOW4sUk-YybcN M07*qoM6N<$f@swQHUIzs diff --git a/assets/wildcaves3/textures/blocks/flora5.png b/assets/wildcaves3/textures/blocks/flora5.png index 32da7eca289ba2e325b6ad80a80e6fae0e66d0e7..246b18900b723e51c39f0efe780f680eb8c7a73b 100644 GIT binary patch delta 394 zcmV;50d@YL1ET|wBYyx1a7bBm000XT000XT0n*)m`~Uy}RY^oaRCwC$mP-zUFc3qz z|6yRo9&rHnoF*j|j$CW zln;Q5Y}@8i%S4LJy^RYXb%0#sec!v31E~VM+qeOw3Xn8S(|>RjNs7OrWmy7C>+n9U z``rMsc)=N2fJ5=w{Yi+)+zMa?3IoJRaPtGGD|}owL}7@VM_FrK0G9ozZ~~a;IYa?K zE%z2c&d&;f<^a&OUVx`g+XYyOZDdVA_qxvjH$h?bF#z}+sQ=vn93UJpuo=I*#fJJ1 z0AT@O{1!mT%74`)q_lg1U=TilCq!CbvT`@Tsi2d{0W{tb+5oI6C;;4`0F_U39{{GH z0Pz{QAptbp5845+QBQlx1vw{KpX4gQS@047hUl4q`aS{R43u)fx~w$2pahURgtq`# ofg{gM0FLNO062^!1Ka=)a!}5t{3Qtm00000NkvXXt^-0~g5=z#V*mgE delta 389 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 + + + par3List) { for (int i = 0; i < getNumOfStructures(); ++i) { par3List.add(new ItemStack(par1, 1, i)); } @@ -101,11 +96,6 @@ public Item getItemDropped(IBlockState metadata, Random random, int par3) { return Item.getItemFromBlock(Blocks.ice); } - @Override - public boolean isFullBlock() { - return false; - } - @Override public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block block) { if (!this.canBlockStay(world, pos)){ @@ -119,29 +109,53 @@ public int quantityDropped(Random rand) { } @Override - public boolean isOpaqueCube() { + public boolean isFullBlock(IBlockState state) { return false; } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, BlockPos pos) { - int metadata = getMetaFromState(par1IBlockAccess.getBlockState(pos)); - switch (metadata) { - case 1: - this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); - break; - case 2: - this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); - break; - case 9: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); - break; - case 10: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); - break; - default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); - break; - } + public boolean isOpaqueCube(IBlockState state) { + return false; + } + + @Override + public boolean isBlockNormalCube(IBlockState state) { + return false; + } + + @Override + public boolean isNormalCube(IBlockState state) { + return false; + } + + @Override + public boolean isVisuallyOpaque() { + return false; + } + + @Override + public boolean isFullCube(IBlockState state) { + return false; + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess par1IBlockAccess, BlockPos pos) { + return Utils.getBox(getMetaFromState(state)); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isTranslucent(IBlockState state) { + return true; + } + + @Override + public boolean isPassable(IBlockAccess access, BlockPos pos) { + return true; + } + + @Override + public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB alignedBB, List list, Entity entity) { + } } diff --git a/wildCaves/BlockFlora.java b/wildCaves/BlockFlora.java index 83c7ace..e7db463 100644 --- a/wildCaves/BlockFlora.java +++ b/wildCaves/BlockFlora.java @@ -2,17 +2,19 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockBush; +import net.minecraft.block.SoundType; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; -import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -27,14 +29,15 @@ public class BlockFlora extends BlockBush implements IShearable { private PropertyInteger ALL_TYPE; + private static AxisAlignedBB LOW_AABB = new AxisAlignedBB(0.25F, 0F, 0.25F, 0.6F, 0.75F, 0.75F); + private static AxisAlignedBB DEFAULT_AABB = new AxisAlignedBB(0.25F, 0F, 0.25F, 0.75F, 1F, 0.75F); public BlockFlora() { super(Material.plants); - this.setCreativeTab(WildCaves.tabWildCaves); this.setLightOpacity(0); - this.setStepSound(soundTypeGrass); - setResistance(0.6F); - setUnlocalizedName("floraBlock"); + this.setStepSound(SoundType.PLANT); + this.setResistance(0.6F); + this.setUnlocalizedName("floraBlock"); this.setDefaultState(this.blockState.getBaseState().withProperty(ALL_TYPE, 0)); } @@ -43,17 +46,17 @@ public int getNumOfStructures(){ } @Override - protected BlockState createBlockState() + protected BlockStateContainer createBlockState() { if(ALL_TYPE == null) { ALL_TYPE = PropertyInteger.create("type", 0, getNumOfStructures() - 1); } - return new BlockState(this, new IProperty[]{ALL_TYPE}); + return new BlockStateContainer(this, ALL_TYPE); } @Override public int getMetaFromState(IBlockState state){ - return (Integer) state.getValue(ALL_TYPE); + return state.getValue(ALL_TYPE); } @Override @@ -65,8 +68,8 @@ public IBlockState getStateFromMeta(int meta){ public boolean canBlockStay(World world, BlockPos pos, IBlockState state) { if(world.isBlockNormalCube(pos.down(), true)) return true; - Block bellowId = world.getBlockState(pos.down()).getBlock(); - return bellowId.getMaterial().getMaterialMapColor() == MapColor.iceColor || (bellowId == this && getMetaFromState(world.getBlockState(pos.down())) == 4); + IBlockState bellowId = world.getBlockState(pos.down()); + return bellowId.getMapColor() == MapColor.iceColor || (bellowId.getBlock() == this && getMetaFromState(bellowId) == 4); } @Override @@ -76,7 +79,7 @@ public int damageDropped(IBlockState meta){ @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < getNumOfStructures(); ++i) { par3List.add(new ItemStack(par1, 1, i)); } @@ -117,29 +120,25 @@ public int quantityDropped(Random rand) { } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, BlockPos pos) { - int metadata = getMetaFromState(par1IBlockAccess.getBlockState(pos)); - //setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ) + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess par1IBlockAccess, BlockPos pos) { + int metadata = getMetaFromState(state); switch (metadata) { case 1: - this.setBlockBounds(0.25F, 0F, 0.25F, 0.60F, 0.75F, 0.75F); - break; + return LOW_AABB; case 2: - this.setBlockBounds(0.25F, 0F, 0.25F, 0.75F, 0.4F, 0.75F); - break; + return DEFAULT_AABB.setMaxY(0.4F); default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); - break; + return DEFAULT_AABB; } } - @Override - protected boolean canPlaceBlockOn(Block par1) { + @Override//Can Place Block On + protected boolean func_185514_i(IBlockState par1) { return true; } @Override - public boolean canSustainPlant(IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable){ + public boolean canSustainPlant(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable){ return true; } diff --git a/wildCaves/BlockFossils.java b/wildCaves/BlockFossils.java index 4ce9643..72415c9 100644 --- a/wildCaves/BlockFossils.java +++ b/wildCaves/BlockFossils.java @@ -1,6 +1,7 @@ package wildCaves; import net.minecraft.block.Block; +import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; @@ -13,9 +14,8 @@ public class BlockFossils extends Block { public BlockFossils() { super(Material.rock); this.setHardness(1F); - this.setCreativeTab(WildCaves.tabWildCaves); setUnlocalizedName("fossilsBlock"); - this.setStepSound(soundTypePiston); + this.setStepSound(SoundType.STONE); } @Override diff --git a/wildCaves/BlockStalactite.java b/wildCaves/BlockStalactite.java index 4907202..d4e31b7 100644 --- a/wildCaves/BlockStalactite.java +++ b/wildCaves/BlockStalactite.java @@ -2,9 +2,8 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; -import net.minecraft.block.state.BlockState; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -12,10 +11,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.BlockPos; +import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.DamageSource; -import net.minecraft.util.EnumWorldBlockLayer; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -32,7 +31,6 @@ public BlockStalactite(Item drop) { super(Material.rock); this.droppedItem = drop; this.setHardness(0.8F); - this.setCreativeTab(WildCaves.tabWildCaves); this.setDefaultState(this.blockState.getBaseState().withProperty(ALL_TYPE, 0)); } @@ -45,16 +43,16 @@ public boolean isUp(IBlockState state){ } @Override - protected BlockState createBlockState(){ + protected BlockStateContainer createBlockState(){ if(ALL_TYPE == null) { ALL_TYPE = PropertyInteger.create("type", 0, getNumOfStructures() - 1); } - return new BlockState(this, new IProperty[]{ALL_TYPE}); + return new BlockStateContainer(this, ALL_TYPE); } @Override public int getMetaFromState(IBlockState state){ - return (Integer) state.getValue(ALL_TYPE); + return state.getValue(ALL_TYPE); } @Override @@ -100,25 +98,17 @@ public boolean connected(World world, BlockPos pos, boolean searchUp) { i = increment; while (world.getBlockState(pos.up(i)).getBlock() == WildCaves.blockStoneStalactite || world.getBlockState(pos.up(i)).getBlock() == WildCaves.blockSandStalactite) i = i + increment; - return world.getBlockState(pos.up(i)).getBlock().isNormalCube(world, pos.up(i)); + return world.getBlockState(pos.up(i)).isNormalCube(); } @Override - public AxisAlignedBB getCollisionBoundingBox(World par1World, BlockPos pos, IBlockState state) { - if (WildCaves.solidStalactites) - return super.getCollisionBoundingBox(par1World, pos, state); - else - return null; - } - - @Override - public int getDamageValue(World world, BlockPos pos) { - return getMetaFromState(world.getBlockState(pos)); + public int damageDropped(IBlockState state) { + return getMetaFromState(state); } @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i = 0; i < getNumOfStructures(); ++i) { par3List.add(new ItemStack(par1, 1, i)); } @@ -126,14 +116,9 @@ public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List @Override @SideOnly(Side.CLIENT) - public EnumWorldBlockLayer getBlockLayer() + public BlockRenderLayer getBlockLayer() { - return EnumWorldBlockLayer.CUTOUT; - } - - @Override - public boolean isFullBlock() { - return false; + return BlockRenderLayer.CUTOUT; } @Override @@ -165,6 +150,12 @@ public void onFallenUpon(World world, BlockPos pos, Entity entity, float par6) { } } + @Override + public void onLanded(World world, Entity entity) { + if(WildCaves.solidStalactites) + super.onLanded(world, entity); + } + @Override public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block neighbor) { if (!world.isRemote && !this.canBlockStay(world, pos, state)) { @@ -173,29 +164,54 @@ public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, } @Override - public boolean isOpaqueCube() { + public boolean isFullBlock(IBlockState state) { return false; } @Override - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, BlockPos pos) { - int metadata = getMetaFromState(par1IBlockAccess.getBlockState(pos)); - switch (metadata) { - case 1: - this.setBlockBounds(0.25F, 0.2F, 0.25F, 0.75F, 1F, 0.75F); - break; - case 2: - this.setBlockBounds(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); - break; - case 9: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.8F, 0.75F); - break; - case 10: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.4F, 0.75F); - break; - default: - this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); - break; - } + public boolean isOpaqueCube(IBlockState state) { + return false; + } + + @Override + public boolean isBlockNormalCube(IBlockState state) { + return false; + } + + @Override + public boolean isNormalCube(IBlockState state) { + return false; + } + + @Override + public boolean isVisuallyOpaque() { + return false; + } + + @Override + public boolean isFullCube(IBlockState state) { + return false; + } + + @Override + public boolean isPassable(IBlockAccess access, BlockPos pos) { + return !WildCaves.solidStalactites || super.isPassable(access, pos); + } + + @Override + public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB alignedBB, List list, Entity entity) { + if(WildCaves.solidStalactites) + super.addCollisionBoxToList(state, world, pos, alignedBB, list, entity); + } + + @Override + public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess par1IBlockAccess, BlockPos pos) { + return Utils.getBox(getMetaFromState(state)); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isTranslucent(IBlockState state) { + return true; } } diff --git a/wildCaves/BlockStoneStalactite.java b/wildCaves/BlockStoneStalactite.java index 3548146..f38a5e1 100644 --- a/wildCaves/BlockStoneStalactite.java +++ b/wildCaves/BlockStoneStalactite.java @@ -3,8 +3,8 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.Item; -import net.minecraft.util.BlockPos; import net.minecraft.util.EnumParticleTypes; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -24,9 +24,9 @@ public int getNumOfStructures(){ @Override @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, BlockPos pos, IBlockState state, Random random) { + public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random random) { if (isUp(state)) { - boolean isWatered = world.getBlockState(pos.up(2)).getBlock().getMaterial().isLiquid(); + boolean isWatered = world.getBlockState(pos.up(2)).getMaterial().isLiquid(); while (world.getBlockState(pos).getBlock() == this) { if (random.nextInt(5 + (isWatered ? 0 : 10)) == 0) { double d0 = pos.getX() + random.nextFloat(); diff --git a/wildCaves/ClientProxy.java b/wildCaves/ClientProxy.java index da1fdeb..0959ddd 100644 --- a/wildCaves/ClientProxy.java +++ b/wildCaves/ClientProxy.java @@ -1,9 +1,18 @@ package wildCaves; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemModelMesher; -import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.color.IBlockColor; +import net.minecraft.client.renderer.color.IItemColor; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ColorizerFoliage; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.biome.BiomeColorHelper; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.ModContainer; @@ -16,29 +25,47 @@ public void registerRenders() { Item item = Item.getItemFromBlock(WildCaves.blockStoneStalactite); ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher(); for(int i = 0; i < WildCaves.stalacs.size(); i++) { - ModelLoader.addVariantName(item, PREFIX + "stone_" + i); + ModelLoader.registerItemVariants(item, new ResourceLocation(PREFIX + "stone_" + i)); mesher.register(item, i, defaultModel("stone_" + i)); } item = Item.getItemFromBlock(WildCaves.blockSandStalactite); for(int i = 0; i < WildCaves.sandStalacs.size(); i++) { - ModelLoader.addVariantName(item, PREFIX + "sandstone_" + i); + ModelLoader.registerItemVariants(item, new ResourceLocation(PREFIX + "sandstone_" + i)); mesher.register(item, i, defaultModel("sandstone_" + i)); } item = Item.getItemFromBlock(WildCaves.blockDecorations); for(int i = 0; i < WildCaves.icicles.size(); i++) { - ModelLoader.addVariantName(item, PREFIX + "icicle_" + i); + ModelLoader.registerItemVariants(item, new ResourceLocation(PREFIX + "icicle_" + i)); mesher.register(item, i, defaultModel("icicle_" + i)); } item = Item.getItemFromBlock(WildCaves.blockFlora); for(int i = 0; i < WildCaves.caps.size(); i++) { - ModelLoader.addVariantName(item, PREFIX + "flora_" + i); + ModelLoader.registerItemVariants(item, new ResourceLocation(PREFIX + "flora_" + i)); mesher.register(item, i, defaultModel("flora_" + i)); } item = Item.getItemFromBlock(WildCaves.blockFossils); for(int i = 0; i < WildCaves.fossils.size(); i++) { - ModelLoader.addVariantName(item, PREFIX + "fossil_" + i); + ModelLoader.registerItemVariants(item, new ResourceLocation(PREFIX + "fossil_" + i)); mesher.register(item, i, defaultModel("fossil_" + i)); } + Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler(new IBlockColor() { + @Override + public int colorMultiplier(IBlockState iBlockState, IBlockAccess iBlockAccess, BlockPos blockPos, int i) { + if(iBlockState != null){ + if(WildCaves.blockFlora.getMetaFromState(iBlockState) < 6) + return iBlockAccess != null ? BiomeColorHelper.getFoliageColorAtPos(iBlockAccess, blockPos) : ColorizerFoliage.getFoliageColorBasic(); + } + return -1; + } + }, WildCaves.blockFlora); + Minecraft.getMinecraft().getItemColors().registerItemColorHandler(new IItemColor() { + @Override + public int getColorFromItemstack(ItemStack itemStack, int i) { + if(itemStack.getMetadata() < 6) + return ColorizerFoliage.getFoliageColorBasic(); + return -1; + } + }, WildCaves.blockFlora); } private ModelResourceLocation defaultModel(String type){ diff --git a/wildCaves/EventManager.java b/wildCaves/EventManager.java index 0f1a12a..079cfdf 100644 --- a/wildCaves/EventManager.java +++ b/wildCaves/EventManager.java @@ -1,6 +1,6 @@ package wildCaves; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraftforge.event.terraingen.OreGenEvent; @@ -19,8 +19,8 @@ public EventManager(int chanceForNodeToSpawn) @SubscribeEvent public void generate(OreGenEvent.Post oreGen){ - if (!WorldGenWildCaves.dimensionBlacklist.contains(oreGen.world.provider.getDimensionId())) { - this.addOreSpawn(oreGen.rand.nextInt(mines.length), oreGen.world, oreGen.rand, oreGen.pos); + if (!WorldGenWildCaves.dimensionBlacklist.contains(oreGen.getWorld().provider.getDimension())) { + this.addOreSpawn(oreGen.getRand().nextInt(mines.length), oreGen.getWorld(), oreGen.getRand(), oreGen.getPos()); } } diff --git a/wildCaves/ItemStalactite.java b/wildCaves/ItemStalactite.java index 0edcedd..d5a0d61 100644 --- a/wildCaves/ItemStalactite.java +++ b/wildCaves/ItemStalactite.java @@ -6,7 +6,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; -import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; @@ -18,35 +21,26 @@ public ItemStalactite(Block block, ArrayList names) { } @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, World world, BlockPos pos, EnumFacing side, float par8, float par9, float par10) { + public EnumActionResult onItemUse(ItemStack itemStack, EntityPlayer par2EntityPlayer, World world, BlockPos pos, EnumHand hand, EnumFacing side, float par8, float par9, float par10) { IBlockState state = world.getBlockState(pos); Block blockId = state.getBlock(); - if (blockId == Blocks.snow && ((Integer)state.getValue(BlockSnow.LAYERS)) < 1) { + if (blockId == Blocks.snow && (state.getValue(BlockSnow.LAYERS)) < 1) { side = EnumFacing.UP; - } else if (blockId != Blocks.vine && blockId != Blocks.tallgrass && blockId != Blocks.deadbush - && (blockId == Blocks.air || !blockId.isReplaceable(world, pos))) { + } else if (blockId != Blocks.tallgrass && blockId != Blocks.deadbush && (blockId == Blocks.air || !blockId.isReplaceable(world, pos))) { pos = pos.offset(side); } - if (itemStack.stackSize == 0) { - return false; - } else if (!par2EntityPlayer.canPlayerEdit(pos, side, itemStack)) { - return false; - } else if (pos.getY() == 255) { - return false; - } else if (world.canBlockBePlaced(block, pos, false, side, par2EntityPlayer, itemStack)) { + if (itemStack.stackSize > 0 && par2EntityPlayer.canPlayerEdit(pos, side, itemStack) && world.canBlockBePlaced(block, pos, false, side, par2EntityPlayer, itemStack)) { if (canPlace(itemStack, world, pos)) { int j1 = this.getMetadata(itemStack.getMetadata()); IBlockState k1 = block.onBlockPlaced(world, pos, side, par8, par9, par10, j1, par2EntityPlayer); if (placeBlockAt(itemStack, par2EntityPlayer, world, pos, side, par8, par9, par10, k1)) { - world.playSoundEffect(pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getFrequency() * 0.8F); + world.playSound(par2EntityPlayer, pos, block.getStepSound().getPlaceSound(), SoundCategory.BLOCKS, (block.getStepSound().getVolume() + 1.0F) / 2.0F, block.getStepSound().getPitch() * 0.8F); --itemStack.stackSize; } - return true; - } else - return false; - } else { - return false; + return EnumActionResult.SUCCESS; + } } + return EnumActionResult.FAIL; } private boolean canPlace(ItemStack itemStack, World world, BlockPos pos) { diff --git a/wildCaves/Utils.java b/wildCaves/Utils.java index 15a4360..4ae48b5 100644 --- a/wildCaves/Utils.java +++ b/wildCaves/Utils.java @@ -3,8 +3,10 @@ import java.util.*; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public final class Utils { @@ -113,4 +115,21 @@ public static int weightedChoise(float par1, float par2, float par3, float par4, else return 6; } + + private static AxisAlignedBB HIGH_AABB = new AxisAlignedBB(0.25F, 0.5F, 0.25F, 0.75F, 1F, 0.75F); + private static AxisAlignedBB DEFAULT_AABB = new AxisAlignedBB(0.25F, 0.0F, 0.25F, 0.75F, 1F, 0.75F); + public static AxisAlignedBB getBox(int state){ + switch (state) { + case 1: + return HIGH_AABB.addCoord(0, -0.3F, 0); + case 2: + return HIGH_AABB; + case 9: + return DEFAULT_AABB.setMaxY(0.8F); + case 10: + return DEFAULT_AABB.setMaxY(0.4F); + default: + return DEFAULT_AABB; + } + } } diff --git a/wildCaves/WildCaves.java b/wildCaves/WildCaves.java index ae0f900..06026f6 100644 --- a/wildCaves/WildCaves.java +++ b/wildCaves/WildCaves.java @@ -5,16 +5,20 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraftforge.common.ChestGenHooks; +import net.minecraft.world.storage.loot.*; +import net.minecraft.world.storage.loot.conditions.LootCondition; +import net.minecraft.world.storage.loot.conditions.RandomChance; +import net.minecraft.world.storage.loot.functions.LootFunction; +import net.minecraft.world.storage.loot.functions.SetMetadata; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.event.LootTableLoadEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import java.util.ArrayList; @@ -37,19 +41,15 @@ public final class WildCaves { public static Block blockStoneStalactite, blockSandStalactite; public static boolean solidStalactites, damageWhenFallenOn; private static Configuration config; - public static final CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { - @Override - public Item getTabIconItem() { - return Items.ender_eye; - } - }; + private static int chestSkull = 50; @EventHandler public void load(FMLInitializationEvent event) { WorldGenWildCaves gen = new WorldGenWildCaves(config); - if (gen.maxLength > 0) { + if (gen.maxLength > 0) MinecraftForge.EVENT_BUS.register(gen); - } + if(chestSkull > 0) + MinecraftForge.EVENT_BUS.register(this); proxy.registerRenders(); } @@ -60,29 +60,34 @@ public void preInit(FMLPreInitializationEvent event) { damageWhenFallenOn = config.getBoolean("Stalgmites damage entities when fallen on", Configuration.CATEGORY_GENERAL, false, "Whether living beings would be damaged when falling on the block."); int floraLightLevel = config.getInt("Flora light level", Configuration.CATEGORY_GENERAL, 5, 0, 15, "How much light is emitted by the mushrooms."); - blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite(), ItemStalactite.class, "StoneStalactite", stalacs); + CreativeTabs tabWildCaves = new CreativeTabs("WildCaves3") { + @Override + public Item getTabIconItem() { + return Items.ender_eye; + } + }; + blockStoneStalactite = GameRegistry.registerBlock(new BlockStoneStalactite().setCreativeTab(tabWildCaves), ItemStalactite.class, "StoneStalactite", stalacs); blockSandStalactite = GameRegistry.registerBlock(new BlockStalactite(Item.getItemFromBlock(Blocks.sandstone)). - setUnlocalizedName("sandstoneStalactiteBlock"), ItemStalactite.class, "SandstoneSalactite", sandStalacs); - blockDecorations = GameRegistry.registerBlock(new BlockDecorations(), MultiItemBlock.class, "Decorations", icicles); - blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel), MultiItemBlock.class, "Flora", caps); - blockFossils = GameRegistry.registerBlock(new BlockFossils(), MultiItemBlock.class, "FossilBlock", fossils); + setUnlocalizedName("sandstoneStalactiteBlock").setCreativeTab(tabWildCaves), ItemStalactite.class, "SandstoneSalactite", sandStalacs); + blockDecorations = GameRegistry.registerBlock(new BlockDecorations().setCreativeTab(tabWildCaves), MultiItemBlock.class, "Decorations", icicles); + blockFlora = GameRegistry.registerBlock(new BlockFlora().setLightLevel(floraLightLevel).setCreativeTab(tabWildCaves), MultiItemBlock.class, "Flora", caps); + blockFossils = GameRegistry.registerBlock(new BlockFossils().setCreativeTab(tabWildCaves), MultiItemBlock.class, "FossilBlock", fossils); int chanceForNodeToSpawn = config.get(Configuration.CATEGORY_GENERAL, "Chance for a fossil node to generate", 5).getInt(); if(chanceForNodeToSpawn > 0) { MinecraftForge.ORE_GEN_BUS.register(new EventManager(chanceForNodeToSpawn)); } - int chestSkull = config.get(Configuration.CATEGORY_GENERAL, "Chance for a skull to be added in chests", 50).getInt(); - if(chestSkull > 0) - for (String txt : new String[] { ChestGenHooks.DUNGEON_CHEST, ChestGenHooks.MINESHAFT_CORRIDOR, ChestGenHooks.STRONGHOLD_CORRIDOR }) { - for (int i = 0; i < 5; i++) { - if (i != 1) { - ChestGenHooks.getInfo(txt).addItem(new WeightedRandomChestContent(new ItemStack(Items.skull, 1, i), 1, 2, chestSkull));//skeleton//zombie//steve//creeper - } - } - } + chestSkull = config.get(Configuration.CATEGORY_GENERAL, "Chance for a skull to be added in chests", chestSkull).getInt(); if(event.getSourceFile().getName().endsWith(".jar")){ proxy.MUD(); } } + + @SubscribeEvent + public void onLootLoad(LootTableLoadEvent loading){ + if(loading.getName() == LootTableList.CHESTS_SIMPLE_DUNGEON || loading.getName() == LootTableList.CHESTS_ABANDONED_MINESHAFT || loading.getName() == LootTableList.CHESTS_STRONGHOLD_CORRIDOR) { + loading.getTable().addPool(new LootPool(new LootEntry[]{new LootEntryItem(Items.skull, 1, 0, new LootFunction[]{new SetMetadata(null, new RandomValueRange(0, 4))}, new LootCondition[0], "skull")}, new LootCondition[]{new RandomChance(1 / (float)chestSkull)}, new RandomValueRange(1, 1), new RandomValueRange(0, 0), "skulls")); + } + } } diff --git a/wildCaves/WorldGenWildCaves.java b/wildCaves/WorldGenWildCaves.java index 5a12848..718494b 100644 --- a/wildCaves/WorldGenWildCaves.java +++ b/wildCaves/WorldGenWildCaves.java @@ -3,7 +3,8 @@ import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; -import net.minecraft.util.BlockPos; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.BiomeDictionary; @@ -52,11 +53,11 @@ public static boolean isWhiteListed(Block block){ @SubscribeEvent public void decorate(DecorateBiomeEvent.Post decorationEvent){ - generate(decorationEvent.rand, decorationEvent.pos.add(8, 0, 8), decorationEvent.world); + generate(decorationEvent.getRand(), decorationEvent.getPos().add(8, 0, 8), decorationEvent.getWorld()); } public void generate(Random random, BlockPos pos, World world) { - if (!dimensionBlacklist.contains(world.provider.getDimensionId())) { + if (!dimensionBlacklist.contains(world.provider.getDimension())) { BlockPos coord; //int dist;// distance BiomeGenBase biome; @@ -72,9 +73,9 @@ public void generate(Random random, BlockPos pos, World world) { // getting the biome biome = world.getBiomeGenForCoords(coord); //dist = Utils.getNumEmptyBlocks(world, Xcoord, Ycoord, Zcoord); - if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.FROZEN)) + if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.COLD)) frozenGen.generate(world, random, coord); - else if (biome.temperature > 1.5f && biome.rainfall < 0.1f) + else if (biome.getTemperature() > 1.5f && biome.getRainfall() < 0.1f) aridGen.generate(world, random, coord); else if (BiomeDictionary.isBiomeOfType(biome, BiomeDictionary.Type.JUNGLE)) jungleGen.generate(world, random, coord); @@ -128,11 +129,11 @@ private static void setConfig(Configuration config) { Block block; for (String txt : list) { try { - block = GameData.getBlockRegistry().getObject(txt.trim()); - if(block != null && block.getMaterial() != Material.air){ + block = GameData.getBlockRegistry().getObject(new ResourceLocation(txt.trim())); + if(block != null && block.getMaterial(null) != Material.air){ blockWhiteList.add(block); } - } catch (Exception n) { + } catch (Throwable n) { } } // --Biome specific ratios------ @@ -140,11 +141,11 @@ private static void setConfig(Configuration config) { probabilityVinesJungle = (float) config.get(category, "Probability of vines on jungle caves", 0.5).getDouble(0.5); probabilityIcicle = (float) config.get(category, "Probability of icicles on frozen caves", 0.6).getDouble(0.6); try{ - block = GameData.getBlockRegistry().getObject(config.get(category, "Block to generate in frozen caves", "ice").getString().trim()); - if(block!=null && block.getMaterial().getMaterialMapColor()== MapColor.iceColor){ + block = GameData.getBlockRegistry().getObject(new ResourceLocation(config.get(category, "Block to generate in frozen caves", "ice").getString().trim())); + if(block!=null && block.getMapColor(null) == MapColor.iceColor){ Utils.frozen = block; } - }catch (Exception n){ + }catch (Throwable n){ } probabilityWet = (float) config.get(category, "Probability of more water fountains on wet caves", 0.1).getDouble(0.1); probabilityDry = (float) config.get(category, "Probability of less generation arid caves", 0.5).getDouble(0.5); diff --git a/wildCaves/generation/biomeGen/GenerationArid.java b/wildCaves/generation/biomeGen/GenerationArid.java index a079cf4..05d24c0 100644 --- a/wildCaves/generation/biomeGen/GenerationArid.java +++ b/wildCaves/generation/biomeGen/GenerationArid.java @@ -1,7 +1,7 @@ package wildCaves.generation.biomeGen; import net.minecraft.init.Blocks; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; diff --git a/wildCaves/generation/biomeGen/GenerationFrozen.java b/wildCaves/generation/biomeGen/GenerationFrozen.java index 47ee033..230886b 100644 --- a/wildCaves/generation/biomeGen/GenerationFrozen.java +++ b/wildCaves/generation/biomeGen/GenerationFrozen.java @@ -1,7 +1,7 @@ package wildCaves.generation.biomeGen; import net.minecraft.init.Blocks; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; diff --git a/wildCaves/generation/biomeGen/GenerationHumid.java b/wildCaves/generation/biomeGen/GenerationHumid.java index b98b516..ac0fed4 100644 --- a/wildCaves/generation/biomeGen/GenerationHumid.java +++ b/wildCaves/generation/biomeGen/GenerationHumid.java @@ -1,7 +1,7 @@ package wildCaves.generation.biomeGen; import net.minecraft.init.Blocks; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; diff --git a/wildCaves/generation/biomeGen/GenerationJungle.java b/wildCaves/generation/biomeGen/GenerationJungle.java index c2ecb2c..96ed837 100644 --- a/wildCaves/generation/biomeGen/GenerationJungle.java +++ b/wildCaves/generation/biomeGen/GenerationJungle.java @@ -1,7 +1,7 @@ package wildCaves.generation.biomeGen; import net.minecraft.init.Blocks; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; diff --git a/wildCaves/generation/biomeGen/GenerationNormal.java b/wildCaves/generation/biomeGen/GenerationNormal.java index fc7e686..d6bc028 100644 --- a/wildCaves/generation/biomeGen/GenerationNormal.java +++ b/wildCaves/generation/biomeGen/GenerationNormal.java @@ -1,7 +1,7 @@ package wildCaves.generation.biomeGen; import net.minecraft.init.Blocks; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import wildCaves.Utils; diff --git a/wildCaves/generation/structureGen/DecorationHelper.java b/wildCaves/generation/structureGen/DecorationHelper.java index 82a5883..7bbe9b2 100644 --- a/wildCaves/generation/structureGen/DecorationHelper.java +++ b/wildCaves/generation/structureGen/DecorationHelper.java @@ -4,7 +4,7 @@ import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySkull; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import wildCaves.Utils; @@ -69,7 +69,7 @@ public static void generateIceshrooms(World world, Random random, BlockPos pos) pos = pos.down(vary - 1); } if (!world.isAirBlock(pos.down())) { - if (!world.getBlockState(pos).getBlock().getMaterial().isLiquid()) { + if (!world.getBlockState(pos).getMaterial().isLiquid()) { world.setBlockState(pos.down(), Utils.frozen.getDefaultState(), 2); world.setBlockState(pos, WildCaves.blockFlora.getStateFromMeta(Utils.randomChoise(6, 7, 8, 9)), 2); } @@ -83,7 +83,7 @@ public static void generateIcicles(World world, Random random, BlockPos pos, int world.setBlockState(pos, WildCaves.blockDecorations.getStateFromMeta(Utils.randomChoise(0, 1, 2)), 2); Utils.convertToFrozenType(world, random, pos); BlockPos botY = pos.down(distance - 1); - if (distance!=0 && !world.getBlockState(botY).getBlock().getMaterial().isLiquid()) { + if (distance!=0 && !world.getBlockState(botY).getMaterial().isLiquid()) { Utils.convertToFrozenType(world, random, botY); } } @@ -115,7 +115,7 @@ public static void generateVines(World world, Random random, BlockPos pos) { EnumFacing side = EnumFacing.values()[random.nextInt(4)+2]; // length of the vine int i=0; - while(i= botY.getY() && j < distance && !world.getBlockState(topY.down()).getBlock().getMaterial().isLiquid()) { + while (k < maxLength && topY.getY() >= botY.getY() && j < distance && !world.getBlockState(topY.down()).getMaterial().isLiquid()) { k++; IBlockState state = world.getBlockState(topY); topMetadata = state.getBlock().getMetaFromState(state);