Jump to content

1.7.10 Dimension Issue


cader1114

Recommended Posts

I am having some dimension issues and I can't figure out why. The code will be posted. Thanks in advance. Also, just to clarify, the problem is the fact that when I go through the portal it brings me to the nether instead of my custom dimension.

 

Chunk Provider:

 

package com.cader1114.dimension;

import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.DUNGEON;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.ICE;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAKE;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAVA;

import java.util.List;
import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.BlockFalling;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.init.Blocks;
import net.minecraft.util.IProgressUpdate;
import net.minecraft.world.ChunkPosition;
import net.minecraft.world.SpawnerAnimals;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.ChunkProviderGenerate;
import net.minecraft.world.gen.MapGenBase;
import net.minecraft.world.gen.MapGenCaves;
import net.minecraft.world.gen.MapGenRavine;
import net.minecraft.world.gen.NoiseGeneratorOctaves;
import net.minecraft.world.gen.feature.WorldGenDungeons;
import net.minecraft.world.gen.feature.WorldGenLakes;
import net.minecraft.world.gen.structure.MapGenMineshaft;
import net.minecraft.world.gen.structure.MapGenScatteredFeature;
import net.minecraft.world.gen.structure.MapGenStronghold;
import net.minecraft.world.gen.structure.MapGenVillage;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
import net.minecraftforge.event.terraingen.TerrainGen;

public class ChunkProviderDimensionKryptonite implements IChunkProvider {

   public World worldObj;
   private Random rand;
   private NoiseGeneratorOctaves noiseGen1;
   private NoiseGeneratorOctaves noiseGen2;
   private NoiseGeneratorOctaves noiseGen3;
   private NoiseGeneratorOctaves noiseGen4;
   public NoiseGeneratorOctaves noiseGen5;
   public NoiseGeneratorOctaves noiseGen6;
   public NoiseGeneratorOctaves mobSpawnerNoise;
   private final boolean mapFeaturesEnabled;
   
   /** Holds Cave Generator */
   private MapGenBase caveGenerator = new MapGenCaves();

   /** Holds Stronghold Generator */
   private MapGenStronghold strongholdGenerator = new MapGenStronghold();

   /** Holds Village Generator */
   private MapGenVillage villageGenerator = new MapGenVillage();

   /** Holds Mineshaft Generator */
   private MapGenMineshaft mineshaftGenerator = new MapGenMineshaft();
   private MapGenScatteredFeature scatteredFeatureGenerator = new MapGenScatteredFeature();

   /** Holds ravine generator */
   private MapGenBase ravineGenerator = new MapGenRavine();

   /** The biomes that are used to generate the chunk */
   private BiomeGenBase[] biomesForGeneration;
   

   /*
   {
   caveGenerator = TerrainGen.getModdedMapGen(caveGenerator, CAVE);
      strongholdGenerator = (MapGenStronghold) TerrainGen.getModdedMapGen(strongholdGenerator, STRONGHOLD);
      villageGenerator = (MapGenVillage) TerrainGen.getModdedMapGen(villageGenerator, VILLAGE);
      mineshaftGenerator = (MapGenMineshaft) TerrainGen.getModdedMapGen(mineshaftGenerator, MINESHAFT);
      scatteredFeatureGenerator = (MapGenScatteredFeature) TerrainGen.getModdedMapGen(scatteredFeatureGenerator, SCATTERED_FEATURE);
      ravineGenerator = TerrainGen.getModdedMapGen(ravineGenerator, RAVINE);
   }
   */


