Jump to content

How to make Metadata blocks work as portal frames for dimensions?


Naiakoa

Recommended Posts

Just to save myself some typing here is a video of the issue on hand:

I use to have this mod working perfectly through ModLoader but seeing how smooth forge runs with other things I been slowly updating the mod to forge over the past few days. I know in the video I was using forge 6.6.0.499, but after I recorded it I updated forge to version 6.6.0.515. The issue was still there. Sat there for another 2 hours trying to figure out what the problem is but there is no luck. The portal lights up now but for some reason I cannot set it to use a certain meta ID for the portal spawn. I want to use the metadata for block ID 230 but as the 2nd metadata case 2. Its kinda bugging me now that I cannot use metadata for portal blocks. Here is the code for each thing used for the dimension blocks:

 

Main.class:

 

 

package Nexion;

import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.src.ModLoader;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.EnumHelper;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
public class mod_Nexion
{
    public static Block PortalBlocks;
    static int portalBlocksID = 230;
    public static int dimension = 10;
    public static Block Portalx;
    @Init
    public void load(FMLInitializationEvent event)
    {
        //portal FrameBlocks
        PortalBlocks = new PortalBlocks(portalBlocksID, 0).setBlockName("PortalBlocks");
        Item.itemsList[portalBlocksID] = new ItemBlockMeta(portalBlocksID -256, PortalBlocks).setItemName("PortalBlock");
        LanguageRegistry.instance().addStringLocalization("tile.PortalBlocks.first.name","Crystalized Lava");
        LanguageRegistry.instance().addStringLocalization("tile.PortalBlocks.second.name","Ancient Redstone");
        //Portals
        //Suffring Portal
        Portalx = new Portal1(202, 2).setBlockName("portal1").setCreativeTab(mod_Nexion.NexionTab);LanguageRegistry.addName(Portalx, "Suffing Portal");GameRegistry.registerBlock(Portalx, "SufferingPortal");
        DimensionManager.registerProviderType(dimension, WorldProviderSuffering.class, false);
        DimensionManager.registerDimension(dimension, dimension);
    }
}

 

 

 

PortalBlocks.class (the portal frame blocks):

 

 

package Nexion;

import java.util.List;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class PortalBlocks extends Block
{
public PortalBlocks(int par1, int par2)
{
	super(par1,par2, Material.rock);
	this.setCreativeTab(mod_Nexion.NexionTab);
}
public String getTextureFile(){
	return "/Nexion Textures/Blocks.png";
}
 public boolean isOpaqueCube()
    {
        return false;
    }
public int getBlockTextureFromSideAndMetadata(int side, int meta) {
	switch(meta) {
                case 0:
                        switch(side) {
                        case 0: return 5;
                                case 1: return 5;
                                default: return 5;
                    		}       
                case 1:
                	switch(side) {
                    case 0: return 17;
                    
                            case 1: return 17;
                           
                            default: return 17;
                	}
        }
	return meta;
}
@Override
public int damageDropped(int meta){
	return meta;
}
@SideOnly(Side.CLIENT)
public void getSubBlocks(int par1, CreativeTabs tab, List list){
	for(int NumOfMets=0; NumOfMets<2; NumOfMets++){
		list.add(new ItemStack(par1, 1, NumOfMets));
	}	
}
}

 

 

 

ItemBlockMeta (Since the portal frame is a MetaData block to save ID space):

 

 

package Nexion;

import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;

public class ItemBlockMeta extends ItemBlock{
public ItemBlockMeta (int id, Block block){
	super(id);
	setHasSubtypes(true);
}
public String getItemNameIS(ItemStack is){
	String name = "";
	switch(is.getItemDamage()){
	case 0: {name=  "first";
			break;}
	case 1: {name=  "second";
			break;}
	default: name=  "first";
	}
	return getItemName()+"."+name;
}
public int getMetadata(int meta){
	return meta;
}
}

 

 

 

Portal1.class (The portal block that teleports):

 

 

package Nexion;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.BlockPortal;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.world.World;

public class Portal1 extends BlockPortal{

public Portal1(int par1, int par2) {
	super(par1, par2);

}
public String getTextureFile(){
	return "/Nexion Textures/Blocks.png";
}
public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random){

}

