World draft 1 complete

This commit is contained in:
Waterpicker 2017-01-26 20:57:21 -06:00
parent 6eacd2d62f
commit e75d282b24
16 changed files with 350 additions and 90 deletions

View file

@ -11,11 +11,15 @@ import com.zixiken.dimdoors.tileentities.TileEntityTransTrapdoor;
import com.zixiken.dimdoors.world.DimDoorDimensions; import com.zixiken.dimdoors.world.DimDoorDimensions;
import net.minecraft.block.BlockDoor; import net.minecraft.block.BlockDoor;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
public abstract class DDProxyCommon implements IDDProxy { public abstract class DDProxyCommon implements IDDProxy {

View file

@ -53,6 +53,7 @@ public class DimDoors {
@Mod.EventHandler @Mod.EventHandler
public void serverLoad(FMLServerStartingEvent event) { public void serverLoad(FMLServerStartingEvent event) {
event.registerServerCommand(new TeleportCommand());
//@todo event.registerServerCommand( new DDCommand() ); //to register commands that this mod offers? //@todo event.registerServerCommand( new DDCommand() ); //to register commands that this mod offers?
RiftRegistry.Instance.reset(); RiftRegistry.Instance.reset();
PocketSavedData.get(getDefWorld()); PocketSavedData.get(getDefWorld());

View file

@ -0,0 +1,59 @@
package com.zixiken.dimdoors;
import com.zixiken.dimdoors.shared.Location;
import com.zixiken.dimdoors.shared.TeleportHelper;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Teleporter;
import net.minecraft.world.World;
import scala.Int;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Jared Johnson on 1/26/2017.
*/
public class TeleportCommand extends CommandBase {
private final List aliases;
public TeleportCommand()
{
aliases = new ArrayList();
aliases.add("dimteleport");
}
@Override
public String getName() {
return "dimteleport";
}
@Override
public String getUsage(ICommandSender sender) {
return "dimteleport <dimension>";
}
@Override
public List<String> getAliases() {
return aliases;
}
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
int id = Integer.parseInt(args[0]);
if (sender instanceof EntityPlayerMP) {
server.getPlayerList().transferPlayerToDimension((EntityPlayerMP) sender, Integer.parseInt(args[0]), new TeleportHelper(new Location(id, 0,300,0)));
}
}
}

View file

@ -0,0 +1,32 @@
package com.zixiken.dimdoors.blocks;
import com.zixiken.dimdoors.world.limbo.LimboDecay;
import com.zixiken.dimdoors.world.limbo.WorldProviderLimbo;
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import java.util.Random;
public class BlockLimbo extends Block {
public static final String ID = "blockLimbo";
public BlockLimbo() {
super(Material.GROUND, MapColor.BLACK);
setUnlocalizedName(ID);
setRegistryName(ID);
setTickRandomly(true);
}
@Override
public void updateTick(World world, BlockPos pos, IBlockState state, Random random) {
//Make sure this block is in Limbo
if (world.provider instanceof WorldProviderLimbo) {
LimboDecay.applySpreadDecay(world, pos);
}
}
}

View file

@ -147,15 +147,14 @@ public class BlockRift extends Block implements ITileEntityProvider {
x + .5, y + .5, z + .5, x + .5, y + .5, z + .5,
rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D)); rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D));
*/ */
if (tile.shouldClose) //renders an opposite color effect if it is being closed by the rift remover if (tile.shouldClose) //renders an opposite color effect if it is being closed by the rift remover{
{
FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX( FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX(
worldIn, worldIn,
x + .5, y + .5, z + .5, x + .5, y + .5, z + .5,
rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D)); rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D));
}
} }
public boolean tryPlacingRift(World world, BlockPos pos) { public boolean tryPlacingRift(World world, BlockPos pos) {
return world != null && !isBlockImmune(world, pos) return world != null && !isBlockImmune(world, pos)
&& world.setBlockState(pos, getDefaultState()); //@todo This returns false, because this block does not have blockstates configured correctly. !isBlockImmune doesn't seem to be true either though... && world.setBlockState(pos, getDefaultState()); //@todo This returns false, because this block does not have blockstates configured correctly. !isBlockImmune doesn't seem to be true either though...

View file

@ -15,6 +15,7 @@ public class ModBlocks {
public static BlockTransTrapdoor blockDimHatch; public static BlockTransTrapdoor blockDimHatch;
public static BlockDimWall blockDimWall; public static BlockDimWall blockDimWall;
public static BlockRift blockRift; public static BlockRift blockRift;
public static BlockLimbo blockLimbo;
public static void registerBlocks() { public static void registerBlocks() {
GameRegistry.register(blockDoorQuartz = new BlockDoorQuartz()); GameRegistry.register(blockDoorQuartz = new BlockDoorQuartz());
@ -28,5 +29,6 @@ public class ModBlocks {
GameRegistry.register(blockDimWall = new BlockDimWall()); GameRegistry.register(blockDimWall = new BlockDimWall());
GameRegistry.register(blockDimDoorTransient = new BlockDimDoorTransient()); GameRegistry.register(blockDimDoorTransient = new BlockDimDoorTransient());
GameRegistry.register(blockRift = new BlockRift()); GameRegistry.register(blockRift = new BlockRift());
GameRegistry.register(blockLimbo = new BlockLimbo());
} }
} }

View file

@ -26,10 +26,6 @@ public class TeleportHelper extends Teleporter {
entityIn.setPositionAndUpdate(pos.getX() + .5, pos.getY() + .05, pos.getZ() + .5); entityIn.setPositionAndUpdate(pos.getX() + .5, pos.getY() + .05, pos.getZ() + .5);
} }
public IBlockState toBlockState(String id) {
String[] list = id.split("[");
}
public static boolean teleport(Entity entity, Location newLocation) { public static boolean teleport(Entity entity, Location newLocation) {
if (DimDoors.isClient()) { if (DimDoors.isClient()) {
//DimDoors.log(TeleportHelper.class, "Not teleporting, because EntityPlayerSP."); //DimDoors.log(TeleportHelper.class, "Not teleporting, because EntityPlayerSP.");

View file

@ -1,20 +1,28 @@
package com.zixiken.dimdoors.world; package com.zixiken.dimdoors.world;
import com.zixiken.dimdoors.world.limbo.WorldProviderLimbo; import com.zixiken.dimdoors.world.limbo.WorldProviderLimbo;
import com.zixiken.dimdoors.world.personalpocket.WorldProviderPersonalPocket;
import com.zixiken.dimdoors.world.pocket.WorldProviderPocket; import com.zixiken.dimdoors.world.pocket.WorldProviderPocket;
import com.zixiken.dimdoors.world.pocket.WorldProviderPublicPocket;
import net.minecraft.world.DimensionType; import net.minecraft.world.DimensionType;
import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.DimensionManager;
public class DimDoorDimensions { public class DimDoorDimensions {
public static DimensionType LIMBO; public static DimensionType LIMBO;
public static DimensionType POCKET; public static DimensionType DUNGEON;
public static DimensionType PRIVATE;
public static DimensionType PUBLIC;
public static void init() { public static void init() {
LIMBO = DimensionType.register("Limbo", "_limbo", DimensionManager.getNextFreeDimId(), WorldProviderPocket.class, false); LIMBO = DimensionType.register("Limbo", "_limbo", 2, WorldProviderLimbo.class, false);
POCKET = DimensionType.register("Pocket", "_pocket", DimensionManager.getNextFreeDimId(), WorldProviderLimbo.class, false); PRIVATE = DimensionType.register("Private", "_private", 3, WorldProviderPersonalPocket.class, false); //TODO: Figure out how to consiently get proper dimension ids
DUNGEON = DimensionType.register("Dungeon", "_dungeon", 4, WorldProviderPocket.class, false);
PUBLIC = DimensionType.register("Public", "_public", 5, WorldProviderPublicPocket.class, false);
registerDimension(LIMBO); registerDimension(LIMBO);
registerDimension(POCKET); registerDimension(PRIVATE);
registerDimension(DUNGEON);
registerDimension(PUBLIC);
} }
public static void registerDimension(DimensionType dimension) { public static void registerDimension(DimensionType dimension) {

View file

@ -2,9 +2,6 @@ package com.zixiken.dimdoors.world.limbo;
import com.zixiken.dimdoors.world.biomes.DimDoorsBiome; import com.zixiken.dimdoors.world.biomes.DimDoorsBiome;
/**
* Created by Jared Johnson on 1/24/2017.
*/
public class LimboBiome extends DimDoorsBiome { public class LimboBiome extends DimDoorsBiome {
public LimboBiome() { public LimboBiome() {
super("limbo"); super("limbo");

View file

@ -34,7 +34,7 @@ public class LimboDecay {
public static IBlockState[] getDecaySequence() { public static IBlockState[] getDecaySequence() {
if (decaySequence == null) { if (decaySequence == null) {
decaySequence = new IBlockState[] { decaySequence = new IBlockState[] {
mod_pocketDim.blockLimbo, ModBlocks.blockLimbo.getDefaultState(),
Blocks.GRAVEL.getDefaultState(), Blocks.GRAVEL.getDefaultState(),
Blocks.COBBLESTONE.getDefaultState(), Blocks.COBBLESTONE.getDefaultState(),
Blocks.STONE.getDefaultState() Blocks.STONE.getDefaultState()
@ -47,16 +47,16 @@ public class LimboDecay {
public static IBlockState[] getBlocksImmuneToDecay() { public static IBlockState[] getBlocksImmuneToDecay() {
if (blocksImmuneToDecay == null) { if (blocksImmuneToDecay == null) {
blocksImmuneToDecay = new IBlockState[] { blocksImmuneToDecay = new IBlockState[] {
mod_pocketDim.blockLimbo, ModBlocks.blockLimbo.getDefaultState(),
ModBlocks.blockDimWall.getDefaultState().withProperty(BlockDimWall.TYPE, BlockDimWall.EnumType.ANCIENT), ModBlocks.blockDimWall.getDefaultState().withProperty(BlockDimWall.TYPE, BlockDimWall.EnumType.ANCIENT),
ModBlocks.blockDimDoorTransient.getDefaultState(), ModBlocks.blockDimDoorTransient.getDefaultState(),
ModBlocks.blockDimDoor.getDefaultState(), ModBlocks.blockDimDoor.getDefaultState(),
ModBlocks.blockDimDoorWarp.getDefaultState(), ModBlocks.blockDimDoorWarp.getDefaultState(),
ModBlocks.blockRift.getDefaultState(), ModBlocks.blockRift.getDefaultState(),
ModBlocks.blockDimDoorChaos.getDefaultState(), ModBlocks.blockDimDoorChaos.getDefaultState(),
ModBlocks.blockDoorGold, ModBlocks.blockDoorGold.getDefaultState(),
ModBlocks.blockDoorQuartz, ModBlocks.blockDoorQuartz.getDefaultState(),
ModBlocks.blockDimDoorGold ModBlocks.blockDimDoorGold.getDefaultState()
}; };
} }
@ -67,8 +67,7 @@ public class LimboDecay {
* Checks the blocks orthogonally around a given location (presumably the location of an Unraveled Fabric block) * Checks the blocks orthogonally around a given location (presumably the location of an Unraveled Fabric block)
* and applies Limbo decay to them. This gives the impression that decay spreads outward from Unraveled Fabric. * and applies Limbo decay to them. This gives the impression that decay spreads outward from Unraveled Fabric.
*/ */
public void applySpreadDecay(World world, BlockPos pos) public static void applySpreadDecay(World world, BlockPos pos) {
{
//Check if we randomly apply decay spread or not. This can be used to moderate the frequency of //Check if we randomly apply decay spread or not. This can be used to moderate the frequency of
//full spread decay checks, which can also shift its performance impact on the game. //full spread decay checks, which can also shift its performance impact on the game.
if (random.nextInt(MAX_DECAY_SPREAD_CHANCE) < DECAY_SPREAD_CHANCE) { if (random.nextInt(MAX_DECAY_SPREAD_CHANCE) < DECAY_SPREAD_CHANCE) {
@ -87,7 +86,7 @@ public class LimboDecay {
* Picks random blocks from each active chunk in Limbo and, if decay is applicable, converts them directly to Unraveled Fabric. * Picks random blocks from each active chunk in Limbo and, if decay is applicable, converts them directly to Unraveled Fabric.
* This decay method is designed to stop players from avoiding Limbo decay by building floating structures. * This decay method is designed to stop players from avoiding Limbo decay by building floating structures.
*/ */
public void applyRandomFastDecay() public static void applyRandomFastDecay()
{ {
int x, y, z; int x, y, z;
int sectionY; int sectionY;
@ -118,10 +117,10 @@ public class LimboDecay {
/** /**
* Checks if a block can be decayed and, if so, changes it directly into Unraveled Fabric. * Checks if a block can be decayed and, if so, changes it directly into Unraveled Fabric.
*/ */
private boolean decayBlockFast(World world, BlockPos pos) { private static boolean decayBlockFast(World world, BlockPos pos) {
IBlockState block = world.getBlockState(pos); IBlockState block = world.getBlockState(pos);
if (canDecayBlock(block, world, pos)) { if (canDecayBlock(block, world, pos)) {
world.setBlockState(pos, mod_pocketDim.blockLimbo); world.setBlockState(pos, ModBlocks.blockLimbo.getDefaultState());
return true; return true;
} }
return false; return false;
@ -130,7 +129,7 @@ public class LimboDecay {
/** /**
* Checks if a block can be decayed and, if so, changes it to the next block ID along the decay sequence. * Checks if a block can be decayed and, if so, changes it to the next block ID along the decay sequence.
*/ */
private boolean decayBlock(World world, BlockPos pos) { private static boolean decayBlock(World world, BlockPos pos) {
int index; int index;
IBlockState block = world.getBlockState(pos); IBlockState block = world.getBlockState(pos);
if (canDecayBlock(block, world, pos)) { if (canDecayBlock(block, world, pos)) {
@ -157,7 +156,7 @@ public class LimboDecay {
/** /**
* Checks if a block can decay. We will not decay air, certain DD blocks, or containers. * Checks if a block can decay. We will not decay air, certain DD blocks, or containers.
*/ */
private boolean canDecayBlock(IBlockState block, World world, BlockPos pos) { private static boolean canDecayBlock(IBlockState block, World world, BlockPos pos) {
if (world.isAirBlock(pos )) { if (world.isAirBlock(pos )) {
return false; return false;
} }

View file

@ -1,7 +1,10 @@
package com.zixiken.dimdoors.world.limbo; package com.zixiken.dimdoors.world.limbo;
import com.zixiken.dimdoors.blocks.BlockDimWall;
import com.zixiken.dimdoors.blocks.ModBlocks;
import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.EnumCreatureType;
import net.minecraft.init.Biomes; import net.minecraft.init.Biomes;
import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -14,6 +17,7 @@ import net.minecraft.world.gen.structure.MapGenScatteredFeature;
import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@ -51,7 +55,7 @@ public class LimboGenerator implements IChunkGenerator
private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature(); private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature();
/** The biomes that are used to generate the chunk */ /** The biomes that are used to generate the chunk */
private Biome[] biomesForGeneration = new Biome[1]; private Biome[] biomesForGeneration = { new LimboBiome() };
/** A double array that hold terrain noise from noiseGen3 */ /** A double array that hold terrain noise from noiseGen3 */
double[] noise3; double[] noise3;
@ -78,9 +82,8 @@ public class LimboGenerator implements IChunkGenerator
} }
//private CustomLimboPopulator spawner; //private CustomLimboPopulator spawner;
public LimboGenerator(World world, long seed, /*CustomLimboPopulator spawner*/) { public LimboGenerator(World world, long seed /*CustomLimboPopulator spawner*/) {
this.worldObj = world; this.worldObj = world;
BiomeManager
LimboGenerator.rand = new Random(seed); LimboGenerator.rand = new Random(seed);
this.noiseGen1 = new NoiseGeneratorOctaves(LimboGenerator.rand, 16); //base terrain this.noiseGen1 = new NoiseGeneratorOctaves(LimboGenerator.rand, 16); //base terrain
this.noiseGen2 = new NoiseGeneratorOctaves(LimboGenerator.rand, 16); //hillyness this.noiseGen2 = new NoiseGeneratorOctaves(LimboGenerator.rand, 16); //hillyness
@ -102,7 +105,7 @@ public class LimboGenerator implements IChunkGenerator
this.worldObj = world; this.worldObj = world;
this.spawner = spawner; //this.spawner = spawner;
} }
@Override @Override
@ -111,7 +114,7 @@ public class LimboGenerator implements IChunkGenerator
//TODO: Wtf? Why do you reinitialize the seed when we already initialized it in the constructor?! ~SenseiKiwi //TODO: Wtf? Why do you reinitialize the seed when we already initialized it in the constructor?! ~SenseiKiwi
LimboGenerator.rand.setSeed(chunkX * 341873128712L + chunkZ * 132897987541L); LimboGenerator.rand.setSeed(chunkX * 341873128712L + chunkZ * 132897987541L);
ChunkPrimer primer = new ChunkPrimer(); ChunkPrimer primer = new ChunkPrimer();
this.setBlocksInChunk(chunkX, chunkZ, primer); this.scale(chunkX, chunkZ, primer);
Chunk chunk = new Chunk(this.worldObj, primer, chunkX, chunkZ); Chunk chunk = new Chunk(this.worldObj, primer, chunkX, chunkZ);
chunk.generateSkylightMap(); chunk.generateSkylightMap();
@ -255,62 +258,70 @@ public class LimboGenerator implements IChunkGenerator
return par1ArrayOfDouble; return par1ArrayOfDouble;
} }
public void setBlocksInChunk(int x, int z, ChunkPrimer blocks) { public void scale(int x, int z, ChunkPrimer primer) { //Coursty of
byte var4 = 4; // TODO: this:
byte var5 = 16; this.biomesForGeneration = this.worldObj.getBiomeProvider().getBiomesForGeneration(this.biomesForGeneration, x * 4 - 2, z * 4 - 2, 10, 10);
byte var6 = 19; this.noiseArray = this.initializeNoiseField(this.noiseArray, x * 4, 0, z * 4, 5, 17, 5);
int var7 = var4 + 1;
byte var8 = 17;
int var9 = var4 + 1;
this.biomesForGeneration = this.worldObj.getBiomeProvider().getBiomes(this.biomesForGeneration, x * 4 - 2, z * 4 - 2, var7 + 5, var9 + 5);
this.noiseArray = this.initializeNoiseField(this.noiseArray, x * var4, 0, z * var4, var7, var8, var9);
for (int var10 = 0; var10 < var4; ++var10) { int xzSections = 4;
for (int var11 = 0; var11 < var4; ++var11) { int xzSectionSize = 4;
for (int var12 = 0; var12 < var5; ++var12) { int ySections = 16;
double var13 = 0.125D; int ySectionSize = 8;
double var15 = this.noiseArray[((((var10) * var9) + var11) * var8) + var12];
double var17 = this.noiseArray[((var10) * var9 + var11 + 1) * var8 + var12];
double var19 = this.noiseArray[((var10 + 1) * var9 + var11) * var8 + var12];
double var21 = this.noiseArray[((var10 + 1) * var9 + var11 + 1) * var8 + var12];
double var23 = (this.noiseArray[((var10) * var9 + var11) * var8 + var12 + 1] - var15) * var13;
double var25 = (this.noiseArray[((var10) * var9 + var11 + 1) * var8 + var12 + 1] - var17) * var13;
double var27 = (this.noiseArray[((var10 + 1) * var9 + var11) * var8 + var12 + 1] - var19) * var13;
double var29 = (this.noiseArray[((var10 + 1) * var9 + var11 + 1) * var8 + var12 + 1] - var21) * var13;
for (int var31 = 0; var31 < 8; ++var31) { double xzScale = 1.0 / xzSectionSize;
double var32 = 0.25D; double yScale = 1.0 / ySectionSize;
double var34 = var15; for (int sectionX = 0; sectionX < xzSections; ++sectionX) {
double var36 = var17; int xSectionPart = sectionX * xzSectionSize;
double var38 = (var19 - var15) * var32; int i0__ = sectionX * (xzSections + 1);
double var40 = (var21 - var17) * var32; int i1__ = (sectionX + 1) * (xzSections + 1);
for (int var42 = 0; var42 < 4; ++var42) { for (int sectionZ = 0; sectionZ < xzSections; ++sectionZ) {
int var43 = var42 + var10 * 4 << 11 | 0 + var11 * 4 << 7 | var12 * 8 + var31; int zSectionPart = sectionZ * xzSectionSize;
short var44 = 128; int i0_0 = (i0__ + sectionZ) * (ySections + 1);
var43 -= var44; int i0_1 = (i0__ + sectionZ + 1) * (ySections + 1);
double var45 = 0.25D; int i1_0 = (i1__ + sectionZ) * (ySections + 1);
double var49 = (var36 - var34) * var45; int i1_1 = (i1__ + sectionZ + 1) * (ySections + 1);
double var47 = var34 - var49;
for (int var51 = 0; var51 < 4; ++var51) { for (int sectionY = 0; sectionY < ySections; ++sectionY) {
if ((var47 += var49) > 0.0D) { int ySectionPart = sectionY * ySectionSize;
blocks[var43 += var44] = mod_pocketDim.blockLimbo; double v0y0 = this.noiseArray[i0_0 + sectionY];
} else if (var12 * 8 + var31 < var6) { double v0y1 = this.noiseArray[i0_1 + sectionY];
blocks[var43 += var44] = mod_pocketDim.blockDimWallPerm; double v1y0 = this.noiseArray[i1_0 + sectionY];
} else { double v1y1 = this.noiseArray[i1_1 + sectionY];
blocks[var43 += var44] = Blocks.air; double d0y0 = (this.noiseArray[i0_0 + sectionY + 1] - v0y0) * yScale;
double d0y1 = (this.noiseArray[i0_1 + sectionY + 1] - v0y1) * yScale;
double d1y0 = (this.noiseArray[i1_0 + sectionY + 1] - v1y0) * yScale;
double d1y1 = (this.noiseArray[i1_1 + sectionY + 1] - v1y1) * yScale;
for (int yRel = 0; yRel < ySectionSize; ++yRel) {
int yCoord = ySectionPart + yRel;
double vxy0 = v0y0;
double vxy1 = v0y1;
double dxy0 = (v1y0 - v0y0) * xzScale;
double dxy1 = (v1y1 - v0y1) * xzScale;
for (int xRel = 0; xRel < xzSectionSize; ++xRel) {
int xCoord = xSectionPart + xRel;
double dxyz = (vxy1 - vxy0) * xzScale;
double vxyz = vxy0 - dxyz;
for (int zRel = 0; zRel < xzSectionSize; ++zRel) {
int zCoord = zSectionPart + zRel;
if(vxyz > 0) {
primer.setBlockState(xCoord, yCoord, zCoord, ModBlocks.blockLimbo.getDefaultState());
} else if(yCoord < 6) {
primer.setBlockState(xCoord, yCoord, zCoord, ModBlocks.blockDimWall.getDefaultState().withProperty(BlockDimWall.TYPE, BlockDimWall.EnumType.ANCIENT));
} }
} }
var34 += var38; vxy0 += dxy0;
var36 += var40; vxy1 += dxy1;
} }
var15 += var23; v0y0 += d0y0;
var17 += var25; v0y1 += d0y1;
var19 += var27; v1y0 += d1y0;
var21 += var29; v1y1 += d1y1;
} }
} }
} }
@ -319,9 +330,7 @@ public class LimboGenerator implements IChunkGenerator
@Override @Override
public List<Biome.SpawnListEntry> getPossibleCreatures(EnumCreatureType par1EnumCreatureType, BlockPos pos) { public List<Biome.SpawnListEntry> getPossibleCreatures(EnumCreatureType par1EnumCreatureType, BlockPos pos) {
return new ArrayList<Biome.SpawnListEntry>();
Biome biomegenbase = this.worldObj.getBiomeForCoordsBody(pos);
return biomegenbase == Biomes.SWAMPLAND && par1EnumCreatureType == EnumCreatureType.MONSTER && this.scatteredFeatureGenerator.isInsideStructure(pos) ? this.scatteredFeatureGenerator.getScatteredFeatureSpawnList() : biomegenbase.getSpawnableList(par1EnumCreatureType);
} }
@Nullable @Nullable

View file

@ -1,5 +1,6 @@
package com.zixiken.dimdoors.world.limbo; package com.zixiken.dimdoors.world.limbo;
import com.zixiken.dimdoors.blocks.ModBlocks;
import com.zixiken.dimdoors.client.CloudRenderBlank; import com.zixiken.dimdoors.client.CloudRenderBlank;
import com.zixiken.dimdoors.shared.Location; import com.zixiken.dimdoors.shared.Location;
import com.zixiken.dimdoors.world.DimDoorDimensions; import com.zixiken.dimdoors.world.DimDoorDimensions;
@ -20,7 +21,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class WorldProviderLimbo extends WorldProvider { public class WorldProviderLimbo extends WorldProvider {
private IRenderHandler skyRenderer; private IRenderHandler skyRenderer;
private CustomLimboPopulator spawner; //private CustomLimboPopulator spawner;
public WorldProviderLimbo() { public WorldProviderLimbo() {
this.hasNoSky = false; this.hasNoSky = false;
@ -82,16 +83,15 @@ public class WorldProviderLimbo extends WorldProvider {
return 4; return 4;
} }
@SideOnly(Side.CLIENT)
@Override @Override
public String getSaveFolder() { public String getSaveFolder() {
return (getDimension() == 0 ? null : "dimdoors/limbo" + getDimension()); return (getDimension() == 0 ? null : "limbo" + getDimension());
} }
@Override @Override
public boolean canCoordinateBeSpawn(int x, int z) { public boolean canCoordinateBeSpawn(int x, int z) {
BlockPos pos = this.world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z)); BlockPos pos = this.world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z));
return world.getBlockState(pos).equals(mod_pocketDim.blockLimbo); return world.getBlockState(pos).equals(ModBlocks.blockLimbo.getDefaultState());
} }
@Override @Override
@ -140,7 +140,6 @@ public class WorldProviderLimbo extends WorldProvider {
int z = MathHelper.clamp(this.world.rand.nextInt(), -500, 500); int z = MathHelper.clamp(this.world.rand.nextInt(), -500, 500);
return new BlockPos(x, 700, z); return new BlockPos(x, 700, z);
} }
}
@Override @Override
public DimensionType getDimensionType() { public DimensionType getDimensionType() {

View file

@ -1,7 +1,60 @@
package com.zixiken.dimdoors.world.personalpocket; package com.zixiken.dimdoors.world.personalpocket;
import com.zixiken.dimdoors.client.CloudRenderBlank;
import com.zixiken.dimdoors.world.DimDoorDimensions;
import com.zixiken.dimdoors.world.pocket.WorldProviderPocket;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.DimensionType;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/** /**
* Created by Jared Johnson on 1/24/2017. * Created by Jared Johnson on 1/24/2017.
*/ */
public class WorldProviderPersonalPocket { public class WorldProviderPersonalPocket extends WorldProviderPocket {
@SideOnly(Side.CLIENT)
@Override
public Vec3d getSkyColor(Entity cameraEntity, float partialTicks)
{
setCloudRenderer(new CloudRenderBlank());
return new Vec3d(1,1,1);
}
public boolean isSurfaceWorld() {
return false;
}
@Override
protected void generateLightBrightnessTable() {
for (int i = 0; i <= 15; ++i) {
this.lightBrightnessTable[i] = (15);
}
}
@Override
public double getHorizon() {
return world.getHeight()-256;
}
@SideOnly(Side.CLIENT)
@Override
public Vec3d getFogColor(float par1, float par2) {
return new Vec3d(1,1,1);
}
@Override
public int getActualHeight() {
return -256;
}
@Override
public String getSaveFolder() {
return (getDimension() == 0 ? null : "personal");
}
@Override
public DimensionType getDimensionType() {
return DimDoorDimensions.PRIVATE;
}
} }

View file

@ -1,4 +1,4 @@
package com.zixiken.dimdoors.world; package com.zixiken.dimdoors.world.pocket;
import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.EnumCreatureType;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -9,6 +9,7 @@ import net.minecraft.world.chunk.ChunkPrimer;
import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkGenerator;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class PocketGenerator implements IChunkGenerator { public class PocketGenerator implements IChunkGenerator {
@ -46,7 +47,7 @@ public class PocketGenerator implements IChunkGenerator {
@Override @Override
public List<Biome.SpawnListEntry> getPossibleCreatures(EnumCreatureType creatureType, BlockPos pos) { public List<Biome.SpawnListEntry> getPossibleCreatures(EnumCreatureType creatureType, BlockPos pos) {
return null; return new ArrayList<Biome.SpawnListEntry>();
} }
@Nullable @Nullable

View file

@ -1,12 +1,97 @@
package com.zixiken.dimdoors.world.pocket; package com.zixiken.dimdoors.world.pocket;
import com.zixiken.dimdoors.client.CloudRenderBlank;
import com.zixiken.dimdoors.world.DimDoorDimensions; import com.zixiken.dimdoors.world.DimDoorDimensions;
import net.minecraft.client.renderer.Vector3d;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.DimensionType; import net.minecraft.world.DimensionType;
import net.minecraft.world.WorldProvider; import net.minecraft.world.WorldProvider;
import net.minecraft.world.chunk.IChunkGenerator;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.client.IRenderHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class WorldProviderPocket extends WorldProvider { public class WorldProviderPocket extends WorldProvider {
//protected CustomLimboPopulator spawner;
protected IRenderHandler skyRenderer;
public WorldProviderPocket() {
this.hasNoSky = true;
}
@Override
public String getSaveFolder() {
return (getDimension() == 0 ? null : "private");
}
@SideOnly(Side.CLIENT)
@Override
public Vec3d getSkyColor(Entity cameraEntity, float partialTicks) {
setCloudRenderer( new CloudRenderBlank());
return Vec3d.ZERO;
}
@SideOnly(Side.CLIENT)
@Override
public Vec3d getFogColor(float par1, float par2) {
return Vec3d.ZERO;
}
@Override
public double getHorizon() {
return world.getHeight();
}
@Override
public IChunkGenerator createChunkGenerator() {
return new PocketGenerator(world, 0); //, spawner);
}
@Override
public boolean canSnowAt(BlockPos pos, boolean light) {
return false;
}
@Override
public boolean canBlockFreeze(BlockPos pos, boolean byWater) {
return false;
}
public float calculateCelestialAngle(long par1, float par3) {
return .5F;
}
@Override
protected void generateLightBrightnessTable() {
for (int steps = 0; steps <= 15; ++steps) {
float var3 = (float) (Math.pow(steps,1.5) / Math.pow(15.0F,1.5));
this.lightBrightnessTable[15-steps] = var3;
System.out.println( this.lightBrightnessTable[steps]+"light");
}
}
@Override
public int getRespawnDimension(EntityPlayerMP player) {
return getDimension();
}
@Override
public boolean canRespawnHere() {
return false;
}
@Override
public int getActualHeight() {
return 256;
}
@Override @Override
public DimensionType getDimensionType() { public DimensionType getDimensionType() {
return DimDoorDimensions.POCKET; return DimDoorDimensions.DUNGEON;
} }
} }

View file

@ -0,0 +1,16 @@
package com.zixiken.dimdoors.world.pocket;
import com.zixiken.dimdoors.world.DimDoorDimensions;
import net.minecraft.world.DimensionType;
public class WorldProviderPublicPocket extends WorldProviderPocket {
@Override
public String getSaveFolder() {
return (getDimension() == 0 ? null : "public");
}
@Override
public DimensionType getDimensionType() {
return DimDoorDimensions.PUBLIC;
}
}