21 janv. 2023, 15:56

bonjour je suis actuellement sur les commande, avec ce tuto : https://www.minecraftforgefrance.fr/topic/4471/créer-une-commande, mais pour les command client je ne comprend pas bien comment il faut si prendre, j’ai fait sa pour le moment mais le target ne veut pas s’implémenter et je ne suis pas sur de se que je fait :

package fr.gugus.tuto.Command;

import java.util.List;

import com.google.common.collect.Lists;

import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;

public class CommandTuto extends CommandBase implements ICommand {

	@Override
	public int compareTo(ICommand arg0) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public String getName() {
		return "tuto";
	}

	@Override
	public String getUsage(ICommandSender sender) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<String> getAliases() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
		 // On vérifie que l'on ait bien les 3 coordonnées
	    if (args.length < 3)
	        throw new WrongUsageException(this.getUsage(sender));
	 
	    // On récupère la position d'apparition grâce à la fonction de la classe CommandBase
	    BlockPos pos = parseBlockPos(sender, args, 0, true);
	 
	    // On instancie l'entité
	    EntityZombie steeve = new EntityZombie(sender.getEntityWorld());
	    steeve.setLocationAndAngles(pos.getX(), pos.getY(), pos.getZ(), 0f, 0f);
	    steeve.setNoAI(true);
	    steeve.setCustomNameTag("Steeve");
	    steeve.setAlwaysRenderNameTag(true);
	 
	    // On la fait apparaitre
	    sender.getEntityWorld().spawnEntity(steeve);
	 
	    // On avertie le joueur que ça a fonctionné
	    sender.sendMessage(new TextComponentString("Steeve est apparue."));
	}

	@Override
	public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args,BlockPos targetPos) {
		// Si le bloc visé n'est pas null
	    if (target != null) {
	        // Suivant la position de l'argument on complète avec la position du
	        // bloc visé
	        switch (args.length) {
	            case 1:
	                return Lists.newArrayList(String.valueOf(target.getX()));
	            case 2:
	                return Lists.newArrayList(String.valueOf(target.getY()));
	            case 3:
	                return Lists.newArrayList(String.valueOf(target.getZ()));
	        }
	    }
	    return Lists.newArrayList();
	}

	@Override
	public boolean isUsernameIndex(String[] args, int index) {
		// TODO Auto-generated method stub
		return false;
	}

}