mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-09 06:50:32 +08:00
42433c2626
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: 09f10fd9 SPIGOT-5950: Add PrepareSmithingEvent event CraftBukkit Changes:7c03d257
SPIGOT-6011: End Gateways do not work on Non-Main End Worldsd492e363
SPIGOT-6015: Small Armor Stand doesn't drop items5db13eea
SPIGOT-5950: Add PrepareSmithingEvent event
254 lines
9.4 KiB
Diff
254 lines
9.4 KiB
Diff
From 0000000000000000000000000000000000000000 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 58313929f81509030216a0e5e3869da63e11108e..6cf05fed701c67a2c797a4e0839c795802a238a1 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 b7abe54c824662ff6f7e3928850e4c43d9edfafc..d15d659ad9c721137e8692ac6c5981dd9ddb1e70 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;
|
|
@@ -484,6 +488,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.
|