more patches
This commit is contained in:
parent
35aeb0ddeb
commit
5a2d3b2b29
38 changed files with 177 additions and 170 deletions
|
@ -1,22 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
||||
Date: Mon, 5 Apr 2021 18:12:06 -0400
|
||||
Subject: [PATCH] Add EntityBlockStorage#clearEntities()
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/block/EntityBlockStorage.java b/src/main/java/org/bukkit/block/EntityBlockStorage.java
|
||||
index f3f8d765d5d487aa14edf0b88c32608fb804c331..739911cda33b373f99df627a3a378b37d7d461aa 100644
|
||||
--- a/src/main/java/org/bukkit/block/EntityBlockStorage.java
|
||||
+++ b/src/main/java/org/bukkit/block/EntityBlockStorage.java
|
||||
@@ -53,4 +53,11 @@ public interface EntityBlockStorage<T extends Entity> extends TileState {
|
||||
* @param entity Entity to add to the block
|
||||
*/
|
||||
void addEntity(@NotNull T entity);
|
||||
+
|
||||
+ // Paper start - Add EntityBlockStorage clearEntities
|
||||
+ /**
|
||||
+ * Clear all currently stored entities in the block.
|
||||
+ */
|
||||
+ void clearEntities();
|
||||
+ // Paper end
|
||||
}
|
|
@ -1,71 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alvinn8 <42838560+Alvinn8@users.noreply.github.com>
|
||||
Date: Fri, 8 Jan 2021 20:29:58 +0100
|
||||
Subject: [PATCH] Add Adventure message to PlayerAdvancementDoneEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/player/PlayerAdvancementDoneEvent.java b/src/main/java/org/bukkit/event/player/PlayerAdvancementDoneEvent.java
|
||||
index 21ff095afb434d15babcdbe85fa0b94cbb7e75a7..6f618bb140a901c5c1cd08210978a6a651677ba4 100644
|
||||
--- a/src/main/java/org/bukkit/event/player/PlayerAdvancementDoneEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/player/PlayerAdvancementDoneEvent.java
|
||||
@@ -4,6 +4,10 @@ import org.bukkit.advancement.Advancement;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
+// Paper start
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+import net.kyori.adventure.text.Component;
|
||||
+// Paper end
|
||||
|
||||
/**
|
||||
* Called when a player has completed all criteria in an advancement.
|
||||
@@ -13,10 +17,17 @@ public class PlayerAdvancementDoneEvent extends PlayerEvent {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
//
|
||||
private final Advancement advancement;
|
||||
+ private Component message; // Paper - Add Adventure message
|
||||
|
||||
public PlayerAdvancementDoneEvent(@NotNull Player who, @NotNull Advancement advancement) {
|
||||
+ // Paper start - Add Adventure message
|
||||
+ this(who, advancement, null);
|
||||
+ }
|
||||
+ public PlayerAdvancementDoneEvent(@NotNull Player who, @NotNull Advancement advancement, @Nullable Component message) {
|
||||
+ // Paper end
|
||||
super(who);
|
||||
this.advancement = advancement;
|
||||
+ this.message = message; // Paper - Add Adventure message
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -29,6 +40,31 @@ public class PlayerAdvancementDoneEvent extends PlayerEvent {
|
||||
return advancement;
|
||||
}
|
||||
|
||||
+ // Paper start - Add Adventure message
|
||||
+ /**
|
||||
+ * Gets the message to send to all online players.
|
||||
+ * <p>
|
||||
+ * Will be null if the advancement does not announce to chat, for example if
|
||||
+ * it is a recipe unlock or a root advancement.
|
||||
+ *
|
||||
+ * @return The announcement message, or null
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public Component message() {
|
||||
+ return this.message;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Sets the message to send to all online players.
|
||||
+ * <p>
|
||||
+ * If set to null the message will not be sent.
|
||||
+ *
|
||||
+ * @param message The new message
|
||||
+ */
|
||||
+ public void message(@Nullable Component message) {
|
||||
+ this.message = message;
|
||||
+ }
|
||||
+ // Paper end
|
||||
@NotNull
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
|
@ -1,50 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor Linfoot <connorlinfoot@me.com>
|
||||
Date: Wed, 12 May 2021 08:09:19 +0100
|
||||
Subject: [PATCH] Add raw address to AsyncPlayerPreLoginEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java
|
||||
index 033960f566861e303b9cb61aae4c02add501d93f..694a81769076ea58aae9f14f076ab80c9952c957 100644
|
||||
--- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java
|
||||
@@ -20,6 +20,7 @@ public class AsyncPlayerPreLoginEvent extends Event {
|
||||
private net.kyori.adventure.text.Component message; // Paper
|
||||
//private String name; // Paper - Not used anymore
|
||||
private final InetAddress ipAddress;
|
||||
+ private final InetAddress rawAddress; // Paper
|
||||
//private UUID uniqueId; // Paper - Not used anymore
|
||||
|
||||
@Deprecated
|
||||
@@ -49,7 +50,23 @@ public class AsyncPlayerPreLoginEvent extends Event {
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
+ // Paper Start
|
||||
+ /**
|
||||
+ * Gets the raw address of the player logging in
|
||||
+ * @return The address
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public InetAddress getRawAddress() {
|
||||
+ return rawAddress;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
+ @Deprecated
|
||||
public AsyncPlayerPreLoginEvent(@NotNull final String name, @NotNull final InetAddress ipAddress, @NotNull final UUID uniqueId, @NotNull PlayerProfile profile) {
|
||||
+ this(name, ipAddress, ipAddress, uniqueId, profile);
|
||||
+ }
|
||||
+
|
||||
+ public AsyncPlayerPreLoginEvent(@NotNull final String name, @NotNull final InetAddress ipAddress, @NotNull final InetAddress rawAddress, @NotNull final UUID uniqueId, @NotNull PlayerProfile profile) {
|
||||
super(true);
|
||||
this.profile = profile;
|
||||
// Paper end
|
||||
@@ -57,6 +74,7 @@ public class AsyncPlayerPreLoginEvent extends Event {
|
||||
this.message = net.kyori.adventure.text.Component.empty(); // Paper
|
||||
//this.name = name; // Paper - Not used anymore
|
||||
this.ipAddress = ipAddress;
|
||||
+ this.rawAddress = rawAddress; // Paper
|
||||
//this.uniqueId = uniqueId; // Paper - Not used anymore
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Tue, 11 May 2021 14:54:20 -0700
|
||||
Subject: [PATCH] Inventory#close
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/inventory/Inventory.java b/src/main/java/org/bukkit/inventory/Inventory.java
|
||||
index 7956aebcb390379677dccf7c9561866cf94c024c..8f00cb2e3bc9963e9657c1b2493e8b015a6664d0 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/Inventory.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/Inventory.java
|
||||
@@ -353,6 +353,15 @@ public interface Inventory extends Iterable<ItemStack> {
|
||||
*/
|
||||
public void clear();
|
||||
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Closes the inventory for all viewers.
|
||||
+ *
|
||||
+ * @return the number if viewers the inventory was closed for
|
||||
+ */
|
||||
+ public int close();
|
||||
+ // Paper end
|
||||
+
|
||||
/**
|
||||
* Gets a list of players viewing the inventory. Note that a player is
|
||||
* considered to be viewing their own inventory and internal crafting
|
|
@ -1,55 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: MeFisto94 <MeFisto94@users.noreply.github.com>
|
||||
Date: Tue, 11 May 2021 00:48:51 +0200
|
||||
Subject: [PATCH] Add a "should burn in sunlight" API for Phantoms and
|
||||
Skeletons
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Phantom.java b/src/main/java/org/bukkit/entity/Phantom.java
|
||||
index ed4d417c2deefb78807cb61b01df5afcd334d754..a40b045f08b85e22e75459b547e7e7c0b95103ed 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Phantom.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Phantom.java
|
||||
@@ -26,5 +26,19 @@ public interface Phantom extends Flying {
|
||||
*/
|
||||
@Nullable
|
||||
public java.util.UUID getSpawningEntity();
|
||||
+
|
||||
+ /**
|
||||
+ * Check if this phantom will burn in the sunlight
|
||||
+ *
|
||||
+ * @return True if phantom will burn in sunlight
|
||||
+ */
|
||||
+ public boolean shouldBurnInDay();
|
||||
+
|
||||
+ /**
|
||||
+ * Set if this phantom should burn in the sunlight
|
||||
+ *
|
||||
+ * @param shouldBurnInDay True to burn in sunlight
|
||||
+ */
|
||||
+ public void setShouldBurnInDay(boolean shouldBurnInDay);
|
||||
// Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Skeleton.java b/src/main/java/org/bukkit/entity/Skeleton.java
|
||||
index 01d838a60d056bf4b4a8ef9d0ac18c6f91f412e6..6d515726532ad7417fba9d3e01bcb1167539b23c 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Skeleton.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Skeleton.java
|
||||
@@ -64,4 +64,19 @@ public interface Skeleton extends AbstractSkeleton {
|
||||
*/
|
||||
STRAY;
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Check if this skeleton will burn in the sunlight
|
||||
+ *
|
||||
+ * @return True if skeleton will burn in sunlight
|
||||
+ */
|
||||
+ boolean shouldBurnInDay();
|
||||
+
|
||||
+ /**
|
||||
+ * Set if this skeleton should burn in the sunlight
|
||||
+ *
|
||||
+ * @param shouldBurnInDay True to burn in sunlight
|
||||
+ */
|
||||
+ void setShouldBurnInDay(boolean shouldBurnInDay);
|
||||
+ // Paper end
|
||||
}
|
|
@ -1,106 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Connor Linfoot <connorlinfoot@me.com>
|
||||
Date: Sun, 16 May 2021 15:07:34 +0100
|
||||
Subject: [PATCH] Add basic Datapack API
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/datapack/Datapack.java b/src/main/java/io/papermc/paper/datapack/Datapack.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..7b2ab0be10a21e0496ad1d485ff8cb2c0b92a2cb
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datapack/Datapack.java
|
||||
@@ -0,0 +1,32 @@
|
||||
+package io.papermc.paper.datapack;
|
||||
+
|
||||
+import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
+
|
||||
+public interface Datapack {
|
||||
+
|
||||
+ /**
|
||||
+ * @return the name of the pack
|
||||
+ */
|
||||
+ @NonNull
|
||||
+ String getName();
|
||||
+
|
||||
+ /**
|
||||
+ * @return the compatibility of the pack
|
||||
+ */
|
||||
+ @NonNull
|
||||
+ Compatibility getCompatibility();
|
||||
+
|
||||
+ /**
|
||||
+ * @return whether or not the pack is currently enabled
|
||||
+ */
|
||||
+ boolean isEnabled();
|
||||
+
|
||||
+ void setEnabled(boolean enabled);
|
||||
+
|
||||
+ enum Compatibility {
|
||||
+ TOO_OLD,
|
||||
+ TOO_NEW,
|
||||
+ COMPATIBLE,
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/datapack/DatapackManager.java b/src/main/java/io/papermc/paper/datapack/DatapackManager.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..58f78d5e91beacaf710f62461cf869f70d08b2a2
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/datapack/DatapackManager.java
|
||||
@@ -0,0 +1,21 @@
|
||||
+package io.papermc.paper.datapack;
|
||||
+
|
||||
+import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
+
|
||||
+import java.util.Collection;
|
||||
+
|
||||
+public interface DatapackManager {
|
||||
+
|
||||
+ /**
|
||||
+ * @return all the packs known to the server
|
||||
+ */
|
||||
+ @NonNull
|
||||
+ Collection<Datapack> getPacks();
|
||||
+
|
||||
+ /**
|
||||
+ * @return all the packs which are currently enabled
|
||||
+ */
|
||||
+ @NonNull
|
||||
+ Collection<Datapack> getEnabledPacks();
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||
index df684277b9351f9785df051fbe52153c495d8d54..0593d5487f411d34edc3d3b15213db4d86af1407 100644
|
||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||
@@ -2089,6 +2089,14 @@ public final class Bukkit {
|
||||
public static com.destroystokyo.paper.entity.ai.MobGoals getMobGoals() {
|
||||
return server.getMobGoals();
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * @return the datapack manager
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public static io.papermc.paper.datapack.DatapackManager getDatapackManager() {
|
||||
+ return server.getDatapackManager();
|
||||
+ }
|
||||
// Paper end
|
||||
|
||||
@NotNull
|
||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||
index 9f13adfc7fe1c647ce59a102ade4b6469a1071dd..0691ecbf954ae73df396b356f29a896c59ab680a 100644
|
||||
--- a/src/main/java/org/bukkit/Server.java
|
||||
+++ b/src/main/java/org/bukkit/Server.java
|
||||
@@ -1832,5 +1832,11 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
*/
|
||||
@NotNull
|
||||
com.destroystokyo.paper.entity.ai.MobGoals getMobGoals();
|
||||
+
|
||||
+ /**
|
||||
+ * @return the datapack manager
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ io.papermc.paper.datapack.DatapackManager getDatapackManager();
|
||||
// Paper end
|
||||
}
|
|
@ -1,121 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sat, 15 May 2021 10:04:50 -0700
|
||||
Subject: [PATCH] additions to PlayerGameModeChangeEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java b/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java
|
||||
index 4b96e0573c7ce32ad8c41124ee9ecab8359318a5..aee4a8b52c0d4abb655a4778575f0122acf19049 100644
|
||||
--- a/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/player/PlayerGameModeChangeEvent.java
|
||||
@@ -8,15 +8,32 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Called when the GameMode of the player is changed.
|
||||
+ * <p>
|
||||
+ * <b>NOTE:</b> When {@link #getCause()} is {@link Cause#DEFAULT_GAMEMODE},
|
||||
+ * the Player from {@link #getPlayer()} might not be fully online at
|
||||
+ * the time this event is fired. Plugins should use {@link Player#isOnline()}
|
||||
+ * to check before changing player state.
|
||||
*/
|
||||
public class PlayerGameModeChangeEvent extends PlayerEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private boolean cancelled;
|
||||
private final GameMode newGameMode;
|
||||
+ // Paper start
|
||||
+ private final Cause cause;
|
||||
+ private net.kyori.adventure.text.Component cancelMessage;
|
||||
|
||||
+ @Deprecated // Paper end
|
||||
public PlayerGameModeChangeEvent(@NotNull final Player player, @NotNull final GameMode newGameMode) {
|
||||
+ // Paper start
|
||||
+ this(player, newGameMode, Cause.UNKNOWN, null);
|
||||
+ }
|
||||
+
|
||||
+ public PlayerGameModeChangeEvent(@NotNull final Player player, @NotNull final GameMode newGameMode, @NotNull Cause cause, @org.jetbrains.annotations.Nullable net.kyori.adventure.text.Component cancelMessage) {
|
||||
+ // Paper end
|
||||
super(player);
|
||||
this.newGameMode = newGameMode;
|
||||
+ this.cause = cause; // Paper
|
||||
+ this.cancelMessage = cancelMessage; // Paper
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,4 +66,77 @@ public class PlayerGameModeChangeEvent extends PlayerEvent implements Cancellabl
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Gets the cause of this gamemode change.
|
||||
+ *
|
||||
+ * @return the cause
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Cause getCause() {
|
||||
+ return cause;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * <b>Only valid if the cause of the gamemode change was directly due to a command.</b>.
|
||||
+ * Gets the message shown to the command user if the event is cancelled
|
||||
+ * as a notification that a player's gamemode was not changed.
|
||||
+ * <p>
|
||||
+ * This returns {@code null} if the gamemode change was due to a plugin, or a
|
||||
+ * player joining the game with a gamemode not equal to the server default gamemode
|
||||
+ * and {@code force-gamemode} is set to true.
|
||||
+ *
|
||||
+ * @return the error message shown to the command user, null if not directly caused by a command
|
||||
+ */
|
||||
+ @org.jetbrains.annotations.Nullable
|
||||
+ public net.kyori.adventure.text.Component cancelMessage() {
|
||||
+ return cancelMessage;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Sets the message shown to the command user if the event was cancelled.
|
||||
+ * <b>The message is only shown to cancelled events that are directly called by a command
|
||||
+ * not by a plugin or a player joining with the wrong gamemode.</b>
|
||||
+ *
|
||||
+ * @param message the error message shown to the command user, null to show no message.
|
||||
+ */
|
||||
+ public void cancelMessage(@org.jetbrains.annotations.Nullable net.kyori.adventure.text.Component message) {
|
||||
+ this.cancelMessage = message;
|
||||
+ }
|
||||
+
|
||||
+ public enum Cause {
|
||||
+
|
||||
+ /**
|
||||
+ * A plugin changed the player's gamemode with
|
||||
+ * {@link Player#setGameMode(GameMode)}.
|
||||
+ */
|
||||
+ PLUGIN,
|
||||
+
|
||||
+ /**
|
||||
+ * The {@code /gamemode} command was used.
|
||||
+ */
|
||||
+ COMMAND,
|
||||
+
|
||||
+ /**
|
||||
+ * A player had their gamemode changed as a result of
|
||||
+ * the {@code /defaultgamemode} command, or they joined
|
||||
+ * with a gamemode that was not the default gamemode and
|
||||
+ * {@code force-gamemode} in {@code server.properties} is set to true.
|
||||
+ */
|
||||
+ DEFAULT_GAMEMODE,
|
||||
+
|
||||
+ /**
|
||||
+ * When the player dies in a hardcore world and has their gamemode
|
||||
+ * changed to {@link GameMode#SPECTATOR}.
|
||||
+ */
|
||||
+ HARDCORE_DEATH,
|
||||
+
|
||||
+ /**
|
||||
+ * This cause is only used if a plugin fired their own
|
||||
+ * {@link PlayerGameModeChangeEvent} and did not include a
|
||||
+ * cause. Can usually be ignored.
|
||||
+ */
|
||||
+ UNKNOWN,
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
|
@ -1,59 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sat, 15 May 2021 22:10:50 -0700
|
||||
Subject: [PATCH] ItemStack repair check API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
index 6dbd520182b1e7713a68baad09b7f613424ef619..e504567cf755557be8511f2c93c171572b78e722 100644
|
||||
--- a/src/main/java/org/bukkit/UnsafeValues.java
|
||||
+++ b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
@@ -155,6 +155,16 @@ public interface UnsafeValues {
|
||||
*/
|
||||
public io.papermc.paper.inventory.ItemRarity getItemStackRarity(ItemStack itemStack);
|
||||
|
||||
+ /**
|
||||
+ * Checks if an itemstack can be repaired with another itemstack.
|
||||
+ * Returns false if either argument's type is not an item ({@link Material#isItem()}).
|
||||
+ *
|
||||
+ * @param itemToBeRepaired the itemstack to be repaired
|
||||
+ * @param repairMaterial the repair material
|
||||
+ * @return true if valid repair, false if not
|
||||
+ */
|
||||
+ public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
|
||||
+
|
||||
/**
|
||||
* Returns the server's protocol version.
|
||||
*
|
||||
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
index f46aeb59a5a1bde4011cd1d933afcc19c7d1b3bd..86bd9f14de5c1ff3d797955be1af56e5efcac884 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
@@ -887,5 +887,27 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
|
||||
public io.papermc.paper.inventory.ItemRarity getRarity() {
|
||||
return Bukkit.getUnsafe().getItemStackRarity(this);
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if an itemstack can repair this itemstack.
|
||||
+ * Returns false if {@code this} or {@code repairMaterial}'s type is not an item ({@link Material#isItem()}).
|
||||
+ *
|
||||
+ * @param repairMaterial the repair material
|
||||
+ * @return true if it is repairable by, false if not
|
||||
+ */
|
||||
+ public boolean isRepairableBy(@NotNull ItemStack repairMaterial) {
|
||||
+ return Bukkit.getUnsafe().isValidRepairItemStack(this, repairMaterial);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this itemstack can repair another.
|
||||
+ * Returns false if {@code this} or {@code toBeRepaired}'s type is not an item ({@link Material#isItem()}).
|
||||
+ *
|
||||
+ * @param toBeRepaired the itemstack to be repaired
|
||||
+ * @return true if it can repair, false if not
|
||||
+ */
|
||||
+ public boolean canRepair(@NotNull ItemStack toBeRepaired) {
|
||||
+ return Bukkit.getUnsafe().isValidRepairItemStack(toBeRepaired, this);
|
||||
+ }
|
||||
// Paper end
|
||||
}
|
|
@ -1,136 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Thu, 6 May 2021 19:58:03 -0700
|
||||
Subject: [PATCH] More Enchantment API
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java b/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..e6a40c1fcea761bd66743b50e3da3d14797d05b0
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/enchantments/EnchantmentRarity.java
|
||||
@@ -0,0 +1,24 @@
|
||||
+package io.papermc.paper.enchantments;
|
||||
+
|
||||
+public enum EnchantmentRarity {
|
||||
+
|
||||
+ COMMON(10),
|
||||
+ UNCOMMON(5),
|
||||
+ RARE(2),
|
||||
+ VERY_RARE(1);
|
||||
+
|
||||
+ private final int weight;
|
||||
+
|
||||
+ EnchantmentRarity(int weight) {
|
||||
+ this.weight = weight;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the weight for the rarity.
|
||||
+ *
|
||||
+ * @return the weight
|
||||
+ */
|
||||
+ public int getWeight() {
|
||||
+ return weight;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||
index b277034fee2d4f38c40713842d14a8f6dde757aa..1e1c5a9d9a769018c4604e6e44fc5ed2312981e9 100644
|
||||
--- a/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||
+++ b/src/main/java/org/bukkit/enchantments/Enchantment.java
|
||||
@@ -268,11 +268,7 @@ public abstract class Enchantment implements Keyed, net.kyori.adventure.translat
|
||||
* Cursed enchantments are found the same way treasure enchantments are
|
||||
*
|
||||
* @return true if the enchantment is cursed
|
||||
- * @deprecated cursed enchantments are no longer special. Will return true
|
||||
- * only for {@link Enchantment#BINDING_CURSE} and
|
||||
- * {@link Enchantment#VANISHING_CURSE}.
|
||||
*/
|
||||
- @Deprecated
|
||||
public abstract boolean isCursed();
|
||||
|
||||
/**
|
||||
@@ -306,6 +302,46 @@ public abstract class Enchantment implements Keyed, net.kyori.adventure.translat
|
||||
* @return the name of the enchantment with {@code level} applied
|
||||
*/
|
||||
public abstract @NotNull net.kyori.adventure.text.Component displayName(int level);
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this enchantment can be found in villager trades.
|
||||
+ *
|
||||
+ * @return true if the enchantment can be found in trades
|
||||
+ */
|
||||
+ public abstract boolean isTradeable();
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this enchantment can be found in an enchanting table
|
||||
+ * or use to enchant items generated by loot tables.
|
||||
+ *
|
||||
+ * @return true if the enchantment can be found in a table or by loot tables
|
||||
+ */
|
||||
+ public abstract boolean isDiscoverable();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the rarity of this enchantment.
|
||||
+ *
|
||||
+ * @return the rarity
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public abstract io.papermc.paper.enchantments.EnchantmentRarity getRarity();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the damage increase as a result of the level and entity category specified
|
||||
+ *
|
||||
+ * @param level the level of enchantment
|
||||
+ * @param entityCategory the category of entity
|
||||
+ * @return the damage increase
|
||||
+ */
|
||||
+ public abstract float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityCategory entityCategory);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the equipment slots where this enchantment is considered "active".
|
||||
+ *
|
||||
+ * @return the equipment slots
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public abstract java.util.Set<org.bukkit.inventory.EquipmentSlot> getActiveSlots();
|
||||
// Paper end
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
||||
index a39f9c078f42451bd122f3e3729d10ca299bee5f..5f42a9c0c43ced10b754170d7c83793a99fce81b 100644
|
||||
--- a/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
||||
+++ b/src/main/java/org/bukkit/enchantments/EnchantmentWrapper.java
|
||||
@@ -74,5 +74,32 @@ public class EnchantmentWrapper extends Enchantment {
|
||||
public @NotNull String translationKey() {
|
||||
return getEnchantment().translationKey();
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isTradeable() {
|
||||
+ return getEnchantment().isTradeable();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isDiscoverable() {
|
||||
+ return getEnchantment().isDiscoverable();
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public io.papermc.paper.enchantments.EnchantmentRarity getRarity() {
|
||||
+ return getEnchantment().getRarity();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public float getDamageIncrease(int level, @NotNull org.bukkit.entity.EntityCategory entityCategory) {
|
||||
+ return getEnchantment().getDamageIncrease(level, entityCategory);
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public java.util.Set<org.bukkit.inventory.EquipmentSlot> getActiveSlots() {
|
||||
+ return getEnchantment().getActiveSlots();
|
||||
+ }
|
||||
// Paper end
|
||||
}
|
|
@ -1,91 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Tue, 18 May 2021 10:38:10 -0700
|
||||
Subject: [PATCH] List all missing hard depends not just first
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||
index 0d9d729a18b5388b06ab0a3749e55f91f838be88..c57a59d337a41c083e88e36637d839db027b9289 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||
@@ -262,6 +262,7 @@ public final class SimplePluginManager implements PluginManager {
|
||||
|
||||
if (dependencies.containsKey(plugin)) {
|
||||
Iterator<String> dependencyIterator = dependencies.get(plugin).iterator();
|
||||
+ final Set<String> missingHardDependencies = new HashSet<>(dependencies.get(plugin).size()); // Paper - list all missing hard depends
|
||||
|
||||
while (dependencyIterator.hasNext()) {
|
||||
String dependency = dependencyIterator.next();
|
||||
@@ -272,6 +273,12 @@ public final class SimplePluginManager implements PluginManager {
|
||||
|
||||
// We have a dependency not found
|
||||
} else if (!plugins.containsKey(dependency) && !pluginsProvided.containsKey(dependency)) {
|
||||
+ // Paper start
|
||||
+ missingHardDependencies.add(dependency);
|
||||
+ }
|
||||
+ }
|
||||
+ if (!missingHardDependencies.isEmpty()) {
|
||||
+ // Paper end
|
||||
missingDependency = false;
|
||||
pluginIterator.remove();
|
||||
softDependencies.remove(plugin);
|
||||
@@ -280,9 +287,7 @@ public final class SimplePluginManager implements PluginManager {
|
||||
server.getLogger().log(
|
||||
Level.SEVERE,
|
||||
"Could not load '" + entry.getValue().getPath() + "' in folder '" + entry.getValue().getParentFile().getPath() + "'", // Paper
|
||||
- new UnknownDependencyException("Unknown dependency " + dependency + ". Please download and install " + dependency + " to run this plugin."));
|
||||
- break;
|
||||
- }
|
||||
+ new UnknownDependencyException(missingHardDependencies, plugin)); // Paper
|
||||
}
|
||||
|
||||
if (dependencies.containsKey(plugin) && dependencies.get(plugin).isEmpty()) {
|
||||
diff --git a/src/main/java/org/bukkit/plugin/UnknownDependencyException.java b/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
|
||||
index a80251eff75430863b37db1c131e22593f3fcd5e..7b2e607a21f1173d98ee84581881411176380625 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/UnknownDependencyException.java
|
||||
@@ -26,6 +26,19 @@ public class UnknownDependencyException extends RuntimeException {
|
||||
super(message);
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Create a new {@link UnknownDependencyException} with a message informing
|
||||
+ * about which dependencies are missing for what plugin.
|
||||
+ *
|
||||
+ * @param missingDependencies missing dependencies
|
||||
+ * @param pluginName plugin which is missing said dependencies
|
||||
+ */
|
||||
+ public UnknownDependencyException(final @org.jetbrains.annotations.NotNull java.util.Collection<String> missingDependencies, final @org.jetbrains.annotations.NotNull String pluginName) {
|
||||
+ this("Unknown/missing dependency plugins: [" + String.join(", ", missingDependencies) + "]. Please download and install these plugins to run '" + pluginName + "'.");
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
/**
|
||||
* Constructs a new UnknownDependencyException based on the given
|
||||
* Exception
|
||||
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
||||
index d2712f45dbcf26fabe8463d99f378bf422c66970..c8b11793c6a3baabc1c9566e0463ab1d6e293827 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
|
||||
@@ -132,13 +132,19 @@ public final class JavaPluginLoader implements PluginLoader {
|
||||
));
|
||||
}
|
||||
|
||||
+ Set<String> missingHardDependencies = new HashSet<>(description.getDepend().size()); // Paper - list all missing hard depends
|
||||
for (final String pluginName : description.getDepend()) {
|
||||
Plugin current = server.getPluginManager().getPlugin(pluginName);
|
||||
|
||||
if (current == null) {
|
||||
- throw new UnknownDependencyException("Unknown dependency " + pluginName + ". Please download and install " + pluginName + " to run this plugin.");
|
||||
+ missingHardDependencies.add(pluginName); // Paper - list all missing hard depends
|
||||
}
|
||||
}
|
||||
+ // Paper start - list all missing hard depends
|
||||
+ if (!missingHardDependencies.isEmpty()) {
|
||||
+ throw new UnknownDependencyException(missingHardDependencies, description.getFullName());
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
server.getUnsafe().checkSupported(description);
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: BillyGalbreath <blake.galbreath@gmail.com>
|
||||
Date: Fri, 14 May 2021 13:42:06 -0500
|
||||
Subject: [PATCH] Add Mob#lookAt API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Mob.java b/src/main/java/org/bukkit/entity/Mob.java
|
||||
index 55c5227a340e34621160afc9fae3ea843492881d..07bedbc15ba2463d3c629ae68d229286d4033f79 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Mob.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Mob.java
|
||||
@@ -26,6 +26,88 @@ public interface Mob extends LivingEntity, Lootable {
|
||||
* @return True if mob is exposed to daylight
|
||||
*/
|
||||
boolean isInDaylight();
|
||||
+
|
||||
+ /**
|
||||
+ * Instruct this Mob to look at a specific Location
|
||||
+ * <p>
|
||||
+ * Useful when implementing custom mob goals
|
||||
+ *
|
||||
+ * @param location location to look at
|
||||
+ */
|
||||
+ void lookAt(@NotNull org.bukkit.Location location);
|
||||
+
|
||||
+ /**
|
||||
+ * Instruct this Mob to look at a specific Location
|
||||
+ * <p>
|
||||
+ * Useful when implementing custom mob goals
|
||||
+ *
|
||||
+ * @param location location to look at
|
||||
+ * @param headRotationSpeed head rotation speed
|
||||
+ * @param maxHeadPitch max head pitch rotation
|
||||
+ */
|
||||
+ void lookAt(@NotNull org.bukkit.Location location, float headRotationSpeed, float maxHeadPitch);
|
||||
+
|
||||
+ /**
|
||||
+ * Instruct this Mob to look at a specific Entity
|
||||
+ * <p>
|
||||
+ * If a LivingEntity, look at eye location
|
||||
+ * <p>
|
||||
+ * Useful when implementing custom mob goals
|
||||
+ *
|
||||
+ * @param entity entity to look at
|
||||
+ */
|
||||
+ void lookAt(@NotNull Entity entity);
|
||||
+
|
||||
+ /**
|
||||
+ * Instruct this Mob to look at a specific Entity
|
||||
+ * <p>
|
||||
+ * If a LivingEntity, look at eye location
|
||||
+ * <p>
|
||||
+ * Useful when implementing custom mob goals
|
||||
+ *
|
||||
+ * @param entity entity to look at
|
||||
+ * @param headRotationSpeed head rotation speed
|
||||
+ * @param maxHeadPitch max head pitch rotation
|
||||
+ */
|
||||
+ void lookAt(@NotNull Entity entity, float headRotationSpeed, float maxHeadPitch);
|
||||
+
|
||||
+ /**
|
||||
+ * Instruct this Mob to look at a specific position
|
||||
+ * <p>
|
||||
+ * Useful when implementing custom mob goals
|
||||
+ *
|
||||
+ * @param x x coordinate
|
||||
+ * @param y y coordinate
|
||||
+ * @param z z coordinate
|
||||
+ */
|
||||
+ void lookAt(double x, double y, double z);
|
||||
+
|
||||
+ /**
|
||||
+ * Instruct this Mob to look at a specific position
|
||||
+ * <p>
|
||||
+ * Useful when implementing custom mob goals
|
||||
+ *
|
||||
+ * @param x x coordinate
|
||||
+ * @param y y coordinate
|
||||
+ * @param z z coordinate
|
||||
+ * @param headRotationSpeed head rotation speed
|
||||
+ * @param maxHeadPitch max head pitch rotation
|
||||
+ */
|
||||
+ void lookAt(double x, double y, double z, float headRotationSpeed, float maxHeadPitch);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the head rotation speed
|
||||
+ *
|
||||
+ * @return the head rotation speed
|
||||
+ */
|
||||
+ int getHeadRotationSpeed();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the max head pitch rotation
|
||||
+ *
|
||||
+ * @return the max head pitch rotation
|
||||
+ */
|
||||
+ int getMaxHeadPitch();
|
||||
// Paper end
|
||||
/**
|
||||
* Instructs this Mob to set the specified LivingEntity as its target.
|
|
@ -1,61 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Riley Park <riley.park@meino.net>
|
||||
Date: Sun, 23 May 2021 05:04:28 -0700
|
||||
Subject: [PATCH] ItemStack#editMeta
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
index 86bd9f14de5c1ff3d797955be1af56e5efcac884..56072cb4d32ca8a09023be08a5a832c2c108379a 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
@@ -543,6 +543,50 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, net.kyor
|
||||
return result.ensureServerConversions(); // Paper
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Edits the {@link ItemMeta} of this stack.
|
||||
+ * <p>
|
||||
+ * The {@link java.util.function.Consumer} must only interact
|
||||
+ * with this stack's {@link ItemMeta} through the provided {@link ItemMeta} instance.
|
||||
+ * Calling this method or any other meta-related method of the {@link ItemStack} class
|
||||
+ * (such as {@link #getItemMeta()}, {@link #addItemFlags(ItemFlag...)}, {@link #lore()}, etc.)
|
||||
+ * from inside the consumer is disallowed and will produce undefined results or exceptions.
|
||||
+ * </p>
|
||||
+ *
|
||||
+ * @param consumer the meta consumer
|
||||
+ * @return {@code true} if the edit was successful, {@code false} otherwise
|
||||
+ */
|
||||
+ public boolean editMeta(final @NotNull java.util.function.Consumer<? super ItemMeta> consumer) {
|
||||
+ return editMeta(ItemMeta.class, consumer);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Edits the {@link ItemMeta} of this stack if the meta is of the specified type.
|
||||
+ * <p>
|
||||
+ * The {@link java.util.function.Consumer} must only interact
|
||||
+ * with this stack's {@link ItemMeta} through the provided {@link ItemMeta} instance.
|
||||
+ * Calling this method or any other meta-related method of the {@link ItemStack} class
|
||||
+ * (such as {@link #getItemMeta()}, {@link #addItemFlags(ItemFlag...)}, {@link #lore()}, etc.)
|
||||
+ * from inside the consumer is disallowed and will produce undefined results or exceptions.
|
||||
+ * </p>
|
||||
+ *
|
||||
+ * @param metaClass the type of meta to edit
|
||||
+ * @param consumer the meta consumer
|
||||
+ * @param <M> the meta type
|
||||
+ * @return {@code true} if the edit was successful, {@code false} otherwise
|
||||
+ */
|
||||
+ public <M extends ItemMeta> boolean editMeta(final @NotNull Class<M> metaClass, final @NotNull java.util.function.Consumer<@NotNull ? super M> consumer) {
|
||||
+ final @Nullable ItemMeta meta = this.getItemMeta();
|
||||
+ if (metaClass.isInstance(meta)) {
|
||||
+ consumer.accept((M) meta);
|
||||
+ this.setItemMeta(meta);
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
/**
|
||||
* Get a copy of this ItemStack's {@link ItemMeta}.
|
||||
*
|
|
@ -1,92 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sat, 8 May 2021 18:02:06 -0700
|
||||
Subject: [PATCH] Add EntityInsideBlockEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/event/entity/EntityInsideBlockEvent.java b/src/main/java/io/papermc/paper/event/entity/EntityInsideBlockEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..94e8b6f6501c92711bd0bc9ee0f67e28f85a605f
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/event/entity/EntityInsideBlockEvent.java
|
||||
@@ -0,0 +1,80 @@
|
||||
+package io.papermc.paper.event.entity;
|
||||
+
|
||||
+import org.bukkit.block.Block;
|
||||
+import org.bukkit.entity.Entity;
|
||||
+import org.bukkit.event.Cancellable;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.bukkit.event.entity.EntityEvent;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+/**
|
||||
+ * Called when an entity enters the hitbox of a block.
|
||||
+ * Only called for blocks that react when an entity is inside.
|
||||
+ * If cancelled, any action that would have resulted from that entity
|
||||
+ * being in the block will not happen (such as extinguishing an entity in a cauldron).
|
||||
+ * <p>
|
||||
+ * Blocks this is currently called for:
|
||||
+ * <ul>
|
||||
+ * <li>Bubble column</li>
|
||||
+ * <li>Buttons</li>
|
||||
+ * <li>Cactus</li>
|
||||
+ * <li>Campfire</li>
|
||||
+ * <li>Cauldron</li>
|
||||
+ * <li>Crops</li>
|
||||
+ * <li>Ender Portal</li>
|
||||
+ * <li>Fires</li>
|
||||
+ * <li>Honey</li>
|
||||
+ * <li>Hopper</li>
|
||||
+ * <li>Detector rails</li>
|
||||
+ * <li>Nether portals</li>
|
||||
+ * <li>Pressure plates</li>
|
||||
+ * <li>Sweet berry bush</li>
|
||||
+ * <li>Tripwire</li>
|
||||
+ * <li>Waterlily</li>
|
||||
+ * <li>Web</li>
|
||||
+ * <li>Wither rose</li>
|
||||
+ * </ul>
|
||||
+ */
|
||||
+public class EntityInsideBlockEvent extends EntityEvent implements Cancellable {
|
||||
+
|
||||
+ private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
+
|
||||
+ private final Block block;
|
||||
+ private boolean cancelled;
|
||||
+
|
||||
+ public EntityInsideBlockEvent(@NotNull Entity entity, @NotNull Block block) {
|
||||
+ super(entity);
|
||||
+ this.block = block;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the block.
|
||||
+ *
|
||||
+ * @return the block
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Block getBlock() {
|
||||
+ return block;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isCancelled() {
|
||||
+ return cancelled;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setCancelled(boolean cancel) {
|
||||
+ this.cancelled = cancel;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return HANDLER_LIST;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return HANDLER_LIST;
|
||||
+ }
|
||||
+}
|
|
@ -1,53 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sat, 8 May 2021 15:02:00 -0700
|
||||
Subject: [PATCH] Attributes API for item defaults
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
|
||||
index fd1f64089359bf432a4934932ca6cad46145c04b..d849908850025a078ec5127870ec0f61d77a72e9 100644
|
||||
--- a/src/main/java/org/bukkit/Material.java
|
||||
+++ b/src/main/java/org/bukkit/Material.java
|
||||
@@ -4013,6 +4013,19 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
|
||||
public io.papermc.paper.inventory.ItemRarity getItemRarity() {
|
||||
return Bukkit.getUnsafe().getItemRarity(this);
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Returns an immutable multimap of attributes for the slot.
|
||||
+ * {@link #isItem()} must be true for this material.
|
||||
+ *
|
||||
+ * @param equipmentSlot the slot to get the attributes for
|
||||
+ * @throws IllegalArgumentException if {@link #isItem()} is false
|
||||
+ * @return an immutable multimap of attributes
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public com.google.common.collect.Multimap<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> getItemAttributes(@NotNull EquipmentSlot equipmentSlot) {
|
||||
+ return Bukkit.getUnsafe().getItemAttributes(this, equipmentSlot);
|
||||
+ }
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
index e504567cf755557be8511f2c93c171572b78e722..379acee1b5f2d06e6a96f3444783f4a29ca24095 100644
|
||||
--- a/src/main/java/org/bukkit/UnsafeValues.java
|
||||
+++ b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
@@ -165,6 +165,18 @@ public interface UnsafeValues {
|
||||
*/
|
||||
public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial);
|
||||
|
||||
+ /**
|
||||
+ * Returns an immutable multimap of attributes for the material and slot.
|
||||
+ * {@link Material#isItem()} must be true for this material.
|
||||
+ *
|
||||
+ * @param material the material
|
||||
+ * @param equipmentSlot the slot to get the attributes for
|
||||
+ * @throws IllegalArgumentException if {@link Material#isItem()} is false
|
||||
+ * @return an immutable multimap of attributes
|
||||
+ */
|
||||
+ @org.jetbrains.annotations.NotNull
|
||||
+ public com.google.common.collect.Multimap<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> getItemAttributes(@org.jetbrains.annotations.NotNull Material material, @org.jetbrains.annotations.NotNull org.bukkit.inventory.EquipmentSlot equipmentSlot);
|
||||
+
|
||||
/**
|
||||
* Returns the server's protocol version.
|
||||
*
|
|
@ -1,104 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Wed, 2 Dec 2020 18:25:31 -0800
|
||||
Subject: [PATCH] Add cause to Weather/ThunderChangeEvents
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java b/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java
|
||||
index 6cdf83476b4e366bed79960e3706bea5ebe56788..032395c7114b6d757acf1918ce2b014870e85fcd 100644
|
||||
--- a/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/weather/ThunderChangeEvent.java
|
||||
@@ -12,10 +12,20 @@ public class ThunderChangeEvent extends WeatherEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private boolean canceled;
|
||||
private final boolean to;
|
||||
+ // Paper start
|
||||
+ private final Cause cause;
|
||||
|
||||
+ public ThunderChangeEvent(@NotNull final World world, final boolean to, @NotNull final Cause cause) {
|
||||
+ super(world);
|
||||
+ this.to = to;
|
||||
+ this.cause = cause;
|
||||
+ }
|
||||
+
|
||||
+ @Deprecated // Paper end
|
||||
public ThunderChangeEvent(@NotNull final World world, final boolean to) {
|
||||
super(world);
|
||||
this.to = to;
|
||||
+ this.cause = Cause.UNKNOWN; // Paper
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,4 +57,23 @@ public class ThunderChangeEvent extends WeatherEvent implements Cancellable {
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Gets the cause of the weather change.
|
||||
+ *
|
||||
+ * @return the weather change cause
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Cause getCause() {
|
||||
+ return this.cause;
|
||||
+ }
|
||||
+
|
||||
+ public enum Cause {
|
||||
+ COMMAND,
|
||||
+ NATURAL,
|
||||
+ SLEEP,
|
||||
+ PLUGIN,
|
||||
+ UNKNOWN
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java b/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java
|
||||
index d562d87e7418641e52f4dae44f573eaa31add44a..dabd390b84354c14c269c03cbed2006014d004b2 100644
|
||||
--- a/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/weather/WeatherChangeEvent.java
|
||||
@@ -12,10 +12,20 @@ public class WeatherChangeEvent extends WeatherEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private boolean canceled;
|
||||
private final boolean to;
|
||||
+ // Paper start
|
||||
+ private final Cause cause;
|
||||
|
||||
+ public WeatherChangeEvent(@NotNull final World world, final boolean to, @NotNull Cause cause) {
|
||||
+ super(world);
|
||||
+ this.to = to;
|
||||
+ this.cause = cause;
|
||||
+ }
|
||||
+
|
||||
+ @Deprecated // Paper end
|
||||
public WeatherChangeEvent(@NotNull final World world, final boolean to) {
|
||||
super(world);
|
||||
this.to = to;
|
||||
+ this.cause = Cause.UNKNOWN; // Paper
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,4 +57,23 @@ public class WeatherChangeEvent extends WeatherEvent implements Cancellable {
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Gets the cause of the weather change.
|
||||
+ *
|
||||
+ * @return the weather change cause
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Cause getCause() {
|
||||
+ return cause;
|
||||
+ }
|
||||
+
|
||||
+ public enum Cause {
|
||||
+ COMMAND,
|
||||
+ NATURAL,
|
||||
+ SLEEP,
|
||||
+ PLUGIN,
|
||||
+ UNKNOWN
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: LemonCaramel <admin@caramel.moe>
|
||||
Date: Sun, 23 May 2021 17:49:31 +0900
|
||||
Subject: [PATCH] More Lidded Block API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/block/EnderChest.java b/src/main/java/org/bukkit/block/EnderChest.java
|
||||
index 17843e338f2cbccfa9342b420c62d0e4d6eec31d..ebae4e660244df15bf93a78d41f8c0c5c7083b27 100644
|
||||
--- a/src/main/java/org/bukkit/block/EnderChest.java
|
||||
+++ b/src/main/java/org/bukkit/block/EnderChest.java
|
||||
@@ -3,4 +3,4 @@ package org.bukkit.block;
|
||||
/**
|
||||
* Represents a captured state of an ender chest.
|
||||
*/
|
||||
-public interface EnderChest extends TileState { }
|
||||
+public interface EnderChest extends TileState, Lidded { } // Paper - More Lidded Block API
|
||||
diff --git a/src/main/java/org/bukkit/block/Lidded.java b/src/main/java/org/bukkit/block/Lidded.java
|
||||
index 9da2566e02e63be1a0188deaa27b841fa61688ea..30c7df0021df44a411e50636d906d4a1d30fd927 100644
|
||||
--- a/src/main/java/org/bukkit/block/Lidded.java
|
||||
+++ b/src/main/java/org/bukkit/block/Lidded.java
|
||||
@@ -13,4 +13,13 @@ public interface Lidded {
|
||||
* viewing this block.
|
||||
*/
|
||||
void close();
|
||||
+
|
||||
+ // Paper start - More Lidded Block API
|
||||
+ /**
|
||||
+ * Checks if the block's animation state.
|
||||
+ *
|
||||
+ * @return true if the block's animation state is set to open.
|
||||
+ */
|
||||
+ boolean isOpen();
|
||||
+ // Paper end - More Lidded Block API
|
||||
}
|
|
@ -1,129 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sat, 15 May 2021 20:30:34 -0700
|
||||
Subject: [PATCH] Add PlayerKickEvent causes
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||
index 34e7991a0f07793c42abd41fd8c1787deb1b8f5d..6a9f3d7b1d0a6cfcd4f309fe9859b7570cbe08a8 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||
@@ -240,6 +240,14 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @param message kick message
|
||||
*/
|
||||
void kick(final @Nullable net.kyori.adventure.text.Component message);
|
||||
+
|
||||
+ /**
|
||||
+ * Kicks player with custom kick message and cause.
|
||||
+ *
|
||||
+ * @param message kick message
|
||||
+ * @param cause kick cause
|
||||
+ */
|
||||
+ void kick(final @Nullable Component message, @NotNull org.bukkit.event.player.PlayerKickEvent.Cause cause);
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
|
||||
index 5c0efe74237dbe6803ce023fde99682ff70d1a92..05ecfd8c133e72d198faeeded8c757c231c871cc 100644
|
||||
--- a/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/player/PlayerKickEvent.java
|
||||
@@ -12,6 +12,7 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private net.kyori.adventure.text.Component leaveMessage; // Paper
|
||||
private net.kyori.adventure.text.Component kickReason; // Paper
|
||||
+ private final Cause cause; // Paper
|
||||
private Boolean cancel;
|
||||
|
||||
@Deprecated // Paper
|
||||
@@ -19,14 +20,25 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
|
||||
super(playerKicked);
|
||||
this.kickReason = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(kickReason); // Paper
|
||||
this.leaveMessage = org.bukkit.Bukkit.getUnsafe().legacyComponentSerializer().deserialize(leaveMessage); // Paper
|
||||
+ this.cause = Cause.UNKNOWN; // Paper
|
||||
this.cancel = false;
|
||||
}
|
||||
// Paper start
|
||||
+ @Deprecated
|
||||
public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final net.kyori.adventure.text.Component kickReason, @NotNull final net.kyori.adventure.text.Component leaveMessage) {
|
||||
super(playerKicked);
|
||||
this.kickReason = kickReason;
|
||||
this.leaveMessage = leaveMessage;
|
||||
this.cancel = false;
|
||||
+ this.cause = Cause.UNKNOWN;
|
||||
+ }
|
||||
+
|
||||
+ public PlayerKickEvent(@NotNull final Player playerKicked, @NotNull final net.kyori.adventure.text.Component kickReason, @NotNull final net.kyori.adventure.text.Component leaveMessage, @NotNull final Cause cause) {
|
||||
+ super(playerKicked);
|
||||
+ this.kickReason = kickReason;
|
||||
+ this.leaveMessage = leaveMessage;
|
||||
+ this.cancel = false;
|
||||
+ this.cause = cause;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,4 +144,65 @@ public class PlayerKickEvent extends PlayerEvent implements Cancellable {
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Gets the cause of this kick
|
||||
+ *
|
||||
+ * @return
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public org.bukkit.event.player.PlayerKickEvent.Cause getCause() {
|
||||
+ return cause;
|
||||
+ }
|
||||
+
|
||||
+ public enum Cause {
|
||||
+
|
||||
+ PLUGIN,
|
||||
+
|
||||
+ WHITELIST,
|
||||
+
|
||||
+ BANNED,
|
||||
+
|
||||
+ IP_BANNED,
|
||||
+
|
||||
+ KICK_COMMAND,
|
||||
+
|
||||
+ FLYING_PLAYER,
|
||||
+
|
||||
+ FLYING_VEHICLE,
|
||||
+
|
||||
+ TIMEOUT,
|
||||
+
|
||||
+ IDLING,
|
||||
+
|
||||
+ INVALID_VEHICLE_MOVEMENT,
|
||||
+
|
||||
+ INVALID_PLAYER_MOVEMENT,
|
||||
+
|
||||
+ INVALID_ENTITY_ATTACKED,
|
||||
+
|
||||
+ INVALID_PAYLOAD,
|
||||
+
|
||||
+ SPAM,
|
||||
+
|
||||
+ ILLEGAL_ACTION,
|
||||
+
|
||||
+ ILLEGAL_CHARACTERS,
|
||||
+
|
||||
+ SELF_INTERACTION,
|
||||
+
|
||||
+ DUPLICATE_LOGIN,
|
||||
+
|
||||
+ RESOURCE_PACK_REJECTION,
|
||||
+
|
||||
+ /**
|
||||
+ * Spigot's restart command
|
||||
+ */
|
||||
+ RESTART_COMMAND,
|
||||
+ /**
|
||||
+ * Fallback cause
|
||||
+ */
|
||||
+ UNKNOWN,
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue