Patch cleanup (#77)

* Patch cleanup

This is more like a maintenance commit rather than a one that adds functionallity.
Server owners can skip updating to this, although it is recommended as I implemented a version checker.

* Fix wrong predicate import

* More useless diff removed
This commit is contained in:
Ivan Pekov 2020-08-11 21:40:29 +03:00 committed by GitHub
parent 41ffe92eeb
commit 8b7008c3a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 540 additions and 917 deletions

View File

@ -107,14 +107,15 @@ index c9fa39c5b4b013b56720e339463ffcb5fd3c13f9..00000000000000000000000000000000
-
- for (final NextTickListEntry<T> toTick : this.toTickThisTick) {
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
index fe7330fabe386966c2d203a190a00a785ea21be0..2cedf4d7aaefc064f5730015c41c1f5102bc747d 100644
index fe7330fabe386966c2d203a190a00a785ea21be0..e2bbbfeb7e2505479e6a457294aaa550b97319ca 100644
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
@@ -112,6 +112,19 @@ public final class OrigamiConfig {
@@ -112,6 +112,20 @@ public final class OrigamiConfig {
config.addDefault("worlds.default." + path, Double.valueOf(dfl));
return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl));
}
+
+ // Yatopia start
+ public boolean tickEmptyHoppers = true;
+ public int fullHopperCooldown = 128;
+ private void hopperOptimizations() {
@ -124,9 +125,9 @@ index fe7330fabe386966c2d203a190a00a785ea21be0..2cedf4d7aaefc064f5730015c41c1f51
+
+ public boolean fastFeatureSearchDontLoad = false;
+ private void fastFeatureSearchDontLoad() {
+ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", fastFeatureSearchDontLoad);
+ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false);
+ }
+
+ // Yatopia end
}
}
@ -585,7 +586,7 @@ index bada470cba41cce9beb9eb04227b42c1d489d731..00000000000000000000000000000000
- private int c;
- private TileEntityShulkerBox.AnimationPhase i;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 9ae62bd4a6742eb77082867da6edb94c29aa2d9b..197726bdfcb887a1daac1352726f33ef08fa32b1 100644
index 9ae62bd4a6742eb77082867da6edb94c29aa2d9b..29ffa302fa5b3d7d0ece23e2e0eda79d46747c3b 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -97,6 +97,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@ -606,15 +607,7 @@ index 9ae62bd4a6742eb77082867da6edb94c29aa2d9b..197726bdfcb887a1daac1352726f33ef
this.generator = gen;
this.world = new CraftWorld((WorldServer) this, gen, env);
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
@@ -641,6 +645,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
public void b(BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1) {}
+
public void applyPhysics(BlockPosition blockposition, Block block) {
if (captureBlockStates) { return; } // Paper - Cancel all physics during placement
this.a(blockposition.west(), block, blockposition);
@@ -678,6 +683,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -678,6 +682,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
}
@ -886,18 +879,10 @@ index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index af1d37720fe8ea68bea8cad94ddf4ed907f98696..5ba71b957001a91c46970b5aab30dadb7a488f0d 100644
index af1d37720fe8ea68bea8cad94ddf4ed907f98696..73a36683e386d9e8e917b6ac04262aae3e3d3b69 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -138,6 +138,7 @@ public class Main {
.defaultsTo(new File("paper.yml"))
.describedAs("Yml file");
// Paper end
+
// Tuinity Start - Server Config
acceptsAll(asList("tuinity", "tuinity-settings"), "File for tuinity settings")
.withRequiredArg()
@@ -154,6 +155,30 @@ public class Main {
@@ -154,6 +154,30 @@ public class Main {
.describedAs("Yml file");
// Purpur end

View File

@ -18,18 +18,31 @@ index 74ed02fa9296583977bb721014b10ff8b708b43c..a13c7b2b5bc79ecaea404779149ed02c
);
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..523e3b50d535e91afe8b14fdb53966da030963dc
index 0000000000000000000000000000000000000000..dfa51d6f170ec4fb010dce909c3fccb6c726deb4
--- /dev/null
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
@@ -0,0 +1,20 @@
@@ -0,0 +1,96 @@
+package dev.tr7zw.yatopia;
+
+import com.destroystokyo.paper.VersionHistoryManager;
+import com.google.common.base.Charsets;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSyntaxException;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import javax.annotation.Nonnull;
+
+import com.destroystokyo.paper.util.VersionFetcher;
+import javax.annotation.Nullable;
+
+public class YatopiaVersionFetcher implements VersionFetcher {
+
+ private static final String GITHUB_BRANCH_NAME = "ver/1.16.1";
+
+ @Override
+ public long getCacheTime() {
+ return Long.MAX_VALUE;
@ -38,7 +51,70 @@ index 0000000000000000000000000000000000000000..523e3b50d535e91afe8b14fdb53966da
+ @Nonnull
+ @Override
+ public String getVersionMessage(@Nonnull String serverVersion) {
+ return "\u00AF\\_(\u30C4)_/\u00AF";
+ String[] parts = serverVersion.substring("git-Yatopia-".length()).split("[-\\s]");
+ String updateMessage = getUpdateStatusMessage("tr7zw/Yatopia", GITHUB_BRANCH_NAME, parts[0]);
+ String history = getHistory();
+ return history != null ? history + "\n" + updateMessage : updateMessage;
+ }
+
+ private String getUpdateStatusMessage(String repo, String branch, String versionInfo) {
+ versionInfo = versionInfo.replace("\"", "");
+ int distance = fetchDistanceFromGitHub(repo, branch, versionInfo);
+
+ switch (distance) {
+ case -1:
+ return "Error obtaining version information";
+ case 0:
+ return "You are running the latest version";
+ case -2:
+ return "\u00AF\\_(\u30C4)_/\u00AF";
+ default:
+ return "You are " + distance + " version(s) behind";
+ }
+ }
+
+ // Contributed by Techcable <Techcable@outlook.com> in GH-65
+ // from PaperVersionFetcher
+ private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) {
+ try {
+ HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + repo + "/compare/" + branch + "..." + hash).openConnection();
+ connection.connect();
+ if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) return -2; // Unknown commit
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8))) {
+ JsonObject obj = new Gson().fromJson(reader, JsonObject.class);
+ String status = obj.get("status").getAsString();
+ switch (status) {
+ case "identical":
+ return 0;
+ case "behind":
+ return obj.get("behind_by").getAsInt();
+ default:
+ return -1;
+ }
+ } catch (JsonSyntaxException | NumberFormatException e) {
+ e.printStackTrace();
+ return -1;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ return -1;
+ }
+ }
+
+ // from PaperVersionFetcher
+ @Nullable
+ private String getHistory() {
+ final VersionHistoryManager.VersionData data = VersionHistoryManager.INSTANCE.getVersionData();
+ if (data == null) {
+ return null;
+ }
+
+ final String oldVersion = data.getOldVersion();
+ if (oldVersion == null) {
+ return null;
+ }
+
+ return "Previous version: " + oldVersion;
+ }
+
+}
@ -95,3 +171,52 @@ index 001b1e5197eaa51bfff9031aa6c69876c9a47960..2e6cd1780d759a9f94dc4d740fa1b81f
Properties properties = new Properties();
if (stream != null) {
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index 4d310908489953d6d061b2358f614142edacb62e..870a3b64aaf933ba22c32b699b576a96ca4dae25 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -26,7 +26,7 @@ public class WatchdogThread extends Thread
private WatchdogThread(long timeoutTime, boolean restart)
{
- super( "Paper Watchdog Thread" );
+ super( "Yatopia Watchdog Thread" ); // Yatopia
this.timeoutTime = timeoutTime;
this.restart = restart;
earlyWarningEvery = Math.min(PaperConfig.watchdogPrintEarlyWarningEvery, timeoutTime); // Paper
@@ -158,14 +158,14 @@ public class WatchdogThread extends Thread
if (isLongTimeout) {
// Paper end
log.log( Level.SEVERE, "------------------------------" );
- log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Paper bug." ); // Paper
+ log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Yatopia bug." ); // Paper // Yatopia
log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
- log.log( Level.SEVERE, "If you are unsure or still think this is a Paper bug, please report this to https://github.com/PaperMC/Paper/issues" );
+ log.log( Level.SEVERE, "If you are unsure or still think this is a Yatopia bug, please report this to https://github.com/tr7zw/Yatopia/issues" ); // Yatopia
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
- log.log( Level.SEVERE, "Paper version: " + Bukkit.getServer().getVersion() );
+ log.log( Level.SEVERE, "Yatopia version: " + Bukkit.getServer().getVersion() ); // Yatopia
//
if ( net.minecraft.server.World.lastPhysicsProblem != null )
{
@@ -188,7 +188,7 @@ public class WatchdogThread extends Thread
// Paper end
} else
{
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---");
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO YATOPIA - THIS IS NOT A BUG OR A CRASH - " + Bukkit.getServer().getVersion() + " ---"); // Yatopia
log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
}
// Paper end - Different message for short timeout
@@ -209,7 +209,7 @@ public class WatchdogThread extends Thread
dumpThread( thread, log );
}
} else {
- log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---");
+ log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO YATOPIA - THIS IS NOT A BUG OR A CRASH ---"); // Yatopia
}

View File

@ -5,89 +5,60 @@ Subject: [PATCH] Add GameProfileLookupEvent
diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
index dd96dd296d042c0625e527b50b3acfc19a2bf43e..0c5f2a010f30eb32bea273d7e65b0741016480e5 100644
index dd96dd296d042c0625e527b50b3acfc19a2bf43e..2a67013f6d2656a3d89cb042ba401bcaeb731d83 100644
--- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
@@ -5,9 +5,13 @@ import com.google.common.base.Charsets;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.properties.PropertyMap;
+
+import dev.tr7zw.yatopia.events.GameProfileLookupEvent;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.UserCache;
import org.apache.commons.lang3.Validate;
+
+import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.spigotmc.SpigotConfig;
@@ -185,13 +185,24 @@ public class CraftPlayerProfile implements PlayerProfile {
@@ -182,17 +186,24 @@ public class CraftPlayerProfile implements PlayerProfile {
}
public boolean complete(boolean textures, boolean onlineMode) {
MinecraftServer server = MinecraftServer.getServer();
-
boolean isCompleteFromCache = this.completeFromCache(true, onlineMode);
if (onlineMode && (!isCompleteFromCache || textures && !hasTextures())) {
- GameProfile result = server.getMinecraftSessionService().fillProfileProperties(profile, true);
- if (result != null) {
- copyProfileProperties(result, this.profile, true);
+ // Yatopia start
+ GameProfileLookupEvent event = new GameProfileLookupEvent(!Bukkit.isPrimaryThread(), profile.getId(), profile.getName());
+ Bukkit.getServer().getPluginManager().callEvent(event);
+ if (event.getGameProfile() != null) {
+ this.profile = event.getGameProfile();
+ } else {
+ GameProfile result = server.getMinecraftSessionService().fillProfileProperties(profile, true);
+ if (result != null) {
+ copyProfileProperties(result, this.profile, true);
+ }
+ if (this.profile.isComplete()) {
+ server.getUserCache().saveProfile(this.profile);
+ }
+ }
+ // Yatopia end
}
- }
- if (this.profile.isComplete()) {
- server.getUserCache().saveProfile(this.profile);
- }
- }
+ // Yatopia start
+ dev.tr7zw.yatopia.events.GameProfileLookupEvent event = new
+ dev.tr7zw.yatopia.events.GameProfileLookupEvent(
+ !org.bukkit.Bukkit.isPrimaryThread(), profile.getId(), profile.getName());
+ org.bukkit.Bukkit.getPluginManager().callEvent(event);
+ GameProfile eventProfile = event.getGameProfile();
+ if (eventProfile != null) {
+ this.profile = eventProfile;
+ } else {
+ GameProfile result = server.getMinecraftSessionService().fillProfileProperties(profile, true);
+ if (result != null) {
+ copyProfileProperties(result, this.profile, true);
+ }
+ if (this.profile.isComplete()) {
+ server.getUserCache().saveProfile(this.profile);
+ }
}
+ // Yatopia end
}
return profile.isComplete() && (!onlineMode || !textures || hasTextures());
}
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
index 579a81e521fdfabfa0318d06c6760a8ab7a88c1e..ceb1f18a49ebc8fbac270d9f221fa44f9baea216 100644
index 579a81e521fdfabfa0318d06c6760a8ab7a88c1e..ab553f408b31cb7e2d281cc3d8fe42e19dc717d9 100644
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
@@ -4,9 +4,14 @@ import com.google.common.collect.Iterables;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.minecraft.MinecraftSessionService;
import com.mojang.authlib.properties.Property;
+
+import dev.tr7zw.yatopia.events.GameProfileLookupEvent;
+
import java.util.UUID;
import javax.annotation.Nullable;
+import org.bukkit.Bukkit;
+
// Spigot start
import com.google.common.base.Predicate;
import com.google.common.cache.LoadingCache;
@@ -77,7 +82,15 @@ public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Pa
@@ -77,7 +77,18 @@ public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Pa
if ( property == null )
{
- profile = TileEntitySkull.sessionService.fillProfileProperties( profile, true );
+ // Yatopia start
+ GameProfileLookupEvent event = new GameProfileLookupEvent(!Bukkit.isPrimaryThread(), profile.getId(), profile.getName());
+ Bukkit.getServer().getPluginManager().callEvent(event);
+ if (event.getGameProfile() != null) {
+ profile = event.getGameProfile();
+ } else {
+ profile = TileEntitySkull.sessionService.fillProfileProperties( profile, true );
+ }
+ // Yatopia end
+ // Yatopia start
+ dev.tr7zw.yatopia.events.GameProfileLookupEvent event =
+ new dev.tr7zw.yatopia.events.GameProfileLookupEvent(
+ !org.bukkit.Bukkit.isPrimaryThread(), profile.getId(), profile.getName());
+ org.bukkit.Bukkit.getPluginManager().callEvent(event);
+ GameProfile eventProfile = event.getGameProfile();
+ if (eventProfile != null) {
+ profile = eventProfile;
+ } else {
profile = TileEntitySkull.sessionService.fillProfileProperties( profile, true );
+ }
+ // Yatopia end
}
}

