all api patches done*
*still waiting for leaf to port datafixer to 1.18 so i can do entity serialization
This commit is contained in:
parent
4df6820f86
commit
c1d14dc076
34 changed files with 49 additions and 62 deletions
71
patches/api/0325-Add-BlockBreakBlockEvent.patch
Normal file
71
patches/api/0325-Add-BlockBreakBlockEvent.patch
Normal file
|
@ -0,0 +1,71 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sun, 3 Jan 2021 17:58:25 -0800
|
||||
Subject: [PATCH] Add BlockBreakBlockEvent
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/event/block/BlockBreakBlockEvent.java b/src/main/java/io/papermc/paper/event/block/BlockBreakBlockEvent.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..ac7a60403a9e51fc194f2cc92b0bd60d8879a661
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/event/block/BlockBreakBlockEvent.java
|
||||
@@ -0,0 +1,59 @@
|
||||
+package io.papermc.paper.event.block;
|
||||
+
|
||||
+import org.bukkit.block.Block;
|
||||
+import org.bukkit.event.HandlerList;
|
||||
+import org.bukkit.event.block.BlockEvent;
|
||||
+import org.bukkit.inventory.ItemStack;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+import java.util.List;
|
||||
+
|
||||
+/**
|
||||
+ * Called when a block forces another block to break and drop items.
|
||||
+ * <p>
|
||||
+ * Currently called for piston's and liquid flows.
|
||||
+ */
|
||||
+public class BlockBreakBlockEvent extends BlockEvent {
|
||||
+
|
||||
+ private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
+
|
||||
+ private final List<ItemStack> drops;
|
||||
+ private final Block source;
|
||||
+
|
||||
+ public BlockBreakBlockEvent(@NotNull Block block, @NotNull Block source, @NotNull List<ItemStack> drops) {
|
||||
+ super(block);
|
||||
+ this.source = source;
|
||||
+ this.drops = drops;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the drops of this event
|
||||
+ *
|
||||
+ * @return the drops
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public List<ItemStack> getDrops() {
|
||||
+ return drops;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the block that cause this (e.g. a piston, or adjacent liquid)
|
||||
+ *
|
||||
+ * @return the source
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Block getSource() {
|
||||
+ return source;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ @Override
|
||||
+ public HandlerList getHandlers() {
|
||||
+ return HANDLER_LIST;
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ public static HandlerList getHandlerList() {
|
||||
+ return HANDLER_LIST;
|
||||
+ }
|
||||
+}
|
|
@ -0,0 +1,37 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Madeline Miller <mnmiller1@me.com>
|
||||
Date: Sun, 29 Aug 2021 17:00:56 +1000
|
||||
Subject: [PATCH] Add helpers for left/right click to Action
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/block/Action.java b/src/main/java/org/bukkit/event/block/Action.java
|
||||
index 25d26e3fe713311e66d7e634a6c32af61f4cef59..f0b672bbfcd0eb17f3953ffcd0e728f5b3ec909b 100644
|
||||
--- a/src/main/java/org/bukkit/event/block/Action.java
|
||||
+++ b/src/main/java/org/bukkit/event/block/Action.java
|
||||
@@ -29,5 +29,25 @@ public enum Action {
|
||||
* <li>Triggering tripwire
|
||||
* </ul>
|
||||
*/
|
||||
- PHYSICAL,
|
||||
+ // Paper start
|
||||
+ PHYSICAL;
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether this action is a result of a left click.
|
||||
+ *
|
||||
+ * @return Whether it's a left click
|
||||
+ */
|
||||
+ public boolean isLeftClick() {
|
||||
+ return this == LEFT_CLICK_AIR || this == LEFT_CLICK_BLOCK;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether this action is a result of a right click.
|
||||
+ *
|
||||
+ * @return Whether it's a right click
|
||||
+ */
|
||||
+ public boolean isRightClick() {
|
||||
+ return this == RIGHT_CLICK_AIR || this == RIGHT_CLICK_BLOCK;
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sun, 26 Sep 2021 12:57:35 -0700
|
||||
Subject: [PATCH] Option to prevent NBT copy in smithing recipes
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/inventory/SmithingRecipe.java b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
|
||||
index af04071d37e70b8cc9837d57477c8493be8afb9f..00000f1399b053bb3c7b6d4792559b630d414b81 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/SmithingRecipe.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
|
||||
@@ -13,6 +13,7 @@ public class SmithingRecipe implements Recipe, Keyed {
|
||||
private final ItemStack result;
|
||||
private final RecipeChoice base;
|
||||
private final RecipeChoice addition;
|
||||
+ private final boolean copyNbt; // Paper
|
||||
|
||||
/**
|
||||
* Create a smithing recipe to produce the specified result ItemStack.
|
||||
@@ -23,6 +24,21 @@ public class SmithingRecipe implements Recipe, Keyed {
|
||||
* @param addition The addition ingredient
|
||||
*/
|
||||
public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition) {
|
||||
+ // Paper start
|
||||
+ this(key, result, base, addition, true);
|
||||
+ }
|
||||
+ /**
|
||||
+ * Create a smithing recipe to produce the specified result ItemStack.
|
||||
+ *
|
||||
+ * @param key The unique recipe key
|
||||
+ * @param result The item you want the recipe to create.
|
||||
+ * @param base The base ingredient
|
||||
+ * @param addition The addition ingredient
|
||||
+ * @param copyNbt whether to copy the nbt from the input base item to the output
|
||||
+ */
|
||||
+ public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyNbt) {
|
||||
+ this.copyNbt = copyNbt;
|
||||
+ // Paper end
|
||||
this.key = key;
|
||||
this.result = result;
|
||||
this.base = base;
|
||||
@@ -60,4 +76,15 @@ public class SmithingRecipe implements Recipe, Keyed {
|
||||
public NamespacedKey getKey() {
|
||||
return this.key;
|
||||
}
|
||||
+
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Whether or not to copy the NBT of the input base item to the output.
|
||||
+ *
|
||||
+ * @return true to copy the NBT (default for vanilla smithing recipes)
|
||||
+ */
|
||||
+ public boolean willCopyNbt() {
|
||||
+ return copyNbt;
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
96
patches/api/0328-More-CommandBlock-API.patch
Normal file
96
patches/api/0328-More-CommandBlock-API.patch
Normal file
|
@ -0,0 +1,96 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Fri, 28 May 2021 21:47:39 -0700
|
||||
Subject: [PATCH] More CommandBlock API
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/command/CommandBlockHolder.java b/src/main/java/io/papermc/paper/command/CommandBlockHolder.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..09e57f495e3cbf3c6f434d12ab34830862faeb88
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/command/CommandBlockHolder.java
|
||||
@@ -0,0 +1,58 @@
|
||||
+package io.papermc.paper.command;
|
||||
+
|
||||
+import net.kyori.adventure.text.Component;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+
|
||||
+public interface CommandBlockHolder {
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the command that this CommandBlock will run when powered.
|
||||
+ * This will never return null. If the CommandBlock does not have a
|
||||
+ * command, an empty String will be returned instead.
|
||||
+ *
|
||||
+ * @return Command that this CommandBlock will run when activated.
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ String getCommand();
|
||||
+
|
||||
+ /**
|
||||
+ * Sets the command that this CommandBlock will run when powered.
|
||||
+ * Setting the command to null is the same as setting it to an empty
|
||||
+ * String.
|
||||
+ *
|
||||
+ * @param command Command that this CommandBlock will run when activated.
|
||||
+ */
|
||||
+ void setCommand(@Nullable String command);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the last output from this command block.
|
||||
+ *
|
||||
+ * @return the last output
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ Component lastOutput();
|
||||
+
|
||||
+ /**
|
||||
+ * Sets the last output from this command block.
|
||||
+ *
|
||||
+ * @param lastOutput the last output
|
||||
+ */
|
||||
+ void lastOutput(@Nullable Component lastOutput);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the success count from this command block.
|
||||
+ * @see <a href="https://minecraft.fandom.com/wiki/Command_Block#Success_count">Command_Block#Success_count</a>
|
||||
+ *
|
||||
+ * @return the success count
|
||||
+ */
|
||||
+ int getSuccessCount();
|
||||
+
|
||||
+ /**
|
||||
+ * Sets the success count from this command block.
|
||||
+ * @see <a href="https://minecraft.fandom.com/wiki/Command_Block#Success_count">Command_Block#Success_count</a>
|
||||
+ *
|
||||
+ * @param successCount the success count
|
||||
+ */
|
||||
+ void setSuccessCount(int successCount);
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/block/CommandBlock.java b/src/main/java/org/bukkit/block/CommandBlock.java
|
||||
index 73dce588d1f7a5048300073bf8c2b14d6da1e857..d63da691fb8cfa04bb699adb2eb55278e8b76200 100644
|
||||
--- a/src/main/java/org/bukkit/block/CommandBlock.java
|
||||
+++ b/src/main/java/org/bukkit/block/CommandBlock.java
|
||||
@@ -6,7 +6,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* Represents a captured state of a command block.
|
||||
*/
|
||||
-public interface CommandBlock extends TileState {
|
||||
+public interface CommandBlock extends TileState, io.papermc.paper.command.CommandBlockHolder { // Paper
|
||||
|
||||
/**
|
||||
* Gets the command that this CommandBlock will run when powered.
|
||||
diff --git a/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java b/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java
|
||||
index 91cab8b13d5bba34007f124838b32a1df58c5ac7..6a6021ad3a0e6aaf51f5144fa126e81bada9cfcf 100644
|
||||
--- a/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java
|
||||
+++ b/src/main/java/org/bukkit/entity/minecart/CommandMinecart.java
|
||||
@@ -4,7 +4,7 @@ import org.bukkit.entity.Minecart;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
-public interface CommandMinecart extends Minecart {
|
||||
+public interface CommandMinecart extends Minecart, io.papermc.paper.command.CommandBlockHolder { // Paper
|
||||
|
||||
/**
|
||||
* Gets the command that this CommandMinecart will run when activated.
|
27
patches/api/0329-Fix-plugin-provides-load-order.patch
Normal file
27
patches/api/0329-Fix-plugin-provides-load-order.patch
Normal file
|
@ -0,0 +1,27 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Nassim Jahnke <jahnke.nassim@gmail.com>
|
||||
Date: Fri, 1 Oct 2021 09:47:00 +0200
|
||||
Subject: [PATCH] Fix plugin provides load order
|
||||
|
||||
Fixes https://hub.spigotmc.org/jira/browse/SPIGOT-6740
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||
index c57a59d337a41c083e88e36637d839db027b9289..1366496271c4c7f72d1e5f990e51775b1c371f99 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
|
||||
@@ -281,6 +281,7 @@ public final class SimplePluginManager implements PluginManager {
|
||||
// Paper end
|
||||
missingDependency = false;
|
||||
pluginIterator.remove();
|
||||
+ pluginsProvided.values().removeIf(s -> s.equals(plugin)); // Paper - remove provided plugins
|
||||
softDependencies.remove(plugin);
|
||||
dependencies.remove(plugin);
|
||||
|
||||
@@ -314,6 +315,7 @@ public final class SimplePluginManager implements PluginManager {
|
||||
// We're clear to load, no more soft or hard dependencies left
|
||||
File file = plugins.get(plugin);
|
||||
pluginIterator.remove();
|
||||
+ pluginsProvided.values().removeIf(s -> s.equals(plugin)); // Paper - remove provided plugins
|
||||
missingDependency = false;
|
||||
|
||||
try {
|
|
@ -0,0 +1,69 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Fri, 1 Oct 2021 08:04:43 -0700
|
||||
Subject: [PATCH] Add missing team sidebar display slots
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/scoreboard/DisplaySlot.java b/src/main/java/org/bukkit/scoreboard/DisplaySlot.java
|
||||
index 5d58a18b3625fd01ea34969200edc3bc80cbb587..fe7d0a19f970ac5b4e0c4bef4ff7c4ceae60bb86 100644
|
||||
--- a/src/main/java/org/bukkit/scoreboard/DisplaySlot.java
|
||||
+++ b/src/main/java/org/bukkit/scoreboard/DisplaySlot.java
|
||||
@@ -1,10 +1,55 @@
|
||||
package org.bukkit.scoreboard;
|
||||
|
||||
+import net.kyori.adventure.text.format.NamedTextColor; // Paper
|
||||
/**
|
||||
* Locations for displaying objectives to the player
|
||||
*/
|
||||
public enum DisplaySlot {
|
||||
- BELOW_NAME,
|
||||
- PLAYER_LIST,
|
||||
- SIDEBAR;
|
||||
+ // Paper start
|
||||
+ BELOW_NAME("belowName"),
|
||||
+ PLAYER_LIST("list"),
|
||||
+ SIDEBAR("sidebar"),
|
||||
+ SIDEBAR_TEAM_BLACK(NamedTextColor.BLACK),
|
||||
+ SIDEBAR_TEAM_DARK_BLUE(NamedTextColor.DARK_BLUE),
|
||||
+ SIDEBAR_TEAM_DARK_GREEN(NamedTextColor.DARK_GREEN),
|
||||
+ SIDEBAR_TEAM_DARK_AQUA(NamedTextColor.DARK_AQUA),
|
||||
+ SIDEBAR_TEAM_DARK_RED(NamedTextColor.DARK_RED),
|
||||
+ SIDEBAR_TEAM_DARK_PURPLE(NamedTextColor.DARK_PURPLE),
|
||||
+ SIDEBAR_TEAM_GOLD(NamedTextColor.GOLD),
|
||||
+ SIDEBAR_TEAM_GRAY(NamedTextColor.GRAY),
|
||||
+ SIDEBAR_TEAM_DARK_GRAY(NamedTextColor.DARK_GRAY),
|
||||
+ SIDEBAR_TEAM_BLUE(NamedTextColor.BLUE),
|
||||
+ SIDEBAR_TEAM_GREEN(NamedTextColor.GREEN),
|
||||
+ SIDEBAR_TEAM_AQUA(NamedTextColor.AQUA),
|
||||
+ SIDEBAR_TEAM_RED(NamedTextColor.RED),
|
||||
+ SIDEBAR_TEAM_LIGHT_PURPLE(NamedTextColor.LIGHT_PURPLE),
|
||||
+ SIDEBAR_TEAM_YELLOW(NamedTextColor.YELLOW),
|
||||
+ SIDEBAR_TEAM_WHITE(NamedTextColor.WHITE);
|
||||
+
|
||||
+ public static final net.kyori.adventure.util.Index<String, DisplaySlot> NAMES = net.kyori.adventure.util.Index.create(DisplaySlot.class, DisplaySlot::getId);
|
||||
+
|
||||
+ private final String id;
|
||||
+
|
||||
+ DisplaySlot(@org.jetbrains.annotations.NotNull String id) {
|
||||
+ this.id = id;
|
||||
+ }
|
||||
+
|
||||
+ DisplaySlot(@org.jetbrains.annotations.NotNull NamedTextColor color) {
|
||||
+ this.id = "sidebar.team." + color;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the string id of this display slot.
|
||||
+ *
|
||||
+ * @return the string id
|
||||
+ */
|
||||
+ public @org.jetbrains.annotations.NotNull String getId() {
|
||||
+ return id;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String toString() {
|
||||
+ return this.id;
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
21
patches/api/0331-add-back-EntityPortalExitEvent.patch
Normal file
21
patches/api/0331-add-back-EntityPortalExitEvent.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Wed, 12 May 2021 02:49:28 -0700
|
||||
Subject: [PATCH] add back EntityPortalExitEvent
|
||||
|
||||
Was removed here: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/a2d787f6ebeb72fa7d5750788221fb9a0d838ac4
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
|
||||
index 869ad3b12ebd8275d04b0c21b5ecc0389da01490..0a87e2934901eb1bcaec72ed8141cd4828a4efce 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/EntityPortalExitEvent.java
|
||||
@@ -11,6 +11,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
* <p>
|
||||
* This event allows you to modify the velocity of the entity after they have
|
||||
* successfully exited the portal.
|
||||
+ * <p>
|
||||
+ * Cancelling this event does not prevent the teleport, but it does prevent
|
||||
+ * any changes to velocity and location from taking place.
|
||||
*/
|
||||
public class EntityPortalExitEvent extends EntityTeleportEvent {
|
||||
private static final HandlerList handlers = new HandlerList();
|
|
@ -0,0 +1,48 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Zacek <dawon@dawon.eu>
|
||||
Date: Mon, 4 Oct 2021 08:29:36 +0200
|
||||
Subject: [PATCH] Add methods to find targets for lightning strikes
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
||||
index 5810bcf92ddff080511dd07326769c8fef53d7b9..1f8a51897d9de00f0004ab1de479198390483f7d 100644
|
||||
--- a/src/main/java/org/bukkit/World.java
|
||||
+++ b/src/main/java/org/bukkit/World.java
|
||||
@@ -757,6 +757,37 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
||||
@NotNull
|
||||
public LightningStrike strikeLightningEffect(@NotNull Location loc);
|
||||
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Finds the location of the nearest unobstructed Lightning Rod in a 128-block
|
||||
+ * radius around the given location. Returns {@code null} if no Lightning Rod is found.
|
||||
+ *
|
||||
+ * <p>Note: To activate a Lightning Rod, the position one block above it must be struck by lightning.</p>
|
||||
+ *
|
||||
+ * @param location {@link Location} to search for Lightning Rod around
|
||||
+ * @return {@link Location} of Lightning Rod or {@code null}
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public Location findLightningRod(@NotNull Location location);
|
||||
+
|
||||
+ /**
|
||||
+ * Finds a target {@link Location} for lightning to strike.
|
||||
+ * <p>It selects from (in the following order):</p>
|
||||
+ * <ol>
|
||||
+ * <li>the block above the nearest Lightning Rod, found using {@link World#findLightningRod(Location)}</li>
|
||||
+ * <li>a random {@link LivingEntity} that can see the sky in a 6x6 cuboid
|
||||
+ * around input X/Z coordinates. Y ranges from <i>the highest motion-blocking
|
||||
+ * block at the input X/Z - 3</i> to <i>the height limit + 3</i></li>
|
||||
+ * </ol>
|
||||
+ * <p>Returns {@code null} if no target is found.</p>
|
||||
+ *
|
||||
+ * @param location {@link Location} to search for target around
|
||||
+ * @return lightning target or {@code null}
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public Location findLightningTarget(@NotNull Location location);
|
||||
+ // Paper end
|
||||
+
|
||||
/**
|
||||
* Get a list of all entities in this World
|
||||
*
|
62
patches/api/0333-Get-entity-default-attributes.patch
Normal file
62
patches/api/0333-Get-entity-default-attributes.patch
Normal file
|
@ -0,0 +1,62 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Fri, 20 Aug 2021 13:03:55 -0700
|
||||
Subject: [PATCH] Get entity default attributes
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
index 379acee1b5f2d06e6a96f3444783f4a29ca24095..0b15fe8b5da29bf691c394098f0203a49504242e 100644
|
||||
--- a/src/main/java/org/bukkit/UnsafeValues.java
|
||||
+++ b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
@@ -183,5 +183,22 @@ public interface UnsafeValues {
|
||||
* @return the server's protocol version
|
||||
*/
|
||||
int getProtocolVersion();
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if the entity represented by the namespaced key has default attributes.
|
||||
+ *
|
||||
+ * @param entityKey the entity's key
|
||||
+ * @return true if it has default attributes
|
||||
+ */
|
||||
+ boolean hasDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the default attributes for the entity represented by the namespaced key.
|
||||
+ *
|
||||
+ * @param entityKey the entity's key
|
||||
+ * @return an unmodifiable instance of Attributable for reading default attributes.
|
||||
+ * @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultEntityAttributes(NamespacedKey)} first)
|
||||
+ */
|
||||
+ @org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);
|
||||
// Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java
|
||||
index d36d314383713bac3b11f18d95b0809dce3cd6e0..48aa290dbcf93715ce58d56d6cf3216948f2f3f2 100644
|
||||
--- a/src/main/java/org/bukkit/entity/EntityType.java
|
||||
+++ b/src/main/java/org/bukkit/entity/EntityType.java
|
||||
@@ -441,5 +441,24 @@ public enum EntityType implements Keyed, net.kyori.adventure.translation.Transla
|
||||
Preconditions.checkArgument(this != UNKNOWN, "UNKNOWN entities do not have translation keys");
|
||||
return org.bukkit.Bukkit.getUnsafe().getTranslationKey(this);
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if the entity has default attributes.
|
||||
+ *
|
||||
+ * @return true if it has default attributes
|
||||
+ */
|
||||
+ public boolean hasDefaultAttributes() {
|
||||
+ return org.bukkit.Bukkit.getUnsafe().hasDefaultEntityAttributes(this.key);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the default attributes for the entity.
|
||||
+ *
|
||||
+ * @return an unmodifiable instance of Attributable for reading default attributes.
|
||||
+ * @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultAttributes()} first)
|
||||
+ */
|
||||
+ public @NotNull org.bukkit.attribute.Attributable getDefaultAttributes() {
|
||||
+ return org.bukkit.Bukkit.getUnsafe().getDefaultEntityAttributes(this.key);
|
||||
+ }
|
||||
// Paper end
|
||||
}
|
31
patches/api/0334-Left-handed-API.patch
Normal file
31
patches/api/0334-Left-handed-API.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 14 Oct 2021 12:36:46 -0500
|
||||
Subject: [PATCH] Left handed API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Mob.java b/src/main/java/org/bukkit/entity/Mob.java
|
||||
index 07bedbc15ba2463d3c629ae68d229286d4033f79..984ad873f36c3dcc73703eb6902c4eab5f1e72b6 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Mob.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Mob.java
|
||||
@@ -148,4 +148,20 @@ public interface Mob extends LivingEntity, Lootable {
|
||||
* @return whether the mob is aware
|
||||
*/
|
||||
public boolean isAware();
|
||||
+
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Check if Mob is left-handed
|
||||
+ *
|
||||
+ * @return True if left-handed
|
||||
+ */
|
||||
+ public boolean isLeftHanded();
|
||||
+
|
||||
+ /**
|
||||
+ * Set if Mob is left-handed
|
||||
+ *
|
||||
+ * @param leftHanded True if left-handed
|
||||
+ */
|
||||
+ public void setLeftHanded(boolean leftHanded);
|
||||
+ // Paper end
|
||||
}
|
214
patches/api/0335-Add-advancement-display-API.patch
Normal file
214
patches/api/0335-Add-advancement-display-API.patch
Normal file
|
@ -0,0 +1,214 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: syldium <syldium@mailo.com>
|
||||
Date: Fri, 9 Jul 2021 18:49:40 +0200
|
||||
Subject: [PATCH] Add advancement display API
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/advancement/AdvancementDisplay.java b/src/main/java/io/papermc/paper/advancement/AdvancementDisplay.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..67341bb70762a2326030abd2548372b92474f544
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/advancement/AdvancementDisplay.java
|
||||
@@ -0,0 +1,156 @@
|
||||
+package io.papermc.paper.advancement;
|
||||
+
|
||||
+import net.kyori.adventure.text.Component;
|
||||
+import net.kyori.adventure.text.format.NamedTextColor;
|
||||
+import net.kyori.adventure.text.format.TextColor;
|
||||
+import net.kyori.adventure.translation.Translatable;
|
||||
+import net.kyori.adventure.util.Index;
|
||||
+import org.bukkit.NamespacedKey;
|
||||
+import org.bukkit.inventory.ItemStack;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+
|
||||
+/**
|
||||
+ * Describes the display of an advancement.
|
||||
+ * <p>
|
||||
+ * The display is used in the chat, in the toast messages and the advancements
|
||||
+ * screen.
|
||||
+ */
|
||||
+public interface AdvancementDisplay {
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the {@link Frame}.
|
||||
+ * <p>
|
||||
+ * This defines the appearance of the tile in the advancements screen and
|
||||
+ * the text when it's completed.
|
||||
+ *
|
||||
+ * @return the frame type
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ Frame frame();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the advancement title.
|
||||
+ *
|
||||
+ * @return the title
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ Component title();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the description.
|
||||
+ *
|
||||
+ * @return the description
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ Component description();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the icon shown in the frame in the advancements screen.
|
||||
+ *
|
||||
+ * @return a copy of the icon
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ ItemStack icon();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether a toast should be displayed.
|
||||
+ * <p>
|
||||
+ * A toast is a notification that will be displayed in the top right corner
|
||||
+ * of the screen.
|
||||
+ *
|
||||
+ * @return {@code true} if a toast should be shown
|
||||
+ */
|
||||
+ boolean doesShowToast();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether a message should be sent in the chat.
|
||||
+ *
|
||||
+ * @return {@code true} if a message should be sent
|
||||
+ * @see org.bukkit.event.player.PlayerAdvancementDoneEvent#message() to edit
|
||||
+ * the message
|
||||
+ */
|
||||
+ boolean doesAnnounceToChat();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether this advancement is hidden.
|
||||
+ * <p>
|
||||
+ * Hidden advancements cannot be viewed by the player until they have been
|
||||
+ * unlocked.
|
||||
+ *
|
||||
+ * @return {@code true} if hidden
|
||||
+ */
|
||||
+ boolean isHidden();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the texture displayed behind the advancement tree when selected.
|
||||
+ * <p>
|
||||
+ * This only affects root advancements without any parent. If the background
|
||||
+ * is not specified or doesn't exist, the tab background will be the missing
|
||||
+ * texture.
|
||||
+ *
|
||||
+ * @return the background texture path
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ NamespacedKey backgroundPath();
|
||||
+
|
||||
+ /**
|
||||
+ * Defines how the {@link #icon()} appears in the advancements screen and
|
||||
+ * the color used with the {@link #title() advancement name}.
|
||||
+ */
|
||||
+ enum Frame implements Translatable {
|
||||
+
|
||||
+ /**
|
||||
+ * "Challenge complete" advancement.
|
||||
+ * <p>
|
||||
+ * The client will play the {@code ui.toast.challenge_complete} sound
|
||||
+ * when the challenge is completed and the toast is shown.
|
||||
+ */
|
||||
+ CHALLENGE("challenge", NamedTextColor.DARK_PURPLE),
|
||||
+
|
||||
+ /**
|
||||
+ * "Goal reached" advancement.
|
||||
+ */
|
||||
+ GOAL("goal", NamedTextColor.GREEN),
|
||||
+
|
||||
+ /**
|
||||
+ * "Advancement made" advancement.
|
||||
+ */
|
||||
+ TASK("task", NamedTextColor.GREEN);
|
||||
+
|
||||
+ /**
|
||||
+ * The name map.
|
||||
+ */
|
||||
+ public static final Index<String, Frame> NAMES = Index.create(Frame.class, frame -> frame.name);
|
||||
+ private final String name;
|
||||
+ private final TextColor color;
|
||||
+
|
||||
+ Frame(String name, TextColor color) {
|
||||
+ this.name = name;
|
||||
+ this.color = color;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the {@link TextColor} used for the advancement name.
|
||||
+ *
|
||||
+ * @return the text color
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public TextColor color() {
|
||||
+ return this.color;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the translation key used when an advancement is completed.
|
||||
+ * <p>
|
||||
+ * This is the first line of the toast displayed by the client.
|
||||
+ *
|
||||
+ * @return the toast message key
|
||||
+ */
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public String translationKey() {
|
||||
+ return "advancements.toast." + this.name;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/advancement/Advancement.java b/src/main/java/org/bukkit/advancement/Advancement.java
|
||||
index 7c5009974ac8d64d0e738e60cec45acb0d4ca89a..3bbc7dffc36fa31099a8794ceeec77aeae0c49cb 100644
|
||||
--- a/src/main/java/org/bukkit/advancement/Advancement.java
|
||||
+++ b/src/main/java/org/bukkit/advancement/Advancement.java
|
||||
@@ -17,4 +17,41 @@ public interface Advancement extends Keyed {
|
||||
*/
|
||||
@NotNull
|
||||
Collection<String> getCriteria();
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Get the display info of this advancement.
|
||||
+ * <p>
|
||||
+ * Will be {@code null} when totally hidden, for example with crafting
|
||||
+ * recipes.
|
||||
+ *
|
||||
+ * @return the display info
|
||||
+ */
|
||||
+ @org.jetbrains.annotations.Nullable
|
||||
+ io.papermc.paper.advancement.AdvancementDisplay getDisplay();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the parent advancement, if any.
|
||||
+ *
|
||||
+ * @return the parent advancement
|
||||
+ */
|
||||
+ @org.jetbrains.annotations.Nullable
|
||||
+ Advancement getParent();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets all the direct children advancements.
|
||||
+ *
|
||||
+ * @return the children advancements
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ @org.jetbrains.annotations.Unmodifiable
|
||||
+ Collection<Advancement> getChildren();
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the root advancement of the tree this is located in.
|
||||
+ *
|
||||
+ * @return the root advancement
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ Advancement getRoot();
|
||||
+ // Paper end
|
||||
}
|
25
patches/api/0336-Add-ItemFactory-getMonsterEgg-API.patch
Normal file
25
patches/api/0336-Add-ItemFactory-getMonsterEgg-API.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Thu, 14 Oct 2021 12:09:28 -0500
|
||||
Subject: [PATCH] Add ItemFactory#getMonsterEgg API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/inventory/ItemFactory.java b/src/main/java/org/bukkit/inventory/ItemFactory.java
|
||||
index 0a4466c6ca519c3a5da76ff870fb2a4e3a06effd..8677e273641a46aae7107361f23f6ded59a50dc0 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/ItemFactory.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/ItemFactory.java
|
||||
@@ -241,5 +241,14 @@ public interface ItemFactory {
|
||||
@NotNull
|
||||
@Deprecated
|
||||
net.md_5.bungee.api.chat.hover.content.Content hoverContentOf(@NotNull org.bukkit.entity.Entity entity, @NotNull net.md_5.bungee.api.chat.BaseComponent[] customName);
|
||||
+
|
||||
+ /**
|
||||
+ * Get a spawn egg ItemStack from an EntityType
|
||||
+ *
|
||||
+ * @param type EntityType
|
||||
+ * @return ItemStack spawner egg
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ ItemStack getSpawnEgg(@Nullable org.bukkit.entity.EntityType type);
|
||||
// Paper end
|
||||
}
|
51
patches/api/0337-Add-critical-damage-API.patch
Normal file
51
patches/api/0337-Add-critical-damage-API.patch
Normal file
|
@ -0,0 +1,51 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: dodison <kacpik@mapik.eu>
|
||||
Date: Mon, 26 Jul 2021 17:35:20 +0200
|
||||
Subject: [PATCH] Add critical damage API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
|
||||
index 869bad7405ec7fa67728e90d8b9f2e11b542611f..7ce8f1a26c1b33dd0eb6e6435952fd73abf49879 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
|
||||
@@ -11,15 +11,40 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class EntityDamageByEntityEvent extends EntityDamageEvent {
|
||||
private final Entity damager;
|
||||
|
||||
+ @Deprecated // Paper - add critical damage API
|
||||
public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) {
|
||||
super(damagee, cause, damage);
|
||||
this.damager = damager;
|
||||
+ this.critical = false; // Paper - add critical damage API
|
||||
}
|
||||
|
||||
+ @Deprecated // Paper - add critical damage API
|
||||
public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions) {
|
||||
+ // Paper start - add critical damage API
|
||||
+ this(damager, damagee, cause, modifiers, modifierFunctions, false);
|
||||
+ }
|
||||
+
|
||||
+ private final boolean critical;
|
||||
+ public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions, boolean critical) {
|
||||
+ // Paper end
|
||||
super(damagee, cause, modifiers, modifierFunctions);
|
||||
this.damager = damager;
|
||||
+ // Paper start - add critical damage API
|
||||
+ this.critical = critical;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Shows this damage instance was critical.
|
||||
+ * The damage instance can be critical if the attacking player met the respective conditions.
|
||||
+ * Furthermore arrows may also cause a critical damage event if the arrow {@link org.bukkit.entity.AbstractArrow#isCritical()}.
|
||||
+ *
|
||||
+ * @return if the hit was critical.
|
||||
+ * @see <a href="https://minecraft.fandom.com/wiki/Damage#Critical_hit">https://minecraft.fandom.com/wiki/Damage#Critical_hit</a>
|
||||
+ */
|
||||
+ public boolean isCritical() {
|
||||
+ return this.critical;
|
||||
}
|
||||
+ // Paper end
|
||||
|
||||
/**
|
||||
* Returns the entity that damaged the defender.
|
34
patches/api/0338-Fix-issues-with-mob-conversion.patch
Normal file
34
patches/api/0338-Fix-issues-with-mob-conversion.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Sun, 24 Oct 2021 20:29:27 -0700
|
||||
Subject: [PATCH] Fix issues with mob conversion
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/PiglinAbstract.java b/src/main/java/org/bukkit/entity/PiglinAbstract.java
|
||||
index 87f4b7ad7c0a95a7123d142fa023c5da5c760341..70a45e657c6cab6058d1a56fc51c5df79fdce60f 100644
|
||||
--- a/src/main/java/org/bukkit/entity/PiglinAbstract.java
|
||||
+++ b/src/main/java/org/bukkit/entity/PiglinAbstract.java
|
||||
@@ -31,14 +31,17 @@ public interface PiglinAbstract extends Monster, Ageable {
|
||||
public int getConversionTime();
|
||||
|
||||
/**
|
||||
- * Sets the amount of ticks until this entity will be converted to a
|
||||
- * Zombified Piglin.
|
||||
+ * Sets the conversion counter value. The counter is incremented
|
||||
+ * every tick the {@link #isConverting()} returns true. Setting this
|
||||
+ * value will not start the conversion if the {@link PiglinAbstract} is
|
||||
+ * not in a valid environment ({@link org.bukkit.World#isPiglinSafe})
|
||||
+ * to convert or {@link #isImmuneToZombification()} is true or
|
||||
+ * has no AI.
|
||||
*
|
||||
- * When this reaches 0, the entity will be converted. A value of less than 0
|
||||
- * will stop the current conversion process without converting the current
|
||||
- * entity.
|
||||
+ * When this reaches 300, the entity will be converted. To stop the
|
||||
+ * conversion use {@link #setImmuneToZombification(boolean)}.
|
||||
*
|
||||
- * @param time new conversion time
|
||||
+ * @param time new conversion counter
|
||||
*/
|
||||
public void setConversionTime(int time);
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
Date: Thu, 4 Nov 2021 11:50:35 -0700
|
||||
Subject: [PATCH] Add isCollidable methods to various places
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
|
||||
index d849908850025a078ec5127870ec0f61d77a72e9..f24820f14d689d49dfea25605199d5299ec28e7c 100644
|
||||
--- a/src/main/java/org/bukkit/Material.java
|
||||
+++ b/src/main/java/org/bukkit/Material.java
|
||||
@@ -4026,6 +4026,16 @@ public enum Material implements Keyed, net.kyori.adventure.translation.Translata
|
||||
public com.google.common.collect.Multimap<org.bukkit.attribute.Attribute, org.bukkit.attribute.AttributeModifier> getItemAttributes(@NotNull EquipmentSlot equipmentSlot) {
|
||||
return Bukkit.getUnsafe().getItemAttributes(this, equipmentSlot);
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this material is collidable.
|
||||
+ *
|
||||
+ * @return true if collidable
|
||||
+ * @throws IllegalArgumentException if {@link #isBlock()} is false
|
||||
+ */
|
||||
+ public boolean isCollidable() {
|
||||
+ return Bukkit.getUnsafe().isCollidable(this);
|
||||
+ }
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
index 0b15fe8b5da29bf691c394098f0203a49504242e..c8c2e5bc2ec1d8d7ea445a1203c9d5a904dfc666 100644
|
||||
--- a/src/main/java/org/bukkit/UnsafeValues.java
|
||||
+++ b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
@@ -200,5 +200,14 @@ public interface UnsafeValues {
|
||||
* @throws IllegalArgumentException if the entity does not exist of have default attributes (use {@link #hasDefaultEntityAttributes(NamespacedKey)} first)
|
||||
*/
|
||||
@org.jetbrains.annotations.NotNull org.bukkit.attribute.Attributable getDefaultEntityAttributes(@org.jetbrains.annotations.NotNull NamespacedKey entityKey);
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this material is collidable.
|
||||
+ *
|
||||
+ * @param material the material to check
|
||||
+ * @return true if collidable
|
||||
+ * @throws IllegalArgumentException if {@link Material#isBlock()} is false
|
||||
+ */
|
||||
+ boolean isCollidable(@org.jetbrains.annotations.NotNull Material material);
|
||||
// Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
|
||||
index e959f844581eaa88f581a4fabcb39148624bbe9b..0dd0beee6800fb34520dfa2d05e5bdda76624d64 100644
|
||||
--- a/src/main/java/org/bukkit/block/Block.java
|
||||
+++ b/src/main/java/org/bukkit/block/Block.java
|
||||
@@ -471,6 +471,13 @@ public interface Block extends Metadatable, net.kyori.adventure.translation.Tran
|
||||
* @return true if block is solid
|
||||
*/
|
||||
boolean isSolid();
|
||||
+
|
||||
+ /**
|
||||
+ * Checks if this block is collidable.
|
||||
+ *
|
||||
+ * @return true if collidable
|
||||
+ */
|
||||
+ boolean isCollidable();
|
||||
// Paper end
|
||||
|
||||
/**
|
||||
diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java
|
||||
index 631cbf2be51040eee00aa39a39c5ec4003f91843..96cde879922c796f3ac8d14ee99d7b190ff67bd9 100644
|
||||
--- a/src/main/java/org/bukkit/block/BlockState.java
|
||||
+++ b/src/main/java/org/bukkit/block/BlockState.java
|
||||
@@ -221,4 +221,13 @@ public interface BlockState extends Metadatable {
|
||||
* or 'virtual' (e.g. on an itemstack)
|
||||
*/
|
||||
boolean isPlaced();
|
||||
+
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Checks if this block state is collidable.
|
||||
+ *
|
||||
+ * @return true if collidable
|
||||
+ */
|
||||
+ boolean isCollidable();
|
||||
+ // Paper end
|
||||
}
|
23
patches/api/0340-Goat-ram-API.patch
Normal file
23
patches/api/0340-Goat-ram-API.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Seggan <segganew@gmail.com>
|
||||
Date: Thu, 5 Aug 2021 13:10:31 -0400
|
||||
Subject: [PATCH] Goat ram API
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Goat.java b/src/main/java/org/bukkit/entity/Goat.java
|
||||
index 90e9028b5ee7fcf9488d37090875b7163bdcd1d0..01827c4118df36fe1b77115f181fb4d225c3c866 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Goat.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Goat.java
|
||||
@@ -24,4 +24,12 @@ public interface Goat extends Animals {
|
||||
* @param screaming screaming status
|
||||
*/
|
||||
void setScreaming(boolean screaming);
|
||||
+
|
||||
+ // Paper start - Goat ram API
|
||||
+ /**
|
||||
+ * Makes the goat ram at the specified entity
|
||||
+ * @param entity the entity to ram at
|
||||
+ */
|
||||
+ void ram(@org.jetbrains.annotations.NotNull LivingEntity entity);
|
||||
+ // Paper end
|
||||
}
|
26
patches/api/0341-Add-API-for-resetting-a-single-score.patch
Normal file
26
patches/api/0341-Add-API-for-resetting-a-single-score.patch
Normal file
|
@ -0,0 +1,26 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: booky10 <boooky10@gmail.com>
|
||||
Date: Fri, 5 Nov 2021 21:01:36 +0100
|
||||
Subject: [PATCH] Add API for resetting a single score
|
||||
|
||||
It was only possible to reset all scores for a specific entry, instead of resetting only specific scores.
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/scoreboard/Score.java b/src/main/java/org/bukkit/scoreboard/Score.java
|
||||
index d25b4d04932da7e7562cd1acf67ebec33af5b6ef..07bfad4a908de26e9aa6291e4ad20006e88ffe87 100644
|
||||
--- a/src/main/java/org/bukkit/scoreboard/Score.java
|
||||
+++ b/src/main/java/org/bukkit/scoreboard/Score.java
|
||||
@@ -73,4 +73,14 @@ public interface Score {
|
||||
*/
|
||||
@Nullable
|
||||
Scoreboard getScoreboard();
|
||||
+
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Resets this score, if a value has been set.
|
||||
+ *
|
||||
+ * @throws IllegalStateException if the associated objective has been
|
||||
+ * unregistered
|
||||
+ */
|
||||
+ void resetScore() throws IllegalStateException;
|
||||
+ // Paper end
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue