Non résolu Problème avec commande
-
Bonjour j’ai un créer une commande et je veux donner l’accès de cette commande à tous les joueurs
ackage fr.atonha.saofrmod.commands; import java.util.List; import fr.atonha.saofrmod.ExtendedPlayer; import fr.atonha.saofrmod.Main; import fr.atonha.saofrmod.network.PacketAttributeGui; import fr.atonha.saofrmod.network.PacketSync; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.IAttributeInstance; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class MainCommand extends CommandBase { String name = "saofr"; @Override public String getCommandName() { return name; } @Override public String getCommandUsage(ICommandSender p_71518_1_) { return "/" + name; } @Override public void processCommand(ICommandSender sender, String[] args) { if(args.length == 0) { displayHelp(sender); } else if(args.length >= 1 && args[0].equalsIgnoreCase("open")) { Main.getPacketHandler().sendTo(new PacketAttributeGui(), (EntityPlayerMP) sender); ExtendedPlayer data = ExtendedPlayer.get((EntityPlayer)sender); Main.getPacketHandler().sendTo(new PacketSync(data.getLevel(), data.healthPoints, data.damagePoints, data.getPoint()), (EntityPlayerMP)sender); } else if(args.length >= 1 && args[0].equalsIgnoreCase("reset")) { if(!MinecraftServer.getServer().getConfigurationManager().func_152596_g(((EntityPlayer) sender).getGameProfile())){ sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[" + Main.MODID + "]" + " Tu n'as pas la permission pour utiliser cette commande")); return; } if(args.length >= 2 && this.isOnline(sender.getEntityWorld(), args[1])) { EntityPlayer argPlayer = this.getPlayer(sender.getEntityWorld(), args[1]); ExtendedPlayer pData = ExtendedPlayer.get(argPlayer); argPlayer.experienceLevel = 1; pData.setLevel(1); pData.setPoints(0); pData.damagePoints = 0; pData.healthPoints = 0; pData.setHP(ExtendedPlayer.startHP); pData.setDamage(ExtendedPlayer.startDamage); IAttributeInstance healthAttribute = argPlayer.getEntityAttribute(SharedMonsterAttributes.maxHealth); IAttributeInstance damageAttribute = argPlayer.getEntityAttribute(SharedMonsterAttributes.attackDamage); if(healthAttribute.getModifier(pData.healthModifier) != null) healthAttribute.removeModifier(healthAttribute.getModifier(pData.healthModifier)); if(damageAttribute.getModifier(pData.damageModifier) != null) damageAttribute.removeModifier(damageAttribute.getModifier(pData.damageModifier)); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "[" + Main.MODID + "]" + " Donnees du joueur reinitialiser")); } else { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[" + Main.MODID + "]" + " Ce joueur n'est pas connecte")); return; } } else if(args.length >= 1 && args[0].equalsIgnoreCase("addPoints")) { if(!MinecraftServer.getServer().getConfigurationManager().func_152596_g(((EntityPlayer) sender).getGameProfile())){ sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[" + Main.MODID + "]" + " Tu n'as pas la permission pour utiliser cette commande")); return; } if(args.length >= 2 && this.isOnline(sender.getEntityWorld(), args[1])) { if(args.length >= 3 && this.isInteger(args[2])) { if(Integer.parseInt(args[2]) > 0) { EntityPlayer argPlayer = this.getPlayer(sender.getEntityWorld(), args[1]); ExtendedPlayer data = ExtendedPlayer.get((EntityPlayer) argPlayer); data.setPoints(data.getPoint() + Integer.parseInt(args[2])); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "[" + Main.MODID + "]" + " Points ajouté avec succès")); } else { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[" + Main.MODID + "]" + " Vous devez entrer un nombre > 0")); return; } } else { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[" + Main.MODID + "]" + " Vous devez entrer un nombre")); return; } } else { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[" + Main.MODID + "]" + " Ce joueur n'est pas connecte")); return; } } else displayHelp(sender); } public void displayHelp(ICommandSender sender) { sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "SaoFr main commands help:")); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "-/saofr open " + EnumChatFormatting.WHITE + "-" + EnumChatFormatting.GOLD + " ouvre l'interface")); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "-/saofr reset <Pseudo> " + EnumChatFormatting.WHITE + "-" + EnumChatFormatting.GOLD + " reinitialise les donnees d'un joueur")); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "-/saofr addpoints <Pseudo> <Points>" + EnumChatFormatting.WHITE + "-" + EnumChatFormatting.GOLD + " ajoute des points")); } public boolean isOnline(World world, String name) { for(Object player : world.playerEntities) { EntityPlayer p = (EntityPlayer) player; if(p.getCommandSenderName().equalsIgnoreCase(name)) return true; } return false; } public static boolean isInteger(String s) { try { Integer.parseInt(s); } catch(NumberFormatException e) { return false; } catch(NullPointerException e) { return false; } return true; } public EntityPlayer getPlayer(World world, String name) { for(Object player : world.playerEntities) { EntityPlayer p = (EntityPlayer) player; if(p.getCommandSenderName().equalsIgnoreCase(name)) return p; } return null; } @Override public boolean canCommandSenderUseCommand(ICommandSender var1) { return true; } @Override public List addTabCompletionOptions(ICommandSender var1, String[] var2) { return null; } @Override public boolean isUsernameIndex(String[] var1, int var2) { return false; } }
Cependant en jeu ça ne marche pas seul les op ont accès à cette commande je ne sais pas d’ou vient ce problème Merci de votre aide .
-
Tu as une fonction pour définir le niveau d’autorisation pour la commande.
Trouve la et Override la.
-
@Override public boolean canCommandSenderUseCommand(ICommandSender var1) { return true; }
bah c’est celle-ci je l’ai déjà fait …
normalement avec ça je n’ai pas besoin de définir de niveau de permission -
Sisi, tu dois définir le niveau de permission, après je dis ça, parce-que en l’état actuel des choses ça ne fonctionne pas. Donc essaie avec le niveau de permission.
-
@Ama D’accord et je met combien pour donner l’autorisation à tous les joueurs ? car je comprend pas trop leurs système de niveau surtout son fonctionnement
-
zéro