Commande pour ban ip et ban compte

TheRealShixy

Bucheron
4 Janvier 2022
12
0
11
23
Bonjour, désolé de vous déranger, mais j'aurai besoin d'aider pour créer une commande admin qui permettrait de ban ip et compte en même temps... (/gpermban <player>)
Si possible serait-il possible de faire un ban temporaire aussi (aussi ban ip et compte ainsi que réservée admins) ? (/gtempban <joueur> durée en jours) ex : 30d
Merci d'avance et merci d'être là pour aider les gens comme moi qui ne s'y connaissent pas...
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 086
157
455
247
21
Mìlhüsa
Bonsoir,

Avec un plugin déjà existant ou en développant ton propre plugin dans un langage de programmation tel que le Java/Kotlin ?

Cordialement,
ShE3py
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 086
157
455
247
21
Mìlhüsa
L'API de Forge change grandement en fonction de la version de Minecraft que tu utilises, donc quelle version du jeu vises-tu ?
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 086
157
455
247
21
Mìlhüsa
Pour créer une commande tu as ce tutoriel sur MFF :
https://www.minecraftforgefrance.fr/topic/4471/créer-une-commande

Bon après je n'utilise pas Forge donc faudra sûrement changer des trucs, mais normalement l'idée est là.
Pour le bannissement permanent :
Java:
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
    if(args.length == 0) {
        throw new WrongUsageException(this.getUsage(sender));
    }
    
    final String playerName = args[0];
    final EntityPlayerMP player = CommandBase.getPlayer(server, sender, playerName);
    final GameProfile playerProfile = player.getGameProfile();
    
    final PlayerList playerList = server.getPlayerList();
    final UserListBans userBans = playerList.getBannedPlayers();
    final UserListIPBans ipBans = playerList.getBannedIPs();
    
    final Date startDate = new Date(); // now
    final Date endDate = null;
    final String banner = sender.getName();
    final String reason = "unspecified";
    
    if(!userBans.hasEntry(playerProfile)) {
        userBans.addEntry(new UserListBansEntry(playerProfile, startDate, banner, endDate, reason));
        // FIXME: kick player
    }
    
    try {
        userBans.writeChanges();
    }
    catch(IOException e) {
        throw new CommandException("save to disk failed", e);
    }
}

Je n'ai pas vraiment trouvé comment faire un BanIP ni comment le jeu déconnecte le joueur à l'activation du /ban standard, après puisque toi tu as le code source le plus simple est d'ouvrir les deux commandes vanilla et de regarder comment ils font ça.

Sur IntelliJ il faut faire CTRL + N, sur Eclipse il faut faire CTRL + SHIFT + T, puis dans les deux cas rentrer le nom de la classe à rechercher (CommandBanPlayer et CommandBanIp).

La plupart du temps, développer un mod c'est surtout copier-coller le code source vanilla en l'adaptant à nos besoins, donc là si tu veux réunir deux commandes, le mieux est de regarder comment elles sont faites en vanilla.
 

TheRealShixy

Bucheron
4 Janvier 2022
12
0
11
23
Pour créer une commande tu as ce tutoriel sur MFF :
https://www.minecraftforgefrance.fr/topic/4471/créer-une-commande

Bon après je n'utilise pas Forge donc faudra sûrement changer des trucs, mais normalement l'idée est là.
Pour le bannissement permanent :
Java:
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
    if(args.length == 0) {
        throw new WrongUsageException(this.getUsage(sender));
    }
   
    final String playerName = args[0];
    final EntityPlayerMP player = CommandBase.getPlayer(server, sender, playerName);
    final GameProfile playerProfile = player.getGameProfile();
   
    final PlayerList playerList = server.getPlayerList();
    final UserListBans userBans = playerList.getBannedPlayers();
    final UserListIPBans ipBans = playerList.getBannedIPs();
   
    final Date startDate = new Date(); // now
    final Date endDate = null;
    final String banner = sender.getName();
    final String reason = "unspecified";
   
    if(!userBans.hasEntry(playerProfile)) {
        userBans.addEntry(new UserListBansEntry(playerProfile, startDate, banner, endDate, reason));
        // FIXME: kick player
    }
   
    try {
        userBans.writeChanges();
    }
    catch(IOException e) {
        throw new CommandException("save to disk failed", e);
    }
}

Je n'ai pas vraiment trouvé comment faire un BanIP ni comment le jeu déconnecte le joueur à l'activation du /ban standard, après puisque toi tu as le code source le plus simple est d'ouvrir les deux commandes vanilla et de regarder comment ils font ça.

Sur IntelliJ il faut faire CTRL + N, sur Eclipse il faut faire CTRL + SHIFT + T, puis dans les deux cas rentrer le nom de la classe à rechercher (CommandBanPlayer et CommandBanIp).

La plupart du temps, développer un mod c'est surtout copier-coller le code source vanilla en l'adaptant à nos besoins, donc là si tu veux réunir deux commandes, le mieux est de regarder comment elles sont faites en vanilla.
Merci beaucoup ! Grâce à toi, je vais pouvoir grandement avancer !! Encore merci !!!
 

TheRealShixy

Bucheron
4 Janvier 2022
12
0
11
23
Pour créer une commande tu as ce tutoriel sur MFF :
https://www.minecraftforgefrance.fr/topic/4471/créer-une-commande

Bon après je n'utilise pas Forge donc faudra sûrement changer des trucs, mais normalement l'idée est là.
Pour le bannissement permanent :
Java:
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
    if(args.length == 0) {
        throw new WrongUsageException(this.getUsage(sender));
    }
  
    final String playerName = args[0];
    final EntityPlayerMP player = CommandBase.getPlayer(server, sender, playerName);
    final GameProfile playerProfile = player.getGameProfile();
  
    final PlayerList playerList = server.getPlayerList();
    final UserListBans userBans = playerList.getBannedPlayers();
    final UserListIPBans ipBans = playerList.getBannedIPs();
  
    final Date startDate = new Date(); // now
    final Date endDate = null;
    final String banner = sender.getName();
    final String reason = "unspecified";
  
    if(!userBans.hasEntry(playerProfile)) {
        userBans.addEntry(new UserListBansEntry(playerProfile, startDate, banner, endDate, reason));
        // FIXME: kick player
    }
  
    try {
        userBans.writeChanges();
    }
    catch(IOException e) {
        throw new CommandException("save to disk failed", e);
    }
}

Je n'ai pas vraiment trouvé comment faire un BanIP ni comment le jeu déconnecte le joueur à l'activation du /ban standard, après puisque toi tu as le code source le plus simple est d'ouvrir les deux commandes vanilla et de regarder comment ils font ça.

Sur IntelliJ il faut faire CTRL + N, sur Eclipse il faut faire CTRL + SHIFT + T, puis dans les deux cas rentrer le nom de la classe à rechercher (CommandBanPlayer et CommandBanIp).

La plupart du temps, développer un mod c'est surtout copier-coller le code source vanilla en l'adaptant à nos besoins, donc là si tu veux réunir deux commandes, le mieux est de regarder comment elles sont faites en vanilla.
J’avais aussi une autre question… Comment on fait pour accéder au code source de minecraft ?
 
Dernière édition: