- 101
- 4
А что не так с кодом ?)Смотри логи, но лично я предполагаю NPE на 48-й строке.
UPD: Посмотрел код со скриншота, аж жутко стало. Костыль на костыле.
1. Для подобного лучше использовать Set вместо ListА что не так с кодом ?)
package com.example.examplemod.command_clan;
import com.example.examplemod.clan.Clan;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
public class CreateClanCMD extends CommandBase {
private final String
NAME = "clan_create";
private final String USAGE = "/clan_create <name>";
private String nameClan = null;
private static final Set<Clan> clans = new HashSet<>();
private static final Clan clanus = new Clan();
public CreateClanCMD() {
}
@Override
public String getCommandName() {
return NAME;
}
@Override
public String getCommandUsage(ICommandSender p_71518_1_) {
return USAGE;
}
@Override
public void processCommand(ICommandSender sender, String[] args) {
if (args.length == 0) {
sender.addChatMessage(new ChatComponentText("invalid arguments"));
return;
}
nameClan = args[0];
for (Clan clansi :clans) {
if (!(clansi.getName().equals(nameClan))){
clans.add(new Clan(nameClan));
sender.addChatMessage(new ChatComponentText("Clan is created"));
}
}
}
public List<Clan> clans = new ArrayList<>();
public void processCommand(ICommandSender sender, String[] args) {
if (args.length < 1) {
sender.addChatMessage(new ChatComponentText("недостаточно аргументов"));
return;
}
//далее всё зависит от реализации, поскольку кэширования именно имен кланов не
// я просто проитерируюсь через все кланы, но сам бы отдельно кэшировал бы и имена кланов
// для более простой проверки по названию
String clanName = args[0];
for (Clan clan : this.clans) { //Итерация через список кланов
if (clan.getName().equals(clanName)) { //проверяем названия
//Если код прошел сюда, то значит имя существующего клана и клана который мы хотим создать совпадают
// значит отсекаем этот вариант имени клана, и шлем игрока придумывать новое название, заканчивая метод
sender.addChatMessage(new ChatComponentText("Клан с таким названием уже существует"));
return; //рвем цикл и выходим из метода
}
}
//Если код прошел сюда, значит название не занято, цикл не порвался и выход из метода не был осуществлен
this.clans.add(new Clan(clanName));
sender.addChatMessage(new ChatComponentText("Вы успешно создали клан"));
}