Skip to content

Commit

Permalink
uuid系をCommandLibに合わせて修正
Browse files Browse the repository at this point in the history
  • Loading branch information
Maru32768 committed Nov 30, 2022
1 parent a615ec0 commit 95cf3ef
Show file tree
Hide file tree
Showing 15 changed files with 210 additions and 251 deletions.
2 changes: 1 addition & 1 deletion bukkit/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ dependencies {
implementation "com.google.code.gson:gson:2.8.9"
implementation group: "org.apache.poi", name: "poi", version: "5.1.0"
implementation "org.apache.commons:commons-lang3:3.0"
compileOnly "com.github.TeamKun.CommandLib:bukkit:0.9.0"
compileOnly "com.github.TeamKun.CommandLib:bukkit:0.9.4"
compileOnly fileTree(dir: "./libs/", include: "patched*.jar")
compileOnly "com.mojang:brigadier:1.0.18"
}
Expand Down
19 changes: 19 additions & 0 deletions bukkit/src/main/java/net/kunmc/lab/configlib/util/UUIDUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package net.kunmc.lab.configlib.util;

import org.bukkit.Bukkit;

import java.util.UUID;

public final class UUIDUtil {
public static String getNameOrUuid(UUID uuid) {
String s = Bukkit.getOfflinePlayer(uuid)
.getName();
if (s == null) {
s = uuid.toString();
}
return s;
}

private UUIDUtil() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.kunmc.lab.commandlib.ArgumentBuilder;
import net.kunmc.lab.configlib.SingleValue;
import net.kunmc.lab.configlib.util.UUIDUtil;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
Expand All @@ -24,20 +25,23 @@ public UUIDValue(UUID value) {
super(value);
}

public @Nullable OfflinePlayer toOfflinePlayer() {
@Nullable
public OfflinePlayer toOfflinePlayer() {
if (value == null) {
return null;
}
return Bukkit.getOfflinePlayer(value);
}

public @Nullable Player toPlayer() {
@Nullable
public Player toPlayer() {
if (value == null) {
return null;
}
return Bukkit.getPlayer(value);
}

@Nullable
public String playerName() {
if (value == null) {
return "";
Expand All @@ -47,12 +51,12 @@ public String playerName() {

@Override
protected void appendArgument(ArgumentBuilder builder) {
builder.playerArgument("target");
builder.uuidArgument("target");
}

@Override
protected UUID argumentToValue(List<Object> argument, CommandSender sender) {
return ((Player) argument.get(0)).getUniqueId();
return ((UUID) argument.get(0));
}

@Override
Expand All @@ -77,7 +81,7 @@ protected String invalidValueMessage(String entryName, UUID newValue, CommandSen

@Override
protected String valueToString(UUID uuid) {
return Bukkit.getOfflinePlayer(uuid).getName();
return UUIDUtil.getNameOrUuid(uuid);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.jetbrains.annotations.NotNull;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public abstract class ListValue<E, U extends ListValue<E, U>> extends CollectionValue<List<E>, E, U> implements Iterable<E> {
Expand Down Expand Up @@ -54,7 +55,11 @@ public boolean validateForRemove(String entryName, List<E> element, CommandSende

@Override
protected final String invalidValueMessageForRemove(String entryName, List<E> value, CommandSender sender) {
return String.format("%sは%sに追加されていませんでした.", elementToString(value.get(0)), entryName);
return String.format("%sは%sに追加されていませんでした.",
value.stream()
.map(this::elementToString)
.collect(Collectors.toList()),
entryName);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ protected Set<T> argumentToValueForAdd(String entryName, List<Object> argument,
}

@Override
protected boolean validateForRemove(String entryName, Set<T> element, CommandSender sender) {
protected boolean validateForRemove(String entryName, Set<T> value, CommandSender sender) {
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.jetbrains.annotations.NotNull;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

Expand All @@ -14,23 +15,31 @@ public SetValue(@NotNull Set<E> value) {
}

@Override
protected boolean validateForAdd(String entryName, Set<E> element, CommandSender sender) {
return !value.containsAll(element);
protected boolean validateForAdd(String entryName, Set<E> value, CommandSender sender) {
return !this.value.containsAll(value);
}

@Override
protected String invalidValueMessageForAdd(String entryName, Set<E> element, CommandSender sender) {
return String.format("%sはすでに%sに追加されています.", elementToString(((E[]) element.toArray())[0]), entryName);
protected String invalidValueMessageForAdd(String entryName, Set<E> value, CommandSender sender) {
return String.format("%sはすでに%sに追加されています.",
value.stream()
.map(this::elementToString)
.collect(Collectors.toList()),
entryName);
}

@Override
protected boolean validateForRemove(String entryName, Set<E> element, CommandSender sender) {
return value.containsAll(element);
protected boolean validateForRemove(String entryName, Set<E> value, CommandSender sender) {
return this.value.containsAll(value);
}

@Override
protected String invalidValueMessageForRemove(String entryName, Set<E> element, CommandSender sender) {
return String.format("%sは%sに追加されていませんでした.", elementToString(((E[]) element.toArray())[0]), entryName);
protected String invalidValueMessageForRemove(String entryName, Set<E> value, CommandSender sender) {
return String.format("%sは%sに追加されていませんでした.",
value.stream()
.map(this::elementToString)
.collect(Collectors.toList()),
entryName);
}

public int size() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import com.google.common.collect.Sets;
import net.kunmc.lab.commandlib.ArgumentBuilder;
import net.kunmc.lab.configlib.util.UUIDUtil;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;

import java.util.*;
Expand All @@ -18,8 +18,8 @@ public UUIDSetValue(UUID... uuids) {

public UUIDSetValue(Collection<Player> players) {
this(players.stream()
.map(Player::getUniqueId)
.collect(Collectors.toSet()));
.map(Player::getUniqueId)
.collect(Collectors.toSet()));
}

public UUIDSetValue(Set<UUID> value) {
Expand All @@ -28,7 +28,11 @@ public UUIDSetValue(Set<UUID> value) {

@Override
protected void appendArgumentForAdd(ArgumentBuilder builder) {
builder.playersArgument("players");
builder.uuidsArgumentWith("targets", option -> {
option.filter(x -> {
return x.size() > 1 || !value.contains(x.get(0));
});
});
}

@Override
Expand All @@ -44,114 +48,65 @@ protected String incorrectArgumentMessageForAdd(String entryName, List<Object> a

@Override
protected Set<UUID> argumentToValueForAdd(String entryName, List<Object> argument, CommandSender sender) {
return ((List<Player>) argument.get(0)).stream()
.map(Entity::getUniqueId)
.collect(Collectors.toSet());
}

@Override
protected String invalidValueMessageForAdd(String entryName, Set<UUID> element, CommandSender sender) {
if (element.size() == 1) {
UUID uuid = element.toArray(new UUID[0])[0];
OfflinePlayer p = Bukkit.getOfflinePlayer(uuid);
return p.getName() + "はすでに" + entryName + "に追加されています.";
}

return element.size() + "人のプレイヤーはすでに" + entryName + "に追加されています";
return Sets.newHashSet(((List<UUID>) argument.get(0)));
}

@Override
protected String succeedMessageForAdd(String entryName, Set<UUID> element) {
if (element.size() == 1) {
UUID uuid = element.toArray(new UUID[0])[0];
OfflinePlayer p = Bukkit.getOfflinePlayer(uuid);
return entryName + "に" + p.getName() + "を追加しました.";
return entryName + "に" + elementToString(uuid) + "を追加しました.";
}

return entryName + "に" + element.size() + "人のプレイヤーを追加しました";
return entryName + "に" + element.size() + "個のUUIDを追加しました.";
}

@Override
protected void appendArgumentForRemove(ArgumentBuilder builder) {
builder.unparsedArgument("targets", sb -> {
List<String> list = value.stream()
.map(Bukkit::getOfflinePlayer)
.map(OfflinePlayer::getName)
.collect(Collectors.toList());
if (!list.isEmpty()) {
list.add("@a");
list.add("@r");
}

list.forEach(sb::suggest);
builder.uuidArgumentWith("target", option -> {
option.filter(x -> value.contains(x))
.additionalSuggestionAction(sb -> {
List<UUID> offlinePlayerUUIDs = Arrays.stream(Bukkit.getOfflinePlayers())
.map(OfflinePlayer::getUniqueId)
.collect(Collectors.toList());
value.stream()
.filter(offlinePlayerUUIDs::contains)
.forEach(x -> sb.suggest(x.toString()));
});
});
}

@Override
protected boolean isCorrectArgumentForRemove(String entryName, List<Object> argument, CommandSender sender) {
String sel = argument.get(0).toString();
return sel.equals("@a") ||
!value.isEmpty() && sel.equals("@r") ||
value.stream()
.map(Bukkit::getOfflinePlayer)
.map(OfflinePlayer::getName)
.anyMatch(s -> s.equals(sel));
return true;
}

@Override
protected Set<UUID> argumentToValueForRemove(String entryName, List<Object> argument, CommandSender sender) {
String s = argument.get(0).toString();

if (s.equals("@a")) {
return Sets.newHashSet(value);
}

if (s.equals("@r")) {
List<UUID> list = value.stream().collect(Collectors.toList());
Collections.shuffle(list);
return Sets.newHashSet(list.get(0));
}

return Sets.newHashSet(Bukkit.getOfflinePlayerIfCached(s).getUniqueId());
protected String incorrectArgumentMessageForRemove(String entryName, List<Object> argument, CommandSender sender) {
return "";
}

@Override
protected String incorrectArgumentMessageForRemove(String entryName, List<Object> argument, CommandSender sender) {
String s = argument.get(0).toString();

if (s.startsWith("@")) {
return "セレクターは@aか@rのみを指定できます.";
}

return s + "は追加されていませんでした.";
protected Set<UUID> argumentToValueForRemove(String entryName, List<Object> argument, CommandSender sender) {
return Sets.newHashSet(((UUID) argument.get(0)));
}

@Override
protected boolean validateForRemove(String entryName, Set<UUID> element, CommandSender sender) {
return element.stream()
.anyMatch(value::contains);
protected boolean validateForRemove(String entryName, Set<UUID> value, CommandSender sender) {
return true;
}

@Override
protected String invalidValueMessageForRemove(String entryName, Set<UUID> element, CommandSender sender) {
if (element.size() == 1) {
return elementToString(element.toArray(new UUID[0])[0]) + "は" + entryName + "に追加されていませんでした.";
}

return element.size() + "人のプレイヤーは" + entryName + "に追加されていませんでした.";
return "";
}

@Override
protected String succeedMessageForRemove(String entryName, Set<UUID> element) {
if (element.size() == 1) {
return entryName + "から" + elementToString(element.toArray(new UUID[0])[0]) + "を削除しました.";
}

return entryName + "から" + element.size() + "人のプレイヤーを削除しました.";
return entryName + "から" + elementToString(element.toArray(new UUID[0])[0]) + "を削除しました.";
}

@Override
protected String elementToString(UUID uuid) {
return Bukkit.getOfflinePlayer(uuid).getName();
return UUIDUtil.getNameOrUuid(uuid);
}
}
}
Loading

0 comments on commit 95cf3ef

Please sign in to comment.