Im creating a custom dimension. the dimension works,but i cant figure out what is wrong, each time i light the portal with my custom fire, the fire just keeps on dissappearing. my code
(The fire block itself)
package com.mrfloatingcow.blocks;
import static net.minecraftforge.common.util.ForgeDirection.DOWN;
import static net.minecraftforge.common.util.ForgeDirection.EAST;
import static net.minecraftforge.common.util.ForgeDirection.NORTH;
import static net.minecraftforge.common.util.ForgeDirection.SOUTH;
import static net.minecraftforge.common.util.ForgeDirection.UP;
import static net.minecraftforge.common.util.ForgeDirection.WEST;
import com.mrfloatingcow.lib.RefStrings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFire;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
public class gFire extends BlockFire{
public gFire(int par1){
super();
this.setBlockTextureName(RefStrings.MODID + ":gFire");
}
public void onBlockAdded(World world, int x, int y, int z){
if(world.getBlock(x, y - 1, z) != MBlocks.rbBlock || !((rbPortal)MBlocks.rbPortal).tryToCreatePortal(world, x ,y , z)){
if(!world.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && !this.canNeighborBurn(world, x, y, z)){
world.setBlockToAir(x, y, z);
}else{
world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + world.rand.nextInt(10));
}
}
}
private boolean canNeighborBurn(World p_149847_1_, int p_149847_2_, int p_149847_3_, int p_149847_4_)
{
return this.canCatchFire(p_149847_1_, p_149847_2_ + 1, p_149847_3_, p_149847_4_, WEST ) ||
this.canCatchFire(p_149847_1_, p_149847_2_ - 1, p_149847_3_, p_149847_4_, EAST ) ||
this.canCatchFire(p_149847_1_, p_149847_2_, p_149847_3_ - 1, p_149847_4_, UP ) ||
this.canCatchFire(p_149847_1_, p_149847_2_, p_149847_3_ + 1, p_149847_4_, DOWN ) ||
this.canCatchFire(p_149847_1_, p_149847_2_, p_149847_3_, p_149847_4_ - 1, SOUTH) ||
this.canCatchFire(p_149847_1_, p_149847_2_, p_149847_3_, p_149847_4_ + 1, NORTH);
}
}
(The Teleporter)
public class rbPortal extends BlockPortal{
package com.mrfloatingcow.blocks;
import com.mrfloatingcow.creativetabs.MCreativeTabs;
import com.mrfloatingcow.dimensions.dimensionRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPortal;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.World;
public rbPortal (){
super();
this.setCreativeTab(MCreativeTabs.tabBlocks);
}
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity){
if(entity.ridingEntity == null && entity.riddenByEntity == null && entity instanceof EntityPlayerMP){
EntityPlayerMP player = (EntityPlayerMP) entity;
FMLCommonHandler.instance().getMinecraftServerInstance();
MinecraftServer server = MinecraftServer.getServer();
if(player.timeUntilPortal > 0){
player.timeUntilPortal = 10;
}else if(player.dimension != dimensionRegistry.dimensionId){
player.timeUntilPortal = 10;
player.mcServer.getConfigurationManager().transferPlayerToDimension(player, dimensionRegistry.dimensionId, new RainbowTPerTest(server.worldServerForDimension(dimensionRegistry.dimensionId)));
}else{
player.timeUntilPortal = 10;
player.mcServer.getConfigurationManager().transferPlayerToDimension(player, 0, new RainbowTPerTest(server.worldServerForDimension(0)));
}
}
}
public boolean tryToCreatePortal(World world, int x, int y, int z){
byte b0 = 0;
byte b1 = 0;
if(world.getBlock(x - 1, y, z) == MBlocks.rbBlock || world.getBlock(x + 1, y, z) == MBlocks.rbBlock){
b0 = 1;
}
if(world.getBlock(x, y, z - 1) == MBlocks.rbBlock || world.getBlock(x, y, z + 1) == MBlocks.rbBlock){
b1 = 1;
}
if(b0 == b1){
return false;
}else{
if(world.isAirBlock(x - b0, y, z - b1)){
x -= b0;
z -= 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){
Block k = world.getBlock(x + (b0 * 1), y + j, z + (b1 * i));
boolean isAirBlock = world.isAirBlock(x + b0 * i, y + j, z + b1 * i);
if(flag){
if(k != MBlocks.rbBlock ){
return false;
}
}else if(!isAirBlock && k != MBlocks.gFire){
return false;
}
}
}
}
for(int l0 = 0; l0 < 2; l0++){
for(int l1 = 0; l1 < 3; l1++){
world.setBlock(x + b0 * 1, y + l1, z + b1 * l0, MBlocks.rbPortal);
}
}
return true;
}
}
public void onNeighborBlockChange(World world, int par2, int par3, int par4, int par5){
}
}
If you guys need more of my code(to help me fix it of course), just reply