public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity)
{
if (par5Entity.ridingEntity == null && par5Entity.riddenByEntity == null)
{
  if (par5Entity instanceof EntityPlayerMP)
  {
   EntityPlayerMP thePlayer = (EntityPlayerMP) par5Entity;
   if (par5Entity.dimension != mod_Nexion.dimension)
   {
    thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, mod_Nexion.dimension, new TeleporterSuffering(thePlayer.mcServer.worldServerForDimension(mod_Nexion.dimension)));
   }
   else
   {
    thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, 0, new TeleporterSuffering(thePlayer.mcServer.worldServerForDimension(0)));
   }
  }
}
}

public boolean tryToCreatePortal(World par1World, int par2, int par3, int par4){
byte var5 = 0;
byte var6 = 0;

if(par1World.getBlockId(par2 - 1, par3, par4) == mod_Nexion.PortalBlocks.damageDropped(0) || par1World.getBlockId(par2 + 1, par3, par4) == mod_Nexion.PortalBlocks.damageDropped(0))
{
	var5 = 1;
}
if(par1World.getBlockId(par2 , par3, par4 - 1) == mod_Nexion.PortalBlocks.damageDropped(0) || par1World.getBlockId(par2, par3, par4 + 1) == mod_Nexion.PortalBlocks.damageDropped(0))
{
	var6 = 1;
}
if(var5 == var6){
	return false;
}
else
{
	if(par1World.getBlockId(par2 - var5, par3, par4 - var6) == 0){
		par2 -= var5;
		par4 -= var6;
	}
	int var7;
	int var8;

	for(var7 = -1; var7 <= 2; ++var7)
	{
		for(var8 = -1; var7 <= 3; ++var8)
		{
			boolean var9 = var7 == -1 || var7 == 2|| var8 == -1 || var8 == 3;

			if(var7 != -1 && var7 != 2 || var8 != -1 || var8 != 3)
			{
				int var10 = par1World.getBlockId(par2 + var5 * var7, par3 + var8, par4 + var6 * var7);

				if(var9)
				{
					if(var10 != mod_Nexion.portalBlocksID)
					{
						return false;
					}
				}
				else if(var10 != 0 && var10 != Block.fire.blockID)
				{
					return false;
				}
			}
		}
	}
	par1World.editingBlocks = true;

	for(var7 = 0; var7 < 2; ++var7)
	{
		for(var8 = 0; var8 < 3; ++var8)
		{
			par1World.setBlockWithNotify(par2 + var5 * var7, par3 + var8, par4 + var6 * var7, this.blockID);
		}
	}
	par1World.editingBlocks = false;
	return true;
}
}
public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random){

}

public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5){
byte var6 = 0;
byte var7 = 1;

if(par1World.getBlockId(par2 - 1, par3, par4) == this.blockID || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID)
{
	var6 = 1;
	var7 = 0;
	}
int var8;

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

}
if(par1World.getBlockId(par2, var8 - 1, par4) != mod_Nexion.PortalBlocks.damageDropped(0))
{
	par1World.setBlockWithNotify(par2, par3, par4, 0);
}
else
{
	int var9;

	for(var9 = 1; var9 < 4 &&  par1World.getBlockId(par2, var8 + var9, par4) == this.blockID; ++var9)
	{

	}
	if(var9 ==3 && par1World.getBlockId(par2, var8 + var9, par4) == mod_Nexion.PortalBlocks.damageDropped(0))
	{
		boolean var10 = par1World.getBlockId(par2 - 1, par3, par4) == this.blockID || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID;
		boolean var11 = par1World.getBlockId(par2, par3, par4 - 1) == this.blockID || par1World.getBlockId(par2, par3, par4 + 1) == this.blockID;

	if(var10 && var11)
	{
		par1World.setBlockWithNotify(par2, par3, par4, 0);
	}
	else
	{
		if((par1World.getBlockId(par2 + var6, par3, par4 + var7) != mod_Nexion.PortalBlocks.damageDropped(0) || par1World.getBlockId(par2 - var6, par3, par4 - var7)!= this.blockID)&&(par1World.getBlockId(par2 - var6, par3, par4 - var7)!=mod_Nexion.PortalBlocks.damageDropped(0) || par1World.getBlockId(par2 + var6, par3, par4 + var7) != this.blockID))
		{
			par1World.setBlockWithNotify(par2, par3, par4, 0);
		}
	}
	}
	else
	{
		par1World.setBlockWithNotify(par2, par3, par4, 0);
	}
}
}
}

 

 

 

TeleportSuffering.class (Teleports player to dimension if I recall):

 

 

