9 votes

Empêcher les utilisateurs de se téléporter au dessus du Nether ?

J'ai des utilisateurs qui utilisent à plusieurs reprises des perles d'ender pour se rendre sur le toit du Nether (128 blocs+) et y construire. Je veux éviter cela. Actuellement, le seul moyen auquel je pense est de mettre les perles ender sur liste noire dans les Bas-Fonds, mais si possible, je veux garder les perles et empêcher cela autrement.

Ce que j'ai déjà vérifié :

  • Des Bas-fonds de pleine hauteur : Je n'ai pas trouvé de générateur qui puisse faire ça.
  • Régions de la Garde mondiale : Je n'ai pas réussi à créer une région vraiment grande, et encore moins une région infinie. Je n'ai pu le faire que pour une certaine zone (autour du spawn du Nether), mais je préférerais avoir une solution qui couvre l'ensemble du Nether.
  • Frontière mondiale : J'ai soumis une demande de fonctionnalité pour Worldborder car il ne supporte actuellement que les coordonnées x/z, pas y.
  • Plugins : Je n'ai pas pu trouver de plugins qui soient à moitié à jour pour faire cela.

D'autres idées ? J'utilise la dernière version de Spigot.

14voto

Je t'ai fait un plugin ! (Il les téléporte au spawn du Nether s'ils dépassent cette hauteur) https://www.mediafire.com/?0cux9xl73ty3f1c Assurez-vous que le spawn n'est pas dans de la lave, car cela n'est pas pris en compte.

Code source :

public class main extends JavaPlugin implements Listener  
{
    public static Bukkit plugin;
    public void onEnable()
    {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);

        Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "Enabled!");
    }

    public void onDisable()
    {
        getLogger();
        Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "Disabled!");
    }

    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event) 
    {
        Player p = event.getPlayer();
        {
            if (event.getPlayer().getLocation().getWorld().getName().endsWith("_nether"))
            {
                if (event.getPlayer().getLocation().getY() > 127)
                {
                    World nether = Bukkit.getWorld("world_nether");
                    p.teleport(nether.getSpawnLocation());  
                }
            }
        }
    }
}

11voto

MrLemon Points 17073

Il existe une solution relativement simple de bloc de commande pour cela, qui fonctionne dans vanilla.

Tout d'abord, mettez en place un objectif de tableau de bord pour détecter les joueurs dans le Nether.

/scoreboard objectives add onNetherCeiling dummy

Créez une horloge (je suggère d'utiliser une horloge de remplissage) dans vos spawnchunks (afin qu'elle soit toujours chargée), cachée dans une boîte de Bedrock, et ajoutez les trois blocs de commande suivants, à exécuter dans cet ordre :

/scoreboard players set @a onNetherCeiling 0
/scoreboard players set @a[m=0,y=127,dy=128] onNetherCeiling 1 {Dimension:-1}
/effect @a[score_onNetherCeiling_min=1] 20 1 2 false

Les deux premières commandes attribueront un score de 1 à chaque joueur en mode survie ( m=0 ), dans la dimension -1 (le Nether), avec une coordonnée y comprise entre 127 et 255.

La dernière commande frappera les méchants avec 1 seconde de Wither II. Vous pouvez faire ce que vous voulez ici à la place, utilisez simplement @a[score_onNetherCeiling_min=1] comme cible et ça marche. Si vous préférez les frapper pour leur insolence, essayez

/execute @a[score_onNetherCeiling_min=1] ~ ~ ~ summon LightningBolt ~ ~ ~

Il y a une légère chance que cela ne fonctionne pas avec Bukkit/Spigot cependant, en raison de la façon dont Bukkit traite les dimensions alternatives. En supposant que cela n'affecte pas les données NBT (et je ne vois aucune raison pour cela), vous pouvez placer les blocs de commande au sommet du plafond du Nether à la place, mais vous devrez vous assurer que le chunk dans lequel ils se trouvent reste chargé.

0voto

Tim Points 823

Plutôt que de changer un grand nombre de blocs, considérez ceci :

enter image description here

Pour réaliser l'exploit de la téléportation, je crois que vous devez avoir un bloc de 1 entre vous et le toit du Néant, donc si vous faites en sorte qu'il n'y en ait pas, ils ne peuvent pas se téléporter.

Vous pouvez donc soit faire en sorte qu'il n'y ait pas de trous d'un bloc (modèle 2), soit le rendre complètement solide (modèle 1).

-1voto

Christian Vik Points 1555

Vous pourriez utiliser un Worldedit pour remplir l'espace au-dessus de tout l'espace autorisé dans le Nether avec du bedrock, de sorte que lorsqu'ils se téléportent en haut, ils suffoquent et apprennent que faire cela n'est pas autorisé.

Cela prendrait beaucoup de temps à faire, c'est comme 50 milliards de blocs. Avec un ordinateur équipé de 128 Go de RAM dédiés au serveur, de deux/trois/quatre cartes 2080TI et du meilleur processeur du marché, il se planterait quand même en essayant de placer autant de blocs. Même en faisant 50 millions de blocs à la fois, il vous faudrait beaucoup de temps pour en placer autant. Il y a des tonnes de plugins qui empêchent de construire au-dessus du plafond du Nether et qui donnent des dommages au plafond. Par exemple, j'utilise ceci sur mon serveur : https://dev.bukkit.org/projects/no-above-Nether?gameCategorySlug=bukkit-plugins&projectID=263893

shareedit

-2voto

Vous pourriez utiliser un Worldedit pour remplir l'espace au-dessus de tout l'espace autorisé dans le Nether avec du bedrock, de sorte que lorsqu'ils se téléportent en haut, ils suffoquent et apprennent que faire cela n'est pas autorisé.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X