Jump to content

[Solved] Custom Portal Block Disappears when Placed Next to Another One...


Recommended Posts

Posted

Custom Portal Block Disappears when Placed Next to Another One.

This happens even when setting the block in the world using code (generating a portal for instance).

I am having trouble trying to fix this. I guess there doesn't rely need to be any other explanation why I need this to be fixed but questions are always welcome considering I am asking for help.

Every day is a new day to learn.

I acknowledge the hard work of original content.

I will always improve in many ways.

 

Java > c

Posted

Sorry for the delay.

I thought this problem occurred a lot on the forums and didn't think I need to post the code. But I tend forget the necessity of it.

 

PortalBlock

 

import cpw.mods.fml.relauncher.Side;

import cpw.mods.fml.relauncher.SideOnly;

import java.util.Random;

 

import net.minecraft.block.BlockBreakable;

import net.minecraft.block.BlockPortal;

import net.minecraft.block.material.Material;

import net.minecraft.entity.Entity;

import net.minecraft.entity.player.EntityPlayerMP;

import net.minecraft.item.ItemMonsterPlacer;

import net.minecraft.server.MinecraftServer;

import net.minecraft.src.ModLoader;

import net.minecraft.util.AxisAlignedBB;

import net.minecraft.world.IBlockAccess;

import net.minecraft.world.World;

 

public class PortalBlock extends BlockPortal

{

    public PortalBlock(int par1)

    {

        super(par1);

        this.setTickRandomly(true);

    }

 

    /**

    * Checks to see if this location is valid to create a portal and will return True if it does. Args: world, x, y, z

    */

    public boolean tryToCreatePortal(World par1World, int par2, int par3, int par4)

    {

        byte b0 = 0;

        byte b1 = 0;

 

        if (par1World.getBlockId(par2 - 1, par3, par4) ==  Main.orb_crystal_block.blockID || par1World.getBlockId(par2 + 1, par3, par4) == Main.orb_crystal_block.blockID){

            b0 = 1;

        }

 

        if (par1World.getBlockId(par2, par3, par4 - 1) ==  Main.orb_crystal_block.blockID || par1World.getBlockId(par2, par3, par4 + 1) == Main.orb_crystal_block.blockID){

            b1 = 1;

        }

 

        if (b0 == b1){

            return false;

        } else {

        if(par1World.isAirBlock(par2 - b0, par3, par4 -b1)){

        par2-=b0;

        par4-=b1;

        }

       

          for(int i = -1; i <= 2; i++){

          for(int j = -1; j<=3; j++){

          boolean flag = (i == -1 || i == 2 || j == -1 || j == 3);

         

          if(i != -1 && i != 2 || j != -1 && j != 3){

          int k = par1World.getBlockId(par2 + (b0*i), par3 + j, par4 + (b1*i));

          boolean isAirBlock = par1World.isAirBlock(par2 + (b0*i), par3 + j, par4 + (b1*i));

          if(flag){

          if(k != Main.orb_crystal_block.blockID){

          return false;

          }

          } else {

          return false;

          }

         

         

          }

         

          }

          }

        }

       

        return false;

    }

 

    /**

    * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are

    * their own) Args: x, y, z, neighbor blockID

    */

