MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Plusieurs problèmes de mise à jour

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.9
    69 Messages 8 Publieurs 13.1k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      Tu utilises l’id -1 pour ta dimension ?

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

      1 réponse Dernière réponse Répondre Citer 0
      • AxaurusA Hors-ligne
        Axaurus
        dernière édition par

        Non, ma dimension c’est -5. Mais j’ai mis -1 pour que ça m’emmène vers le Nether, pour être sûr que c’est pas ma dimension qui bug

        1 réponse Dernière réponse Répondre Citer 0
        • AxaurusA Hors-ligne
          Axaurus
          dernière édition par

          Salut
          Je reviens après très longtemps (quand même 3 semaines). J’étais pas mal occupée par le lycée.
          (Je ne sais pas si vous vous souvenez toujours du problème, je vais vous l’énoncer :
          :::
          Pour faire court, avant j’utilisais une fonction (transferPlayerToDimension) pour me tp à ma dimension custom. Mais depuis la 1.9.4 (pareil en 1.10), ça crash quand j’entre dans le portail. Le voici :

          [18:27:16] [Server thread/FATAL]: Error executing task
          java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Colliding entity with block
          at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_92]
          at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_92]
          at net.minecraft.util.Util.runTask(Util.java:26) [Util.class:?]
          at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:740) [MinecraftServer.class:?]
          at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:685) [MinecraftServer.class:?]
          at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [IntegratedServer.class:?]
          at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:534) [MinecraftServer.class:?]
          at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
          Caused by: net.minecraft.util.ReportedException: Colliding entity with block
          at net.minecraft.entity.Entity.moveEntity(Entity.java:965) ~[Entity.class:?]
          at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:500) ~[NetHandlerPlayServer.class:?]
          at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
          at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
          at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
          at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
          at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
          at net.minecraft.util.Util.runTask(Util.java:25) ~[Util.class:?]
          … 5 more
          Caused by: java.lang.NullPointerException
          at net.minecraft.world.Teleporter.placeInExistingPortal(Teleporter.java:134) ~[Teleporter.class:?]
          at net.minecraft.world.Teleporter.placeInPortal(Teleporter.java:38) ~[Teleporter.class:?]
          at net.minecraft.server.management.PlayerList.transferEntityToWorld(PlayerList.java:734) ~[PlayerList.class:?]
          at net.minecraft.server.management.PlayerList.transferPlayerToDimension(PlayerList.java:641) ~[PlayerList.class:?]
          at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:244) ~[BlockPortalFrightful.class:?]
          at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1040) ~[Entity.class:?]
          at net.minecraft.entity.Entity.moveEntity(Entity.java:958) ~[Entity.class:?]
          at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:500) ~[NetHandlerPlayServer.class:?]
          at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
          at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
          at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
          at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
          at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
          at net.minecraft.util.Util.runTask(Util.java:25) ~[Util.class:?]
          … 5 more
          [18:27:16] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 4445ms behind, skipping 88 tick(s)
          [18:27:17] [Server thread/INFO] [FML]: Unloading dimension -5
          

          J’avais ensuite essayer avec le Nether et le teleporter de base mais pareil.
          J’ai testé plein de trucs avec l’aide de plusieurs membres, mais toujours rien. Voilà au point où on en est
          :::
          Bref, j’ai remis l’ancienne fonction (transferPlayerToDimension, celle qui marche pour tout le monde sauf pour moi 😢 ) en modifiant des trucs, toujours rien. Même quand j’essaye d’y accéder depuis le Nether. J’ai pensé que c’étais ma version de Forge qui buguait et ai voulu télécharger la recommandé, mais c’est celle là que j’ai.
          Le crash m’indique cette ligne : ```java
                     d6 = (double)(blockpattern$patternhelper.getFrontTopLeft().getY() + 1) - entityIn.getLastPortalVec().yCoord * (double)blockpattern$patternhelper.getHeight();

          Il y a une NPE dans le crash. J'avais donc pensé voir le crash-report en pensant que y'aurai plus d'info, mais il n'existe pas. Et c'est normal, Minecraft ne crash pas (il se fige juste mais ne s'éteint pas). Du coup, j'avais pensé à faire crasher Minecraft au moment du tp histoire de voir ce qu'il y aura dans le crash-report, peut-être une chance de nous aider.
          
          En gros, on est au même point qu'avant :/
          
          Merci d'avance
          1 réponse Dernière réponse Répondre Citer 0
          • AxaurusA Hors-ligne
            Axaurus
            dernière édition par

            Salut
            J’ai testé 3 trucs mais rien n’a marché.
            J’ai testé de recréer un nouveau projet et ne mettre que le blockPortal (en plus des proxy et de l’activateur) et de testé en pensant que c’est un truc qui corrompt le teleporter, mais c’est pareil ça ne marche pas.
            J’ai ensuite testé de build le mod en pensant que c’est Eclipse qui fait bug mais pareil, ça ne marche pas.
            J’ai, pour finir, testé d’utiliser mon teleporter, mais rien de plus (là, j’étais pratiquement sûr que ça ne marchait pas vu que c’est une copie du teleporter de base).
            Je suis vraiment désespéré. Je continue tout de même de chercher.
            Si vous avez une idée, je suis preneur.
            Merci d’avance

            1 réponse Dernière réponse Répondre Citer 0
            • SCAREXS Hors-ligne
              SCAREX
              dernière édition par

              Si tu n’arrives pas à build le mod c’est qu’il y a un problème dans le code : fait un refresh du workspace dans eclipse et regarde l’onglet problème, si rien ne s’affiche regarde les logs du build.
              Pour ce qui est du crash ce n’est pas normal que ce soit le téléporteur de minecraft qui soit utilisé

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

              1 réponse Dernière réponse Répondre Citer 0
              • AxaurusA Hors-ligne
                Axaurus
                dernière édition par

                J’ai dû mal expliqué. J’ai réussi à build et à tester dans Minecraft. C’est dans Minecraft que ça freeze pareil que dans éclipse. (J’ai testé ça en pensant que c’est Ec’ipse qui faisait buguer)
                C’est tout à fait normal que ça utilise le teleporter de base, j’ai fait en sorte que ça l’utilise le temps de reparer (et je remettrai le mien ensuite)

                1 réponse Dernière réponse Répondre Citer 0
                • SCAREXS Hors-ligne
                  SCAREX
                  dernière édition par

                  Si minecraft freeze et que tu n’as pas de rapport de crash ni rien c’est soit que tu utilises trop de puissance (boucle infinie lente, ou algorithme trop gourmand), soit qu’il faut investir dans un pc

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

                  1 réponse Dernière réponse Répondre Citer 0
                  • AxaurusA Hors-ligne
                    Axaurus
                    dernière édition par

                    Salut
                    Je n’ai pas de crash à proprement dit : j’ai une erreur dans la console, mais Minecraft ne s’éteint pas et je n’ai pas de crash-report, juste l’erreur dans la console. J’ai peut-être une mauvaise définition de crash

                    Sinon, j’ai essayé de mettre le transfer dans une commande, mais quand je la fait, c’est la même erreur.
                    J’ai essayé de “refaire” la classe du blockPortal en réduisant : ```java
                    package thisishalloween.block;

                    import java.util.Map;
                    import java.util.Random;

                    import javax.annotation.Nullable;

                    import com.google.common.cache.LoadingCache;
                    import com.google.common.collect.Maps;

                    import net.minecraft.block.Block;
                    import net.minecraft.block.BlockBreakable;
                    import net.minecraft.block.BlockPortal;
                    import net.minecraft.block.SoundType;
                    import net.minecraft.block.material.Material;
                    import net.minecraft.block.properties.IProperty;
                    import net.minecraft.block.properties.PropertyEnum;
                    import net.minecraft.block.state.BlockStateContainer;
                    import net.minecraft.block.state.BlockWorldState;
                    import net.minecraft.block.state.IBlockState;
                    import net.minecraft.block.state.pattern.BlockPattern;
                    import net.minecraft.entity.Entity;
                    import net.minecraft.entity.EntityList;
                    import net.minecraft.entity.monster.EntityPigZombie;
                    import net.minecraft.entity.player.EntityPlayer;
                    import net.minecraft.entity.player.EntityPlayerMP;
                    import net.minecraft.init.Blocks;
                    import net.minecraft.init.SoundEvents;
                    import net.minecraft.item.ItemMonsterPlacer;
                    import net.minecraft.item.ItemStack;
                    import net.minecraft.server.MinecraftServer;
                    import net.minecraft.util.BlockRenderLayer;
                    import net.minecraft.util.EnumFacing;
                    import net.minecraft.util.EnumParticleTypes;
                    import net.minecraft.util.Rotation;
                    import net.minecraft.util.SoundCategory;
                    import net.minecraft.util.math.AxisAlignedBB;
                    import net.minecraft.util.math.BlockPos;
                    import net.minecraft.util.math.MathHelper;
                    import net.minecraft.util.math.Vec3d;
                    import net.minecraft.world.IBlockAccess;
                    import net.minecraft.world.Teleporter;
                    import net.minecraft.world.World;
                    import net.minecraft.world.WorldServer;
                    import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
                    import net.minecraftforge.fml.relauncher.Side;
                    import net.minecraftforge.fml.relauncher.SideOnly;
                    import thisishalloween.CreateBlocks;
                    import thisishalloween.ThisisHalloween;
                    import thisishalloween.world.frightful.TeleporterFrightful;

                    public class BlockPortalFrightful extends BlockPortal
                    {
                    public static final PropertyEnum <enumfacing.axis>AXIS = PropertyEnum.<enumfacing.axis>create(“axis”, EnumFacing.Axis.class, new EnumFacing.Axis[] {EnumFacing.Axis.X, EnumFacing.Axis.Z});
                    protected static final AxisAlignedBB field_185683_b = new AxisAlignedBB(0.0D, 0.0D, 0.375D, 1.0D, 1.0D, 0.625D);
                    protected static final AxisAlignedBB field_185684_c = new AxisAlignedBB(0.375D, 0.0D, 0.0D, 0.625D, 1.0D, 1.0D);
                    protected static final AxisAlignedBB field_185685_d = new AxisAlignedBB(0.375D, 0.0D, 0.375D, 0.625D, 1.0D, 0.625D);

                    public BlockPortalFrightful()
                    {
                    setTickRandomly(false);
                    setBlockUnbreakable();
                    isCollidable();
                    }

                    public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
                    {

                    }

                    public boolean trySpawnPortal(World worldIn, BlockPos pos)
                    {
                    BlockPortalFrightful.Size blockportal$size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.X);

                    if (blockportal$size.isValid() && blockportal$size.portalBlockCount == 0)
                    {
                    blockportal$size.placePortalBlocks();
                    return true;
                    }

                    BlockPortalFrightful.Size blockportal$size1 = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.Z);

                    if (blockportal$size1.isValid() && blockportal$size1.portalBlockCount == 0)
                    {
                    blockportal$size1.placePortalBlocks();
                    return true;
                    }
                    return false;
                    }

                    public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn)
                    {
                    EnumFacing.Axis axis = (EnumFacing.Axis)state.getValue(AXIS);

                    if (axis == EnumFacing.Axis.X)
                    {
                    BlockPortalFrightful.Size size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.X);

                    if (!size.isValid() || size.portalBlockCount < size.width * size.height)
                    {
                    if(ThisisHalloween.portal)
                    {
                    worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
                    }
                    }
                    }
                    else if (axis == EnumFacing.Axis.Z)
                    {
                    BlockPortalFrightful.Size size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.Z);

                    if (!size.isValid() || size.portalBlockCount < size.width * size.height)
                    {
                    if(ThisisHalloween.portal)
                    {
                    worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
                    }
                    }
                    }
                    }

                    @Override
                    public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn)
                    {
                    if ((entityIn.getRidingEntity() == null) && (!entityIn.isDead))
                    {
                    if(entityIn instanceof EntityPlayerMP)
                    {
                    EntityPlayerMP player = (EntityPlayerMP) entityIn;
                    if(entityIn.isEntityAlive())
                    {
                    if (player.dimension != -1)
                    {
                    // ThisisHalloween.portal = false;
                    // player.timeUntilPortal = 100;
                    player.mcServer.getPlayerList().transferPlayerToDimension(player, -1, new Teleporter(player.mcServer.worldServerForDimension(-1)));
                    // player.timeUntilPortal = 100;
                    // ThisisHalloween.portal = true;
                    }
                    else
                    {
                    player.mcServer.getPlayerList().transferPlayerToDimension(player, 0, new Teleporter(player.mcServer.worldServerForDimension(0)));
                    // player.timeUntilPortal = 100;
                    }
                    }
                    }
                    }
                    }

                    @SideOnly(Side.CLIENT)
                    public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand)
                    {

                    }

                    protected BlockStateContainer createBlockState()
                    {
                    return new BlockStateContainer(this, new IProperty[] {AXIS});
                    }

                    public static class Size
                    {
                    private final World world;
                    private final EnumFacing.Axis axis;
                    private final EnumFacing rightDir;
                    private final EnumFacing leftDir;
                    private int portalBlockCount = 0;
                    private BlockPos bottomLeft;
                    private int height;
                    private int width;

                    public Size(World worldIn, BlockPos p_i45694_2_, EnumFacing.Axis p_i45694_3_)
                    {
                    this.world = worldIn;
                    this.axis = p_i45694_3_;

                    if (p_i45694_3_ == EnumFacing.Axis.X)
                    {
                    this.leftDir = EnumFacing.EAST;
                    this.rightDir = EnumFacing.WEST;
                    }
                    else
                    {
                    this.leftDir = EnumFacing.NORTH;
                    this.rightDir = EnumFacing.SOUTH;
                    }

                    for (BlockPos blockpos = p_i45694_2_; p_i45694_2_.getY() > blockpos.getY() - 21 && p_i45694_2_.getY() > 0 && (isEmptyBlock(worldIn.getBlockState(p_i45694_2_.down()), p_i45694_2_.down())); p_i45694_2_ = p_i45694_2_.down())
                    {

                    }

                    int i = this.getDistanceUntilEdge(p_i45694_2_, this.leftDir) - 1;

                    if (i >= 0)
                    {
                    this.bottomLeft = p_i45694_2_.offset(this.leftDir, i);
                    this.width = this.getDistanceUntilEdge(this.bottomLeft, this.rightDir);

                    if (this.width < 1 || this.width > 21)
                    {
                    this.bottomLeft = null;
                    this.width = 0;
                    }
                    }

                    if (this.bottomLeft != null)
                    {
                    this.height = this.calculatePortalHeight();
                    }
                    }

                    protected int getDistanceUntilEdge(BlockPos p_180120_1_, EnumFacing p_180120_2_)
                    {
                    int i = 0;
                    if(i < 22){i++;}

                    BlockPos blockpos = p_180120_1_.offset(p_180120_2_, i);

                    if (!this.isEmptyBlock(this.world.getBlockState(blockpos), blockpos) || this.world.getBlockState(blockpos.down()).getBlock() != Blocks.NETHER_BRICK)
                    {

                    }

                    Block block = this.world.getBlockState(p_180120_1_.offset(p_180120_2_, i)).getBlock();
                    return block == Blocks.NETHER_BRICK ? i : 0;
                    }

                    public int getHeight()
                    {
                    return this.height;
                    }

                    public int getWidth()
                    {
                    return this.width;
                    }

                    protected int calculatePortalHeight()
                    {
                    label190:
                    for (this.height = 0; this.height < 21; this.height += 1)
                    {
                    for (int i = 0; i < this.width; ++i)
                    {
                    BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i).up(this.height);
                    IBlockState state = this.world.getBlockState(blockpos);
                    Block block = state.getBlock();

                    if (!this.isEmptyBlock(state, blockpos))
                    {
                    break label190;
                    }

                    if (block == CreateBlocks.portalFrightful)
                    {
                    this.portalBlockCount += 1;
                    }

                    if (i == 0)
                    {
                    block = this.world.getBlockState(blockpos.offset(this.leftDir)).getBlock();

                    if (block != Blocks.NETHER_BRICK)
                    {
                    break label190;
                    }
                    }
                    else if (i == this.width - 1)
                    {
                    block = this.world.getBlockState(blockpos.offset(this.rightDir)).getBlock();

                    if (block != Blocks.NETHER_BRICK)
                    {
                    break label190;
                    }
                    }
                    }
                    }

                    for (int j = 0; j < this.width; ++j)
                    {
                    if (this.world.getBlockState(this.bottomLeft.offset(this.rightDir, j).up(this.height)).getBlock() != Blocks.NETHER_BRICK)
                    {
                    this.height = 0;
                    break;
                    }
                    }

                    if ((this.height <= 21) && (this.height >= 2))
                    {
                    return this.height;
                    }

                    this.bottomLeft = null;
                    this.width = 0;
                    this.height = 0;
                    return 0;
                    }

                    protected boolean isEmptyBlock(IBlockState blockIn, BlockPos pos)
                    {
                    return (blockIn.getBlock().isAir(blockIn, world, pos)) || (blockIn.getBlock() == CreateBlocks.portalFrightful);
                    }

                    public boolean isValid()
                    {
                    return (this.bottomLeft != null) && (this.width >= 1) && (this.width <= 21) && (this.height >= 2) && (this.height <= 21);
                    }

                    public void placePortalBlocks()
                    {
                    for (int i = 0; i < this.width; ++i)
                    {
                    BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i);

                    for (int j = 0; j < this.height; ++j)
                    {
                    this.world.setBlockState(blockpos.up(j), CreateBlocks.portalFrightful.getDefaultState().withProperty(BlockPortalFrightful.AXIS, this.axis), 2);
                    }
                    }
                    }
                    }
                    }

                    déjà, je comprend pas pourquoi dans l'erreur, y'a un NPE. Pourtant, rien n'est null.
                    
                    PS : Voilà l'erreur pour ceux qui n'ont pas lu les messages au-dessus :
                    

                    Caused by: java.lang.NullPointerException
                    at net.minecraft.world.Teleporter.placeInExistingPortal(Teleporter.java:134) ~[Teleporter.class:?]
                    at net.minecraft.world.Teleporter.placeInPortal(Teleporter.java:38) ~[Teleporter.class:?]
                    at net.minecraft.server.management.PlayerList.transferEntityToWorld(PlayerList.java:734) ~[PlayerList.class:?]
                    at net.minecraft.server.management.PlayerList.transferPlayerToDimension(PlayerList.java:641) ~[PlayerList.class:?]
                    at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:137) ~[BlockPortalFrightful.class:?]
                    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1040) ~[Entity.class:?]
                    at net.minecraft.entity.Entity.moveEntity(Entity.java:958) ~[Entity.class:?]
                    at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:500) ~[NetHandlerPlayServer.class:?]
                    at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
                    at net.minecraft.network.play.client.CPacketPlayer$PositionRotation.processPacket(CPacketPlayer.java:125) ~[CPacketPlayer$PositionRotation.class:?]
                    at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
                    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
                    at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
                    at net.minecraft.util.Util.runTask(Util.java:25) ~[Util.class:?]
                    … 5 more

                    
                    EDIT : J'ai enfin réussi à faire crash le jeu (oui je sais, un mec qui fait crash un jeu est content -_- ). Bref, j'ai utilisé la fonction transferEntityToWorld, en voulant toujours me téléporter vers le Nether et en utilisant le teleporter de base. Dans le crash-report, 2 chose m'ont interpellé :
                    

                    Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
                    Entity’s Vehicle: ERROR NullPointerException: null

                    Est-ce normal que le type de l'entité soit null et en même temps EntityPlayerMP (c'est ce que j'en ai compris) ?
                    Sur le véhicule, ça dit erreur NPE. Ce qui est bizarre, c'est que ça tp seulement si le joueur n'est pas monté ou n'est pas en train de monté.
                    
                    Voilà le code :
                    ```java
                    if ((entityIn.getRidingEntity() == null) && (!entityIn.isDead) && (!entityIn.isBeingRidden()) && (!entityIn.isRiding()))
                    {
                    if(entityIn instanceof EntityPlayerMP)
                    {
                    EntityPlayerMP player = (EntityPlayerMP) entityIn;
                    if(entityIn.isEntityAlive())
                    {
                    if (player.dimension != -1)
                    {
                    // ThisisHalloween.portal = false;
                    // player.timeUntilPortal = 100;
                    //player.mcServer.getPlayerList().transferPlayerToDimension(player, -1, new Teleporter(player.mcServer.worldServerForDimension(-1)));
                    player.mcServer.getPlayerList().transferEntityToWorld(player, -1, player.mcServer.worldServerForDimension(0), player.mcServer.worldServerForDimension(-1), new Teleporter(player.mcServer.worldServerForDimension(-1)));
                    // player.timeUntilPortal = 100;
                    // ThisisHalloween.portal = true;
                    }
                    else
                    {
                    // player.mcServer.getPlayerList().transferPlayerToDimension(player, 0, new Teleporter(player.mcServer.worldServerForDimension(0)));
                    // player.timeUntilPortal = 100;
                    }
                    }
                    }
                    }
                    

                    Merci d’avance

                    EDIT n°2 : Je vous met quand même le crash-report : ```
                    ---- Minecraft Crash Report ----
                    // Don’t be sad, have a hug! ❤

                    Time: 24/09/16 23:56
                    Description: Colliding entity with block

                    java.lang.NullPointerException: Colliding entity with block

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

                    – Head –
                    Thread: Server thread
                    Stacktrace:
                    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1045)

                    – Block being collided with –
                    Details:
                    Block: this_is_halloween:PortalFrightful[axis=x]
                    Block location: World: (-575,4,-1163), Chunk: (at 1,0,5 in -36,-73; contains blocks -576,0,-1168 to -561,255,-1153), Region: (-2,-3; contains chunks -64,-96 to -33,-65, blocks -1024,0,-1536 to -513,255,-1025)
                    Stacktrace:
                    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1045)
                    at net.minecraft.entity.Entity.moveEntity(Entity.java:958)
                    at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1952)
                    at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1921)
                    at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2382)
                    at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:549)
                    at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2174)
                    at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:253)
                    at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:341)
                    at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:175)
                    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:196)
                    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:308)
                    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:195)
                    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:804)
                    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:685)
                    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155)
                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:534)
                    at java.lang.Thread.run(Unknown Source)

                    – Entity being checked for collision –
                    Details:
                    Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
                    Entity ID: 49
                    Entity Name: Player732
                    Entity’s Exact location: -71,00, 4,25, -145,00
                    Entity’s Block location: World: (-71,4,-145), Chunk: (at 9,0,15 in -5,-10; contains blocks -80,0,-160 to -65,255,-145), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1)
                    Entity’s Momentum: 0,00, 0,00, 0,00
                    Entity’s Passengers: []
                    Entity’s Vehicle: ERROR NullPointerException: null

                    – Player being ticked –
                    Details:
                    Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
                    Entity ID: 49
                    Entity Name: Player732
                    Entity’s Exact location: -71,00, 4,25, -145,00
                    Entity’s Block location: World: (-71,4,-145), Chunk: (at 9,0,15 in -5,-10; contains blocks -80,0,-160 to -65,255,-145), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1)
                    Entity’s Momentum: 0,00, 0,00, 0,00
                    Entity’s Passengers: []
                    Entity’s Vehicle: ERROR NullPointerException: null

                    – Ticking connection –
                    Details:
                    Connection: net.minecraft.network.NetworkManager@3b2dafa7

                    – System Details –
                    Details:
                    Minecraft Version: 1.9.4
                    Operating System: Windows 10 (amd64) version 10.0
                    Java Version: 1.8.0_92, Oracle Corporation
                    Java VM Version: Java HotSpot™ 64-Bit Server VM (mixed mode), Oracle Corporation
                    Memory: 471250968 bytes (449 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
                    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
                    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
                    FML: MCP 9.28 Powered by Forge 12.17.0.1976 4 mods loaded, 4 mods active
                    States: ‘U’ = Unloaded ‘L’ = Loaded ‘C’ = Constructed ‘H’ = Pre-initialized ‘I’ = Initialized ‘J’ = Post-initialized ‘A’ = Available ‘D’ = Disabled ‘E’ = Errored
                    UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)
                    UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.9.4-12.17.0.1976.jar)
                    UCHIJAAAA Forge{12.17.0.1976} [Minecraft Forge] (forgeSrc-1.9.4-12.17.0.1976.jar)
                    UCHIJAAAA This_is_Halloween{1.3} [This_is_Halloween] (bin)
                    Loaded coremods (and transformers):
                    GL info: ERROR RuntimeException: No OpenGL context found in the current thread.
                    Profiler Position: N/A (disabled)
                    Player Count: 1 / 8; [EntityPlayerMP[‘Player732’/49, l=‘New World’, x=-71,00, y=4,25, z=-145,00]]
                    Type: Integrated Server (map_client.txt)
                    Is Modded: Definitely; Client brand changed to ‘fml,forge’

                    1 réponse Dernière réponse Répondre Citer 0
                    • SCAREXS Hors-ligne
                      SCAREX
                      dernière édition par

                      Le joueur ne doit pas être transféré correctement je pense

                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                      Pas de demandes de support par MP ni par skype SVP.
                      Je n'accepte sur skype que l…

                      1 réponse Dernière réponse Répondre Citer 0
                      • AxaurusA Hors-ligne
                        Axaurus
                        dernière édition par

                        Salut
                        Désolé du temps de la réponse.
                        Ca marche enfin ……après 3 moi -_-

                        C’était dans le teleporter, j’ai juste mis quelques trucs en commentaire et ça remarche (je met le code en bas, j’ai ajouté des TODO).
                        Par contre, j’ai quelques problèmes : 1) Quand je rentre dans le portal, ça me tp bien. Seulement si je suis en créatif. Si je suis en survie, ça me tp à la couche 4. Pourtant, le portail est bien créer et activé.
                        2) Ensuite, quand je casse un block du portail (pas la structure, le portal), seul le block que j’ai cassé est détruit, pas les autres.
                        3) Je ne peux pas revenir dans l’Overworld sans casser et recréer le portail
                        4) Enfin, une fois que j’ai passer le portail, je ne peux plus créer d’autres portail à cause d’une variable je pense (on m’avais conseillé de la créer pour régler ce problème, et ça marchait. Jusqu’à aujorud’hui).

                        Le BlockPortal :

                        package thisishalloween.block;
                        
                        import java.util.Map;
                        import java.util.Random;
                        
                        import javax.annotation.Nullable;
                        
                        import com.google.common.cache.LoadingCache;
                        import com.google.common.collect.Maps;
                        
                        import net.minecraft.block.Block;
                        import net.minecraft.block.BlockBreakable;
                        import net.minecraft.block.SoundType;
                        import net.minecraft.block.material.Material;
                        import net.minecraft.block.properties.IProperty;
                        import net.minecraft.block.properties.PropertyEnum;
                        import net.minecraft.block.state.BlockStateContainer;
                        import net.minecraft.block.state.BlockWorldState;
                        import net.minecraft.block.state.IBlockState;
                        import net.minecraft.block.state.pattern.BlockPattern;
                        import net.minecraft.entity.Entity;
                        import net.minecraft.entity.EntityList;
                        import net.minecraft.entity.monster.EntityPigZombie;
                        import net.minecraft.entity.player.EntityPlayer;
                        import net.minecraft.entity.player.EntityPlayerMP;
                        import net.minecraft.init.Blocks;
                        import net.minecraft.init.SoundEvents;
                        import net.minecraft.item.ItemMonsterPlacer;
                        import net.minecraft.item.ItemStack;
                        import net.minecraft.server.MinecraftServer;
                        import net.minecraft.server.management.PlayerList;
                        import net.minecraft.util.BlockRenderLayer;
                        import net.minecraft.util.EnumFacing;
                        import net.minecraft.util.EnumParticleTypes;
                        import net.minecraft.util.Rotation;
                        import net.minecraft.util.SoundCategory;
                        import net.minecraft.util.math.AxisAlignedBB;
                        import net.minecraft.util.math.BlockPos;
                        import net.minecraft.util.math.MathHelper;
                        import net.minecraft.util.math.Vec3d;
                        import net.minecraft.world.IBlockAccess;
                        import net.minecraft.world.Teleporter;
                        import net.minecraft.world.World;
                        import net.minecraft.world.WorldServer;
                        import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
                        import net.minecraftforge.fml.relauncher.Side;
                        import net.minecraftforge.fml.relauncher.SideOnly;
                        import thisishalloween.CreateBlocks;
                        import thisishalloween.ThisisHalloween;
                        import thisishalloween.world.frightful.TeleporterFrightful;
                        
                        public class BlockPortalFrightful extends BlockBreakable
                        {
                        public static final PropertyEnum <enumfacing.axis>AXIS = PropertyEnum.<enumfacing.axis>create("axis", EnumFacing.Axis.class, new EnumFacing.Axis[] {EnumFacing.Axis.X, EnumFacing.Axis.Z});
                           protected static final AxisAlignedBB field_185683_b = new AxisAlignedBB(0.0D, 0.0D, 0.375D, 1.0D, 1.0D, 0.625D);
                           protected static final AxisAlignedBB field_185684_c = new AxisAlignedBB(0.375D, 0.0D, 0.0D, 0.625D, 1.0D, 1.0D);
                           protected static final AxisAlignedBB field_185685_d = new AxisAlignedBB(0.375D, 0.0D, 0.375D, 0.625D, 1.0D, 0.625D);
                        
                        public BlockPortalFrightful()
                        {
                        super(Material.PORTAL, false);
                        this.setDefaultState(this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.X));
                        this.setTickRandomly(true);
                        this.setSoundType(SoundType.GLASS);
                        }
                        //TODO
                           public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
                           {
                               super.updateTick(worldIn, pos, state, rand);
                        
                               if (worldIn.provider.isSurfaceWorld() && worldIn.getGameRules().getBoolean("doMobSpawning") && rand.nextInt(2000) < worldIn.getDifficulty().getDifficultyId())
                               {
                                   int i = pos.getY();
                                   BlockPos blockpos;
                        
                                   for (blockpos = pos; !worldIn.getBlockState(blockpos).isFullyOpaque() && blockpos.getY() > 0; blockpos = blockpos.down())
                                   {
                                       ;
                                   }
                                   if (i > 0 && !worldIn.getBlockState(blockpos.up()).isNormalCube())
                                   {
                                       Entity entity = ItemMonsterPlacer.spawnCreature(worldIn, EntityList.getEntityStringFromClass(EntityPigZombie.class), (double)blockpos.getX() + 0.5D, (double)blockpos.getY() + 1.1D, (double)blockpos.getZ() + 0.5D);
                        
                                       if (entity != null)
                                       {
                                           entity.timeUntilPortal = entity.getPortalCooldown();
                                       }
                                   }
                               }
                           }
                        
                           @Nullable
                           public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
                           {
                               return NULL_AABB;
                           }
                        
                           public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
                           {
                               switch ((EnumFacing.Axis)state.getValue(AXIS))
                               {
                                   case X:
                                       return field_185683_b;
                                   case Y:
                                   default:
                                       return field_185685_d;
                                   case Z:
                                       return field_185684_c;
                               }
                           }
                        
                        public static int getMetaForAxis(EnumFacing.Axis axis)
                        {
                        return axis == EnumFacing.Axis.X ? 1 : (axis == EnumFacing.Axis.Z ? 2 : 0);
                        }
                        
                        public boolean isFullCube(IBlockState state)
                        {
                        return false;
                        }
                        
                           public boolean trySpawnPortal(World worldIn, BlockPos pos)
                           {
                               BlockPortalFrightful.Size blockportal$size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.X);
                        
                               if (blockportal$size.isValid() && blockportal$size.portalBlockCount == 0)
                               {
                                   blockportal$size.placePortalBlocks();
                                   return true;
                               }
                               else
                               {
                                BlockPortalFrightful.Size blockportal$size1 = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.Z);
                        
                                   if (blockportal$size1.isValid() && blockportal$size1.portalBlockCount == 0)
                                   {
                                       blockportal$size1.placePortalBlocks();
                                       return true;
                                   }
                                   else
                                   {
                                       return false;
                                   }
                               }
                           }
                        
                        public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn)
                        {
                        EnumFacing.Axis axis = (EnumFacing.Axis)state.getValue(AXIS);
                        
                        if (axis == EnumFacing.Axis.X)
                        {
                        BlockPortalFrightful.Size size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.X);
                        
                        if (!size.isValid() || size.portalBlockCount < size.width * size.height)
                        {
                        if(ThisisHalloween.portal)
                        {
                        worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
                        }
                        }
                        }
                        else if (axis == EnumFacing.Axis.Z)
                        {
                        BlockPortalFrightful.Size size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.Z);
                        
                        if (!size.isValid() || size.portalBlockCount < size.width * size.height)
                        {
                        if(ThisisHalloween.portal)
                        {
                        worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
                        }
                        }
                        }
                        }
                        
                        @SideOnly(Side.CLIENT)
                        public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
                        {
                        EnumFacing.Axis axis = null;
                        pos = pos.offset(side);
                        
                        if (blockState.getBlock() == this)
                        {
                        axis = (EnumFacing.Axis)blockState.getValue(AXIS);
                        
                        if (axis == null)
                        {
                        return false;
                        }
                        
                        if (axis == EnumFacing.Axis.Z && side != EnumFacing.EAST && side != EnumFacing.WEST)
                        {
                        return false;
                        }
                        
                        if (axis == EnumFacing.Axis.X && side != EnumFacing.SOUTH && side != EnumFacing.NORTH)
                        {
                        return false;
                        }
                        }
                        
                        boolean flag = blockAccess.getBlockState(pos.west()).getBlock() == this && blockAccess.getBlockState(pos.west(2)).getBlock() != this;
                        boolean flag1 = blockAccess.getBlockState(pos.east()).getBlock() == this && blockAccess.getBlockState(pos.east(2)).getBlock() != this;
                        boolean flag2 = blockAccess.getBlockState(pos.north()).getBlock() == this && blockAccess.getBlockState(pos.north(2)).getBlock() != this;
                        boolean flag3 = blockAccess.getBlockState(pos.south()).getBlock() == this && blockAccess.getBlockState(pos.south(2)).getBlock() != this;
                        boolean flag4 = flag || flag1 || axis == EnumFacing.Axis.X;
                        boolean flag5 = flag2 || flag3 || axis == EnumFacing.Axis.Z;
                        return flag4 && side == EnumFacing.WEST ? true : (flag4 && side == EnumFacing.EAST ? true : (flag5 && side == EnumFacing.NORTH ? true : flag5 && side == EnumFacing.SOUTH));
                        }
                        
                        /**
                        * Returns the quantity of items to drop on block destruction.
                        */
                        public int quantityDropped(Random random)
                        {
                        return 0;
                        }
                        
                        /**
                        * Called When an Entity Collided with the Block
                        */
                        @Override
                        public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn)
                        {
                               if (!entityIn.isRiding() && !entityIn.isBeingRidden() && entityIn.isNonBoss())
                        {
                        
                        int id = ThisisHalloween.DIMENSION_ID;
                        
                        if (entityIn.dimension == id)
                        {
                        id = 0;
                        }
                        if(entityIn instanceof EntityPlayerMP)
                        {
                        EntityPlayerMP player = (EntityPlayerMP) entityIn;
                        
                        if (player.timeUntilPortal > 0)
                        {
                        player.timeUntilPortal = 100;
                        }
                        else if (player.dimension != ThisisHalloween.DIMENSION_ID)
                        {
                        ThisisHalloween.portal = false;
                        player.mcServer.getPlayerList().transferPlayerToDimension(player, ThisisHalloween.DIMENSION_ID, new TeleporterFrightful(player.mcServer.worldServerForDimension(ThisisHalloween.DIMENSION_ID)));
                        player.timeUntilPortal = 100;
                        // ThisisHalloween.portal = true;
                        }
                        else
                        {
                        
                        player.mcServer.getPlayerList().transferPlayerToDimension(player, 0, new TeleporterFrightful(player.mcServer.worldServerForDimension(0)));
                        player.timeUntilPortal = 100;
                        }
                        
                        // System.out.println("appel travel");
                        
                        // player.timeUntilPortal = 100;
                        }
                        }
                        
                        }
                        /**
                        * Convert the given metadata into a BlockState for this Block
                        */
                        public IBlockState getStateFromMeta(int meta)
                        {
                        return this.getDefaultState().withProperty(AXIS, (meta & 3) == 2 ? EnumFacing.Axis.Z : EnumFacing.Axis.X);
                        }
                        
                        @SideOnly(Side.CLIENT)
                        public BlockRenderLayer getBlockLayer()
                        {
                        return BlockRenderLayer.TRANSLUCENT;
                        }
                        
                        @SideOnly(Side.CLIENT)
                        public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand)
                           {
                               if (rand.nextInt(100) == 0)
                               {
                                   world.playSound((double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, SoundEvents.BLOCK_PORTAL_AMBIENT, SoundCategory.BLOCKS, 0.5F, rand.nextFloat() * 0.4F + 0.8F, false);
                               }
                        
                               for (int i = 0; i < 4; ++i)
                               {
                                   double d0 = (double)((float)pos.getX() + rand.nextFloat());
                                   double d1 = (double)((float)pos.getY() + rand.nextFloat());
                                   double d2 = (double)((float)pos.getZ() + rand.nextFloat());
                                   double d3 = ((double)rand.nextFloat() - 0.5D) * 0.5D;
                                   double d4 = ((double)rand.nextFloat() - 0.5D) * 0.5D;
                                   double d5 = ((double)rand.nextFloat() - 0.5D) * 0.5D;
                                   int j = rand.nextInt(2) * 2 - 1;
                        
                                   if (world.getBlockState(pos.west()).getBlock() != this && world.getBlockState(pos.east()).getBlock() != this)
                                   {
                                       d0 = (double)pos.getX() + 0.5D + 0.25D * (double)j;
                                       d3 = (double)(rand.nextFloat() * 2.0F * (float)j);
                                   }
                                   else
                                   {
                                       d2 = (double)pos.getZ() + 0.5D + 0.25D * (double)j;
                                       d5 = (double)(rand.nextFloat() * 2.0F * (float)j);
                                   }
                        
                                   world.spawnParticle(EnumParticleTypes.PORTAL, d0, d1, d2, d3, d4, d5, new int[0]);
                               }
                           }
                        
                        /**
                        * Convert the BlockState into the correct metadata value
                        */
                        public int getMetaFromState(IBlockState state)
                        {
                        return getMetaForAxis((EnumFacing.Axis)state.getValue(AXIS));
                        }
                        
                        @SideOnly(Side.CLIENT)
                        public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
                        {
                        return null;
                        }
                        
                           protected BlockStateContainer createBlockState()
                           {
                               return new BlockStateContainer(this, new IProperty[] {AXIS});
                           }
                        
                           public IBlockState withRotation(IBlockState state, Rotation rot)
                           {
                               switch (rot)
                               {
                                   case COUNTERCLOCKWISE_90:
                                   case CLOCKWISE_90:
                        
                                       switch ((EnumFacing.Axis)state.getValue(AXIS))
                                       {
                                           case X:
                                               return state.withProperty(AXIS, EnumFacing.Axis.Z);
                                           case Z:
                                               return state.withProperty(AXIS, EnumFacing.Axis.X);
                                           default:
                                               return state;
                                       }
                        
                                   default:
                                       return state;
                               }
                           }
                        
                           public BlockPattern.PatternHelper createPatternHelper(World worldIn, BlockPos p_181089_2_)
                           {
                               EnumFacing.Axis enumfacing$axis = EnumFacing.Axis.Z;
                               BlockPortalFrightful.Size blockportal$size = new BlockPortalFrightful.Size(worldIn, p_181089_2_, EnumFacing.Axis.X);
                               LoadingCache <blockpos, blockworldstate="">loadingcache = BlockPattern.createLoadingCache(worldIn, true);
                        
                               if (!blockportal$size.isValid())
                               {
                                   enumfacing$axis = EnumFacing.Axis.X;
                                   blockportal$size = new BlockPortalFrightful.Size(worldIn, p_181089_2_, EnumFacing.Axis.Z);
                               }
                        
                               if (!blockportal$size.isValid())
                               {
                                   return new BlockPattern.PatternHelper(p_181089_2_, EnumFacing.NORTH, EnumFacing.UP, loadingcache, 1, 1, 1);
                               }
                               else
                               {
                                   int[] aint = new int[EnumFacing.AxisDirection.values().length];
                                   EnumFacing enumfacing = blockportal$size.rightDir.rotateYCCW();
                                   BlockPos blockpos = blockportal$size.bottomLeft.up(blockportal$size.getHeight() - 1);
                        
                                   for (EnumFacing.AxisDirection enumfacing$axisdirection : EnumFacing.AxisDirection.values())
                                   {
                                       BlockPattern.PatternHelper blockpattern$patternhelper = new BlockPattern.PatternHelper(enumfacing.getAxisDirection() == enumfacing$axisdirection ? blockpos : blockpos.offset(blockportal$size.rightDir, blockportal$size.getWidth() - 1), EnumFacing.getFacingFromAxis(enumfacing$axisdirection, enumfacing$axis), EnumFacing.UP, loadingcache, blockportal$size.getWidth(), blockportal$size.getHeight(), 1);
                        
                                       for (int i = 0; i < blockportal$size.getWidth(); ++i)
                                       {
                                           for (int j = 0; j < blockportal$size.getHeight(); ++j)
                                           {
                                               BlockWorldState blockworldstate = blockpattern$patternhelper.translateOffset(i, j, 1);
                        
                                               if (blockworldstate.getBlockState() != null && blockworldstate.getBlockState().getMaterial() != Material.AIR)
                                               {
                                                   ++aint[enumfacing$axisdirection.ordinal()];
                                               }
                                           }
                                       }
                                   }
                        
                                   EnumFacing.AxisDirection enumfacing$axisdirection1 = EnumFacing.AxisDirection.POSITIVE;
                        
                                   for (EnumFacing.AxisDirection enumfacing$axisdirection2 : EnumFacing.AxisDirection.values())
                                   {
                                       if (aint[enumfacing$axisdirection2.ordinal()] < aint[enumfacing$axisdirection1.ordinal()])
                                       {
                                           enumfacing$axisdirection1 = enumfacing$axisdirection2;
                                       }
                                   }
                        
                                   return new BlockPattern.PatternHelper(enumfacing.getAxisDirection() == enumfacing$axisdirection1 ? blockpos : blockpos.offset(blockportal$size.rightDir, blockportal$size.getWidth() - 1), EnumFacing.getFacingFromAxis(enumfacing$axisdirection1, enumfacing$axis), EnumFacing.UP, loadingcache, blockportal$size.getWidth(), blockportal$size.getHeight(), 1);
                               }
                           }
                        
                           public static class Size
                           {
                               private final World world;
                               private final EnumFacing.Axis axis;
                               private final EnumFacing rightDir;
                               private final EnumFacing leftDir;
                               private int portalBlockCount;
                               private BlockPos bottomLeft;
                               private int height;
                               private int width;
                        
                               public Size(World worldIn, BlockPos p_i45694_2_, EnumFacing.Axis p_i45694_3_)
                               {
                                   this.world = worldIn;
                                   this.axis = p_i45694_3_;
                        
                                   if (p_i45694_3_ == EnumFacing.Axis.X)
                                   {
                                       this.leftDir = EnumFacing.EAST;
                                       this.rightDir = EnumFacing.WEST;
                                   }
                                   else
                                   {
                                       this.leftDir = EnumFacing.NORTH;
                                       this.rightDir = EnumFacing.SOUTH;
                                   }
                        
                                   for (BlockPos blockpos = p_i45694_2_; p_i45694_2_.getY() > blockpos.getY() - 21 && p_i45694_2_.getY() > 0 && this.isEmptyBlock(worldIn.getBlockState(p_i45694_2_.down()).getBlock()); p_i45694_2_ = p_i45694_2_.down())
                                   {
                                       ;
                                   }
                        
                                   int i = this.getDistanceUntilEdge(p_i45694_2_, this.leftDir) - 1;
                        
                                   if (i >= 0)
                                   {
                                       this.bottomLeft = p_i45694_2_.offset(this.leftDir, i);
                                       this.width = this.getDistanceUntilEdge(this.bottomLeft, this.rightDir);
                        
                                       if (this.width < 2 || this.width > 21)
                                       {
                                           this.bottomLeft = null;
                                           this.width = 0;
                                       }
                                   }
                        
                                   if (this.bottomLeft != null)
                                   {
                                       this.height = this.calculatePortalHeight();
                                   }
                               }
                        
                               protected int getDistanceUntilEdge(BlockPos p_180120_1_, EnumFacing p_180120_2_)
                               {
                                   int i;
                        
                                   for (i = 0; i < 22; ++i)
                                   {
                                       BlockPos blockpos = p_180120_1_.offset(p_180120_2_, i);
                        
                                       if (!this.isEmptyBlock(this.world.getBlockState(blockpos).getBlock()) || this.world.getBlockState(blockpos.down()).getBlock() != Blocks.NETHER_BRICK)
                                       {
                                           break;
                                       }
                                   }
                        
                                   Block block = this.world.getBlockState(p_180120_1_.offset(p_180120_2_, i)).getBlock();
                                   return block == Blocks.NETHER_BRICK ? i : 0;
                               }
                        
                               public int getHeight()
                               {
                                   return this.height;
                               }
                        
                               public int getWidth()
                               {
                                   return this.width;
                               }
                        
                               protected int calculatePortalHeight()
                               {
                                   label24:
                        
                                   for (this.height = 0; this.height < 21; ++this.height)
                                   {
                                       for (int i = 0; i < this.width; ++i)
                                       {
                                           BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i).up(this.height);
                                           Block block = this.world.getBlockState(blockpos).getBlock();
                        
                                           if (!this.isEmptyBlock(block))
                                           {
                                               break label24;
                                           }
                        
                                           if (block == Blocks.PORTAL)
                                           {
                                               ++this.portalBlockCount;
                                           }
                        
                                           if (i == 0)
                                           {
                                               block = this.world.getBlockState(blockpos.offset(this.leftDir)).getBlock();
                        
                                               if (block != Blocks.NETHER_BRICK)
                                               {
                                                   break label24;
                                               }
                                           }
                                           else if (i == this.width - 1)
                                           {
                                               block = this.world.getBlockState(blockpos.offset(this.rightDir)).getBlock();
                        
                                               if (block != Blocks.NETHER_BRICK)
                                               {
                                                   break label24;
                                               }
                                           }
                                       }
                                   }
                        
                                   for (int j = 0; j < this.width; ++j)
                                   {
                                       if (this.world.getBlockState(this.bottomLeft.offset(this.rightDir, j).up(this.height)).getBlock() != Blocks.NETHER_BRICK)
                                       {
                                           this.height = 0;
                                           break;
                                       }
                                   }
                        
                                   if (this.height <= 21 && this.height >= 3)
                                   {
                                       return this.height;
                                   }
                                   else
                                   {
                                       this.bottomLeft = null;
                                       this.width = 0;
                                       this.height = 0;
                                       return 0;
                                   }
                               }
                        
                               protected boolean isEmptyBlock(Block p_150857_1_)
                               {
                                   return p_150857_1_.getMaterial(p_150857_1_.getDefaultState()) == Material.AIR || p_150857_1_ == CreateBlocks.portalFrightful;
                               }
                        
                               public boolean isValid()
                               {
                                   return this.bottomLeft != null && this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21;
                               }
                        
                               public void placePortalBlocks()
                               {
                                   for (int i = 0; i < this.width; ++i)
                                   {
                                       BlockPos blockpos = this.bottomLeft.offset(this.rightDir, i);
                        
                                       for (int j = 0; j < this.height; ++j)
                                       {
                                           this.world.setBlockState(blockpos.up(j), CreateBlocks.portalFrightful.getDefaultState().withProperty(BlockPortalFrightful.AXIS, this.axis), 2);
                                       }
                                   }
                               }
                           }
                        }
                        

                        Le Teleporter :

                        package thisishalloween.world.frightful;
                        
                        import java.util.Iterator;
                        import java.util.List;
                        import java.util.Random;
                        
                        import com.google.common.collect.Lists;
                        
                        import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
                        import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
                        import it.unimi.dsi.fastutil.objects.ObjectIterator;
                        import net.minecraft.block.BlockPortal;
                        import net.minecraft.block.state.IBlockState;
                        import net.minecraft.block.state.pattern.BlockPattern;
                        import net.minecraft.entity.Entity;
                        import net.minecraft.entity.player.EntityPlayerMP;
                        import net.minecraft.init.Blocks;
                        import net.minecraft.util.EnumFacing;
                        import net.minecraft.util.math.BlockPos;
                        import net.minecraft.util.math.ChunkPos;
                        import net.minecraft.util.math.MathHelper;
                        import net.minecraft.world.Teleporter;
                        import net.minecraft.world.WorldServer;
                        import thisishalloween.CreateBlocks;
                        
                        public class TeleporterFrightful extends Teleporter
                        {
                           private final WorldServer worldServerInstance;
                           private final Random random;
                           private final Long2ObjectMap destinationCoordinateCache = new Long2ObjectOpenHashMap();
                           private final List destinationCoordinateKeys = Lists.newArrayList();
                        
                           public TeleporterFrightful(WorldServer worldIn)
                           {
                            super(worldIn);
                               this.worldServerInstance = worldIn;
                               this.random = new Random(worldIn.getSeed());
                           }
                        
                           public void placeInPortal(Entity entityIn, float rotationYaw)
                           {
                               if (this.worldServerInstance.provider.getDimension() != 1)
                               {
                                   if (!this.placeInExistingPortal(entityIn, rotationYaw))
                                   {
                                       this.makePortal(entityIn);
                                       this.placeInExistingPortal(entityIn, rotationYaw);
                                   }
                               }
                               else
                               {
                                   int i = MathHelper.floor_double(entityIn.posX);
                                   int j = MathHelper.floor_double(entityIn.posY) - 1;
                                   int k = MathHelper.floor_double(entityIn.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.setBlockState(new BlockPos(k1, l1, i2), flag ? Blocks.NETHER_BRICK.getDefaultState() : Blocks.AIR.getDefaultState());
                                           }
                                       }
                                   }
                                   entityIn.setLocationAndAngles((double)i, (double)j, (double)k, entityIn.rotationYaw, 0.0F);
                                   entityIn.motionX = entityIn.motionY = entityIn.motionZ = 0.0D;
                               }
                           }
                        
                           public boolean placeInExistingPortal(Entity entityIn, float rotationYaw)
                           {
                               int i = 128;
                               double d0 = -1.0D;
                               int j = MathHelper.floor_double(entityIn.posX);
                               int k = MathHelper.floor_double(entityIn.posZ);
                               boolean flag = true;
                               BlockPos blockpos = BlockPos.ORIGIN;
                               long l = ChunkPos.chunkXZ2Int(j, k);
                        
                               if (this.destinationCoordinateCache.containsKey(l))
                               {
                                   Teleporter.PortalPosition teleporter$portalposition = (Teleporter.PortalPosition)this.destinationCoordinateCache.get(l);
                                   d0 = 0.0D;
                                   blockpos = teleporter$portalposition;
                                   teleporter$portalposition.lastUpdateTime = this.worldServerInstance.getTotalWorldTime();
                                   flag = false;
                               }
                               else
                               {
                                   BlockPos blockpos3 = new BlockPos(entityIn);
                        
                                   for (int i1 = -128; i1 <= 128; ++i1)
                                   {
                                       BlockPos blockpos2;
                        
                                       for (int j1 = -128; j1 <= 128; ++j1)
                                       {
                                           for (BlockPos blockpos1 = blockpos3.add(i1, this.worldServerInstance.getActualHeight() - 1 - blockpos3.getY(), j1); blockpos1.getY() >= 0; blockpos1 = blockpos2)
                                           {
                                               blockpos2 = blockpos1.down();
                        
                                               if (this.worldServerInstance.getBlockState(blockpos1).getBlock() == CreateBlocks.portalFrightful)
                                               {
                                                   while (this.worldServerInstance.getBlockState(blockpos2 = blockpos1.down()).getBlock() == CreateBlocks.portalFrightful)
                                                   {
                                                       blockpos1 = blockpos2;
                                                   }
                        
                                                   double d1 = blockpos1.distanceSq(blockpos3);
                        
                                                   if (d0 < 0.0D || d1 < d0)
                                                   {
                                                       d0 = d1;
                                                       blockpos = blockpos1;
                                                   }
                                               }
                                           }
                                       }
                                   }
                               }
                        
                               if (d0 >= 0.0D)
                               {
                                   if (flag)
                                   {
                                       this.destinationCoordinateCache.put(l, new Teleporter.PortalPosition(blockpos, this.worldServerInstance.getTotalWorldTime()));
                                   }
                        
                                   double d5 = (double)blockpos.getX() + 0.5D;
                                   double d6 = (double)blockpos.getY() + 0.5D;
                                   double d7 = (double)blockpos.getZ() + 0.5D;
                                   BlockPattern.PatternHelper blockpattern$patternhelper = Blocks.PORTAL.createPatternHelper(this.worldServerInstance, blockpos);
                                   boolean flag1 = blockpattern$patternhelper.getForwards().rotateY().getAxisDirection() == EnumFacing.AxisDirection.NEGATIVE;
                                   double d2 = blockpattern$patternhelper.getForwards().getAxis() == EnumFacing.Axis.X ? (double)blockpattern$patternhelper.getFrontTopLeft().getZ() : (double)blockpattern$patternhelper.getFrontTopLeft().getX();
                                 //TODO
                                   d6 = (double)(blockpattern$patternhelper.getFrontTopLeft().getY() + 1) - /*entityIn.getLastPortalVec().yCoord * */(double)blockpattern$patternhelper.getHeight();
                        
                                   if (flag1)
                                   {
                                       ++d2;
                                   }
                        
                                   if (blockpattern$patternhelper.getForwards().getAxis() == EnumFacing.Axis.X)
                                   {
                                       d7 = d2 + (1.0D - entityIn.getLastPortalVec().xCoord) * (double)blockpattern$patternhelper.getWidth() * (double)blockpattern$patternhelper.getForwards().rotateY().getAxisDirection().getOffset();
                                   }
                                   else
                                   {
                                    //TODO
                                       d5 = d2 + (1.0D /*- entityIn.getLastPortalVec().xCoord*/) * (double)blockpattern$patternhelper.getWidth() * (double)blockpattern$patternhelper.getForwards().rotateY().getAxisDirection().getOffset();
                                   }
                        
                                   float f = 0.0F;
                                   float f1 = 0.0F;
                                   float f2 = 0.0F;
                                   float f3 = 0.0F;
                        
                                   if (blockpattern$patternhelper.getForwards().getOpposite() == entityIn.getTeleportDirection())
                                   {
                                       f = 1.0F;
                                       f1 = 1.0F;
                                   }
                                   //TODO
                                 /*  else if (blockpattern$patternhelper.getForwards().getOpposite() == entityIn.getTeleportDirection().getOpposite())
                                   {
                                       f = -1.0F;
                                       f1 = -1.0F;
                                   }*/
                              /*     else if (blockpattern$patternhelper.getForwards().getOpposite() == entityIn.getTeleportDirection().rotateY())
                                   {
                                       f2 = 1.0F;
                                       f3 = -1.0F;
                                   }*/
                                   else
                                   {
                                       f2 = -1.0F;
                                       f3 = 1.0F;
                                   }
                        
                                   double d3 = entityIn.motionX;
                                   double d4 = entityIn.motionZ;
                                   entityIn.motionX = d3 * (double)f + d4 * (double)f3;
                                   entityIn.motionZ = d3 * (double)f2 + d4 * (double)f1;
                                   //TODO
                                   entityIn.rotationYaw = rotationYaw /*- (float)(entityIn.getTeleportDirection().getOpposite().getHorizontalIndex() * 90) + (float)(blockpattern$patternhelper.getForwards().getHorizontalIndex() * 90)*/;
                        
                                   if (entityIn instanceof EntityPlayerMP)
                                   {
                                       ((EntityPlayerMP)entityIn).connection.setPlayerLocation(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
                                   }
                                   else
                                   {
                                       entityIn.setLocationAndAngles(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
                                   }
                        
                                   return true;
                               }
                               else
                               {
                                   return false;
                               }
                           }
                        
                           private boolean func_180265_a(BlockPos p_180265_1_)
                           {
                               return !this.worldServerInstance.isAirBlock(p_180265_1_) || !this.worldServerInstance.isAirBlock(p_180265_1_.up());
                           }
                        
                           public boolean makePortal(Entity p_85188_1_)
                           {
                               byte b0 = 16;
                               double d0 = -1.0D;
                               int i = MathHelper.floor_double(p_85188_1_.posX);
                               int j = MathHelper.floor_double(p_85188_1_.posY);
                               int k = MathHelper.floor_double(p_85188_1_.posZ);
                               int l = i;
                               int i1 = j;
                               int j1 = k;
                               int k1 = 0;
                               int l1 = this.random.nextInt(4);
                               int i2;
                               double d1;
                               int k2;
                               double d2;
                               int i3;
                               int j3;
                               int k3;
                               int l3;
                               int i4;
                               int j4;
                               int k4;
                               int l4;
                               int i5;
                               double d3;
                               double d4;
                        
                               for (i2 = i - b0; i2 <= i + b0; ++i2)
                               {
                                   d1 = (double)i2 + 0.5D - p_85188_1_.posX;
                        
                                   for (k2 = k - b0; k2 <= k + b0; ++k2)
                                   {
                                       d2 = (double)k2 + 0.5D - p_85188_1_.posZ;
                                       label271:
                        
                                       for (i3 = this.worldServerInstance.getActualHeight() - 1; i3 >= 0; –i3)
                                       {
                                           if (this.worldServerInstance.isAirBlock(new BlockPos(i2, i3, k2)))
                                           {
                                               while (i3 > 0 && this.worldServerInstance.isAirBlock(new BlockPos(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.getBlockState(new BlockPos(l4, i5, j5)).getMaterial().isSolid() || k4 >= 0 && !this.worldServerInstance.isAirBlock(new BlockPos(l4, i5, j5)))
                                                               {
                                                                   continue label271;
                                                               }
                                                           }
                                                       }
                                                   }
                        
                                                   d3 = (double)i3 + 0.5D - p_85188_1_.posY;
                                                   d4 = d1 * d1 + d3 * d3 + d2 * d2;
                        
                                                   if (d0 < 0.0D || d4 < d0)
                                                   {
                                                       d0 = d4;
                                                       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 - p_85188_1_.posX;
                        
                                       for (k2 = k - b0; k2 <= k + b0; ++k2)
                                       {
                                           d2 = (double)k2 + 0.5D - p_85188_1_.posZ;
                                           label219:
                        
                                           for (i3 = this.worldServerInstance.getActualHeight() - 1; i3 >= 0; --i3)
                                           {
                                               if (this.worldServerInstance.isAirBlock(new BlockPos(i2, i3, k2)))
                                               {
                                                   while (i3 > 0 && this.worldServerInstance.isAirBlock(new BlockPos(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.getBlockState(new BlockPos(k4, l4, i5)).getMaterial().isSolid() || j4 >= 0 && !this.worldServerInstance.isAirBlock(new BlockPos(k4, l4, i5)))
                                                               {
                                                                   continue label219;
                                                               }
                                                           }
                                                       }
                        
                                                       d3 = (double)i3 + 0.5D - p_85188_1_.posY;
                                                       d4 = d1 * d1 + d3 * d3 + d2 * d2;
                        
                                                       if (d0 < 0.0D || d4 < d0)
                                                       {
                                                           d0 = d4;
                                                           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;
                               }
                        
                               if (d0 < 0.0D)
                               {
                                   i1 = MathHelper.clamp_int(i1, 70, 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;
                                               boolean flag = k3 < 0;
                                               this.worldServerInstance.setBlockState(new BlockPos(l3, i4, j4), flag ? Blocks.NETHER_BRICK.getDefaultState() : Blocks.AIR.getDefaultState());
                                           }
                                       }
                                   }
                               }
                        
                               IBlockState iblockstate = CreateBlocks.portalFrightful.getDefaultState().withProperty(BlockPortal.AXIS, l5 != 0 ? EnumFacing.Axis.X : EnumFacing.Axis.Z);
                        
                               for (j3 = 0; j3 < 4; ++j3)
                               {
                                   for (k3 = 0; k3 < 4; ++k3)
                                   {
                                       for (l3 = -1; l3 < 4; ++l3)
                                       {
                                           i4 = k5 + (k3 - 1) * l5;
                                           j4 = j2 + l3;
                                           k4 = k2 + (k3 - 1) * l2;
                                           boolean flag1 = k3 == 0 || k3 == 3 || l3 == -1 || l3 == 3;
                                           this.worldServerInstance.setBlockState(new BlockPos(i4, j4, k4), flag1 ? Blocks.NETHER_BRICK.getDefaultState() : iblockstate, 2);
                                       }
                                   }
                        
                                   for (k3 = 0; k3 < 4; ++k3)
                                   {
                                       for (l3 = -1; l3 < 4; ++l3)
                                       {
                                           i4 = k5 + (k3 - 1) * l5;
                                           j4 = j2 + l3;
                                           k4 = k2 + (k3 - 1) * l2;
                                           this.worldServerInstance.notifyNeighborsOfStateChange(new BlockPos(i4, j4, k4), this.worldServerInstance.getBlockState(new BlockPos(i4, j4, k4)).getBlock());
                                       }
                                   }
                               }
                        
                               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 worldTime)
                           {
                               if (worldTime % 100L == 0L)
                               {
                                   long i = worldTime - 300L;
                                   ObjectIterator <teleporterfrightful.portalposition>objectiterator = this.destinationCoordinateCache.values().iterator();
                        
                                   while (objectiterator.hasNext())
                                   {
                                    TeleporterFrightful.PortalPosition teleporter$portalposition = (TeleporterFrightful.PortalPosition)objectiterator.next();
                        
                                       if (teleporter$portalposition == null || teleporter$portalposition.lastUpdateTime < i)
                                       {
                                           objectiterator.remove();
                                       }
                                   }
                               }
                           }
                        
                           public class PortalPosition extends BlockPos
                           {
                               /** The worldtime at which this PortalPosition was last verified */
                               public long lastUpdateTime;
                        
                               public PortalPosition(BlockPos pos, long p_i45747_3_)
                               {
                                   super(pos.getX(), pos.getY(), pos.getZ());
                                   this.lastUpdateTime = p_i45747_3_;
                               }
                           }
                        }
                        

                        Merci d’avance</teleporterfrightful.portalposition></blockpos,></enumfacing.axis></enumfacing.axis>

                        1 réponse Dernière réponse Répondre Citer 0
                        • AxaurusA Hors-ligne
                          Axaurus
                          dernière édition par

                          Salut
                          J’ai réussi à régler un bug (en réalité deux, car les deux étaient liés ensemble).
                          Quand je casse un block du portal, ça détruit tout les blocksPortal. Du coup, je peux aussi créer des portails quand je veux.

                          J’ai fait comme ça :

                          public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn)
                          {
                          EnumFacing.Axis axis = (EnumFacing.Axis)state.getValue(AXIS);
                          {
                          if (axis == EnumFacing.Axis.X)
                          {
                          BlockPortalFrightful.Size size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.X);
                          
                          if (!size.isValid() || size.portalBlockCount < size.width * size.height)
                          {
                          boolean isAir = worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) || worldIn.isAirBlock(new BlockPos(pos.getX() - 1, pos.getY(), pos.getZ())) || worldIn.isAirBlock(new BlockPos(pos.getX() + 1, pos.getY(), pos.getZ()))
                          || worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY() - 1, pos.getZ())) || worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ()));
                          
                          if(isAir)
                          {
                          worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
                          }
                          }
                          }
                          else if (axis == EnumFacing.Axis.Z)
                          {
                          BlockPortalFrightful.Size size = new BlockPortalFrightful.Size(worldIn, pos, EnumFacing.Axis.Z);
                          
                          if (!size.isValid() || size.portalBlockCount < size.width * size.height)
                          {
                          boolean isAir = worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) || worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY(), pos.getZ() - 1)) || worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY(), pos.getZ() + 1))
                          || worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY() - 1, pos.getZ())) || worldIn.isAirBlock(new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ()));
                          
                          if(isAir)
                          {
                          worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
                          }
                          }
                          }
                          }
                          }
                          

                          Par contre, il me reste toujours les problèmes que je ne peux pas revenir dans l’Overworld sans recréer le portail, et que quand je suis en survie, ça me tp dans mon monde à la couche -4 (malgré que le portail soit créé et activé). D’ailleurs, j’ai aussi remarqué que quand je suis dans ma dimension et que je retourne dans l’Overworld en étant en survie, ça me tp vers la couche 64.

                          Si vous savez comment faire, …

                          Merci d’avance

                          EDIT : le bug que je ne peux pas revenir dans l’Overworld semble s’être réglé de lui-même. Pour le bug que ça me tp pas au bon endroit (couche -4), ça le fait uniquement en flatgrass. En normal, ça me tp à la bonne couche, mais parfois j’atteris en l’air (genre 2-3 blocks de hauteur) et parfois dans des blocks 😢

                          1 réponse Dernière réponse Répondre Citer 0
                          • AxaurusA Hors-ligne
                            Axaurus
                            dernière édition par

                            Salut
                            J’ai cherché pour le bug mais je n’ai rien trouvé. Je pense que ça doit être dans la fonctio placeInExistingPortal de la classe Teleporter : ```java
                            public boolean placeInExistingPortal(Entity entityIn, float rotationYaw)
                               {
                                   int i = 128;
                                   double d0 = -1.0D;
                                   int j = MathHelper.floor_double(entityIn.posX);
                                   int k = MathHelper.floor_double(entityIn.posZ);
                                   boolean flag = true;
                                   BlockPos blockpos = BlockPos.ORIGIN;
                                   long l = ChunkPos.chunkXZ2Int(j, k);

                            if (this.destinationCoordinateCache.containsKey(l))
                                   {
                                       Teleporter.PortalPosition teleporter$portalposition = (Teleporter.PortalPosition)this.destinationCoordinateCache.get(l);
                                       d0 = 0.0D;
                                       blockpos = teleporter$portalposition;
                                       teleporter$portalposition.lastUpdateTime = this.worldServerInstance.getTotalWorldTime();
                                       flag = false;
                                   }
                                   else
                                   {
                                       BlockPos blockpos3 = new BlockPos(entityIn);

                            for (int i1 = -128; i1 <= 128; ++i1)
                                       {
                                           BlockPos blockpos2;

                            for (int j1 = -128; j1 <= 128; ++j1)
                                           {
                                               for (BlockPos blockpos1 = blockpos3.add(i1, this.worldServerInstance.getActualHeight() - 1 - blockpos3.getY(), j1); blockpos1.getY() >= 0; blockpos1 = blockpos2)
                                               {
                                                   blockpos2 = blockpos1.down();

                            if (this.worldServerInstance.getBlockState(blockpos1).getBlock() == CreateBlocks.portalFrightful)
                                                   {
                                                       while (this.worldServerInstance.getBlockState(blockpos2 = blockpos1.down()).getBlock() == CreateBlocks.portalFrightful)
                                                       {
                                                           blockpos1 = blockpos2;
                                                       }

                            double d1 = blockpos1.distanceSq(blockpos3);

                            if (d0 < 0.0D || d1 < d0)
                                                       {
                                                           d0 = d1;
                                                           blockpos = blockpos1;
                                                       }
                                                   }
                                               }
                                           }
                                       }
                                   }

                            if (d0 >= 0.0D)
                                   {
                                       if (flag)
                                       {
                                           this.destinationCoordinateCache.put(l, new Teleporter.PortalPosition(blockpos, this.worldServerInstance.getTotalWorldTime()));
                                       }

                            double d5 = (double)blockpos.getX() + 0.5D;
                                       double d6 = (double)blockpos.getY() + 0.5D;
                                       double d7 = (double)blockpos.getZ() + 0.5D;
                                       BlockPattern.PatternHelper blockpattern$patternhelper = Blocks.PORTAL.createPatternHelper(this.worldServerInstance, blockpos);
                                       boolean flag1 = blockpattern$patternhelper.getForwards().rotateY().getAxisDirection() == EnumFacing.AxisDirection.NEGATIVE;
                                       double d2 = blockpattern$patternhelper.getForwards().getAxis() == EnumFacing.Axis.X ? (double)blockpattern$patternhelper.getFrontTopLeft().getZ() : (double)blockpattern$patternhelper.getFrontTopLeft().getX();
                                     //TODO
                                       d6 = (double)(blockpattern$patternhelper.getFrontTopLeft().getY() + 1) - /*entityIn.getLastPortalVec().yCoord * */(double)blockpattern$patternhelper.getHeight();

                            if (flag1)
                                       {
                                           ++d2;
                                       }

                            if (blockpattern$patternhelper.getForwards().getAxis() == EnumFacing.Axis.X)
                                       {
                                           d7 = d2 + (1.0D - entityIn.getLastPortalVec().xCoord) * (double)blockpattern$patternhelper.getWidth() * (double)blockpattern$patternhelper.getForwards().rotateY().getAxisDirection().getOffset();
                                       }
                                       else
                                       {
                                        //TODO
                                           d5 = d2 + (1.0D /- entityIn.getLastPortalVec().xCoord/) * (double)blockpattern$patternhelper.getWidth() * (double)blockpattern$patternhelper.getForwards().rotateY().getAxisDirection().getOffset();
                                       }

                            float f = 0.0F;
                                       float f1 = 0.0F;
                                       float f2 = 0.0F;
                                       float f3 = 0.0F;

                            if (blockpattern$patternhelper.getForwards().getOpposite() == entityIn.getTeleportDirection())
                                       {
                                           f = 1.0F;
                                           f1 = 1.0F;
                                       }
                                       //TODO
                                     /*  else if (blockpattern$patternhelper.getForwards().getOpposite() == entityIn.getTeleportDirection().getOpposite())
                                       {
                                           f = -1.0F;
                                           f1 = -1.0F;
                                       }/
                                  /
                                else if (blockpattern$patternhelper.getForwards().getOpposite() == entityIn.getTeleportDirection().rotateY())
                                       {
                                           f2 = 1.0F;
                                           f3 = -1.0F;
                                       }*/
                                       else
                                       {
                                           f2 = -1.0F;
                                           f3 = 1.0F;
                                       }

                            double d3 = entityIn.motionX;
                                       double d4 = entityIn.motionZ;
                                       entityIn.motionX = d3 * (double)f + d4 * (double)f3;
                                       entityIn.motionZ = d3 * (double)f2 + d4 * (double)f1;
                                       //TODO
                                       entityIn.rotationYaw = rotationYaw /- (float)(entityIn.getTeleportDirection().getOpposite().getHorizontalIndex() * 90) + (float)(blockpattern$patternhelper.getForwards().getHorizontalIndex() * 90)/;

                            if (entityIn instanceof EntityPlayerMP)
                                       {
                                           ((EntityPlayerMP)entityIn).connection.setPlayerLocation(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
                                       }
                                       else
                                       {
                                           entityIn.setLocationAndAngles(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
                                       }

                            return true;
                                   }
                                   else
                                   {
                                       return false;
                                   }
                               }

                            
                            Je me souviens avoir déjà eu ce bug une fois (enfin …, plus ou moins) : je spawnais pareil dans des blocks, pareil à la mauvaise couche, sauf que avant le portail n'était pas activé tandis que là il l'est. Je pense que le portail doit se créer peu de temps (genre une demi-seconde voire moins) après que je spawn. Mais ce que je ne comprend pas, c'est que je spawn mal seulement si je suis en survie.
                            
                            Si vous avez une idée, je suis preneur.
                            Merci d'avance
                            1 réponse Dernière réponse Répondre Citer 0
                            • AxaurusA Hors-ligne
                              Axaurus
                              dernière édition par

                              Salut
                              Un petit UP pour mon dernier problème avec ce mod. Sérieux, je vois pas pourquoi ça bug 😢

                              Merci d’avance

                              1 réponse Dernière réponse Répondre Citer 0
                              • AxaurusA Hors-ligne
                                Axaurus
                                dernière édition par

                                Salut
                                Ca m’a énerver, j’arrête de chercher. On trouve pas, c’est inutile, je ne fais que perdre du temps pour mon autre mod (celui de Noël). Je préfère faire celui-là. En tout cas, si vous avez une solution, n’hésitez pas, ça peut aider des gens. Sachez juste que moi j’abandonne. Pourtant je suis persévérant mais là, … Je vais plutôt mettre en ligne la seule version du mod qui marche, à savoir la MC1.8, qui date un peu 😢

                                Du coup, j’ai des problèmes dans mon autre mod (mais beaucoup moins et moins dur). Je les poste ici ou je créer un autre post (vu que les problèmes n’ont rien à voir) ? Perso je préfère créer un autre post, comme ça si d’autres personnes ont ces problèmes ils ne seront pas perdu

                                Et si je créer un nouveau post, j’en fait quoi de celui-là ? Sans suite ? Résolu ?

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  Laisses celui-ci, il finira dans sans suite du-coup.
                                  Envoies-moi quand même ton dossier src par mp, (ou mets ton mod en open source sur github si tu souhaites soutenir l’open source), je regarderai si je trouve un moment et la motivation.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • AxaurusA Hors-ligne
                                    Axaurus
                                    dernière édition par

                                    Salut
                                    Je te l’ai envoyé par mp, je ne souhaite pas trop le mettre en open-source, en tout cas pas pour l’instant.
                                    Si j’ai la solution, je vous la poste ici

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • 1
                                    • 2
                                    • 3
                                    • 4
                                    • 3 / 4
                                    • Premier message
                                      Dernier message
                                    Design by Woryk
                                    ContactMentions Légales

                                    MINECRAFT FORGE FRANCE © 2024

                                    Powered by NodeBB