Jump to content

[1.7.10]New Dimension crashing on teleport


LogicTechCorp

Recommended Posts

Every time I teleport to my dimension the game crashes and when I load it back up I am in my dimension with a half made portal and when I teleport back the same thing happens.

 

Here is a picture, the crash report and the two classes that are in the crash report.

 

width=800 height=449https://dl.dropboxusercontent.com/u/248986518/2014-07-20_13.39.51.png[/img]

 

---- Minecraft Crash Report ----
// Would you like a cupcake?

Time: 7/20/14 1:40 PM
Description: Colliding entity with block

java.lang.NullPointerException: Colliding entity with block
at net.minecraft.world.chunk.storage.ExtendedBlockStorage.func_150818_a(ExtendedBlockStorage.java:96)
at net.minecraft.world.chunk.Chunk.func_150807_a(Chunk.java:667)
at net.minecraft.world.World.setBlock(World.java:515)
at com.logictechcorp.orizon.world.TeleporterDreamscape.makePortal(TeleporterDreamscape.java:455)
at com.logictechcorp.orizon.world.TeleporterDreamscape.placeInPortal(TeleporterDreamscape.java:44)
at net.minecraft.server.management.ServerConfigurationManager.transferEntityToWorld(ServerConfigurationManager.java:629)
at net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension(ServerConfigurationManager.java:533)
at com.logictechcorp.orizon.block.BlockDreamscapePortal.onEntityCollidedWithBlock(BlockDreamscapePortal.java:232)
at net.minecraft.entity.Entity.func_145775_I(Entity.java:988)
at net.minecraft.entity.Entity.moveEntity(Entity.java:921)
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:367)
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37)
at net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook.processPacket(C03PacketPlayer.java:271)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at net.minecraft.world.chunk.storage.ExtendedBlockStorage.func_150818_a(ExtendedBlockStorage.java:96)
at net.minecraft.world.chunk.Chunk.func_150807_a(Chunk.java:667)
at net.minecraft.world.World.setBlock(World.java:515)
at com.logictechcorp.orizon.world.TeleporterDreamscape.makePortal(TeleporterDreamscape.java:455)
at com.logictechcorp.orizon.world.TeleporterDreamscape.placeInPortal(TeleporterDreamscape.java:44)
at net.minecraft.server.management.ServerConfigurationManager.transferEntityToWorld(ServerConfigurationManager.java:629)
at net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension(ServerConfigurationManager.java:533)
at com.logictechcorp.orizon.block.BlockDreamscapePortal.onEntityCollidedWithBlock(BlockDreamscapePortal.java:232)

-- Block being collided with --
Details:
Block type: ID #180 (tile.null // com.logictechcorp.orizon.block.BlockDreamscapePortal)
Block data value: 0 / 0x0 / 0b0000
Block location: World: (-304,76,155), Chunk: (at 0,4,11 in -19,9; contains blocks -304,0,144 to -289,255,159), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Stacktrace:
at net.minecraft.entity.Entity.func_145775_I(Entity.java:988)

-- Entity being checked for collision --
Details:
Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
Entity ID: 314
Entity Name: LogicTechCorp
Entity's Exact location: -302.00, 76.00, 156.00
Entity's Block location: World: (-302,76,156), Chunk: (at 2,4,12 in -19,9; contains blocks -304,0,144 to -289,255,159), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Entity's Momentum: 0.00, -0.08, 0.00
Stacktrace:
at net.minecraft.entity.Entity.moveEntity(Entity.java:921)
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:367)
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37)
at net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook.processPacket(C03PacketPlayer.java:271)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)