    public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)

    {

        byte b0 = 0;

        byte b1 = 1;

 

        if (par1World.getBlockId(par2 - 1, par3, par4) == this.blockID || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID)

        {

            b0 = 1;

            b1 = 0;

        }

 

        int i1;

 

        for (i1 = par3; par1World.getBlockId(par2, i1 - 1, par4) == this.blockID; --i1)

        {

            ;

        }

 

        if (par1World.getBlockId(par2, i1 - 1, par4) !=  Main.orb_crystal_block.blockID)

        {

            par1World.setBlockToAir(par2, par3, par4);

        }

        else

        {

            int j1;

 

            for (j1 = 1; j1 < 4 && par1World.getBlockId(par2, i1 + j1, par4) == this.blockID; ++j1)

            {

                ;

            }

 

            if (j1 == 3 && par1World.getBlockId(par2, i1 + j1, par4) ==  Main.orb_crystal_block.blockID)

            {

                boolean flag = par1World.getBlockId(par2 - 1, par3, par4) == this.blockID || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID;

                boolean flag1 = par1World.getBlockId(par2, par3, par4 - 1) == this.blockID || par1World.getBlockId(par2, par3, par4 + 1) == this.blockID;

 

                if (flag && flag1)

                {

                    par1World.setBlockToAir(par2, par3, par4);

                }

                else

                {

                    if ((par1World.getBlockId(par2 + b0, par3, par4 + b1) !=  Main.orb_crystal_block.blockID || par1World.getBlockId(par2 - b0, par3, par4 - b1) != this.blockID) && (par1World.getBlockId(par2 - b0, par3, par4 - b1) !=  Main.orb_crystal_block.blockID || par1World.getBlockId(par2 + b0, par3, par4 + b1) != this.blockID))

                    {

                        par1World.setBlockToAir(par2, par3, par4);

                    }

                }

            }

            else

            {

                par1World.setBlockToAir(par2, par3, par4);

            }

        }

    }

 

 

    /**

    * Triggered whenever an entity collides with this block (enters into the block). Args: world, x, y, z, entity

    */

    public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity)

    {

        if (par5Entity.ridingEntity == null && par5Entity.riddenByEntity == null && par5Entity instanceof EntityPlayerMP)

        {

        EntityPlayerMP player = (EntityPlayerMP) par5Entity;

        ModLoader.getMinecraftServerInstance();

        MinecraftServer server = MinecraftServer.getServer();

       

        if(player.timeUntilPortal >0){

        player.timeUntilPortal = 10;

        } else if(player.dimension != Main.dimensionIdCrystal){

        player.timeUntilPortal = 10; //Count down to teleport

        player.mcServer.getConfigurationManager().transferPlayerToDimension(player, Main.dimensionIdCrystal, new TeleporterCrystal(server.worldServerForDimension(Main.dimensionIdCrystal)));

        } else {

        player.timeUntilPortal = 10; //Count down to teleport

        player.mcServer.getConfigurationManager().transferPlayerToDimension(player, 0, new TeleporterCrystal(server.worldServerForDimension(0)));

        }

   

        }

    }

}

 

 

 

I don't know if this has anything to do with it or not, but your the Expert :D.

 

TeleporterClass

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Random;

 

import net.minecraft.block.Block;

import net.minecraft.entity.Entity;

import net.minecraft.util.Direction;

import net.minecraft.util.LongHashMap;

import net.minecraft.util.MathHelper;

import net.minecraft.world.ChunkCoordIntPair;

import net.minecraft.world.PortalPosition;

import net.minecraft.world.Teleporter;

import net.minecraft.world.WorldServer;

 

