Résolu [1.16.5] Block qui Execute une Command
-
Bonjour,
j’essaye de faire en sorte que mon Block execute une commande quand je fais clique droit dessus.Il y a plusieurs Tuto pour d’autre version que la 1.16.5 mais je n’en ai trouvé aucun pour cette version.
Je remercie d’avance toutes personne me venant en aide.
-
@RotorTV clone le commande block juste a la place que il utilise un champ de saisie tu hard code ta commande?
-
@PlagueZ Merci mais je doit mettre quoi pour que la command soit executer ?
Genre les lignes de codes des anciens tutos ne marche pas et je ne sais pas non plus au les mettres dans la class. -
Personne d’autre n’a d’idée de comment je pourrais faire ça ?
-
Après pas mal de recherche j’ai enfin trouvé comment faire.
@SubscribeEvent public static void PlayerRightClick(PlayerInteractEvent.RightClickBlock event) { BlockState iblockstate = event.getWorld().getBlockState(event.getPos()); Block block = iblockstate.getBlock(); if (block == ModBlocks.PARADIS_TP.get()) { Paradis_Tp.onBlockActivated(); } }
public static void onBlockActivated() { MinecraftServer source = LogicalSidedProvider.INSTANCE.get(LogicalSide.SERVER); source.getCommands().performCommand(source.createCommandSourceStack(), "execute in destriummod:paradis run teleport @p 1 100 1"); }
Si d’autre gens auront le meme problème que moi.
-
-
-
-
@RotorTV Je préviens juste que le système est TRÈS mal fait… (c’est pas ta faute si t’es débutant) C’est pas optimisé DU TOUT parce que ça passe d’abord par le système qui décrypte la commande, et la méthode avec l’évènement onRightClick je pense que tu l’as mis dans la classe principale, il ne faut pas faire ça, car ça va exécuter la méthode même si t’as pas cliqué sur TON bloc, donc problème d’FPS garanti. Donc mets cette méthode dans la classe de ton bloc, et comme ça tu pourras utiliser, comme il y aura plus le “static”, une méthode de tp directement sur l’entité joueur, ça sera plus opti et comme tu as mis la commande en “@p”, ça vas fonctionner même si le joueur qui a cliqué se trouve plus loin qu’un joueur qui a pas cliqué (ça fait pas ça avec le “@p”).
Je vais faire ton code, j’ai l’impression que t’es un peu maladroit… Sans vouloir te vexer hein, c’est pour t’aider ^^
Dans la classe de ton bloc :
@Override public ActionResultType use(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { p_225533_4_.changeDimension(); // J'ai jamais encore travaillé sur les dimensions // mais tu devrais avoir un objet "ServerWorld" je pense, et mets-le là. p_225533_4_.teleportTo(1, 100, 1); return ActionResultType.SUCCESS; }
C’est très simple. À l’avenir évite les coordonnées fixes, parce que lors de la génération de la dimension on ne sait pas où se trouvera un bon endroit ou apparaître, il faudrait éviter de se tp dans le vide ou de finir emmuré… Je ne sais pas comment calculer un spawn convenable, mais je te conseille de décortiquer CE MOD pour trouver comment faire.
À+
Krafty
-