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) { - 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 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 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/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)); config.addDefault("worlds.default." + path, Double.valueOf(dfl));
return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl)); return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl));
} }
+ +
+ // Yatopia start
+ public boolean tickEmptyHoppers = true; + public boolean tickEmptyHoppers = true;
+ public int fullHopperCooldown = 128; + public int fullHopperCooldown = 128;
+ private void hopperOptimizations() { + private void hopperOptimizations() {
@ -124,9 +125,9 @@ index fe7330fabe386966c2d203a190a00a785ea21be0..2cedf4d7aaefc064f5730015c41c1f51
+ +
+ public boolean fastFeatureSearchDontLoad = false; + public boolean fastFeatureSearchDontLoad = false;
+ private void fastFeatureSearchDontLoad() { + 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 int c;
- private TileEntityShulkerBox.AnimationPhase i; - private TileEntityShulkerBox.AnimationPhase i;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java 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 --- a/src/main/java/net/minecraft/server/World.java
+++ b/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 { @@ -97,6 +97,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@ -606,15 +607,7 @@ index 9ae62bd4a6742eb77082867da6edb94c29aa2d9b..197726bdfcb887a1daac1352726f33ef
this.generator = gen; this.generator = gen;
this.world = new CraftWorld((WorldServer) this, gen, env); this.world = new CraftWorld((WorldServer) this, gen, env);
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
@@ -641,6 +645,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { @@ -678,6 +682,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 {
} }
@ -886,18 +879,10 @@ index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java 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 --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -138,6 +138,7 @@ public class Main { @@ -154,6 +154,30 @@ 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 {
.describedAs("Yml file"); .describedAs("Yml file");
// Purpur end // 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 diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..523e3b50d535e91afe8b14fdb53966da030963dc index 0000000000000000000000000000000000000000..dfa51d6f170ec4fb010dce909c3fccb6c726deb4
--- /dev/null --- /dev/null
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
@@ -0,0 +1,20 @@ @@ -0,0 +1,96 @@
+package dev.tr7zw.yatopia; +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 javax.annotation.Nonnull;
+ +
+import com.destroystokyo.paper.util.VersionFetcher; +import com.destroystokyo.paper.util.VersionFetcher;
+import javax.annotation.Nullable;
+ +
+public class YatopiaVersionFetcher implements VersionFetcher { +public class YatopiaVersionFetcher implements VersionFetcher {
+ +
+ private static final String GITHUB_BRANCH_NAME = "ver/1.16.1";
+
+ @Override + @Override
+ public long getCacheTime() { + public long getCacheTime() {
+ return Long.MAX_VALUE; + return Long.MAX_VALUE;
@ -38,7 +51,70 @@ index 0000000000000000000000000000000000000000..523e3b50d535e91afe8b14fdb53966da
+ @Nonnull + @Nonnull
+ @Override + @Override
+ public String getVersionMessage(@Nonnull String serverVersion) { + 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(); Properties properties = new Properties();
if (stream != null) { 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 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 --- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
+++ b/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; @@ -185,13 +185,24 @@ public class CraftPlayerProfile implements PlayerProfile {
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;
@@ -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); boolean isCompleteFromCache = this.completeFromCache(true, onlineMode);
if (onlineMode && (!isCompleteFromCache || textures && !hasTextures())) { if (onlineMode && (!isCompleteFromCache || textures && !hasTextures())) {
- GameProfile result = server.getMinecraftSessionService().fillProfileProperties(profile, true); - GameProfile result = server.getMinecraftSessionService().fillProfileProperties(profile, true);
- if (result != null) { - if (result != null) {
- copyProfileProperties(result, this.profile, true); - 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()) { - if (this.profile.isComplete()) {
- server.getUserCache().saveProfile(this.profile); - 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()); 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 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 --- a/src/main/java/net/minecraft/server/TileEntitySkull.java
+++ b/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; @@ -77,7 +77,18 @@ public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Pa
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
if ( property == null ) if ( property == null )
{ {
- profile = TileEntitySkull.sessionService.fillProfileProperties( profile, true ); + // Yatopia start
+ // Yatopia start + dev.tr7zw.yatopia.events.GameProfileLookupEvent event =
+ GameProfileLookupEvent event = new GameProfileLookupEvent(!Bukkit.isPrimaryThread(), profile.getId(), profile.getName()); + new dev.tr7zw.yatopia.events.GameProfileLookupEvent(
+ Bukkit.getServer().getPluginManager().callEvent(event); + !org.bukkit.Bukkit.isPrimaryThread(), profile.getId(), profile.getName());
+ if (event.getGameProfile() != null) { + org.bukkit.Bukkit.getPluginManager().callEvent(event);
+ profile = event.getGameProfile(); + GameProfile eventProfile = event.getGameProfile();
+ } else { + if (eventProfile != null) {
+ profile = TileEntitySkull.sessionService.fillProfileProperties( profile, true ); + profile = eventProfile;
+ } + } else {
+ // Yatopia end profile = TileEntitySkull.sessionService.fillProfileProperties( profile, true );
+ }
+ // Yatopia end
} }
} }

View File

@ -18,34 +18,30 @@ index 88513b8830ea666ddf831771680b6e76e7cf95f0..6a110318441a16cc3ff7dfa236476827
new TimingsExport(listeners, parent, history).start(); 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 diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e9925490f index 0000000000000000000000000000000000000000..119c3b693370ab8753791a0396789c8971a05c9b
--- /dev/null --- /dev/null
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java
@@ -0,0 +1,129 @@ @@ -0,0 +1,126 @@
+package dev.tr7zw.yatopia; +package dev.tr7zw.yatopia;
+ +
+import com.google.common.base.Preconditions;
+import java.io.File; +import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays; +import java.util.Arrays;
+import java.util.Collection; +import java.util.Collection;
+import java.util.Collections; +import java.util.Collections;
+import java.util.Iterator;
+import java.util.List; +import java.util.List;
+import java.util.Locale; +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.Bukkit;
+import org.bukkit.ChatColor; +import org.bukkit.ChatColor;
+import org.bukkit.Location; +import org.bukkit.Location;
+import org.bukkit.command.Command; +import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender; +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 class YatopiaCommand extends Command {
+ +
+ public YatopiaCommand(String name) { + public YatopiaCommand(String name) {
@ -57,14 +53,15 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
+ +
+ @Override + @Override
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException { + 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 getListMatchingLast(args, "help", "info", "reload", "version");
+ }
+ return Collections.emptyList(); + return Collections.emptyList();
+ } + }
+ +
+ // Code from Mojang - copyright them + // Code from Mojang - copyright them
+ public static List<String> getListMatchingLast(String[] args, String... matches) { + 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) { + public static boolean matches(String s, String s1) {
@ -73,27 +70,27 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
+ +
+ public static List<String> getListMatchingLast(String[] strings, Collection<?> collection) { + public static List<String> getListMatchingLast(String[] strings, Collection<?> collection) {
+ String last = strings[strings.length - 1]; + String last = strings[strings.length - 1];
+ ArrayList<String> results = Lists.newArrayList(); + List<String> results = Lists.newArrayList();
+ +
+ if (!collection.isEmpty()) { + if (!collection.isEmpty()) {
+ Iterator iterator = Iterables.transform(collection, Functions.toStringFunction()).iterator(); + Function<Object, String> toStringFunction = (o) -> {
+ + Preconditions.checkNotNull(o);
+ while (iterator.hasNext()) { + return o.toString();
+ String s1 = (String) iterator.next(); + };
+ + for (Object c : collection) {
+ if (matches(last, s1)) { + String value = toStringFunction.apply(c);
+ results.add(s1); + if (matches(last, value)) {
+ results.add(value);
+ } + }
+ } + }
+ +
+ if (results.isEmpty()) { + if (results.isEmpty()) {
+ iterator = collection.iterator(); + for (Object c : collection) {
+ + if (c instanceof MinecraftKey) {
+ while (iterator.hasNext()) { + MinecraftKey key = (MinecraftKey) c;
+ Object object = iterator.next(); + if (matches(last, key.getKey())) {
+ + results.add(key.toString());
+ if (object instanceof MinecraftKey && matches(last, ((MinecraftKey) object).getKey())) { + }
+ results.add(String.valueOf(object));
+ } + }
+ } + }
+ } + }
@ -114,7 +111,7 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
+ +
+ switch (args[0].toLowerCase(Locale.ENGLISH)) { + switch (args[0].toLowerCase(Locale.ENGLISH)) {
+ case "info": + case "info":
+ doInfo(sender); + doInfo(sender);
+ break; + break;
+ case "reload": + case "reload":
+ doReload(sender); + doReload(sender);
@ -154,7 +151,7 @@ index 0000000000000000000000000000000000000000..eca581513324401e1c6b3e818ba9ea6e
\ No newline at end of file \ 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 diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c9bf7fe4e index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b467f6293cc
--- /dev/null --- /dev/null
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -0,0 +1,210 @@ @@ -0,0 +1,210 @@
@ -184,7 +181,7 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+ +
+public class YatopiaConfig { +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" + 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" + + "Yatopia contains many breaking changes and settings, so know what you are doing!\n"
+ + "You have been warned!\n"; + + "You have been warned!\n";
@ -298,7 +295,7 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+ switch (unit) { + switch (unit) {
+ case 'd': num *= (double) 60*60*24; break; + case 'd': num *= (double) 60*60*24; break;
+ case 'h': num *= (double) 60*60; break; + case 'h': num *= (double) 60*60; break;
+ case 'm': num *= (double) 60; break; + case 'm': num *= 60; break;
+ default: case 's': break; + default: case 's': break;
+ } + }
+ return (int) num; + return (int) num;
@ -347,9 +344,9 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+ return config.getInt(path, config.getInt(path)); + 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); + 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) { + private static String getString(String path, String def) {
@ -359,12 +356,12 @@ index 0000000000000000000000000000000000000000..556cf9f17501f13a19a05bf804edcb9c
+ +
+ public static boolean disableEntityStuckChecks = false; + public static boolean disableEntityStuckChecks = false;
+ private static void disableEntityStuckChecks() { + private static void disableEntityStuckChecks() {
+ disableEntityStuckChecks = getBoolean("settings.disableEntityStuckChecks", false); + disableEntityStuckChecks = getBoolean("settings.disableEntityStuckChecks", false);
+ } + }
+ +
+ public static boolean disableEntityCollisionboxes = false; + public static boolean disableEntityCollisionboxes = false;
+ private static void disableEntityCollisionboxes() { + 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.setAllowFlight(dedicatedserverproperties.allowFlight);
this.setResourcePack(dedicatedserverproperties.resourcePack, this.aY()); 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 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 --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/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 @@ -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(); VoxelShape voxelshape = this.world.getWorldBorder().c();
Stream<VoxelShape> stream = !this.world.getWorldBorder().isInBounds(axisalignedbb) ? Stream.empty() : Stream.of(voxelshape); // Paper 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 = 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; return true;
}); });
StreamAccumulator<VoxelShape> streamaccumulator = new StreamAccumulator<>(Stream.concat(stream1, stream)); StreamAccumulator<VoxelShape> streamaccumulator = new StreamAccumulator<>(Stream.concat(stream1, stream));
@ -435,10 +432,10 @@ index 856e0ba3cfe6225d9928cb99b2d7a00a8fcd6a03..6f4c1bbf39af205ad15318eac667117d
world.worldDataServer.setDifficulty(config.difficulty); world.worldDataServer.setDifficulty(config.difficulty);
world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); 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 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 --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/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"); .describedAs("Yml file");
// Rainforest end // 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> 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 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 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/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 { @@ -125,6 +125,37 @@ public final class OrigamiConfig {
fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", fastFeatureSearchDontLoad); private void fastFeatureSearchDontLoad() {
fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false);
} }
+
+ // Yatopia start
+ public boolean playerCollisions = true; + public boolean playerCollisions = true;
+ public boolean animalCollisions = true; + public boolean animalCollisions = true;
+ public boolean ambientCollisions = true; + public boolean ambientCollisions = true;
@ -52,12 +52,9 @@ index 2cedf4d7aaefc064f5730015c41c1f5102bc747d..bdeb72c04831209466742b9fb6747ebe
+ && pillagerCollisions && ironGolemCollisions && miscCollisions && itemCollisions + && pillagerCollisions && ironGolemCollisions && miscCollisions && itemCollisions
+ && waterCreatureCollisions && waterAmbientCollisions; + && 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 diff --git a/src/main/java/dev/tr7zw/yatopia/EntityFilter.java b/src/main/java/dev/tr7zw/yatopia/EntityFilter.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..e6617833a7aea4803b78bc55b633fac9698688bd 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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -207,4 +207,8 @@ public class YatopiaConfig { @@ -207,4 +207,8 @@ public class YatopiaConfig {
disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false); disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false);
} }
+ public static int pistonPushLimit = 12; + 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 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 --- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
+++ b/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; @@ -50,6 +50,7 @@ public class AdvancementDataPlayer {
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 {
@Nullable @Nullable
private Advancement l; private Advancement l;
private boolean m = true; 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 // Paper start - fix advancement data player leakage
final Map<CriterionTriggerAbstract, Set<CriterionTrigger.a>> criterionData = Maps.newIdentityHashMap(); 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()); jsonelement.getAsJsonObject().addProperty("DataVersion", SharedConstants.getGameVersion().getWorldVersion());
+ // Yatopia start + // Yatopia start - replace whole logic
+ String gson = null; + 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 { try {
- FileOutputStream fileoutputstream = new FileOutputStream(this.f); FileOutputStream fileoutputstream = new FileOutputStream(this.f);
- Throwable throwable = null; Throwable throwable = null;
- @@ -275,6 +285,8 @@ public class AdvancementDataPlayer {
- try { } catch (IOException ioexception) {
- OutputStreamWriter outputstreamwriter = new OutputStreamWriter(fileoutputstream, Charsets.UTF_8.newEncoder()); AdvancementDataPlayer.LOGGER.error("Couldn't save player advancements to {}", this.f, ioexception);
- 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);
+ }
+ });
} }
+ */
+ // Yatopia end + // Yatopia end
} }
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java 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 --- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/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 + // Yatopia start
+ private NBTTagList inventorySnapshot = null; + private NBTTagList inventorySnapshot = null;
+ private NBTTagList enderchestSnapshot = null; + private NBTTagList enderchestSnapshot = null;
+
+
+ public void takeInventorySnapshot() { + public void takeInventorySnapshot() {
+ inventorySnapshot = this.inventory.a(new NBTTagList()); + inventorySnapshot = this.inventory.a(new NBTTagList());
+ enderchestSnapshot = this.enderChest.g(); + enderchestSnapshot = this.enderChest.g();
+ } + }
+
+ // Yatopia end + // Yatopia end
+ +
@Override @Override
@ -166,7 +67,7 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..3966bf7160ef5a7ec6944397ffbf51f5
nbttagcompound.setInt("SelectedItemSlot", this.inventory.itemInHandIndex); nbttagcompound.setInt("SelectedItemSlot", this.inventory.itemInHandIndex);
nbttagcompound.setShort("SleepTimer", (short) this.sleepTicks); nbttagcompound.setShort("SleepTimer", (short) this.sleepTicks);
nbttagcompound.setFloat("XpP", this.exp); 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()); nbttagcompound.setInt("Score", this.getScore());
this.foodData.b(nbttagcompound); this.foodData.b(nbttagcompound);
this.abilities.a(nbttagcompound); this.abilities.a(nbttagcompound);
@ -176,37 +77,29 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..3966bf7160ef5a7ec6944397ffbf51f5
nbttagcompound.set("ShoulderEntityLeft", this.getShoulderEntityLeft()); 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 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 --- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/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; @@ -1260,6 +1260,28 @@ public abstract class PlayerList {
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 {
if (team != null) scoreboard.removeTeam(team); if (team != null) scoreboard.removeTeam(team);
} }
// Paper end // Paper end
+ +
+ // Yatopia start - make sure all saves are done + // Yatopia start - make sure all saves are done
+ try { + try {
+ ((WorldNBTStorage)playerFileData).saveThread.shutdown(); + playerFileData.saveThread.shutdown();
+ boolean done = ((WorldNBTStorage)playerFileData).saveThread.awaitTermination(60, TimeUnit.SECONDS); + boolean done = playerFileData.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS);
+ if(!done) { + if (!done) {
+ LOGGER.error("Players did not save completly!"); + LOGGER.error("Players did not save completly!");
+ } + }
+ ServerStatisticManager.saveThread.shutdown(); + ServerStatisticManager.saveThread.shutdown();
+ done = ServerStatisticManager.saveThread.awaitTermination(60, TimeUnit.SECONDS); + done = ServerStatisticManager.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS);
+ if(!done) { + if (!done) {
+ LOGGER.error("Stats did not save completly!"); + LOGGER.error("Stats did not save completly!");
+ } + }
+ AdvancementDataPlayer.saveThread.shutdown(); + AdvancementDataPlayer.saveThread.shutdown();
+ done = AdvancementDataPlayer.saveThread.awaitTermination(60, TimeUnit.SECONDS); + done = AdvancementDataPlayer.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS);
+ if(!done) { + if (!done) {
+ LOGGER.error("Advancements did not save completly!"); + LOGGER.error("Advancements did not save completly!");
+ } + }
+ } catch (InterruptedException e) { + } catch (InterruptedException e) {
@ -216,7 +109,7 @@ index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..c10a1d15bcfe0cb1c2ff6ee7f2881bc2
} }
// Paper end // 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 file = this.server.a(SavedFile.STATS).toFile();
File file1 = new File(file, uuid + ".json"); File file1 = new File(file, uuid + ".json");
@ -233,45 +126,39 @@ index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..c10a1d15bcfe0cb1c2ff6ee7f2881bc2
serverstatisticmanager = new ServerStatisticManager(this.server, file1); serverstatisticmanager = new ServerStatisticManager(this.server, file1);
// this.o.put(uuid, serverstatisticmanager); // CraftBukkit // 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 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 --- a/src/main/java/net/minecraft/server/ServerStatisticManager.java
+++ b/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.Map.Entry;
import java.util.Optional; import java.util.Optional;
import java.util.Set; 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.LogManager;
import org.apache.logging.log4j.Logger; 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 File d;
private final Set<Statistic<?>> e = Sets.newHashSet(); private final Set<Statistic<?>> e = Sets.newHashSet();
private int f = -300; 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) { public ServerStatisticManager(MinecraftServer minecraftserver, File file) {
this.c = minecraftserver; this.c = minecraftserver;
@@ -40,7 +45,9 @@ public class ServerStatisticManager extends StatisticManager { @@ -41,6 +43,7 @@ public class ServerStatisticManager extends StatisticManager {
Statistic<MinecraftKey> wrapper = StatisticList.CUSTOM.b( entry.getKey() );
this.a.put( wrapper, entry.getValue().intValue() ); this.a.put( wrapper, entry.getValue().intValue() );
} }
- // Spigot end // Spigot end
+ // Spigot ends + saveThread.submit(() -> { // Yatopia
+ // Yatopia start
+ saveThread.submit(() -> {
if (file.isFile()) { if (file.isFile()) {
try { try {
this.a(minecraftserver.getDataFixer(), org.apache.commons.io.FileUtils.readFileToString(file)); 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); ServerStatisticManager.LOGGER.error("Couldn't parse statistics file {}", file, jsonparseexception);
} }
} }
- -
+ }); + }); // Yatopia
} }
public void save() { public void save() {
@ -291,7 +178,7 @@ index 18725272f920eafb655de8b923a8a85dbdc704cf..5f222d8b90951c61e77ab7032f872877
} }
@Override @Override
@@ -111,7 +122,7 @@ public class ServerStatisticManager extends StatisticManager { @@ -111,7 +118,7 @@ public class ServerStatisticManager extends StatisticManager {
if (nbttagcompound2.hasKeyOfType(s2, 99)) { if (nbttagcompound2.hasKeyOfType(s2, 99)) {
SystemUtils.a(this.a(statisticwrapper, s2), (statistic) -> { 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); 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 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 --- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
+++ b/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; import org.apache.logging.log4j.Logger;
-
// CraftBukkit start -// CraftBukkit start
+import java.util.UUID;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.entity.CraftPlayer;
// CraftBukkit end // CraftBukkit end
@@ -19,6 +23,7 @@ public class WorldNBTStorage { @@ -19,6 +17,7 @@ public class WorldNBTStorage {
private static final Logger LOGGER = LogManager.getLogger(); private static final Logger LOGGER = LogManager.getLogger();
private final File playerDir; private final File playerDir;
protected final DataFixer a; 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) { public WorldNBTStorage(Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer) {
this.a = datafixer; this.a = datafixer;
@@ -29,14 +34,22 @@ public class WorldNBTStorage { @@ -28,11 +27,13 @@ public class WorldNBTStorage {
public void save(EntityHuman entityhuman) { public void save(EntityHuman entityhuman) {
if(!com.destroystokyo.paper.PaperConfig.savePlayerData) return; // Paper - Make player data saving configurable if(!com.destroystokyo.paper.PaperConfig.savePlayerData) return; // Paper - Make player data saving configurable
+ entityhuman.takeInventorySnapshot(); // Yatopia
+ saveThread.submit(() -> { // Yatopia
try { try {
- NBTTagCompound nbttagcompound = entityhuman.save(new NBTTagCompound()); NBTTagCompound nbttagcompound = entityhuman.save(new NBTTagCompound());
- File file = File.createTempFile(entityhuman.getUniqueIDString() + "-", ".dat", this.playerDir); File file = File.createTempFile(entityhuman.getUniqueIDString() + "-", ".dat", this.playerDir);
-
- NBTCompressedStreamTools.a(nbttagcompound, (OutputStream) (new FileOutputStream(file))); - NBTCompressedStreamTools.a(nbttagcompound, (OutputStream) (new FileOutputStream(file)));
- File file1 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat"); + NBTCompressedStreamTools.a(nbttagcompound, new FileOutputStream(file));
- File file2 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat_old"); 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 @@ -40,6 +41,7 @@ public class WorldNBTStorage {
+ 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
} catch (Exception exception) { } catch (Exception exception) {
WorldNBTStorage.LOGGER.error("Failed to save player data for {}", entityhuman.getName(), exception); // Paper 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) 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 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 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
@@ -1,7 +1,8 @@ @@ -27,7 +27,7 @@ public class PathfinderGoalSelector {
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 {
} }
}; };
private final Map<PathfinderGoal.Type, PathfinderGoalWrapped> c = new EnumMap(PathfinderGoal.Type.class); 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 = 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 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 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 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) 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 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 --- a/src/main/java/net/minecraft/server/PathfinderNormal.java
+++ b/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; @@ -10,6 +10,11 @@ import javax.annotation.Nullable;
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;
public class PathfinderNormal extends PathfinderAbstract { public class PathfinderNormal extends PathfinderAbstract {
+ // Yatopia start + // Yatopia start - this is not thread safe!
+ + private static final it.unimi.dsi.fastutil.objects.Reference2ReferenceMap<IBlockData, PathType> commonTypes =
+ // This is not thread-safe! + new it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap<>();
+ private static final Reference2ReferenceMap<IBlockData, PathType> commonTypes = new Reference2ReferenceOpenHashMap<>();
+ // Yatopia end + // Yatopia end
+ +
protected float j; protected float j;
private final Long2ObjectMap<PathType> k = new Long2ObjectOpenHashMap(); private final Long2ObjectMap<PathType> k = new Long2ObjectOpenHashMap();
private final Object2BooleanMap<AxisAlignedBB> l = new Object2BooleanOpenHashMap(); 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) { protected static PathType b(IBlockAccess iblockaccess, BlockPosition blockposition) {
IBlockData iblockdata = iblockaccess.getTypeIfLoaded(blockposition); // Paper IBlockData iblockdata = iblockaccess.getTypeIfLoaded(blockposition); // Paper
if (iblockdata == null) return PathType.BLOCKED; // Paper if (iblockdata == null) return PathType.BLOCKED; // Paper
@ -84,7 +72,7 @@ index ec55785af2b432b692d3a3bf4298ffb32489bf3b..279ca87d8826ea2696ffc08d4b52c55a
return PathType.DAMAGE_CACTUS; return PathType.DAMAGE_CACTUS;
} else if (iblockdata.a(Blocks.SWEET_BERRY_BUSH)) { } else if (iblockdata.a(Blocks.SWEET_BERRY_BUSH)) {
return PathType.DAMAGE_OTHER; return PathType.DAMAGE_OTHER;
@@ -540,7 +582,10 @@ public class PathfinderNormal extends PathfinderAbstract { @@ -540,7 +576,10 @@ public class PathfinderNormal extends PathfinderAbstract {
} else { } else {
Fluid fluid = iblockdata.getFluid(); // Tuinity - remove another getType call 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 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 new file mode 100644
index 0000000000000000000000000000000000000000..c2c19a6fbfa2a4aba21aa71789071c69a6246556 index 0000000000000000000000000000000000000000..3079549f466a350223c3ee11466432bf3dc4c5b6
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,168 @@ @@ -0,0 +1,171 @@
+package me.jellysquid.mods.lithium.common.util.collections; +package me.jellysquid.mods.lithium.common.util.collections;
+ +
+import it.unimi.dsi.fastutil.objects.ObjectArraySet; +import java.util.Collection;
+ +import java.util.HashSet;
+import java.util.*; +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)}. + * 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> { +public class HashedList<T> implements List<T> {
+ private final List<T> list; + private final List<T> list;
@ -177,28 +180,20 @@ index 0000000000000000000000000000000000000000..c2c19a6fbfa2a4aba21aa71789071c69
+ } + }
+ +
+ public static <T> HashedList<T> wrapper(List<T> list) { + 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 \ 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 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 --- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/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; @@ -139,7 +139,7 @@ public class BiomeBase {
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 {
for (j = 0; j < i; ++j) { for (j = 0; j < i; ++j) {
EnumCreatureType enumcreaturetype = aenumcreaturetype[j]; EnumCreatureType enumcreaturetype = aenumcreaturetype[j];
- this.v.put(enumcreaturetype, new MobList()); // Paper - 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 { } 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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -211,4 +211,9 @@ public class YatopiaConfig { @@ -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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -216,4 +216,13 @@ public class YatopiaConfig { @@ -216,4 +216,13 @@ public class YatopiaConfig {
@ -24,7 +24,7 @@ index dd9206a70e85507fb538d2b59d97478db57df7b8..02ef2cbc0599461a1c693ef71d2310bb
} }
\ No newline at end of file \ 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 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 --- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/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; @@ -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 it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import java.util.*; 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 { public class EntityVillager extends EntityVillagerAbstract implements ReputationHandler, VillagerDataHolder {
+ //Yatopia + 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 boolean simplerVillagerBehavior = YatopiaConfig.simplerVillagerBehavior; //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); 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); 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}); 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) { public EntityVillager(EntityTypes<? extends EntityVillager> entitytypes, World world, VillagerType villagertype) {
super(entitytypes, world); super(entitytypes, world);
this.bF = new Reputation(); this.bF = new Reputation();
+ if(!simplerVillagerBehavior) { + if (!simplerVillagerBehavior) {
((Navigation) this.getNavigation()).a(true); ((Navigation) this.getNavigation()).a(true);
this.getNavigation().d(true); this.getNavigation().d(true);
+ }else { + } else {
+ initPathfinder(); + initPathfinder();
+ } + }
this.setCanPickupLoot(true); this.setCanPickupLoot(true);
@ -63,9 +62,9 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
+ +
+ @Override + @Override
+ protected void initPathfinder() { + protected void initPathfinder() {
+ if(!simplerVillagerBehavior)return; + if (!simplerVillagerBehavior) return;
+ this.goalSelector.a(0, new PathfinderGoalFloat(this)); + 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) -> { + 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(); + return !this.world.isDay() && !entityvillagertrader.isInvisible();
+ })); + }));
@ -95,7 +94,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
@Override @Override
public BehaviorController<EntityVillager> getBehaviorController() { 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 @Override
protected BehaviorController<?> a(Dynamic<?> dynamic) { protected BehaviorController<?> a(Dynamic<?> dynamic) {
@ -103,7 +102,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
BehaviorController<EntityVillager> behaviorcontroller = this.cJ().a(dynamic); BehaviorController<EntityVillager> behaviorcontroller = this.cJ().a(dynamic);
this.a(behaviorcontroller); 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(); super.inactiveTick();
} }
// Spigot End // Spigot End
@ -127,16 +126,16 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
+ default: return VillagerProfession.FARMER; + default: return VillagerProfession.FARMER;
+ } + }
+ } + }
+ + // Yatopia end
+// Yatopia end
@Override @Override
protected void mobTick() { mobTick(false); } protected void mobTick() { mobTick(false); }
protected void mobTick(boolean inactive) { protected void mobTick(boolean inactive) {
+ // Yatopia start + // Yatopia start
+ if(simplerVillagerBehavior && this.getVillagerData().getProfession() == VillagerProfession.NONE) + if (simplerVillagerBehavior && this.getVillagerData().getProfession() == VillagerProfession.NONE) {
+ this.setVillagerData(this.getVillagerData().withProfession(getRandomProfession())); + this.setVillagerData(this.getVillagerData().withProfession(getRandomProfession()));
+ if(simplerVillagerBehavior) { + }
+ if (simplerVillagerBehavior) {
+ if (canRefresh()) { + if (canRefresh()) {
+ restUses(); + restUses();
+ } + }
@ -151,7 +150,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper
if (this.bM) { if (this.bM) {
this.bM = false; 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; return true;
} }
@ -160,7 +159,7 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
public void fb() { public void fb() {
this.fp(); this.fp();
Iterator iterator = this.getOffers().iterator(); 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; return this.bK == 0 || this.bK < 2 && this.world.getTime() > this.bJ + 2400L;
} }
@ -169,19 +168,19 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..2fb7f23275acad54d2f5e2ecd57d5bbb
public boolean fc() { public boolean fc() {
long i = this.bJ + 12000L; long i = this.bJ + 12000L;
long j = this.world.getTime(); 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) { private void a(Entity entity) {
+ if(simplerVillagerBehavior)return; // Yatopia + if (simplerVillagerBehavior)return; // Yatopia
if (this.world instanceof WorldServer) { if (this.world instanceof WorldServer) {
Optional<List<EntityLiving>> optional = this.bn.getMemory(MemoryModuleType.VISIBLE_MOBS); 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) { public void a(MemoryModuleType<GlobalPos> memorymoduletype) {
+ if(simplerVillagerBehavior)return; // Yatopia + if (simplerVillagerBehavior)return; // Yatopia
if (this.world instanceof WorldServer) { if (this.world instanceof WorldServer) {
MinecraftServer minecraftserver = ((WorldServer) this.world).getMinecraftServer(); 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 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 --- a/src/main/java/net/minecraft/server/CraftingManager.java
+++ b/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(); }).findFirst();
c0.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found c0.setCurrentRecipe(recipe.orElse(null)); // CraftBukkit - Clear recipe when no recipe is found
// CraftBukkit end // CraftBukkit end
- return recipe; - return recipe;
+ // Yatopia start + // Yatopia start
+ if(c0.getCurrentRecipe() != null) { + if (c0.getCurrentRecipe() != null) {
+ Optional<T> optional = recipes.a(c0.getCurrentRecipe(), world, c0); + Optional<T> optional = recipes.a(c0.getCurrentRecipe(), world, c0);
+ if(optional.isPresent()) { + optional.ifPresent(c0::setCurrentRecipe);
+ c0.setCurrentRecipe(optional.get());
+ return optional; + return optional;
+ } + }
+ } + for (IRecipe<C> rep : this.a(recipes)) {
+ for(IRecipe<C> rep : this.a(recipes)) { + Optional<T> optional = recipes.a(rep, world, c0);
+ Optional<T> optional = recipes.a(rep, world, c0); + if(optional.isPresent()) {
+ if(optional.isPresent()) {
+ c0.setCurrentRecipe(optional.get()); + c0.setCurrentRecipe(optional.get());
+ return optional; + return optional;
+ } + }
+ } + }
+ c0.setCurrentRecipe(null); // CraftBukkit - Clear recipe when no recipe is found + c0.setCurrentRecipe(null); // CraftBukkit - Clear recipe when no recipe is found
+ return Optional.empty(); + return Optional.empty();
@ -35,24 +33,25 @@ index c2af174e639396ac70eb7b520fdd641b1d2c67e6..7de6e116a7e301754c637b68be39c30f
public <C extends IInventory, T extends IRecipe<C>> List<T> a(Recipes<T> recipes) { 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 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 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
+++ b/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; this.c = recipes;
} }
+ //Yatopia + private static Map<Item, Integer> cachedFuelMap = null; // Yatopia
+ private static Map<Item, Integer> cachedFuelMap = null;
+ +
public static Map<Item, Integer> f() { public static Map<Item, Integer> f() {
+ if(cachedFuelMap != null) { + // Yatopia start
+ return cachedFuelMap; // Yatopia + if(cachedFuelMap != null) {
+ } + return cachedFuelMap;
+ }
+ // Yatopia end
Map<Item, Integer> map = Maps.newLinkedHashMap(); Map<Item, Integer> map = Maps.newLinkedHashMap();
a(map, (IMaterial) Items.LAVA_BUCKET, 20000); 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.FLETCHING_TABLE, 300);
a(map, (IMaterial) Blocks.SMITHING_TABLE, 300); a(map, (IMaterial) Blocks.SMITHING_TABLE, 300);
a(map, (IMaterial) Blocks.COMPOSTER, 300); a(map, (IMaterial) Blocks.COMPOSTER, 300);
@ -60,12 +59,12 @@ index acc533ca8ad612cc439208f4adf6e3d3289c92c7..eded99b59beb7d6fe759b21fa7d30820
return map; 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; + private IRecipe cachedRecipe = null;
+ @Override + @Override
+ public IRecipe getCurrentRecipe() { + public IRecipe getCurrentRecipe() {
@ -73,10 +72,8 @@ index acc533ca8ad612cc439208f4adf6e3d3289c92c7..eded99b59beb7d6fe759b21fa7d30820
+ } + }
+ @Override + @Override
+ public void setCurrentRecipe(IRecipe recipe) { + public void setCurrentRecipe(IRecipe recipe) {
+ cachedRecipe = recipe; + cachedRecipe = recipe;
+ } + }
+
+
+ // Yatopia end + // 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 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 --- a/src/main/java/net/minecraft/server/BlockDropper.java
+++ b/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 { @@ -36,7 +36,7 @@ public class BlockDropper extends BlockDispenser {
@ -13,19 +13,19 @@ index 1ce89c28c2b54278dc8f1c17f2d0ccb743a27b34..1b360140b6161e9cae96752943d57420
if (!itemstack.isEmpty()) { if (!itemstack.isEmpty()) {
EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockDropper.FACING); 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));
+ IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection), false); + IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection), false); // Yatopia
ItemStack itemstack1; ItemStack itemstack1;
if (iinventory == null) { if (iinventory == null) {
diff --git a/src/main/java/net/minecraft/server/BlockHopper.java b/src/main/java/net/minecraft/server/BlockHopper.java 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 --- a/src/main/java/net/minecraft/server/BlockHopper.java
+++ b/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 { @@ -110,6 +110,12 @@ public class BlockHopper extends BlockTileEntity {
@Override @Override
public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) { public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) {
this.a(world, blockposition, iblockdata); this.a(world, blockposition, iblockdata);
+ //Yatopia start + // Yatopia start
+ TileEntity tileEntity = world.getTileEntity(blockposition); + TileEntity tileEntity = world.getTileEntity(blockposition);
+ if (tileEntity instanceof TileEntityHopper) { + if (tileEntity instanceof TileEntityHopper) {
+ ((TileEntityHopper)tileEntity).flushCaches(); + ((TileEntityHopper)tileEntity).flushCaches();
@ -35,7 +35,7 @@ index a29294fbc7cd6fcfff0df9eadd11de3bd7f1405e..7918382f26807f945dc7966b81c3c1e2
private void a(World world, BlockPosition blockposition, IBlockData iblockdata) { 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 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 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/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; @@ -2,6 +2,7 @@ package net.minecraft.server;
@ -46,54 +46,58 @@ index 3ff61141aede4b5a09bf83153222de0d14db5ad0..a5a8528db91c15afcf8c77d5e4727c8e
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; 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 @Nullable
private IInventory l() { private IInventory l() {
+ if(this.cachedPush != null) { + // Yatopia start
+ return this.cachedPush; + if(this.cachedPush != null) {
+ } + return this.cachedPush;
+ }
+ // Yatopia end
EnumDirection enumdirection = (EnumDirection) this.getBlock().get(BlockHopper.FACING); EnumDirection enumdirection = (EnumDirection) this.getBlock().get(BlockHopper.FACING);
- return b(this.getWorld(), this.position.shift(enumdirection)); - return b(this.getWorld(), this.position.shift(enumdirection));
+ IInventory tmp = b(this.getWorld(), this.position.shift(enumdirection), this.cachedPushAir); + IInventory tmp = b(this.getWorld(), this.position.shift(enumdirection), this.cachedPushAir);
+ if(tmp != null && !(tmp instanceof IWorldInventory) && !(tmp instanceof Entity)) { + // Yatopia start
+ this.cachedPush = tmp; + if (tmp != null && !(tmp instanceof IWorldInventory) && !(tmp instanceof Entity)) {
+ }else { + this.cachedPush = tmp;
+ if(tmp == null) { + } else {
+ this.cachedPushAir = true; + if(tmp == null) {
+ } + this.cachedPushAir = true;
+ return tmp; + }
+ return tmp;
+ } + }
+ if(this.cachedPush == null) { + if (this.cachedPush == null) {
+ this.cachedPushAir = true; + this.cachedPushAir = true;
+ } + }
+ // Yatopia end
+ return this.cachedPush; + return this.cachedPush;
} }
@Nullable @Nullable
public static IInventory b(IHopper ihopper) { public static IInventory b(IHopper ihopper) {
- return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A()); - return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A());
+ //Yatopia start + // Yatopia start
+ if(ihopper instanceof TileEntityHopper) { + if (ihopper instanceof TileEntityHopper) {
+ TileEntityHopper hopper = (TileEntityHopper) ihopper; + TileEntityHopper hopper = (TileEntityHopper) ihopper;
+ if(hopper.cachedAbove != null) { + if (hopper.cachedAbove != null) {
+ return hopper.cachedAbove; + return hopper.cachedAbove;
+ } + }
+ IInventory inv = a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), hopper.cachedPullAir); + IInventory inv = a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), hopper.cachedPullAir);
+ hopper.cachedAbove = inv; + hopper.cachedAbove = inv;
+ if(hopper.cachedAbove == null) { + if (hopper.cachedAbove == null) {
+ hopper.cachedPullAir = true; + hopper.cachedPullAir = true;
+ } + }
+ return inv; + return inv;
+ } else { + } else {
+ return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), false); + return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), false);
+ } + }
+ //Yatopia end + // Yatopia end
} }
public static List<EntityItem> c(IHopper ihopper) { 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 @Nullable
@ -109,41 +113,39 @@ index 3ff61141aede4b5a09bf83153222de0d14db5ad0..a5a8528db91c15afcf8c77d5e4727c8e
- Object object = null; - 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 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 + public static IInventory a(World world, double d0, double d1, double d2, boolean optimizeEntities, boolean skipBlockCheck) { // Yatopia // Paper
+ Object object = null; + Object object = null; // Yatopia
+ if(!skipBlockCheck) { // Yatopia + if(!skipBlockCheck) { // Yatopia
BlockPosition blockposition = new BlockPosition(d0, d1, d2); BlockPosition blockposition = new BlockPosition(d0, d1, d2);
if ( !world.isLoaded( blockposition ) ) return null; // Spigot if ( !world.isLoaded( blockposition ) ) return null; // Spigot
IBlockData iblockdata = world.getType(blockposition); 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 || !org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding())) { // Paper
+ if (object == null && (!optimizeEntities || true/*!org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding()*/)) { // Yatopia // 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); 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()) { 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) { protected Container createContainer(int i, PlayerInventory playerinventory) {
return new ContainerHopper(i, playerinventory, this); return new ContainerHopper(i, playerinventory, this);
} }
+ +
+ // Yatopia start + // Yatopia start
+
+ private IInventory cachedAbove = null; + private IInventory cachedAbove = null;
+ private IInventory cachedPush = null; + private IInventory cachedPush = null;
+ private boolean cachedPushAir = false; + private boolean cachedPushAir = false;
+ private boolean cachedPullAir = false; + private boolean cachedPullAir = false;
+ +
+ public void flushCaches() { + public void flushCaches() {
+ cachedAbove = null; + cachedAbove = null;
+ cachedPush = null; + cachedPush = null;
+ cachedPushAir = false; + cachedPushAir = false;
+ cachedPullAir = false; + cachedPullAir = false;
+ } + }
+
+ // Yatopia end + // Yatopia end
+ +
} }

View File

@ -4,21 +4,8 @@ Date: Wed, 5 Aug 2020 08:08:44 -0500
Subject: [PATCH] Optimize TileEntity loading 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 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 --- a/src/main/java/net/minecraft/server/World.java
+++ b/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 { @@ -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 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 --- a/src/main/java/net/minecraft/server/EULA.java
+++ b/src/main/java/net/minecraft/server/EULA.java +++ b/src/main/java/net/minecraft/server/EULA.java
@@ -1,9 +1,11 @@ @@ -15,12 +15,25 @@ public class EULA {
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 {
public EULA(java.nio.file.Path java_nio_file_path) { public EULA(java.nio.file.Path java_nio_file_path) {
this.b = java_nio_file_path; this.b = java_nio_file_path;
- this.c = SharedConstants.d || this.b(); - this.c = SharedConstants.d || this.b();
+ this.c = SharedConstants.d || globalEula() || this.b(this.b); // Yatopia + 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() { - 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 + // Yatopia end
+ +
+ private boolean b(java.nio.file.Path path) { // Yatopia + 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) { 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 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 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/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 { @@ -20,6 +20,8 @@ public final class OrigamiConfig {
@ -79,19 +79,6 @@ index bdeb72c04831209466742b9fb6747ebefbe7ca48..0f9f9554b00e7bda2e1ec34bcca325d4
for (final Method method : clazz.getDeclaredMethods()) { for (final Method method : clazz.getDeclaredMethods()) {
if (method.getReturnType() != void.class || method.getParameterCount() != 0 || 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 diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index c3becefce8143f34ed2b1093dd22227b7309629c..b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27 100644 index c3becefce8143f34ed2b1093dd22227b7309629c..b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java --- a/src/main/java/net/minecraft/server/DedicatedServer.java
@ -106,15 +93,15 @@ index c3becefce8143f34ed2b1093dd22227b7309629c..b045cfc0e8ade9632cfde5cffe8fe93b
this.setPVP(dedicatedserverproperties.pvp); this.setPVP(dedicatedserverproperties.pvp);
this.setAllowFlight(dedicatedserverproperties.allowFlight); this.setAllowFlight(dedicatedserverproperties.allowFlight);
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java 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 --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/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 // Paper end
System.setProperty( "library.jansi.version", "Paper" ); // Paper - set meaningless jansi version to prevent git builds from crashing on Windows 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 + //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..."); System.out.println("Loading libraries, please wait...");
net.minecraft.server.Main.main(options); net.minecraft.server.Main.main(options);
} catch (Throwable t) { } 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 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 --- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/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; @@ -146,6 +146,7 @@ public abstract class JsonList<K, V extends JsonListEntry<K>> {
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>> {
} }
public void save() throws IOException { public void save() throws IOException {
@ -25,7 +16,7 @@ index 9213bfb78e92b838189161045e3945588251b486..6d7452d05c648cdee50b2077aec6f100
this.removeStaleEntries(); // Paper - remove expired values before saving this.removeStaleEntries(); // Paper - remove expired values before saving
JsonArray jsonarray = new JsonArray(); 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(); jsonlistentry.getClass();
return (JsonObject) SystemUtils.a(jsonobject, jsonlistentry::a); // CraftBukkit - decompile error return (JsonObject) SystemUtils.a(jsonobject, jsonlistentry::a); // CraftBukkit - decompile error
}).forEach(jsonarray::add); }).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 + }; // Akarin - Save json list async

View File

@ -149,19 +149,10 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1
+} +}
\ No newline at end of file \ 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 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 --- a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
+++ b/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; @@ -56,12 +56,13 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
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 {
private final NoiseGenerator t; private final NoiseGenerator t;
private final NoiseGeneratorOctaves u; private final NoiseGeneratorOctaves u;
@Nullable @Nullable
@ -172,20 +163,20 @@ index 45b771e4121f2ef27c67d5a5ba2dadcfc0f944e0..448745b9e499b86f3ce6938c0f0fb0fb
private final long w; private final long w;
protected final GeneratorSettingBase h; protected final GeneratorSettingBase h;
private final int x; 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) { public ChunkGeneratorAbstract(WorldChunkManager worldchunkmanager, long i, GeneratorSettingBase generatorsettingbase) {
this(worldchunkmanager, worldchunkmanager, i, 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 { } else {
this.v = null; 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 @Override
@@ -161,7 +164,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { @@ -161,7 +162,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
double d3; double d3;
if (this.v != null) { 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> 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 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 --- a/src/main/java/net/minecraft/server/DataWatcher.java
+++ b/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; @@ -26,6 +26,77 @@ public class DataWatcher {
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 {
private boolean f = true; private boolean f = true;
private boolean g; private boolean g;
@ -46,7 +38,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fd
+ // than 256 entries as per the vanilla limit + // than 256 entries as per the vanilla limit
+ int newSize = Math.min(k + GROW_FACTOR, 256); + 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 + // Update the storage
@ -98,7 +90,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fd
public DataWatcher(Entity entity) { public DataWatcher(Entity entity) {
this.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); DataWatcher.Item<T> datawatcher_item = new DataWatcher.Item<>(datawatcherobject, t0);
// this.lock.writeLock().lock(); // Spigot - not required // this.lock.writeLock().lock(); // Spigot - not required
@ -108,12 +100,12 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..d8147567b4dfdc48b86f6349fca084fd
this.f = false; this.f = false;
// this.lock.writeLock().unlock(); // Spigot - not required // 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) { public <T> T get(DataWatcherObject<T> datawatcherobject) {
- return this.b(datawatcherobject).b(); - return this.b(datawatcherobject).b();
+ return getEntry(datawatcherobject).b(); // Yatopia + return getEntry(datawatcherobject).b(); // Yatopia
+ //return this.b(datawatcherobject).b(); + //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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -225,4 +225,10 @@ public class YatopiaConfig { @@ -225,4 +225,10 @@ public class YatopiaConfig {
@ -15,30 +15,21 @@ index 16de5a03d7c182766052e118c2912c013e06c54c..c4ab51e3eb22917159e0803f54c16549
+ +
+ public static boolean fixFallDistance = false; + public static boolean fixFallDistance = false;
+ private static void fixFallDistance() { + private static void fixFallDistance() {
+ fixFallDistance = getBoolean("settings.fixFallDistance", false); + fixFallDistance = getBoolean("settings.fixFallDistance", false);
+ } + }
+ +
} }
\ No newline at end of file \ 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 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 --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/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; @@ -1266,6 +1266,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
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
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
} else if (d0 < 0.0D) { } else if (d0 < 0.0D) {
this.fallDistance = (float) ((double) this.fallDistance - d0); this.fallDistance = (float) ((double) this.fallDistance - d0);
+ }else if (d0 > 0.0D && YatopiaConfig.fixFallDistance) { // Yatopia + } else if (d0 > 0.0D && dev.tr7zw.yatopia.YatopiaConfig.fixFallDistance) { // Yatopia
+ this.fallDistance = 0.0F; + 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> 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 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 --- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/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 @@ -445,9 +445,9 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB
@ -14,10 +14,10 @@ index e6868e2b65e3c2bde7696272b242a47e7394e27f..c4c3ef500b9b8465644a0b7712f43ba3
@Override @Override
- public void c() { - public void c() {
+ public void tickAsync() { + public void tickAsync() { // Akarin - async pathfinding
if (!EntityBee.this.bJ.k()) { if (!EntityBee.this.bJ.k()) {
- super.c(); - super.c();
+ super.tickAsync(); + super.tickAsync(); // Akarin - async pathfinding
} }
} }
}; };
@ -48,7 +48,7 @@ index 681465d8a74831461dce4615d2d19c7ed46bc299..f04411a2a295d2a982dca5851ae76a80
if (!this.a(pathtype)) { if (!this.a(pathtype)) {
return false; return false;
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java 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 --- a/src/main/java/net/minecraft/server/NavigationAbstract.java
+++ b/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 { @@ -28,6 +28,15 @@ public abstract class NavigationAbstract {
@ -132,36 +132,25 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
} }
- public void c() { - public void c() {
+/* public void c() { +/* public void c() { // Yatopia
++this.e; ++this.e;
if (this.m) { if (this.m) {
this.j(); this.j();
@@ -238,7 +290,7 @@ public abstract class NavigationAbstract { @@ -256,9 +308,43 @@ 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 {
this.a.getControllerMove().a(vec3d.x, this.b.getType(blockposition.down()).isAir() ? vec3d.y : PathfinderNormal.a((IBlockAccess) this.b, blockposition), vec3d.z, this.d); 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
+ //Yatopia Start + // Yatopia start
+ public void c() { + public void c() {
+ this.tickAsync(); + this.tickAsync();
+ } }
+ //Yatopia End + // Yatopia end
+ // Akarin start - Async pathfinder, copied from above + // Akarin start - Async pathfinder, copied from above
+ public void tickAsync() { + public void tickAsync() {
+ ++this.e; + ++this.e;
+ this.doPathfindAsync(); + this.doPathfindAsync();
} + }
- protected void l() {
+ // This was copied from above partly with param + // This was copied from above partly with param
+ public void doTickAsync(PathEntity pathEntity) { + public void doTickAsync(PathEntity pathEntity) {
+ if (shouldContinuePathfind(pathEntity)) + if (shouldContinuePathfind(pathEntity))
@ -178,7 +167,8 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+ pathEntity.c(pathEntity.f() + 1); + pathEntity.c(pathEntity.f() + 1);
+ } + }
+ } + }
+
- protected void l() {
+ if (shouldContinuePathfind(pathEntity)) + if (shouldContinuePathfind(pathEntity))
+ return; + return;
+ //PacketDebug.a(this.b, this.a, pathEntity, this.l); + //PacketDebug.a(this.b, this.a, pathEntity, this.l);
@ -191,12 +181,12 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
Vec3D vec3d = this.b(); Vec3D vec3d = this.b();
this.l = this.a.getWidth() > 0.75F ? this.a.getWidth() / 2.0F : 0.75F - this.a.getWidth() / 2.0F; 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); this.a(vec3d);
- } - }
+ }*/ + }*/ // Akarin end
+ +
+ // Akarin start - Async pathfinder, copied from above with param + // Akarin start - Async pathfinder, copied from above with param
+ protected void applyPath(PathEntity pathEntity) { + protected void applyPath(PathEntity pathEntity) {
@ -208,18 +198,18 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+ double d1 = Math.abs(this.a.locY() - (double) baseblockposition.getY()); + double d1 = Math.abs(this.a.locY() - (double) baseblockposition.getY());
+ double d2 = Math.abs(this.a.locZ() - ((double) baseblockposition.getZ() + 0.5D)); + 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; + boolean flag = d0 < (double) this.l && d2 < (double) this.l && d1 < 1.0D;
+
+ if (flag || this.a.b(pathEntity.h().l) && this.b(vec3d)) { + if (flag || this.a.b(pathEntity.h().l) && this.b(vec3d)) {
+ pathEntity.c(pathEntity.f() + 1); + pathEntity.c(pathEntity.f() + 1);
+ } + }
+
+ this.applyPath0(pathEntity, vec3d); + this.applyPath0(pathEntity, vec3d);
+ } + }
+ // Akarin end + // Akarin end
private boolean b(Vec3D vec3d) { private boolean b(Vec3D vec3d) {
if (this.c.e() <= this.c.f() + 1) { if (this.c.e() <= this.c.f() + 1) {
return false; 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; + 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) { + if (this.k > 0.0D && (double) this.i > this.k * 3.0D) {
+ this.e(); + this.e();
+ this.o(); + this.o();
@ -253,13 +243,13 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..2dac507e9e0044a32ae54ea57eada0de
+ +
+ this.j = SystemUtils.getMonotonicMillis(); + this.j = SystemUtils.getMonotonicMillis();
+ } + }
+
+ } + }
+ // Akarin end + // Akarin end
private void e() { private void e() {
this.h = BaseBlockPosition.ZERO; this.h = BaseBlockPosition.ZERO;
this.i = 0L; this.i = 0L;
@@ -389,7 +526,11 @@ public abstract class NavigationAbstract { @@ -389,7 +525,11 @@ public abstract class NavigationAbstract {
public boolean r() { public boolean r() {
return this.o.e(); 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() if (this.c != null && !this.c.b() && this.c.e() != 0) { // Tuinity - diff on change - needed for isViableForPathRecalculationChecking()
PathPoint pathpoint = this.c.c(); 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 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 --- a/src/main/java/net/minecraft/server/NavigationFlying.java
+++ b/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 { @@ -28,7 +28,7 @@ public class NavigationFlying extends NavigationAbstract {
@ -281,7 +271,7 @@ index 0c33a0c9d59d79a39826b5ee14144604717ffebe..cf3f4c1a2a89cce0345566a62faa34ef
} }
- @Override - @Override
+/* @Override +/* @Override // Yatopia
public void c() { public void c() {
++this.e; ++this.e;
if (this.m) { if (this.m) {
@ -289,7 +279,7 @@ index 0c33a0c9d59d79a39826b5ee14144604717ffebe..cf3f4c1a2a89cce0345566a62faa34ef
this.a.getControllerMove().a(vec3d.x, vec3d.y, vec3d.z, this.d); this.a.getControllerMove().a(vec3d.x, vec3d.y, vec3d.z, this.d);
} }
} }
+ }*/ + }*/ // Yatopia
+ +
+ // This was copied from above partly with param + // This was copied from above partly with param
+ @Override + @Override

View File

@ -7,11 +7,11 @@ Ported to Yatopia and 1.16.1 by MrIvanPlays
Co-authored-by: MrIvanPlays <ivan@mrivanplays.com> 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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -231,4 +231,15 @@ public class YatopiaConfig { @@ -231,4 +231,15 @@ public class YatopiaConfig {
fixFallDistance = getBoolean("settings.fixFallDistance", false); fixFallDistance = getBoolean("settings.fixFallDistance", false);
} }
+ public static int maxPlayerAutoSavePerTick = 10; + public static int maxPlayerAutoSavePerTick = 10;
@ -62,10 +62,10 @@ index 26ee6e9219059c9f7175148e934d2adec2b336a0..f3e67e96bea9059aad60c896d7f376f7
// Paper start // Paper start
for (WorldServer world : getWorlds()) { for (WorldServer world : getWorlds()) {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java 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 --- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/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) { protected void savePlayerFile(EntityPlayer entityplayer) {
if (!entityplayer.getBukkitEntity().isPersistent()) return; // CraftBukkit 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) 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); this.playerFileData.save(entityplayer);
ServerStatisticManager serverstatisticmanager = (ServerStatisticManager) entityplayer.getStatisticManager(); // CraftBukkit 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() { public void savePlayers() {

View File

@ -587,22 +587,10 @@ index 26ddf92f86fccc2b2562f7abf4788d1ed6b73205..dfec5882598f09492e9a17de25774a4c
private static final GameProfile[] EMPTY_PROFILES = new GameProfile[0]; 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 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 --- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
+++ b/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; @@ -13,12 +13,7 @@ import org.spigotmc.SpigotConfig;
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;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -1050,7 +1038,7 @@ index 76593df295e5f462adcbc223d791316a849fffeb..2fb99e8626b962184854c2850d0507f7
import java.util.List; import java.util.List;
diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java 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 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java
+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java
@@ -1,12 +1,10 @@ @@ -1,12 +1,10 @@
@ -1087,46 +1075,8 @@ index e6617833a7aea4803b78bc55b633fac9698688bd..43def748a996fea8caf56ee58a3585da
import java.util.function.Predicate; 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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java
@@ -1,8 +1,11 @@ @@ -1,8 +1,11 @@
@ -1156,33 +1106,26 @@ index d20ed58b781462ea667f75a2ac99b78cb23e283c..f2acc0a5c24165e2e90f1a53107d2027
public static File CONFIG_FILE; 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 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 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java
+++ b/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; 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 { 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 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 index 167498cfab7aed0deb32232082ae06a123b7a039..a28486e5ad4a86bd02219f1db696d8049b6955bf 100644
--- a/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java --- a/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java
@ -1226,10 +1169,10 @@ index 315a03cf5e64264523ce95ce7b9ffe7c450e1e5b..9f48cfb84cd3fccc408d908db37d27f1
public class Advancement { public class Advancement {
diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java 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 --- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
+++ b/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.datafixers.DataFixer;
import com.mojang.serialization.Dynamic; import com.mojang.serialization.Dynamic;
import com.mojang.serialization.JsonOps; import com.mojang.serialization.JsonOps;
@ -1250,9 +1193,7 @@ index 5442c28c56f933c63bd611f579d0392876ecc2ef..2a2b7a1d6a2813740cc9aae6bc911cea
-import java.util.Map; -import java.util.Map;
+import java.util.*; +import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
-import java.util.Set; import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
-import javax.annotation.Nullable; -import javax.annotation.Nullable;
@ -1639,27 +1580,17 @@ index cedd2a26cd373c10835df104206defdc50405a62..eba9f9a401a40ac4ad964e8f9fffb973
import java.util.Optional; import java.util.Optional;
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java 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 --- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/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 com.mojang.serialization.codecs.RecordCodecBuilder;
import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap; 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.*;
-import java.util.function.Function; import java.util.function.Function;
-import java.util.stream.Collectors; 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 {
diff --git a/src/main/java/net/minecraft/server/BiomeStorage.java b/src/main/java/net/minecraft/server/BiomeStorage.java diff --git a/src/main/java/net/minecraft/server/BiomeStorage.java b/src/main/java/net/minecraft/server/BiomeStorage.java
index 49114864e3cd7ef48b827220939c5069d3b8ca3a..11b47ebc3a49927f4c704b111254b6b1e67dd1d0 100644 index 49114864e3cd7ef48b827220939c5069d3b8ca3a..11b47ebc3a49927f4c704b111254b6b1e67dd1d0 100644
--- a/src/main/java/net/minecraft/server/BiomeStorage.java --- a/src/main/java/net/minecraft/server/BiomeStorage.java
@ -2865,24 +2796,6 @@ index ee6726e5c664115417c6397aa153315c8eb835a9..43b80b6667839a2769c14508fcdef71d
public abstract class ChunkGenerator { 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 diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
index 46fc70bd9878ca089c446619f97b997c9bb27eec..eabc303195f6cc560a4c3ad33e07bcd3abb3bce7 100644 index 46fc70bd9878ca089c446619f97b997c9bb27eec..eabc303195f6cc560a4c3ad33e07bcd3abb3bce7 100644
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
@ -3439,7 +3352,7 @@ index 079304e8b1abb2c37febef536b1dd9f76e5ad47d..c0f2e44c6c54e22f32d5df6cbc9e9263
public class Convertable { public class Convertable {
diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java 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 --- a/src/main/java/net/minecraft/server/CraftingManager.java
+++ b/src/main/java/net/minecraft/server/CraftingManager.java +++ b/src/main/java/net/minecraft/server/CraftingManager.java
@@ -1,23 +1,16 @@ @@ -1,23 +1,16 @@
@ -3671,33 +3584,18 @@ index 52948a84b89554646c9ec1fd13d6d3c9e7cbf996..eada694a8e57284bdda477ccca2c2502
public class DataPaletteBlock<T> implements DataPaletteExpandable<T> { 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 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 --- a/src/main/java/net/minecraft/server/DataWatcher.java
+++ b/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; @@ -9,8 +9,6 @@ import java.util.ArrayList;
import com.google.common.collect.Maps; import java.util.Iterator;
import io.netty.handler.codec.DecoderException; import java.util.List;
import io.netty.handler.codec.EncoderException; import java.util.Map;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock;
-import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.logging.log4j.LogManager; 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 diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27..8974915ea2e0d2e831d2fb25a5402c439320965d 100644 index b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27..8974915ea2e0d2e831d2fb25a5402c439320965d 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java --- a/src/main/java/net/minecraft/server/DedicatedServer.java
@ -3902,27 +3800,23 @@ index ac546ff959510a2d0120c24c90bf13ff83873161..892be05e196ffed7c8bd59fff0cba89a
private static final Logger LOGGER = LogManager.getLogger(); 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 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 --- a/src/main/java/net/minecraft/server/EULA.java
+++ b/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; package net.minecraft.server;
+import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Logger;
+
import java.io.File;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.Properties; import java.util.Properties;
-import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.Logger;
-
public class EULA { 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 diff --git a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java b/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
index 176be2e4d0d23d3e7967b6e0e99d060a96b3d976..4d769a513216c56ae93944cd99d091fa3ad97e51 100644 index 176be2e4d0d23d3e7967b6e0e99d060a96b3d976..4d769a513216c56ae93944cd99d091fa3ad97e51 100644
--- a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java --- a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java
@ -3996,15 +3890,10 @@ index e2c1de7ab246f1b4c8add06c513afc2eca97d796..589f00d27255aa1b227fea7c19a27862
private static final Logger LOGGER = LogManager.getLogger(); 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 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 --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/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; @@ -5,6 +5,7 @@ import co.aikar.timings.Timing;
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.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; 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.Object2DoubleArrayMap;
import it.unimi.dsi.fastutil.objects.Object2DoubleMap; import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
import org.apache.logging.log4j.LogManager; 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.LivingEntity;
import org.bukkit.entity.Pose; import org.bukkit.entity.Pose;
import org.bukkit.entity.Vehicle; import org.bukkit.entity.Vehicle;
@ -4026,7 +3915,7 @@ index de745c8678f5dca0a939afcd45f2cab5fae3c4f1..1779f7756a7093b558bcfc7ce9655955
import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.vehicle.VehicleBlockCollisionEvent; 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 org.bukkit.plugin.PluginManager;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -4162,7 +4051,7 @@ index 3dd3b8913e345471f971c4ef55bb91200eb50a33..781cadf1471cf8aa405af406bc9ae8db
public class EntityBat extends EntityAmbient { 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 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 --- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/src/main/java/net/minecraft/server/EntityBee.java +++ b/src/main/java/net/minecraft/server/EntityBee.java
@@ -1,16 +1,12 @@ @@ -1,16 +1,12 @@
@ -4540,7 +4429,7 @@ index 364697e0155012c300219ad94a3995809e6c2f8f..8de9b17292bc69e603d5e3ef1f5e82d5
public abstract class EntityHorseAbstract extends EntityAnimal implements IInventoryListener, IJumpable, ISaddleable { 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 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 --- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/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; @@ -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); 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 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 --- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/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; @@ -7,24 +7,18 @@ import com.mojang.datafixers.util.Pair;
@ -6599,10 +6488,10 @@ index faa556d4358bc9890ae80c18ee10c38a8d46548e..0f342d972f94852d057e39f0c24baf46
public class ItemWorldMap extends ItemWorldMapBase { 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 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 --- a/src/main/java/net/minecraft/server/JsonList.java
+++ b/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; package net.minecraft.server;
-import com.google.common.collect.Lists; -import com.google.common.collect.Lists;
@ -6614,7 +6503,6 @@ index 6d7452d05c648cdee50b2077aec6f100449b8229..da52912a4ae8d23d1fa14a2a1b4fdcba
-import com.google.gson.JsonElement; -import com.google.gson.JsonElement;
-import com.google.gson.JsonObject; -import com.google.gson.JsonObject;
+import com.google.gson.*; +import com.google.gson.*;
+import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Logger;
+ +
@ -6633,8 +6521,6 @@ index 6d7452d05c648cdee50b2077aec6f100449b8229..da52912a4ae8d23d1fa14a2a1b4fdcba
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
-import javax.annotation.Nullable; -import javax.annotation.Nullable;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.Logger;
@ -7314,7 +7200,7 @@ index 376427eee7774a26da53ac041ae197bd982bafce..04552de8d42d9bd75fd37f7ef13ee275
public class NameReferencingFileConverter { public class NameReferencingFileConverter {
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java 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 --- a/src/main/java/net/minecraft/server/NavigationAbstract.java
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java +++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
@@ -1,10 +1,11 @@ @@ -1,10 +1,11 @@
@ -7697,31 +7583,17 @@ index 29efbdd2ca77833e6be59e5b5b4c38633e43588d..b27679e5993177d550a7a2727fc3bcda
public class PathfinderGoalRemoveBlock extends PathfinderGoalGotoTarget { 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 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 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
+++ b/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; package net.minecraft.server;
-import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector
+import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; -import com.google.common.collect.Sets;
import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; import java.util.EnumMap;
+import org.apache.logging.log4j.LogManager; import java.util.EnumSet;
+import org.apache.logging.log4j.Logger; import java.util.Iterator; // Paper - remove streams from pathfindergoalselector
-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 {
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java
index 29822c19496e3927eb9a061869872f4fee525254..6d1b9348e95ce154a1cae31e7f67a6213a1d3803 100644 index 29822c19496e3927eb9a061869872f4fee525254..6d1b9348e95ce154a1cae31e7f67a6213a1d3803 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java --- a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java
@ -7767,26 +7639,6 @@ index 112d8bab65bf41263a477c5faa717687fe8a2bc9..85e63bc6f46637e8a4c0fec77a61f9ca
public class PathfinderGoalWrapped extends PathfinderGoal { 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 diff --git a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java b/src/main/java/net/minecraft/server/PathfinderTargetCondition.java
index af09e1926fb6f3b780a5063b2e2e00da4cdc8ce6..c855ca15a6b2e463de48a86738d5182d28b32c20 100644 index af09e1926fb6f3b780a5063b2e2e00da4cdc8ce6..c855ca15a6b2e463de48a86738d5182d28b32c20 100644
--- a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java --- a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java
@ -8115,7 +7967,7 @@ index 3b65711b91c51ac7b4b5b2b0144ffd279fe60eeb..b7fe6425a6c830b2b63710b3c4c3c6e7
public class PlayerInventory implements IInventory, INamableTileEntity { 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 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 --- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
@ -8127,23 +7979,8 @@ index 1dfd274e3af26792d5da88c59c0ebc71d8b9feb4..bffb8fcdd32c98b3253430d06955a4e2
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
@@ -8,42 +10,24 @@ import com.mojang.authlib.GameProfile; @@ -22,26 +24,13 @@ import java.util.concurrent.CompletableFuture;
import com.mojang.serialization.DataResult; import javax.annotation.Nullable;
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;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
- -
@ -8170,17 +8007,8 @@ index 1dfd274e3af26792d5da88c59c0ebc71d8b9feb4..bffb8fcdd32c98b3253430d06955a4e2
-import org.bukkit.util.Vector; -import org.bukkit.util.Vector;
+import org.bukkit.event.player.*; +import org.bukkit.event.player.*;
import org.spigotmc.event.player.PlayerSpawnLocationEvent; 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 // 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 diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
index 68f693de5eaa5eaa8dc65230ffa95556530c2368..0b4a0052a25470033326f7533880a14eaccd6321 100644 index 68f693de5eaa5eaa8dc65230ffa95556530c2368..0b4a0052a25470033326f7533880a14eaccd6321 100644
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java --- a/src/main/java/net/minecraft/server/PortalTravelAgent.java
@ -8804,7 +8632,7 @@ index ea52e89bd965afbd74f15b0e2974657319c28e4a..e5b69c561f3ff2e76351f784d970f77d
import java.util.UUID; import java.util.UUID;
diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java 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 --- a/src/main/java/net/minecraft/server/ServerStatisticManager.java
+++ b/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; @@ -12,6 +12,9 @@ import com.mojang.datafixers.DataFixer;
@ -8817,13 +8645,9 @@ index 5f222d8b90951c61e77ab7032f8728772ba8ab9d..48a6f61bfd7408f2bdebcdd9bf07bde1
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader; import java.io.StringReader;
@@ -20,13 +23,9 @@ import java.util.Map; @@ -21,9 +24,6 @@ import java.util.Map.Entry;
import java.util.Map.Entry;
import java.util.Optional; import java.util.Optional;
import java.util.Set; 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.LogManager;
-import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.Logger;
@ -9344,7 +9168,7 @@ index 89537dec8ed278e79e078cb2fd3d3e839cdbab59..159db8d095f9abed59348594147a640c
public class TileEntityEndGateway extends TileEntityEnderPortal implements ITickable { 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 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 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
+++ b/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; @@ -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 { 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 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 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -1,20 +1,17 @@ @@ -1,20 +1,17 @@
@ -9481,31 +9305,17 @@ index c4b0d8720e71c7bf2cac7ed962b8fd33cf0b49b3..fa63d9c7eae6f38a953176be8bcf1125
public class TileEntitySign extends TileEntity implements ICommandListener { // CraftBukkit - implements 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 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 --- a/src/main/java/net/minecraft/server/TileEntitySkull.java
+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java +++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
@@ -1,32 +1,23 @@ @@ -9,19 +9,14 @@ import javax.annotation.Nullable;
package net.minecraft.server;
-import com.google.common.collect.Iterables; // Spigot start
-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.base.Predicate;
-import com.google.common.cache.LoadingCache; -import com.google.common.cache.LoadingCache;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache; +import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.Futures;
-import java.util.concurrent.Executors; -import java.util.concurrent.Executors;
-import java.util.concurrent.ExecutorService; -import java.util.concurrent.ExecutorService;
@ -9514,16 +9324,8 @@ index ceb1f18a49ebc8fbac270d9f221fa44f9baea216..b9def7587a1dad2acce3509cc7b82e97
- -
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.mojang.authlib.Agent; import com.mojang.authlib.Agent;
+import com.mojang.authlib.GameProfile;
import com.mojang.authlib.ProfileLookupCallback; import com.mojang.authlib.ProfileLookupCallback;
-import java.util.concurrent.Callable; -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.*; +import java.util.concurrent.*;
// Spigot end // Spigot end
@ -9754,7 +9556,7 @@ index 34a180361e817b5cbd37d206fbc7cfd5ad2a468b..fa35fe79d1d35a6862151aca0dba0923
import java.util.Objects; import java.util.Objects;
import java.util.stream.Stream; 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 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 --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -1,30 +1,14 @@ @@ -1,30 +1,14 @@
@ -9936,34 +9738,17 @@ index 3b1779f8220afc61d4d63926bcda0c27b44dd96e..e3bcf63922639db39e83c8b6b1ad65b9
public class WorldMap extends PersistentBase { 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 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 --- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java +++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
@@ -1,21 +1,14 @@ @@ -9,6 +9,7 @@ import java.io.OutputStream;
package net.minecraft.server; import javax.annotation.Nullable;
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;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
+import org.bukkit.craftbukkit.entity.CraftPlayer; +// CraftBukkit start
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 end // 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 diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java
index a2a25cf6a43a1f59a80c997e2980f2bb8e6b3817..045605b71a74a1ea3a29e622bb790bdd690d33dc 100644 index a2a25cf6a43a1f59a80c997e2980f2bb8e6b3817..045605b71a74a1ea3a29e622bb790bdd690d33dc 100644
--- a/src/main/java/net/minecraft/server/WorldPersistentData.java --- a/src/main/java/net/minecraft/server/WorldPersistentData.java
@ -10107,7 +9892,7 @@ index 7cde55ae407012b3445f11b07a0ebc9d00e031e3..23cbd9a980ce65c99cdfd1cbade3ffa5
public class PurpurWorldConfig { public class PurpurWorldConfig {
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java 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 --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -1,5 +1,9 @@ @@ -1,5 +1,9 @@