From cdbbd891c43e082a36a32e49420bf87b6edd28e0 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Wed, 4 Sep 2019 22:24:39 -0400 Subject: More affix work --- .../jewelrycraft/worldGen/ChestGeneration.java | 71 ++++-- .../worldGen/village/ComponentJewelry.java | 257 +++++++++++++++------ 2 files changed, 235 insertions(+), 93 deletions(-) (limited to 'src/main/java/darkknight/jewelrycraft/worldGen') diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/ChestGeneration.java b/src/main/java/darkknight/jewelrycraft/worldGen/ChestGeneration.java index fca251c..59a850a 100755 --- a/src/main/java/darkknight/jewelrycraft/worldGen/ChestGeneration.java +++ b/src/main/java/darkknight/jewelrycraft/worldGen/ChestGeneration.java @@ -1,5 +1,6 @@ package darkknight.jewelrycraft.worldGen; +import java.util.ArrayList; import java.util.Random; import cpw.mods.fml.common.event.FMLPreInitializationEvent; @@ -22,35 +23,69 @@ public class ChestGeneration { static Random random = new Random(); public static void preInit(FMLPreInitializationEvent e) { - addItemToDifferentPlaces(new WeightedRandomChestContent(new ItemStack(ItemList.thiefGloves), 1, 1, 2), true, - true, false, false, true); + { + ItemStack gloves = new ItemStack(ItemList.thiefGloves); - addItemToDifferentPlaces(new WeightedRandomChestContent(new ItemStack(ItemList.guide), 1, 1, 7), true, true, - true, true, true, false, true, true); + WeightedRandomChestContent wrcc = new WeightedRandomChestContent(gloves, 1, 1, 2); - addVillageBlacksmithLoot(new WeightedRandomChestContent(new ItemStack(ItemList.shadowIngot), 1, 4, 5)); - - for (int i = 0; i < 16 && i % 3 == 0; i++) - addItemToDifferentPlaces(new WeightedRandomChestContent(new ItemStack(BlockList.crystal, 1, i), 1, 3, 3), - true, true, true, true); + addItemToDifferentPlaces(wrcc, true, true, false, false, true); + } - ItemStack special = new ItemStack(jewelry[random.nextInt(4)]); + { + ItemStack guide = new ItemStack(ItemList.guide); - int randValue = random.nextInt(4); + WeightedRandomChestContent wrcc = new WeightedRandomChestContent(guide, 1, 1, 7); - if (JewelrycraftUtil.metal.size() > 0) { - JewelryNBT.addMetal(special, JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size()))); + addItemToDifferentPlaces(wrcc, true, true, true, true, true, false, true, true); } - if (JewelrycraftUtil.objects.size() > 0) { - JewelryNBT.addModifiers(special, JewelrycraftUtil.addRandomModifiers(randValue)); + { + ItemStack shadowIngot = new ItemStack(ItemList.shadowIngot); + + addVillageBlacksmithLoot(new WeightedRandomChestContent(shadowIngot, 1, 4, 5)); } - if (JewelrycraftUtil.gem.size() > 0) { - JewelryNBT.addGem(special, JewelrycraftUtil.gem.get(random.nextInt(JewelrycraftUtil.gem.size()))); + for (int i = 0; i < 16 && i % 3 == 0; i++) { + { + ItemStack crystal = new ItemStack(BlockList.crystal, 1, i); + + WeightedRandomChestContent wrcc = new WeightedRandomChestContent(crystal, 1, 3, 3); + + addItemToDifferentPlaces(wrcc, true, true, true, true); + } } - addItemToDifferentPlaces(new WeightedRandomChestContent(special, 1, 1, 1), true, true, true, true); + for (int i = 0; i < 4; i++) { + ItemStack special = new ItemStack(jewelry[i]); + + int randValue = random.nextInt(4); + + if (JewelrycraftUtil.metal.size() > 0) { + int rint = random.nextInt(JewelrycraftUtil.metal.size()); + + ItemStack metal = JewelrycraftUtil.metal.get(rint); + + JewelryNBT.addMetal(special, metal); + } + + if (JewelrycraftUtil.objects.size() > 0) { + ArrayList modifiers = JewelrycraftUtil.addRandomModifiers(randValue); + + JewelryNBT.addModifiers(special, modifiers); + } + + if (JewelrycraftUtil.gem.size() > 0) { + int rint = random.nextInt(JewelrycraftUtil.gem.size()); + + ItemStack gem = JewelrycraftUtil.gem.get(rint); + + JewelryNBT.addGem(special, gem); + } + + WeightedRandomChestContent wrcc = new WeightedRandomChestContent(special, 1, 1, 1); + + addItemToDifferentPlaces(wrcc, true, true, true, true); + } } /** diff --git a/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java b/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java index 0580f57..c9fb4be 100755 --- a/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java +++ b/src/main/java/darkknight/jewelrycraft/worldGen/village/ComponentJewelry.java @@ -45,77 +45,109 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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; + + boolean canProceed = canVillageGoDeeper(structureboundingbox) + && StructureComponent.findIntersecting(pieces, structureboundingbox) == null; + + return canProceed ? new ComponentJewelry(villagePiece, p5, random, structureboundingbox, p4) : null; } @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); } + 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++) + 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++) + } + } + + 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++) + } + } + + 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++) + } + } + + 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++) + + 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++) + 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++) + + 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); @@ -126,6 +158,7 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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); @@ -136,16 +169,26 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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++) + + 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, @@ -158,48 +201,63 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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()) + + 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 + } 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()) + } + + 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 + } 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()) + } + + 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 + } 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()) + } + + 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 + } 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 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 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; } @@ -209,18 +267,26 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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) + + 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) + } else if (random.nextBoolean() && jewels.getItem() != Items.nether_star) { chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), jewels); + } + t--; } } @@ -232,18 +298,28 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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()) + + if (random.nextBoolean()) { chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), metal); + } + t--; } } @@ -255,18 +331,28 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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()) + + if (random.nextBoolean()) { chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), ores); + } + t--; } } @@ -278,19 +364,15 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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()))); + ItemStack jewel = JewelrycraftUtil.generateJewelery(random); + displayer.object = jewel; displayer.quantity = 1; displayer.hasObject = true; @@ -303,17 +385,24 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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) + + if (smelter.hasMoltenMetal) { smelter.quantity = quantity < 0.9F ? 0.1F + Math.round(quantity * 10) / 10 : Math.round(quantity * 10) / 10; + } } } } @@ -323,42 +412,52 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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 - 1); - molder.mold = new ItemStack(ItemList.molds, 1, meta + 1); - 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; + + TileEntityMolder molder = (TileEntityMolder) world.getTileEntity(i1, j1, k1); + + if (molder != null && !molder.hasMold) + if (hasMold) { + int meta = random.nextInt(ItemMolds.moldsItemNames.length - 1); + + molder.mold = new ItemStack(ItemList.molds, 1, meta + 1); + molder.hasMold = true; + + if (hasStuff && JewelrycraftUtil.metal.size() > 0) { + ItemStack ring = new ItemStack(ItemList.ring); + ItemStack necklace = new ItemStack(ItemList.necklace); + ItemStack bracelet = new ItemStack(ItemList.bracelet); + ItemStack earrings = new ItemStack(ItemList.earrings); + + ItemStack metalIngot = JewelrycraftUtil.metal.get(random.nextInt(JewelrycraftUtil.metal.size())); + + JewelryNBT.addMetal(ring, metalIngot.copy()); + JewelryNBT.addMetal(necklace, metalIngot.copy()); + JewelryNBT.addMetal(bracelet, metalIngot.copy()); + JewelryNBT.addMetal(earrings, metalIngot.copy()); + + switch (meta) { + case 0: + molder.jewelBase = metalIngot; + break; + case 1: + molder.jewelBase = ring; + break; + case 2: + molder.jewelBase = necklace; + break; + case 3: + molder.jewelBase = bracelet; + break; + case 4: + molder.jewelBase = earrings; + break; } + + molder.hasJewelBase = true; } - } + } } public void generateFurnace(World world, int i, int j, int k, int metadata, Random random, StructureBoundingBox sbb, @@ -366,16 +465,24 @@ public class ComponentJewelry extends StructureVillagePieces.House1 { 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()) + 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); } } -- cgit v1.2.3