package Nexion;

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 TeleporterSuffering extends Teleporter
{
private final WorldServer field_85192_a;
private final Random random;
private final LongHashMap field_85191_c = new LongHashMap();
private final List field_85190_d = new ArrayList();

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

  @Override
public void placeInPortal(Entity par1Entity, double par2, double par4, double par6, float par8)
{
  if (this.field_85192_a.provider.dimensionId != 1)
  {
   if (!this.placeInExistingPortal(par1Entity, par2, par4, par6, par8))
   {
    this.func_85188_a(par1Entity);
    this.placeInExistingPortal(par1Entity, par2, par4, par6, par8);
   }
  }
  else
  {
   int var9 = MathHelper.floor_double(par1Entity.posX);
   int var10 = MathHelper.floor_double(par1Entity.posY) - 1;
   int var11 = MathHelper.floor_double(par1Entity.posZ);
   byte var12 = 1;
   byte var13 = 0;

    for (int var14 = -2; var14 <= 2; ++var14)
   {
    for (int var15 = -2; var15 <= 2; ++var15)
    {
     for (int var16 = -1; var16 < 3; ++var16)
     {
      int var17 = var9 + var15 * var12 + var14 * var13;
      int var18 = var10 + var16;
      int var19 = var11 + var15 * var13 - var14 * var12;
      boolean var20 = var16 < 0;
      this.field_85192_a.setBlockWithNotify(var17, var18, var19, var20 ? mod_Nexion.PortalBlocks.damageDropped(0) : 0);
     }
    }
   }

    par1Entity.setLocationAndAngles((double) var9, (double) var10, (double) var11, par1Entity.rotationYaw, 0.0F);
   par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D;
  }
}

  @Override
public boolean placeInExistingPortal(Entity par1Entity, double par2, double par4, double par6, float par8)
{
  short var9 = 128;
  double var10 = -1.0D;
  int var12 = 0;
  int var13 = 0;
  int var14 = 0;
  int var15 = MathHelper.floor_double(par1Entity.posX);
  int var16 = MathHelper.floor_double(par1Entity.posZ);
  long var17 = ChunkCoordIntPair.chunkXZ2Int(var15, var16);
  boolean var19 = true;
  double var27;
  int var48;

   if (this.field_85191_c.containsItem(var17))
  {
   PortalPosition var20 = (PortalPosition) this.field_85191_c.getValueByKey(var17);
   var10 = 0.0D;
   var12 = var20.posX;
   var13 = var20.posY;
   var14 = var20.posZ;
   var20.field_85087_d = this.field_85192_a.getTotalWorldTime();
   var19 = false;
  }
  else
  {
   for (var48 = var15 - var9; var48 <= var15 + var9; ++var48)
   {
    double var21 = (double) var48 + 0.5D - par1Entity.posX;

     for (int var23 = var16 - var9; var23 <= var16 + var9; ++var23)
    {
     double var24 = (double) var23 + 0.5D - par1Entity.posZ;

      for (int var26 = this.field_85192_a.getActualHeight() - 1; var26 >= 0; --var26)
     {
      if (this.field_85192_a.getBlockId(var48, var26, var23) == mod_Nexion.Portalx.blockID)
      {
       while (this.field_85192_a.getBlockId(var48, var26 - 1, var23) == mod_Nexion.Portalx.blockID)
       {
        --var26;
       }

        var27 = (double) var26 + 0.5D - par1Entity.posY;
       double var29 = var21 * var21 + var27 * var27 + var24 * var24;

        if (var10 < 0.0D || var29 < var10)
       {
        var10 = var29;
        var12 = var48;
        var13 = var26;
        var14 = var23;
       }
      }
     }
    }
   }
  }

   if (var10 >= 0.0D)
  {
   if (var19)
   {
    this.field_85191_c.add(var17, new PortalPosition(this, var12, var13, var14, this.field_85192_a.getTotalWorldTime()));
    this.field_85190_d.add(Long.valueOf(var17));
   }

    double var49 = (double) var12 + 0.5D;
   double var25 = (double) var13 + 0.5D;
   var27 = (double) var14 + 0.5D;
   int var50 = -1;

    if (this.field_85192_a.getBlockId(var12 - 1, var13, var14) == mod_Nexion.Portalx.blockID)
   {
    var50 = 2;
   }

    if (this.field_85192_a.getBlockId(var12 + 1, var13, var14) == mod_Nexion.Portalx.blockID)
   {
    var50 = 0;
   }

    if (this.field_85192_a.getBlockId(var12, var13, var14 - 1) == mod_Nexion.Portalx.blockID)
   {
    var50 = 3;
   }

    if (this.field_85192_a.getBlockId(var12, var13, var14 + 1) == mod_Nexion.Portalx.blockID)
   {
    var50 = 1;
   }

    int var30 = par1Entity.func_82148_at();

    if (var50 > -1)
   {
    int var31 = Direction.field_71578_g[var50];
    int var32 = Direction.offsetX[var50];
    int var33 = Direction.offsetZ[var50];
    int var34 = Direction.offsetX[var31];
    int var35 = Direction.offsetZ[var31];
    boolean var36 = !this.field_85192_a.isAirBlock(var12 + var32 + var34, var13, var14 + var33 + var35) || !this.field_85192_a.isAirBlock(var12 + var32 + var34, var13 + 1, var14 + var33 + var35);
    boolean var37 = !this.field_85192_a.isAirBlock(var12 + var32, var13, var14 + var33) || !this.field_85192_a.isAirBlock(var12 + var32, var13 + 1, var14 + var33);

     if (var36 && var37)
    {
     var50 = Direction.footInvisibleFaceRemap[var50];
     var31 = Direction.footInvisibleFaceRemap[var31];
     var32 = Direction.offsetX[var50];
     var33 = Direction.offsetZ[var50];
     var34 = Direction.offsetX[var31];
     var35 = Direction.offsetZ[var31];
     var48 = var12 - var34;
     var49 -= (double) var34;
     int var22 = var14 - var35;
     var27 -= (double) var35;
     var36 = !this.field_85192_a.isAirBlock(var48 + var32 + var34, var13, var22 + var33 + var35) || !this.field_85192_a.isAirBlock(var48 + var32 + var34, var13 + 1, var22 + var33 + var35);
     var37 = !this.field_85192_a.isAirBlock(var48 + var32, var13, var22 + var33) || !this.field_85192_a.isAirBlock(var48 + var32, var13 + 1, var22 + var33);
    }

     float var38 = 0.5F;
    float var39 = 0.5F;

     if (!var36 && var37)
    {
     var38 = 1.0F;
    }
    else if (var36 && !var37)
    {
     var38 = 0.0F;
    }
    else if (var36 && var37)
    {
     var39 = 0.0F;
    }

     var49 += (double) ((float) var34 * var38 + var39 * (float) var32);
    var27 += (double) ((float) var35 * var38 + var39 * (float) var33);
    float var40 = 0.0F;
    float var41 = 0.0F;
    float var42 = 0.0F;
    float var43 = 0.0F;

     if (var50 == var30)
    {
     var40 = 1.0F;
     var41 = 1.0F;
    }
    else if (var50 == Direction.footInvisibleFaceRemap[var30])
    {
     var40 = -1.0F;
     var41 = -1.0F;
    }
    else if (var50 == Direction.enderEyeMetaToDirection[var30])
    {
     var42 = 1.0F;
     var43 = -1.0F;
    }
    else
    {
     var42 = -1.0F;
     var43 = 1.0F;
    }

     double var44 = par1Entity.motionX;
    double var46 = par1Entity.motionZ;
    par1Entity.motionX = var44 * (double) var40 + var46 * (double) var43;
    par1Entity.motionZ = var44 * (double) var42 + var46 * (double) var41;
    par1Entity.rotationYaw = par8 - (float) (var30 * 90) + (float) (var50 * 90);
   }
   else
   {
    par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D;
   }

    par1Entity.setLocationAndAngles(var49 + 3, var25, var27 + 3, par1Entity.rotationYaw, par1Entity.rotationPitch);
   return true;
  }
  else
  {
   return false;
  }
}

  @Override
public boolean func_85188_a(Entity par1Entity)
{
  byte var2 = 16;
  double var3 = -1.0D;
  int var5 = MathHelper.floor_double(par1Entity.posX);
  int var6 = MathHelper.floor_double(par1Entity.posY);
  int var7 = MathHelper.floor_double(par1Entity.posZ);
  int var8 = var5;
  int var9 = var6;
  int var10 = var7;
  int var11 = 0;
  int var12 = this.random.nextInt(4);
  int var13;
  double var14;
  double var17;
  int var16;
  int var19;
  int var21;
  int var20;
  int var23;
  int var22;
  int var25;
  int var24;
  int var27;
  int var26;
  double var31;
  double var32;

   for (var13 = var5 - var2; var13 <= var5 + var2; ++var13)
  {
   var14 = (double) var13 + 0.5D - par1Entity.posX;

    for (var16 = var7 - var2; var16 <= var7 + var2; ++var16)
   {
    var17 = (double) var16 + 0.5D - par1Entity.posZ;
    label274:

     for (var19 = this.field_85192_a.getActualHeight() - 1; var19 >= 0; --var19)
    {
     if (this.field_85192_a.isAirBlock(var13, var19, var16))
     {
      while (var19 > 0 && this.field_85192_a.isAirBlock(var13, var19 - 1, var16))
      {
       --var19;
      }

       for (var20 = var12; var20 < var12 + 4; ++var20)
      {
       var21 = var20 % 2;
       var22 = 1 - var21;

        if (var20 % 4 >= 2)
       {
        var21 = -var21;
        var22 = -var22;
       }

        for (var23 = 0; var23 < 3; ++var23)
       {
        for (var24 = 0; var24 < 4; ++var24)
        {
         for (var25 = -1; var25 < 4; ++var25)
         {
          var26 = var13 + (var24 - 1) * var21 + var23 * var22;
          var27 = var19 + var25;
          int var28 = var16 + (var24 - 1) * var22 - var23 * var21;

           if (var25 < 0 && !this.field_85192_a.getBlockMaterial(var26, var27, var28).isSolid() || var25 >= 0 && !this.field_85192_a.isAirBlock(var26, var27, var28))
          {
           continue label274;
          }
         }
        }
       }

        var32 = (double) var19 + 0.5D - par1Entity.posY;
       var31 = var14 * var14 + var32 * var32 + var17 * var17;

        if (var3 < 0.0D || var31 < var3)
       {
        var3 = var31;
        var8 = var13;
        var9 = var19;
        var10 = var16;
        var11 = var20 % 4;
       }
      }
     }
    }
   }
  }

   if (var3 < 0.0D)
  {
   for (var13 = var5 - var2; var13 <= var5 + var2; ++var13)
   {
    var14 = (double) var13 + 0.5D - par1Entity.posX;

     for (var16 = var7 - var2; var16 <= var7 + var2; ++var16)
    {
     var17 = (double) var16 + 0.5D - par1Entity.posZ;
     label222:

      for (var19 = this.field_85192_a.getActualHeight() - 1; var19 >= 0; --var19)
     {
      if (this.field_85192_a.isAirBlock(var13, var19, var16))
      {
       while (var19 > 0 && this.field_85192_a.isAirBlock(var13, var19 - 1, var16))
       {
        --var19;
       }

        for (var20 = var12; var20 < var12 + 2; ++var20)
       {
        var21 = var20 % 2;
        var22 = 1 - var21;

         for (var23 = 0; var23 < 4; ++var23)
        {
         for (var24 = -1; var24 < 4; ++var24)
         {
          var25 = var13 + (var23 - 1) * var21;
          var26 = var19 + var24;
          var27 = var16 + (var23 - 1) * var22;

           if (var24 < 0 && !this.field_85192_a.getBlockMaterial(var25, var26, var27).isSolid() || var24 >= 0 && !this.field_85192_a.isAirBlock(var25, var26, var27))
          {
           continue label222;
          }
         }
        }

         var32 = (double) var19 + 0.5D - par1Entity.posY;
        var31 = var14 * var14 + var32 * var32 + var17 * var17;

         if (var3 < 0.0D || var31 < var3)
        {
         var3 = var31;
         var8 = var13;
         var9 = var19;
         var10 = var16;
         var11 = var20 % 2;
        }
       }
      }
     }
    }
   }
  }

   int var29 = var8;
  int var15 = var9;
  var16 = var10;
  int var30 = var11 % 2;
  int var18 = 1 - var30;

   if (var11 % 4 >= 2)
  {
   var30 = -var30;
   var18 = -var18;
  }

   boolean var33;

   if (var3 < 0.0D)
  {
   if (var9 < 70)
   {
    var9 = 70;
   }

    if (var9 > this.field_85192_a.getActualHeight() - 10)
   {
    var9 = this.field_85192_a.getActualHeight() - 10;
   }

    var15 = var9;

    for (var19 = -1; var19 <= 1; ++var19)
   {
    for (var20 = 1; var20 < 3; ++var20)
    {
     for (var21 = -1; var21 < 3; ++var21)
     {
      var22 = var29 + (var20 - 1) * var30 + var19 * var18;
      var23 = var15 + var21;
      var24 = var16 + (var20 - 1) * var18 - var19 * var30;
      var33 = var21 < 0;
      this.field_85192_a.setBlockWithNotify(var22, var23, var24, var33 ? mod_Nexion.PortalBlocks.damageDropped(0) : 0);
     }
    }
   }
  }

   for (var19 = 0; var19 < 4; ++var19)
  {
   this.field_85192_a.editingBlocks = true;

    for (var20 = 0; var20 < 4; ++var20)
   {
    for (var21 = -1; var21 < 4; ++var21)
    {
     var22 = var29 + (var20 - 1) * var30;
     var23 = var15 + var21;
     var24 = var16 + (var20 - 1) * var18;
     var33 = var20 == 0 || var20 == 3 || var21 == -1 || var21 == 3;
     this.field_85192_a.setBlockWithNotify(var22, var23, var24, var33 ? mod_Nexion.PortalBlocks.damageDropped(0) : mod_Nexion.Portalx.blockID);
    }
   }

    this.field_85192_a.editingBlocks = false;

    for (var20 = 0; var20 < 4; ++var20)
   {
    for (var21 = -1; var21 < 4; ++var21)
    {
     var22 = var29 + (var20 - 1) * var30;
     var23 = var15 + var21;
     var24 = var16 + (var20 - 1) * var18;
     this.field_85192_a.notifyBlocksOfNeighborChange(var22, var23, var24, this.field_85192_a.getBlockId(var22, var23, var24));
    }
   }
  }

   return true;
}

  @Override
public void func_85189_a(long par1)
{
  if (par1 % 100L == 0L)
  {
   Iterator var3 = this.field_85190_d.iterator();
   long var4 = par1 - 600L;

    while (var3.hasNext())
   {
    Long var6 = (Long) var3.next();
    PortalPosition var7 = (PortalPosition) this.field_85191_c.getValueByKey(var6.longValue());

     if (var7 == null || var7.field_85087_d < var4)
    {
     var3.remove();
     this.field_85191_c.remove(var6.longValue());
    }
   }
  }
}

}

 

 

 

