[1.12.2] Spawn / BedLocation Point en overworld



  • Bonjour à tous 🙂

    Je viens vers vous car j'ai créé un objet avec lequel je souhaite, quand je la bois (c'est une potion ^^):

    • Si je n'ai pas encore de bedLocation, me ramener au spawn point de l'overworld (même si je suis dans une autre dimension)
    • Si j'ai bien un bedLocation dans l'overworld, me ramène à celui-ci. Si je n'ai le bedlocation est dans une autre dimension, j'arrive dans le spawn de l'overworld.

    Je n'arrive pas à téléporter le joueur dans le lit de l'overworld si celui-ci est dans une autre dimension, avez-vous une idée?

    Voici ma fonction pour le moment:

    
        /**
         * Quand on utilise l'objet
         */
        @Override
        public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
    
            // Pour que ça ne soit pris que du côté serveur
            if (!worldIn.isRemote) {
                // Quelle est la position du lit du joueur?
                BlockPos location = playerIn.getBedLocation();
                /** Si on a un bedLocation */
                if (location != null) {
                    // Si on est dans une dimension autre qu'overworld
                    if (playerIn.dimension != 0) {
                        System.out.println("dimension" + playerIn.dimension);
                        // Retour à la dimension Overworld classique 0
                        playerIn.changeDimension(0);
                    }
                    // TP du joueur à la position du lit
                    playerIn.setPositionAndUpdate(location.getX(), location.getY(), location.getZ());
                }
                /** Sinon on prend les coordonnées du lieu de spawn dans le monde de base*/
                else {
                    // Si on est dans une dimension autre qu'overworld
                    if (playerIn.dimension != 0) {
                        playerIn.changeDimension(0);
                    }
    //                // TP du joueur
                    playerIn.setPositionAndUpdate(worldIn.getSpawnPoint().getX(), worldIn.getSpawnPoint().getY(), worldIn.getSpawnPoint().getZ());
                }
            }
            /**  Suppression de l'objet de la main*/
            /* Si le joueur n'est pas en creative */
            if (!playerIn.capabilities.isCreativeMode) {
                // Quel est l'itemStack dans la main du joueur?
                ItemStack itemstack = playerIn.getHeldItem(handIn);
                // Puis suppression d'un item après utilisation
                itemstack.shrink(1);
            }
            return super.onItemRightClick(worldIn, playerIn, handIn);
        }
    

    Merci à vous !


Log in to reply