mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
okay this was pretty painful ngl
need a better way for doing lots of item generation mh has placed loot boolean replacement
This commit is contained in:
parent
0f18a54073
commit
653ea24d86
@ -2792,7 +2792,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(brick_dungeon_tile, brick_dungeon_tile.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(brick_dungeon_circle, brick_dungeon_circle.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(brick_forgotten, brick_forgotten.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(deco_computer, ItemBlockNamedMeta.class, deco_computer.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(deco_computer, deco_computer.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(filing_cabinet, filing_cabinet.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(tape_recorder, tape_recorder.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(steel_poles, steel_poles.getUnlocalizedName());
|
||||
|
||||
@ -352,9 +352,22 @@ public class HbmChestContents {
|
||||
new WeightedRandomChestContent(ModItems.can_creature, 0, 1, 2, 2),
|
||||
new WeightedRandomChestContent(ModItems.can_smart, 0, 1, 3, 2),
|
||||
new WeightedRandomChestContent(ModItems.can_mrsugar, 0, 1, 2, 2),
|
||||
new WeightedRandomChestContent(ModItems.cap_nuka, 0, 1, 16, 2),
|
||||
new WeightedRandomChestContent(ModItems.book_guide, 3, 1, 1, 1),
|
||||
new WeightedRandomChestContent(Item.getItemFromBlock(ModBlocks.deco_computer), 0, 1, 1, 1)};
|
||||
|
||||
public static WeightedRandomChestContent[] filingCabinet = new WeightedRandomChestContent[] {
|
||||
new WeightedRandomChestContent(Items.paper, 0, 1, 12, 240),
|
||||
new WeightedRandomChestContent(Items.book, 0, 1, 3, 90),
|
||||
new WeightedRandomChestContent(Items.map, 0, 1, 1, 50),
|
||||
new WeightedRandomChestContent(Items.writable_book, 0, 1, 1, 30),
|
||||
new WeightedRandomChestContent(ModItems.cigarette, 0, 1, 16, 20),
|
||||
new WeightedRandomChestContent(ModItems.toothpicks, 0, 1, 16, 10),
|
||||
new WeightedRandomChestContent(ModItems.dust, 0, 1, 1, 40),
|
||||
new WeightedRandomChestContent(ModItems.dust_tiny, 0, 1, 3, 75),
|
||||
new WeightedRandomChestContent(ModItems.ink, 0, 1, 1, 1), //make that mf rare; 1:555 weight
|
||||
};
|
||||
|
||||
/** Nowhere else to put this and this seems like the most fitting place **/
|
||||
public static ItemStack genetateBook(String key) {
|
||||
|
||||
|
||||
@ -251,11 +251,18 @@ abstract public class Feature extends StructureComponent {
|
||||
* @return TE implementing IInventory with randomized contents
|
||||
*/
|
||||
protected boolean generateInvContents(World world, StructureBoundingBox box, Random rand, Block block, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount) {
|
||||
return generateInvContents(world, box, rand, block, 0, featureX, featureY, featureZ, content, amount);
|
||||
}
|
||||
|
||||
protected boolean generateInvContents(World world, StructureBoundingBox box, Random rand, Block block, int meta, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount) {
|
||||
int posX = this.getXWithOffset(featureX, featureZ);
|
||||
int posY = this.getYWithOffset(featureY);
|
||||
int posZ = this.getZWithOffset(featureX, featureZ);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, block, 0, featureX, featureY, featureZ, box);
|
||||
if(world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks
|
||||
return false;
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box);
|
||||
IInventory inventory = (IInventory)world.getTileEntity(posX, posY, posZ);
|
||||
|
||||
if(inventory != null) {
|
||||
@ -274,22 +281,30 @@ abstract public class Feature extends StructureComponent {
|
||||
*/
|
||||
protected boolean generateLockableContents(World world, StructureBoundingBox box, Random rand, Block block, int featureX, int featureY, int featureZ,
|
||||
WeightedRandomChestContent[] content, int amount, double mod) {
|
||||
return generateLockableContents(world, box, rand, block, 0, featureX, featureY, featureZ, content, amount, mod);
|
||||
}
|
||||
|
||||
protected boolean generateLockableContents(World world, StructureBoundingBox box, Random rand, Block block, int meta, int featureX, int featureY, int featureZ,
|
||||
WeightedRandomChestContent[] content, int amount, double mod) {
|
||||
int posX = this.getXWithOffset(featureX, featureZ);
|
||||
int posY = this.getYWithOffset(featureY);
|
||||
int posZ = this.getZWithOffset(featureX, featureZ);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, block, 0, featureX, featureY, featureZ, box);
|
||||
if(world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks
|
||||
return false;
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box);
|
||||
TileEntity tile = world.getTileEntity(posX, posY, posZ);
|
||||
TileEntityLockableBase lock = (TileEntityLockableBase) tile;
|
||||
IInventory inventory = (IInventory) tile;
|
||||
|
||||
if(inventory != null && lock != null) {
|
||||
amount = (int)Math.floor(amount * StructureConfig.lootAmountFactor);
|
||||
WeightedRandomChestContent.generateChestContents(rand, content, inventory, amount < 1 ? 1 : amount);
|
||||
|
||||
lock.setPins(rand.nextInt(999) + 1);
|
||||
lock.setMod(mod);
|
||||
lock.lock();
|
||||
|
||||
amount = (int)Math.floor(amount * StructureConfig.lootAmountFactor);
|
||||
WeightedRandomChestContent.generateChestContents(rand, content, inventory, amount < 1 ? 1 : amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@ import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.lib.HbmChestContents;
|
||||
import com.hbm.util.LootGenerator;
|
||||
import com.hbm.world.worldgen.components.Feature.ConcreteBricks;
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
@ -45,9 +46,6 @@ public class OfficeFeatures {
|
||||
}
|
||||
|
||||
//Holy shit I despise this method so goddamn much
|
||||
//TODO BOB: please i beg you make some sort of utility tool to simplify this
|
||||
//ideally we'd invent something like the structure blocks or even a more advanced
|
||||
//schematic to java tool
|
||||
@Override
|
||||
public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) {
|
||||
|
||||
@ -222,6 +220,8 @@ public class OfficeFeatures {
|
||||
|
||||
private static ConcreteBricks ConcreteBricks = new ConcreteBricks();
|
||||
|
||||
//no placed loot? it's because i would've had to do fucking 12 of them and i don't have an easy standardized system for that
|
||||
|
||||
public LargeOfficeCorner() {
|
||||
super();
|
||||
}
|
||||
@ -435,6 +435,109 @@ public class OfficeFeatures {
|
||||
placeDoor(world, box, ModBlocks.door_office, 1, 3, 9, 10);
|
||||
placeDoor(world, box, ModBlocks.door_metal, 0, 5, 13, 3);
|
||||
//Furniture
|
||||
//Floor 1
|
||||
int NorthStairMeta = getStairMeta(2);
|
||||
int SouthStairMeta = getStairMeta(3);
|
||||
int NorthStairMetaUD = NorthStairMeta | 4;
|
||||
int SouthStairMetaUD = SouthStairMeta | 4;
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, EastStairMeta, 2, 1, 5, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, SouthStairMeta, 2, 1, 7, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, EastStairMeta, 2, 1, 8, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, NorthStairMeta, 2, 1, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 8, 1, 4, box);
|
||||
fillWithMetadataBlocks(world, box, 8, 1, 5, 8, 1, 7, Blocks.wooden_slab, 13);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 8, 1, 8, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 9, 1, 8, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, WestStairMeta, 9, 1, 5, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 9, 1, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 10, 8, 2, 7, box);
|
||||
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, EastStairMeta, 6, 1, 12, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, NorthStairMeta, 7, 1, 12, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, WestStairMeta, 8, 1, 12, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 10, 1, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 10, 1, 12, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 10, 2, 11, box);
|
||||
//Floor 2
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 4, 5, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 13, 3, 5, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 2, 5, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, NorthStairMeta, 3, 5, 5, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 3, 6, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 3, 5, 7, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 4, 5, 7, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 13, 4, 5, 8, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 4, 5, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, EastStairMeta, 2, 5, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 10, 5, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 13, 10, 5, 5, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 10, 5, 6, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, NorthStairMeta, 8, 5, 6, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(2), 10, 6, 6, box);
|
||||
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 8, 5, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 13, 8, 5, 10, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 8, 5, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 9, 5, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 10, 5, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, WestStairMeta, 10, 5, 10, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 9, 6, 9, box);
|
||||
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 1, 5, 13, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.wooden_slab, 13, 1, 5, 12, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 1, 5, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, NorthStairMeta, 3, 5, 13, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 1, 6, 12, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.machine_microwave, getDecoMeta(5), 1, 6, 11, box);
|
||||
//Floor 3
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 8, 9, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 7, 9, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 9, 9, 4, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 5, 9, 5, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 5, 9, 6, box);
|
||||
fillWithMetadataBlocks(world, box, 3, 9, 6, 4, 9, 6, Blocks.wooden_slab, 13);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 2, 9, 6, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, SouthStairMeta, 3, 9, 5, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 3, 10, 6, box);
|
||||
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 9, 9, 10, box);
|
||||
fillWithMetadataBlocks(world, box, 7, 9, 10, 8, 9, 10, Blocks.wooden_slab, 13);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, SouthStairMetaUD, 6, 9, 10, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 5, 9, 10, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 5, 9, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, NorthStairMetaUD, 5, 9, 12, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, NorthStairMeta, 8, 9, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, EastStairMeta, 7, 9, 8, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, SouthStairMeta, 9, 9, 8, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 6, 10, 10, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 7, 10, 10, box);
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, getDecoMeta(5), 6, 9, 11, box);
|
||||
placeRandomBobble(world, box, rand, 5, 10, 11);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, WestStairMetaUD, 2, 9, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.dark_oak_stairs, EastStairMetaUD, 1, 9, 11, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 2, 10, 11, box);
|
||||
|
||||
//Roof
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 5, 13, 9, box);
|
||||
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 7, 13, 11, box);
|
||||
|
||||
//almost certainly a fucking astronomically better way to do this
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(3), 9, 1, 7, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(1), 7, 5, 4, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(1), 7, 6, 4, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(2), 10, 5, 7, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 10, 5, 12, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 10, 6, 12, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 2, 9, 5, HbmChestContents.filingCabinet, 4);
|
||||
generateLockableContents(world, box, rand, ModBlocks.safe, getDecoMeta(2), 1, 9, 13, HbmChestContents.officeTrash, 10, 1.0D);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 2, 9, 13, HbmChestContents.filingCabinet, 4);
|
||||
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 3, 9, 13, HbmChestContents.filingCabinet, 4);
|
||||
generateLockableContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 3, 10, 13, HbmChestContents.expensive, 8, 0.1D);
|
||||
|
||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_loot, 0, 6, 13, 11, box);
|
||||
LootGenerator.lootCapStash(world, this.getXWithOffset(6, 11), this.getYWithOffset(13), this.getZWithOffset(6, 11));
|
||||
|
||||
//this hurt my soul
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user