public class TeleporterCrystal extends Teleporter {

 

private final WorldServer worldServerInstance;

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();

 

public TeleporterCrystal(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 ? Main.orb_crystal_block.blockID : 0);

                    }

                }

            }

 

            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 d4;

        int k1;

 

        if (this.destinationCoordinateCache.containsItem(j1))

        {

            PortalPosition portalposition = (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 (k1 = l - short1; k1 <= l + short1; ++k1)

            {

                double d5 = (double)k1 + 0.5D - par1Entity.posX;

 

                for (int l1 = i1 - short1; l1 <= i1 + short1; ++l1)

                {

                    double d6 = (double)l1 + 0.5D - par1Entity.posZ;

 

                    for (int i2 = this.worldServerInstance.getActualHeight() - 1; i2 >= 0; --i2)

                    {

                        if (this.worldServerInstance.getBlockId(k1, i2, l1) == Main.portalBlock.blockID)

                        {

                            while (this.worldServerInstance.getBlockId(k1, i2 - 1, l1) == Main.portalBlock.blockID)

                            {

                                --i2;

                            }

 

                            d4 = (double)i2 + 0.5D - par1Entity.posY;

                            double d7 = d5 * d5 + d4 * d4 + d6 * d6;

 

                            if (d3 < 0.0D || d7 < d3)

                            {

                                d3 = d7;

                                i = k1;

                                j = i2;

                                k = l1;

                            }

                        }

                    }

                }

            }

        }

 

        if (d3 >= 0.0D)

        {

            if (flag)

            {

                this.destinationCoordinateCache.add(j1, new PortalPosition(this, i, j, k, this.worldServerInstance.getTotalWorldTime()));

                this.destinationCoordinateKeys.add(Long.valueOf(j1));

            }

 

            double d8 = (double)i + 0.5D;

            double d9 = (double)j + 0.5D;

            d4 = (double)k + 0.5D;

            int j2 = -1;

 

            if (this.worldServerInstance.getBlockId(i - 1, j, k) == Main.portalBlock.blockID)

            {

                j2 = 2;

            }

 

            if (this.worldServerInstance.getBlockId(i + 1, j, k) == Main.portalBlock.blockID)

            {

                j2 = 0;

            }

 

            if (this.worldServerInstance.getBlockId(i, j, k - 1) == Main.portalBlock.blockID)

            {

                j2 = 3;

            }

 

            if (this.worldServerInstance.getBlockId(i, j, k + 1) == Main.portalBlock.blockID)

            {

                j2 = 1;

            }

 

            int k2 = par1Entity.getTeleportDirection();

 

            if (j2 > -1)

            {

                int l2 = Direction.rotateLeft[j2];

                int i3 = Direction.offsetX[j2];

                int j3 = Direction.offsetZ[j2];

                int k3 = Direction.offsetX[l2];

                int l3 = Direction.offsetZ[l2];

                boolean flag1 = !this.worldServerInstance.isAirBlock(i + i3 + k3, j, k + j3 + l3) || !this.worldServerInstance.isAirBlock(i + i3 + k3, j + 1, k + j3 + l3);

                boolean flag2 = !this.worldServerInstance.isAirBlock(i + i3, j, k + j3) || !this.worldServerInstance.isAirBlock(i + i3, j + 1, k + j3);

 

                if (flag1 && flag2)

                {

                    j2 = Direction.rotateOpposite[j2];

                    l2 = Direction.rotateOpposite[l2];

                    i3 = Direction.offsetX[j2];

                    j3 = Direction.offsetZ[j2];

                    k3 = Direction.offsetX[l2];

                    l3 = Direction.offsetZ[l2];

                    k1 = i - k3;

                    d8 -= (double)k3;

                    int i4 = k - l3;

                    d4 -= (double)l3;

                    flag1 = !this.worldServerInstance.isAirBlock(k1 + i3 + k3, j, i4 + j3 + l3) || !this.worldServerInstance.isAirBlock(k1 + i3 + k3, j + 1, i4 + j3 + l3);

                    flag2 = !this.worldServerInstance.isAirBlock(k1 + i3, j, i4 + j3) || !this.worldServerInstance.isAirBlock(k1 + i3, j + 1, i4 + j3);

                }

 

                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;

                }

 

                d8 += (double)((float)k3 * f1 + f2 * (float)i3);

                d4 += (double)((float)l3 * f1 + f2 * (float)j3);

                float f3 = 0.0F;

                float f4 = 0.0F;

                float f5 = 0.0F;

                float f6 = 0.0F;

 

                if (j2 == k2)

                {

                    f3 = 1.0F;

                    f4 = 1.0F;

                }

                else if (j2 == Direction.rotateOpposite[k2])

                {

                    f3 = -1.0F;

                    f4 = -1.0F;

                }

                else if (j2 == Direction.rotateRight[k2])

                {

                    f5 = 1.0F;

                    f6 = -1.0F;

                }

                else

                {

                    f5 = -1.0F;

                    f6 = 1.0F;

                }

 

                double d10 = par1Entity.motionX;

                double d11 = par1Entity.motionZ;

                par1Entity.motionX = d10 * (double)f3 + d11 * (double)f6;

                par1Entity.motionZ = d10 * (double)f5 + d11 * (double)f4;

                par1Entity.rotationYaw = par8 - (float)(k2 * 90) + (float)(j2 * 90);

            }

            else

            {

                par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D;

            }

 

            par1Entity.setLocationAndAngles(d8, d9, d4, par1Entity.rotationYaw, par1Entity.rotationPitch);

            return true;

        }

        else

        {

            return false;

        }

    }

 

    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 j2;

        int k2;

        int l2;

        int i3;

        int j3;

        int k3;

        int l3;

        int i4;

        int j4;

        int k4;

        double d3;

        double d4;

 

        for (i2 = i - b0; i2 <= i + b0; ++i2)

        {

            d1 = (double)i2 + 0.5D - par1Entity.posX;

 

            for (j2 = k - b0; j2 <= k + b0; ++j2)

            {

                d2 = (double)j2 + 0.5D - par1Entity.posZ;

                label274:

 

                for (k2 = this.worldServerInstance.getActualHeight() - 1; k2 >= 0; --k2)

                {

                    if (this.worldServerInstance.isAirBlock(i2, k2, j2))

                    {

                        while (k2 > 0 && this.worldServerInstance.isAirBlock(i2, k2 - 1, j2))

                        {

                            --k2;

                        }

 

                        for (i3 = l1; i3 < l1 + 4; ++i3)

                        {

                            l2 = i3 % 2;

                            k3 = 1 - l2;

 

                            if (i3 % 4 >= 2)

                            {

                                l2 = -l2;

                                k3 = -k3;

                            }

 

                            for (j3 = 0; j3 < 3; ++j3)

                            {

                                for (i4 = 0; i4 < 4; ++i4)

                                {

                                    for (l3 = -1; l3 < 4; ++l3)

                                    {

                                        k4 = i2 + (i4 - 1) * l2 + j3 * k3;

                                        j4 = k2 + l3;

                                        int l4 = j2 + (i4 - 1) * k3 - j3 * l2;

 

                                        if (l3 < 0 && !this.worldServerInstance.getBlockMaterial(k4, j4, l4).isSolid() || l3 >= 0 && !this.worldServerInstance.isAirBlock(k4, j4, l4))

                                        {

                                            continue label274;

                                        }

                                    }

                                }

                            }

 

                            d4 = (double)k2 + 0.5D - par1Entity.posY;

                            d3 = d1 * d1 + d4 * d4 + d2 * d2;

 

                            if (d0 < 0.0D || d3 < d0)

                            {

                                d0 = d3;

                                l = i2;

                                i1 = k2;

                                j1 = j2;

                                k1 = i3 % 4;

                            }

                        }

                    }

                }

            }

        }

 

        if (d0 < 0.0D)

        {

            for (i2 = i - b0; i2 <= i + b0; ++i2)

            {

                d1 = (double)i2 + 0.5D - par1Entity.posX;

 

                for (j2 = k - b0; j2 <= k + b0; ++j2)

                {

                    d2 = (double)j2 + 0.5D - par1Entity.posZ;

                    label222:

 

                    for (k2 = this.worldServerInstance.getActualHeight() - 1; k2 >= 0; --k2)

                    {

                        if (this.worldServerInstance.isAirBlock(i2, k2, j2))

                        {

                            while (k2 > 0 && this.worldServerInstance.isAirBlock(i2, k2 - 1, j2))

                            {

                                --k2;

                            }

 

                            for (i3 = l1; i3 < l1 + 2; ++i3)

                            {

                                l2 = i3 % 2;

                                k3 = 1 - l2;

 

                                for (j3 = 0; j3 < 4; ++j3)

                                {

                                    for (i4 = -1; i4 < 4; ++i4)

                                    {

                                        l3 = i2 + (j3 - 1) * l2;

                                        k4 = k2 + i4;

                                        j4 = j2 + (j3 - 1) * k3;

 

                                        if (i4 < 0 && !this.worldServerInstance.getBlockMaterial(l3, k4, j4).isSolid() || i4 >= 0 && !this.worldServerInstance.isAirBlock(l3, k4, j4))

                                        {

                                            continue label222;

                                        }

                                    }

                                }

 

                                d4 = (double)k2 + 0.5D - par1Entity.posY;

                                d3 = d1 * d1 + d4 * d4 + d2 * d2;

 

                                if (d0 < 0.0D || d3 < d0)

                                {

                                    d0 = d3;

                                    l = i2;

                                    i1 = k2;

                                    j1 = j2;

                                    k1 = i3 % 2;

                                }

                            }

                        }

                    }

                }

            }

        }

 

        int i5 = l;

        int j5 = i1;

        j2 = j1;

        int k5 = k1 % 2;

        int l5 = 1 - k5;

 

        if (k1 % 4 >= 2)

        {

            k5 = -k5;

            l5 = -l5;

        }

 

        boolean flag;

 

        if (d0 < 0.0D)

        {

            if (i1 < 70)

            {

                i1 = 70;

            }

 

            if (i1 > this.worldServerInstance.getActualHeight() - 10)

            {

                i1 = this.worldServerInstance.getActualHeight() - 10;

            }

 

            j5 = i1;

 

            for (k2 = -1; k2 <= 1; ++k2)

            {

                for (i3 = 1; i3 < 3; ++i3)

                {

                    for (l2 = -1; l2 < 3; ++l2)

                    {

                        k3 = i5 + (i3 - 1) * k5 + k2 * l5;

                        j3 = j5 + l2;

                        i4 = j2 + (i3 - 1) * l5 - k2 * k5;

                        flag = l2 < 0;

                        this.worldServerInstance.setBlock(k3, j3, i4, flag ? Main.orb_crystal_block.blockID : 0);

                    }

                }

            }

        }

 

        for (k2 = 0; k2 < 4; ++k2)

        {

            for (i3 = 0; i3 < 4; ++i3)

            {

                for (l2 = -1; l2 < 4; ++l2)

                {

                    k3 = i5 + (i3 - 1) * k5;

                    j3 = j5 + l2;

                    i4 = j2 + (i3 - 1) * l5;

                    flag = i3 == 0 || i3 == 3 || l2 == -1 || l2 == 3;

                    this.worldServerInstance.setBlock(k3, j3, i4, flag ? Main.orb_crystal_block.blockID : Main.portalBlock.blockID, 0, 2);

                }

            }

 

            for (i3 = 0; i3 < 4; ++i3)

            {

                for (l2 = -1; l2 < 4; ++l2)

                {

                    k3 = i5 + (i3 - 1) * k5;

                    j3 = j5 + l2;

                    i4 = j2 + (i3 - 1) * l5;

                    this.worldServerInstance.notifyBlocksOfNeighborChange(k3, j3, i4, this.worldServerInstance.getBlockId(k3, j3, i4));

                }

            }

        }

 

        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();

                PortalPosition portalposition = (PortalPosition)this.destinationCoordinateCache.getValueByKey(olong.longValue());

 

                if (portalposition == null || portalposition.lastUpdateTime < j)

                {

                    iterator.remove();

                    this.destinationCoordinateCache.remove(olong.longValue());

                }

            }

        }

}

 

 

}

 

 

 