   public ChunkProviderDimensionKryptonite(World worldObj, long seed, boolean mapFeatures) {
      this.worldObj = worldObj;
      this.mapFeaturesEnabled = mapFeatures;
      this.rand = new Random(seed);
      this.noiseGen1 = new NoiseGeneratorOctaves(this.rand, 16);
      this.noiseGen2 = new NoiseGeneratorOctaves(this.rand, 16);
      this.noiseGen3 = new NoiseGeneratorOctaves(this.rand, ;
      this.noiseGen4 = new NoiseGeneratorOctaves(this.rand, 4);
      this.noiseGen5 = new NoiseGeneratorOctaves(this.rand, 10);
      this.noiseGen6 = new NoiseGeneratorOctaves(this.rand, 16);
      this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, ;
      
      
   }

   @Override
   public boolean chunkExists(int var1, int var2) {
      // TODO Auto-generated method stub
      return false;
   }

   @Override
   public Chunk provideChunk(int var1, int var2) {
      this.rand.setSeed((long) var1 * 341873128712L + (long) var2 * 132897987541L);
      byte[] abyte = new byte[32768];
      //this.generateTerrain(var1, var2, abyte);
      this.biomesForGeneration = this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, var1 * 16, var2 * 16, 16, 16);
      //this.caveGenerator.generate(this, this.worldObj, var1, var2, abyte);
      //this.ravineGenerator.generate(this, this.worldObj, var1, var2, abyte);

      if (this.mapFeaturesEnabled) {
         //this.scatteredFeatureGenerator.generate(this, this.worldObj, var1, var2, abyte);
      }

      Chunk chunk = new Chunk(this.worldObj, var1, var2);
      byte[] abyte1 = chunk.getBiomeArray();

      for (int k = 0; k < abyte1.length; ++k) {
         abyte1[k] = (byte) this.biomesForGeneration[k].biomeID;
      }

      chunk.generateSkylightMap();
      return chunk;
   }

   @Override
   public Chunk loadChunk(int var1, int var2) {
      // TODO Auto-generated method stub
      return this.provideChunk(var1, var2);
   }

   @Override
   public void populate(IChunkProvider var1, int var2, int var3) {
      // TODO Auto-generated method stub

   }

   @Override
   public boolean saveChunks(boolean var1, IProgressUpdate var2) {
      // TODO Auto-generated method stub
      return false;
   }

   @Override
   public boolean unloadQueuedChunks() {
      // TODO Auto-generated method stub
      return false;
   }

   @Override
   public boolean canSave() {
      // TODO Auto-generated method stub
      return false;
   }

   @Override
   public String makeString() {
      // TODO Auto-generated method stub
      return "random text";
   }

   @Override
   public List getPossibleCreatures(EnumCreatureType var1, int var2, int var3,
         int var4) {
      // TODO Auto-generated method stub
      return null;
   }

   @Override
   public ChunkPosition func_147416_a(World var1, String var2, int var3,
         int var4, int var5) {
      // TODO Auto-generated method stub
      return null;
   }

   @Override
   public int getLoadedChunkCount() {
      // TODO Auto-generated method stub
      return 0;
   }
   
   @Override
   public void recreateStructures(int par1, int par2) {
      /*
         if (this.mapFeaturesEnabled) {
            this.mineshaftGenerator.generate(this, this.worldObj, par1, par2, (byte[]) null);
            this.villageGenerator.generate(this, this.worldObj, par1, par2, (byte[]) null);
            this.strongholdGenerator.generate(this, this.worldObj, par1, par2, (byte[]) null);
            this.scatteredFeatureGenerator.generate(this, this.worldObj, par1, par2, (byte[]) null);
         }
   */
   }
   
   

   @Override
   public void saveExtraData() {
      // TODO Auto-generated method stub

   }

}

 

World Provider:

 

package com.cader1114.dimension;

import net.minecraft.world.WorldProvider;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.WorldChunkManagerHell;
import net.minecraft.world.chunk.IChunkProvider;

public class WorldProviderKryptonite extends WorldProvider{

public void registerWorldChunkManager(){
	this.worldChunkMgr = new WorldChunkManagerHell(BiomeGenBase.desertHills, 0.8F);
	this.dimensionId = dimensionRegistry.dimensionId;
}

public IChunkProvider createChunkGeneration(){
	return new com.cader1114.dimension.ChunkProviderDimensionKryptonite(worldObj, worldObj.getSeed(), true);
}

@Override
public String getDimensionName() {
	return "Kryptonite";
}

}

 

DimensionRegistry:

 

package com.cader1114.dimension;

import net.minecraftforge.common.DimensionManager;

public class dimensionRegistry {

public static void mainRegistry(){
	registerDimension();
}

public static final int dimensionId=8;

public static void registerDimension(){
	DimensionManager.registerProviderType(dimensionRegistry.dimensionId, WorldProviderKryptonite.class, true);
	DimensionManager.registerDimension(dimensionRegistry.dimensionId, dimensionRegistry.dimensionId);

}

}

 

Portal Block:

 

package com.cader1114.blocks;

import java.util.Random;

import com.cader1114.MainRegistry;
import com.cader1114.dimension.dimensionRegistry;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPortal;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;

