diff --git a/src/main/java/com/zixiken/dimdoors/DDProxyCommon.java b/src/main/java/com/zixiken/dimdoors/DDProxyCommon.java index 0c7cde86..e07eb114 100644 --- a/src/main/java/com/zixiken/dimdoors/DDProxyCommon.java +++ b/src/main/java/com/zixiken/dimdoors/DDProxyCommon.java @@ -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 { diff --git a/src/main/java/com/zixiken/dimdoors/DimDoors.java b/src/main/java/com/zixiken/dimdoors/DimDoors.java index e43c74ef..c2a7b97c 100644 --- a/src/main/java/com/zixiken/dimdoors/DimDoors.java +++ b/src/main/java/com/zixiken/dimdoors/DimDoors.java @@ -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()); diff --git a/src/main/java/com/zixiken/dimdoors/TeleportCommand.java b/src/main/java/com/zixiken/dimdoors/TeleportCommand.java new file mode 100644 index 00000000..bfce7169 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/TeleportCommand.java @@ -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 "; + } + + @Override + public List 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))); + + } + } +} diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BlockLimbo.java b/src/main/java/com/zixiken/dimdoors/blocks/BlockLimbo.java new file mode 100644 index 00000000..a567eb46 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/blocks/BlockLimbo.java @@ -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); + } + } +} diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java b/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java index 09e807a8..871bd9bf 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java @@ -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... diff --git a/src/main/java/com/zixiken/dimdoors/blocks/ModBlocks.java b/src/main/java/com/zixiken/dimdoors/blocks/ModBlocks.java index f88cf0ac..4795f25e 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/ModBlocks.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/ModBlocks.java @@ -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()); } } diff --git a/src/main/java/com/zixiken/dimdoors/shared/TeleportHelper.java b/src/main/java/com/zixiken/dimdoors/shared/TeleportHelper.java index 47e63b58..c8cbd37e 100644 --- a/src/main/java/com/zixiken/dimdoors/shared/TeleportHelper.java +++ b/src/main/java/com/zixiken/dimdoors/shared/TeleportHelper.java @@ -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."); diff --git a/src/main/java/com/zixiken/dimdoors/world/DimDoorDimensions.java b/src/main/java/com/zixiken/dimdoors/world/DimDoorDimensions.java index 65bc4e78..0034db58 100644 --- a/src/main/java/com/zixiken/dimdoors/world/DimDoorDimensions.java +++ b/src/main/java/com/zixiken/dimdoors/world/DimDoorDimensions.java @@ -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) { diff --git a/src/main/java/com/zixiken/dimdoors/world/limbo/LimboBiome.java b/src/main/java/com/zixiken/dimdoors/world/limbo/LimboBiome.java index cddb0ebc..5a165704 100644 --- a/src/main/java/com/zixiken/dimdoors/world/limbo/LimboBiome.java +++ b/src/main/java/com/zixiken/dimdoors/world/limbo/LimboBiome.java @@ -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"); diff --git a/src/main/java/com/zixiken/dimdoors/world/limbo/LimboDecay.java b/src/main/java/com/zixiken/dimdoors/world/limbo/LimboDecay.java index cfb5bb37..e47482e6 100644 --- a/src/main/java/com/zixiken/dimdoors/world/limbo/LimboDecay.java +++ b/src/main/java/com/zixiken/dimdoors/world/limbo/LimboDecay.java @@ -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; } diff --git a/src/main/java/com/zixiken/dimdoors/world/limbo/LimboGenerator.java b/src/main/java/com/zixiken/dimdoors/world/limbo/LimboGenerator.java index fb6d845d..193fcaf9 100644 --- a/src/main/java/com/zixiken/dimdoors/world/limbo/LimboGenerator.java +++ b/src/main/java/com/zixiken/dimdoors/world/limbo/LimboGenerator.java @@ -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 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(); } @Nullable diff --git a/src/main/java/com/zixiken/dimdoors/world/limbo/WorldProviderLimbo.java b/src/main/java/com/zixiken/dimdoors/world/limbo/WorldProviderLimbo.java index 99faf435..8e8d59dc 100644 --- a/src/main/java/com/zixiken/dimdoors/world/limbo/WorldProviderLimbo.java +++ b/src/main/java/com/zixiken/dimdoors/world/limbo/WorldProviderLimbo.java @@ -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() { diff --git a/src/main/java/com/zixiken/dimdoors/world/personalpocket/WorldProviderPersonalPocket.java b/src/main/java/com/zixiken/dimdoors/world/personalpocket/WorldProviderPersonalPocket.java index 830a6c40..c9d4a1e8 100644 --- a/src/main/java/com/zixiken/dimdoors/world/personalpocket/WorldProviderPersonalPocket.java +++ b/src/main/java/com/zixiken/dimdoors/world/personalpocket/WorldProviderPersonalPocket.java @@ -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; + } } diff --git a/src/main/java/com/zixiken/dimdoors/world/PocketGenerator.java b/src/main/java/com/zixiken/dimdoors/world/pocket/PocketGenerator.java similarity index 92% rename from src/main/java/com/zixiken/dimdoors/world/PocketGenerator.java rename to src/main/java/com/zixiken/dimdoors/world/pocket/PocketGenerator.java index afc5ef50..952a6795 100644 --- a/src/main/java/com/zixiken/dimdoors/world/PocketGenerator.java +++ b/src/main/java/com/zixiken/dimdoors/world/pocket/PocketGenerator.java @@ -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 getPossibleCreatures(EnumCreatureType creatureType, BlockPos pos) { - return null; + return new ArrayList(); } @Nullable diff --git a/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPocket.java b/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPocket.java index af7899df..124b44b1 100644 --- a/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPocket.java +++ b/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPocket.java @@ -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; } } diff --git a/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPublicPocket.java b/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPublicPocket.java new file mode 100644 index 00000000..2507ccb6 --- /dev/null +++ b/src/main/java/com/zixiken/dimdoors/world/pocket/WorldProviderPublicPocket.java @@ -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; + } +}