summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/worldGen
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-08-13 21:12:11 +0100
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-08-13 21:12:11 +0100
commit0ef6a00aa79f022e5bd56b3f77e6861bbecf6d94 (patch)
tree03966c83cd16d1912ec1596d83f89f251cc35f83 /src/main/java/darkknight/jewelrycraft/worldGen
parent921f1ba6f30e66c80c803618ebff496778e78970 (diff)
Added a new structure, a new curse, achievements, challenges, curses
entry in the guide; reworked liquids to be tile entities, cleaned the structures code, potion code and... you know what? I improved and changed so much stuff that I literally forgot what I did...
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/worldGen')
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/Generation.java119
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure.java25
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure1.java2
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure10.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure11.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure2.java20
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure3.java4
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure4.java6
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure5.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure6.java93
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure7.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure8.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure9.java29
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java900
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/village/JCTrades.java2
-rw-r--r--src/main/java/darkknight/jewelrycraft/worldGen/village/VillageHandler.java54
16 files changed, 653 insertions, 746 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/Generation.java b/src/main/java/darkknight/jewelrycraft/worldGen/Generation.java
index 3a81cfb..a6c49e8 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/Generation.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/Generation.java
@@ -1,28 +1,24 @@
package darkknight.jewelrycraft.worldGen;
import java.util.Random;
-
+import cpw.mods.fml.common.IWorldGenerator;
+import darkknight.jewelrycraft.block.BlockList;
+import darkknight.jewelrycraft.config.ConfigHandler;
+import net.minecraft.client.multiplayer.ChunkProviderClient;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
-import cpw.mods.fml.common.IWorldGenerator;
-import darkknight.jewelrycraft.block.BlockList;
-import darkknight.jewelrycraft.config.ConfigHandler;
+import net.minecraftforge.event.terraingen.ChunkProviderEvent;
public class Generation implements IWorldGenerator {
- public static WorldGenStructure1 STRUCTURE_1 = new WorldGenStructure1();
- public static WorldGenStructure2 STRUCTURE_2 = new WorldGenStructure2();
- public static WorldGenStructure3 STRUCTURE_3 = new WorldGenStructure3();
- public static WorldGenStructure4 STRUCTURE_4 = new WorldGenStructure4();
- public static WorldGenStructure5 STRUCTURE_5 = new WorldGenStructure5();
+ public static WorldGenStructure STRUCTURE_1 = new WorldGenStructure1();
+ public static WorldGenStructure STRUCTURE_2 = new WorldGenStructure2();
+ public static WorldGenStructure STRUCTURE_3 = new WorldGenStructure3();
+ public static WorldGenStructure STRUCTURE_4 = new WorldGenStructure4();
+ public static WorldGenStructure STRUCTURE_5 = new WorldGenStructure5();
+ public static WorldGenStructure STRUCTURE_6 = new WorldGenStructure6();
- // public static WorldGenerator STRUCTURE_6 = new WorldGenStructure6();
- // public static WorldGenerator STRUCTURE_7 = new WorldGenStructure7();
- // public static WorldGenerator STRUCTURE_8 = new WorldGenStructure8();
- // public static WorldGenerator STRUCTURE_9 = new WorldGenStructure9();
- // public static WorldGenerator STRUCTURE_10 = new WorldGenStructure10();
- // public static WorldGenerator STRUCTURE_11 = new WorldGenStructure11();
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch (world.provider.dimensionId) {
@@ -38,23 +34,22 @@ public class Generation implements IWorldGenerator {
}
}
- private void generateEnd(World world, Random random, int i, int j) {
- }
+ private void generateEnd(World world, Random random, int i, int j) {}
private void generateSurface(World world, Random random, int i, int j) {
if (ConfigHandler.ENABLE_WORLD_GEN) {
- if(ConfigHandler.ORE_GEN) generateShadowOre(world, random, i, j);
- if(ConfigHandler.CRYSTAL_GEN) generateCrystals(world, random, i, j);
- if(ConfigHandler.STRUCTURE_1_GEN) generateStructure1(world, random, i, j);
- if(ConfigHandler.STRUCTURE_2_GEN) generateStructure2(world, random, i, j);
- if(ConfigHandler.STRUCTURE_3_GEN) generateStructure3(world, random, i, j);
- if(ConfigHandler.STRUCTURE_4_GEN) generateStructure4(world, random, i, j);
- if(ConfigHandler.STRUCTURE_5_GEN) generateStructure5(world, random, i, j);
+ if (ConfigHandler.ORE_GEN) generateShadowOre(world, random, i, j);
+ if (ConfigHandler.CRYSTAL_GEN) generateCrystals(world, random, i, j);
+ if (ConfigHandler.STRUCTURES[0]) generateStructureOverground(STRUCTURE_1, world, random, i, j, 1, false, true);
+ if (ConfigHandler.STRUCTURES[1]) generateStructureUnderground(STRUCTURE_2, world, random, i, j, 3, false, true);
+ if (ConfigHandler.STRUCTURES[2]) generateStructureUnderground(STRUCTURE_3, world, random, i, j, 3, false, true);
+ if (ConfigHandler.STRUCTURES[3]) generateStructureOverground(STRUCTURE_4, world, random, i, j, 5, false, true);
+ if (ConfigHandler.STRUCTURES[4]) generateStructureUnderground(STRUCTURE_5, world, random, i, j, 3, false, true);
+ if (ConfigHandler.STRUCTURES[5]) generateStructureOverground(STRUCTURE_6, world, random, i, j, 3, false, true);
}
}
- private void generateNether(World world, Random random, int i, int j) {
- }
+ private void generateNether(World world, Random random, int i, int j) {}
private void generateShadowOre(World world, Random random, int i, int j) {
for (int k = 0; k < 1; k++) {
@@ -81,51 +76,47 @@ public class Generation implements IWorldGenerator {
}
}
- private void generateStructure1(World world, Random random, int i, int j) {
- BiomeGenBase biomeBase = world.getBiomeGenForCoords(i, j);
- int x = i + random.nextInt(16);
- int y = random.nextInt(100);
- int z = j + random.nextInt(16);
- if (world.getBlock(x, y, z) == Blocks.air && (world.getBlock(x, y - 1, z) == Blocks.stone || world.getBlock(x, y - 1, z) == Blocks.sand || world.getBlock(x, y - 1, z) == Blocks.grass)) STRUCTURE_1.generate(world, biomeBase, random, x, y, z);
- }
-
- private void generateStructure2(World world, Random random, int i, int j) {
+ private void generateStructureUnderground(WorldGenStructure structure, World world, Random random, int i, int j, int maxAttempts, boolean noOfAttempts, boolean chanceOfSpawning) {
BiomeGenBase biomeBase = world.getBiomeGenForCoords(i, j);
- if (random.nextInt(3) == 0) {
- int x = i + random.nextInt(16);
- int y = random.nextInt(100);
- int z = j + random.nextInt(16);
- if (world.getBlock(x, y, z) == Blocks.stone) STRUCTURE_2.generate(world, biomeBase, random, x, y, z);
+ if (noOfAttempts) {
+ for (int k = 0; k < maxAttempts; k++) {
+ int x = i + random.nextInt(16);
+ int y = random.nextInt(64);
+ int z = j + random.nextInt(16);
+ if (world.getBlock(x, y, z) == Blocks.stone) structure.generate(world, biomeBase, random, x, y, z);
+ }
}
- }
-
- private void generateStructure3(World world, Random random, int i, int j) {
- BiomeGenBase biomeBase = world.getBiomeGenForCoords(i, j);
- if (random.nextInt(3) == 0) {
- int x = i + random.nextInt(16);
- int y = random.nextInt(100);
- int z = j + random.nextInt(16);
- if (world.getBlock(x, y, z) == Blocks.stone) STRUCTURE_3.generate(world, biomeBase, random, x, y, z);
+ else if (chanceOfSpawning) {
+ if (random.nextInt(maxAttempts) == 0) {
+ int x = i + random.nextInt(16);
+ int y = random.nextInt(64);
+ int z = j + random.nextInt(16);
+ if (world.getBlock(x, y, z) == Blocks.stone) structure.generate(world, biomeBase, random, x, y, z);
+ }
}
}
- private void generateStructure4(World world, Random random, int i, int j) {
+ private void generateStructureOverground(WorldGenStructure structure, World world, Random random, int i, int j, int maxAttempts, boolean noOfAttempts, boolean chanceOfSpawning) {
BiomeGenBase biomeBase = world.getBiomeGenForCoords(i, j);
- if (random.nextInt(5) == 0) {
- int x = i + random.nextInt(16);
- int y = random.nextInt(100);
- int z = j + random.nextInt(16);
- if (world.getBlock(x, y, z) == Blocks.air && (world.getBlock(x, y - 1, z) == Blocks.stone || world.getBlock(x, y - 1, z) == Blocks.sand || world.getBlock(x, y - 1, z) == Blocks.grass)) STRUCTURE_4.generate(world, biomeBase, random, x, y, z);
+ if (noOfAttempts) {
+ for (int k = 0; k < maxAttempts; k++) {
+ int x = i + random.nextInt(16);
+ int y = (world.getChunkHeightMapMinimum(i, j) > 0 ? world.getChunkHeightMapMinimum(i, j): world.getChunkFromChunkCoords(i, j).heightMapMinimum - 16) + random.nextInt(4);
+ int z = j + random.nextInt(16);
+ if (world.getBlock(x, y, z) == Blocks.air && (world.getBlock(x, y - 1, z) == Blocks.stone || world.getBlock(x, y - 1, z) == Blocks.sand || world.getBlock(x, y - 1, z) == Blocks.grass)) structure.generate(world, biomeBase, random, x, y, z);
+ }
}
- }
-
- private void generateStructure5(World world, Random random, int i, int j) {
- BiomeGenBase biomeBase = world.getBiomeGenForCoords(i, j);
- if (random.nextInt(3) == 0) {
- int x = i + random.nextInt(16);
- int y = random.nextInt(100);
- int z = j + random.nextInt(16);
- if (world.getBlock(x, y, z) == Blocks.stone) STRUCTURE_5.generate(world, biomeBase, random, x, y, z);
+ else if (chanceOfSpawning) {
+ if (random.nextInt(maxAttempts) == 0) {
+ int x = i + random.nextInt(16);
+ int y = (world.getChunkHeightMapMinimum(i, j) > 0 ? world.getChunkHeightMapMinimum(i, j): world.getChunkFromChunkCoords(i, j).heightMapMinimum - 16) + random.nextInt(4);
+ int z = j + random.nextInt(16);
+ if (world.getBlock(x, y, z) == Blocks.air && (world.getBlock(x, y - 1, z) == Blocks.stone
+ || world.getBlock(x, y - 1, z) == Blocks.sand
+ || world.getBlock(x, y - 1, z) == Blocks.grass)){ structure.generate(world, biomeBase, random, x, y, z);
+ System.out.println(x + " " + z);
+ }
+ }
}
}
}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure.java
new file mode 100644
index 0000000..c2c4046
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure.java
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package darkknight.jewelrycraft.worldGen;
+
+import java.util.Random;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraft.world.gen.feature.WorldGenerator;
+
+/**
+ * @author Sorin
+ */
+public class WorldGenStructure extends WorldGenerator
+{
+ public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean generate(World world, Random rand, int x, int y, int z) {
+ return false;
+ }
+}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure1.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure1.java
index 5d9118f..c982e00 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure1.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure1.java
@@ -20,7 +20,7 @@ import darkknight.jewelrycraft.tileentity.TileEntityHandPedestal;
/**
* @author Sorin
*/
-public class WorldGenStructure1 extends WorldGenerator
+public class WorldGenStructure1 extends WorldGenStructure
{
public static final WeightedRandomItem[] items = new WeightedRandomItem[]{new WeightedRandomItem(new ItemStack(ItemList.thiefGloves), 10), new WeightedRandomItem(new ItemStack(Items.golden_apple), 8), new WeightedRandomItem(new ItemStack(Items.golden_apple, 1, 1), 1), new WeightedRandomItem(new ItemStack(ItemList.guide), 20), new WeightedRandomItem(new ItemStack(ItemList.shadowIngot), 25), new WeightedRandomItem(new ItemStack(BlockList.shadowEye), 2), new WeightedRandomItem(new ItemStack(Items.nether_star), 1), new WeightedRandomItem(new ItemStack(BlockList.shadowBlock), 2), new WeightedRandomItem(new ItemStack(BlockList.crystal), 16, 20)};
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure10.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure10.java
deleted file mode 100644
index b838368..0000000
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure10.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *
- */
-package darkknight.jewelrycraft.worldGen;
-
-import java.util.Random;
-import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntityMobSpawner;
-import net.minecraft.world.World;
-import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
-
-/**
- * @author Sorin
- */
-public class WorldGenStructure10 extends WorldGenerator
-{
- public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
- {
- return true;
- }
-
- @Override
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- return generate(world, BiomeGenBase.plains, rand, x, y, z);
- }
-}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure11.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure11.java
deleted file mode 100644
index cfe84fb..0000000
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure11.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *
- */
-package darkknight.jewelrycraft.worldGen;
-
-import java.util.Random;
-import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntityMobSpawner;
-import net.minecraft.world.World;
-import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
-
-/**
- * @author Sorin
- */
-public class WorldGenStructure11 extends WorldGenerator
-{
- public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
- {
- return true;
- }
-
- @Override
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- return generate(world, BiomeGenBase.plains, rand, x, y, z);
- }
-}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure2.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure2.java
index fbed30c..c58c0b8 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure2.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure2.java
@@ -1,26 +1,21 @@
package darkknight.jewelrycraft.worldGen;
-import java.io.IOException;
import java.util.Random;
+import darkknight.jewelrycraft.block.BlockList;
+import darkknight.jewelrycraft.block.BlockMoltenMetal;
+import darkknight.jewelrycraft.item.ItemList;
+import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.JewelrycraftUtil;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import darkknight.jewelrycraft.JewelrycraftMod;
-import darkknight.jewelrycraft.block.BlockList;
-import darkknight.jewelrycraft.item.ItemList;
-import darkknight.jewelrycraft.item.ItemMoltenMetalBucket;
-import darkknight.jewelrycraft.network.PacketSendLiquidData;
-import darkknight.jewelrycraft.util.JewelryNBT;
-import darkknight.jewelrycraft.util.JewelrycraftUtil;
/**
* @author Sorin
*/
-public class WorldGenStructure2 extends WorldGenerator {
+public class WorldGenStructure2 extends WorldGenStructure {
public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z) {
Block block = Blocks.stonebrick;
Block stair = Blocks.stone_brick_stairs;
@@ -47,9 +42,8 @@ public class WorldGenStructure2 extends WorldGenerator {
JewelryNBT.addMetal(stack, JewelrycraftUtil.metal.get(rand.nextInt(JewelrycraftUtil.metal.size())));
if (stack != null && JewelryNBT.ingot(stack) != null) {
if (!world.isRemote) world.func_147480_a(x, y, z, true);
- JewelrycraftMod.saveData.setString(x + " " + y + " " + z + " " + world.provider.dimensionId, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) + ":" + JewelryNBT.ingot(stack).getItemDamage());
- JewelrycraftMod.netWrapper.sendToAll(new PacketSendLiquidData(world.provider.dimensionId, x, y, z, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()), JewelryNBT.ingot(stack).getItemDamage()));
world.setBlock(x, y, z, BlockList.moltenMetal, 0, 3);
+ if(BlockMoltenMetal.getTileEntity(world, x, y, z) != null) BlockMoltenMetal.getTileEntity(world, x, y, z).setMetal(JewelryNBT.ingot(stack));
}
return true;
}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure3.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure3.java
index 7234aa9..1f6f15c 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure3.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure3.java
@@ -15,7 +15,7 @@ import net.minecraftforge.common.DungeonHooks;
/**
* @author Sorin
*/
-public class WorldGenStructure3 extends WorldGenerator
+public class WorldGenStructure3 extends WorldGenStructure
{
public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
{
@@ -49,7 +49,7 @@ public class WorldGenStructure3 extends WorldGenerator
if (biome == BiomeGenBase.desert || biome == BiomeGenBase.desertHills) slabMeta = 1;
for(int i = -1; i <= 1; i++)
for(int k = -1; k <= 1; k++)
- world.setBlock(x + i, y + 2, z + k, slab, slabMeta, 1);
+ world.setBlock(x + i, y + 2, z + k, slab, slabMeta, 2);
world.setBlock(x, y, z, Blocks.mob_spawner);
world.setBlock(x, y + 1, z, Blocks.mob_spawner);
for(int l = 0; l < 2; l++){
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure4.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure4.java
index 4171438..6af8dc2 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure4.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure4.java
@@ -14,7 +14,7 @@ import darkknight.jewelrycraft.block.BlockList;
/**
* @author Sorin
*/
-public class WorldGenStructure4 extends WorldGenerator
+public class WorldGenStructure4 extends WorldGenStructure
{
public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
{
@@ -34,7 +34,7 @@ public class WorldGenStructure4 extends WorldGenerator
world.setBlock(x + i, y + j, z + k, Blocks.air);
for(int i = -1; i <= 1; i++)
for(int k = -1; k <= 1; k++)
- world.setBlock(x + i, y, z + k, Blocks.stone_slab, slabMeta, 1);
+ world.setBlock(x + i, y, z + k, Blocks.stone_slab, slabMeta, 2);
world.setBlock(x, y, z, block, metadata, 2);
world.setBlock(x, y, z - 1, stair, 3, 1);
world.setBlock(x, y, z + 1, stair, 2, 1);
@@ -49,7 +49,7 @@ public class WorldGenStructure4 extends WorldGenerator
if (biome == BiomeGenBase.desert || biome == BiomeGenBase.desertHills) slabMeta = 1;
for(int i = -1; i <= 1; i++)
for(int k = -1; k <= 1; k++)
- if (i == 0 || k == 0) world.setBlock(x + i, y + 2, z + k, Blocks.stone_slab, slabMeta, 1);
+ if (i == 0 || k == 0) world.setBlock(x + i, y + 2, z + k, Blocks.stone_slab, slabMeta, 2);
world.setBlock(x, y + 2, z, block, metadata, 2);
world.setBlock(x, y + 3, z, BlockList.crystal);
return true;
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure5.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure5.java
index 77ce6c1..7ede3ef 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure5.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure5.java
@@ -3,34 +3,22 @@
*/
package darkknight.jewelrycraft.worldGen;
-import java.io.IOException;
import java.util.Random;
-
-import cpw.mods.fml.relauncher.Side;
-import darkknight.jewelrycraft.JewelrycraftMod;
import darkknight.jewelrycraft.block.BlockList;
+import darkknight.jewelrycraft.block.BlockMoltenMetal;
import darkknight.jewelrycraft.item.ItemList;
-import darkknight.jewelrycraft.item.ItemMoltenMetalBucket;
-import darkknight.jewelrycraft.network.PacketRequestLiquidData;
-import darkknight.jewelrycraft.network.PacketSendLiquidData;
import darkknight.jewelrycraft.util.JewelryNBT;
-import darkknight.jewelrycraft.util.JewelrycraftUtil;
import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntityMobSpawner;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
/**
* @author Sorin
*/
-public class WorldGenStructure5 extends WorldGenerator {
+public class WorldGenStructure5 extends WorldGenStructure {
public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z) {
Block slab = Blocks.stone_slab;
Block stair = Blocks.stone_brick_stairs;
@@ -51,13 +39,13 @@ public class WorldGenStructure5 extends WorldGenerator {
world.setBlock(x + i, y, z + k, Blocks.air);
for (int i = -2; i <= 2; i++)
for (int k = -3; k <= -1; k++)
- world.setBlock(x + i, y, z + k, block, metadata, 1);
+ world.setBlock(x + i, y, z + k, block, metadata, 2);
for (int i = 1; i <= 2; i++)
for (int k = -3; k <= -1; k++)
- world.setBlock(x + i, y + 1, z + k, block, metadata, 1);
+ world.setBlock(x + i, y + 1, z + k, block, metadata, 2);
for (int i = -5; i <= -3; i++)
for (int k = -3; k <= 2; k++)
- world.setBlock(x + i, y - 1, z + k, block, metadata, 1);
+ world.setBlock(x + i, y - 1, z + k, block, metadata, 2);
for (int i = -5; i <= -3; i++)
for (int k = -3; k <= 2; k++)
if ((i != -4 || k <= -3 || k >= 2) && !(i == -3 && k == -2)) world.setBlock(x + i, y, z + k, slab, slabMeta, 2);
@@ -72,17 +60,16 @@ public class WorldGenStructure5 extends WorldGenerator {
world.setBlock(x + 1, y + 2, z - 3, slab, slabMeta, 2);
world.setBlock(x + 1, y + 2, z - 1, slab, slabMeta, 2);
for (int k = -3; k <= -1; k++)
- world.setBlock(x + 2, y + 2, z + k, block, metadata, 1);
+ world.setBlock(x + 2, y + 2, z + k, block, metadata, 2);
if (rand.nextInt(5) == 0) {
ItemStack stack = new ItemStack(ItemList.bucket);
JewelryNBT.addMetal(stack, new ItemStack(Items.gold_ingot));
if (stack != null && JewelryNBT.ingot(stack) != null) {
if (!world.isRemote) world.func_147480_a(x, y, z, true);
- JewelrycraftMod.saveData.setString((x + 1) + " " + (y + 2) + " " + (z - 2) + " " + world.provider.dimensionId, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) + ":" + JewelryNBT.ingot(stack).getItemDamage());
- JewelrycraftMod.netWrapper.sendToAll(new PacketSendLiquidData(world.provider.dimensionId, x + 1, y + 2, z - 2, Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()), JewelryNBT.ingot(stack).getItemDamage()));
world.setBlock(x + 1, y + 2, z - 2, BlockList.moltenMetal, 0, 3);
+ if(BlockMoltenMetal.getTileEntity(world, x + 1, y + 2, z - 2) != null) BlockMoltenMetal.getTileEntity(world, x + 1, y + 2, z - 2).setMetal(JewelryNBT.ingot(stack));
}
- } else if (rand.nextBoolean()) world.setBlock(x + 1, y + 2, z - 2, Blocks.lava, 0, 3);
+ }
else world.setBlock(x + 1, y + 2, z - 2, Blocks.water, 0, 3);
return true;
}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure6.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure6.java
index 1755396..9df172d 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure6.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure6.java
@@ -4,26 +4,91 @@
package darkknight.jewelrycraft.worldGen;
import java.util.Random;
+import darkknight.jewelrycraft.block.BlockList;
+import darkknight.jewelrycraft.item.ItemList;
+import darkknight.jewelrycraft.random.WeightedRandomItem;
+import darkknight.jewelrycraft.tileentity.TileEntityHandPedestal;
+import darkknight.jewelrycraft.tileentity.TileEntityJewelrsCraftingTable;
+import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.JewelrycraftUtil;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockSkull;
import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntityMobSpawner;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.tileentity.TileEntitySkull;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.WeightedRandom;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
/**
* @author Sorin
*/
-public class WorldGenStructure6 extends WorldGenerator
-{
- public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
- {
- return true;
- }
+public class WorldGenStructure6 extends WorldGenStructure {
+ public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z) {
+ int randBlock, randBlockMeta;
+ Block block;
+ for (int i = -2; i <= 1; i++)
+ for (int j = -1; j <= 1; j++)
+ for (int k = -2; k <= 1; k++)
+ world.setBlock(x + i, y + j, z + k, Blocks.air);
+ for (int i = -2; i <= 1; i++)
+ for (int k = -2; k <= 1; k++) {
+ randBlock = rand.nextInt(4);
+ switch (randBlock) {
+ case 0:
+ block = Blocks.cobblestone;
+ randBlockMeta = 0;
+ break;
+ case 1:
+ block = Blocks.stonebrick;
+ randBlockMeta = 2;
+ break;
+ case 2:
+ block = Blocks.stonebrick;
+ randBlockMeta = 0;
+ break;
+ default:
+ block = Blocks.cobblestone;
+ randBlockMeta = 0;
+ break;
+ }
+ world.setBlock(x + i, y - 1, z + k, block, randBlockMeta, 2);
+ }
+ int crystalCol = rand.nextInt(15);
+ world.setBlock(x - 2, y, z - 2, BlockList.crystal, 0, 2);
+ world.setBlock(x - 2, y, z + 1, BlockList.crystal, 1 + crystalCol, 2);
+ world.setBlock(x + 1, y, z - 2, BlockList.crystal, 1 + crystalCol, 2);
+ world.setBlock(x + 1, y, z + 1, BlockList.crystal, 0, 2);
+ world.setBlock(x - 1, y, z - 1, Blocks.skull, 1, 2);
+ TileEntity tileentity = world.getTileEntity(x - 1, y, z - 1);
+ if (tileentity != null && tileentity instanceof TileEntitySkull) {
+ ((TileEntitySkull) tileentity).func_152107_a(rand.nextInt(50) == 0 ? 1 : 0);
+ ((TileEntitySkull) tileentity).func_145903_a(MathHelper.floor_double((double) (rand.nextInt(361) * 16.0F / 360.0F) + 0.5D) & 15);
+ ((BlockSkull) Blocks.skull).func_149965_a(world, x - 1, y, z - 1, (TileEntitySkull) tileentity);
+ }
+ world.setBlock(x + 1, y, z - 1, BlockList.jewelCraftingTable, 3, 2);
+ TileEntity jewelersTable = world.getTileEntity(x + 1, y, z - 1);
+ Item[] jewelry = new Item[] { ItemList.ring, ItemList.necklace, ItemList.bracelet, ItemList.earrings };
+ if (jewelersTable != null && jewelersTable instanceof TileEntityJewelrsCraftingTable) {
+ if (rand.nextBoolean()) ((TileEntityJewelrsCraftingTable) jewelersTable).setGemItemStack(JewelrycraftUtil.gem.get(rand.nextInt(JewelrycraftUtil.gem.size())));
+ else if (rand.nextBoolean()) {
+ ItemStack result = new ItemStack(jewelry[rand.nextInt(4)], 1, 0);
+ if (JewelrycraftUtil.metal.size() > 0) JewelryNBT.addMetal(result, JewelrycraftUtil.metal.get(rand.nextInt(JewelrycraftUtil.metal.size())));
+ ((TileEntityJewelrsCraftingTable) jewelersTable).setJewelryItemStack(result);
+ }
+ }
+ world.setBlock(x - 1, y, z + 1, BlockList.handPedestal, 0, 2);
+ TileEntity pedestal = world.getTileEntity(x - 1, y, z + 1);
+ if (pedestal != null && pedestal instanceof TileEntityHandPedestal) ((TileEntityHandPedestal) pedestal).setHeldItemStack(((WeightedRandomItem) WeightedRandom.getRandomItem(rand, WorldGenStructure1.items)).getItem(rand));
+ world.setBlock(x - 1, y + 1, z + 1, BlockList.shadowEye, 0, 2);
+ return true;
+ }
- @Override
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- return generate(world, BiomeGenBase.plains, rand, x, y, z);
- }
+ @Override
+ public boolean generate(World world, Random rand, int x, int y, int z) {
+ return generate(world, BiomeGenBase.plains, rand, x, y, z);
+ }
}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure7.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure7.java
deleted file mode 100644
index 964e8e6..0000000
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure7.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *
- */
-package darkknight.jewelrycraft.worldGen;
-
-import java.util.Random;
-import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntityMobSpawner;
-import net.minecraft.world.World;
-import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
-
-/**
- * @author Sorin
- */
-public class WorldGenStructure7 extends WorldGenerator
-{
- public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
- {
- return true;
- }
-
- @Override
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- return generate(world, BiomeGenBase.plains, rand, x, y, z);
- }
-}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure8.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure8.java
deleted file mode 100644
index 868b623..0000000
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure8.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *
- */
-package darkknight.jewelrycraft.worldGen;
-
-import java.util.Random;
-import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntityMobSpawner;
-import net.minecraft.world.World;
-import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
-
-/**
- * @author Sorin
- */
-public class WorldGenStructure8 extends WorldGenerator
-{
- public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
- {
- return true;
- }
-
- @Override
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- return generate(world, BiomeGenBase.plains, rand, x, y, z);
- }
-}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure9.java b/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure9.java
deleted file mode 100644
index e349ac6..0000000
--- a/src/main/java/darkknight/jewelrycraft/worldGen/WorldGenStructure9.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- *
- */
-package darkknight.jewelrycraft.worldGen;
-
-import java.util.Random;
-import net.minecraft.init.Blocks;
-import net.minecraft.tileentity.TileEntityMobSpawner;
-import net.minecraft.world.World;
-import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenerator;
-import net.minecraftforge.common.DungeonHooks;
-
-/**
- * @author Sorin
- */
-public class WorldGenStructure9 extends WorldGenerator
-{
- public boolean generate(World world, BiomeGenBase biome, Random rand, int x, int y, int z)
- {
- return true;
- }
-
- @Override
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- return generate(world, BiomeGenBase.plains, rand, x, y, z);
- }
-}
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java b/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java
index dfcdaba..bc676b7 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java
@@ -1,456 +1,446 @@
-package darkknight.jewelrycraft.worldGen.village;
-
-import java.util.List;
-import java.util.Random;
-import net.minecraft.block.Block;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntityChest;
-import net.minecraft.tileentity.TileEntityFurnace;
-import net.minecraft.util.StatCollector;
-import net.minecraft.world.World;
-import net.minecraft.world.gen.structure.StructureBoundingBox;
-import net.minecraft.world.gen.structure.StructureComponent;
-import net.minecraft.world.gen.structure.StructureVillagePieces;
-import net.minecraft.world.gen.structure.StructureVillagePieces.Start;
-import darkknight.jewelrycraft.block.BlockList;
-import darkknight.jewelrycraft.config.ConfigHandler;
-import darkknight.jewelrycraft.item.ItemList;
-import darkknight.jewelrycraft.item.ItemMolds;
-import darkknight.jewelrycraft.tileentity.TileEntityDisplayer;
-import darkknight.jewelrycraft.tileentity.TileEntityMolder;
-import darkknight.jewelrycraft.tileentity.TileEntitySmelter;
-import darkknight.jewelrycraft.util.JewelryNBT;
-import darkknight.jewelrycraft.util.JewelrycraftUtil;
-import darkknight.jewelrycraft.util.Variables;
-
-public class ComponentJewelry extends StructureVillagePieces.House1
-{
- private int averageGroundLevel = -1;
-
- /**
- *
- */
- public ComponentJewelry()
- {}
-
- /**
- * @param par1ComponentVillageStartPiece
- * @param par2
- * @param par3Random
- * @param par4StructureBoundingBox
- * @param par5
- */
- public ComponentJewelry(Start par1ComponentVillageStartPiece, int par2, Random par3Random, StructureBoundingBox par4StructureBoundingBox, int par5)
- {
- super();
- coordBaseMode = par5;
- boundingBox = par4StructureBoundingBox;
- }
-
- /**
- * @param villagePiece
- * @param pieces
- * @param random
- * @param p1
- * @param p2
- * @param p3
- * @param p4
- * @param p5
- * @return
- */
- @SuppressWarnings ("rawtypes")
- public static ComponentJewelry buildComponent(Start villagePiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5)
- {
- StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, 11, 5, 12, p4);
- return canVillageGoDeeper(structureboundingbox) && StructureComponent.findIntersecting(pieces, structureboundingbox) == null ? new ComponentJewelry(villagePiece, p5, random, structureboundingbox, p4) : null;
- }
-
- /**
- * second Part of Structure generating, this for example places Spiderwebs, Mob Spawners, it closes Mineshafts at the end, it adds Fences...
- *
- * @param world
- * @param random
- * @param sbb
- * @return
- */
- @Override
- public boolean addComponentParts(World world, Random random, StructureBoundingBox sbb)
- {
- if (averageGroundLevel < 0){
- averageGroundLevel = getAverageGroundLevel(world, sbb);
- if (averageGroundLevel < 0) return true;
- boundingBox.offset(0, averageGroundLevel - boundingBox.maxY + 3, 0);
- }
- /**
- * arguments: (World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, int placeBlockId, int replaceBlockId, boolean alwaysreplace)
- */
- fillWithBlocks(world, sbb, 0, 0, 6, 10, 5, 11, Block.getBlockById(0), Block.getBlockById(0), false);
- fillWithBlocks(world, sbb, 2, 0, 0, 8, 5, 5, Block.getBlockById(0), Block.getBlockById(0), false);
- // Pillars
- fillWithBlocks(world, sbb, 2, 0, 0, 2, 3, 0, Blocks.log, Blocks.log, false);
- fillWithBlocks(world, sbb, 2, 0, 3, 2, 3, 3, Blocks.log, Blocks.log, false);
- fillWithBlocks(world, sbb, 8, 0, 0, 8, 3, 0, Blocks.log, Blocks.log, false);
- fillWithBlocks(world, sbb, 8, 0, 3, 8, 3, 3, Blocks.log, Blocks.log, false);
- // Walls
- fillWithBlocks(world, sbb, 2, 0, 1, 2, 3, 2, Blocks.planks, Blocks.planks, false);
- fillWithBlocks(world, sbb, 2, 0, 4, 2, 3, 5, Blocks.planks, Blocks.planks, false);
- fillWithBlocks(world, sbb, 8, 0, 1, 8, 3, 2, Blocks.planks, Blocks.planks, false);
- fillWithBlocks(world, sbb, 8, 0, 4, 8, 3, 5, Blocks.planks, Blocks.planks, false);
- fillWithBlocks(world, sbb, 3, 0, 0, 7, 3, 0, Blocks.planks, Blocks.planks, false);
- fillWithBlocks(world, sbb, 0, 0, 6, 10, 3, 6, Blocks.cobblestone, Blocks.cobblestone, false);
- fillWithBlocks(world, sbb, 0, 0, 11, 10, 3, 11, Blocks.cobblestone, Blocks.cobblestone, false);
- fillWithBlocks(world, sbb, 0, 0, 6, 0, 3, 11, Blocks.cobblestone, Blocks.cobblestone, false);
- fillWithBlocks(world, sbb, 10, 0, 6, 10, 3, 11, Blocks.cobblestone, Blocks.cobblestone, false);
- // Roof
- for(int i = 3; i <= 7; i++)
- for(int j = 1; j <= 5; j++)
- placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 2, i, 4, j, sbb);
- for(int i = 3; i <= 7; i++)
- for(int j = 6; j <= 6; j++)
- placeBlockAtCurrentPosition(world, Blocks.stone_slab, 0, i, 4, j, sbb);
- for(int i = 1; i <= 9; i++)
- for(int j = 7; j <= 10; j++)
- placeBlockAtCurrentPosition(world, Blocks.stone_slab, 3, i, 4, j, sbb);
- for(int i = 2; i <= 8; i++)
- placeBlockAtCurrentPosition(world, Blocks.double_wooden_slab, 2, i, 4, 0, sbb);
- for(int i = 1; i <= 5; i++){
- placeBlockAtCurrentPosition(world, Blocks.double_wooden_slab, 2, 2, 4, i, sbb);
- placeBlockAtCurrentPosition(world, Blocks.double_wooden_slab, 2, 8, 4, i, sbb);
- }
- for(int i = 0; i <= 2; i++){
- placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, i, 4, 6, sbb);
- placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, i + 8, 4, 6, sbb);
- }
- for(int i = 7; i <= 11; i++){
- placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, 0, 4, i, sbb);
- placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, 10, 4, i, sbb);
- }
- for(int i = 0; i <= 10; i++)
- placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, i, 4, 11, sbb);
- // Base
- for(int i = 2; i <= 8; i++)
- for(int j = 0; j <= 5; j++)
- placeBlockAtCurrentPosition(world, Blocks.planks, 1, i, 0, j, sbb);
- fillWithBlocks(world, sbb, 0, 0, 6, 10, 0, 11, Blocks.stonebrick, Blocks.stonebrick, false);
- for(int i = 6; i <= 10; i++)
- placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, 5, 0, i, sbb);
- for(int i = 7; i <= 10; i++){
- placeBlockAtCurrentPosition(world, Blocks.stonebrick, 3, 1, 0, i, sbb);
- placeBlockAtCurrentPosition(world, Blocks.stonebrick, 3, 9, 0, i, sbb);
- }
- // Decorations
- placeDoorAtCurrentPosition(world, sbb, random, 6, 1, 0, getMetadataWithOffset(Blocks.wooden_door, 1));
- placeDoorAtCurrentPosition(world, sbb, random, 5, 1, 6, getMetadataWithOffset(Blocks.wooden_door, 1));
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 3, 2, 0, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 4, 2, 0, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 1, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 2, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 4, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 5, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 1, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 2, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 4, sbb);
- placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 5, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 6, 3, 1, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 3, 3, 3, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 7, 3, 3, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 5, 3, 5, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 5, 3, 7, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 5, 3, 10, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 1, 3, 8, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 1, 3, 9, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 9, 3, 8, sbb);
- placeBlockAtCurrentPosition(world, Blocks.torch, 0, 9, 3, 9, sbb);
- int bgCarpetColor = random.nextInt(16);
- for(int i = 4; i <= 7; i++)
- for(int j = 1; j <= 5; j++)
- placeBlockAtCurrentPosition(world, Blocks.carpet, bgCarpetColor, i, 1, j, sbb);
- generateChest(world, 3, 1, 1, 0, random, sbb, ConfigHandler.GEM_CHEST_MIN, ConfigHandler.GEM_CHEST_MAX);
- generateDisplayer(world, 3, 1, 2, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb);
- placeBlockAtCurrentPosition(world, BlockList.jewelCraftingTable, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, 3, 1, 3, sbb);
- generateDisplayer(world, 3, 1, 4, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb);
- generateChest(world, 3, 1, 5, 0, random, sbb, ConfigHandler.GEM_CHEST_MIN, ConfigHandler.GEM_CHEST_MAX);
- generateFurnace(world, 1, 1, 7, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
- generateFurnace(world, 1, 2, 7, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
- generateFurnace(world, 1, 3, 7, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
- generateFurnace(world, 1, 1, 10, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
- generateFurnace(world, 1, 2, 10, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
- generateFurnace(world, 1, 3, 10, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
- generateSmelter(world, 1, 1, 8, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean());
- generateSmelter(world, 1, 1, 9, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean());
- generateMolder(world, 2, 1, 8, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean(), random.nextBoolean());
- generateMolder(world, 2, 1, 9, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean(), random.nextBoolean());
- if (random.nextBoolean()) generateIngotChest(world, 9, 1, 7, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- else generateOresChest(world, 9, 1, 7, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- if (random.nextBoolean()) generateIngotChest(world, 9, 1, 8, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- else generateOresChest(world, 9, 1, 8, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- if (random.nextBoolean()) generateIngotChest(world, 9, 1, 9, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- else generateOresChest(world, 9, 1, 9, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- if (random.nextBoolean()) generateIngotChest(world, 9, 1, 10, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- else generateOresChest(world, 9, 1, 10, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
- for(int l = 0; l < 6; ++l)
- for(int i1 = 2; i1 < 9; ++i1){
- clearCurrentPositionBlocksUpwards(world, i1, 9, l, sbb);
- func_151554_b(world, Blocks.cobblestone, 0, i1, -1, l, sbb);
- }
- for(int l = 6; l < 12; ++l)
- for(int i1 = 0; i1 < 11; ++i1){
- clearCurrentPositionBlocksUpwards(world, i1, 9, l, sbb);
- func_151554_b(world, Blocks.cobblestone, 0, i1, -1, l, sbb);
- }
- spawnVillagers(world, sbb, 3, 1, 3, 1);
- return true;
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- * @param min
- * @param max
- */
- public void generateChest(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- int t = random.nextInt(max - min + 1) + min;
- placeBlockAtCurrentPosition(world, Blocks.chest, metadata, i, j, k, sbb);
- TileEntityChest chest = (TileEntityChest)world.getTileEntity(i1, j1, k1);
- while (chest != null && t > 0 && JewelrycraftUtil.gem.size() > 0){
- ItemStack jewels = JewelrycraftUtil.gem.get(random.nextInt(JewelrycraftUtil.gem.size()));
- chest.func_145976_a(StatCollector.translateToLocal("jeweler." + Variables.MODID + ".jewelerchest"));
- if (jewels.getItem() == Items.nether_star && ConfigHandler.GENERATE_VILLAGE_NETHERSTAR) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), jewels);
- else if (random.nextBoolean() && jewels.getItem() != Items.nether_star) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), jewels);
- t--;
- }
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- * @param min
- * @param max
- * @param chestB
- * @param randomAmount
- */
- public void generateIngotChest(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max, Block chestB, int randomAmount)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- int t = random.nextInt(max - min + 1) + min;
- placeBlockAtCurrentPosition(world, chestB, metadata, i, j, k, sbb);
- TileEntityChest chest = (TileEntityChest)world.getTileEntity(i1, j1, k1);
- while (chest != null && t > 0 && JewelrycraftUtil.metal.size() > 0){
- chest.func_145976_a(StatCollector.translateToLocal("jeweler." + Variables.MODID + ".ingotchest"));
- int metalID = random.nextInt(JewelrycraftUtil.metal.size());
- ItemStack metal = JewelrycraftUtil.metal.get(metalID).copy();
- metal.stackSize = 2 + random.nextInt(randomAmount);
- if (random.nextBoolean()) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), metal);
- t--;
- }
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- * @param min
- * @param max
- * @param chestB
- * @param randomAmount
- */
- public void generateOresChest(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max, Block chestB, int randomAmount)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- int t = random.nextInt(max - min + 1) + min;
- placeBlockAtCurrentPosition(world, chestB, metadata, i, j, k, sbb);
- TileEntityChest chest = (TileEntityChest)world.getTileEntity(i1, j1, k1);
- while (chest != null && t > 0 && JewelrycraftUtil.ores.size() > 0){
- chest.func_145976_a(StatCollector.translateToLocal("jeweler." + Variables.MODID + ".orechest"));
- int oreID = random.nextInt(JewelrycraftUtil.ores.size());
- ItemStack ores = JewelrycraftUtil.ores.get(oreID).copy();
- ores.stackSize = 2 + random.nextInt(randomAmount);
- if (random.nextBoolean()) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), ores);
- t--;
- }
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- */
- public void generateDisplayer(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- placeBlockAtCurrentPosition(world, BlockList.displayer, metadata, i, j, k, sbb);
- TileEntityDisplayer displayer = (TileEntityDisplayer)world.getTileEntity(i1, j1, k1);
- if (displayer != null){
- Item[] jewels = {ItemList.ring, ItemList.necklace};
- ItemStack jewel = new ItemStack(jewels[random.nextInt(jewels.length)]);
- if (JewelrycraftUtil.metal.size() > 0) JewelryNBT.addMetal(jewel, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())));
- if (JewelrycraftUtil.objects.size() > 0) JewelryNBT.addModifiers(jewel, JewelrycraftUtil.addRandomModifiers(random.nextInt(4)));
- if (JewelrycraftUtil.gem.size() > 0) JewelryNBT.addGem(jewel, JewelrycraftUtil.gem.get(random.nextInt(JewelrycraftUtil.gem.size())));
- displayer.object = jewel;
- displayer.quantity = 1;
- displayer.hasObject = true;
- }
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- * @param isEmpty
- */
- public void generateSmelter(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, boolean isEmpty)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- placeBlockAtCurrentPosition(world, BlockList.smelter, metadata, i, j, k, sbb);
- TileEntitySmelter smelter = (TileEntitySmelter)world.getTileEntity(i1, j1, k1);
- if (smelter != null && !isEmpty && JewelrycraftUtil.metal.size() > 0){
- int metal = random.nextInt(JewelrycraftUtil.metal.size());
- smelter.moltenMetal = JewelrycraftUtil.metal.get(metal).copy();
- smelter.hasMoltenMetal = true;
- int quantity = random.nextInt(9);
- switch(quantity)
- {
- case 0:
- smelter.quantity = 0.1f;
- case 1:
- smelter.quantity = 0.2f;
- case 2:
- smelter.quantity = 0.3f;
- case 3:
- smelter.quantity = 0.4f;
- case 4:
- smelter.quantity = 0.5f;
- case 5:
- smelter.quantity = 0.6f;
- case 6:
- smelter.quantity = 0.7f;
- case 7:
- smelter.quantity = 0.8f;
- case 8:
- smelter.quantity = 0.9f;
- default:
- smelter.quantity = 0.1f;
- }
- }
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- * @param hasMold
- * @param hasStuff
- */
- public void generateMolder(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, boolean hasMold, boolean hasStuff)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- placeBlockAtCurrentPosition(world, BlockList.molder, metadata, i, j, k, sbb);
- TileEntityMolder molder = (TileEntityMolder)world.getTileEntity(i1, j1, k1);
- if (molder != null && !molder.hasMold) if (hasMold){
- int meta = random.nextInt(ItemMolds.moldsItemNames.length);
- molder.mold = new ItemStack(ItemList.molds, 1, meta);
- molder.hasMold = true;
- if (hasStuff && JewelrycraftUtil.metal.size() > 0){
- ItemStack ring = new ItemStack(ItemList.ring);
- JewelryNBT.addMetal(ring, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
- ItemStack necklace = new ItemStack(ItemList.necklace);
- JewelryNBT.addMetal(necklace, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
- ItemStack bracelet = new ItemStack(ItemList.bracelet);
- JewelryNBT.addMetal(bracelet, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
- ItemStack earrings = new ItemStack(ItemList.earrings);
- JewelryNBT.addMetal(earrings, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
- if (meta == 0) molder.jewelBase = JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size()));
- else if (meta == 1) molder.jewelBase = ring;
- else if (meta == 2) molder.jewelBase = necklace;
- else if (meta == 3) molder.jewelBase = bracelet;
- else if (meta == 4) molder.jewelBase = earrings;
- molder.hasJewelBase = true;
- }
- }
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param metadata
- * @param random
- * @param sbb
- * @param min
- * @param max
- * @param hasMetal
- */
- public void generateFurnace(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max, boolean hasMetal)
- {
- int i1 = getXWithOffset(i, k);
- int j1 = getYWithOffset(j);
- int k1 = getZWithOffset(i, k);
- placeBlockAtCurrentPosition(world, Blocks.furnace, metadata, i, j, k, sbb);
- TileEntityFurnace furnace = (TileEntityFurnace)world.getTileEntity(i1, j1, k1);
- if (furnace != null){
- if (random.nextBoolean()) furnace.setInventorySlotContents(1, new ItemStack(Items.coal, 1 + random.nextInt(16)));
- if (hasMetal && JewelrycraftUtil.metal.size() > 0){
- int metalID = random.nextInt(JewelrycraftUtil.metal.size());
- ItemStack metal = JewelrycraftUtil.metal.get(metalID).copy();
- metal.stackSize = random.nextInt(max - min + 1) + min;
- furnace.setInventorySlotContents(2, metal);
- }
- }
- }
-
- /**
- * Returns the villager type to spawn in this component, based on the number of villagers already spawned.
- *
- * @param par1
- * @return
- */
- @Override
- protected int getVillagerType(int par1)
- {
- return 3000;
- }
+package darkknight.jewelrycraft.worldGen.village;
+
+import java.util.List;
+import java.util.Random;
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntityChest;
+import net.minecraft.tileentity.TileEntityFurnace;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraft.world.gen.structure.StructureBoundingBox;
+import net.minecraft.world.gen.structure.StructureComponent;
+import net.minecraft.world.gen.structure.StructureVillagePieces;
+import net.minecraft.world.gen.structure.StructureVillagePieces.Start;
+import darkknight.jewelrycraft.block.BlockList;
+import darkknight.jewelrycraft.config.ConfigHandler;
+import darkknight.jewelrycraft.item.ItemList;
+import darkknight.jewelrycraft.item.ItemMolds;
+import darkknight.jewelrycraft.tileentity.TileEntityDisplayer;
+import darkknight.jewelrycraft.tileentity.TileEntityMolder;
+import darkknight.jewelrycraft.tileentity.TileEntitySmelter;
+import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.JewelrycraftUtil;
+import darkknight.jewelrycraft.util.Variables;
+
+public class ComponentJewelry extends StructureVillagePieces.House1 {
+ private int averageGroundLevel = -1;
+
+ /**
+ *
+ */
+ public ComponentJewelry() {
+ }
+
+ /**
+ * @param par1ComponentVillageStartPiece
+ * @param par2
+ * @param par3Random
+ * @param par4StructureBoundingBox
+ * @param par5
+ */
+ public ComponentJewelry(Start par1ComponentVillageStartPiece, int par2, Random par3Random, StructureBoundingBox par4StructureBoundingBox, int par5) {
+ super();
+ coordBaseMode = par5;
+ boundingBox = par4StructureBoundingBox;
+ }
+
+ /**
+ * @param villagePiece
+ * @param pieces
+ * @param random
+ * @param p1
+ * @param p2
+ * @param p3
+ * @param p4
+ * @param p5
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static ComponentJewelry buildComponent(Start villagePiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5) {
+ StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, 11, 5, 12, p4);
+ return canVillageGoDeeper(structureboundingbox) && StructureComponent.findIntersecting(pieces, structureboundingbox) == null ? new ComponentJewelry(villagePiece, p5, random, structureboundingbox, p4) : null;
+ }
+
+ /**
+ * second Part of Structure generating, this for example places Spiderwebs,
+ * Mob Spawners, it closes Mineshafts at the end, it adds Fences...
+ *
+ * @param world
+ * @param random
+ * @param sbb
+ * @return
+ */
+ @Override
+ public boolean addComponentParts(World world, Random random, StructureBoundingBox sbb) {
+ if (averageGroundLevel < 0) {
+ averageGroundLevel = getAverageGroundLevel(world, sbb);
+ if (averageGroundLevel < 0) return true;
+ boundingBox.offset(0, averageGroundLevel - boundingBox.maxY + 3, 0);
+ }
+ /**
+ * arguments: (World worldObj, StructureBoundingBox structBB, int minX,
+ * int minY, int minZ, int maxX, int maxY, int maxZ, int placeBlockId,
+ * int replaceBlockId, boolean alwaysreplace)
+ */
+ fillWithBlocks(world, sbb, 0, 0, 6, 10, 5, 11, Block.getBlockById(0), Block.getBlockById(0), false);
+ fillWithBlocks(world, sbb, 2, 0, 0, 8, 5, 5, Block.getBlockById(0), Block.getBlockById(0), false);
+ // Pillars
+ fillWithBlocks(world, sbb, 2, 0, 0, 2, 3, 0, Blocks.log, Blocks.log, false);
+ fillWithBlocks(world, sbb, 2, 0, 3, 2, 3, 3, Blocks.log, Blocks.log, false);
+ fillWithBlocks(world, sbb, 8, 0, 0, 8, 3, 0, Blocks.log, Blocks.log, false);
+ fillWithBlocks(world, sbb, 8, 0, 3, 8, 3, 3, Blocks.log, Blocks.log, false);
+ // Walls
+ fillWithBlocks(world, sbb, 2, 0, 1, 2, 3, 2, Blocks.planks, Blocks.planks, false);
+ fillWithBlocks(world, sbb, 2, 0, 4, 2, 3, 5, Blocks.planks, Blocks.planks, false);
+ fillWithBlocks(world, sbb, 8, 0, 1, 8, 3, 2, Blocks.planks, Blocks.planks, false);
+ fillWithBlocks(world, sbb, 8, 0, 4, 8, 3, 5, Blocks.planks, Blocks.planks, false);
+ fillWithBlocks(world, sbb, 3, 0, 0, 7, 3, 0, Blocks.planks, Blocks.planks, false);
+ fillWithBlocks(world, sbb, 0, 0, 6, 10, 3, 6, Blocks.cobblestone, Blocks.cobblestone, false);
+ fillWithBlocks(world, sbb, 0, 0, 11, 10, 3, 11, Blocks.cobblestone, Blocks.cobblestone, false);
+ fillWithBlocks(world, sbb, 0, 0, 6, 0, 3, 11, Blocks.cobblestone, Blocks.cobblestone, false);
+ fillWithBlocks(world, sbb, 10, 0, 6, 10, 3, 11, Blocks.cobblestone, Blocks.cobblestone, false);
+ // Roof
+ for (int i = 3; i <= 7; i++)
+ for (int j = 1; j <= 5; j++)
+ placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 2, i, 4, j, sbb);
+ for (int i = 3; i <= 7; i++)
+ for (int j = 6; j <= 6; j++)
+ placeBlockAtCurrentPosition(world, Blocks.stone_slab, 0, i, 4, j, sbb);
+ for (int i = 1; i <= 9; i++)
+ for (int j = 7; j <= 10; j++)
+ placeBlockAtCurrentPosition(world, Blocks.stone_slab, 3, i, 4, j, sbb);
+ for (int i = 2; i <= 8; i++)
+ placeBlockAtCurrentPosition(world, Blocks.double_wooden_slab, 2, i, 4, 0, sbb);
+ for (int i = 1; i <= 5; i++) {
+ placeBlockAtCurrentPosition(world, Blocks.double_wooden_slab, 2, 2, 4, i, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.double_wooden_slab, 2, 8, 4, i, sbb);
+ }
+ for (int i = 0; i <= 2; i++) {
+ placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, i, 4, 6, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, i + 8, 4, 6, sbb);
+ }
+ for (int i = 7; i <= 11; i++) {
+ placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, 0, 4, i, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, 10, 4, i, sbb);
+ }
+ for (int i = 0; i <= 10; i++)
+ placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, i, 4, 11, sbb);
+ // Base
+ for (int i = 2; i <= 8; i++)
+ for (int j = 0; j <= 5; j++)
+ placeBlockAtCurrentPosition(world, Blocks.planks, 1, i, 0, j, sbb);
+ fillWithBlocks(world, sbb, 0, 0, 6, 10, 0, 11, Blocks.stonebrick, Blocks.stonebrick, false);
+ for (int i = 6; i <= 10; i++)
+ placeBlockAtCurrentPosition(world, Blocks.double_stone_slab, 0, 5, 0, i, sbb);
+ for (int i = 7; i <= 10; i++) {
+ placeBlockAtCurrentPosition(world, Blocks.stonebrick, 3, 1, 0, i, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.stonebrick, 3, 9, 0, i, sbb);
+ }
+ // Decorations
+ placeDoorAtCurrentPosition(world, sbb, random, 6, 1, 0, getMetadataWithOffset(Blocks.wooden_door, 1));
+ placeDoorAtCurrentPosition(world, sbb, random, 5, 1, 6, getMetadataWithOffset(Blocks.wooden_door, 1));
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 3, 2, 0, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 4, 2, 0, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 1, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 2, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 4, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 2, 2, 5, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 1, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 2, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 4, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.glass_pane, 0, 8, 2, 5, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 6, 3, 1, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 3, 3, 3, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 7, 3, 3, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 5, 3, 5, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 5, 3, 7, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 5, 3, 10, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 1, 3, 8, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 1, 3, 9, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 9, 3, 8, sbb);
+ placeBlockAtCurrentPosition(world, Blocks.torch, 0, 9, 3, 9, sbb);
+ int bgCarpetColor = random.nextInt(16);
+ for (int i = 4; i <= 7; i++)
+ for (int j = 1; j <= 5; j++)
+ placeBlockAtCurrentPosition(world, Blocks.carpet, bgCarpetColor, i, 1, j, sbb);
+ generateChest(world, 3, 1, 1, 0, random, sbb, ConfigHandler.GEM_CHEST_MIN, ConfigHandler.GEM_CHEST_MAX);
+ generateDisplayer(world, 3, 1, 2, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb);
+ placeBlockAtCurrentPosition(world, BlockList.jewelCraftingTable, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, 3, 1, 3, sbb);
+ generateDisplayer(world, 3, 1, 4, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb);
+ generateChest(world, 3, 1, 5, 0, random, sbb, ConfigHandler.GEM_CHEST_MIN, ConfigHandler.GEM_CHEST_MAX);
+ generateFurnace(world, 1, 1, 7, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
+ generateFurnace(world, 1, 2, 7, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
+ generateFurnace(world, 1, 3, 7, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
+ generateFurnace(world, 1, 1, 10, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
+ generateFurnace(world, 1, 2, 10, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
+ generateFurnace(world, 1, 3, 10, 0, random, sbb, ConfigHandler.FURNACE_MIN_INGOT_STACK, ConfigHandler.FURNACE_MAX_INGOT_STACK, ConfigHandler.CAN_FURNACE_GENERATE_INGOTS);
+ generateSmelter(world, 1, 1, 8, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean());
+ generateSmelter(world, 1, 1, 9, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean());
+ generateMolder(world, 2, 1, 8, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean(), random.nextBoolean());
+ generateMolder(world, 2, 1, 9, coordBaseMode == 0 || coordBaseMode == 2 ? 1 : 2, random, sbb, random.nextBoolean(), random.nextBoolean());
+ if (random.nextBoolean()) generateIngotChest(world, 9, 1, 7, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ else generateOresChest(world, 9, 1, 7, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ if (random.nextBoolean()) generateIngotChest(world, 9, 1, 8, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ else generateOresChest(world, 9, 1, 8, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ if (random.nextBoolean()) generateIngotChest(world, 9, 1, 9, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ else generateOresChest(world, 9, 1, 9, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ if (random.nextBoolean()) generateIngotChest(world, 9, 1, 10, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ else generateOresChest(world, 9, 1, 10, 0, random, sbb, ConfigHandler.INGOT_CHEST_MIN, ConfigHandler.INGOT_CHEST_MAX, Blocks.trapped_chest, ConfigHandler.INGOT_CHEST_MAX_STACK);
+ for (int l = 0; l < 6; ++l)
+ for (int i1 = 2; i1 < 9; ++i1) {
+ clearCurrentPositionBlocksUpwards(world, i1, 9, l, sbb);
+ func_151554_b(world, Blocks.cobblestone, 0, i1, -1, l, sbb);
+ }
+ for (int l = 6; l < 12; ++l)
+ for (int i1 = 0; i1 < 11; ++i1) {
+ clearCurrentPositionBlocksUpwards(world, i1, 9, l, sbb);
+ func_151554_b(world, Blocks.cobblestone, 0, i1, -1, l, sbb);
+ }
+ spawnVillagers(world, sbb, 3, 1, 3, 1);
+ return true;
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ * @param min
+ * @param max
+ */
+ public void generateChest(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ if (max >= min) {
+ int t = random.nextInt(max - min + 1) + min;
+ placeBlockAtCurrentPosition(world, Blocks.chest, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntityChest chest = (TileEntityChest) world.getTileEntity(i1, j1, k1);
+ while (chest != null && t > 0 && JewelrycraftUtil.gem.size() > 0) {
+ ItemStack jewels = JewelrycraftUtil.gem.get(random.nextInt(JewelrycraftUtil.gem.size()));
+ chest.func_145976_a(StatCollector.translateToLocal("jeweler." + Variables.MODID + ".jewelerchest"));
+ if (jewels.getItem() == Items.nether_star && ConfigHandler.GENERATE_VILLAGE_NETHERSTAR) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), jewels);
+ else if (random.nextBoolean() && jewels.getItem() != Items.nether_star) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), jewels);
+ t--;
+ }
+ }
+ }
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ * @param min
+ * @param max
+ * @param chestB
+ * @param randomAmount
+ */
+ public void generateIngotChest(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max, Block chestB, int randomAmount) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ if (max >= min) {
+ int t = random.nextInt(max - min + 1) + min;
+ placeBlockAtCurrentPosition(world, chestB, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntityChest chest = (TileEntityChest) world.getTileEntity(i1, j1, k1);
+ while (chest != null && t > 0 && JewelrycraftUtil.metal.size() > 0) {
+ chest.func_145976_a(StatCollector.translateToLocal("jeweler." + Variables.MODID + ".ingotchest"));
+ int metalID = random.nextInt(JewelrycraftUtil.metal.size());
+ ItemStack metal = JewelrycraftUtil.metal.get(metalID).copy();
+ metal.stackSize = 2 + random.nextInt(randomAmount);
+ if (random.nextBoolean()) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), metal);
+ t--;
+ }
+ }
+ }
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ * @param min
+ * @param max
+ * @param chestB
+ * @param randomAmount
+ */
+ public void generateOresChest(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max, Block chestB, int randomAmount) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ if (max >= min) {
+ int t = random.nextInt(max - min + 1) + min;
+ placeBlockAtCurrentPosition(world, chestB, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntityChest chest = (TileEntityChest) world.getTileEntity(i1, j1, k1);
+ while (chest != null && t > 0 && JewelrycraftUtil.ores.size() > 0) {
+ chest.func_145976_a(StatCollector.translateToLocal("jeweler." + Variables.MODID + ".orechest"));
+ int oreID = random.nextInt(JewelrycraftUtil.ores.size());
+ ItemStack ores = JewelrycraftUtil.ores.get(oreID).copy();
+ ores.stackSize = 2 + random.nextInt(randomAmount);
+ if (random.nextBoolean()) chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), ores);
+ t--;
+ }
+ }
+ }
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ */
+ public void generateDisplayer(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ placeBlockAtCurrentPosition(world, BlockList.displayer, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntityDisplayer displayer = (TileEntityDisplayer) world.getTileEntity(i1, j1, k1);
+ if (displayer != null) {
+ Item[] jewels = { ItemList.ring, ItemList.necklace };
+ ItemStack jewel = new ItemStack(jewels[random.nextInt(jewels.length)]);
+ if (JewelrycraftUtil.metal.size() > 0) JewelryNBT.addMetal(jewel, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())));
+ if (JewelrycraftUtil.objects.size() > 0) JewelryNBT.addModifiers(jewel, JewelrycraftUtil.addRandomModifiers(random.nextInt(4)));
+ if (JewelrycraftUtil.gem.size() > 0) JewelryNBT.addGem(jewel, JewelrycraftUtil.gem.get(random.nextInt(JewelrycraftUtil.gem.size())));
+ displayer.object = jewel;
+ displayer.quantity = 1;
+ displayer.hasObject = true;
+ }
+ }
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ * @param isEmpty
+ */
+ public void generateSmelter(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, boolean isEmpty) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ placeBlockAtCurrentPosition(world, BlockList.smelter, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntitySmelter smelter = (TileEntitySmelter) world.getTileEntity(i1, j1, k1);
+ if (smelter != null && !isEmpty && JewelrycraftUtil.metal.size() > 0) {
+ int metal = random.nextInt(JewelrycraftUtil.metal.size());
+ smelter.moltenMetal = JewelrycraftUtil.metal.get(metal).copy();
+ smelter.hasMoltenMetal = random.nextBoolean();
+ float quantity = random.nextFloat();
+ if (smelter.hasMoltenMetal) smelter.quantity = quantity < 0.9F ? 0.1F + Math.round(quantity * 10) / 10 : Math.round(quantity * 10) / 10;
+ }
+ }
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ * @param hasMold
+ * @param hasStuff
+ */
+ public void generateMolder(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, boolean hasMold, boolean hasStuff) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ placeBlockAtCurrentPosition(world, BlockList.molder, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntityMolder molder = (TileEntityMolder) world.getTileEntity(i1, j1, k1);
+ if (molder != null && !molder.hasMold) if (hasMold) {
+ int meta = random.nextInt(ItemMolds.moldsItemNames.length);
+ molder.mold = new ItemStack(ItemList.molds, 1, meta);
+ molder.hasMold = true;
+ if (hasStuff && JewelrycraftUtil.metal.size() > 0) {
+ ItemStack ring = new ItemStack(ItemList.ring);
+ JewelryNBT.addMetal(ring, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
+ ItemStack necklace = new ItemStack(ItemList.necklace);
+ JewelryNBT.addMetal(necklace, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
+ ItemStack bracelet = new ItemStack(ItemList.bracelet);
+ JewelryNBT.addMetal(bracelet, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
+ ItemStack earrings = new ItemStack(ItemList.earrings);
+ JewelryNBT.addMetal(earrings, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())).copy());
+ if (meta == 0) molder.jewelBase = JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size()));
+ else if (meta == 1) molder.jewelBase = ring;
+ else if (meta == 2) molder.jewelBase = necklace;
+ else if (meta == 3) molder.jewelBase = bracelet;
+ else if (meta == 4) molder.jewelBase = earrings;
+ molder.hasJewelBase = true;
+ }
+ }
+ }
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param metadata
+ * @param random
+ * @param sbb
+ * @param min
+ * @param max
+ * @param hasMetal
+ */
+ public void generateFurnace(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, int min, int max, boolean hasMetal) {
+ int i1 = getXWithOffset(i, k);
+ int j1 = getYWithOffset(j);
+ int k1 = getZWithOffset(i, k);
+ placeBlockAtCurrentPosition(world, Blocks.furnace, metadata, i, j, k, sbb);
+ if (world.getTileEntity(i1, j1, k1) != null) {
+ TileEntityFurnace furnace = (TileEntityFurnace) world.getTileEntity(i1, j1, k1);
+ if (furnace != null) {
+ if (random.nextBoolean()) furnace.setInventorySlotContents(1, new ItemStack(Items.coal, 1 + random.nextInt(16)));
+ if (hasMetal && JewelrycraftUtil.metal.size() > 0) {
+ int metalID = random.nextInt(JewelrycraftUtil.metal.size());
+ ItemStack metal = JewelrycraftUtil.metal.get(metalID).copy();
+ metal.stackSize = random.nextInt(max - min + 1) + min;
+ furnace.setInventorySlotContents(2, metal);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the villager type to spawn in this component, based on the number
+ * of villagers already spawned.
+ *
+ * @param par1
+ * @return
+ */
+ @Override
+ protected int getVillagerType(int par1) {
+ return 3000;
+ }
} \ No newline at end of file
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/village/JCTrades.java b/src/main/java/darkknight/jewelrycraft/worldGen/village/JCTrades.java
index a1b508b..3a31a8f 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/village/JCTrades.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/village/JCTrades.java
@@ -87,7 +87,7 @@ public class JCTrades implements IVillageTradeHandler
result = JewelrycraftUtil.gem.get(end);
result.stackSize = 1 + random.nextInt(JewelrycraftUtil.gem.size() - end);
if (JewelrycraftUtil.gem.size() - 1 - end >= 1){
- int value = end;
+ int value = 1 + end;
if (value > 64) value = 64;
ingredient = new ItemStack(Items.emerald, 2 + random.nextInt(value));
if (random.nextBoolean()) ingredient2 = new ItemStack(Items.emerald, 2 + random.nextInt(value));
diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/village/VillageHandler.java b/src/main/java/darkknight/jewelrycraft/worldGen/village/VillageHandler.java
index 95d20ee..5ef855e 100644
--- a/src/main/java/darkknight/jewelrycraft/worldGen/village/VillageHandler.java
+++ b/src/main/java/darkknight/jewelrycraft/worldGen/village/VillageHandler.java
@@ -1,27 +1,27 @@
-/**
- *
- */
-package darkknight.jewelrycraft.worldGen.village;
-
-import java.io.IOException;
-import net.minecraft.world.gen.structure.MapGenStructureIO;
-import cpw.mods.fml.common.event.FMLPreInitializationEvent;
-import cpw.mods.fml.common.registry.VillagerRegistry;
-import darkknight.jewelrycraft.JewelrycraftMod;
-import darkknight.jewelrycraft.util.Variables;
-
-public class VillageHandler
-{
- public static void preInit(FMLPreInitializationEvent e) throws IOException
- {
- VillagerRegistry.instance().registerVillagerId(3000);
- VillagerRegistry.instance().registerVillageTradeHandler(3000, new JCTrades());
- VillagerRegistry.instance().registerVillageCreationHandler(new VillageJewelryHandler());
- try{
- MapGenStructureIO.func_143031_a(ComponentJewelry.class, Variables.MODID + ":Jewelry");
- }
- catch(Throwable e2){
- JewelrycraftMod.logger.severe("Error registering Jewelrycraft Structures with Vanilla Minecraft: this is expected in versions earlier than 1.7.10");
- }
- }
-}
+/**
+ *
+ */
+package darkknight.jewelrycraft.worldGen.village;
+
+import java.io.IOException;
+import net.minecraft.world.gen.structure.MapGenStructureIO;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.registry.VillagerRegistry;
+import darkknight.jewelrycraft.JewelrycraftMod;
+import darkknight.jewelrycraft.util.Variables;
+
+public class VillageHandler
+{
+ public static void preInit(FMLPreInitializationEvent e) throws IOException
+ {
+ VillagerRegistry.instance().registerVillagerId(3000);
+ VillagerRegistry.instance().registerVillageTradeHandler(3000, new JCTrades());
+ VillagerRegistry.instance().registerVillageCreationHandler(new VillageJewelryHandler());
+ try{
+ MapGenStructureIO.func_143031_a(ComponentJewelry.class, Variables.MODID + ":Jewelry");
+ }
+ catch(Throwable e2){
+ JewelrycraftMod.logger.error("Error registering Jewelrycraft Structures with Vanilla Minecraft: this is expected in versions earlier than 1.7.10");
+ }
+ }
+}