mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 15:30:19 +01:00
57dd397155
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: b999860d SPIGOT-2304: Add LootGenerateEvent CraftBukkit Changes:77fd87e4
SPIGOT-2304: Implement LootGenerateEventa1a705ee
SPIGOT-5566: Doused campfires & fires should call EntityChangeBlockEvent41712edd
SPIGOT-5707: PersistentDataHolder not Persistent on API dropped Item
256 lines
9.2 KiB
Diff
256 lines
9.2 KiB
Diff
From 2b909f379fdaf8b917ef577b5cf68a1960dd1b80 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 58313929f..6cf05fed7 100644
|
|
--- a/src/main/java/org/bukkit/OfflinePlayer.java
|
|
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
|
|
@@ -45,6 +45,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 8fe402336..c37d7fca0 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;
|
|
@@ -444,6 +448,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.26.2
|
|
|