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 net.minecraft.block.BlockDoor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
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;
public abstract class DDProxyCommon implements IDDProxy {

View file

@ -53,6 +53,7 @@ public class DimDoors {
@Mod.EventHandler
public void serverLoad(FMLServerStartingEvent event) {
event.registerServerCommand(new TeleportCommand());
//@todo event.registerServerCommand( new DDCommand() ); //to register commands that this mod offers?
RiftRegistry.Instance.reset();
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,
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(
worldIn,
x + .5, y + .5, z + .5,
rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D));
}
}
public boolean tryPlacingRift(World world, BlockPos 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...

View file

@ -15,6 +15,7 @@ public class ModBlocks {
public static BlockTransTrapdoor blockDimHatch;
public static BlockDimWall blockDimWall;
public static BlockRift blockRift;
public static BlockLimbo blockLimbo;
public static void registerBlocks() {
GameRegistry.register(blockDoorQuartz = new BlockDoorQuartz());
@ -28,5 +29,6 @@ public class ModBlocks {
GameRegistry.register(blockDimWall = new BlockDimWall());
GameRegistry.register(blockDimDoorTransient = new BlockDimDoorTransient());
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);
}
public IBlockState toBlockState(String id) {
String[] list = id.split("[");
}
public static boolean teleport(Entity entity, Location newLocation) {
if (DimDoors.isClient()) {
//DimDoors.log(TeleportHelper.class, "Not teleporting, because EntityPlayerSP.");

View file

@ -1,20 +1,28 @@
package com.zixiken.dimdoors.world;
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.WorldProviderPublicPocket;
import net.minecraft.world.DimensionType;
import net.minecraftforge.common.DimensionManager;
public class DimDoorDimensions {
public static DimensionType LIMBO;
public static DimensionType POCKET;
public static DimensionType DUNGEON;
public static DimensionType PRIVATE;
public static DimensionType PUBLIC;
public static void init() {
LIMBO = DimensionType.register("Limbo", "_limbo", DimensionManager.getNextFreeDimId(), WorldProviderPocket.class, false);
POCKET = DimensionType.register("Pocket", "_pocket", DimensionManager.getNextFreeDimId(), WorldProviderLimbo.class, false);
LIMBO = DimensionType.register("Limbo", "_limbo", 2, 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(POCKET);
registerDimension(PRIVATE);
registerDimension(DUNGEON);
registerDimension(PUBLIC);
}
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;
/**
* Created by Jared Johnson on 1/24/2017.
*/
public class LimboBiome extends DimDoorsBiome {
public LimboBiome() {
super("limbo");

View file

@ -34,7 +34,7 @@ public class LimboDecay {
public static IBlockState[] getDecaySequence() {
if (decaySequence == null) {
decaySequence = new IBlockState[] {
mod_pocketDim.blockLimbo,
ModBlocks.blockLimbo.getDefaultState(),
Blocks.GRAVEL.getDefaultState(),
Blocks.COBBLESTONE.getDefaultState(),
Blocks.STONE.getDefaultState()
@ -47,16 +47,16 @@ public class LimboDecay {
public static IBlockState[] getBlocksImmuneToDecay() {
if (blocksImmuneToDecay == null) {
blocksImmuneToDecay = new IBlockState[] {
mod_pocketDim.blockLimbo,
ModBlocks.blockLimbo.getDefaultState(),
ModBlocks.blockDimWall.getDefaultState().withProperty(BlockDimWall.TYPE, BlockDimWall.EnumType.ANCIENT),
ModBlocks.blockDimDoorTransient.getDefaultState(),
ModBlocks.blockDimDoor.getDefaultState(),
ModBlocks.blockDimDoorWarp.getDefaultState(),
ModBlocks.blockRift.getDefaultState(),
ModBlocks.blockDimDoorChaos.getDefaultState(),
ModBlocks.blockDoorGold,
ModBlocks.blockDoorQuartz,
ModBlocks.blockDimDoorGold
ModBlocks.blockDoorGold.getDefaultState(),
ModBlocks.blockDoorQuartz.getDefaultState(),
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)
* 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
//full spread decay checks, which can also shift its performance impact on the game.
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.
* 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 sectionY;
@ -118,10 +117,10 @@ public class LimboDecay {
/**
* 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);
if (canDecayBlock(block, world, pos)) {
world.setBlockState(pos, mod_pocketDim.blockLimbo);
world.setBlockState(pos, ModBlocks.blockLimbo.getDefaultState());
return true;
}
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.
*/
private boolean decayBlock(World world, BlockPos pos) {
private static boolean decayBlock(World world, BlockPos pos) {
int index;
IBlockState block = world.getBlockState(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.
*/
private boolean canDecayBlock(IBlockState block, World world, BlockPos pos) {
private static boolean canDecayBlock(IBlockState block, World world, BlockPos pos) {
if (world.isAirBlock(pos )) {
return false;
}

View file

@ -1,7 +1,10 @@
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.init.Biomes;
import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World;
@ -14,6 +17,7 @@ import net.minecraft.world.gen.structure.MapGenScatteredFeature;
import net.minecraftforge.common.BiomeManager;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@ -51,7 +55,7 @@ public class LimboGenerator implements IChunkGenerator
private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature();
/** 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 */
double[] noise3;
@ -78,9 +82,8 @@ public class LimboGenerator implements IChunkGenerator
}
//private CustomLimboPopulator spawner;
public LimboGenerator(World world, long seed, /*CustomLimboPopulator spawner*/) {
public LimboGenerator(World world, long seed /*CustomLimboPopulator spawner*/) {
this.worldObj = world;
BiomeManager
LimboGenerator.rand = new Random(seed);
this.noiseGen1 = new NoiseGeneratorOctaves(LimboGenerator.rand, 16); //base terrain
this.noiseGen2 = new NoiseGeneratorOctaves(LimboGenerator.rand, 16); //hillyness
@ -102,7 +105,7 @@ public class LimboGenerator implements IChunkGenerator
this.worldObj = world;
this.spawner = spawner;
//this.spawner = spawner;
}
@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
LimboGenerator.rand.setSeed(chunkX * 341873128712L + chunkZ * 132897987541L);
ChunkPrimer primer = new ChunkPrimer();
this.setBlocksInChunk(chunkX, chunkZ, primer);
this.scale(chunkX, chunkZ, primer);
Chunk chunk = new Chunk(this.worldObj, primer, chunkX, chunkZ);
chunk.generateSkylightMap();
@ -255,62 +258,70 @@ public class LimboGenerator implements IChunkGenerator
return par1ArrayOfDouble;
}
public void setBlocksInChunk(int x, int z, ChunkPrimer blocks) {
byte var4 = 4;
byte var5 = 16;
byte var6 = 19;
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);
public void scale(int x, int z, ChunkPrimer primer) { //Coursty of
// TODO: this:
this.biomesForGeneration = this.worldObj.getBiomeProvider().getBiomesForGeneration(this.biomesForGeneration, x * 4 - 2, z * 4 - 2, 10, 10);
this.noiseArray = this.initializeNoiseField(this.noiseArray, x * 4, 0, z * 4, 5, 17, 5);
for (int var10 = 0; var10 < var4; ++var10) {
for (int var11 = 0; var11 < var4; ++var11) {
for (int var12 = 0; var12 < var5; ++var12) {
double var13 = 0.125D;
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;
int xzSections = 4;
int xzSectionSize = 4;
int ySections = 16;
int ySectionSize = 8;
for (int var31 = 0; var31 < 8; ++var31) {
double var32 = 0.25D;
double var34 = var15;
double var36 = var17;
double var38 = (var19 - var15) * var32;
double var40 = (var21 - var17) * var32;
double xzScale = 1.0 / xzSectionSize;
double yScale = 1.0 / ySectionSize;
for (int sectionX = 0; sectionX < xzSections; ++sectionX) {
int xSectionPart = sectionX * xzSectionSize;
int i0__ = sectionX * (xzSections + 1);
int i1__ = (sectionX + 1) * (xzSections + 1);
for (int var42 = 0; var42 < 4; ++var42) {
int var43 = var42 + var10 * 4 << 11 | 0 + var11 * 4 << 7 | var12 * 8 + var31;
short var44 = 128;
var43 -= var44;
double var45 = 0.25D;
double var49 = (var36 - var34) * var45;
double var47 = var34 - var49;
for (int sectionZ = 0; sectionZ < xzSections; ++sectionZ) {
int zSectionPart = sectionZ * xzSectionSize;
int i0_0 = (i0__ + sectionZ) * (ySections + 1);
int i0_1 = (i0__ + sectionZ + 1) * (ySections + 1);
int i1_0 = (i1__ + sectionZ) * (ySections + 1);
int i1_1 = (i1__ + sectionZ + 1) * (ySections + 1);
for (int var51 = 0; var51 < 4; ++var51) {
if ((var47 += var49) > 0.0D) {
blocks[var43 += var44] = mod_pocketDim.blockLimbo;
} else if (var12 * 8 + var31 < var6) {
blocks[var43 += var44] = mod_pocketDim.blockDimWallPerm;
} else {
blocks[var43 += var44] = Blocks.air;
for (int sectionY = 0; sectionY < ySections; ++sectionY) {
int ySectionPart = sectionY * ySectionSize;
double v0y0 = this.noiseArray[i0_0 + sectionY];
double v0y1 = this.noiseArray[i0_1 + sectionY];
double v1y0 = this.noiseArray[i1_0 + sectionY];
double v1y1 = this.noiseArray[i1_1 + sectionY];
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;
var36 += var40;
vxy0 += dxy0;
vxy1 += dxy1;
}
var15 += var23;
var17 += var25;
var19 += var27;
var21 += var29;
v0y0 += d0y0;
v0y1 += d0y1;
v1y0 += d1y0;
v1y1 += d1y1;
}
}
}
@ -319,9 +330,7 @@ public class LimboGenerator implements IChunkGenerator
@Override
public List<Biome.SpawnListEntry> getPossibleCreatures(EnumCreatureType par1EnumCreatureType, BlockPos pos) {
Biome biomegenbase = this.worldObj.getBiomeForCoordsBody(pos);
return biomegenbase == Biomes.SWAMPLAND && par1EnumCreatureType == EnumCreatureType.MONSTER && this.scatteredFeatureGenerator.isInsideStructure(pos) ? this.scatteredFeatureGenerator.getScatteredFeatureSpawnList() : biomegenbase.getSpawnableList(par1EnumCreatureType);
return new ArrayList<Biome.SpawnListEntry>();
}
@Nullable

View file

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

View file

@ -1,7 +1,60 @@
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.
*/
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.util.math.BlockPos;
@ -9,6 +9,7 @@ import net.minecraft.world.chunk.ChunkPrimer;
import net.minecraft.world.chunk.IChunkGenerator;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
public class PocketGenerator implements IChunkGenerator {
@ -46,7 +47,7 @@ public class PocketGenerator implements IChunkGenerator {
@Override
public List<Biome.SpawnListEntry> getPossibleCreatures(EnumCreatureType creatureType, BlockPos pos) {
return null;
return new ArrayList<Biome.SpawnListEntry>();
}
@Nullable

View file

@ -1,12 +1,97 @@
package com.zixiken.dimdoors.world.pocket;
import com.zixiken.dimdoors.client.CloudRenderBlank;
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.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 {
//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
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;
}
}