View File

@ -18,34 +18,30 @@ index 88513b8830ea666ddf831771680b6e76e7cf95f0..6a110318441a16cc3ff7dfa236476827
new TimingsExport(listeners, parent, history).start();
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e9925490f
index 0000000000000000000000000000000000000000..119c3b693370ab8753791a0396789c8971a05c9b
--- /dev/null
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
@@ -0,0 +1,129 @@
@@ -0,0 +1,126 @@
+package dev.tr7zw.yatopia;
+
+import com.google.common.base.Preconditions;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import java.util.function.Function;
+import com.google.common.collect.Lists;
+import net.minecraft.server.MinecraftKey;
+import net.minecraft.server.MinecraftServer;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+
+import com.google.common.base.Functions;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+import net.minecraft.server.MinecraftKey;
+import net.minecraft.server.MinecraftServer;
+
+public class YatopiaCommand extends Command {
+
+ public YatopiaCommand(String name) {
@ -57,14 +53,15 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
+ if (args.length <= 1)
+ if (args.length <= 1) {
+ return getListMatchingLast(args, "help", "info", "reload", "version");
+ }
+ return Collections.emptyList();
+ }
+
+ // Code from Mojang - copyright them
+ public static List<String> getListMatchingLast(String[] args, String... matches) {
+ return getListMatchingLast(args, (Collection) Arrays.asList(matches));
+ return getListMatchingLast(args, Arrays.asList(matches));
+ }
+
+ public static boolean matches(String s, String s1) {
@ -73,27 +70,27 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
+
+ public static List<String> getListMatchingLast(String[] strings, Collection<?> collection) {
+ String last = strings[strings.length - 1];
+ ArrayList<String> results = Lists.newArrayList();
+ List<String> results = Lists.newArrayList();
+
+ if (!collection.isEmpty()) {
+ Iterator iterator = Iterables.transform(collection, Functions.toStringFunction()).iterator();
+
+ while (iterator.hasNext()) {
+ String s1 = (String) iterator.next();
+
+ if (matches(last, s1)) {
+ results.add(s1);
+ Function<Object, String> toStringFunction = (o) -> {
+ Preconditions.checkNotNull(o);
+ return o.toString();
+ };
+ for (Object c : collection) {
+ String value = toStringFunction.apply(c);
+ if (matches(last, value)) {
+ results.add(value);
+ }
+ }
+
+ if (results.isEmpty()) {
+ iterator = collection.iterator();
+
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+
+ if (object instanceof MinecraftKey && matches(last, ((MinecraftKey) object).getKey())) {
+ results.add(String.valueOf(object));
+ for (Object c : collection) {
+ if (c instanceof MinecraftKey) {
+ MinecraftKey key = (MinecraftKey) c;
+ if (matches(last, key.getKey())) {
+ results.add(key.toString());
+ }
+ }
+ }
+ }
@ -114,7 +111,7 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
+
+ switch (args[0].toLowerCase(Locale.ENGLISH)) {
+ case "info":
+ doInfo(sender);
+ doInfo(sender);
+ break;
+ case "reload":
+ doReload(sender);
@ -154,7 +151,7 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
\ No newline at end of file
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c9bf7fe4e
index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b467f6293cc
--- /dev/null
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -0,0 +1,210 @@
@ -184,7 +181,7 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+
+public class YatopiaConfig {
+
+ private static File CONFIG_FILE;
+ public static File CONFIG_FILE;
+ private static final String HEADER = "This is the main configuration file for Yatopia.\n"
+ + "Yatopia contains many breaking changes and settings, so know what you are doing!\n"
+ + "You have been warned!\n";
@ -298,7 +295,7 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+ switch (unit) {
+ case 'd': num *= (double) 60*60*24; break;
+ case 'h': num *= (double) 60*60; break;
+ case 'm': num *= (double) 60; break;
+ case 'm': num *= 60; break;
+ default: case 's': break;
+ }
+ return (int) num;
@ -347,9 +344,9 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+ return config.getInt(path, config.getInt(path));
+ }
+
+ private static <T> List getList(String path, T def) {
+ private static <T> List<T> getList(String path, List<T> def) {
+ config.addDefault(path, def);
+ return config.getList(path, config.getList(path));
+ return (List<T>) config.getList(path, config.getList(path));
+ }
+
+ private static String getString(String path, String def) {
@ -359,12 +356,12 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+
+ public static boolean disableEntityStuckChecks = false;
+ private static void disableEntityStuckChecks() {
+ disableEntityStuckChecks = getBoolean("settings.disableEntityStuckChecks", false);
+ disableEntityStuckChecks = getBoolean("settings.disableEntityStuckChecks", false);
+ }
+
+ public static boolean disableEntityCollisionboxes = false;
+ private static void disableEntityCollisionboxes() {
+ disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false);
+ disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false);
+ }
+
+}
@ -390,7 +387,7 @@ index 21dc3b9a638c7ca5e2da56c954088f2f367f05e4..c3becefce8143f34ed2b1093dd22227b
this.setAllowFlight(dedicatedserverproperties.allowFlight);
this.setResourcePack(dedicatedserverproperties.resourcePack, this.aY());
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index dd093e3e624158ff87bad59785ed2496f161f64c..ec84bc4dceff76fd2f823a6a9548fdf180291584 100644
index dd093e3e624158ff87bad59785ed2496f161f64c..fe0689f6be466d1a2a1ed2b76331272199a0aa0c 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -1035,7 +1035,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@ -398,7 +395,7 @@ index dd093e3e624158ff87bad59785ed2496f161f64c..ec84bc4dceff76fd2f823a6a9548fdf1
VoxelShape voxelshape = this.world.getWorldBorder().c();
Stream<VoxelShape> stream = !this.world.getWorldBorder().isInBounds(axisalignedbb) ? Stream.empty() : Stream.of(voxelshape); // Paper
- Stream<VoxelShape> stream1 = this.world.c(this, axisalignedbb.b(vec3d), (entity) -> {
+ Stream<VoxelShape> stream1 = dev.tr7zw.yatopia.YatopiaConfig.disableEntityCollisionboxes ? Stream.empty() : this.world.c(this, axisalignedbb.b(vec3d), (entity) -> {
+ Stream<VoxelShape> stream1 = dev.tr7zw.yatopia.YatopiaConfig.disableEntityCollisionboxes ? Stream.empty() : this.world.c(this, axisalignedbb.b(vec3d), (entity) -> { // Yatopia
return true;
});
StreamAccumulator<VoxelShape> streamaccumulator = new StreamAccumulator<>(Stream.concat(stream1, stream));
@ -435,10 +432,10 @@ index 856e0ba3cfe6225d9928cb99b2d7a00a8fcd6a03..6f4c1bbf39af205ad15318eac667117d
world.worldDataServer.setDifficulty(config.difficulty);
world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals);
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 5ba71b957001a91c46970b5aab30dadb7a488f0d..c4495f89898861c385b32e70d3b6a3f12b91bdd3 100644
index 73a36683e386d9e8e917b6ac04262aae3e3d3b69..60b4c2337e6fdeddfb785e90fa501149af45756c 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -179,6 +179,14 @@ public class Main {
@@ -178,6 +178,14 @@ public class Main {
.describedAs("Yml file");
// Rainforest end

View File

@ -14,14 +14,14 @@ The whole code is based around 1 class, the EntityFilter class. Whole filtering
Co-authored-by: tr7zw <tr7zw@live.de>
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
index 2cedf4d7aaefc064f5730015c41c1f5102bc747d..bdeb72c04831209466742b9fb6747ebefbe7ca48 100644
index e2bbbfeb7e2505479e6a457294aaa550b97319ca..a89209347418b3006745c50043d0abdf2b91babc 100644
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
@@ -125,6 +125,39 @@ public final class OrigamiConfig {
fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", fastFeatureSearchDontLoad);
@@ -125,6 +125,37 @@ public final class OrigamiConfig {
private void fastFeatureSearchDontLoad() {
fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false);
}
+ // Yatopia start
+
+ public boolean playerCollisions = true;
+ public boolean animalCollisions = true;
+ public boolean ambientCollisions = true;
@ -52,12 +52,9 @@ index 2cedf4d7aaefc064f5730015c41c1f5102bc747d..bdeb72c04831209466742b9fb6747ebe
+ && pillagerCollisions && ironGolemCollisions && miscCollisions && itemCollisions
+ && waterCreatureCollisions && waterAmbientCollisions;
+ }
+ // Yatopia end
+
// Yatopia end
}
}
\ No newline at end of file
diff --git a/src/main/java/dev/tr7zw/yatopia/EntityFilter.java b/src/main/java/dev/tr7zw/yatopia/EntityFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6617833a7aea4803b78bc55b633fac9698688bd

View File

@ -5,11 +5,11 @@ Subject: [PATCH] Allow to change the piston push limit
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index 556cf9f17501f13a19a05bf804edcb9c9bf7fe4e..0eac1342ceba67ca51bed32e4b7c60afbce684d1 100644
index 5cffd84ed9842bb7d7e56df8ac841b467f6293cc..57820ad632a253c93436a77c5811c1bc44e3f06a 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -207,4 +207,8 @@ public class YatopiaConfig {
disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false);
disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false);
}
+ public static int pistonPushLimit = 12;

View File

@ -5,156 +5,57 @@ Subject: [PATCH] Player-saving-async-FileIO
diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
index cf539c98073b475eb5b769c8cc11d48a7e6d58f1..5442c28c56f933c63bd611f579d0392876ecc2ef 100644
index cf539c98073b475eb5b769c8cc11d48a7e6d58f1..93b14f01fd7094175968918f0dcd7c3c921f156a 100644
--- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
+++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
@@ -27,6 +27,8 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nullable;
@@ -50,6 +52,7 @@ public class AdvancementDataPlayer {
@@ -50,6 +50,7 @@ public class AdvancementDataPlayer {
@Nullable
private Advancement l;
private boolean m = true;
+ public static ExecutorService saveThread = Executors.newSingleThreadExecutor(); // Yatopia
+ public static java.util.concurrent.ExecutorService saveThread = java.util.concurrent.Executors.newSingleThreadExecutor(); // Yatopia
// Paper start - fix advancement data player leakage
final Map<CriterionTriggerAbstract, Set<CriterionTrigger.a>> criterionData = Maps.newIdentityHashMap();
@@ -228,53 +231,66 @@ public class AdvancementDataPlayer {
@@ -228,6 +229,15 @@ public class AdvancementDataPlayer {
jsonelement.getAsJsonObject().addProperty("DataVersion", SharedConstants.getGameVersion().getWorldVersion());
+ // Yatopia start
+ String gson = null;
+ // Yatopia start - replace whole logic
+ saveThread.submit(() -> {
+ try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(f), Charsets.UTF_8.newEncoder())) {
+ AdvancementDataPlayer.b.toJson(jsonelement, writer);
+ } catch (Throwable e) {
+ AdvancementDataPlayer.LOGGER.error("Couldn't save player advancements to {}", this.f, e);
+ }
+ });
+ /*
try {
- FileOutputStream fileoutputstream = new FileOutputStream(this.f);
- Throwable throwable = null;
-
- try {
- OutputStreamWriter outputstreamwriter = new OutputStreamWriter(fileoutputstream, Charsets.UTF_8.newEncoder());
- Throwable throwable1 = null;
-
- try {
- AdvancementDataPlayer.b.toJson(jsonelement, outputstreamwriter);
- } catch (Throwable throwable2) {
- throwable1 = throwable2;
- throw throwable2;
- } finally {
- if (outputstreamwriter != null) {
- if (throwable1 != null) {
- try {
- outputstreamwriter.close();
- } catch (Throwable throwable3) {
- throwable1.addSuppressed(throwable3);
- }
- } else {
- outputstreamwriter.close();
- }
- }
-
- }
- } catch (Throwable throwable4) {
- throwable = throwable4;
- throw throwable4;
- } finally {
- if (fileoutputstream != null) {
- if (throwable != null) {
- try {
- fileoutputstream.close();
- } catch (Throwable throwable5) {
- throwable.addSuppressed(throwable5);
- }
- } else {
- fileoutputstream.close();
- }
- }
-
- }
- } catch (IOException ioexception) {
- AdvancementDataPlayer.LOGGER.error("Couldn't save player advancements to {}", this.f, ioexception);
+ gson = AdvancementDataPlayer.b.toJson(jsonelement);
+ } catch (Throwable throwable) {
+ throw throwable;
+ }
+ if(gson != null) {
+ final String fGson = gson;
+ saveThread.submit(() -> {
+ try {
+ FileOutputStream fileoutputstream = new FileOutputStream(this.f);
+ Throwable throwable = null;
+
+ try {
+ OutputStreamWriter outputstreamwriter = new OutputStreamWriter(fileoutputstream, Charsets.UTF_8.newEncoder());
+ Throwable throwable1 = null;
+
+ try {
+ outputstreamwriter.write(fGson);
+ } catch (Throwable throwable2) {
+ throwable1 = throwable2;
+ throw throwable2;
+ } finally {
+ if (outputstreamwriter != null) {
+ if (throwable1 != null) {
+ try {
+ outputstreamwriter.close();
+ } catch (Throwable throwable3) {
+ throwable1.addSuppressed(throwable3);
+ }
+ } else {
+ outputstreamwriter.close();
+ }
+ }
+
+ }
+ } catch (Throwable throwable4) {
+ throwable = throwable4;
+ throw throwable4;
+ } finally {
+ if (fileoutputstream != null) {
+ if (throwable != null) {
+ try {
+ fileoutputstream.close();
+ } catch (Throwable throwable5) {
+ throwable.addSuppressed(throwable5);
+ }
+ } else {
+ fileoutputstream.close();
+ }
+ }
+
+ }
+ } catch (IOException ioexception) {
+ AdvancementDataPlayer.LOGGER.error("Couldn't save player advancements to {}", this.f, ioexception);
+ }
+ });
FileOutputStream fileoutputstream = new FileOutputStream(this.f);
Throwable throwable = null;
@@ -275,6 +285,8 @@ public class AdvancementDataPlayer {
} catch (IOException ioexception) {
AdvancementDataPlayer.LOGGER.error("Couldn't save player advancements to {}", this.f, ioexception);
}
+ */
+ // Yatopia end
}
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..3966bf7160ef5a7ec6944397ffbf51f583875860 100644
index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..68c033e2b8542c5656d5b9534a4953a370999097 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -700,11 +700,23 @@ public abstract class EntityHuman extends EntityLiving {
@@ -700,11 +700,20 @@ public abstract class EntityHuman extends EntityLiving {
}
+ // Yatopia start
+ private NBTTagList inventorySnapshot = null;
+ private NBTTagList enderchestSnapshot = null;
+
+
+ public void takeInventorySnapshot() {
+ inventorySnapshot = this.inventory.a(new NBTTagList());
+ enderchestSnapshot = this.enderChest.g();
+ inventorySnapshot = this.inventory.a(new NBTTagList());
+ enderchestSnapshot = this.enderChest.g();
+ }
+
+ // Yatopia end
+
@Override
@ -166,7 +67,7 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..3966bf7160ef5a7ec6944397ffbf51f5
nbttagcompound.setInt("SelectedItemSlot", this.inventory.itemInHandIndex);
nbttagcompound.setShort("SleepTimer", (short) this.sleepTicks);
nbttagcompound.setFloat("XpP", this.exp);
@@ -714,7 +726,7 @@ public abstract class EntityHuman extends EntityLiving {
@@ -714,7 +723,7 @@ public abstract class EntityHuman extends EntityLiving {
nbttagcompound.setInt("Score", this.getScore());
this.foodData.b(nbttagcompound);
this.abilities.a(nbttagcompound);
@ -176,37 +77,29 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..3966bf7160ef5a7ec6944397ffbf51f5
nbttagcompound.set("ShoulderEntityLeft", this.getShoulderEntityLeft());
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..c10a1d15bcfe0cb1c2ff6ee7f2881bc2040bcd1d 100644
index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..0b6c62ff0ac75c7ec11de9f8e9745b07ee12664e 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -19,6 +19,7 @@ import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -1260,6 +1261,28 @@ public abstract class PlayerList {
@@ -1260,6 +1260,28 @@ public abstract class PlayerList {
if (team != null) scoreboard.removeTeam(team);
}
// Paper end
+
+ // Yatopia start - make sure all saves are done
+ try {
+ ((WorldNBTStorage)playerFileData).saveThread.shutdown();
+ boolean done = ((WorldNBTStorage)playerFileData).saveThread.awaitTermination(60, TimeUnit.SECONDS);
+ if(!done) {
+ playerFileData.saveThread.shutdown();
+ boolean done = playerFileData.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS);
+ if (!done) {
+ LOGGER.error("Players did not save completly!");
+ }
+ ServerStatisticManager.saveThread.shutdown();
+ done = ServerStatisticManager.saveThread.awaitTermination(60, TimeUnit.SECONDS);
+ if(!done) {
+ done = ServerStatisticManager.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS);
+ if (!done) {
+ LOGGER.error("Stats did not save completly!");
+ }
+ AdvancementDataPlayer.saveThread.shutdown();
+ done = AdvancementDataPlayer.saveThread.awaitTermination(60, TimeUnit.SECONDS);
+ if(!done) {
+ done = AdvancementDataPlayer.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS);
+ if (!done) {
+ LOGGER.error("Advancements did not save completly!");
+ }
+ } catch (InterruptedException e) {
@ -216,7 +109,7 @@ index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..c10a1d15bcfe0cb1c2ff6ee7f2881bc2
}
// Paper end
@@ -1297,13 +1320,13 @@ public abstract class PlayerList {
@@ -1297,13 +1319,13 @@ public abstract class PlayerList {
File file = this.server.a(SavedFile.STATS).toFile();
File file1 = new File(file, uuid + ".json");
@ -233,45 +126,39 @@ index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..c10a1d15bcfe0cb1c2ff6ee7f2881bc2
serverstatisticmanager = new ServerStatisticManager(this.server, file1);
// this.o.put(uuid, serverstatisticmanager); // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java
index 18725272f920eafb655de8b923a8a85dbdc704cf..5f222d8b90951c61e77ab7032f8728772ba8ab9d 100644
index 18725272f920eafb655de8b923a8a85dbdc704cf..a734cb47df9cffaee52a5c798bb3324212a004ba 100644
--- a/src/main/java/net/minecraft/server/ServerStatisticManager.java
+++ b/src/main/java/net/minecraft/server/ServerStatisticManager.java
@@ -20,6 +20,10 @@ import java.util.Map;
@@ -20,6 +20,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
+import java.util.Map.Entry;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -30,6 +34,7 @@ public class ServerStatisticManager extends StatisticManager {
@@ -30,6 +31,7 @@ public class ServerStatisticManager extends StatisticManager {
private final File d;
private final Set<Statistic<?>> e = Sets.newHashSet();
private int f = -300;
+ public static ExecutorService saveThread = Executors.newSingleThreadExecutor(); // Yatopia
+ public static java.util.concurrent.ExecutorService saveThread = java.util.concurrent.Executors.newSingleThreadExecutor(); // Yatopia
public ServerStatisticManager(MinecraftServer minecraftserver, File file) {
this.c = minecraftserver;
@@ -40,7 +45,9 @@ public class ServerStatisticManager extends StatisticManager {
Statistic<MinecraftKey> wrapper = StatisticList.CUSTOM.b( entry.getKey() );
@@ -41,6 +43,7 @@ public class ServerStatisticManager extends StatisticManager {
this.a.put( wrapper, entry.getValue().intValue() );
}
- // Spigot end
+ // Spigot ends
+ // Yatopia start
+ saveThread.submit(() -> {
// Spigot end
+ saveThread.submit(() -> { // Yatopia
if (file.isFile()) {
try {
this.a(minecraftserver.getDataFixer(), org.apache.commons.io.FileUtils.readFileToString(file));
@@ -50,17 +57,21 @@ public class ServerStatisticManager extends StatisticManager {
@@ -50,17 +53,21 @@ public class ServerStatisticManager extends StatisticManager {
ServerStatisticManager.LOGGER.error("Couldn't parse statistics file {}", file, jsonparseexception);
}
}
-
+ });
+ }); // Yatopia
}
public void save() {
@ -291,7 +178,7 @@ index 18725272f920eafb655de8b923a8a85dbdc704cf..5f222d8b90951c61e77ab7032f872877
}
@Override
@@ -111,7 +122,7 @@ public class ServerStatisticManager extends StatisticManager {
@@ -111,7 +118,7 @@ public class ServerStatisticManager extends StatisticManager {
if (nbttagcompound2.hasKeyOfType(s2, 99)) {
SystemUtils.a(this.a(statisticwrapper, s2), (statistic) -> {
@ -301,56 +188,46 @@ index 18725272f920eafb655de8b923a8a85dbdc704cf..5f222d8b90951c61e77ab7032f872877
ServerStatisticManager.LOGGER.warn("Invalid statistic in {}: Don't know what {} is", this.d, s2);
});
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
index be060f602f53344cf51c22eafacb4dc9219c8856..b14f3d44a76ccac791b7be353bb2899fc59f70ec 100644
index be060f602f53344cf51c22eafacb4dc9219c8856..12ffee96cfbd135f107b1dff7a058177e2649964 100644
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
@@ -11,6 +11,10 @@ import org.apache.logging.log4j.LogManager;
@@ -9,8 +9,6 @@ import java.io.OutputStream;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
// CraftBukkit start
+import java.util.UUID;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
-
-// CraftBukkit start
import org.bukkit.craftbukkit.entity.CraftPlayer;
// CraftBukkit end
@@ -19,6 +23,7 @@ public class WorldNBTStorage {
@@ -19,6 +17,7 @@ public class WorldNBTStorage {
private static final Logger LOGGER = LogManager.getLogger();
private final File playerDir;
protected final DataFixer a;
+ public ExecutorService saveThread = Executors.newSingleThreadExecutor(); // Yatopia
+ public java.util.concurrent.ExecutorService saveThread = java.util.concurrent.Executors.newSingleThreadExecutor(); // Yatopia
public WorldNBTStorage(Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer) {
this.a = datafixer;
@@ -29,14 +34,22 @@ public class WorldNBTStorage {
@@ -28,11 +27,13 @@ public class WorldNBTStorage {
public void save(EntityHuman entityhuman) {
if(!com.destroystokyo.paper.PaperConfig.savePlayerData) return; // Paper - Make player data saving configurable
+ entityhuman.takeInventorySnapshot(); // Yatopia
+ saveThread.submit(() -> { // Yatopia
try {
- NBTTagCompound nbttagcompound = entityhuman.save(new NBTTagCompound());
- File file = File.createTempFile(entityhuman.getUniqueIDString() + "-", ".dat", this.playerDir);
-
NBTTagCompound nbttagcompound = entityhuman.save(new NBTTagCompound());
File file = File.createTempFile(entityhuman.getUniqueIDString() + "-", ".dat", this.playerDir);
- NBTCompressedStreamTools.a(nbttagcompound, (OutputStream) (new FileOutputStream(file)));
- File file1 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat");
- File file2 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat_old");
-
- SystemUtils.a(file1, file, file2);
+ // Yatopia start
+ entityhuman.takeInventorySnapshot(); // Take a sync inventory/enderchest snapshot to prevent duping
+ saveThread.submit(() -> { // Save the tag async
+ try {
+ NBTTagCompound nbttagcompound = entityhuman.save(new NBTTagCompound());
+ File file = File.createTempFile(entityhuman.getUniqueIDString() + "-", ".dat", this.playerDir);
+ File file1 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat");
+ File file2 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat_old");
+
+ NBTCompressedStreamTools.a(nbttagcompound, (OutputStream) (new FileOutputStream(file)));
+ SystemUtils.a(file1, file, file2);
+ } catch (Exception exception) {
+ WorldNBTStorage.LOGGER.error("Failed to save player data for {}", entityhuman.getName(), exception); // Paper
+ }
+ });
+ // Yatopia end
+ NBTCompressedStreamTools.a(nbttagcompound, new FileOutputStream(file));
File file1 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat");
File file2 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat_old");
@@ -40,6 +41,7 @@ public class WorldNBTStorage {
} catch (Exception exception) {
WorldNBTStorage.LOGGER.error("Failed to save player data for {}", entityhuman.getName(), exception); // Paper
}
+ }); // Yatopia
}

View File

@ -9,25 +9,15 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3
you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
index b783028e5526df722d98e4760ffb214d5d2f83dd..2378a833cd31d703db462dd6f55a5cb858796b8d 100644
index b783028e5526df722d98e4760ffb214d5d2f83dd..0ad38a7b426b8b1e0ae8a98a2cb5b28878ae1249 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
@@ -1,7 +1,8 @@
package net.minecraft.server;
import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector
-import com.google.common.collect.Sets;
+import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet;
+
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Iterator; // Paper - remove streams from pathfindergoalselector
@@ -27,7 +28,7 @@ public class PathfinderGoalSelector {
@@ -27,7 +27,7 @@ public class PathfinderGoalSelector {
}
};
private final Map<PathfinderGoal.Type, PathfinderGoalWrapped> c = new EnumMap(PathfinderGoal.Type.class);
- private final Set<PathfinderGoalWrapped> d = Sets.newLinkedHashSet(); public final Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public
+ private final Set<PathfinderGoalWrapped> d = new ObjectLinkedOpenHashSet<PathfinderGoalWrapped>();/* Yatopia better set */ public final Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public
+ private final Set<PathfinderGoalWrapped> d = new it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet<>();/* Yatopia better set */ public final Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public
private final Supplier<GameProfilerFiller> e;
private final EnumSet<PathfinderGoal.Type> f = EnumSet.noneOf(PathfinderGoal.Type.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be.
private final OptimizedSmallEnumSet<PathfinderGoal.Type> goalTypes = new OptimizedSmallEnumSet<>(PathfinderGoal.Type.class); // Paper - remove streams from pathfindergoalselector

View File

@ -7,34 +7,22 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3
you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings)
diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java
index ec55785af2b432b692d3a3bf4298ffb32489bf3b..279ca87d8826ea2696ffc08d4b52c55a5e7bd392 100644
index ec55785af2b432b692d3a3bf4298ffb32489bf3b..4f59e4b31300009f5e7ef8767be6c89d7b449af0 100644
--- a/src/main/java/net/minecraft/server/PathfinderNormal.java
+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java
@@ -4,12 +4,23 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap;
+import com.google.common.collect.Sets;
+
+import it.unimi.dsi.fastutil.objects.Reference2ReferenceMap;
+import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
+
import java.util.EnumSet;
import java.util.Iterator;
import javax.annotation.Nullable;
@@ -10,6 +10,11 @@ import javax.annotation.Nullable;
public class PathfinderNormal extends PathfinderAbstract {
+ // Yatopia start
+
+ // This is not thread-safe!
+ private static final Reference2ReferenceMap<IBlockData, PathType> commonTypes = new Reference2ReferenceOpenHashMap<>();
+ // Yatopia start - this is not thread safe!
+ private static final it.unimi.dsi.fastutil.objects.Reference2ReferenceMap<IBlockData, PathType> commonTypes =
+ new it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap<>();
+ // Yatopia end
+
protected float j;
private final Long2ObjectMap<PathType> k = new Long2ObjectOpenHashMap();
private final Object2BooleanMap<AxisAlignedBB> l = new Object2BooleanOpenHashMap();
@@ -508,13 +519,44 @@ public class PathfinderNormal extends PathfinderAbstract {
@@ -508,13 +513,44 @@ public class PathfinderNormal extends PathfinderAbstract {
protected static PathType b(IBlockAccess iblockaccess, BlockPosition blockposition) {
IBlockData iblockdata = iblockaccess.getTypeIfLoaded(blockposition); // Paper
if (iblockdata == null) return PathType.BLOCKED; // Paper
@ -84,7 +72,7 @@ index ec55785af2b432b692d3a3bf4298ffb32489bf3b..279ca87d8826ea2696ffc08d4b52c55a
return PathType.DAMAGE_CACTUS;
} else if (iblockdata.a(Blocks.SWEET_BERRY_BUSH)) {
return PathType.DAMAGE_OTHER;
@@ -540,7 +582,10 @@ public class PathfinderNormal extends PathfinderAbstract {
@@ -540,7 +576,10 @@ public class PathfinderNormal extends PathfinderAbstract {
} else {
Fluid fluid = iblockdata.getFluid(); // Tuinity - remove another getType call

View File

@ -8,20 +8,23 @@ you can find the original code on https://github.com/jellysquid3/lithium-fabric/
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
new file mode 100644
index 0000000000000000000000000000000000000000..c2c19a6fbfa2a4aba21aa71789071c69a6246556
index 0000000000000000000000000000000000000000..3079549f466a350223c3ee11466432bf3dc4c5b6
--- /dev/null
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
@@ -0,0 +1,168 @@
@@ -0,0 +1,171 @@
+package me.jellysquid.mods.lithium.common.util.collections;
+
+import it.unimi.dsi.fastutil.objects.ObjectArraySet;
+
+import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Set;
+
+/**
+ * Wraps a {@link List} with a hash table which provides O(1) lookups for {@link Collection#contains(Object)}.
+ *
+ * @see https://github.com/jellysquid3/lithium-fabric/blob/1.16.x/fabric/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
+ * @see <a href="https://github.com/jellysquid3/lithium-fabric/blob/1.16.x/fabric/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java">HashedList</a>
+ */
+public class HashedList<T> implements List<T> {
+ private final List<T> list;
@ -177,28 +180,20 @@ index 0000000000000000000000000000000000000000..c2c19a6fbfa2a4aba21aa71789071c69
+ }
+
+ public static <T> HashedList<T> wrapper(List<T> list) {
+ return new HashedList<>(list, new ObjectArraySet<>(list));
+ return new HashedList<>(list, new HashSet<>(list)); // Yatopia - use hashset
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
index b2b654218382cc2cf1649067cd140b539235e3d2..bfaba96eb56dd98a67d2c2179335ae48dcbe3849 100644
index b2b654218382cc2cf1649067cd140b539235e3d2..f7f082c80442cd352e14daa4b199b2f3ad75c22f 100644
--- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -7,6 +7,7 @@ import com.google.common.collect.Sets;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap;
+import me.jellysquid.mods.lithium.common.util.collections.HashedList;
import java.util.*;
import java.util.function.Function;
@@ -139,7 +140,7 @@ public class BiomeBase {
@@ -139,7 +139,7 @@ public class BiomeBase {
for (j = 0; j < i; ++j) {
EnumCreatureType enumcreaturetype = aenumcreaturetype[j];
- this.v.put(enumcreaturetype, new MobList()); // Paper
+ this.v.put(enumcreaturetype, HashedList.wrapper(new MobList())); // Paper // Yatopia lithium change
+ this.v.put(enumcreaturetype, me.jellysquid.mods.lithium.common.util.collections.HashedList.wrapper(new MobList())); // Paper // Yatopia - lithium change
}
} else {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Item stuck sleep config
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index 0eac1342ceba67ca51bed32e4b7c60afbce684d1..dd9206a70e85507fb538d2b59d97478db57df7b8 100644
index 57820ad632a253c93436a77c5811c1bc44e3f06a..c7ef8b2cd84d66b955bdbabdecfc18c1d4cc4444 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -211,4 +211,9 @@ public class YatopiaConfig {

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Option for simpler Villagers
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index dd9206a70e85507fb538d2b59d97478db57df7b8..02ef2cbc0599461a1c693ef71d2310bb3e6d1fc0 100644
index c7ef8b2cd84d66b955bdbabdecfc18c1d4cc4444..d8e3bbb2ffbf20a111af3fd7a019daf1d5a7dead 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -216,4 +216,13 @@ public class YatopiaConfig {
@ -24,7 +24,7 @@ index dd9206a70e85507fb538d2b59d97478db57df7b8..02ef2cbc0599461a1c693ef71d2310bb
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb333facbe 100644
index d906c5e530c2e7f779df079223aee619a73b5d51..1ecb19c1c81456148af4a9edd59059356c3c0b94 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -7,6 +7,8 @@ import com.mojang.datafixers.util.Pair;
@ -36,23 +36,22 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import java.util.*;
@@ -27,6 +29,8 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent;
@@ -27,6 +29,7 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent;
public class EntityVillager extends EntityVillagerAbstract implements ReputationHandler, VillagerDataHolder {
+ //Yatopia
+ private boolean simplerVillagerBehavior = YatopiaConfig.simplerVillagerBehavior; //get this during villager creation so a reloaded config doesn't get them into an invalid state
+ private boolean simplerVillagerBehavior = dev.tr7zw.yatopia.YatopiaConfig.simplerVillagerBehavior; // Yatopia - get this during villager creation so a reloaded config doesn't get them into an invalid state
private static final DataWatcherObject<VillagerData> by = DataWatcher.a(EntityVillager.class, DataWatcherRegistry.q);
public static final Map<Item, Integer> bw = ImmutableMap.of(Items.BREAD, 4, Items.POTATO, 1, Items.CARROT, 1, Items.BEETROOT, 1);
private static final Set<Item> bz = ImmutableSet.of(Items.BREAD, Items.POTATO, Items.CARROT, Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT, new Item[]{Items.BEETROOT_SEEDS});
@@ -63,12 +67,49 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -63,12 +66,49 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
public EntityVillager(EntityTypes<? extends EntityVillager> entitytypes, World world, VillagerType villagertype) {
super(entitytypes, world);
this.bF = new Reputation();
+ if(!simplerVillagerBehavior) {
+ if (!simplerVillagerBehavior) {
((Navigation) this.getNavigation()).a(true);
this.getNavigation().d(true);
+ }else {
+ } else {
+ initPathfinder();
+ }
this.setCanPickupLoot(true);
@ -63,9 +62,9 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
+
+ @Override
+ protected void initPathfinder() {
+ if(!simplerVillagerBehavior)return;
+ if (!simplerVillagerBehavior) return;
+ this.goalSelector.a(0, new PathfinderGoalFloat(this));
+ if(YatopiaConfig.villagersHideAtNight) {
+ if(dev.tr7zw.yatopia.YatopiaConfig.villagersHideAtNight) {
+ this.goalSelector.a(0, new PathfinderGoalUseItem<>(this, PotionUtil.a(new ItemStack(Items.POTION), Potions.INVISIBILITY), SoundEffects.ENTITY_WANDERING_TRADER_DISAPPEARED, (entityvillagertrader) -> {
+ return !this.world.isDay() && !entityvillagertrader.isInvisible();
+ }));
@ -95,7 +94,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
@Override
public BehaviorController<EntityVillager> getBehaviorController() {
@@ -82,6 +123,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -82,6 +122,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@Override
protected BehaviorController<?> a(Dynamic<?> dynamic) {
@ -103,7 +102,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
BehaviorController<EntityVillager> behaviorcontroller = this.cJ().a(dynamic);
this.a(behaviorcontroller);
@@ -159,15 +201,47 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -159,15 +200,47 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
super.inactiveTick();
}
// Spigot End
@ -127,16 +126,16 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
+ default: return VillagerProfession.FARMER;
+ }
+ }
+
+// Yatopia end
+ // Yatopia end
@Override
protected void mobTick() { mobTick(false); }
protected void mobTick(boolean inactive) {
+ // Yatopia start
+ if(simplerVillagerBehavior && this.getVillagerData().getProfession() == VillagerProfession.NONE)
+ if (simplerVillagerBehavior && this.getVillagerData().getProfession() == VillagerProfession.NONE) {
+ this.setVillagerData(this.getVillagerData().withProfession(getRandomProfession()));
+ if(simplerVillagerBehavior) {
+ }
+ if (simplerVillagerBehavior) {
+ if (canRefresh()) {
+ restUses();
+ }
@ -151,7 +150,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper
if (this.bM) {
this.bM = false;
@@ -298,6 +372,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -298,6 +371,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
return true;
}
@ -160,7 +159,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
public void fb() {
this.fp();
Iterator iterator = this.getOffers().iterator();
@@ -332,6 +408,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -332,6 +407,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
return this.bK == 0 || this.bK < 2 && this.world.getTime() > this.bJ + 2400L;
}
@ -169,19 +168,19 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
public boolean fc() {
long i = this.bJ + 12000L;
long j = this.world.getTime();
@@ -579,6 +657,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -579,6 +656,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
}
private void a(Entity entity) {
+ if(simplerVillagerBehavior)return; // Yatopia
+ if (simplerVillagerBehavior)return; // Yatopia
if (this.world instanceof WorldServer) {
Optional<List<EntityLiving>> optional = this.bn.getMemory(MemoryModuleType.VISIBLE_MOBS);
@@ -604,6 +683,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -604,6 +682,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
}
public void a(MemoryModuleType<GlobalPos> memorymoduletype) {
+ if(simplerVillagerBehavior)return; // Yatopia
+ if (simplerVillagerBehavior)return; // Yatopia
if (this.world instanceof WorldServer) {
MinecraftServer minecraftserver = ((WorldServer) this.world).getMinecraftServer();

View File

@ -5,28 +5,26 @@ Subject: [PATCH] Heavily optimize furnance fuel and recipe lookups
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
index c2af174e639396ac70eb7b520fdd641b1d2c67e6..7de6e116a7e301754c637b68be39c30f610a04d7 100644
index c2af174e639396ac70eb7b520fdd641b1d2c67e6..da718601eb77330ff3e5eb25924d2820e3f8acaa 100644
--- a/src/main/java/net/minecraft/server/CraftingManager.java
+++ b/src/main/java/net/minecraft/server/CraftingManager.java
@@ -83,7 +83,24 @@ public class CraftingManager extends ResourceDataJson {
@@ -83,7 +83,22 @@ public class CraftingManager extends ResourceDataJson {
}).findFirst();
c0.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found
// CraftBukkit end
- return recipe;
+ // Yatopia start
+ if(c0.getCurrentRecipe() != null) {
+ Optional<T> optional = recipes.a(c0.getCurrentRecipe(), world, c0);
+ if(optional.isPresent()) {
+ c0.setCurrentRecipe(optional.get());
+ if (c0.getCurrentRecipe() != null) {
+ Optional<T> optional = recipes.a(c0.getCurrentRecipe(), world, c0);
+ optional.ifPresent(c0::setCurrentRecipe);
+ return optional;
+ }
+ }
+ for(IRecipe<C> rep : this.a(recipes)) {
+ Optional<T> optional = recipes.a(rep, world, c0);
+ if(optional.isPresent()) {
+ }
+ for (IRecipe<C> rep : this.a(recipes)) {
+ Optional<T> optional = recipes.a(rep, world, c0);
+ if(optional.isPresent()) {
+ c0.setCurrentRecipe(optional.get());
+ return optional;
+ }
+ return optional;
+ }
+ }
+ c0.setCurrentRecipe(null); // CraftBukkit - Clear recipe when no recipe is found
+ return Optional.empty();
@ -35,24 +33,25 @@ index c2af174e639396ac70eb7b520fdd641b1d2c67e6..7de6e116a7e301754c637b68be39c30f
public <C extends IInventory, T extends IRecipe<C>> List<T> a(Recipes<T> recipes) {
diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java
index acc533ca8ad612cc439208f4adf6e3d3289c92c7..eded99b59beb7d6fe759b21fa7d3082057c741d4 100644
index acc533ca8ad612cc439208f4adf6e3d3289c92c7..7637d86ccafbf323f4edaab758fa9fc3cf657841 100644
--- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
+++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java
@@ -99,7 +99,13 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
@@ -99,7 +99,14 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
this.c = recipes;
}
+ //Yatopia
+ private static Map<Item, Integer> cachedFuelMap = null;
+ private static Map<Item, Integer> cachedFuelMap = null; // Yatopia
+
public static Map<Item, Integer> f() {
+ if(cachedFuelMap != null) {
+ return cachedFuelMap; // Yatopia
+ }
+ // Yatopia start
+ if(cachedFuelMap != null) {
+ return cachedFuelMap;
+ }
+ // Yatopia end
Map<Item, Integer> map = Maps.newLinkedHashMap();
a(map, (IMaterial) Items.LAVA_BUCKET, 20000);
@@ -162,6 +168,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
@@ -162,6 +169,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
a(map, (IMaterial) Blocks.FLETCHING_TABLE, 300);
a(map, (IMaterial) Blocks.SMITHING_TABLE, 300);
a(map, (IMaterial) Blocks.COMPOSTER, 300);
@ -60,12 +59,12 @@ index acc533ca8ad612cc439208f4adf6e3d3289c92c7..eded99b59beb7d6fe759b21fa7d30820
return map;
}
@@ -615,4 +622,19 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
@@ -615,4 +623,17 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
}
}
+
+ // Yatopia start
+ // Yatopia start
+ private IRecipe cachedRecipe = null;
+ @Override
+ public IRecipe getCurrentRecipe() {
@ -73,10 +72,8 @@ index acc533ca8ad612cc439208f4adf6e3d3289c92c7..eded99b59beb7d6fe759b21fa7d30820
+ }
+ @Override
+ public void setCurrentRecipe(IRecipe recipe) {
+ cachedRecipe = recipe;
+ cachedRecipe = recipe;
+ }
+
+
+ // Yatopia end
+
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Optimize Hopper logic
diff --git a/src/main/java/net/minecraft/server/BlockDropper.java b/src/main/java/net/minecraft/server/BlockDropper.java
index 1ce89c28c2b54278dc8f1c17f2d0ccb743a27b34..1b360140b6161e9cae96752943d574200b5ced4e 100644
index 1ce89c28c2b54278dc8f1c17f2d0ccb743a27b34..9c0817d03f88af4c267cd91cd750e861febac4b9 100644
--- a/src/main/java/net/minecraft/server/BlockDropper.java
+++ b/src/main/java/net/minecraft/server/BlockDropper.java
@@ -36,7 +36,7 @@ public class BlockDropper extends BlockDispenser {
@ -13,19 +13,19 @@ index 1ce89c28c2b54278dc8f1c17f2d0ccb743a27b34..1b360140b6161e9cae96752943d57420
if (!itemstack.isEmpty()) {
EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockDropper.FACING);
- IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection));
+ IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection), false);
+ IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection), false); // Yatopia
ItemStack itemstack1;
if (iinventory == null) {
diff --git a/src/main/java/net/minecraft/server/BlockHopper.java b/src/main/java/net/minecraft/server/BlockHopper.java
index a29294fbc7cd6fcfff0df9eadd11de3bd7f1405e..7918382f26807f945dc7966b81c3c1e2f0fc3c41 100644
index a29294fbc7cd6fcfff0df9eadd11de3bd7f1405e..77f279fc29955ba6d78271f71df2ac12b7186d60 100644
--- a/src/main/java/net/minecraft/server/BlockHopper.java
+++ b/src/main/java/net/minecraft/server/BlockHopper.java
@@ -110,6 +110,12 @@ public class BlockHopper extends BlockTileEntity {
@Override
public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) {
this.a(world, blockposition, iblockdata);
+ //Yatopia start
+ // Yatopia start
+ TileEntity tileEntity = world.getTileEntity(blockposition);
+ if (tileEntity instanceof TileEntityHopper) {
+ ((TileEntityHopper)tileEntity).flushCaches();
@ -35,7 +35,7 @@ index a29294fbc7cd6fcfff0df9eadd11de3bd7f1405e..7918382f26807f945dc7966b81c3c1e2
private void a(World world, BlockPosition blockposition, IBlockData iblockdata) {
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index 3ff61141aede4b5a09bf83153222de0d14db5ad0..a5a8528db91c15afcf8c77d5e4727c8e0212bb63 100644
index 3ff61141aede4b5a09bf83153222de0d14db5ad0..e386ffda975b8a0adc218fd47a02e5b38d12e79d 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -2,6 +2,7 @@ package net.minecraft.server;
@ -46,54 +46,58 @@ index 3ff61141aede4b5a09bf83153222de0d14db5ad0..a5a8528db91c15afcf8c77d5e4727c8e
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -661,14 +662,44 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
@@ -661,14 +662,48 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
@Nullable
private IInventory l() {
+ if(this.cachedPush != null) {
+ return this.cachedPush;
+ }
+ // Yatopia start
+ if(this.cachedPush != null) {
+ return this.cachedPush;
+ }
+ // Yatopia end
EnumDirection enumdirection = (EnumDirection) this.getBlock().get(BlockHopper.FACING);
- return b(this.getWorld(), this.position.shift(enumdirection));
+ IInventory tmp = b(this.getWorld(), this.position.shift(enumdirection), this.cachedPushAir);
+ if(tmp != null && !(tmp instanceof IWorldInventory) && !(tmp instanceof Entity)) {
+ this.cachedPush = tmp;
+ }else {
+ if(tmp == null) {
+ this.cachedPushAir = true;
+ }
+ return tmp;
+ // Yatopia start
+ if (tmp != null && !(tmp instanceof IWorldInventory) && !(tmp instanceof Entity)) {
+ this.cachedPush = tmp;
+ } else {
+ if(tmp == null) {
+ this.cachedPushAir = true;
+ }
+ return tmp;
+ }
+ if(this.cachedPush == null) {
+ this.cachedPushAir = true;
+ if (this.cachedPush == null) {
+ this.cachedPushAir = true;
+ }
+ // Yatopia end
+ return this.cachedPush;
}
@Nullable
public static IInventory b(IHopper ihopper) {
- return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A());
+ //Yatopia start
+ if(ihopper instanceof TileEntityHopper) {
+ TileEntityHopper hopper = (TileEntityHopper) ihopper;
+ if(hopper.cachedAbove != null) {
+ return hopper.cachedAbove;
+ }
+ IInventory inv = a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), hopper.cachedPullAir);
+ hopper.cachedAbove = inv;
+ if(hopper.cachedAbove == null) {
+ hopper.cachedPullAir = true;
+ }
+ // Yatopia start
+ if (ihopper instanceof TileEntityHopper) {
+ TileEntityHopper hopper = (TileEntityHopper) ihopper;
+ if (hopper.cachedAbove != null) {
+ return hopper.cachedAbove;
+ }
+ IInventory inv = a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), hopper.cachedPullAir);
+ hopper.cachedAbove = inv;
+ if (hopper.cachedAbove == null) {
+ hopper.cachedPullAir = true;
+ }
+ return inv;
+ } else {
+ return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), false);
+ }
+ //Yatopia end
+ } else {
+ return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), false);
+ }
+ // Yatopia end
}
public static List<EntityItem> c(IHopper ihopper) {
@@ -683,14 +714,15 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
@@ -683,14 +718,15 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
}
@Nullable
@ -109,41 +113,39 @@ index 3ff61141aede4b5a09bf83153222de0d14db5ad0..a5a8528db91c15afcf8c77d5e4727c8e
- Object object = null;
+ public static IInventory a(World world, double d0, double d1, double d2, boolean skipBlockCheck) { return a(world, d0, d1, d2, false, skipBlockCheck); } // Yatopia // Paper - overload to default false
+ public static IInventory a(World world, double d0, double d1, double d2, boolean optimizeEntities, boolean skipBlockCheck) { // Yatopia // Paper
+ Object object = null;
+ if(!skipBlockCheck) { // Yatopia
+ Object object = null; // Yatopia
+ if(!skipBlockCheck) { // Yatopia
BlockPosition blockposition = new BlockPosition(d0, d1, d2);
if ( !world.isLoaded( blockposition ) ) return null; // Spigot
IBlockData iblockdata = world.getType(blockposition);
@@ -708,8 +740,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
@@ -708,8 +744,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
}
}
}
+ }
+ } // Yatopia
- if (object == null && (!optimizeEntities || !org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding())) { // Paper
+ if (object == null && (!optimizeEntities || true/*!org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding()*/)) { // Yatopia // Paper
List<Entity> list = world.getEntities((Entity) null, new AxisAlignedBB(d0 - 0.5D, d1 - 0.5D, d2 - 0.5D, d0 + 0.5D, d1 + 0.5D, d2 + 0.5D), IEntitySelector.d);
if (!list.isEmpty()) {
@@ -779,4 +812,21 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
@@ -779,4 +816,19 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
protected Container createContainer(int i, PlayerInventory playerinventory) {
return new ContainerHopper(i, playerinventory, this);
}
+
+ // Yatopia start
+
+ private IInventory cachedAbove = null;
+ private IInventory cachedPush = null;
+ private boolean cachedPushAir = false;
+ private boolean cachedPullAir = false;
+
+ public void flushCaches() {
+ cachedAbove = null;
+ cachedPush = null;
+ cachedPushAir = false;
+ cachedPullAir = false;
+ cachedAbove = null;
+ cachedPush = null;
+ cachedPushAir = false;
+ cachedPullAir = false;
+ }
+
+ // Yatopia end
+
}

View File

@ -4,21 +4,8 @@ Date: Wed, 5 Aug 2020 08:08:44 -0500
Subject: [PATCH] Optimize TileEntity loading
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
index c2c19a6fbfa2a4aba21aa71789071c69a6246556..8ee0c5982c3ec957ba043c0d7819ecbe586ac3f5 100644
--- a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
@@ -163,6 +163,6 @@ public class HashedList<T> implements List<T> {
}
public static <T> HashedList<T> wrapper(List<T> list) {
- return new HashedList<>(list, new ObjectArraySet<>(list));
+ return new HashedList<>(list, new java.util.HashSet<>(list)); // Yatopia
}
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 197726bdfcb887a1daac1352726f33ef08fa32b1..cc40e3ef589cd636225941ac755b5849520f7b70 100644
index 29ffa302fa5b3d7d0ece23e2e0eda79d46747c3b..8beda792cc67e5c789574076f5a06214614a6031 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -43,8 +43,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {

View File

@ -5,43 +5,29 @@ Subject: [PATCH] Global Eula file
diff --git a/src/main/java/net/minecraft/server/EULA.java b/src/main/java/net/minecraft/server/EULA.java
index 229c3b0f0c650b501f31147adaa17194af57fedd..e70da06948abf2aa2223a037aeb5f58fb0a466e3 100644
index 229c3b0f0c650b501f31147adaa17194af57fedd..345f8b811946fd11695dd718d060c5a86cd64703 100644
--- a/src/main/java/net/minecraft/server/EULA.java
+++ b/src/main/java/net/minecraft/server/EULA.java
@@ -1,9 +1,11 @@
package net.minecraft.server;
+import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.Properties;
+
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -15,12 +17,27 @@ public class EULA {
@@ -15,12 +15,25 @@ public class EULA {
public EULA(java.nio.file.Path java_nio_file_path) {
this.b = java_nio_file_path;
- this.c = SharedConstants.d || this.b();
+ this.c = SharedConstants.d || globalEula() || this.b(this.b); // Yatopia
+ }
+
+ // Yatopia start
+
+ private boolean globalEula() {
+ File globalEula = new File(System.getProperty("user.home"), "eula.txt");
+
+ if(globalEula.exists()) {
+ return b(globalEula.toPath());
+ } else {
+ System.out.println("No global eula found at " + globalEula.getAbsolutePath());
+ }
+ return false;
}
- private boolean b() {
+ // Yatopia start
+ private boolean globalEula() {
+ java.io.File globalEula = new java.io.File(System.getProperty("user.home"), "eula.txt");
+
+ if (globalEula.exists()) {
+ return b(globalEula.toPath());
+ } else {
+ System.out.println("No global eula found at " + globalEula.getAbsolutePath());
+ }
+ return false;
+ }
+ // Yatopia end
+
+ private boolean b(java.nio.file.Path path) { // Yatopia

View File

@ -46,7 +46,7 @@ index 22d920686418e86aec8be37f125123682af023a3..081a5344b86e300ae7aa722b9b0ca84c
private void set(String path, Object val) {
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
index bdeb72c04831209466742b9fb6747ebefbe7ca48..0f9f9554b00e7bda2e1ec34bcca325d4fcf983b9 100644
index a89209347418b3006745c50043d0abdf2b91babc..e0bd3efb0a856774600b8b5487ec7e2b5b81f41d 100644
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
@@ -20,6 +20,8 @@ public final class OrigamiConfig {
@ -79,19 +79,6 @@ index bdeb72c04831209466742b9fb6747ebefbe7ca48..0f9f9554b00e7bda2e1ec34bcca325d4
for (final Method method : clazz.getDeclaredMethods()) {
if (method.getReturnType() != void.class || method.getParameterCount() != 0 ||
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index 02ef2cbc0599461a1c693ef71d2310bb3e6d1fc0..16de5a03d7c182766052e118c2912c013e06c54c 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -24,7 +24,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
public class YatopiaConfig {
- private static File CONFIG_FILE;
+ public static File CONFIG_FILE;
private static final String HEADER = "This is the main configuration file for Yatopia.\n"
+ "Yatopia contains many breaking changes and settings, so know what you are doing!\n"
+ "You have been warned!\n";
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index c3becefce8143f34ed2b1093dd22227b7309629c..b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
@ -106,15 +93,15 @@ index c3becefce8143f34ed2b1093dd22227b7309629c..b045cfc0e8ade9632cfde5cffe8fe93b
this.setPVP(dedicatedserverproperties.pvp);
this.setAllowFlight(dedicatedserverproperties.allowFlight);
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index c4495f89898861c385b32e70d3b6a3f12b91bdd3..4fce6ed06fccc65ab022cff3623f06f40b49372b 100644
index 60b4c2337e6fdeddfb785e90fa501149af45756c..f27214eba0aedfceb770a39e444c46f9df19dcf6 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -320,7 +320,7 @@ public class Main {
@@ -319,7 +319,7 @@ public class Main {
}
// Paper end
System.setProperty( "library.jansi.version", "Paper" ); // Paper - set meaningless jansi version to prevent git builds from crashing on Windows
- de.minebench.origami.OrigamiConfig.init((java.io.File) options.valueOf("origami-settings")); // Origami - Server Config
+ //de.minebench.origami.OrigamiConfig.init((java.io.File) options.valueOf("origami-settings")); // Origami - Server Config
+ //de.minebench.origami.OrigamiConfig.init((java.io.File) options.valueOf("origami-settings")); // Origami - Server Config // Yatopia - no load here for u
System.out.println("Loading libraries, please wait...");
net.minecraft.server.Main.main(options);
} catch (Throwable t) {

View File

@ -5,19 +5,10 @@ Subject: [PATCH] Akarin Updated Save json list async
diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java
index 9213bfb78e92b838189161045e3945588251b486..6d7452d05c648cdee50b2077aec6f100449b8229 100644
index 9213bfb78e92b838189161045e3945588251b486..3fb72d6ee587d66a9b7e1dec27fc4f64b82ab4df 100644
--- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/src/main/java/net/minecraft/server/JsonList.java
@@ -20,6 +20,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
+
+import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -146,6 +148,7 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
@@ -146,6 +146,7 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
}
public void save() throws IOException {
@ -25,7 +16,7 @@ index 9213bfb78e92b838189161045e3945588251b486..6d7452d05c648cdee50b2077aec6f100
this.removeStaleEntries(); // Paper - remove expired values before saving
JsonArray jsonarray = new JsonArray();
@@ -155,29 +158,20 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
@@ -155,29 +156,20 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
jsonlistentry.getClass();
return (JsonObject) SystemUtils.a(jsonobject, jsonlistentry::a); // CraftBukkit - decompile error
}).forEach(jsonarray::add);
@ -53,7 +44,7 @@ index 9213bfb78e92b838189161045e3945588251b486..6d7452d05c648cdee50b2077aec6f100
- }
- }
-
+ IOUtils.closeQuietly(bufferedwriter);
+ org.apache.commons.io.IOUtils.closeQuietly(bufferedwriter);
}
+ }; // Akarin - Save json list async

View File

@ -149,19 +149,10 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
index 45b771e4121f2ef27c67d5a5ba2dadcfc0f944e0..448745b9e499b86f3ce6938c0f0fb0fbb222a781 100644
index 45b771e4121f2ef27c67d5a5ba2dadcfc0f944e0..b15ed711d8236e9835ffa013f8252aec03e9bb57 100644
--- a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
+++ b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
@@ -5,6 +5,8 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectList;
import it.unimi.dsi.fastutil.objects.ObjectListIterator;
+import me.jellysquid.mods.lithium.common.world.noise.SimplexNoiseCache;
+
import java.util.Iterator;
import java.util.List;
import java.util.Random;
@@ -56,12 +58,13 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
@@ -56,12 +56,13 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
private final NoiseGenerator t;
private final NoiseGeneratorOctaves u;
@Nullable
@ -172,20 +163,20 @@ index 45b771e4121f2ef27c67d5a5ba2dadcfc0f944e0..448745b9e499b86f3ce6938c0f0fb0fb
private final long w;
protected final GeneratorSettingBase h;
private final int x;
+ private ThreadLocal<SimplexNoiseCache> tlCache; // Yatopia: lithium
+ private ThreadLocal<me.jellysquid.mods.lithium.common.world.noise.SimplexNoiseCache> tlCache; // Yatopia: lithium
public ChunkGeneratorAbstract(WorldChunkManager worldchunkmanager, long i, GeneratorSettingBase generatorsettingbase) {
this(worldchunkmanager, worldchunkmanager, i, generatorsettingbase);
@@ -96,7 +99,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
@@ -96,7 +97,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
} else {
this.v = null;
}
-
+ this.tlCache = ThreadLocal.withInitial(() -> new SimplexNoiseCache(v)); // Yapfa: lithium
+ this.tlCache = ThreadLocal.withInitial(() -> new me.jellysquid.mods.lithium.common.world.noise.SimplexNoiseCache(v)); // Yatopia: lithium
}
@Override
@@ -161,7 +164,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
@@ -161,7 +162,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
double d3;
if (this.v != null) {

View File

@ -9,18 +9,10 @@ you can find the original code on https://github.com/jellysquid3/lithium-fabric/
Co-authored-by: tr7zw <tr7zw@live.de>
diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java
index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fdb4381c42 100644
index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..23fdd7c7d0368cc88e467a890cea8aa9b495fa11 100644
--- a/src/main/java/net/minecraft/server/DataWatcher.java
+++ b/src/main/java/net/minecraft/server/DataWatcher.java
@@ -6,6 +6,7 @@ import io.netty.handler.codec.DecoderException;
import io.netty.handler.codec.EncoderException;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -26,6 +27,77 @@ public class DataWatcher {
@@ -26,6 +26,77 @@ public class DataWatcher {
private boolean f = true;
private boolean g;
@ -46,7 +38,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fd
+ // than 256 entries as per the vanilla limit
+ int newSize = Math.min(k + GROW_FACTOR, 256);
+
+ this.entriesArray = storage = Arrays.copyOf(storage, newSize);
+ this.entriesArray = storage = java.util.Arrays.copyOf(storage, newSize);
+ }
+
+ // Update the storage
@ -98,7 +90,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fd
public DataWatcher(Entity entity) {
this.entity = entity;
}
@@ -90,7 +162,8 @@ public class DataWatcher {
@@ -90,7 +161,8 @@ public class DataWatcher {
DataWatcher.Item<T> datawatcher_item = new DataWatcher.Item<>(datawatcherobject, t0);
// this.lock.writeLock().lock(); // Spigot - not required
@ -108,12 +100,12 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fd
this.f = false;
// this.lock.writeLock().unlock(); // Spigot - not required
}
@@ -121,7 +194,8 @@ public class DataWatcher {
@@ -121,7 +193,8 @@ public class DataWatcher {
}
public <T> T get(DataWatcherObject<T> datawatcherobject) {
- return this.b(datawatcherobject).b();
+ return getEntry(datawatcherobject).b(); // Yatopia
+ return getEntry(datawatcherobject).b(); // Yatopia
+ //return this.b(datawatcherobject).b();
}

View File

@ -5,7 +5,7 @@ Subject: [PATCH] Fix lead fall dmg config
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index 16de5a03d7c182766052e118c2912c013e06c54c..c4ab51e3eb22917159e0803f54c1654975c98485 100644
index d8e3bbb2ffbf20a111af3fd7a019daf1d5a7dead..325d1fe8f91bdfa82a53a5f1f86804d04f973090 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -225,4 +225,10 @@ public class YatopiaConfig {
@ -15,30 +15,21 @@ index 16de5a03d7c182766052e118c2912c013e06c54c..c4ab51e3eb22917159e0803f54c16549
+
+ public static boolean fixFallDistance = false;
+ private static void fixFallDistance() {
+ fixFallDistance = getBoolean("settings.fixFallDistance", false);
+ fixFallDistance = getBoolean("settings.fixFallDistance", false);
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index ec84bc4dceff76fd2f823a6a9548fdf180291584..de745c8678f5dca0a939afcd45f2cab5fae3c4f1 100644
index fe0689f6be466d1a2a1ed2b76331272199a0aa0c..eef7128a81b58089a2ea2495264a7e94104668a8 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2,6 +2,8 @@ package net.minecraft.server;
import co.aikar.timings.MinecraftTimings;
import co.aikar.timings.Timing;
+import dev.tr7zw.yatopia.YatopiaConfig;
+
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -1266,6 +1268,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1266,6 +1266,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.fallDistance = 0.0F;
} else if (d0 < 0.0D) {
this.fallDistance = (float) ((double) this.fallDistance - d0);
+ }else if (d0 > 0.0D && YatopiaConfig.fixFallDistance) { // Yatopia
+ this.fallDistance = 0.0F;
+ } else if (d0 > 0.0D && dev.tr7zw.yatopia.YatopiaConfig.fixFallDistance) { // Yatopia
+ this.fallDistance = 0.0F; // Yatopia
}
}

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Akarin updated Async Path Finding
Co-authored-by: Bud Gidiere <sgidiere@gmail.com>
diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java
index e6868e2b65e3c2bde7696272b242a47e7394e27f..c4c3ef500b9b8465644a0b7712f43ba35ad3acc1 100644
index e6868e2b65e3c2bde7696272b242a47e7394e27f..dcd99ae6cb244c819c68dfafa681adf63a34622a 100644
--- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/src/main/java/net/minecraft/server/EntityBee.java
@@ -445,9 +445,9 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB
@ -14,10 +14,10 @@ index e6868e2b65e3c2bde7696272b242a47e7394e27f..c4c3ef500b9b8465644a0b7712f43ba3
@Override
- public void c() {
+ public void tickAsync() {
+ public void tickAsync() { // Akarin - async pathfinding
if (!EntityBee.this.bJ.k()) {
- super.c();
+ super.tickAsync();
+ super.tickAsync(); // Akarin - async pathfinding
}
}
};
@ -48,7 +48,7 @@ index 681465d8a74831461dce4615d2d19c7ed46bc299..f04411a2a295d2a982dca5851ae76a80
if (!this.a(pathtype)) {
return false;
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de04c1467d 100644
index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..78d1d96aeaf8c8b79f5f5bdf74178816c8bc8973 100644
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
@@ -28,6 +28,15 @@ public abstract class NavigationAbstract {
@ -132,36 +132,25 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
}
- public void c() {
+/* public void c() {
+/* public void c() { // Yatopia
++this.e;
if (this.m) {
this.j();
@@ -238,7 +290,7 @@ public abstract class NavigationAbstract {
Vec3D vec3d;
if (this.a()) {
- this.l();
+ //this.l();
} else if (this.c != null && this.c.f() < this.c.e()) {
vec3d = this.b();
Vec3D vec3d1 = this.c.a(this.a, this.c.f());
@@ -256,9 +308,44 @@ public abstract class NavigationAbstract {
@@ -256,9 +308,43 @@ public abstract class NavigationAbstract {
this.a.getControllerMove().a(vec3d.x, this.b.getType(blockposition.down()).isAir() ? vec3d.y : PathfinderNormal.a((IBlockAccess) this.b, blockposition), vec3d.z, this.d);
}
}
+ }*/
+ //Yatopia Start
+ }*/ // Yatopia
+ // Yatopia start
+ public void c() {
+ this.tickAsync();
+ }
+ //Yatopia End
}
+ // Yatopia end
+ // Akarin start - Async pathfinder, copied from above
+ public void tickAsync() {
+ ++this.e;
+ this.doPathfindAsync();
}
- protected void l() {
+ }
+ // This was copied from above partly with param
+ public void doTickAsync(PathEntity pathEntity) {
+ if (shouldContinuePathfind(pathEntity))
@ -178,7 +167,8 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+ pathEntity.c(pathEntity.f() + 1);
+ }
+ }
+
- protected void l() {
+ if (shouldContinuePathfind(pathEntity))
+ return;
+ //PacketDebug.a(this.b, this.a, pathEntity, this.l);
@ -191,12 +181,12 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
Vec3D vec3d = this.b();
this.l = this.a.getWidth() > 0.75F ? this.a.getWidth() / 2.0F : 0.75F - this.a.getWidth() / 2.0F;
@@ -273,8 +360,26 @@ public abstract class NavigationAbstract {
@@ -273,8 +359,26 @@ public abstract class NavigationAbstract {
}
this.a(vec3d);
- }
+ }*/
+ }*/ // Akarin end
+
+ // Akarin start - Async pathfinder, copied from above with param
+ protected void applyPath(PathEntity pathEntity) {
@ -208,18 +198,18 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+ double d1 = Math.abs(this.a.locY() - (double) baseblockposition.getY());
+ double d2 = Math.abs(this.a.locZ() - ((double) baseblockposition.getZ() + 0.5D));
+ boolean flag = d0 < (double) this.l && d2 < (double) this.l && d1 < 1.0D;
+
+ if (flag || this.a.b(pathEntity.h().l) && this.b(vec3d)) {
+ pathEntity.c(pathEntity.f() + 1);
+ }
+
+ this.applyPath0(pathEntity, vec3d);
+ }
+ // Akarin end
private boolean b(Vec3D vec3d) {
if (this.c.e() <= this.c.f() + 1) {
return false;
@@ -324,7 +429,39 @@ public abstract class NavigationAbstract {
@@ -324,7 +428,39 @@ public abstract class NavigationAbstract {
}
}
@ -245,7 +235,7 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+
+ this.k = this.a.dM() > 0.0F ? d0 / (double) this.a.dM() * 1000.0D : 0.0D;
+ }
+
+ if (this.k > 0.0D && (double) this.i > this.k * 3.0D) {
+ this.e();
+ this.o();
@ -253,13 +243,13 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+
+ this.j = SystemUtils.getMonotonicMillis();
+ }
+
+ }
+ // Akarin end
private void e() {
this.h = BaseBlockPosition.ZERO;
this.i = 0L;
@@ -389,7 +526,11 @@ public abstract class NavigationAbstract {
@@ -389,7 +525,11 @@ public abstract class NavigationAbstract {
public boolean r() {
return this.o.e();
}
@ -273,7 +263,7 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
if (this.c != null && !this.c.b() && this.c.e() != 0) { // Tuinity - diff on change - needed for isViableForPathRecalculationChecking()
PathPoint pathpoint = this.c.c();
diff --git a/src/main/java/net/minecraft/server/NavigationFlying.java b/src/main/java/net/minecraft/server/NavigationFlying.java
index 0c33a0c9d59d79a39826b5ee14144604717ffebe..cf3f4c1a2a89cce0345566a62faa34ef7e93c603 100644
index 0c33a0c9d59d79a39826b5ee14144604717ffebe..14b77c7f8ee54bb2189fbb17814dce9aaa7db3eb 100644
--- a/src/main/java/net/minecraft/server/NavigationFlying.java
+++ b/src/main/java/net/minecraft/server/NavigationFlying.java
@@ -28,7 +28,7 @@ public class NavigationFlying extends NavigationAbstract {
@ -281,7 +271,7 @@ index 0c33a0c9d59d79a39826b5ee14144604717ffebe..cf3f4c1a2a89cce0345566a62faa34ef
}
- @Override
+/* @Override
+/* @Override // Yatopia
public void c() {
++this.e;
if (this.m) {
@ -289,7 +279,7 @@ index 0c33a0c9d59d79a39826b5ee14144604717ffebe..cf3f4c1a2a89cce0345566a62faa34ef
this.a.getControllerMove().a(vec3d.x, vec3d.y, vec3d.z, this.d);
}
}
+ }*/
+ }*/ // Yatopia
+
+ // This was copied from above partly with param
+ @Override

View File

@ -7,11 +7,11 @@ Ported to Yatopia and 1.16.1 by MrIvanPlays
Co-authored-by: MrIvanPlays <ivan@mrivanplays.com>
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index c4ab51e3eb22917159e0803f54c1654975c98485..d20ed58b781462ea667f75a2ac99b78cb23e283c 100644
index 325d1fe8f91bdfa82a53a5f1f86804d04f973090..01a44ad139699a1f6b745853c36d79c39f7d75eb 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -231,4 +231,15 @@ public class YatopiaConfig {
fixFallDistance = getBoolean("settings.fixFallDistance", false);
fixFallDistance = getBoolean("settings.fixFallDistance", false);
}
+ public static int maxPlayerAutoSavePerTick = 10;
@ -62,10 +62,10 @@ index 26ee6e9219059c9f7175148e934d2adec2b336a0..f3e67e96bea9059aad60c896d7f376f7
// Paper start
for (WorldServer world : getWorlds()) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index c10a1d15bcfe0cb1c2ff6ee7f2881bc2040bcd1d..1dfd274e3af26792d5da88c59c0ebc71d8b9feb4 100644
index 0b6c62ff0ac75c7ec11de9f8e9745b07ee12664e..60fa4b84c3701fc29d07215d005e5b7b45b5dfbb 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -484,6 +484,7 @@ public abstract class PlayerList {
@@ -483,6 +483,7 @@ public abstract class PlayerList {
protected void savePlayerFile(EntityPlayer entityplayer) {
if (!entityplayer.getBukkitEntity().isPersistent()) return; // CraftBukkit
if (!entityplayer.didPlayerJoinEvent) return; // Paper - If we never fired PJE, we disconnected during login. Data has not changed, and additionally, our saved vehicle is not loaded! If we save now, we will lose our vehicle (CraftBukkit bug)
@ -73,7 +73,7 @@ index c10a1d15bcfe0cb1c2ff6ee7f2881bc2040bcd1d..1dfd274e3af26792d5da88c59c0ebc71
this.playerFileData.save(entityplayer);
ServerStatisticManager serverstatisticmanager = (ServerStatisticManager) entityplayer.getStatisticManager(); // CraftBukkit
@@ -1130,10 +1131,21 @@ public abstract class PlayerList {
@@ -1129,10 +1130,21 @@ public abstract class PlayerList {
}
public void savePlayers() {

View File

@ -587,22 +587,10 @@ index 26ddf92f86fccc2b2562f7abf4788d1ed6b73205..dfec5882598f09492e9a17de25774a4c
private static final GameProfile[] EMPTY_PROFILES = new GameProfile[0];
diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
index 0c5f2a010f30eb32bea273d7e65b0741016480e5..1152644a390decd48395f6b2e60887aafaf66ac4 100644
index 2a67013f6d2656a3d89cb042ba401bcaeb731d83..9e2f0107b27f37ce13616c32f4b5691aae221fc8 100644
--- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
@@ -5,24 +5,17 @@ import com.google.common.base.Charsets;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.properties.PropertyMap;
-
import dev.tr7zw.yatopia.events.GameProfileLookupEvent;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.UserCache;
import org.apache.commons.lang3.Validate;
-
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.spigotmc.SpigotConfig;
@@ -13,12 +13,7 @@ import org.spigotmc.SpigotConfig;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@ -1050,7 +1038,7 @@ index 76593df295e5f462adcbc223d791316a849fffeb..2fb99e8626b962184854c2850d0507f7
import java.util.List;
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java
index 0f9f9554b00e7bda2e1ec34bcca325d4fcf983b9..43bc9c06da57866a7c9c38e3287d40e1b7d69a9a 100644
index e0bd3efb0a856774600b8b5487ec7e2b5b81f41d..5918b1b66a42d97c4b44304eec22f252519bb4d1 100644
--- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
@@ -1,12 +1,10 @@
@ -1087,46 +1075,8 @@ index e6617833a7aea4803b78bc55b633fac9698688bd..43def748a996fea8caf56ee58a3585da
import java.util.function.Predicate;
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
index eca581513324401e1c6b3e818ba9ea6e9925490f..d9b6faea9adbe246eaede7c0db77a4eba05b82af 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
@@ -1,26 +1,18 @@
package dev.tr7zw.yatopia;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-
+import com.google.common.base.Functions;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import net.minecraft.server.MinecraftKey;
+import net.minecraft.server.MinecraftServer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
-import com.google.common.base.Functions;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-import net.minecraft.server.MinecraftKey;
-import net.minecraft.server.MinecraftServer;
+import java.io.File;
+import java.util.*;
public class YatopiaCommand extends Command {
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
index d20ed58b781462ea667f75a2ac99b78cb23e283c..f2acc0a5c24165e2e90f1a53107d2027dade584e 100644
index 01a44ad139699a1f6b745853c36d79c39f7d75eb..185675b3ef36e9c73f5729d1d7d773e1a4a6f5b9 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -1,8 +1,11 @@
@ -1156,33 +1106,26 @@ index d20ed58b781462ea667f75a2ac99b78cb23e283c..f2acc0a5c24165e2e90f1a53107d2027
public static File CONFIG_FILE;
diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
index 523e3b50d535e91afe8b14fdb53966da030963dc..a2c92daeab053dd3785b8389a101c21fcfb73eef 100644
index dfa51d6f170ec4fb010dce909c3fccb6c726deb4..b663a5707539e1e411647e466481ec880c511c9f 100644
--- a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
@@ -1,9 +1,9 @@
@@ -1,6 +1,7 @@
package dev.tr7zw.yatopia;
-import javax.annotation.Nonnull;
import com.destroystokyo.paper.VersionHistoryManager;
+import com.destroystokyo.paper.util.VersionFetcher;
import com.google.common.base.Charsets;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@@ -11,8 +12,6 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.annotation.Nonnull;
-
import com.destroystokyo.paper.util.VersionFetcher;
-import com.destroystokyo.paper.util.VersionFetcher;
import javax.annotation.Nullable;
+import javax.annotation.Nonnull;
+
public class YatopiaVersionFetcher implements VersionFetcher {
@Override
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
index 8ee0c5982c3ec957ba043c0d7819ecbe586ac3f5..94c356e055851f4e8f01e10989e1f4a2242ce4df 100644
--- a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
+++ b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java
@@ -1,7 +1,5 @@
package me.jellysquid.mods.lithium.common.util.collections;
-import it.unimi.dsi.fastutil.objects.ObjectArraySet;
-
import java.util.*;
/**
diff --git a/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java b/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java
index 167498cfab7aed0deb32232082ae06a123b7a039..a28486e5ad4a86bd02219f1db696d8049b6955bf 100644
--- a/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java
@ -1226,10 +1169,10 @@ index 315a03cf5e64264523ce95ce7b9ffe7c450e1e5b..9f48cfb84cd3fccc408d908db37d27f1
public class Advancement {
diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
index 5442c28c56f933c63bd611f579d0392876ecc2ef..2a2b7a1d6a2813740cc9aae6bc911cea659543e6 100644
index 93b14f01fd7094175968918f0dcd7c3c921f156a..d62f6b17e4e3a5b2a49dab4edcd3e8ef3226579a 100644
--- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
+++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
@@ -15,25 +15,18 @@ import com.google.gson.stream.JsonReader;
@@ -15,23 +15,17 @@ import com.google.gson.stream.JsonReader;
import com.mojang.datafixers.DataFixer;
import com.mojang.serialization.Dynamic;
import com.mojang.serialization.JsonOps;
@ -1250,9 +1193,7 @@ index 5442c28c56f933c63bd611f579d0392876ecc2ef..2a2b7a1d6a2813740cc9aae6bc911cea
-import java.util.Map;
+import java.util.*;
import java.util.Map.Entry;
-import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.annotation.Nullable;
@ -1639,27 +1580,17 @@ index cedd2a26cd373c10835df104206defdc50405a62..eba9f9a401a40ac4ad964e8f9fffb973
import java.util.Optional;
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
index bfaba96eb56dd98a67d2c2179335ae48dcbe3849..d78b5cc7075a37bcf572c2043fa252bb624861a7 100644
index f7f082c80442cd352e14daa4b199b2f3ad75c22f..c434aafff57af844b04730e53d17819364083885 100644
--- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -8,14 +8,12 @@ import com.mojang.serialization.Codec;
@@ -7,7 +7,6 @@ import com.google.common.collect.Sets;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap;
import me.jellysquid.mods.lithium.common.util.collections.HashedList;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import javax.annotation.Nullable;
-
import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.annotation.Nullable;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
public class BiomeBase {
import java.util.function.Function;
import java.util.stream.Collectors;
diff --git a/src/main/java/net/minecraft/server/BiomeStorage.java b/src/main/java/net/minecraft/server/BiomeStorage.java
index 49114864e3cd7ef48b827220939c5069d3b8ca3a..11b47ebc3a49927f4c704b111254b6b1e67dd1d0 100644
--- a/src/main/java/net/minecraft/server/BiomeStorage.java
@ -2865,24 +2796,6 @@ index ee6726e5c664115417c6397aa153315c8eb835a9..43b80b6667839a2769c14508fcdef71d
public abstract class ChunkGenerator {
diff --git a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
index 448745b9e499b86f3ce6938c0f0fb0fbb222a781..e6eb96017bfda10971708f59b0fd009b8905837e 100644
--- a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
+++ b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
@@ -7,12 +7,12 @@ import it.unimi.dsi.fastutil.objects.ObjectList;
import it.unimi.dsi.fastutil.objects.ObjectListIterator;
import me.jellysquid.mods.lithium.common.world.noise.SimplexNoiseCache;
+import javax.annotation.Nullable;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.function.Predicate;
import java.util.stream.IntStream;
-import javax.annotation.Nullable;
public final class ChunkGeneratorAbstract extends ChunkGenerator {
diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
index 46fc70bd9878ca089c446619f97b997c9bb27eec..eabc303195f6cc560a4c3ad33e07bcd3abb3bce7 100644
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
@ -3439,7 +3352,7 @@ index 079304e8b1abb2c37febef536b1dd9f76e5ad47d..c0f2e44c6c54e22f32d5df6cbc9e9263
public class Convertable {
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
index 7de6e116a7e301754c637b68be39c30f610a04d7..83b8f9a7419db0dd7b9ffb36652290fbdafb3d8d 100644
index da718601eb77330ff3e5eb25924d2820e3f8acaa..75afa85ce53ae0bfcdfa1a0b51f939c8c0dfed2c 100644
--- a/src/main/java/net/minecraft/server/CraftingManager.java
+++ b/src/main/java/net/minecraft/server/CraftingManager.java
@@ -1,23 +1,16 @@
@ -3671,33 +3584,18 @@ index 52948a84b89554646c9ec1fd13d6d3c9e7cbf996..eada694a8e57284bdda477ccca2c2502
public class DataPaletteBlock<T> implements DataPaletteExpandable<T> {
diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java
index d8147567b4dfdc48b86f6349fca084fdb4381c42..d3105bf3dd35ad26d3df64c03174cedcdfaca178 100644
index 23fdd7c7d0368cc88e467a890cea8aa9b495fa11..e038b406de0de50b1df55349c125c18f691ca61a 100644
--- a/src/main/java/net/minecraft/server/DataWatcher.java
+++ b/src/main/java/net/minecraft/server/DataWatcher.java
@@ -4,19 +4,14 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import io.netty.handler.codec.DecoderException;
import io.netty.handler.codec.EncoderException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
@@ -9,8 +9,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import javax.annotation.Nullable;
import javax.annotation.Nullable;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import javax.annotation.Nullable;
+import java.io.IOException;
+import java.util.*;
+
public class DataWatcher {
private static final Logger LOGGER = LogManager.getLogger();
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27..8974915ea2e0d2e831d2fb25a5402c439320965d 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
@ -3902,27 +3800,23 @@ index ac546ff959510a2d0120c24c90bf13ff83873161..892be05e196ffed7c8bd59fff0cba89a
private static final Logger LOGGER = LogManager.getLogger();
diff --git a/src/main/java/net/minecraft/server/EULA.java b/src/main/java/net/minecraft/server/EULA.java
index e70da06948abf2aa2223a037aeb5f58fb0a466e3..30921ef96de4e98316634e2a55307b13b0c28f65 100644
index 345f8b811946fd11695dd718d060c5a86cd64703..391ed2bbb7fd02294ddb20c2c01a6886883ffdad 100644
--- a/src/main/java/net/minecraft/server/EULA.java
+++ b/src/main/java/net/minecraft/server/EULA.java
@@ -1,14 +1,14 @@
@@ -1,11 +1,11 @@
package net.minecraft.server;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.Properties;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
public class EULA {
private static final Logger LOGGER = LogManager.getLogger();
diff --git a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java b/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
index 176be2e4d0d23d3e7967b6e0e99d060a96b3d976..4d769a513216c56ae93944cd99d091fa3ad97e51 100644
--- a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
@ -3996,15 +3890,10 @@ index e2c1de7ab246f1b4c8add06c513afc2eca97d796..589f00d27255aa1b227fea7c19a27862
private static final Logger LOGGER = LogManager.getLogger();
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index de745c8678f5dca0a939afcd45f2cab5fae3c4f1..1779f7756a7093b558bcfc7ce96559558b911a92 100644
index eef7128a81b58089a2ea2495264a7e94104668a8..9008edf5ac28ead63f6df91f00a7a457fc72f1d0 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2,11 +2,10 @@ package net.minecraft.server;
import co.aikar.timings.MinecraftTimings;
import co.aikar.timings.Timing;
-import dev.tr7zw.yatopia.YatopiaConfig;
-
@@ -5,6 +5,7 @@ import co.aikar.timings.Timing;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@ -4012,7 +3901,7 @@ index de745c8678f5dca0a939afcd45f2cab5fae3c4f1..1779f7756a7093b558bcfc7ce9655955
import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap;
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
import org.apache.logging.log4j.LogManager;
@@ -23,12 +22,7 @@ import org.bukkit.entity.Hanging;
@@ -21,12 +22,7 @@ import org.bukkit.entity.Hanging;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Pose;
import org.bukkit.entity.Vehicle;
@ -4026,7 +3915,7 @@ index de745c8678f5dca0a939afcd45f2cab5fae3c4f1..1779f7756a7093b558bcfc7ce9655955
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.vehicle.VehicleBlockCollisionEvent;
@@ -37,16 +31,7 @@ import org.bukkit.event.vehicle.VehicleExitEvent;
@@ -35,16 +31,7 @@ import org.bukkit.event.vehicle.VehicleExitEvent;
import org.bukkit.plugin.PluginManager;
import javax.annotation.Nullable;
@ -4162,7 +4051,7 @@ index 3dd3b8913e345471f971c4ef55bb91200eb50a33..781cadf1471cf8aa405af406bc9ae8db
public class EntityBat extends EntityAmbient {
diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java
index c4c3ef500b9b8465644a0b7712f43ba35ad3acc1..776f4df79ac8ffad2e876e400df131f5c5691faf 100644
index dcd99ae6cb244c819c68dfafa681adf63a34622a..6311fcac0c408c546b459b5a120990ea7a1dbd8f 100644
--- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/src/main/java/net/minecraft/server/EntityBee.java
@@ -1,16 +1,12 @@
@ -4540,7 +4429,7 @@ index 364697e0155012c300219ad94a3995809e6c2f8f..8de9b17292bc69e603d5e3ef1f5e82d5
public abstract class EntityHorseAbstract extends EntityAnimal implements IInventoryListener, IJumpable, ISaddleable {
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 3966bf7160ef5a7ec6944397ffbf51f583875860..c6bc8dda20d4789499184b651092199de0c0c333 100644
index 68c033e2b8542c5656d5b9534a4953a370999097..02b3fb9b12bb054117702283ed769b4b8238006c 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -5,18 +5,6 @@ import com.google.common.collect.ImmutableMap;
@ -5456,7 +5345,7 @@ index 99a98e37ebd292f8fb1c3613348bd6dd51e9191b..3af1ad56464ee6d0c43f8a2fcba993e3
protected static final DataWatcherObject<Byte> b = DataWatcher.a(EntityVex.class, DataWatcherRegistry.a);
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 2fb7f23275acad54d2f5e2ecd57d5bbb333facbe..52bab44807674a5f7aee105d015f639b8aef9829 100644
index 1ecb19c1c81456148af4a9edd59059356c3c0b94..85d88dceb25f4a0aac2cd86fed2fbc5bc0658ffc 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -7,24 +7,18 @@ import com.mojang.datafixers.util.Pair;
@ -6599,10 +6488,10 @@ index faa556d4358bc9890ae80c18ee10c38a8d46548e..0f342d972f94852d057e39f0c24baf46
public class ItemWorldMap extends ItemWorldMapBase {
diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java
index 6d7452d05c648cdee50b2077aec6f100449b8229..da52912a4ae8d23d1fa14a2a1b4fdcba26c2500e 100644
index 3fb72d6ee587d66a9b7e1dec27fc4f64b82ab4df..0859a8ac90c4a514d35d9df40f85677f64fa21c3 100644
--- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/src/main/java/net/minecraft/server/JsonList.java
@@ -1,29 +1,24 @@
@@ -1,27 +1,23 @@
package net.minecraft.server;
-import com.google.common.collect.Lists;
@ -6614,7 +6503,6 @@ index 6d7452d05c648cdee50b2077aec6f100449b8229..da52912a4ae8d23d1fa14a2a1b4fdcba
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
+import com.google.gson.*;
+import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
@ -6633,8 +6521,6 @@ index 6d7452d05c648cdee50b2077aec6f100449b8229..da52912a4ae8d23d1fa14a2a1b4fdcba
import java.util.List;
import java.util.Map;
-import javax.annotation.Nullable;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
@ -7314,7 +7200,7 @@ index 376427eee7774a26da53ac041ae197bd982bafce..04552de8d42d9bd75fd37f7ef13ee275
public class NameReferencingFileConverter {
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
index 2dac507e9e0044a32ae54ea57eada0de04c1467d..b0eeeb9827d523c878d1e84fde8f5036476fdf2e 100644
index 78d1d96aeaf8c8b79f5f5bdf74178816c8bc8973..e1ee0992b5ff3b70da24fc7fc5624fe7c120ce02 100644
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
@@ -1,10 +1,11 @@
@ -7697,31 +7583,17 @@ index 29efbdd2ca77833e6be59e5b5b4c38633e43588d..b27679e5993177d550a7a2727fc3bcda
public class PathfinderGoalRemoveBlock extends PathfinderGoalGotoTarget {
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
index 2378a833cd31d703db462dd6f55a5cb858796b8d..3d791a74c37193dbf76d6b0a3d428d94a988d39f 100644
index 0ad38a7b426b8b1e0ae8a98a2cb5b28878ae1249..d1c00b0535128ae234c3aa8139614185f79683fb 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
@@ -1,17 +1,13 @@
@@ -1,7 +1,6 @@
package net.minecraft.server;
-import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector
+import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet;
import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
-import java.util.EnumMap;
-import java.util.EnumSet;
-import java.util.Iterator; // Paper - remove streams from pathfindergoalselector
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Stream;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
public class PathfinderGoalSelector {
import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector
-import com.google.common.collect.Sets;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Iterator; // Paper - remove streams from pathfindergoalselector
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java
index 29822c19496e3927eb9a061869872f4fee525254..6d1b9348e95ce154a1cae31e7f67a6213a1d3803 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java
@ -7767,26 +7639,6 @@ index 112d8bab65bf41263a477c5faa717687fe8a2bc9..85e63bc6f46637e8a4c0fec77a61f9ca
public class PathfinderGoalWrapped extends PathfinderGoal {
diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java
index 279ca87d8826ea2696ffc08d4b52c55a5e7bd392..af25ec2b833fa10a7d27c4cf91c505aee85bffe6 100644
--- a/src/main/java/net/minecraft/server/PathfinderNormal.java
+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java
@@ -4,14 +4,12 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap;
-import com.google.common.collect.Sets;
-
import it.unimi.dsi.fastutil.objects.Reference2ReferenceMap;
import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
+import javax.annotation.Nullable;
import java.util.EnumSet;
import java.util.Iterator;
-import javax.annotation.Nullable;
public class PathfinderNormal extends PathfinderAbstract {
diff --git a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java b/src/main/java/net/minecraft/server/PathfinderTargetCondition.java
index af09e1926fb6f3b780a5063b2e2e00da4cdc8ce6..c855ca15a6b2e463de48a86738d5182d28b32c20 100644
--- a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java
@ -8115,7 +7967,7 @@ index 3b65711b91c51ac7b4b5b2b0144ffd279fe60eeb..b7fe6425a6c830b2b63710b3c4c3c6e7
public class PlayerInventory implements IInventory, INamableTileEntity {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index 1dfd274e3af26792d5da88c59c0ebc71d8b9feb4..bffb8fcdd32c98b3253430d06955a4e2f170dbea 100644
index 60fa4b84c3701fc29d07215d005e5b7b45b5dfbb..c3b833c8a0c9a9746fdd6bed9ac21a0060c79dda 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -1,6 +1,8 @@
@ -8127,23 +7979,8 @@ index 1dfd274e3af26792d5da88c59c0ebc71d8b9feb4..bffb8fcdd32c98b3253430d06955a4e2
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -8,42 +10,24 @@ import com.mojang.authlib.GameProfile;
import com.mojang.serialization.DataResult;
import com.mojang.serialization.Dynamic;
import io.netty.buffer.Unpooled;
-import java.io.File;
-import java.net.SocketAddress;
-import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.Nullable;
@@ -22,26 +24,13 @@ import java.util.concurrent.CompletableFuture;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-
@ -8170,17 +8007,8 @@ index 1dfd274e3af26792d5da88c59c0ebc71d8b9feb4..bffb8fcdd32c98b3253430d06955a4e2
-import org.bukkit.util.Vector;
+import org.bukkit.event.player.*;
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
+
+import javax.annotation.Nullable;
+import java.io.File;
+import java.net.SocketAddress;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
// CraftBukkit end
public abstract class PlayerList {
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
index 68f693de5eaa5eaa8dc65230ffa95556530c2368..0b4a0052a25470033326f7533880a14eaccd6321 100644
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
@ -8804,7 +8632,7 @@ index ea52e89bd965afbd74f15b0e2974657319c28e4a..e5b69c561f3ff2e76351f784d970f77d
import java.util.UUID;
diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java
index 5f222d8b90951c61e77ab7032f8728772ba8ab9d..48a6f61bfd7408f2bdebcdd9bf07bde1c750209a 100644
index a734cb47df9cffaee52a5c798bb3324212a004ba..eaf788301779d2d4ad57d849b0864d5af82c054f 100644
--- a/src/main/java/net/minecraft/server/ServerStatisticManager.java
+++ b/src/main/java/net/minecraft/server/ServerStatisticManager.java
@@ -12,6 +12,9 @@ import com.mojang.datafixers.DataFixer;
@ -8817,13 +8645,9 @@ index 5f222d8b90951c61e77ab7032f8728772ba8ab9d..48a6f61bfd7408f2bdebcdd9bf07bde1
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
@@ -20,13 +23,9 @@ import java.util.Map;
import java.util.Map.Entry;
@@ -21,9 +24,6 @@ import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
-import java.util.Map.Entry;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
@ -9344,7 +9168,7 @@ index 89537dec8ed278e79e078cb2fd3d3e839cdbab59..159db8d095f9abed59348594147a640c
public class TileEntityEndGateway extends TileEntityEnderPortal implements ITickable {
diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java
index eded99b59beb7d6fe759b21fa7d3082057c741d4..497ca14dd5c6df02dfce897820967c3f6094a255 100644
index 7637d86ccafbf323f4edaab758fa9fc3cf657841..9b45020c41a0aa6e34853587894f0e907db257ff 100644
--- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
+++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java
@@ -5,12 +5,6 @@ import com.google.common.collect.Maps;
@ -9373,7 +9197,7 @@ index eded99b59beb7d6fe759b21fa7d3082057c741d4..497ca14dd5c6df02dfce897820967c3f
public abstract class TileEntityFurnace extends TileEntityContainer implements IWorldInventory, RecipeHolder, AutoRecipeOutput, ITickable {
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index a5a8528db91c15afcf8c77d5e4727c8e0212bb63..4285e9e4c1064468922b66d8cafbd102827f7f24 100644
index e386ffda975b8a0adc218fd47a02e5b38d12e79d..500f2783a9fc1bc89de95aeb462bc44750451566 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -1,20 +1,17 @@
@ -9481,31 +9305,17 @@ index c4b0d8720e71c7bf2cac7ed962b8fd33cf0b49b3..fa63d9c7eae6f38a953176be8bcf1125
public class TileEntitySign extends TileEntity implements ICommandListener { // CraftBukkit - implements
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
index ceb1f18a49ebc8fbac270d9f221fa44f9baea216..b9def7587a1dad2acce3509cc7b82e9768f8b1bc 100644
index ab553f408b31cb7e2d281cc3d8fe42e19dc717d9..870b1faebfe5194aa48c70293593bc89d24aa116 100644
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
@@ -1,32 +1,23 @@
package net.minecraft.server;
@@ -9,19 +9,14 @@ import javax.annotation.Nullable;
-import com.google.common.collect.Iterables;
-import com.mojang.authlib.GameProfile;
-import com.mojang.authlib.minecraft.MinecraftSessionService;
-import com.mojang.authlib.properties.Property;
-
-import dev.tr7zw.yatopia.events.GameProfileLookupEvent;
-
-import java.util.UUID;
-import javax.annotation.Nullable;
-
-import org.bukkit.Bukkit;
-
-// Spigot start
// Spigot start
import com.google.common.base.Predicate;
-import com.google.common.cache.LoadingCache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.Futures;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ExecutorService;
@ -9514,16 +9324,8 @@ index ceb1f18a49ebc8fbac270d9f221fa44f9baea216..b9def7587a1dad2acce3509cc7b82e97
-
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.mojang.authlib.Agent;
+import com.mojang.authlib.GameProfile;
import com.mojang.authlib.ProfileLookupCallback;
-import java.util.concurrent.Callable;
+import com.mojang.authlib.minecraft.MinecraftSessionService;
+import com.mojang.authlib.properties.Property;
+import dev.tr7zw.yatopia.events.GameProfileLookupEvent;
+import org.bukkit.Bukkit;
+
+import javax.annotation.Nullable;
+import java.util.UUID;
+import java.util.concurrent.*;
// Spigot end
@ -9754,7 +9556,7 @@ index 34a180361e817b5cbd37d206fbc7cfd5ad2a468b..fa35fe79d1d35a6862151aca0dba0923
import java.util.Objects;
import java.util.stream.Stream;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index cc40e3ef589cd636225941ac755b5849520f7b70..922ef8752a4aad8f0669f43ad0333713fde45f24 100644
index 8beda792cc67e5c789574076f5a06214614a6031..9047b02dc61d161fa4093885c39c8e7f793fc406 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1,30 +1,14 @@
@ -9936,34 +9738,17 @@ index 3b1779f8220afc61d4d63926bcda0c27b44dd96e..e3bcf63922639db39e83c8b6b1ad65b9
public class WorldMap extends PersistentBase {
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
index b14f3d44a76ccac791b7be353bb2899fc59f70ec..484058ca6e5aea094a36f6e4e0d2c3106ec2da73 100644
index 12ffee96cfbd135f107b1dff7a058177e2649964..d763c9f06d8b006936c2e19daedd6396d42a5d12 100644
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
@@ -1,21 +1,14 @@
package net.minecraft.server;
import com.mojang.datafixers.DataFixer;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import javax.annotation.Nullable;
@@ -9,6 +9,7 @@ import java.io.OutputStream;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.bukkit.craftbukkit.entity.CraftPlayer;
-// CraftBukkit start
-import java.util.UUID;
+import javax.annotation.Nullable;
+import java.io.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-
-import org.bukkit.craftbukkit.entity.CraftPlayer;
+// CraftBukkit start
import org.bukkit.craftbukkit.entity.CraftPlayer;
// CraftBukkit end
public class WorldNBTStorage {
diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java
index a2a25cf6a43a1f59a80c997e2980f2bb8e6b3817..045605b71a74a1ea3a29e622bb790bdd690d33dc 100644
--- a/src/main/java/net/minecraft/server/WorldPersistentData.java
@ -10107,7 +9892,7 @@ index 7cde55ae407012b3445f11b07a0ebc9d00e031e3..23cbd9a980ce65c99cdfd1cbade3ffa5
public class PurpurWorldConfig {
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 4fce6ed06fccc65ab022cff3623f06f40b49372b..2040f3629366358e3c81313718e3be2e72a7362f 100644
index f27214eba0aedfceb770a39e444c46f9df19dcf6..e646e9e579ba8f90dbe1d2f891cd836e2221dae9 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -1,5 +1,9 @@