public class BlockKryptonitePortal extends BlockPortal {


public BlockKryptonitePortal() {
	super();

}

public void updateTick(World world, int x, int y, int z, Random rand){

}

public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z){
	return null;
}

public boolean renderAsNormalBlock(){
	return false;
}

public void onNeighborBlockChange(World world, int x, int y, int z, Block block){

	byte b0 = 0;
	byte b1 = 1;

	if(world.getBlock(x - 1, y, z) == MainRegistry.blockKryptoniteOre || world.getBlock(x + 1, y, z) == MainRegistry.blockKryptoniteOre){
		b0 = 1;
		b1 = 0;
	}

	int i1;

	for(i1 = y; world.getBlock(x, i1 - 1, z) == this; --i1){
		;
	}
	if(world.getBlock(x, i1 - 1, z) != MainRegistry.blockKryptoniteOre){
		world.setBlockToAir(x, y, z);
	}else{
		int j1;

		for(j1 = 1; j1 < 4 && world.getBlock(x, i1 + j1, z) == this; ++j1){
			;
		}
		if(j1 == 3 && world.getBlock(x, i1 + j1, z) == MainRegistry.blockKryptoniteOre){
			boolean flag = world.getBlock(x - 1, y, z) == this || world.getBlock(x + 1, y, z) == this;
			boolean flag1 = world.getBlock(x, y, z - 1) == this || world.getBlock(x, y, z + 1) == this;

			if(flag && flag1){
				world.setBlockToAir(x, y, z);
			}else{
				if((world.getBlock(x+b0, y, z+b1) != MainRegistry.blockKryptoniteOre || world.getBlock(x-b0, y, z-b1) != this) && (world.getBlock(x-b0, y, z-b1) !=MainRegistry.blockKryptoniteOre || world.getBlock(x+b0, y, z+b1) != this)){
					world.setBlockToAir(x, y, z);
				}
			}
		}else{
			world.setBlockToAir(x, y, z);
		}
	}
}

public int quantityDropped(Random rand){
	return 0;

}

public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity, EntityPlayerMP player){
	Side sidex = FMLCommonHandler.instance().getEffectiveSide();
	if (sidex == Side.SERVER){
	if (player instanceof EntityPlayerMP){
	System.out.println("after instace of PlayerMP");	
	WorldServer worldserver = (WorldServer)world;
	EntityPlayerMP playerMP = (EntityPlayerMP)player;
	if (player.ridingEntity == null && player.riddenByEntity == null && player instanceof EntityPlayer){
		FMLCommonHandler.instance().getMinecraftServerInstance();
		MinecraftServer mServer = MinecraftServer.getServer();
		playerMP.mcServer.getConfigurationManager().transferPlayerToDimension(playerMP, 8, new com.cader1114.blocks.TeleporterKryptonite(mServer.worldServerForDimension(dimensionRegistry.dimensionId)));
				}
			}
		}	
	}

public boolean tryToCreatePortal(World world, int x, int y, int z){
	byte b0 = 0;
	byte b1 = 0;
	if(world.getBlock(x - 1, y, z) == MainRegistry.blockKryptoniteOre || world.getBlock(x + 1, y, z) == MainRegistry.blockKryptoniteOre){
		b0 = 1;
	}

	if(world.getBlock(x, y, z - 1) == MainRegistry.blockKryptoniteOre || world.getBlock(x, y, z + 1) == MainRegistry.blockKryptoniteOre){
		b1 = 1;
	}

	if(b0 == b1){
		return true;

	}
	else{
		if(world.getBlock(x - b0, y, z - b1) == Blocks.air){
			x -= b0;
			z -= b1;
		}
		int l = 0;
		int il;
		for(l = -l;  l <= 2; ++l){
			for(il = -l; il <= 3; ++il){
				boolean flag = l == -1 || l == 2 || il == -1 || il == 3;
				if(l != -1 && l != 2 || il != -1 && il != 3){
					Block j1 = world.getBlock(x + b0 * l, y + il, z + b1 * l);
							if(flag){
								if(j1 !=MainRegistry.blockKryptoniteOre){
									return true;
								}
							}
							else if(j1 != Blocks.air && j1 != Blocks.fire){
								return true;
							}
				}

			}
		}
		for(l = 0; l < 2; ++l){
			for(il = 0; il < 3; ++il){
				world.setBlock(x + b0 * l, y + il, z + b1 * l, MainRegistry.blockKryptonitePortal, 0, 2);
			}
		}
	}
	return true;
}

}

 

