13
0
geforkt von Mirrors/Paper

improve BanList types

Dieser Commit ist enthalten in:
Yannick Lamprecht 2024-02-10 20:49:47 +01:00
Ursprung 3ebc5bb92c
Commit 3073742fd7
5 geänderte Dateien mit 72 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,30 @@
package io.papermc.paper.ban;
import org.bukkit.BanList;
import org.bukkit.ban.IpBanList;
import org.bukkit.ban.ProfileBanList;
import org.jspecify.annotations.NullMarked;
/**
* Represents a ban-type that a {@link BanList} may track.
* It enforces the correct return value at compile time.
*/
@NullMarked
public interface BanListType<T> {
/**
* Banned IP addresses
*/
BanListType<IpBanList> IP = new BanListTypeImpl<>(IpBanList.class);
/**
* Banned player profiles
*/
BanListType<ProfileBanList> PROFILE = new BanListTypeImpl<>(ProfileBanList.class);
/**
* Returns the type class of the ban list used generically
*
* @return the type class
*/
Class<T> typeClass();
}

Datei anzeigen

@ -0,0 +1,9 @@
package io.papermc.paper.ban;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@ApiStatus.Internal
@NullMarked
record BanListTypeImpl<T>(Class<T> typeClass) implements BanListType<T> {
}

Datei anzeigen

@ -16,7 +16,9 @@ public interface BanList<T> {
/**
* Represents a ban-type that a {@link BanList} may track.
* @deprecated use {@link io.papermc.paper.ban.BanListType} to enforce the correct return value at compile time.
*/
@Deprecated(since = "1.20.4") // Paper - BanList Type Improvements
public enum Type {
/**
* Banned player names

Datei anzeigen

@ -1663,11 +1663,27 @@ public final class Bukkit {
* @param <T> The ban target
*
* @return a ban list of the specified type
* @deprecated use {@link #getBanList(io.papermc.paper.ban.BanListType)} to enforce the correct return value at compile time.
*/
@NotNull
@Deprecated(since = "1.20.4") // Paper - add BanListType (which has a generic)
public static <T extends BanList<?>> T getBanList(@NotNull BanList.Type type) {
return server.getBanList(type);
}
// Paper start - add BanListType (which has a generic)
/**
* Gets a ban list for the supplied type.
*
* @param type the type of list to fetch, cannot be null
* @param <B> The ban target
*
* @return a ban list of the specified type
*/
@NotNull
public static <B extends BanList<E>, E> B getBanList(final io.papermc.paper.ban.@NotNull BanListType<B> type) {
return server.getBanList(type);
}
// Paper end - add BanListType (which has a generic)
/**
* Gets a set containing all player operators.

Datei anzeigen

@ -1425,10 +1425,25 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
* @param <T> The ban target
*
* @return a ban list of the specified type
* @deprecated use {@link #getBanList(io.papermc.paper.ban.BanListType)} to enforce the correct return value at compile time.
*/
@Deprecated // Paper - add BanListType (which has a generic)
@NotNull
public <T extends BanList<?>> T getBanList(@NotNull BanList.Type type);
// Paper start - add BanListType (which has a generic)
/**
* Gets a ban list for the supplied type.
*
* @param type the type of list to fetch, cannot be null
* @param <B> The ban target
*
* @return a ban list of the specified type
*/
@NotNull
<B extends BanList<E>, E> B getBanList(@NotNull io.papermc.paper.ban.BanListType<B> type);
// Paper end - add BanListType (which has a generic)
/**
* Gets a set containing all player operators.
*