e105354330
Also fixes EntityBreakDoorEvent not having the correct 'to' block data Also standardizes how to handle EntityChangeBlockEvent before a removeBlock or destroyBlock call. Always use 'state.getFluidState().createLegacyBlock()' to get the new state instead of just using the 'air' state.
118 Zeilen
4.8 KiB
Diff
118 Zeilen
4.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BuildTools <46540330+willkroboth@users.noreply.github.com>
|
|
Date: Fri, 19 Aug 2022 16:11:51 -0400
|
|
Subject: [PATCH] Add method isTickingWorlds() to Bukkit.
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
|
index 209a0c48e092f168744498e1ba7555279318394c..aa938c777936bbefc0c8cef248ad03e0f52bef2c 100644
|
|
--- a/src/main/java/org/bukkit/Bukkit.java
|
|
+++ b/src/main/java/org/bukkit/Bukkit.java
|
|
@@ -775,12 +775,26 @@ public final class Bukkit {
|
|
return server.getWorlds();
|
|
}
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Gets whether the worlds are being ticked right now.
|
|
+ *
|
|
+ * @return true if the worlds are being ticked, false otherwise.
|
|
+ */
|
|
+ public static boolean isTickingWorlds(){
|
|
+ return server.isTickingWorlds();
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Creates or loads a world with the given name using the specified
|
|
* options.
|
|
* <p>
|
|
* If the world is already loaded, it will just return the equivalent of
|
|
* getWorld(creator.name()).
|
|
+ * <p>
|
|
+ * Do note that un/loading worlds mid-tick may have potential side effects, we strongly recommend
|
|
+ * ensuring that you're not un/loading worlds midtick by checking {@link Bukkit#isTickingWorlds()}
|
|
*
|
|
* @param creator the options to use when creating the world
|
|
* @return newly created or loaded world
|
|
@@ -792,6 +806,9 @@ public final class Bukkit {
|
|
|
|
/**
|
|
* Unloads a world with the given name.
|
|
+ * <p>
|
|
+ * Do note that un/loading worlds mid-tick may have potential side effects, we strongly recommend
|
|
+ * ensuring that you're not un/loading worlds midtick by checking {@link Bukkit#isTickingWorlds()}
|
|
*
|
|
* @param name Name of the world to unload
|
|
* @param save whether to save the chunks before unloading
|
|
@@ -803,6 +820,9 @@ public final class Bukkit {
|
|
|
|
/**
|
|
* Unloads the given world.
|
|
+ * <p>
|
|
+ * Do note that un/loading worlds mid-tick may have potential side effects, we strongly recommend
|
|
+ * ensuring that you're not un/loading worlds midtick by checking {@link Bukkit#isTickingWorlds()}
|
|
*
|
|
* @param world the world to unload
|
|
* @param save whether to save the chunks before unloading
|
|
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
|
index 20f95f8911852d86ea938dd73ed0d44c01b27d28..7bdac4b297e40383dd2ef4e2735fdfb086ecaa14 100644
|
|
--- a/src/main/java/org/bukkit/Server.java
|
|
+++ b/src/main/java/org/bukkit/Server.java
|
|
@@ -648,34 +648,55 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
|
@NotNull
|
|
public List<World> getWorlds();
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Gets whether the worlds are being ticked right now.
|
|
+ *
|
|
+ * @return true if the worlds are being ticked, false otherwise.
|
|
+ */
|
|
+ public boolean isTickingWorlds();
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Creates or loads a world with the given name using the specified
|
|
* options.
|
|
* <p>
|
|
* If the world is already loaded, it will just return the equivalent of
|
|
* getWorld(creator.name()).
|
|
+ * <p>
|
|
+ * Do note that un/loading worlds mid-tick may have potential side effects, we strongly recommend
|
|
+ * ensuring that you're not un/loading worlds midtick by checking {@link Bukkit#isTickingWorlds()}
|
|
*
|
|
* @param creator the options to use when creating the world
|
|
* @return newly created or loaded world
|
|
+ * @throws IllegalStateException when {@link #isTickingWorlds() isTickingWorlds} is true
|
|
*/
|
|
@Nullable
|
|
public World createWorld(@NotNull WorldCreator creator);
|
|
|
|
/**
|
|
* Unloads a world with the given name.
|
|
+ * <p>
|
|
+ * Do note that un/loading worlds mid-tick may have potential side effects, we strongly recommend
|
|
+ * ensuring that you're not un/loading worlds midtick by checking {@link Bukkit#isTickingWorlds()}
|
|
*
|
|
* @param name Name of the world to unload
|
|
* @param save whether to save the chunks before unloading
|
|
* @return true if successful, false otherwise
|
|
+ * @throws IllegalStateException when {@link #isTickingWorlds() isTickingWorlds} is true
|
|
*/
|
|
public boolean unloadWorld(@NotNull String name, boolean save);
|
|
|
|
/**
|
|
* Unloads the given world.
|
|
+ * <p>
|
|
+ * Do note that un/loading worlds mid-tick may have potential side effects, we strongly recommend
|
|
+ * ensuring that you're not un/loading worlds midtick by checking {@link Bukkit#isTickingWorlds()}
|
|
*
|
|
* @param world the world to unload
|
|
* @param save whether to save the chunks before unloading
|
|
* @return true if successful, false otherwise
|
|
+ * @throws IllegalStateException when {@link #isTickingWorlds() isTickingWorlds} is true
|
|
*/
|
|
public boolean unloadWorld(@NotNull World world, boolean save);
|
|
|