Teleporter Block:

 

package com.cader1114.blocks;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import com.cader1114.MainRegistry;

import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.init.Blocks;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.Direction;
import net.minecraft.util.LongHashMap;
import net.minecraft.util.MathHelper;
import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.Teleporter;
import net.minecraft.world.WorldServer;

public class TeleporterKryptonite extends Teleporter {
    
private final WorldServer worldServerInstance;
    /**
     * A private Random() function in Teleporter
     */
    private final Random random;
    /**
     * Stores successful portal placement locations for rapid lookup.
     */
    private final LongHashMap destinationCoordinateCache = new LongHashMap();
    /**
     * A list of valid keys for the destinationCoordainteCache. These are based on the X & Z of the players initial
     * location.
     */
    private final List destinationCoordinateKeys = new ArrayList();
    private static final String __OBFID = "CL_00000153";



    
    public TeleporterKryptonite(WorldServer par1WorldServer){
        super(par1WorldServer);
        this.worldServerInstance = par1WorldServer;
        this.random = new Random(par1WorldServer.getSeed());
    }

    /**
     * Place an entity in a nearby portal, creating one if necessary.
     */
    public void placeInPortal(Entity par1Entity, double par2, double par4, double par6, float par8)
    {
        if (this.worldServerInstance.provider.dimensionId != 1)
        {
            if (!this.placeInExistingPortal(par1Entity, par2, par4, par6, par8))
            {
                this.makePortal(par1Entity);
                this.placeInExistingPortal(par1Entity, par2, par4, par6, par8);
            }
        }
        else
        {
            int i = MathHelper.floor_double(par1Entity.posX);
            int j = MathHelper.floor_double(par1Entity.posY) - 1;
            int k = MathHelper.floor_double(par1Entity.posZ);
            byte b0 = 1;
            byte b1 = 0;

            for (int l = -2; l <= 2; ++l)
            {
                for (int i1 = -2; i1 <= 2; ++i1)
                {
                    for (int j1 = -1; j1 < 3; ++j1)
                    {
                        int k1 = i + i1 * b0 + l * b1;
                        int l1 = j + j1;
                        int i2 = k + i1 * b1 - l * b0;
                        boolean flag = j1 < 0;
                        this.worldServerInstance.setBlock(k1, l1, i2, flag ? MainRegistry.blockKryptoniteOre : Blocks.air);
                    }
                }
            }

            par1Entity.setLocationAndAngles((double)i, (double)j, (double)k, par1Entity.rotationYaw, 0.0F);
            par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D;
        }
    }