-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@3f43308
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.7.0_55, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 882987520 bytes (842 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
FML: MCP v9.05 FML v7.10.1.1152 Minecraft Forge 10.13.0.1152 4 mods loaded, 4 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{7.10.1.1152} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.0.1152.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.0.1152} [Minecraft Forge] (forgeSrc-1.7.10-10.13.0.1152.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
orizon{1.7.X-1.4} [Orizon] (Orizon) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Player Count: 1 / 8; [EntityPlayerMP['LogicTechCorp'/314, l='New World', x=-302.00, y=76.00, z=156.00]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'

 

    public static BlockDreamscapePortal portal;

    private final WorldServer worldServerInstance;
    private final Random random;
    private final LongHashMap destinationCoordinateCache = new LongHashMap();
    private final List destinationCoordinateKeys = new ArrayList();

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

    public void placeInPortal(Entity entity, double x, double y, double z, float f)
    {
        if(this.worldServerInstance.provider.dimensionId != 1)
        {
            if(!this.placeInExistingPortal(entity, x, y, z, f))
            {
                this.makePortal(entity);
                this.placeInExistingPortal(entity, x, y, z, f);
            }
        } else
        {
            int i = MathHelper.floor_double(entity.posX);
            int j = MathHelper.floor_double(entity.posY) - 1;
            int k = MathHelper.floor_double(entity.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 ? ModBlocks.coloredStoneBrick : Blocks.air);
                    }
                }
            }

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

    public boolean placeInExistingPortal(Entity entity, double x, double y, double z, float f)
    {
        short short1 = 128;
        double d3 = -1.0D;
        int i = 0;
        int j = 0;
        int k = 0;
        int l = MathHelper.floor_double(entity.posX);
        int i1 = MathHelper.floor_double(entity.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 - entity.posX;

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

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

                            d7 = (double) i2 + 0.5D - entity.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) == portal)
            {
                i4 = 2;
            }

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

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

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

            int j2 = entity.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 = entity.motionX;
                double d10 = entity.motionZ;
                entity.motionX = d9 * (double) f3 + d10 * (double) f6;
                entity.motionZ = d9 * (double) f5 + d10 * (double) f4;
                entity.rotationYaw = f - (float) (j2 * 90) + (float) (i4 * 90);
            } else
            {
                entity.motionX = entity.motionY = entity.motionZ = 0.0D;
            }

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

    public boolean makePortal(Entity entity)
    {
        byte b0 = 16;
        double d0 = -1.0D;
        int i = MathHelper.floor_double(entity.posX);
        int j = MathHelper.floor_double(entity.posY);
        int k = MathHelper.floor_double(entity.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 - entity.posX;

            for(k2 = k - b0; k2 <= k + b0; ++k2)
            {
                d2 = (double) k2 + 0.5D - entity.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 - entity.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 - entity.posX;

                for(k2 = k - b0; k2 <= k + b0; ++k2)
                {
                    d2 = (double) k2 + 0.5D - entity.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 - entity.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 ? ModBlocks.coloredStoneBrick : 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, (flag ? ModBlocks.coloredStoneBrick : portal), 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;
    }

    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 BlockDreamscapePortal extends BlockBreakable
{
public BlockDreamscapePortal()
    {
    super("", Material.portal, false);
    this.setTickRandomly(true);
    this.setHardness(-1.0F);
    this.setLightLevel(0.75F);
    }
    
    public void updateTick(World world, int x, int y, int z, Random random)
    {
        super.updateTick(world, x, y, z, random);
        if (world.provider.isSurfaceWorld())
        {
            int l;
            for (l = y; !world.doesBlockHaveSolidTopSurface(world, x, l, z) && l > 0; --l)
            {
                ;
            }
            if (l > 0 && !world.isBlockNormalCubeDefault(x, l + 1, z, true))
            {
                Entity entity = ItemMonsterPlacer.spawnCreature(world, 57, (double)x + 0.5D, (double)l + 1.1D, (double)z + 0.5D);
                if (entity != null)
                {
                    entity.timeUntilPortal = entity.getPortalCooldown();
                }
            }
        }
    }

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

    public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int x, int y, int z)
    {
        float f;
        float f1;
        if (par1IBlockAccess.getBlock(x - 1, y, z) != this && par1IBlockAccess.getBlock(x + 1, y, z) != this)
        {
            f = 0.125F;
            f1 = 0.5F;
            this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1);
        }
        else
        {
            f = 0.5F;
            f1 = 0.125F;
            this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1);
        }
    }

    public boolean isOpaqueCube()
    {
        return false;
    }

    @Override
    public boolean renderAsNormalBlock()
    {
        return false;
    }

    public static boolean tryToCreatePortal(World world, int x, int y, int z)
    {
        byte b0 = 0;
        byte b1 = 0;
        if (world.getBlock(x - 1, y, z) == ModBlocks.coloredStoneBrick || world.getBlock(x + 1, y, z) == ModBlocks.coloredStoneBrick)
        {
            b0 = 1;
        }
        if (world.getBlock(x, y, z - 1) == ModBlocks.coloredStoneBrick || world.getBlock(x, y, z + 1) == ModBlocks.coloredStoneBrick)
        {
            b1 = 1;
        }
        if (b0 == b1)
        {
            return false;
        }
        else
        {
            if (world.getBlock(x - b0, y, z - b1) == Blocks.air)
            {
                x -= b0;
                z -= b1;
            }
            int l;
            int i1;
            for (l = -1; l <= 2; ++l)
            {
                for (i1 = -1; i1 <= 3; ++i1)
                {
                    boolean flag = l == -1 || l == 2 || i1 == -1 || i1 == 3;
                    if (l != -1 && l != 2 || i1 != -1 && i1 != 3)
                    {
                        Block j1 = world.getBlock(x + b0 * l, y + i1, z + b1 * l);
                        if (flag)
                        {
                            if (j1 != ModBlocks.coloredStoneBrick)
                            {
                                return false;
                            }
                        }

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

    public void onNeighborBlockChange(World world, int x, int y, int z, int par5)
    {
        byte b0 = 0;
        byte b1 = 1;
        if (world.getBlock(x - 1, y, z) == this || world.getBlock(x + 1, y, z) == this)
        {
            b0 = 1;
            b1 = 0;
        }
        int i1;
        for (i1 = y; world.getBlock(x, i1 - 1, z) == this; --i1)
        {
            ;
        }
        if (world.getBlock(x, i1 - 1, z) != ModBlocks.coloredStoneBrick)
        {
            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) == ModBlocks.coloredStoneBrick)
            {
                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) != ModBlocks.coloredStoneBrick || world.getBlock(x - b0, y, z - b1) != this) && (world.getBlock(x - b0, y, z - b1) != ModBlocks.coloredStoneBrick || world.getBlock(x + b0, y, z + b1) != this))
                    {
                        world.setBlockToAir(x, y, z);
                    }
                }
            }
            else
            {
                world.setBlockToAir(x, y, z);
            }
        }
    }
    
    @SideOnly(Side.CLIENT)
    public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int x, int y, int z, int par5)
    {
        if (par1IBlockAccess.getBlock(x, y, z) == this)
        {
            return false;
        }
        else
        {
            boolean flag = par1IBlockAccess.getBlock(x - 1, y, z) == this && par1IBlockAccess.getBlock(x - 2, y, z) != this;
            boolean flag1 = par1IBlockAccess.getBlock(x + 1, y, z) == this && par1IBlockAccess.getBlock(x + 2, y, z) != this;
            boolean flag2 = par1IBlockAccess.getBlock(x, y, z - 1) == this && par1IBlockAccess.getBlock(x, y, z - 2) != this;
            boolean flag3 = par1IBlockAccess.getBlock(x, y, z + 1) == this && par1IBlockAccess.getBlock(x, y, z + 2) != this;
            boolean flag4 = flag || flag1;
            boolean flag5 = flag2 || flag3;
            return flag4 && par5 == 4 ? true : (flag4 && par5 == 5 ? true : (flag5 && par5 == 2 ? true : flag5 && par5 == 3));
        }
    }

    public int quantityDropped(Random par1Random)
    {
        return 0;
    }

    public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity par5Entity)
    {
        if ((par5Entity.ridingEntity == null) && (par5Entity.riddenByEntity == null) && ((par5Entity instanceof EntityPlayerMP)))
        {
            EntityPlayerMP thePlayer = (EntityPlayerMP)par5Entity;
            if (thePlayer.timeUntilPortal > 0)
            {
                thePlayer.timeUntilPortal = 10;
            }
            else if (thePlayer.dimension != Reference.DREAMSCAPE_DIMENSION_ID)
            {
                thePlayer.timeUntilPortal = 10;
                thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, Reference.DREAMSCAPE_DIMENSION_ID, new TeleporterDreamscape(thePlayer.mcServer.worldServerForDimension(Reference.DREAMSCAPE_DIMENSION_ID)));
            }
            else {
                thePlayer.timeUntilPortal = 10;
                thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, 0, new TeleporterDreamscape(thePlayer.mcServer.worldServerForDimension(0)));
            }
        }
    }
    
    @SideOnly(Side.CLIENT)
    public int getRenderBlockPass()
    {
        return 1;
    }
    
    @SideOnly(Side.CLIENT)
    public void randomDisplayTick(World world, int x, int y, int z, Random random)
    {
        if (random.nextInt(100) == 0)
        {
            world.playSound((double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D, "portal.portal", 0.5F, random.nextFloat() * 0.4F + 0.8F, false);
        }
        for (int l = 0; l < 4; ++l)
        {
            double d0 = (double)((float)x + random.nextFloat());
            double d1 = (double)((float)y + random.nextFloat());
            double d2 = (double)((float)z + random.nextFloat());
            double d3 = 0.0D;
            double d4 = 0.0D;
            double d5 = 0.0D;
            int i1 = random.nextInt(2) * 2 - 1;
            d3 = ((double)random.nextFloat() - 0.5D) * 0.5D;
            d4 = ((double)random.nextFloat() - 0.5D) * 0.5D;
            d5 = ((double)random.nextFloat() - 0.5D) * 0.5D;
            if (world.getBlock(x - 1, y, z) != this && world.getBlock(x + 1, y, z) != this)
            {
                d0 = (double)x + 0.5D + 0.25D * (double)i1;
                d3 = (double)(random.nextFloat() * 2.0F * (float)i1);
            }
            else
            {
                d2 = (double)z + 0.5D + 0.25D * (double)i1;
                d5 = (double)(random.nextFloat() * 2.0F * (float)i1);
            }
            world.spawnParticle("cloud", d0, d1, d2, d3, d4, d5);
        }
    }
    
    @SideOnly(Side.CLIENT)
    public int idPicked(World world, int x, int y, int z)
    {
        return 0;
    }

Link to comment
Share on other sites

Your code is a copy-paste mess. Somewhere you are calling world.setBlock with a null block (line 455 of your Teleporter).

 

I went and tinkered with the code and now I am being sent to the nether, any idea on what is wrong.

 

Here are the links to any classes that may be relevant.

 

Main

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/Orizon.java

 

BlueFire

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/block/BlockBlueFire.java

 

Portal Block

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/block/BlockDreamscapePortal.java

 

Block Registry

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/init/ModBlocks.java

 

Dimension Registry

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/init/ModDimensionManager.java

 

Item Registry

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/init/ModItems.java

 

Item Blue Flint and Steel

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/item/ItemBlueFlintandSteel.java

 

Chunk Provider

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/world/chunk/ChunkProviderDreamscape.java

 

Teleporter

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/world/TeleporterDreamscape.java

 

World Provider

https://github.com/LogicTechCorp/Orizon/blob/master/src/main/java/com/logictechcorp/orizon/world/WorldProviderDreamscape.java

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
    • Remove Instant Massive Structures Mod from your server     Add new crash-reports with sites like https://paste.ee/  
  • Topics

×
×
  • Create New...

Important Information

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