I am sure the next 2 class files are irrelevant to what the issue is since they determine what the generation settings are for the dimension is. And before you ask what the issue is watch the video. I am not really good at all describing things in text format so just recording a video of the issue is better to see what the issue is then just me failing at describing it....If its something very simple what the issue is then sorry, still getting use to java and forge =p Now for the question, is it possible that the issue is caused by that the block for the portal frame is a MetaData? Will it cause issues when I use the Same blockID but a different metadata ID for the next dimension later on? (p.s. I do not want to modify the BlockFire.java that way my mod have less of a chance conflicting with other mods so...)

A modder uses search for solutions, a coder asks for help only after looking into the main source of the game modding. A master java programmer has solutions and is helpful. Be friendly to others, they will be friendly to you (depending on how their day goes ;) )

Link to comment
Share on other sites

I'll summarize what the issues seemed to be from the video:

 

[*]Portal does not spawn when the portal frame is ignited

[*]Location of the player's exit point is not right next to the portal in the other dimension.

[*]Not sure if this is also an issue or not, but another issue is that the portal in the other dimension does not spawn a frame. 

[*]Another issue is some displeasure regarding the portal blocks not being able to use meta data.

 

Would you say that is a good summary of the issues you are trying to address?

 

Could you give more details on what the different areas of the code are doing and responsible for?  For example, point out where the code that is supposed to detect the fire and open the portal.

Link to comment
Share on other sites

I have yet to add the code to ignite the portal I decided to hold that off till I figure out what the problem is with the block detection. I updated the video with a different one which shows the problem even more. The main issue is trying to get the metadata block to use the proper block. Nomatter what I try the portal block always registers the default meta but not the 2nd meta. The frame not forming was a bug on my part and was fixed when I set the frame block to mod_Nexion.portalBlocksID alone but it never turned out to be the metadata version just the default. As far as I know (of my knolage) dimensions have a issue detecting metadata blocks or I am not using correct syntax to get it to detect it properly =/ the PortalBlocks.class and the ItemBlockMeta.class handles the MetaData blocks for the portal frames...the rest is basically easy to tell =p

A modder uses search for solutions, a coder asks for help only after looking into the main source of the game modding. A master java programmer has solutions and is helpful. Be friendly to others, they will be friendly to you (depending on how their day goes ;) )

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.