    /**
     * Place an entity in a nearby portal which already exists.
     */
    public boolean placeInExistingPortal(Entity par1Entity, double par2, double par4, double par6, float par8)
    {
        short short1 = 128;
        double d3 = -1.0D;
        int i = 0;
        int j = 0;
        int k = 0;
        int l = MathHelper.floor_double(par1Entity.posX);
        int i1 = MathHelper.floor_double(par1Entity.posZ);
        long j1 = ChunkCoordIntPair.chunkXZ2Int(l, i1);
        boolean flag = true;
        double d7;
        int l3;

        if (this.destinationCoordinateCache.containsItem(j1))
        {
            Teleporter.PortalPosition portalposition = (Teleporter.PortalPosition)this.destinationCoordinateCache.getValueByKey(j1);
            d3 = 0.0D;
            i = portalposition.posX;
            j = portalposition.posY;
            k = portalposition.posZ;
            portalposition.lastUpdateTime = this.worldServerInstance.getTotalWorldTime();
            flag = false;
        }
        else
        {
            for (l3 = l - short1; l3 <= l + short1; ++l3)
            {
                double d4 = (double)l3 + 0.5D - par1Entity.posX;

                for (int l1 = i1 - short1; l1 <= i1 + short1; ++l1)
                {
                    double d5 = (double)l1 + 0.5D - par1Entity.posZ;

                    for (int i2 = this.worldServerInstance.getActualHeight() - 1; i2 >= 0; --i2)
                    {
                        if (this.worldServerInstance.getBlock(l3, i2, l1) == MainRegistry.blockKryptonitePortal)
                        {
                            while (this.worldServerInstance.getBlock(l3, i2 - 1, l1) == MainRegistry.blockKryptonitePortal)
                            {
                                --i2;
                            }

                            d7 = (double)i2 + 0.5D - par1Entity.posY;
                            double d8 = d4 * d4 + d7 * d7 + d5 * d5;

                            if (d3 < 0.0D || d8 < d3)
                            {
                                d3 = d8;
                                i = l3;
                                j = i2;
                                k = l1;
                            }
                        }
                    }
                }
            }
        }

        if (d3 >= 0.0D)
        {
            if (flag)
            {
                this.destinationCoordinateCache.add(j1, new Teleporter.PortalPosition(i, j, k, this.worldServerInstance.getTotalWorldTime()));
                this.destinationCoordinateKeys.add(Long.valueOf(j1));
            }

            double d11 = (double)i + 0.5D;
            double d6 = (double)j + 0.5D;
            d7 = (double)k + 0.5D;
            int i4 = -1;

            if (this.worldServerInstance.getBlock(i - 1, j, k) == MainRegistry.blockKryptonitePortal)
            {
                i4 = 2;
            }

            if (this.worldServerInstance.getBlock(i + 1, j, k) == MainRegistry.blockKryptonitePortal)
            {
                i4 = 0;
            }

            if (this.worldServerInstance.getBlock(i, j, k - 1) == MainRegistry.blockKryptonitePortal)
            {
                i4 = 3;
            }

            if (this.worldServerInstance.getBlock(i, j, k + 1) == MainRegistry.blockKryptonitePortal)
            {
                i4 = 1;
            }

            int j2 = par1Entity.getTeleportDirection();

            if (i4 > -1)
            {
                int k2 = Direction.rotateLeft[i4];
                int l2 = Direction.offsetX[i4];
                int i3 = Direction.offsetZ[i4];
                int j3 = Direction.offsetX[k2];
                int k3 = Direction.offsetZ[k2];
                boolean flag1 = !this.worldServerInstance.isAirBlock(i + l2 + j3, j, k + i3 + k3) || !this.worldServerInstance.isAirBlock(i + l2 + j3, j + 1, k + i3 + k3);
                boolean flag2 = !this.worldServerInstance.isAirBlock(i + l2, j, k + i3) || !this.worldServerInstance.isAirBlock(i + l2, j + 1, k + i3);

                if (flag1 && flag2)
                {
                    i4 = Direction.rotateOpposite[i4];
                    k2 = Direction.rotateOpposite[k2];
                    l2 = Direction.offsetX[i4];
                    i3 = Direction.offsetZ[i4];
                    j3 = Direction.offsetX[k2];
                    k3 = Direction.offsetZ[k2];
                    l3 = i - j3;
                    d11 -= (double)j3;
                    int k1 = k - k3;
                    d7 -= (double)k3;
                    flag1 = !this.worldServerInstance.isAirBlock(l3 + l2 + j3, j, k1 + i3 + k3) || !this.worldServerInstance.isAirBlock(l3 + l2 + j3, j + 1, k1 + i3 + k3);
                    flag2 = !this.worldServerInstance.isAirBlock(l3 + l2, j, k1 + i3) || !this.worldServerInstance.isAirBlock(l3 + l2, j + 1, k1 + i3);
                }

                float f1 = 0.5F;
                float f2 = 0.5F;

                if (!flag1 && flag2)
                {
                    f1 = 1.0F;
                }
                else if (flag1 && !flag2)
                {
                    f1 = 0.0F;
                }
                else if (flag1 && flag2)
                {
                    f2 = 0.0F;
                }

                d11 += (double)((float)j3 * f1 + f2 * (float)l2);
                d7 += (double)((float)k3 * f1 + f2 * (float)i3);
                float f3 = 0.0F;
                float f4 = 0.0F;
                float f5 = 0.0F;
                float f6 = 0.0F;

                if (i4 == j2)
                {
                    f3 = 1.0F;
                    f4 = 1.0F;
                }
                else if (i4 == Direction.rotateOpposite[j2])
                {
                    f3 = -1.0F;
                    f4 = -1.0F;
                }
                else if (i4 == Direction.rotateRight[j2])
                {
                    f5 = 1.0F;
                    f6 = -1.0F;
                }
                else
                {
                    f5 = -1.0F;
                    f6 = 1.0F;
                }

                double d9 = par1Entity.motionX;
                double d10 = par1Entity.motionZ;
                par1Entity.motionX = d9 * (double)f3 + d10 * (double)f6;
                par1Entity.motionZ = d9 * (double)f5 + d10 * (double)f4;
                par1Entity.rotationYaw = par8 - (float)(j2 * 90) + (float)(i4 * 90);
            }
            else
            {
                par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D;
            }

            par1Entity.setLocationAndAngles(d11, d6, d7, par1Entity.rotationYaw, par1Entity.rotationPitch);
            return true;
        }
        else
        {
            return true;
        }
    }