If you have any more questions, I will gladly answer them  :).

Thank you for your help and time.

Every day is a new day to learn.

I acknowledge the hard work of original content.

I will always improve in many ways.

 

Java > c

Posted

If your accusing me of copy and pasting some one else's code your wrong. I watch "how to" videos and LEARN from that. Scratchforfun is the person who I learn from. We all have to start somewhere.

 

If you know a solution I would be glad to hear it in a "teaching" or show a step by step explanation (code not necessary). I don't like people who copy and paste, I watch tutorials so please don't get the two mixed up.

Every day is a new day to learn.

I acknowledge the hard work of original content.

I will always improve in many ways.

 

Java > c

Posted

Yes I must admit I do, do that. I didn't want to spend a lot of time writing a whole new teleporter class when I don't need to modify it, I just needed a class separated from the original.

 

I don't like be cheap by copying code because I like people who write original content. I didn't exactly think that copying the vanilla teleporter class would be cheap but I now understand that.

 

Thank you for helping me realize this. I will try better in the present and future.

Every day is a new day to learn.

I acknowledge the hard work of original content.

I will always improve in many ways.

 

Java > c

Posted

Are you still available to help me. I understand if you don't as in my past posts I look cheap (believe me i wouldn't want to help copy and pasters either).

I not being impatient, just wondering :).

Every day is a new day to learn.

I acknowledge the hard work of original content.

I will always improve in many ways.

 

Java > c

Posted

Wait I figured it out. I deleted the onNeighborBlockChange  in the portalBlock class.

 

trial by error xD.

 

But like i said before thank you so much for helping me improve.

Every day is a new day to learn.

I acknowledge the hard work of original content.

I will always improve in many ways.

 

Java > c

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.