e4d10a6d67
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 122289ff Add FaceAttachable interface to handle Grindstone facing in common with Switches a6db750e SPIGOT-5647: ZombieVillager entity should have getVillagerType() CraftBukkit Changes:bbe3d58e
SPIGOT-5650: Lectern.setPage(int) causes a NullPointerException3075579f
Add FaceAttachable interface to handle Grindstone facing in common with Switches95bd4238
SPIGOT-5647: ZombieVillager entity should have getVillagerType()4d975ac3
SPIGOT-5617: setBlockData does not work when NotPlayEvent is called by redstone current
257 Zeilen
9.2 KiB
Diff
257 Zeilen
9.2 KiB
Diff
From da259346df446940b700aa31114efd056fef37b2 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 28 Apr 2018 10:28:50 -0400
|
|
Subject: [PATCH] Add Ban Methods to Player Objects
|
|
|
|
Allows a more logical API for banning players.
|
|
|
|
player.banPlayer("Breaking the rules");
|
|
|
|
diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java
|
|
index ffc8ad373..222a9a7bf 100644
|
|
--- a/src/main/java/org/bukkit/OfflinePlayer.java
|
|
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
|
|
@@ -44,6 +44,61 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio
|
|
* @return true if banned, otherwise false
|
|
*/
|
|
public boolean isBanned();
|
|
+ // Paper start
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans this player from the server
|
|
+ *
|
|
+ * @param reason Reason for Ban
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @NotNull
|
|
+ public default BanEntry banPlayer(@Nullable String reason) {
|
|
+ return banPlayer(reason, null, null);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans this player from the server
|
|
+ * @param reason Reason for Ban
|
|
+ * @param source Source of the ban, or null for default
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @NotNull
|
|
+ public default BanEntry banPlayer(@Nullable String reason, @Nullable String source) {
|
|
+ return banPlayer(reason, null, source);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans this player from the server
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @NotNull
|
|
+ public default BanEntry banPlayer(@Nullable String reason, @Nullable java.util.Date expires) {
|
|
+ return banPlayer(reason, expires, null);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans this player from the server
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @param source Source of the ban or null for default
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @NotNull
|
|
+ public default BanEntry banPlayer(@Nullable String reason, @Nullable java.util.Date expires, @Nullable String source) {
|
|
+ return banPlayer(reason, expires, source, true);
|
|
+ }
|
|
+ @NotNull
|
|
+ public default BanEntry banPlayer(@Nullable String reason, @Nullable java.util.Date expires, @Nullable String source, boolean kickIfOnline) {
|
|
+ BanEntry banEntry = Bukkit.getServer().getBanList(BanList.Type.NAME).addBan(getName(), reason, expires, source);
|
|
+ if (kickIfOnline && isOnline()) {
|
|
+ getPlayer().kickPlayer(reason);
|
|
+ }
|
|
+ return banEntry;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
/**
|
|
* Checks if this player is whitelisted or not
|
|
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
|
index 700b8721a..43e191649 100644
|
|
--- a/src/main/java/org/bukkit/entity/Player.java
|
|
+++ b/src/main/java/org/bukkit/entity/Player.java
|
|
@@ -3,6 +3,10 @@ package org.bukkit.entity;
|
|
import java.net.InetSocketAddress;
|
|
import com.destroystokyo.paper.Title; // Paper
|
|
import com.destroystokyo.paper.profile.PlayerProfile; // Paper
|
|
+import java.util.Date; // Paper
|
|
+import org.bukkit.BanEntry; // Paper
|
|
+import org.bukkit.BanList; // Paper
|
|
+import org.bukkit.Bukkit; // Paper
|
|
import org.bukkit.DyeColor;
|
|
import org.bukkit.Effect;
|
|
import org.bukkit.GameMode;
|
|
@@ -445,6 +449,162 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
|
public void sendMap(@NotNull MapView map);
|
|
|
|
// Paper start
|
|
+ /**
|
|
+ * Permanently Bans the Profile and IP address currently used by the player.
|
|
+ *
|
|
+ * @param reason Reason for ban
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ // For reference, Bukkit defines this as nullable, while they impl isn't, we'll follow API.
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerFull(@Nullable String reason) {
|
|
+ return banPlayerFull(reason, null, null);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans the Profile and IP address currently used by the player.
|
|
+ *
|
|
+ * @param reason Reason for ban
|
|
+ * @param source Source of ban, or null for default
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerFull(@Nullable String reason, @Nullable String source) {
|
|
+ return banPlayerFull(reason, null, source);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans the Profile and IP address currently used by the player.
|
|
+ *
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerFull(@Nullable String reason, @Nullable Date expires) {
|
|
+ return banPlayerFull(reason, expires, null);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans the Profile and IP address currently used by the player.
|
|
+ *
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @param source Source of the ban, or null for default
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerFull(@Nullable String reason, @Nullable Date expires, @Nullable String source) {
|
|
+ banPlayer(reason, expires, source);
|
|
+ return banPlayerIP(reason, expires, source, true);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ *
|
|
+ * @param reason Reason for ban
|
|
+ * @param kickPlayer Whether or not to kick the player afterwards
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, boolean kickPlayer) {
|
|
+ return banPlayerIP(reason, null, null, kickPlayer);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ * @param reason Reason for ban
|
|
+ * @param source Source of ban, or null for default
|
|
+ * @param kickPlayer Whether or not to kick the player afterwards
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, @Nullable String source, boolean kickPlayer) {
|
|
+ return banPlayerIP(reason, null, source, kickPlayer);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @param kickPlayer Whether or not to kick the player afterwards
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, @Nullable Date expires, boolean kickPlayer) {
|
|
+ return banPlayerIP(reason, expires, null, kickPlayer);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ *
|
|
+ * @param reason Reason for ban
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason) {
|
|
+ return banPlayerIP(reason, null, null);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Permanently Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ * @param reason Reason for ban
|
|
+ * @param source Source of ban, or null for default
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, @Nullable String source) {
|
|
+ return banPlayerIP(reason, null, source);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, @Nullable Date expires) {
|
|
+ return banPlayerIP(reason, expires, null);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @param source Source of the banm or null for default
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, @Nullable Date expires, @Nullable String source) {
|
|
+ return banPlayerIP(reason, expires, source, true);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Bans the IP address currently used by the player.
|
|
+ * Does not ban the Profile, use {@link #banPlayerFull(String, Date, String)}
|
|
+ * @param reason Reason for Ban
|
|
+ * @param expires When to expire the ban
|
|
+ * @param source Source of the banm or null for default
|
|
+ * @param kickPlayer if the targeted player should be kicked
|
|
+ * @return Ban Entry
|
|
+ */
|
|
+ @Nullable
|
|
+ public default BanEntry banPlayerIP(@Nullable String reason, @Nullable Date expires, @Nullable String source, boolean kickPlayer) {
|
|
+ BanEntry banEntry = Bukkit.getServer().getBanList(BanList.Type.IP).addBan(getAddress().getAddress().getHostAddress(), reason, expires, source);
|
|
+ if (kickPlayer && isOnline()) {
|
|
+ getPlayer().kickPlayer(reason);
|
|
+ }
|
|
+
|
|
+ return banEntry;
|
|
+ }
|
|
|
|
/**
|
|
* Sends an Action Bar message to the client.
|
|
--
|
|
2.25.1
|
|
|