    public boolean makePortal(Entity par1Entity)
    {
        byte b0 = 16;
        double d0 = -1.0D;
        int i = MathHelper.floor_double(par1Entity.posX);
        int j = MathHelper.floor_double(par1Entity.posY);
        int k = MathHelper.floor_double(par1Entity.posZ);
        int l = i;
        int i1 = j;
        int j1 = k;
        int k1 = 0;
        int l1 = this.random.nextInt(4);
        int i2;
        double d1;
        double d2;
        int k2;
        int i3;
        int k3;
        int j3;
        int i4;
        int l3;
        int k4;
        int j4;
        int i5;
        int l4;
        double d3;
        double d4;

        for (i2 = i - b0; i2 <= i + b0; ++i2)
        {
            d1 = (double)i2 + 0.5D - par1Entity.posX;

            for (k2 = k - b0; k2 <= k + b0; ++k2)
            {
                d2 = (double)k2 + 0.5D - par1Entity.posZ;
                label274:

                for (i3 = this.worldServerInstance.getActualHeight() - 1; i3 >= 0; --i3)
                {
                    if (this.worldServerInstance.isAirBlock(i2, i3, k2))
                    {
                        while (i3 > 0 && this.worldServerInstance.isAirBlock(i2, i3 - 1, k2))
                        {
                            --i3;
                        }

                        for (j3 = l1; j3 < l1 + 4; ++j3)
                        {
                            k3 = j3 % 2;
                            l3 = 1 - k3;

                            if (j3 % 4 >= 2)
                            {
                                k3 = -k3;
                                l3 = -l3;
                            }

                            for (i4 = 0; i4 < 3; ++i4)
                            {
                                for (j4 = 0; j4 < 4; ++j4)
                                {
                                    for (k4 = -1; k4 < 4; ++k4)
                                    {
                                        l4 = i2 + (j4 - 1) * k3 + i4 * l3;
                                        i5 = i3 + k4;
                                        int j5 = k2 + (j4 - 1) * l3 - i4 * k3;

                                        if (k4 < 0 && !this.worldServerInstance.getBlock(l4, i5, j5).getMaterial().isSolid() || k4 >= 0 && !this.worldServerInstance.isAirBlock(l4, i5, j5))
                                        {
                                            continue label274;
                                        }
                                    }
                                }
                            }

                            d4 = (double)i3 + 0.5D - par1Entity.posY;
                            d3 = d1 * d1 + d4 * d4 + d2 * d2;

                            if (d0 < 0.0D || d3 < d0)
                            {
                                d0 = d3;
                                l = i2;
                                i1 = i3;
                                j1 = k2;
                                k1 = j3 % 4;
                            }
                        }
                    }
                }
            }
        }

        if (d0 < 0.0D)
        {
            for (i2 = i - b0; i2 <= i + b0; ++i2)
            {
                d1 = (double)i2 + 0.5D - par1Entity.posX;

                for (k2 = k - b0; k2 <= k + b0; ++k2)
                {
                    d2 = (double)k2 + 0.5D - par1Entity.posZ;
                    label222:

                    for (i3 = this.worldServerInstance.getActualHeight() - 1; i3 >= 0; --i3)
                    {
                        if (this.worldServerInstance.isAirBlock(i2, i3, k2))
                        {
                            while (i3 > 0 && this.worldServerInstance.isAirBlock(i2, i3 - 1, k2))
                            {
                                --i3;
                            }

                            for (j3 = l1; j3 < l1 + 2; ++j3)
                            {
                                k3 = j3 % 2;
                                l3 = 1 - k3;

                                for (i4 = 0; i4 < 4; ++i4)
                                {
                                    for (j4 = -1; j4 < 4; ++j4)
                                    {
                                        k4 = i2 + (i4 - 1) * k3;
                                        l4 = i3 + j4;
                                        i5 = k2 + (i4 - 1) * l3;

                                        if (j4 < 0 && !this.worldServerInstance.getBlock(k4, l4, i5).getMaterial().isSolid() || j4 >= 0 && !this.worldServerInstance.isAirBlock(k4, l4, i5))
                                        {
                                            continue label222;
                                        }
                                    }
                                }

                                d4 = (double)i3 + 0.5D - par1Entity.posY;
                                d3 = d1 * d1 + d4 * d4 + d2 * d2;

                                if (d0 < 0.0D || d3 < d0)
                                {
                                    d0 = d3;
                                    l = i2;
                                    i1 = i3;
                                    j1 = k2;
                                    k1 = j3 % 2;
                                }
                            }
                        }
                    }
                }
            }
        }

        int k5 = l;
        int j2 = i1;
        k2 = j1;
        int l5 = k1 % 2;
        int l2 = 1 - l5;

        if (k1 % 4 >= 2)
        {
            l5 = -l5;
            l2 = -l2;
        }

        boolean flag;

        if (d0 < 0.0D)
        {
            if (i1 < 70)
            {
                i1 = 70;
            }

            if (i1 > this.worldServerInstance.getActualHeight() - 10)
            {
                i1 = this.worldServerInstance.getActualHeight() - 10;
            }

            j2 = i1;

            for (i3 = -1; i3 <= 1; ++i3)
            {
                for (j3 = 1; j3 < 3; ++j3)
                {
                    for (k3 = -1; k3 < 3; ++k3)
                    {
                        l3 = k5 + (j3 - 1) * l5 + i3 * l2;
                        i4 = j2 + k3;
                        j4 = k2 + (j3 - 1) * l2 - i3 * l5;
                        flag = k3 < 0;
                        this.worldServerInstance.setBlock(l3, i4, j4, flag ? MainRegistry.blockKryptoniteOre : Blocks.air);
                    }
                }
            }
        }

        for (i3 = 0; i3 < 4; ++i3)
        {
            for (j3 = 0; j3 < 4; ++j3)
            {
                for (k3 = -1; k3 < 4; ++k3)
                {
                    l3 = k5 + (j3 - 1) * l5;
                    i4 = j2 + k3;
                    j4 = k2 + (j3 - 1) * l2;
                    flag = j3 == 0 || j3 == 3 || k3 == -1 || k3 == 3;
                    this.worldServerInstance.setBlock(l3, i4, j4, (Block)(flag ? MainRegistry.blockKryptoniteOre : MainRegistry.blockKryptonitePortal), 0, 2);
                }
            }

            for (j3 = 0; j3 < 4; ++j3)
            {
                for (k3 = -1; k3 < 4; ++k3)
                {
                    l3 = k5 + (j3 - 1) * l5;
                    i4 = j2 + k3;
                    j4 = k2 + (j3 - 1) * l2;
                    this.worldServerInstance.notifyBlocksOfNeighborChange(l3, i4, j4, this.worldServerInstance.getBlock(l3, i4, j4));
                }
            }
        }

        return true;
    }

    /**
     * called periodically to remove out-of-date portal locations from the cache list. Argument par1 is a
     * WorldServer.getTotalWorldTime() value.
     */
    public void removeStalePortalLocations(long par1)
    {
        if (par1 % 100L == 0L)
        {
            Iterator iterator = this.destinationCoordinateKeys.iterator();
            long j = par1 - 600L;

            while (iterator.hasNext())
            {
                Long olong = (Long)iterator.next();
                Teleporter.PortalPosition portalposition = (Teleporter.PortalPosition)this.destinationCoordinateCache.getValueByKey(olong.longValue());

                if (portalposition == null || portalposition.lastUpdateTime < j)
                {
                    iterator.remove();
                    this.destinationCoordinateCache.remove(olong.longValue());
                }
            }
        }
    }

    public class PortalPosition extends ChunkCoordinates
    {
        /**
         * The worldtime at which this PortalPosition was last verified
         */
        public long lastUpdateTime;
        private static final String __OBFID = "CL_00000154";

        public PortalPosition(int par2, int par3, int par4, long par5)
        {
            super(par2, par3, par4);
            this.lastUpdateTime = par5;
        }
    }
}

 

I believe thats all the classes. Thanks in advance

Link to comment
Share on other sites

Is it actually the Nether, or does it only look like it? You seem to be using the WorldChunkManagerHell, so maybe that causes the issue. Also, if you copy vanilla code, rename the variables and methods, it will make it much easier to read and spot the problem.

 

Note: I have never worked with new dimensions before, so don't quote me on that.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.