diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 06b4466d..d0ace2db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,10 +6,12 @@ on: - '*.md' branches: - ver/1.16.2 + - ver/1.16.1 pull_request: paths-ignore: - '*.md' branches: + - ver/1.16.1 - ver/1.16.2 jobs: diff --git a/.gitmodules b/.gitmodules index db7d8c9a..b0e659d9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,12 @@ [submodule "Tuinity"] path = Tuinity - url = https://github.com/tsao-chi/Tuinity-autoupstreamupdate.git - branch = ver/1.16 + url = https://github.com/YatopiaMC/Yatopia-Tuninty.git + branch = 1.16.2tmp update = merge [submodule "Akarin"] path = Akarin - url = https://github.com/Akarin-project/Akarin - branch = 1.16.1 + url = https://github.com/Akarin-project/Akarin.git + branch = 1.16.2 update = merge [submodule "Purpur"] path = Purpur @@ -16,7 +16,7 @@ [submodule "Empirecraft"] path = Empirecraft url = https://github.com/starlis/empirecraft.git - branch = master + branch = ver/1.16.2 update = merge [submodule "Origami"] path = Origami diff --git a/PATCHES.md b/PATCHES.md index 4c8146a1..72f466c7 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -42,11 +42,6 @@ # Patches | server | Heavily optimize furnance fuel and recipe lookups | tr7zw | | | server | Hopper Optimizations | Phoenix616 | | | server | Improve Hopper Performance | Aikar | | -| server | Incremental player saving | Aikar | MrIvanPlays | -| api | IntellaJ Code Clean Up | Bud Gidiere | | -| api | IntellaJ Optimize Imports | Bud Gidiere | | -| server | Intellij Code Clean Up | Bud Gidiere | | -| server | Intellij Optimize Imports. | Bud Gidiere | | | server | Item stuck sleep config | tr7zw | | | api | Kill AnnotationTest | tr7zw | | | server | Lagging threshold | William Blake Galbreath | | @@ -74,6 +69,7 @@ # Patches | server | Skip events if there's no listeners | William Blake Galbreath | | | server | Swaps the predicate order of collision | ㄗㄠˋ ㄑㄧˊ | | | server | Tweak Explosions | Aikar | | +| server | Use block distance in portal search radius | Patrick Hemmer | | | api | Yatopia API Bundle | Bud Gidiere | | | server | Yatopia-Server-Fixes | Bud Gidiere | | | server | dont load chunks for physics | Aikar | | diff --git a/README.md b/README.md index b5250e01..11228051 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,8 @@

Yatopia (Formerly YAPFA)

The Most Powerful Minecraft Server Software

-[![Github-CI](https://github.com/tr7zw/Yatopia/workflows/CI/badge.svg)](https://github.com/tr7zw/Yatopia/actions?query=workflow%3ACI) -[![Discord](https://img.shields.io/discord/342814924310970398?color=%237289DA&label=Discord&logo=discord&logoColor=white)](https://discordapp.com/invite/yk4caxM) -[![Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.herokuapp.com%2Ftr7zw%2Fpledges&style=for-the-badge)](https://www.patreon.com/tr7zw) +[![Github-CI](https://github.com/YatopiaMC/Yatopia/workflows/CI/badge.svg)](https://github.com/YatopiaMC/Yatopia/actions?query=workflow%3ACI) +[![Discord](https://img.shields.io/discord/342814924310970398?color=%237289DA&label=Discord&logo=discord&logoColor=white)](https://discord.gg/SajCVmp) ## Introduction ## @@ -24,13 +23,12 @@ ## Give it a try ## Available at the following options: -* **[GitHub Releases](https://github.com/tr7zw/Yatopia/releases/tag/1.16.1)** - 1.16.1 -* **[GitHub Actions](https://github.com/tr7zw/Yatopia/actions?query=branch%3Aver%2F1.15.2+is%3Asuccess+event%3Apush)** - 1.15.2 -* ~~**[CodeMC](https://ci.codemc.io/job/Tr7zw/job/YAPFA/)** - 1.15.2~~ (Not up-to-date) +* **[GitHub Releases](https://github.com/YatopiaMC/Yatopia/releases/tag/1.16.1)** - 1.16.1 +* **[GitHub Actions](https://github.com/YatopiaMC/Yatopia/actions?query=branch%3Aver%2F1.15.2+is%3Asuccess+event%3Apush)** - 1.15.2 ## Documentation -You can find a full explanation of the Yatopia configuration file on the [Wiki](https://github.com/tr7zw/Yatopia/wiki) +You can find a full explanation of the Yatopia configuration file on the [Wiki](https://github.com/YatopiaMC/Yatopia/wiki) Also check out the list of patches included in this Project and who created them [here](PATCHES.md)! @@ -43,4 +41,4 @@ ## Building and setting up ## LICENSE -License information can be found [here](https://github.com/tr7zw/Yatopia/blob/ver/1.16.1/Licensing/LICENSE.md). +License information can be found [here](https://github.com/YatopiaMC/Yatopia/blob/ver/1.16.1/Licensing/LICENSE.md). diff --git a/Tuinity b/Tuinity index 79807ed4..199edf5e 160000 --- a/Tuinity +++ b/Tuinity @@ -1 +1 @@ -Subproject commit 79807ed4c3e2e0a12fabb342dfaf3b5b953dfe0b +Subproject commit 199edf5e8abfe30fd436548cb8f849eb4d2af8d4 diff --git a/patches/api/0001-Yatopia-API-Bundle.patch b/patches/api/0001-Yatopia-API-Bundle.patch index 54773d07..d30d737b 100644 --- a/patches/api/0001-Yatopia-API-Bundle.patch +++ b/patches/api/0001-Yatopia-API-Bundle.patch @@ -26,10 +26,10 @@ index 62cc1c74c11f56dcbd1e24e9c5478497742e6351..59787c474f1a17dff156e74107f880ac + // Purpur end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 46c4d98ce32a0b1d8cfd391f2c7a9566a045cb55..3d06d68f41328e18994dc20dc407f60f6b08ada8 100644 +index 46c4d98ce32a0b1d8cfd391f2c7a9566a045cb55..e5170b299bb4252a7910c1aa5a607dbc3b30a0d1 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1455,6 +1455,47 @@ public interface Server extends PluginMessageRecipient { +@@ -1455,6 +1455,54 @@ public interface Server extends PluginMessageRecipient { } // Tuinity end - add config to timings report @@ -73,11 +73,18 @@ index 46c4d98ce32a0b1d8cfd391f2c7a9566a045cb55..3d06d68f41328e18994dc20dc407f60f + throw new UnsupportedOperationException("Not supported yet."); + } + // Origami end ++ // Yatopia start - add config to timings report ++ @NotNull ++ public org.bukkit.configuration.file.YamlConfiguration getYatopiaConfig() ++ { ++ throw new UnsupportedOperationException("Not supported yet."); ++ } ++ // Yatopia end + /** * Sends the component to the player * -@@ -1555,4 +1596,13 @@ public interface Server extends PluginMessageRecipient { +@@ -1555,4 +1603,13 @@ public interface Server extends PluginMessageRecipient { @NotNull com.destroystokyo.paper.entity.ai.MobGoals getMobGoals(); // Paper end diff --git a/patches/api/0002-Modify-POM.patch b/patches/api/0002-Modify-POM.patch index 44d6fa40..a9215536 100644 --- a/patches/api/0002-Modify-POM.patch +++ b/patches/api/0002-Modify-POM.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Modify POM diff --git a/pom.xml b/pom.xml -index 4004ff5d3b9285c737dffcfee5ab48a164de6fc9..d0a4f91ed6a50e71644ef99fbb31986547454853 100644 +index 95a99b7b55a980b9ad81a0d536507cf890464260..f93316db543962fc63332a323b7fa1112116024c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,18 +3,18 @@ @@ -22,13 +22,13 @@ index 4004ff5d3b9285c737dffcfee5ab48a164de6fc9..d0a4f91ed6a50e71644ef99fbb319865 - tuinity-api + yatopia-api - 1.16.1-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT jar - Tuinity-API - https://github.com/Spottedleaf/Tuinity + Yatopia-API -+ https://github.com/tr7zw/Yatopia ++ https://github.com/YatopiaMC/Yatopia An enhanced plugin API for Minecraft servers. diff --git a/patches/api/0004-Add-GameProfileLookupEvent.patch b/patches/api/0004-Add-GameProfileLookupEvent.patch index 83684b9d..b8318fa1 100644 --- a/patches/api/0004-Add-GameProfileLookupEvent.patch +++ b/patches/api/0004-Add-GameProfileLookupEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add GameProfileLookupEvent diff --git a/pom.xml b/pom.xml -index d0a4f91ed6a50e71644ef99fbb31986547454853..3a49ca4b8af1c9715cda8efde3d09efef92354fe 100644 +index f93316db543962fc63332a323b7fa1112116024c..85119ba76c0b5413d72ad1078b56f515b1075115 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,10 @@ diff --git a/patches/api/0005-Add-getLastTickMs-api.patch b/patches/api/0005-Add-getLastTickMs-api.patch index 5c05121d..b10a7329 100644 --- a/patches/api/0005-Add-getLastTickMs-api.patch +++ b/patches/api/0005-Add-getLastTickMs-api.patch @@ -20,10 +20,10 @@ index 59787c474f1a17dff156e74107f880ac083a7cb3..74bb5aa790d072c130a05d0e59afdb1c + // Yatopia end } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 3d06d68f41328e18994dc20dc407f60f6b08ada8..87174c63178ac2acd6dfd23d499e4c7efccaa981 100644 +index e5170b299bb4252a7910c1aa5a607dbc3b30a0d1..bac4710b98f993875d52548b9fd1538f821fb866 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1605,4 +1605,13 @@ public interface Server extends PluginMessageRecipient { +@@ -1612,4 +1612,13 @@ public interface Server extends PluginMessageRecipient { */ boolean isLagging(); // Purpur end diff --git a/patches/api/0006-Add-NBT-API-as-a-first-class-lib.patch b/patches/api/0006-Add-NBT-API-as-a-first-class-lib.patch index f12cd339..1aa895cb 100644 --- a/patches/api/0006-Add-NBT-API-as-a-first-class-lib.patch +++ b/patches/api/0006-Add-NBT-API-as-a-first-class-lib.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add NBT API as a first class lib diff --git a/pom.xml b/pom.xml -index 3a49ca4b8af1c9715cda8efde3d09efef92354fe..9338a6a97d9ac2ce010928ffe330fc791030c0f6 100644 +index 85119ba76c0b5413d72ad1078b56f515b1075115..3f0f08719bc677a1af03c73000d856df5fafa104 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,11 @@ diff --git a/patches/api/0007-IntellaJ-Optimize-Imports.patch b/patches/api/0007-IntellaJ-Optimize-Imports.patch deleted file mode 100644 index 294f1009..00000000 --- a/patches/api/0007-IntellaJ-Optimize-Imports.patch +++ /dev/null @@ -1,7360 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Bud Gidiere -Date: Sat, 8 Aug 2020 18:11:46 -0500 -Subject: [PATCH] IntellaJ Optimize Imports - -Do not try to update this. Just rebuild it. - -diff --git a/src/main/java/co/aikar/timings/FullServerTickHandler.java b/src/main/java/co/aikar/timings/FullServerTickHandler.java -index dfaa266ff53e43ad48dc5a5a5657fe70600f539a..6a7276d37a903a3254bf02864ebdaa6cad41fba8 100644 ---- a/src/main/java/co/aikar/timings/FullServerTickHandler.java -+++ b/src/main/java/co/aikar/timings/FullServerTickHandler.java -@@ -1,10 +1,10 @@ - package co.aikar.timings; - --import static co.aikar.timings.TimingsManager.*; -- - import org.bukkit.Bukkit; - import org.jetbrains.annotations.NotNull; - -+import static co.aikar.timings.TimingsManager.*; -+ - public class FullServerTickHandler extends TimingHandler { - private static final TimingIdentifier IDENTITY = new TimingIdentifier("Minecraft", "Full Server Tick", null); - final TimingData minuteData; -diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java -index 4e6e1b8e8aeb07e34536941d2cbfc25e5cfa6c27..c23ba7dac929662ebe58bf7fd8376c9a13629082 100644 ---- a/src/main/java/co/aikar/timings/TimedEventExecutor.java -+++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java -@@ -29,11 +29,11 @@ import org.bukkit.event.EventException; - import org.bukkit.event.Listener; - import org.bukkit.plugin.EventExecutor; - import org.bukkit.plugin.Plugin; -- --import java.lang.reflect.Method; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.reflect.Method; -+ - public class TimedEventExecutor implements EventExecutor { - - private final EventExecutor executor; -diff --git a/src/main/java/co/aikar/timings/TimingData.java b/src/main/java/co/aikar/timings/TimingData.java -index a5d13a1e44edb861f45c83a9b4309fbf799d407d..3ae8a7f792d26d6daaf8687c8e99d38dbb9480a2 100644 ---- a/src/main/java/co/aikar/timings/TimingData.java -+++ b/src/main/java/co/aikar/timings/TimingData.java -@@ -23,9 +23,10 @@ - */ - package co.aikar.timings; - --import java.util.List; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - import static co.aikar.util.JSONUtil.toArray; - - /** -diff --git a/src/main/java/co/aikar/timings/TimingHandler.java b/src/main/java/co/aikar/timings/TimingHandler.java -index 199789d56d22fcb1b77ebd56805cc28aa5a5ab0a..cf0c249edf83e80aaa98d230abfc4866c0412f51 100644 ---- a/src/main/java/co/aikar/timings/TimingHandler.java -+++ b/src/main/java/co/aikar/timings/TimingHandler.java -@@ -25,6 +25,9 @@ package co.aikar.timings; - - import co.aikar.util.LoadingIntMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -+import org.bukkit.Bukkit; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.ArrayDeque; - import java.util.Deque; -@@ -32,10 +35,6 @@ import java.util.concurrent.atomic.AtomicInteger; - import java.util.logging.Level; - import java.util.logging.Logger; - --import org.bukkit.Bukkit; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; -- - class TimingHandler implements Timing { - - private static AtomicInteger idPool = new AtomicInteger(1); -diff --git a/src/main/java/co/aikar/timings/TimingHistory.java b/src/main/java/co/aikar/timings/TimingHistory.java -index 203cda0f9a4dea4f28a21ea9ee8db7a7369842e3..6460637a354c8b39401e03ec2ac76db27e7ea2cb 100644 ---- a/src/main/java/co/aikar/timings/TimingHistory.java -+++ b/src/main/java/co/aikar/timings/TimingHistory.java -@@ -24,6 +24,8 @@ - package co.aikar.timings; - - import co.aikar.timings.TimingHistory.RegionData.RegionId; -+import co.aikar.util.LoadingMap; -+import co.aikar.util.MRUMapCache; - import com.google.common.base.Function; - import com.google.common.collect.Sets; - import org.bukkit.Bukkit; -@@ -34,18 +36,12 @@ import org.bukkit.block.BlockState; - import org.bukkit.entity.Entity; - import org.bukkit.entity.EntityType; - import org.bukkit.entity.Player; --import co.aikar.util.LoadingMap; --import co.aikar.util.MRUMapCache; -- --import java.lang.management.ManagementFactory; --import java.util.Collection; --import java.util.EnumMap; --import java.util.List; --import java.util.Map; --import java.util.Set; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.management.ManagementFactory; -+import java.util.*; -+ - import static co.aikar.timings.TimingsManager.FULL_SERVER_TICK; - import static co.aikar.timings.TimingsManager.MINUTE_REPORTS; - import static co.aikar.util.JSONUtil.*; -diff --git a/src/main/java/co/aikar/timings/TimingHistoryEntry.java b/src/main/java/co/aikar/timings/TimingHistoryEntry.java -index 86d5ac6bd0d7d0003688761aceb3f3343575319f..ba61030cb48a17b19f7cd87940825b4bbb455b6c 100644 ---- a/src/main/java/co/aikar/timings/TimingHistoryEntry.java -+++ b/src/main/java/co/aikar/timings/TimingHistoryEntry.java -@@ -24,9 +24,9 @@ - package co.aikar.timings; - - import com.google.common.base.Function; -+import org.jetbrains.annotations.NotNull; - - import java.util.List; --import org.jetbrains.annotations.NotNull; - - import static co.aikar.util.JSONUtil.toArrayMapper; - -diff --git a/src/main/java/co/aikar/timings/TimingIdentifier.java b/src/main/java/co/aikar/timings/TimingIdentifier.java -index df142a89b8c43acb81eb383eac0ef048a1f49a6e..73b21cce092a694dfb8240e2bccd38c576f63bd4 100644 ---- a/src/main/java/co/aikar/timings/TimingIdentifier.java -+++ b/src/main/java/co/aikar/timings/TimingIdentifier.java -@@ -24,16 +24,12 @@ - package co.aikar.timings; - - import co.aikar.util.LoadingMap; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - --import java.util.ArrayList; --import java.util.Collections; --import java.util.List; --import java.util.Map; --import java.util.Objects; -+import java.util.*; - import java.util.concurrent.ConcurrentHashMap; - import java.util.concurrent.atomic.AtomicInteger; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - *

Used as a basis for fast HashMap key comparisons for the Timing Map.

-diff --git a/src/main/java/co/aikar/timings/Timings.java b/src/main/java/co/aikar/timings/Timings.java -index da76e1aaee1dee794e38ddd4e0a28e0071e90bbf..e8e33d9e4b743084e881bb53d0e6d12394bede22 100644 ---- a/src/main/java/co/aikar/timings/Timings.java -+++ b/src/main/java/co/aikar/timings/Timings.java -@@ -30,12 +30,12 @@ import org.apache.commons.lang.Validate; - import org.bukkit.Bukkit; - import org.bukkit.command.CommandSender; - import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.List; - import java.util.Queue; - import java.util.logging.Level; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - @SuppressWarnings({"UnusedDeclaration", "WeakerAccess", "SameParameterValue"}) - public final class Timings { -diff --git a/src/main/java/co/aikar/timings/TimingsCommand.java b/src/main/java/co/aikar/timings/TimingsCommand.java -index f7c2245a310a084367ff25db539b3c967d5cb141..07a1e449b8b205e3285daa2c3223a87a30c2a912 100644 ---- a/src/main/java/co/aikar/timings/TimingsCommand.java -+++ b/src/main/java/co/aikar/timings/TimingsCommand.java -@@ -29,11 +29,10 @@ import org.bukkit.ChatColor; - import org.bukkit.command.CommandSender; - import org.bukkit.command.defaults.BukkitCommand; - import org.bukkit.util.StringUtil; -+import org.jetbrains.annotations.NotNull; - - import java.util.ArrayList; - import java.util.List; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - - public class TimingsCommand extends BukkitCommand { -diff --git a/src/main/java/co/aikar/timings/TimingsManager.java b/src/main/java/co/aikar/timings/TimingsManager.java -index ef824d701c97cad8b31e76ad98c94fc4367a7eda..bdc419426588f7b8b31370c4e4f62f0b4893626f 100644 ---- a/src/main/java/co/aikar/timings/TimingsManager.java -+++ b/src/main/java/co/aikar/timings/TimingsManager.java -@@ -30,15 +30,14 @@ import org.bukkit.Server; - import org.bukkit.command.Command; - import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.java.PluginClassLoader; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.ArrayList; --import java.util.Collections; - import java.util.List; - import java.util.Map; - import java.util.concurrent.ConcurrentHashMap; - import java.util.logging.Level; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - public final class TimingsManager { - static final Map TIMING_MAP = LoadingMap.of( -diff --git a/src/main/java/co/aikar/timings/TimingsReportListener.java b/src/main/java/co/aikar/timings/TimingsReportListener.java -index 8c49d67e2656dcac0758c0908897736b49435bf8..b990887db3a96193ba24d065ef667916e69a7b47 100644 ---- a/src/main/java/co/aikar/timings/TimingsReportListener.java -+++ b/src/main/java/co/aikar/timings/TimingsReportListener.java -@@ -7,11 +7,11 @@ import org.bukkit.command.CommandSender; - import org.bukkit.command.ConsoleCommandSender; - import org.bukkit.command.MessageCommandSender; - import org.bukkit.command.RemoteConsoleCommandSender; -- --import java.util.List; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - @SuppressWarnings("WeakerAccess") - public class TimingsReportListener implements MessageCommandSender { - private final List senders; -diff --git a/src/main/java/co/aikar/util/Counter.java b/src/main/java/co/aikar/util/Counter.java -index 80155072d1004e34e04342d434cf7d75f0b7e29d..ecc5ec682f888374fb6216ff9844934a47bfcd46 100644 ---- a/src/main/java/co/aikar/util/Counter.java -+++ b/src/main/java/co/aikar/util/Counter.java -@@ -1,11 +1,11 @@ - package co.aikar.util; - - import com.google.common.collect.ForwardingMap; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.HashMap; - import java.util.Map; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - public class Counter extends ForwardingMap { - private final Map counts = new HashMap<>(); -diff --git a/src/main/java/co/aikar/util/JSONUtil.java b/src/main/java/co/aikar/util/JSONUtil.java -index 190bf0598442c89c2a1c93ad7c8c1a29797304ae..7b0cf8a89d65f175df47a7dff0aa800ef91bc95c 100644 ---- a/src/main/java/co/aikar/util/JSONUtil.java -+++ b/src/main/java/co/aikar/util/JSONUtil.java -@@ -5,10 +5,7 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; --import org.json.simple.JSONArray; --import org.json.simple.JSONObject; - --import java.util.ArrayList; - import java.util.LinkedHashMap; - import java.util.List; - import java.util.Map; -diff --git a/src/main/java/co/aikar/util/LoadingMap.java b/src/main/java/co/aikar/util/LoadingMap.java -index aedbb03321886cb267879d7994653e447b485f6a..43b2c68faa3fe379e4554d5f4d427795bfdb2673 100644 ---- a/src/main/java/co/aikar/util/LoadingMap.java -+++ b/src/main/java/co/aikar/util/LoadingMap.java -@@ -23,18 +23,13 @@ - */ - package co.aikar.util; - --import com.google.common.base.Preconditions; --import java.lang.reflect.Constructor; --import java.util.AbstractMap; --import java.util.Collection; --import java.util.HashMap; --import java.util.IdentityHashMap; --import java.util.Map; --import java.util.Set; --import java.util.function.Function; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.reflect.Constructor; -+import java.util.*; -+import java.util.function.Function; -+ - /** - * Allows you to pass a Loader function that when a key is accessed that doesn't exists, - * automatically loads the entry into the map by calling the loader Function. -diff --git a/src/main/java/co/aikar/util/MRUMapCache.java b/src/main/java/co/aikar/util/MRUMapCache.java -index 5989ee21297935651b0edd44b8239e655eaef1d9..40aebdd0cc726a26c5ef1b486d05c4f2f022cdb9 100644 ---- a/src/main/java/co/aikar/util/MRUMapCache.java -+++ b/src/main/java/co/aikar/util/MRUMapCache.java -@@ -23,12 +23,13 @@ - */ - package co.aikar.util; - -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ - import java.util.AbstractMap; - import java.util.Collection; - import java.util.Map; - import java.util.Set; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * Implements a Most Recently Used cache in front of a backing map, to quickly access the last accessed result. -diff --git a/src/main/java/com/destroystokyo/paper/ClientOption.java b/src/main/java/com/destroystokyo/paper/ClientOption.java -index 9dad814cf51bc59ec5dfbf14474fea6557de38aa..266f19d5c1cae13d7aac8b20cc169348a43026c1 100644 ---- a/src/main/java/com/destroystokyo/paper/ClientOption.java -+++ b/src/main/java/com/destroystokyo/paper/ClientOption.java -@@ -1,8 +1,7 @@ - package com.destroystokyo.paper; - --import org.jetbrains.annotations.NotNull; -- - import org.bukkit.inventory.MainHand; -+import org.jetbrains.annotations.NotNull; - - public final class ClientOption { - -diff --git a/src/main/java/com/destroystokyo/paper/HeightmapType.java b/src/main/java/com/destroystokyo/paper/HeightmapType.java -index 709e44ea1b14ab6917501c928e689cc6cbdf4bb4..f7ab13cd5f34928a4534366291f9b0f8a0f54309 100644 ---- a/src/main/java/com/destroystokyo/paper/HeightmapType.java -+++ b/src/main/java/com/destroystokyo/paper/HeightmapType.java -@@ -1,6 +1,8 @@ - package com.destroystokyo.paper; - --import org.bukkit.*; -+import org.bukkit.HeightMap; -+import org.bukkit.Location; -+import org.bukkit.World; - - /** - * Enumeration of different heightmap types maintained by the server. Generally using these maps is much faster -diff --git a/src/main/java/com/destroystokyo/paper/MaterialSetTag.java b/src/main/java/com/destroystokyo/paper/MaterialSetTag.java -index 53c36e30e8f500c9bf58e6b12585d44cc5c9e9e2..551598e2869607c4008a15d63a71895214863502 100644 ---- a/src/main/java/com/destroystokyo/paper/MaterialSetTag.java -+++ b/src/main/java/com/destroystokyo/paper/MaterialSetTag.java -@@ -13,6 +13,8 @@ import org.bukkit.block.Block; - import org.bukkit.block.BlockState; - import org.bukkit.block.data.BlockData; - import org.bukkit.inventory.ItemStack; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.ArrayList; - import java.util.Collection; -@@ -21,8 +23,6 @@ import java.util.Set; - import java.util.function.Predicate; - import java.util.stream.Collectors; - import java.util.stream.Stream; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - public class MaterialSetTag implements Tag { - -diff --git a/src/main/java/com/destroystokyo/paper/NamespacedTag.java b/src/main/java/com/destroystokyo/paper/NamespacedTag.java -index 28f3fda950999a9c964a3608042ca60567ae1d6a..edff8763a3e1612b3e046176b88c6d716910c773 100644 ---- a/src/main/java/com/destroystokyo/paper/NamespacedTag.java -+++ b/src/main/java/com/destroystokyo/paper/NamespacedTag.java -@@ -1,11 +1,12 @@ - package com.destroystokyo.paper; - - import com.google.common.base.Preconditions; -+import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; -+ - import java.util.Locale; - import java.util.UUID; - import java.util.regex.Pattern; --import org.bukkit.plugin.Plugin; --import org.jetbrains.annotations.NotNull; - - /** - * Represents a String based key pertaining to a tagged entry. Consists of two components - a namespace -diff --git a/src/main/java/com/destroystokyo/paper/ParticleBuilder.java b/src/main/java/com/destroystokyo/paper/ParticleBuilder.java -index 06f1602f5b327705f726d0a99dd6b95e1554d382..d5d2fa20ed54e4989d0120c9239d3b54b7985a3b 100644 ---- a/src/main/java/com/destroystokyo/paper/ParticleBuilder.java -+++ b/src/main/java/com/destroystokyo/paper/ParticleBuilder.java -@@ -7,11 +7,11 @@ import org.bukkit.Particle; - import org.bukkit.World; - import org.bukkit.entity.Player; - import org.bukkit.util.NumberConversions; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.Collection; - import java.util.List; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * Helps prepare a particle to be sent to players. -diff --git a/src/main/java/com/destroystokyo/paper/Title.java b/src/main/java/com/destroystokyo/paper/Title.java -index 4fe18540f77143ee7cd7e94d3aa279ae744289e4..edb162532a1e958e95f7142150fe0a0208f4aaac 100644 ---- a/src/main/java/com/destroystokyo/paper/Title.java -+++ b/src/main/java/com/destroystokyo/paper/Title.java -@@ -2,14 +2,11 @@ package com.destroystokyo.paper; - - import net.md_5.bungee.api.chat.BaseComponent; - import net.md_5.bungee.api.chat.TextComponent; -- - import org.bukkit.entity.Player; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - --import static com.google.common.base.Preconditions.checkArgument; --import static com.google.common.base.Preconditions.checkNotNull; --import static com.google.common.base.Preconditions.checkState; -+import static com.google.common.base.Preconditions.*; - - /** - * Represents a title to may be sent to a {@link Player}. -diff --git a/src/main/java/com/destroystokyo/paper/entity/Pathfinder.java b/src/main/java/com/destroystokyo/paper/entity/Pathfinder.java -index e2a6f9c3881ff9d7373ac30e60009200432555aa..b4df01be1c0b81331b1472070b6cdae65d1bbe40 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/Pathfinder.java -+++ b/src/main/java/com/destroystokyo/paper/entity/Pathfinder.java -@@ -3,11 +3,11 @@ package com.destroystokyo.paper.entity; - import org.bukkit.Location; - import org.bukkit.entity.LivingEntity; - import org.bukkit.entity.Mob; -- --import java.util.List; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Handles pathfinding operations for an Entity - */ -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/Goal.java b/src/main/java/com/destroystokyo/paper/entity/ai/Goal.java -index c57c5416c88e2070a082403ab0dda9d7f08d2a57..ffe307d1159d16d595fac6cee829cfabdddde75a 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/Goal.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/Goal.java -@@ -1,11 +1,10 @@ - package com.destroystokyo.paper.entity.ai; - -+import org.bukkit.entity.Mob; - import org.jetbrains.annotations.NotNull; - - import java.util.EnumSet; - --import org.bukkit.entity.Mob; -- - /** - * Represents an AI goal of an entity - */ -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/GoalKey.java b/src/main/java/com/destroystokyo/paper/entity/ai/GoalKey.java -index 9cd98c6fcfa3eb439d9013ef76ef4661175a0e5a..9e1bea85d467af759ce19bc4e8841c80810ebb00 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/GoalKey.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/GoalKey.java -@@ -1,14 +1,12 @@ - package com.destroystokyo.paper.entity.ai; - - import com.google.common.base.Objects; -- -+import org.bukkit.NamespacedKey; -+import org.bukkit.entity.Mob; - import org.jetbrains.annotations.NotNull; - - import java.util.StringJoiner; - --import org.bukkit.NamespacedKey; --import org.bukkit.entity.Mob; -- - /** - * - * Used to identify a Goal. Consists of a {@link NamespacedKey} and the type of mob the goal can be applied to -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoals.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoals.java -index e21f7574763dd4f13794f91bbef192ef66a8f5e9..50049eddf64cb559da852272d177c03c62685050 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoals.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoals.java -@@ -1,12 +1,11 @@ - package com.destroystokyo.paper.entity.ai; - -+import org.bukkit.entity.Mob; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - - import java.util.Collection; - --import org.bukkit.entity.Mob; -- - /** - * Represents a part of the "brain" of a mob. It tracks all tasks (running or not), allows adding and removing goals - */ -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index d7f1b2c84aebe8ed04084b9249ed08d5e52a6ecd..9824514ab806669405e0a6d168027d22100a3e4c 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -1,7 +1,6 @@ - package com.destroystokyo.paper.entity.ai; - - import com.destroystokyo.paper.entity.RangedEntity; -- - import org.bukkit.NamespacedKey; - import org.bukkit.entity.*; - -diff --git a/src/main/java/com/destroystokyo/paper/entity/villager/Reputation.java b/src/main/java/com/destroystokyo/paper/entity/villager/Reputation.java -index 1cc9ef255df888cb7dd7f7f2c5014e818d1be613..d94fe15ecebbf9ad2fe711c8c3c81ccdcbf641d0 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/villager/Reputation.java -+++ b/src/main/java/com/destroystokyo/paper/entity/villager/Reputation.java -@@ -1,9 +1,10 @@ - package com.destroystokyo.paper.entity.villager; - - import com.google.common.base.Preconditions; --import java.util.Map; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+ - /** - * A reputation score for a player on a villager. - */ -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EnderDragonFireballHitEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EnderDragonFireballHitEvent.java -index 118c7b6772a52c250649af2a9286f483f43da385..87c79e7e60ebd288ad2b097d9bbaca243b525745 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/EnderDragonFireballHitEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/EnderDragonFireballHitEvent.java -@@ -6,11 +6,11 @@ import org.bukkit.entity.LivingEntity; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.bukkit.event.entity.EntityEvent; -- --import java.util.Collection; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+ - /** - * Fired when a DragonFireball collides with a block/entity and spawns an AreaEffectCloud - */ -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java -index f530a3d9314e17d1da896cac633f6a422258d9a9..84ee5904b450d0b7e024039875d8a18cf10b03aa 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java -@@ -24,10 +24,8 @@ - package com.destroystokyo.paper.event.entity; - - import org.bukkit.entity.Enderman; --import org.bukkit.entity.Entity; - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.entity.EntityEvent; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java -index 806112a8b5a7ce31166675f5b074ceaf42e364b6..bed4727417f57337b1f2f5b09e3c7efbbc01e635 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java -@@ -1,9 +1,7 @@ - package com.destroystokyo.paper.event.entity; - - import org.bukkit.entity.Enderman; --import org.bukkit.entity.Entity; - import org.bukkit.event.Cancellable; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.entity.EntityEvent; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EntityAddToWorldEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EntityAddToWorldEvent.java -index 07660202e41ee86f1b66bad3335cf6fe126e7f9c..a8c4c1cee9ed97523458e21995dd2a87818c4ca7 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/EntityAddToWorldEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/EntityAddToWorldEvent.java -@@ -1,7 +1,6 @@ - package com.destroystokyo.paper.event.entity; - - import org.bukkit.entity.Entity; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.entity.EntityEvent; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EntityRemoveFromWorldEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EntityRemoveFromWorldEvent.java -index e5dbbd660409bae0d3b96e83390511d3a423a52e..d23773d9013bfa4da085b91669e39768fb6e8800 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/EntityRemoveFromWorldEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/EntityRemoveFromWorldEvent.java -@@ -1,7 +1,6 @@ - package com.destroystokyo.paper.event.entity; - - import org.bukkit.entity.Entity; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.entity.EntityEvent; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EntityZapEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EntityZapEvent.java -index 3b725a489008d333630af166d2be5fc48168a6b9..ed3a6e3280f1bcfc8bd6d03b3b3b5c14ba164f9d 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/EntityZapEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/EntityZapEvent.java -@@ -5,11 +5,10 @@ import org.bukkit.entity.Entity; - import org.bukkit.entity.LightningStrike; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; --import org.bukkit.event.entity.EntityEvent; - import org.bukkit.event.entity.EntityTransformEvent; -+import org.jetbrains.annotations.NotNull; - - import java.util.Collections; --import org.jetbrains.annotations.NotNull; - - /** - * Fired when lightning strikes an entity -diff --git a/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java -index 112a0dbf522b8e74ce882678434923814e6b187f..1a89870e118aae3fd7c0b7f218c14f51083d1946 100644 ---- a/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java -@@ -2,7 +2,6 @@ package com.destroystokyo.paper.event.entity; - - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.player.PlayerEvent; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java -index 5b28e9b1daba7834af67dbc193dd656bedd9a994..80d5c32d40ad75b95d842c90e73ebcc00bbeb8fe 100644 ---- a/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java -+++ b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java -@@ -1,9 +1,5 @@ - package com.destroystokyo.paper.event.executor; - --import java.lang.invoke.MethodHandle; --import java.lang.invoke.MethodHandles; --import java.lang.reflect.Method; -- - import com.destroystokyo.paper.util.SneakyThrow; - import org.bukkit.event.Event; - import org.bukkit.event.EventException; -@@ -11,6 +7,10 @@ import org.bukkit.event.Listener; - import org.bukkit.plugin.EventExecutor; - import org.jetbrains.annotations.NotNull; - -+import java.lang.invoke.MethodHandle; -+import java.lang.invoke.MethodHandles; -+import java.lang.reflect.Method; -+ - public class MethodHandleEventExecutor implements EventExecutor { - private final Class eventClass; - private final MethodHandle handle; -diff --git a/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java b/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java -index c83672427324bd068ed52916f700b68446a226f6..e7e7c039366f8871ea5dee92de5a40d03048e967 100644 ---- a/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java -+++ b/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java -@@ -1,20 +1,18 @@ - package com.destroystokyo.paper.event.executor; - --import java.lang.invoke.MethodHandle; --import java.lang.invoke.MethodHandles; --import java.lang.reflect.Method; --import java.lang.reflect.Modifier; -- - import com.destroystokyo.paper.util.SneakyThrow; - import com.google.common.base.Preconditions; -- --import org.bukkit.Bukkit; - import org.bukkit.event.Event; - import org.bukkit.event.EventException; - import org.bukkit.event.Listener; - import org.bukkit.plugin.EventExecutor; - import org.jetbrains.annotations.NotNull; - -+import java.lang.invoke.MethodHandle; -+import java.lang.invoke.MethodHandles; -+import java.lang.reflect.Method; -+import java.lang.reflect.Modifier; -+ - public class StaticMethodHandleEventExecutor implements EventExecutor { - private final Class eventClass; - private final MethodHandle handle; -diff --git a/src/main/java/com/destroystokyo/paper/event/executor/asm/ASMEventExecutorGenerator.java b/src/main/java/com/destroystokyo/paper/event/executor/asm/ASMEventExecutorGenerator.java -index b6e7d8ee8d903ebf975d60bec0e08603d9a49fdb..59680263ad4520deccfdb2d5209450df2e4f7bff 100644 ---- a/src/main/java/com/destroystokyo/paper/event/executor/asm/ASMEventExecutorGenerator.java -+++ b/src/main/java/com/destroystokyo/paper/event/executor/asm/ASMEventExecutorGenerator.java -@@ -1,14 +1,14 @@ - package com.destroystokyo.paper.event.executor.asm; - --import java.lang.reflect.Method; --import java.util.concurrent.atomic.AtomicInteger; -- - import org.bukkit.plugin.EventExecutor; - import org.jetbrains.annotations.NotNull; - import org.objectweb.asm.ClassWriter; - import org.objectweb.asm.Type; - import org.objectweb.asm.commons.GeneratorAdapter; - -+import java.lang.reflect.Method; -+import java.util.concurrent.atomic.AtomicInteger; -+ - import static org.objectweb.asm.Opcodes.*; - - public class ASMEventExecutorGenerator { -diff --git a/src/main/java/com/destroystokyo/paper/event/executor/asm/ClassDefiner.java b/src/main/java/com/destroystokyo/paper/event/executor/asm/ClassDefiner.java -index beed9e6e07a9080f1c059e08220839090553d0a4..f79685b48bb581277a6891927988b6f7a4389dc4 100644 ---- a/src/main/java/com/destroystokyo/paper/event/executor/asm/ClassDefiner.java -+++ b/src/main/java/com/destroystokyo/paper/event/executor/asm/ClassDefiner.java -@@ -1,6 +1,5 @@ - package com.destroystokyo.paper.event.executor.asm; - --import com.destroystokyo.paper.utils.UnsafeUtils; - import org.jetbrains.annotations.NotNull; - - public interface ClassDefiner { -diff --git a/src/main/java/com/destroystokyo/paper/event/executor/asm/SafeClassDefiner.java b/src/main/java/com/destroystokyo/paper/event/executor/asm/SafeClassDefiner.java -index ac99477e9f2c08041aeff31abc1d1edee58d0a67..b5da4610e08ee9b07845fd31a25052cef4d56c28 100644 ---- a/src/main/java/com/destroystokyo/paper/event/executor/asm/SafeClassDefiner.java -+++ b/src/main/java/com/destroystokyo/paper/event/executor/asm/SafeClassDefiner.java -@@ -1,13 +1,10 @@ - package com.destroystokyo.paper.event.executor.asm; - --import java.util.concurrent.ConcurrentHashMap; --import java.util.concurrent.ConcurrentMap; -- - import com.google.common.base.Preconditions; -- - import com.google.common.collect.MapMaker; - import org.jetbrains.annotations.NotNull; --import org.objectweb.asm.Type; -+ -+import java.util.concurrent.ConcurrentMap; - - public class SafeClassDefiner implements ClassDefiner { - /* default */ static final SafeClassDefiner INSTANCE = new SafeClassDefiner(); -diff --git a/src/main/java/com/destroystokyo/paper/event/inventory/PrepareGrindstoneEvent.java b/src/main/java/com/destroystokyo/paper/event/inventory/PrepareGrindstoneEvent.java -index 449e8c06f8434b59d49a76481fa60c5c49e80579..7a144854ec8998e758bf2327d30d8165fbf39e0f 100644 ---- a/src/main/java/com/destroystokyo/paper/event/inventory/PrepareGrindstoneEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/inventory/PrepareGrindstoneEvent.java -@@ -1,7 +1,5 @@ - package com.destroystokyo.paper.event.inventory; - --import org.bukkit.event.HandlerList; --import org.bukkit.event.inventory.InventoryEvent; - import org.bukkit.inventory.GrindstoneInventory; - import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.ItemStack; -diff --git a/src/main/java/com/destroystokyo/paper/event/inventory/PrepareResultEvent.java b/src/main/java/com/destroystokyo/paper/event/inventory/PrepareResultEvent.java -index 045ce9ec3c9134aced5f5235b760ac85599d16c6..d8da8903d28ad715e0768fa5c58906540762ca0e 100644 ---- a/src/main/java/com/destroystokyo/paper/event/inventory/PrepareResultEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/inventory/PrepareResultEvent.java -@@ -2,7 +2,6 @@ package com.destroystokyo.paper.event.inventory; - - import org.bukkit.event.HandlerList; - import org.bukkit.event.inventory.InventoryEvent; --import org.bukkit.event.inventory.InventoryType; - import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java -index 2827a100275f8e1316b5d06c14662d41ca1bd5fa..15271e14fae0140d23fed672895555299c88cd17 100644 ---- a/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerArmorChangeEvent.java -@@ -5,13 +5,13 @@ import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.bukkit.event.player.PlayerEvent; - import org.bukkit.inventory.ItemStack; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.Arrays; - import java.util.Collections; - import java.util.HashSet; - import java.util.Set; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - import static org.bukkit.Material.*; - -diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerClientOptionsChangeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerClientOptionsChangeEvent.java -index f7f171c4ee0b8339b2f8fbe82442d65f17202f28..be9201fd83ab274b34cd933e5158c4de96491675 100644 ---- a/src/main/java/com/destroystokyo/paper/event/player/PlayerClientOptionsChangeEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerClientOptionsChangeEvent.java -@@ -3,13 +3,11 @@ package com.destroystokyo.paper.event.player; - import com.destroystokyo.paper.ClientOption; - import com.destroystokyo.paper.ClientOption.ChatVisibility; - import com.destroystokyo.paper.SkinParts; -- --import org.jetbrains.annotations.NotNull; -- - import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.bukkit.event.player.PlayerEvent; - import org.bukkit.inventory.MainHand; -+import org.jetbrains.annotations.NotNull; - - /** - * Called when the player changes his client settings -diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerConnectionCloseEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerConnectionCloseEvent.java -index 12c1c6fe9dc8dc5f5faf6dcf99f6857219ef22b8..aa3576d746f2add8887e3b3aee0e265c232600d3 100644 ---- a/src/main/java/com/destroystokyo/paper/event/player/PlayerConnectionCloseEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerConnectionCloseEvent.java -@@ -2,10 +2,10 @@ package com.destroystokyo.paper.event.player; - - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; - - import java.net.InetAddress; - import java.util.UUID; --import org.jetbrains.annotations.NotNull; - - /** - *

-diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index f0bb4e31cc25eab2359fa9873bbf960346721701..39cb6d136fe920ee9519f81ecf360f618d29fdd2 100644 ---- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -@@ -4,11 +4,11 @@ import org.apache.commons.lang.Validate; - import org.bukkit.event.Cancellable; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -- --import java.util.UUID; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.UUID; -+ - /** - * This event is fired during a player handshake. - * -diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerPickupExperienceEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerPickupExperienceEvent.java -index f7beb22d5105157940b39efe594ace9d4cb153f5..d117956ca6026ad676e1aa551b4f10ca83be0b7e 100644 ---- a/src/main/java/com/destroystokyo/paper/event/player/PlayerPickupExperienceEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerPickupExperienceEvent.java -@@ -26,7 +26,6 @@ package com.destroystokyo.paper.event.player; - import org.bukkit.entity.ExperienceOrb; - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.player.PlayerEvent; - import org.jetbrains.annotations.NotNull; -diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerReadyArrowEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerReadyArrowEvent.java -index 5d04a22fd6964d8d44a2aa069c9629722893b1f4..5cf47f7ffd039add8bcdce9e08f52b2fc5aafcc6 100644 ---- a/src/main/java/com/destroystokyo/paper/event/player/PlayerReadyArrowEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerReadyArrowEvent.java -@@ -25,7 +25,6 @@ package com.destroystokyo.paper.event.player; - - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; --import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.bukkit.event.player.PlayerEvent; - import org.bukkit.inventory.ItemStack; -diff --git a/src/main/java/com/destroystokyo/paper/event/profile/FillProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/FillProfileEvent.java -index 71f36e9cae209ec6861835a5e76e018de959040a..1829bddee1e7518bde021b527b39c5f3f4b2e002 100644 ---- a/src/main/java/com/destroystokyo/paper/event/profile/FillProfileEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/profile/FillProfileEvent.java -@@ -27,9 +27,9 @@ import com.destroystokyo.paper.profile.PlayerProfile; - import com.destroystokyo.paper.profile.ProfileProperty; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; - - import java.util.Set; --import org.jetbrains.annotations.NotNull; - - /** - * Fired once a profiles additional properties (such as textures) has been filled -diff --git a/src/main/java/com/destroystokyo/paper/event/profile/LookupProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/LookupProfileEvent.java -index 8df37c07cd55ddf110d1dd68183d7b697f7a6756..1666c8e7ed11e8a7af02b202cc7482d5c8db0bd0 100644 ---- a/src/main/java/com/destroystokyo/paper/event/profile/LookupProfileEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/profile/LookupProfileEvent.java -@@ -4,7 +4,6 @@ import com.destroystokyo.paper.profile.PlayerProfile; - import org.bukkit.Bukkit; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -- - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java -index 021bc86310a06f84b39459e0eb8927802726399c..b2af8715bd50f196f88f7f75f473996c23df03f2 100644 ---- a/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/profile/PreFillProfileEvent.java -@@ -27,9 +27,9 @@ import com.destroystokyo.paper.profile.PlayerProfile; - import com.destroystokyo.paper.profile.ProfileProperty; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; - - import java.util.Collection; --import org.jetbrains.annotations.NotNull; - - /** - * Fired when the server is requesting to fill in properties of an incomplete profile, such as textures. -diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java -index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..ed30b291cd5c406779e10b28c10d8577b46cd3a1 100644 ---- a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java -@@ -1,17 +1,15 @@ - package com.destroystokyo.paper.event.profile; - --import com.destroystokyo.paper.profile.PlayerProfile; - import com.destroystokyo.paper.profile.ProfileProperty; --import com.google.common.collect.ArrayListMultimap; - import org.bukkit.Bukkit; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.HashSet; - import java.util.Set; - import java.util.UUID; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * Allows a plugin to intercept a Profile Lookup for a Profile by name -diff --git a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -index 619ed37169c126a8c75d02699a04728bac49d10d..94b1dfe3e4813e58a46360f6b5140c1fbbfa8b82 100644 ---- a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -@@ -23,7 +23,6 @@ - - package com.destroystokyo.paper.event.server; - --import com.google.common.collect.ImmutableList; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; - import org.bukkit.command.Command; -@@ -31,11 +30,11 @@ import org.bukkit.command.CommandSender; - import org.bukkit.event.Cancellable; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; - - import java.util.ArrayList; - import java.util.List; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * Allows plugins to compute tab completion results asynchronously. If this event provides completions, then the standard synchronous process will not be fired to populate the results. However, the synchronous TabCompleteEvent will fire with the Async results. -diff --git a/src/main/java/com/destroystokyo/paper/event/server/PaperServerListPingEvent.java b/src/main/java/com/destroystokyo/paper/event/server/PaperServerListPingEvent.java -index 0cc5dd57342c12c0561c2b6ea0f803efb236855e..3e9974795f021aea2a61eb7ca911dbeec7c34b4e 100644 ---- a/src/main/java/com/destroystokyo/paper/event/server/PaperServerListPingEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/server/PaperServerListPingEvent.java -@@ -1,7 +1,5 @@ - package com.destroystokyo.paper.event.server; - --import static java.util.Objects.requireNonNull; -- - import com.destroystokyo.paper.network.StatusClient; - import com.destroystokyo.paper.profile.PlayerProfile; - import org.bukkit.Bukkit; -@@ -9,16 +7,13 @@ import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; - import org.bukkit.event.server.ServerListPingEvent; - import org.bukkit.util.CachedServerIcon; -- --import java.util.ArrayList; --import java.util.Iterator; --import java.util.List; --import java.util.NoSuchElementException; --import java.util.UUID; -- - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+ -+import static java.util.Objects.requireNonNull; -+ - /** - * Extended version of {@link ServerListPingEvent} that allows full control - * of the response sent to the client. -diff --git a/src/main/java/com/destroystokyo/paper/event/server/ServerExceptionEvent.java b/src/main/java/com/destroystokyo/paper/event/server/ServerExceptionEvent.java -index 2f573299a9a817a98372817a1de8bf641aaca956..fd8f760b7ac8feda03ce5ea663b76b6cb2cf93d6 100644 ---- a/src/main/java/com/destroystokyo/paper/event/server/ServerExceptionEvent.java -+++ b/src/main/java/com/destroystokyo/paper/event/server/ServerExceptionEvent.java -@@ -1,11 +1,10 @@ - package com.destroystokyo.paper.event.server; - -+import com.destroystokyo.paper.exception.ServerException; - import com.google.common.base.Preconditions; --import org.apache.commons.lang.Validate; - import org.bukkit.Bukkit; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; --import com.destroystokyo.paper.exception.ServerException; - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerEventException.java b/src/main/java/com/destroystokyo/paper/exception/ServerEventException.java -index 410b24139535cd5d8439ad581c43c61b5757fbf6..fc3863b6d93577aa001213d4175e39b7929dc7d0 100644 ---- a/src/main/java/com/destroystokyo/paper/exception/ServerEventException.java -+++ b/src/main/java/com/destroystokyo/paper/exception/ServerEventException.java -@@ -4,7 +4,7 @@ import org.bukkit.event.Event; - import org.bukkit.event.Listener; - import org.bukkit.plugin.Plugin; - --import static com.google.common.base.Preconditions.*; -+import static com.google.common.base.Preconditions.checkNotNull; - - /** - * Exception thrown when a server event listener throws an exception -diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerInternalException.java b/src/main/java/com/destroystokyo/paper/exception/ServerInternalException.java -index e762ed0dbad51625e65fef2e1898679108459a36..5dbd79cd9a7ec76c1daecd2d77ebc9c0dce9cdd8 100644 ---- a/src/main/java/com/destroystokyo/paper/exception/ServerInternalException.java -+++ b/src/main/java/com/destroystokyo/paper/exception/ServerInternalException.java -@@ -1,7 +1,7 @@ - package com.destroystokyo.paper.exception; - --import org.bukkit.Bukkit; - import com.destroystokyo.paper.event.server.ServerExceptionEvent; -+import org.bukkit.Bukkit; - - /** - * Thrown when the internal server throws a recoverable exception. -diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerPluginException.java b/src/main/java/com/destroystokyo/paper/exception/ServerPluginException.java -index 6defac287d0214fdf99418d979144050cc1e53bc..be3f92e3c6bcefe8b78da701b75121275001882e 100644 ---- a/src/main/java/com/destroystokyo/paper/exception/ServerPluginException.java -+++ b/src/main/java/com/destroystokyo/paper/exception/ServerPluginException.java -@@ -1,10 +1,8 @@ - package com.destroystokyo.paper.exception; - --import com.google.common.base.Preconditions; --import org.apache.commons.lang.Validate; - import org.bukkit.plugin.Plugin; - --import static com.google.common.base.Preconditions.*; -+import static com.google.common.base.Preconditions.checkNotNull; - - /** - * Wrapper exception for all cases to which a plugin can be immediately blamed for -diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java -index 89e132525cfae0ce979e37b3e2793df781e47227..f58d9065dd7c39a8e1b70b8ddf20df59e8b4d5c2 100644 ---- a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java -+++ b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java -@@ -3,7 +3,7 @@ package com.destroystokyo.paper.exception; - import org.bukkit.entity.Player; - import org.bukkit.plugin.Plugin; - --import static com.google.common.base.Preconditions.*; -+import static com.google.common.base.Preconditions.checkNotNull; - - /** - * Thrown when an incoming plugin message channel throws an exception -diff --git a/src/main/java/com/destroystokyo/paper/loottable/LootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/LootableInventory.java -index 97815eeb231cf0706b34fa47a4f7d1bb786305b4..3856d438db29a3d142cffdb36c61db71117e0c80 100644 ---- a/src/main/java/com/destroystokyo/paper/loottable/LootableInventory.java -+++ b/src/main/java/com/destroystokyo/paper/loottable/LootableInventory.java -@@ -2,11 +2,11 @@ package com.destroystokyo.paper.loottable; - - import org.bukkit.entity.Player; - import org.bukkit.loot.Lootable; -- --import java.util.UUID; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.UUID; -+ - /** - * Represents an Inventory that contains a Loot Table associated to it that will - * automatically fill on first open. -diff --git a/src/main/java/com/destroystokyo/paper/network/NetworkClient.java b/src/main/java/com/destroystokyo/paper/network/NetworkClient.java -index 7b2af1bd72dfbcf4e962a982940fc49b851aa04f..f5b3732941ab177096c47796576888c39ebecd66 100644 ---- a/src/main/java/com/destroystokyo/paper/network/NetworkClient.java -+++ b/src/main/java/com/destroystokyo/paper/network/NetworkClient.java -@@ -1,10 +1,10 @@ - package com.destroystokyo.paper.network; - --import java.net.InetSocketAddress; -- - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.net.InetSocketAddress; -+ - /** - * Represents a client connected to the server. - */ -diff --git a/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java -index 2ef9a7bd55e2c9cf8cb20d5f77282676ae11181f..2a0fbc4e293d7e99f66f8df5124f6aef98d54f6e 100644 ---- a/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java -+++ b/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java -@@ -1,10 +1,11 @@ - package com.destroystokyo.paper.profile; - -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ - import java.util.Collection; - import java.util.Set; - import java.util.UUID; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * Represents a players profile for the game, such as UUID, Name, and textures. -diff --git a/src/main/java/com/destroystokyo/paper/profile/ProfileProperty.java b/src/main/java/com/destroystokyo/paper/profile/ProfileProperty.java -index 7b3b6ef533d32169fbeca389bd61cfc6b0e0faee..c50530a03f689be01b6b1482685a09516a4f4cb9 100644 ---- a/src/main/java/com/destroystokyo/paper/profile/ProfileProperty.java -+++ b/src/main/java/com/destroystokyo/paper/profile/ProfileProperty.java -@@ -1,11 +1,11 @@ - package com.destroystokyo.paper.profile; - - import com.google.common.base.Preconditions; -- --import java.util.Objects; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Objects; -+ - /** - * Represents a property on a {@link PlayerProfile} - */ -diff --git a/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java b/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java -index 5bb677ce585b856b3d3e589e29786a29619c56a7..ccac3221fba1bc18a475402beca232bd7b3141f5 100644 ---- a/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java -+++ b/src/main/java/com/destroystokyo/paper/utils/CachedSizeConcurrentLinkedQueue.java -@@ -1,10 +1,11 @@ - package com.destroystokyo.paper.utils; - --import java.util.concurrent.ConcurrentLinkedQueue; --import java.util.concurrent.atomic.LongAdder; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.concurrent.ConcurrentLinkedQueue; -+import java.util.concurrent.atomic.LongAdder; -+ - public class CachedSizeConcurrentLinkedQueue extends ConcurrentLinkedQueue { - private final LongAdder cachedSize = new LongAdder(); - -diff --git a/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java b/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java -index 76f2cb9cd99cad2a9484eab2becd8c36f1dd91b3..0e883d852d105180cd1bc82e8deceb8ccaadb58e 100644 ---- a/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java -+++ b/src/main/java/com/destroystokyo/paper/utils/PaperPluginLogger.java -@@ -1,11 +1,11 @@ - package com.destroystokyo.paper.utils; - - import org.bukkit.plugin.PluginDescriptionFile; -+import org.jetbrains.annotations.NotNull; - - import java.util.logging.Level; - import java.util.logging.LogManager; - import java.util.logging.Logger; --import org.jetbrains.annotations.NotNull; - - /** - * Prevents plugins (e.g. Essentials) from changing the parent of the plugin logger. -diff --git a/src/main/java/dev/tr7zw/yatopia/events/GameProfileLookupEvent.java b/src/main/java/dev/tr7zw/yatopia/events/GameProfileLookupEvent.java -index ff58b8875a07b34de02b9b479ff3e6daf66d7832..074de9ebca9abd6191bdd27e1e8f44abf2090f13 100644 ---- a/src/main/java/dev/tr7zw/yatopia/events/GameProfileLookupEvent.java -+++ b/src/main/java/dev/tr7zw/yatopia/events/GameProfileLookupEvent.java -@@ -1,11 +1,10 @@ - package dev.tr7zw.yatopia.events; - --import java.util.UUID; -- -+import com.mojang.authlib.GameProfile; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - --import com.mojang.authlib.GameProfile; -+import java.util.UUID; - - public class GameProfileLookupEvent extends Event { - private static final HandlerList handlers = new HandlerList(); -diff --git a/src/main/java/org/bukkit/Art.java b/src/main/java/org/bukkit/Art.java -index e7563acf43fdf4f3f3c44b76441757f81e971117..bbc710b093f9536af8f2055fabd4559797ddd1e7 100644 ---- a/src/main/java/org/bukkit/Art.java -+++ b/src/main/java/org/bukkit/Art.java -@@ -1,11 +1,12 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.HashMap; - import org.apache.commons.lang.Validate; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+ - /** - * Represents the art on a painting - */ -diff --git a/src/main/java/org/bukkit/BanEntry.java b/src/main/java/org/bukkit/BanEntry.java -index 2cf11ca4f67480b5e03d2dad0d3ee9283cddc48a..30c8b0a0c62f4a68163d905d27c62a15facc9ffb 100644 ---- a/src/main/java/org/bukkit/BanEntry.java -+++ b/src/main/java/org/bukkit/BanEntry.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import java.util.Date; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Date; -+ - /** - * A single entry from a ban list. This may represent either a player ban or - * an IP ban. -diff --git a/src/main/java/org/bukkit/BanList.java b/src/main/java/org/bukkit/BanList.java -index 96ef22fe879c7be4f67bbb4d60c45ad11764dd5b..f506b644ad1aad53f9b41a642e37dfb5746212aa 100644 ---- a/src/main/java/org/bukkit/BanList.java -+++ b/src/main/java/org/bukkit/BanList.java -@@ -1,10 +1,11 @@ - package org.bukkit; - --import java.util.Date; --import java.util.Set; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Date; -+import java.util.Set; -+ - /** - * A ban list, containing bans of some {@link Type}. - */ -diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 74bb5aa790d072c130a05d0e59afdb1cbf359440..60b0ab4fdf7d36e8830e1fc7402a0242165bfa3e 100644 ---- a/src/main/java/org/bukkit/Bukkit.java -+++ b/src/main/java/org/bukkit/Bukkit.java -@@ -1,26 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableList; --import java.awt.image.BufferedImage; --import java.io.File; --import java.io.Serializable; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.UUID; --import java.util.function.Consumer; --import java.util.logging.Logger; - import org.bukkit.Warning.WarningState; - import org.bukkit.advancement.Advancement; - import org.bukkit.block.data.BlockData; --import org.bukkit.boss.BarColor; --import org.bukkit.boss.BarFlag; --import org.bukkit.boss.BarStyle; --import org.bukkit.boss.BossBar; --import org.bukkit.boss.KeyedBossBar; -+import org.bukkit.boss.*; - import org.bukkit.command.CommandException; - import org.bukkit.command.CommandSender; - import org.bukkit.command.ConsoleCommandSender; -@@ -31,12 +15,7 @@ import org.bukkit.event.inventory.InventoryType; - import org.bukkit.event.server.ServerListPingEvent; - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.help.HelpMap; --import org.bukkit.inventory.Inventory; --import org.bukkit.inventory.InventoryHolder; --import org.bukkit.inventory.ItemFactory; --import org.bukkit.inventory.ItemStack; --import org.bukkit.inventory.Merchant; --import org.bukkit.inventory.Recipe; -+import org.bukkit.inventory.*; - import org.bukkit.inventory.meta.ItemMeta; - import org.bukkit.loot.LootTable; - import org.bukkit.map.MapView; -@@ -51,6 +30,13 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.awt.image.BufferedImage; -+import java.io.File; -+import java.io.Serializable; -+import java.util.*; -+import java.util.function.Consumer; -+import java.util.logging.Logger; -+ - /** - * Represents the Bukkit core, for version and Server singleton handling - */ -diff --git a/src/main/java/org/bukkit/ChatColor.java b/src/main/java/org/bukkit/ChatColor.java -index 06bdfddb7b1acb7bb7b347ad1aa13bff0c823ab1..b6af03b10bb7eee717703489f2dd62c59db57381 100644 ---- a/src/main/java/org/bukkit/ChatColor.java -+++ b/src/main/java/org/bukkit/ChatColor.java -@@ -1,13 +1,14 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; --import java.util.regex.Pattern; - import org.apache.commons.lang.Validate; - import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+import java.util.regex.Pattern; -+ - /** - * All supported color values for chat - */ -diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chunk.java -index 11b691cf59b4a72493c91055fd8c46d7681b4527..4662505ec026bb47cf333152617861303d3fc2b8 100644 ---- a/src/main/java/org/bukkit/Chunk.java -+++ b/src/main/java/org/bukkit/Chunk.java -@@ -1,6 +1,5 @@ - package org.bukkit; - --import java.util.Collection; - import org.bukkit.block.Block; - import org.bukkit.block.BlockState; - import org.bukkit.block.data.BlockData; -@@ -8,6 +7,8 @@ import org.bukkit.entity.Entity; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Represents a chunk of blocks - */ -diff --git a/src/main/java/org/bukkit/CoalType.java b/src/main/java/org/bukkit/CoalType.java -index c07499dbdd49d70717dbd674d97b6dbcfd7e9d5b..fecdf6763ae1289f84f6fb6bbd5757e39cc8bb25 100644 ---- a/src/main/java/org/bukkit/CoalType.java -+++ b/src/main/java/org/bukkit/CoalType.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the two types of coal - */ -diff --git a/src/main/java/org/bukkit/Color.java b/src/main/java/org/bukkit/Color.java -index deae003b7e9a96bbf1c0167d3e1d864e61b07f82..a0c4535901de29653cc10f8ec7b1349160d27256 100644 ---- a/src/main/java/org/bukkit/Color.java -+++ b/src/main/java/org/bukkit/Color.java -@@ -1,12 +1,13 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableMap; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.SerializableAs; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+ - /** - * A container for a color palette. This class is immutable; the set methods - * return a new color. The color names listed as fields are HTML4 standards, -diff --git a/src/main/java/org/bukkit/CropState.java b/src/main/java/org/bukkit/CropState.java -index fb4832fb796a38c0f5f51cf80a67259924f2c607..26cc005e6c2d26fbdd740baa0c9307df7de9d016 100644 ---- a/src/main/java/org/bukkit/CropState.java -+++ b/src/main/java/org/bukkit/CropState.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the different growth states of crops - */ -diff --git a/src/main/java/org/bukkit/Difficulty.java b/src/main/java/org/bukkit/Difficulty.java -index 3f6cbefc2b1414ba2dad709e79288013b3ef73be..b177e2ddd423986c921d5a1b22a75a37f066c970 100644 ---- a/src/main/java/org/bukkit/Difficulty.java -+++ b/src/main/java/org/bukkit/Difficulty.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the various difficulty levels that are available. - */ -diff --git a/src/main/java/org/bukkit/DyeColor.java b/src/main/java/org/bukkit/DyeColor.java -index bd213cabddd8752e609544f24cfba95405726155..9bf31a7ffe10e010a8e0ddc6461bd36f32b7a665 100644 ---- a/src/main/java/org/bukkit/DyeColor.java -+++ b/src/main/java/org/bukkit/DyeColor.java -@@ -1,10 +1,11 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableMap; --import java.util.Map; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * All supported color values for dyes and cloth - */ -diff --git a/src/main/java/org/bukkit/Effect.java b/src/main/java/org/bukkit/Effect.java -index d0c812c72967469122f7f276ced31cfb0e9482dc..6cdac6da8803393a1b92f97682f6ea2ba9f17122 100644 ---- a/src/main/java/org/bukkit/Effect.java -+++ b/src/main/java/org/bukkit/Effect.java -@@ -1,12 +1,13 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.bukkit.block.BlockFace; - import org.bukkit.potion.Potion; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * A list of effects that the server is able to send to players. - */ -diff --git a/src/main/java/org/bukkit/EntityEffect.java b/src/main/java/org/bukkit/EntityEffect.java -index 0d8ee0cb1aae826fae0a920cdbf4152550c7375c..52617422c933357f154b9feb15860767cdf46fe7 100644 ---- a/src/main/java/org/bukkit/EntityEffect.java -+++ b/src/main/java/org/bukkit/EntityEffect.java -@@ -1,25 +1,6 @@ - package org.bukkit; - --import org.bukkit.entity.Ageable; --import org.bukkit.entity.ArmorStand; --import org.bukkit.entity.Cat; --import org.bukkit.entity.Dolphin; --import org.bukkit.entity.Entity; --import org.bukkit.entity.Firework; --import org.bukkit.entity.Fox; --import org.bukkit.entity.Guardian; --import org.bukkit.entity.IronGolem; --import org.bukkit.entity.LivingEntity; --import org.bukkit.entity.Player; --import org.bukkit.entity.Rabbit; --import org.bukkit.entity.Ravager; --import org.bukkit.entity.Squid; --import org.bukkit.entity.Tameable; --import org.bukkit.entity.TippedArrow; --import org.bukkit.entity.Villager; --import org.bukkit.entity.Witch; --import org.bukkit.entity.Wolf; --import org.bukkit.entity.ZombieVillager; -+import org.bukkit.entity.*; - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/org/bukkit/FireworkEffect.java b/src/main/java/org/bukkit/FireworkEffect.java -index 0ae437c0c5052780bd0c78cdd542f62d75796527..bd0d18d24b94f7412782749e94f73958396bc363 100644 ---- a/src/main/java/org/bukkit/FireworkEffect.java -+++ b/src/main/java/org/bukkit/FireworkEffect.java -@@ -2,13 +2,14 @@ package org.bukkit; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap; --import java.util.List; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.SerializableAs; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+import java.util.Map; -+ - /** - * Represents a single firework effect. - */ -diff --git a/src/main/java/org/bukkit/GameMode.java b/src/main/java/org/bukkit/GameMode.java -index 938c3217f92e6d3ef9a637269c469f8359af6347..a2cb54fc8a3327fb8806ed35240d8ffb32ab21e6 100644 ---- a/src/main/java/org/bukkit/GameMode.java -+++ b/src/main/java/org/bukkit/GameMode.java -@@ -1,10 +1,11 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.bukkit.entity.HumanEntity; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the various type of game modes that {@link HumanEntity}s may - * have -diff --git a/src/main/java/org/bukkit/GameRule.java b/src/main/java/org/bukkit/GameRule.java -index 720fe9f51753be28633ea380e732f676b3be4315..618b3419a5aa3198cb5f035dbb74a2ac03d393e6 100644 ---- a/src/main/java/org/bukkit/GameRule.java -+++ b/src/main/java/org/bukkit/GameRule.java -@@ -1,11 +1,12 @@ - package org.bukkit; - - import com.google.common.base.Preconditions; --import java.util.HashMap; --import java.util.Map; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+ - /** - * GameRules dictate certain behavior within Minecraft itself - *
-diff --git a/src/main/java/org/bukkit/GrassSpecies.java b/src/main/java/org/bukkit/GrassSpecies.java -index f9c9ae463aacd593e3aa9caf037ea1e23d56c780..280ab1c5c45be7f3094a2d6f4dca20240be4dd7b 100644 ---- a/src/main/java/org/bukkit/GrassSpecies.java -+++ b/src/main/java/org/bukkit/GrassSpecies.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the different types of grass. - */ -diff --git a/src/main/java/org/bukkit/Instrument.java b/src/main/java/org/bukkit/Instrument.java -index 92194803bcdfbcfdb99567835906ce9219eabd04..dbd66fe1271e8455334f9b57ca9c14fb193d130b 100644 ---- a/src/main/java/org/bukkit/Instrument.java -+++ b/src/main/java/org/bukkit/Instrument.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - public enum Instrument { - - /** -diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java -index ec9eb042ee8354d17f8ad4230c4acc5fcb46f894..14f93ff9b7d650fbfbd6a0e697bf526085810817 100644 ---- a/src/main/java/org/bukkit/Location.java -+++ b/src/main/java/org/bukkit/Location.java -@@ -1,25 +1,22 @@ - package org.bukkit; - - import com.google.common.base.Preconditions; --import java.lang.ref.Reference; --import java.lang.ref.WeakReference; --import com.google.common.base.Preconditions; // Paper --import java.util.HashMap; --import java.util.Map; - import org.bukkit.block.Block; - import org.bukkit.configuration.serialization.ConfigurationSerializable; --import org.bukkit.entity.Entity; // Paper -+import org.bukkit.entity.Entity; -+import org.bukkit.entity.LivingEntity; -+import org.bukkit.entity.Player; - import org.bukkit.util.NumberConversions; - import org.bukkit.util.Vector; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - --// Paper start -+import java.lang.ref.Reference; -+import java.lang.ref.WeakReference; - import java.util.Collection; -+import java.util.HashMap; -+import java.util.Map; - import java.util.function.Predicate; --import org.bukkit.entity.Entity; --import org.bukkit.entity.LivingEntity; --import org.bukkit.entity.Player; - // Paper end - - /** -diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 3a8438fb674006a5cbfd977a1cd016117691f0ee..e9fc4d578f57fd29966632d6a3ae4f69d84774eb 100644 ---- a/src/main/java/org/bukkit/Material.java -+++ b/src/main/java/org/bukkit/Material.java -@@ -1,87 +1,18 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.lang.reflect.Constructor; --import java.util.Locale; --import java.util.Map; --import java.util.function.Consumer; - import org.apache.commons.lang.Validate; --import org.bukkit.block.data.Ageable; --import org.bukkit.block.data.AnaloguePowerable; --import org.bukkit.block.data.Bisected; --import org.bukkit.block.data.BlockData; --import org.bukkit.block.data.Directional; --import org.bukkit.block.data.Levelled; --import org.bukkit.block.data.Lightable; --import org.bukkit.block.data.MultipleFacing; --import org.bukkit.block.data.Orientable; --import org.bukkit.block.data.Powerable; --import org.bukkit.block.data.Rail; --import org.bukkit.block.data.Rotatable; --import org.bukkit.block.data.Snowable; --import org.bukkit.block.data.Waterlogged; --import org.bukkit.block.data.type.Bamboo; --import org.bukkit.block.data.type.Bed; --import org.bukkit.block.data.type.Beehive; --import org.bukkit.block.data.type.Bell; --import org.bukkit.block.data.type.BrewingStand; --import org.bukkit.block.data.type.BubbleColumn; --import org.bukkit.block.data.type.Cake; --import org.bukkit.block.data.type.Campfire; --import org.bukkit.block.data.type.Chest; --import org.bukkit.block.data.type.Cocoa; --import org.bukkit.block.data.type.CommandBlock; --import org.bukkit.block.data.type.Comparator; --import org.bukkit.block.data.type.CoralWallFan; --import org.bukkit.block.data.type.DaylightDetector; --import org.bukkit.block.data.type.Dispenser; --import org.bukkit.block.data.type.Door; --import org.bukkit.block.data.type.EndPortalFrame; --import org.bukkit.block.data.type.EnderChest; --import org.bukkit.block.data.type.Farmland; --import org.bukkit.block.data.type.Fence; --import org.bukkit.block.data.type.Fire; --import org.bukkit.block.data.type.Furnace; --import org.bukkit.block.data.type.Gate; --import org.bukkit.block.data.type.GlassPane; --import org.bukkit.block.data.type.Grindstone; --import org.bukkit.block.data.type.Hopper; --import org.bukkit.block.data.type.Jigsaw; --import org.bukkit.block.data.type.Jukebox; --import org.bukkit.block.data.type.Ladder; --import org.bukkit.block.data.type.Lantern; --import org.bukkit.block.data.type.Leaves; --import org.bukkit.block.data.type.Lectern; --import org.bukkit.block.data.type.NoteBlock; --import org.bukkit.block.data.type.Observer; --import org.bukkit.block.data.type.Piston; --import org.bukkit.block.data.type.PistonHead; --import org.bukkit.block.data.type.RedstoneRail; --import org.bukkit.block.data.type.RedstoneWallTorch; --import org.bukkit.block.data.type.RedstoneWire; --import org.bukkit.block.data.type.Repeater; --import org.bukkit.block.data.type.RespawnAnchor; --import org.bukkit.block.data.type.Sapling; --import org.bukkit.block.data.type.Scaffolding; --import org.bukkit.block.data.type.SeaPickle; --import org.bukkit.block.data.type.Sign; --import org.bukkit.block.data.type.Slab; --import org.bukkit.block.data.type.Snow; --import org.bukkit.block.data.type.Stairs; --import org.bukkit.block.data.type.StructureBlock; --import org.bukkit.block.data.type.Switch; --import org.bukkit.block.data.type.TNT; --import org.bukkit.block.data.type.TechnicalPiston; --import org.bukkit.block.data.type.TrapDoor; --import org.bukkit.block.data.type.Tripwire; --import org.bukkit.block.data.type.TripwireHook; --import org.bukkit.block.data.type.TurtleEgg; --import org.bukkit.block.data.type.Wall; --import org.bukkit.block.data.type.WallSign; -+import org.bukkit.block.data.*; -+import org.bukkit.block.data.type.*; - import org.bukkit.material.MaterialData; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.reflect.Constructor; -+import java.util.Locale; -+import java.util.Map; -+import java.util.function.Consumer; -+ - /** - * An enum of all material IDs accepted by the official server and client - */ -diff --git a/src/main/java/org/bukkit/NamespacedKey.java b/src/main/java/org/bukkit/NamespacedKey.java -index 620a962df6d871c7a3b7728030a05ade772135c2..94de79b15353920ecb09b13807201ada70ee96d7 100644 ---- a/src/main/java/org/bukkit/NamespacedKey.java -+++ b/src/main/java/org/bukkit/NamespacedKey.java -@@ -1,11 +1,12 @@ - package org.bukkit; - - import com.google.common.base.Preconditions; -+import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; -+ - import java.util.Locale; - import java.util.UUID; - import java.util.regex.Pattern; --import org.bukkit.plugin.Plugin; --import org.jetbrains.annotations.NotNull; - - /** - * Represents a String based key which consists of two components - a namespace -diff --git a/src/main/java/org/bukkit/Note.java b/src/main/java/org/bukkit/Note.java -index b1c86aefb6481695959db81da70ee5452567cbf3..9885fc7dc2baa31f207e4c1681f94a9d383db381 100644 ---- a/src/main/java/org/bukkit/Note.java -+++ b/src/main/java/org/bukkit/Note.java -@@ -1,11 +1,12 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * A note class to store a specific note. - */ -diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..067e20e99c69fe743a9eeae78612ebd3e5698280 100644 ---- a/src/main/java/org/bukkit/OfflinePlayer.java -+++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -1,6 +1,5 @@ - package org.bukkit; - --import java.util.UUID; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.entity.AnimalTamer; - import org.bukkit.entity.EntityType; -@@ -9,6 +8,8 @@ import org.bukkit.permissions.ServerOperator; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.UUID; -+ - public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable { - - /** -diff --git a/src/main/java/org/bukkit/Raid.java b/src/main/java/org/bukkit/Raid.java -index 983a8c20a06d2b509602b27f49c090598b8ecc42..1890f5a0c4462ae6f43d1f4595ff33919b15fda5 100644 ---- a/src/main/java/org/bukkit/Raid.java -+++ b/src/main/java/org/bukkit/Raid.java -@@ -1,10 +1,11 @@ - package org.bukkit; - -+import org.bukkit.entity.Raider; -+import org.jetbrains.annotations.NotNull; -+ - import java.util.List; - import java.util.Set; - import java.util.UUID; --import org.bukkit.entity.Raider; --import org.jetbrains.annotations.NotNull; - - /** - * Represents a raid event. -diff --git a/src/main/java/org/bukkit/Registry.java b/src/main/java/org/bukkit/Registry.java -index 91544ade419ddc3c1c4e7393b2d8aa5c64f1b916..495c36aee4c2590c62355d62daa8787ea057d191 100644 ---- a/src/main/java/org/bukkit/Registry.java -+++ b/src/main/java/org/bukkit/Registry.java -@@ -2,10 +2,6 @@ package org.bukkit; - - import com.google.common.base.Predicates; - import com.google.common.collect.ImmutableMap; --import java.util.Arrays; --import java.util.Iterator; --import java.util.Map; --import java.util.function.Predicate; - import org.bukkit.advancement.Advancement; - import org.bukkit.attribute.Attribute; - import org.bukkit.block.Biome; -@@ -18,6 +14,11 @@ import org.bukkit.loot.LootTables; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Arrays; -+import java.util.Iterator; -+import java.util.Map; -+import java.util.function.Predicate; -+ - /** - * Represents a registry of Bukkit objects that may be retrieved by - * {@link NamespacedKey}. -diff --git a/src/main/java/org/bukkit/SandstoneType.java b/src/main/java/org/bukkit/SandstoneType.java -index 6277451c3c6c551078c237cd767b6d70c4f585ea..17e6bf40b639fb4595c4871f4ff8a47582959a5b 100644 ---- a/src/main/java/org/bukkit/SandstoneType.java -+++ b/src/main/java/org/bukkit/SandstoneType.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the three different types of Sandstone - */ -diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 87174c63178ac2acd6dfd23d499e4c7efccaa981..b87df8dbdbf0a00dbe1de8e2474e6394e544fd2f 100644 ---- a/src/main/java/org/bukkit/Server.java -+++ b/src/main/java/org/bukkit/Server.java -@@ -1,26 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableList; --import java.awt.image.BufferedImage; --import java.io.File; --import java.io.Serializable; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.UUID; --import java.util.function.Consumer; --import java.util.logging.Logger; - import org.bukkit.Warning.WarningState; - import org.bukkit.advancement.Advancement; - import org.bukkit.block.data.BlockData; --import org.bukkit.boss.BarColor; --import org.bukkit.boss.BarFlag; --import org.bukkit.boss.BarStyle; --import org.bukkit.boss.BossBar; --import org.bukkit.boss.KeyedBossBar; -+import org.bukkit.boss.*; - import org.bukkit.command.CommandException; - import org.bukkit.command.CommandSender; - import org.bukkit.command.ConsoleCommandSender; -@@ -31,12 +15,7 @@ import org.bukkit.event.inventory.InventoryType; - import org.bukkit.event.server.ServerListPingEvent; - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.help.HelpMap; --import org.bukkit.inventory.Inventory; --import org.bukkit.inventory.InventoryHolder; --import org.bukkit.inventory.ItemFactory; --import org.bukkit.inventory.ItemStack; --import org.bukkit.inventory.Merchant; --import org.bukkit.inventory.Recipe; -+import org.bukkit.inventory.*; - import org.bukkit.inventory.meta.ItemMeta; - import org.bukkit.loot.LootTable; - import org.bukkit.map.MapView; -@@ -52,6 +31,13 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.awt.image.BufferedImage; -+import java.io.File; -+import java.io.Serializable; -+import java.util.*; -+import java.util.function.Consumer; -+import java.util.logging.Logger; -+ - /** - * Represents a server implementation. - */ -diff --git a/src/main/java/org/bukkit/Statistic.java b/src/main/java/org/bukkit/Statistic.java -index 5cb41f417eb87d4aecd61de30f2a44cec5a9a4cd..6e6b0c0d895189d54f413318896dc0b6c8325fe4 100644 ---- a/src/main/java/org/bukkit/Statistic.java -+++ b/src/main/java/org/bukkit/Statistic.java -@@ -1,8 +1,9 @@ - package org.bukkit; - --import java.util.Locale; - import org.jetbrains.annotations.NotNull; - -+import java.util.Locale; -+ - /** - * Represents a countable statistic, which is tracked by the server. - */ -diff --git a/src/main/java/org/bukkit/StructureType.java b/src/main/java/org/bukkit/StructureType.java -index 8acb2b9de398ab5f4b18c46e9ab9eb964df8be3f..6b047565135acc4e5d869127079ec5e82b0f1df4 100644 ---- a/src/main/java/org/bukkit/StructureType.java -+++ b/src/main/java/org/bukkit/StructureType.java -@@ -2,14 +2,15 @@ package org.bukkit; - - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableMap; --import java.util.HashMap; --import java.util.Map; --import java.util.Objects; - import org.apache.commons.lang.Validate; - import org.bukkit.map.MapCursor; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+import java.util.Objects; -+ - /** - * This class handles the creation and storage of all structure types for - * Bukkit. Structure Types are the different kinds of structures that can be -diff --git a/src/main/java/org/bukkit/Tag.java b/src/main/java/org/bukkit/Tag.java -index 8ad4bd9ac9c19f92822a5562ca909e2fd293ee46..341d912d6bc1b58d5847447d17fa7f8e82ee7db2 100644 ---- a/src/main/java/org/bukkit/Tag.java -+++ b/src/main/java/org/bukkit/Tag.java -@@ -1,8 +1,9 @@ - package org.bukkit; - --import java.util.Set; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * Represents a tag that may be defined by the server or a resource pack to - * group like things together. -diff --git a/src/main/java/org/bukkit/TreeSpecies.java b/src/main/java/org/bukkit/TreeSpecies.java -index 2b177f98a74612ddc192745bcbb689ebdb1e104a..1c4ed7e2286c164882cd7598bd6dcbee080c6ad4 100644 ---- a/src/main/java/org/bukkit/TreeSpecies.java -+++ b/src/main/java/org/bukkit/TreeSpecies.java -@@ -1,9 +1,10 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the different species of trees regardless of size. - */ -diff --git a/src/main/java/org/bukkit/Warning.java b/src/main/java/org/bukkit/Warning.java -index efb97712cc9dc7c1e12a59f5b94e4f2ad7c6b7d8..62d6a927fdf3dd177ade65b4062a00a8c1d70a35 100644 ---- a/src/main/java/org/bukkit/Warning.java -+++ b/src/main/java/org/bukkit/Warning.java -@@ -1,13 +1,14 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableMap; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ - import java.lang.annotation.ElementType; - import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; - import java.lang.annotation.Target; - import java.util.Map; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * This designates the warning state for a specific item. -diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 75c9225bd07b4c4b6dcd702c52294a7637eb6884..ffcd103f689d2632972ae171fe79d8316ce1768c 100644 ---- a/src/main/java/org/bukkit/World.java -+++ b/src/main/java/org/bukkit/World.java -@@ -1,30 +1,11 @@ - package org.bukkit; - --import java.io.File; -- --import org.bukkit.event.entity.CreatureSpawnEvent; --import org.bukkit.generator.ChunkGenerator; -- --import java.util.ArrayList; --import java.util.Collection; --import java.util.HashMap; --import java.util.List; --import java.util.Map; --import java.util.UUID; --import java.util.function.Predicate; - import org.bukkit.block.Biome; - import org.bukkit.block.Block; - import org.bukkit.block.data.BlockData; - import org.bukkit.boss.DragonBattle; --import org.bukkit.entity.AbstractArrow; --import org.bukkit.entity.Arrow; --import org.bukkit.entity.Entity; --import org.bukkit.entity.EntityType; --import org.bukkit.entity.FallingBlock; --import org.bukkit.entity.Item; --import org.bukkit.entity.LightningStrike; --import org.bukkit.entity.LivingEntity; --import org.bukkit.entity.Player; -+import org.bukkit.entity.*; -+import org.bukkit.event.entity.CreatureSpawnEvent; - import org.bukkit.generator.BlockPopulator; - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.inventory.ItemStack; -@@ -40,6 +21,10 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.io.File; -+import java.util.*; -+import java.util.function.Predicate; -+ - /** - * Represents a world, which may contain entities, chunks and blocks - */ -diff --git a/src/main/java/org/bukkit/WorldCreator.java b/src/main/java/org/bukkit/WorldCreator.java -index 6e6945dd4c770be04ec09da3958fae751717527a..d94b0564b662e6ab5332fd81aeb00672e1718032 100644 ---- a/src/main/java/org/bukkit/WorldCreator.java -+++ b/src/main/java/org/bukkit/WorldCreator.java -@@ -1,12 +1,13 @@ - package org.bukkit; - --import java.util.Random; - import org.bukkit.command.CommandSender; - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Random; -+ - /** - * Represents various types of options that may be used to create a world. - */ -diff --git a/src/main/java/org/bukkit/WorldType.java b/src/main/java/org/bukkit/WorldType.java -index c48b5579f78760e93dc0ca71223ea5a5ce394873..9f6ac5333a190fcac342fc332dd6592f24205ef0 100644 ---- a/src/main/java/org/bukkit/WorldType.java -+++ b/src/main/java/org/bukkit/WorldType.java -@@ -1,10 +1,11 @@ - package org.bukkit; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents various types of worlds that may exist - */ -diff --git a/src/main/java/org/bukkit/advancement/Advancement.java b/src/main/java/org/bukkit/advancement/Advancement.java -index 7c5009974ac8d64d0e738e60cec45acb0d4ca89a..e4665e99b954f6b78374fb543be86d9f5eb64ee7 100644 ---- a/src/main/java/org/bukkit/advancement/Advancement.java -+++ b/src/main/java/org/bukkit/advancement/Advancement.java -@@ -1,9 +1,10 @@ - package org.bukkit.advancement; - --import java.util.Collection; - import org.bukkit.Keyed; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Represents an advancement that may be awarded to a player. This class is not - * reference safe as the underlying advancement may be reloaded. -diff --git a/src/main/java/org/bukkit/advancement/AdvancementProgress.java b/src/main/java/org/bukkit/advancement/AdvancementProgress.java -index f9bc179da071e7bd57cefc50d6763317fb643b74..00823dc9b8bde870a0447becb8d89d51e6f73547 100644 ---- a/src/main/java/org/bukkit/advancement/AdvancementProgress.java -+++ b/src/main/java/org/bukkit/advancement/AdvancementProgress.java -@@ -1,10 +1,11 @@ - package org.bukkit.advancement; - --import java.util.Collection; --import java.util.Date; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.Date; -+ - /** - * The individual status of an advancement for a player. This class is not - * reference safe as the underlying advancement may be reloaded. -diff --git a/src/main/java/org/bukkit/attribute/AttributeInstance.java b/src/main/java/org/bukkit/attribute/AttributeInstance.java -index f08ee26cc4d479e1bfc5264b8cbe721315de91f2..18bafb04e6e946c05be27a6f71ed75a4bb80db7c 100644 ---- a/src/main/java/org/bukkit/attribute/AttributeInstance.java -+++ b/src/main/java/org/bukkit/attribute/AttributeInstance.java -@@ -1,8 +1,9 @@ - package org.bukkit.attribute; - --import java.util.Collection; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Represents a mutable instance of an attribute and its associated modifiers - * and values. -diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index f0dff145a8c5ae729de5e5f547fff60333c6501e..014e2ebd343130c6c484201c641f65956e210ee6 100644 ---- a/src/main/java/org/bukkit/attribute/AttributeModifier.java -+++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java -@@ -1,9 +1,5 @@ - package org.bukkit.attribute; - --import java.util.HashMap; --import java.util.Map; --import java.util.Objects; --import java.util.UUID; - import org.apache.commons.lang.Validate; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.inventory.EquipmentSlot; -@@ -11,6 +7,11 @@ import org.bukkit.util.NumberConversions; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+import java.util.Objects; -+import java.util.UUID; -+ - /** - * Concrete implementation of an attribute modifier. - */ -diff --git a/src/main/java/org/bukkit/block/Banner.java b/src/main/java/org/bukkit/block/Banner.java -index e6eb3c04b9fa6cd232f95dd5851d365234972efd..9313ea62db43fc3960a1650862349f3cca30d258 100644 ---- a/src/main/java/org/bukkit/block/Banner.java -+++ b/src/main/java/org/bukkit/block/Banner.java -@@ -1,10 +1,11 @@ - package org.bukkit.block; - --import java.util.List; - import org.bukkit.DyeColor; - import org.bukkit.block.banner.Pattern; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Represents a captured state of a banner. - */ -diff --git a/src/main/java/org/bukkit/block/Beacon.java b/src/main/java/org/bukkit/block/Beacon.java -index 6349fa9da3f96df3553fb9552c1cab95338cecb0..e85183e91b4de88d5674bd34f53a58f26e8a2a42 100644 ---- a/src/main/java/org/bukkit/block/Beacon.java -+++ b/src/main/java/org/bukkit/block/Beacon.java -@@ -1,6 +1,5 @@ - package org.bukkit.block; - --import java.util.Collection; - import org.bukkit.Nameable; - import org.bukkit.entity.LivingEntity; - import org.bukkit.potion.PotionEffect; -@@ -8,6 +7,8 @@ import org.bukkit.potion.PotionEffectType; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+ - /** - * Represents a captured state of a beacon. - */ -diff --git a/src/main/java/org/bukkit/block/Biome.java b/src/main/java/org/bukkit/block/Biome.java -index 52a527bb5f6e5b133d9f75556bf72242928b703b..7a303067958c774b420aa91de186e1a435f8b4ee 100644 ---- a/src/main/java/org/bukkit/block/Biome.java -+++ b/src/main/java/org/bukkit/block/Biome.java -@@ -1,10 +1,11 @@ - package org.bukkit.block; - --import java.util.Locale; - import org.bukkit.Keyed; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; - -+import java.util.Locale; -+ - /** - * Holds all accepted Biomes in the default server - */ -diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 999f2a362c62cf58752d9c3d378aafe6754d2aaf..297e60157ce3eca48716248b11daae7ad85f709a 100644 ---- a/src/main/java/org/bukkit/block/Block.java -+++ b/src/main/java/org/bukkit/block/Block.java -@@ -1,12 +1,6 @@ - package org.bukkit.block; - --import java.util.Collection; -- --import org.bukkit.Chunk; --import org.bukkit.FluidCollisionMode; --import org.bukkit.Location; --import org.bukkit.Material; --import org.bukkit.World; -+import org.bukkit.*; - import org.bukkit.block.data.Bisected; - import org.bukkit.block.data.BlockData; - import org.bukkit.entity.Entity; -@@ -19,6 +13,8 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+ - /** - * Represents a block. This is a live object, and only one Block may exist for - * any given location in a world. The state of the block may change -diff --git a/src/main/java/org/bukkit/block/Chest.java b/src/main/java/org/bukkit/block/Chest.java -index db6affbc78106b2d93b41953b624a0bca0ca1d72..cb9380acda62e20fba4bbca08126e1d932f0bee3 100644 ---- a/src/main/java/org/bukkit/block/Chest.java -+++ b/src/main/java/org/bukkit/block/Chest.java -@@ -1,9 +1,7 @@ - package org.bukkit.block; - --import com.destroystokyo.paper.loottable.LootableBlockInventory; // Paper --import org.bukkit.Nameable; // Paper -+import com.destroystokyo.paper.loottable.LootableBlockInventory; - import org.bukkit.inventory.Inventory; --import org.bukkit.loot.Lootable; - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/org/bukkit/block/Dispenser.java b/src/main/java/org/bukkit/block/Dispenser.java -index 07af1a3f011d4b96275f919d302ac367198e923e..66f39dd6252ab2d3938ff08caa9f7f90cc8aaf8f 100644 ---- a/src/main/java/org/bukkit/block/Dispenser.java -+++ b/src/main/java/org/bukkit/block/Dispenser.java -@@ -2,7 +2,6 @@ package org.bukkit.block; - - import com.destroystokyo.paper.loottable.LootableBlockInventory; - import org.bukkit.Nameable; --import org.bukkit.loot.Lootable; - import org.bukkit.projectiles.BlockProjectileSource; - import org.jetbrains.annotations.Nullable; - -diff --git a/src/main/java/org/bukkit/block/Dropper.java b/src/main/java/org/bukkit/block/Dropper.java -index c76202321e29ad67597ca3017eb8d9baf6787383..4c1930410a172c649ad7900089264481fc154f28 100644 ---- a/src/main/java/org/bukkit/block/Dropper.java -+++ b/src/main/java/org/bukkit/block/Dropper.java -@@ -1,7 +1,6 @@ - package org.bukkit.block; - - import com.destroystokyo.paper.loottable.LootableBlockInventory; --import org.bukkit.loot.Lootable; - - /** - * Represents a captured state of a dropper. -diff --git a/src/main/java/org/bukkit/block/EntityBlockStorage.java b/src/main/java/org/bukkit/block/EntityBlockStorage.java -index f3f8d765d5d487aa14edf0b88c32608fb804c331..46ced8da164ce79336fb91169630d3334883ff7d 100644 ---- a/src/main/java/org/bukkit/block/EntityBlockStorage.java -+++ b/src/main/java/org/bukkit/block/EntityBlockStorage.java -@@ -1,9 +1,10 @@ - package org.bukkit.block; - --import java.util.List; - import org.bukkit.entity.Entity; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Represents a captured state of a block which stores entities. - * -diff --git a/src/main/java/org/bukkit/block/Hopper.java b/src/main/java/org/bukkit/block/Hopper.java -index 7ade312f180b7e30871d3a3240c76325cc369c26..58b6bed58a623b77a15e739d32b2057d7956a9c9 100644 ---- a/src/main/java/org/bukkit/block/Hopper.java -+++ b/src/main/java/org/bukkit/block/Hopper.java -@@ -1,7 +1,6 @@ - package org.bukkit.block; - - import com.destroystokyo.paper.loottable.LootableBlockInventory; --import org.bukkit.loot.Lootable; - - /** - * Represents a captured state of a hopper. -diff --git a/src/main/java/org/bukkit/block/PistonMoveReaction.java b/src/main/java/org/bukkit/block/PistonMoveReaction.java -index b90f5dc345ad2cdd3ae353dc57f42a14c231d18a..02df8868246b1ac883c600a921388284f791f241 100644 ---- a/src/main/java/org/bukkit/block/PistonMoveReaction.java -+++ b/src/main/java/org/bukkit/block/PistonMoveReaction.java -@@ -1,8 +1,9 @@ - package org.bukkit.block; - -+import org.jetbrains.annotations.Nullable; -+ - import java.util.HashMap; - import java.util.Map; --import org.jetbrains.annotations.Nullable; - - /** - * Represents how a block or entity will react when interacting with a piston -diff --git a/src/main/java/org/bukkit/block/ShulkerBox.java b/src/main/java/org/bukkit/block/ShulkerBox.java -index 172f383fea619127324fec2b043639fd0683f135..4be2b7719c632c640668f5af951643e223e78e44 100644 ---- a/src/main/java/org/bukkit/block/ShulkerBox.java -+++ b/src/main/java/org/bukkit/block/ShulkerBox.java -@@ -2,7 +2,6 @@ package org.bukkit.block; - - import com.destroystokyo.paper.loottable.LootableBlockInventory; - import org.bukkit.DyeColor; --import org.bukkit.loot.Lootable; - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/org/bukkit/block/Skull.java b/src/main/java/org/bukkit/block/Skull.java -index a6914f01e01e9103702185f92b0209b3c84c152a..5d07bf9a002dd8758d0998c899cf9a7e27ed9a92 100644 ---- a/src/main/java/org/bukkit/block/Skull.java -+++ b/src/main/java/org/bukkit/block/Skull.java -@@ -1,5 +1,6 @@ - package org.bukkit.block; - -+import com.destroystokyo.paper.profile.PlayerProfile; - import org.bukkit.Material; - import org.bukkit.OfflinePlayer; - import org.bukkit.SkullType; -@@ -7,7 +8,6 @@ import org.bukkit.block.data.BlockData; - import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; --import com.destroystokyo.paper.profile.PlayerProfile; // Paper - - /** - * Represents a captured state of a skull block. -diff --git a/src/main/java/org/bukkit/block/banner/Pattern.java b/src/main/java/org/bukkit/block/banner/Pattern.java -index 5c293ab0b7505267dda019c3e60d3b053c0fdd27..e5327b59cfb7b5ed547e34a8c02d293a9b6fd22d 100644 ---- a/src/main/java/org/bukkit/block/banner/Pattern.java -+++ b/src/main/java/org/bukkit/block/banner/Pattern.java -@@ -1,13 +1,14 @@ - package org.bukkit.block.banner; - - import com.google.common.collect.ImmutableMap; --import java.util.Map; --import java.util.NoSuchElementException; - import org.bukkit.DyeColor; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.SerializableAs; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+import java.util.NoSuchElementException; -+ - @SerializableAs("Pattern") - public class Pattern implements ConfigurationSerializable { - -diff --git a/src/main/java/org/bukkit/block/banner/PatternType.java b/src/main/java/org/bukkit/block/banner/PatternType.java -index e6ce94ed2a4d64204aac60c4b2dc138f258e4720..d53ee8f7f10aef1a1629a2b094c0a5a22e858132 100644 ---- a/src/main/java/org/bukkit/block/banner/PatternType.java -+++ b/src/main/java/org/bukkit/block/banner/PatternType.java -@@ -1,11 +1,12 @@ - package org.bukkit.block.banner; - --import java.util.HashMap; --import java.util.Map; - import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+ - public enum PatternType { - BASE("b"), - SQUARE_BOTTOM_LEFT("bl"), -diff --git a/src/main/java/org/bukkit/block/data/Directional.java b/src/main/java/org/bukkit/block/data/Directional.java -index 825ff08ddd1d0b2448a3ccc2e821af4ae6c97048..4cd48c762a10c523564a63d2296baf3f00d56ced 100644 ---- a/src/main/java/org/bukkit/block/data/Directional.java -+++ b/src/main/java/org/bukkit/block/data/Directional.java -@@ -1,9 +1,10 @@ - package org.bukkit.block.data; - --import java.util.Set; - import org.bukkit.block.BlockFace; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * 'facing' represents the face towards which the block is pointing. - *
-diff --git a/src/main/java/org/bukkit/block/data/MultipleFacing.java b/src/main/java/org/bukkit/block/data/MultipleFacing.java -index e10a52555b21f176bd89c0bbb0a7719ab13b0507..48db270aff771277af95628691cfb2a012627569 100644 ---- a/src/main/java/org/bukkit/block/data/MultipleFacing.java -+++ b/src/main/java/org/bukkit/block/data/MultipleFacing.java -@@ -1,9 +1,10 @@ - package org.bukkit.block.data; - --import java.util.Set; - import org.bukkit.block.BlockFace; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * This class encompasses the 'north', 'east', 'south', 'west', 'up', 'down' - * boolean flags which are used to set which faces of the block textures are -diff --git a/src/main/java/org/bukkit/block/data/Orientable.java b/src/main/java/org/bukkit/block/data/Orientable.java -index 5b4561a16583347578f7eb8d5e0d8c24c693bd98..5c7df38a619c90144e9b19a4b887b0442a10eee3 100644 ---- a/src/main/java/org/bukkit/block/data/Orientable.java -+++ b/src/main/java/org/bukkit/block/data/Orientable.java -@@ -1,9 +1,10 @@ - package org.bukkit.block.data; - --import java.util.Set; - import org.bukkit.Axis; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * 'axis' represents the axis along whilst this block is oriented. - *
-diff --git a/src/main/java/org/bukkit/block/data/Rail.java b/src/main/java/org/bukkit/block/data/Rail.java -index b89938800152df6d3b83639dfd03058106d8fe41..e8300a7414b61699b458eb410fa3fd4b0d0b9ab7 100644 ---- a/src/main/java/org/bukkit/block/data/Rail.java -+++ b/src/main/java/org/bukkit/block/data/Rail.java -@@ -1,8 +1,9 @@ - package org.bukkit.block.data; - --import java.util.Set; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * 'shape' represents the current layout of a minecart rail. - *
-diff --git a/src/main/java/org/bukkit/block/data/type/BrewingStand.java b/src/main/java/org/bukkit/block/data/type/BrewingStand.java -index 6a7687d5248eff11fca1e41d1cc6be2ffde1aab0..57e892911d93c288c6f8dd1a0ec0ee0e913e3ede 100644 ---- a/src/main/java/org/bukkit/block/data/type/BrewingStand.java -+++ b/src/main/java/org/bukkit/block/data/type/BrewingStand.java -@@ -1,9 +1,10 @@ - package org.bukkit.block.data.type; - --import java.util.Set; - import org.bukkit.block.data.BlockData; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * Interface to the 'has_bottle_0', 'has_bottle_1', 'has_bottle_2' flags on a - * brewing stand which indicate which bottles are rendered on the outside. -diff --git a/src/main/java/org/bukkit/block/data/type/RedstoneWire.java b/src/main/java/org/bukkit/block/data/type/RedstoneWire.java -index ba8a80ee3ea3975e358b56f38255913fd1342af5..f3e98e4b96758ccf1bef7c18b05809fb15017b4c 100644 ---- a/src/main/java/org/bukkit/block/data/type/RedstoneWire.java -+++ b/src/main/java/org/bukkit/block/data/type/RedstoneWire.java -@@ -1,10 +1,11 @@ - package org.bukkit.block.data.type; - --import java.util.Set; - import org.bukkit.block.BlockFace; - import org.bukkit.block.data.AnaloguePowerable; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * 'north', 'east', 'south', 'west' represent the types of connections this - * redstone wire has to adjacent blocks. -diff --git a/src/main/java/org/bukkit/block/data/type/TrapDoor.java b/src/main/java/org/bukkit/block/data/type/TrapDoor.java -index 13876b37984dc35bf7424128116a24528c549638..a4f17715bfa495cd0ad88c31dc13bf993323b4a5 100644 ---- a/src/main/java/org/bukkit/block/data/type/TrapDoor.java -+++ b/src/main/java/org/bukkit/block/data/type/TrapDoor.java -@@ -1,10 +1,6 @@ - package org.bukkit.block.data.type; - --import org.bukkit.block.data.Bisected; --import org.bukkit.block.data.Directional; --import org.bukkit.block.data.Openable; --import org.bukkit.block.data.Powerable; --import org.bukkit.block.data.Waterlogged; -+import org.bukkit.block.data.*; - - public interface TrapDoor extends Bisected, Directional, Openable, Powerable, Waterlogged { - } -diff --git a/src/main/java/org/bukkit/boss/BossBar.java b/src/main/java/org/bukkit/boss/BossBar.java -index 70274f2e2a1d6f27c4febd9d5d5fa3ee1b49f100..1d3398500bab55fdf04f890cdc3c62d29dd2303b 100644 ---- a/src/main/java/org/bukkit/boss/BossBar.java -+++ b/src/main/java/org/bukkit/boss/BossBar.java -@@ -1,10 +1,11 @@ - package org.bukkit.boss; - --import java.util.List; - import org.bukkit.entity.Player; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - public interface BossBar { - - /** -diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java -index c10fc8d2386301bc2caddcdb1cd18566bcaa8689..7013fdab5474905d59d238f1f16e5a4f49b15d5e 100644 ---- a/src/main/java/org/bukkit/command/Command.java -+++ b/src/main/java/org/bukkit/command/Command.java -@@ -1,16 +1,8 @@ - package org.bukkit.command; - - import com.google.common.collect.ImmutableList; --import java.util.ArrayList; --import java.util.Collections; --import java.util.List; --import java.util.Set; - import org.apache.commons.lang.Validate; --import org.bukkit.Bukkit; --import org.bukkit.ChatColor; --import org.bukkit.GameRule; --import org.bukkit.Location; --import org.bukkit.Server; -+import org.bukkit.*; - import org.bukkit.entity.Player; - import org.bukkit.entity.minecart.CommandMinecart; - import org.bukkit.permissions.Permissible; -@@ -19,6 +11,11 @@ import org.bukkit.util.StringUtil; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.ArrayList; -+import java.util.Collections; -+import java.util.List; -+import java.util.Set; -+ - /** - * Represents a Command, which executes various tasks upon user input - */ -diff --git a/src/main/java/org/bukkit/command/CommandMap.java b/src/main/java/org/bukkit/command/CommandMap.java -index 864c263bbd4dd6dd7c37a74b39b1a40a884d0731..6150d764d7dd47005242c210cfdb755378091c44 100644 ---- a/src/main/java/org/bukkit/command/CommandMap.java -+++ b/src/main/java/org/bukkit/command/CommandMap.java -@@ -1,10 +1,11 @@ - package org.bukkit.command; - --import java.util.List; - import org.bukkit.Location; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - public interface CommandMap { - - /** -diff --git a/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/src/main/java/org/bukkit/command/FormattedCommandAlias.java -index 9d4f553c04784cca63901a56a7aea62a5cae1d72..b21531e3a382c6ba8adabe0a5ec6ed860f5a27ea 100644 ---- a/src/main/java/org/bukkit/command/FormattedCommandAlias.java -+++ b/src/main/java/org/bukkit/command/FormattedCommandAlias.java -@@ -1,12 +1,12 @@ - package org.bukkit.command; - --import java.util.ArrayList; --import java.util.regex.Matcher; // Paper --import java.util.regex.Pattern; // Paper -- - import org.bukkit.Bukkit; - import org.jetbrains.annotations.NotNull; - -+import java.util.ArrayList; -+import java.util.regex.Matcher; -+import java.util.regex.Pattern; -+ - public class FormattedCommandAlias extends Command { - private final String[] formatStrings; - -diff --git a/src/main/java/org/bukkit/command/MessageCommandSender.java b/src/main/java/org/bukkit/command/MessageCommandSender.java -index ca1893e9fb41baae0d103f1a925e33f3dfa273be..2e852d6ec00f7a58bf77841bb8ca94deb114f5c2 100644 ---- a/src/main/java/org/bukkit/command/MessageCommandSender.java -+++ b/src/main/java/org/bukkit/command/MessageCommandSender.java -@@ -7,9 +7,9 @@ import org.bukkit.permissions.Permission; - import org.bukkit.permissions.PermissionAttachment; - import org.bukkit.permissions.PermissionAttachmentInfo; - import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; - - import java.util.Set; --import org.jetbrains.annotations.NotNull; - - /** - * For when all you care about is just messaging -diff --git a/src/main/java/org/bukkit/command/PluginCommand.java b/src/main/java/org/bukkit/command/PluginCommand.java -index 7f153000eee0f563ee4f1e3c218aadb5b6a33a97..81e33a1c7b4ce99596109109ae7670b727365094 100644 ---- a/src/main/java/org/bukkit/command/PluginCommand.java -+++ b/src/main/java/org/bukkit/command/PluginCommand.java -@@ -1,11 +1,12 @@ - package org.bukkit.command; - --import java.util.List; - import org.apache.commons.lang.Validate; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents a {@link Command} belonging to a plugin - */ -diff --git a/src/main/java/org/bukkit/command/PluginCommandYamlParser.java b/src/main/java/org/bukkit/command/PluginCommandYamlParser.java -index a542c4bb3c973bbe4b976642feccde6a4d90cb7b..2f776eacaaa37a5e052a8dc11f43fa1dd3045dd1 100644 ---- a/src/main/java/org/bukkit/command/PluginCommandYamlParser.java -+++ b/src/main/java/org/bukkit/command/PluginCommandYamlParser.java -@@ -1,12 +1,13 @@ - package org.bukkit.command; - -+import org.bukkit.Bukkit; -+import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; -+ - import java.util.ArrayList; - import java.util.List; - import java.util.Map; - import java.util.Map.Entry; --import org.bukkit.Bukkit; --import org.bukkit.plugin.Plugin; --import org.jetbrains.annotations.NotNull; - - public class PluginCommandYamlParser { - -diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java -index 460fda05a62b12db2edcfb7ea8b2a5dd8e4b110d..fcbc298043614da5f4bd849e9f65961da276e15e 100644 ---- a/src/main/java/org/bukkit/command/SimpleCommandMap.java -+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java -@@ -1,30 +1,19 @@ - package org.bukkit.command; - --import java.util.ArrayList; --import java.util.Arrays; --import java.util.Collection; --import java.util.Collections; --import java.util.HashMap; --import java.util.Iterator; --import java.util.List; --import java.util.Map; -- - import com.destroystokyo.paper.event.server.ServerExceptionEvent; - import com.destroystokyo.paper.exception.ServerCommandException; - import com.destroystokyo.paper.exception.ServerTabCompleteException; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; - import org.bukkit.Server; --import org.bukkit.command.defaults.BukkitCommand; --import org.bukkit.command.defaults.HelpCommand; --import org.bukkit.command.defaults.PluginsCommand; --import org.bukkit.command.defaults.ReloadCommand; --import org.bukkit.command.defaults.VersionCommand; -+import org.bukkit.command.defaults.*; - import org.bukkit.entity.Player; - import org.bukkit.util.StringUtil; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+ - public class SimpleCommandMap implements CommandMap { - protected final Map knownCommands = new HashMap(); - private final Server server; -diff --git a/src/main/java/org/bukkit/command/TabCompleter.java b/src/main/java/org/bukkit/command/TabCompleter.java -index e9cf71f5ce9d7fd193c7423300ddbf5c77c9accf..80127fda31e25974c445b5e932130740c1621cad 100644 ---- a/src/main/java/org/bukkit/command/TabCompleter.java -+++ b/src/main/java/org/bukkit/command/TabCompleter.java -@@ -1,9 +1,10 @@ - package org.bukkit.command; - --import java.util.List; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents a class which can suggest tab completions for commands. - */ -diff --git a/src/main/java/org/bukkit/command/defaults/BukkitCommand.java b/src/main/java/org/bukkit/command/defaults/BukkitCommand.java -index cb032d038f52e6b9cf51c203cfc01cc4a7622772..a776bf9e511ec8eca8e59b5966fe7e676fccc5d6 100644 ---- a/src/main/java/org/bukkit/command/defaults/BukkitCommand.java -+++ b/src/main/java/org/bukkit/command/defaults/BukkitCommand.java -@@ -1,9 +1,10 @@ - package org.bukkit.command.defaults; - --import java.util.List; - import org.bukkit.command.Command; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - public abstract class BukkitCommand extends Command { - protected BukkitCommand(@NotNull String name) { - super(name); -diff --git a/src/main/java/org/bukkit/command/defaults/HelpCommand.java b/src/main/java/org/bukkit/command/defaults/HelpCommand.java -index 98027fdd8dbd2c0ed84a065f7b991738ee397a66..e9da1efa1229ef0ffad16478dcb0679731585104 100644 ---- a/src/main/java/org/bukkit/command/defaults/HelpCommand.java -+++ b/src/main/java/org/bukkit/command/defaults/HelpCommand.java -@@ -1,13 +1,6 @@ - package org.bukkit.command.defaults; - - import com.google.common.collect.ImmutableList; --import java.util.ArrayList; --import java.util.Arrays; --import java.util.HashMap; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.TreeSet; - import org.apache.commons.lang.ArrayUtils; - import org.apache.commons.lang.StringUtils; - import org.apache.commons.lang.Validate; -@@ -24,6 +17,8 @@ import org.bukkit.util.ChatPaginator; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+ - public class HelpCommand extends BukkitCommand { - public HelpCommand() { - super("help"); -diff --git a/src/main/java/org/bukkit/command/defaults/PluginsCommand.java b/src/main/java/org/bukkit/command/defaults/PluginsCommand.java -index cbcdca042b54531fdf45e8631c4bbe8c74f68341..423ad250e06acb3a57a8a618e8d52f9a9d92483b 100644 ---- a/src/main/java/org/bukkit/command/defaults/PluginsCommand.java -+++ b/src/main/java/org/bukkit/command/defaults/PluginsCommand.java -@@ -1,24 +1,19 @@ - package org.bukkit.command.defaults; - --import java.util.Arrays; --import java.util.Collections; --import java.util.List; --import java.util.Map; --import java.util.TreeMap; -- --import org.bukkit.Bukkit; --import org.bukkit.ChatColor; --import org.bukkit.command.CommandSender; --import org.bukkit.plugin.Plugin; --import org.jetbrains.annotations.NotNull; --// Spigot start - import net.md_5.bungee.api.chat.BaseComponent; - import net.md_5.bungee.api.chat.ClickEvent; - import net.md_5.bungee.api.chat.ComponentBuilder; --import net.md_5.bungee.api.chat.HoverEvent; - import net.md_5.bungee.api.chat.ComponentBuilder.FormatRetention; -+import net.md_5.bungee.api.chat.HoverEvent; -+import org.bukkit.Bukkit; -+import org.bukkit.ChatColor; -+import org.bukkit.command.CommandSender; - import org.bukkit.entity.Player; -+import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.PluginDescriptionFile; -+import org.jetbrains.annotations.NotNull; -+ -+import java.util.*; - // Spigot end - - public class PluginsCommand extends BukkitCommand { -diff --git a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java -index 0c7ba0718de2b93d013968ca0fec34ffd423990f..4557d88d4970c672210062cd0f96e195f93f2219 100644 ---- a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java -+++ b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java -@@ -1,14 +1,14 @@ - package org.bukkit.command.defaults; - --import java.util.Arrays; --import java.util.Collections; --import java.util.List; - import org.bukkit.Bukkit; - import org.bukkit.ChatColor; - import org.bukkit.command.Command; - import org.bukkit.command.CommandSender; - import org.jetbrains.annotations.NotNull; - -+import java.util.Arrays; -+import java.util.List; -+ - public class ReloadCommand extends BukkitCommand { - public ReloadCommand(@NotNull String name) { - super(name); -diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java -index a47ed6b290c051ff076900028b929745aac0ba55..96f5242c37142eed55fba90f8dc712c92aeaee88 100644 ---- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java -+++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java -@@ -1,22 +1,12 @@ - package org.bukkit.command.defaults; - --import com.destroystokyo.paper.util.VersionFetcher; // Paper - version supplier -+import com.destroystokyo.paper.util.VersionFetcher; - import com.google.common.base.Charsets; - import com.google.common.collect.ImmutableList; - import com.google.common.io.Resources; - 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.net.URL; --import java.net.URLEncoder; --import java.util.ArrayList; --import java.util.Arrays; --import java.util.HashSet; --import java.util.List; --import java.util.Set; --import java.util.concurrent.locks.ReentrantLock; - import org.apache.commons.lang.Validate; - import org.bukkit.Bukkit; - import org.bukkit.ChatColor; -@@ -26,6 +16,13 @@ import org.bukkit.plugin.PluginDescriptionFile; - import org.bukkit.util.StringUtil; - import org.jetbrains.annotations.NotNull; - -+import java.io.BufferedReader; -+import java.io.IOException; -+import java.net.URL; -+import java.net.URLEncoder; -+import java.util.*; -+import java.util.concurrent.locks.ReentrantLock; -+ - public class VersionCommand extends BukkitCommand { - private VersionFetcher versionFetcher; - private VersionFetcher getVersionFetcher() { // lazy load because unsafe isn't available at command registration -diff --git a/src/main/java/org/bukkit/configuration/Configuration.java b/src/main/java/org/bukkit/configuration/Configuration.java -index f12a98b1beb20a039f9830a00be89742a307d9ad..8d27175296f3d36f02b2b3d2138cc5f22af7b40c 100644 ---- a/src/main/java/org/bukkit/configuration/Configuration.java -+++ b/src/main/java/org/bukkit/configuration/Configuration.java -@@ -1,9 +1,10 @@ - package org.bukkit.configuration; - --import java.util.Map; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents a source of configurable options and settings - */ -diff --git a/src/main/java/org/bukkit/configuration/ConfigurationSection.java b/src/main/java/org/bukkit/configuration/ConfigurationSection.java -index 5a6e621d5876ce1ec5c5fb5559cb2bfa01ecba20..05222f3099a050e174a347c63c120b42bb54c87f 100644 ---- a/src/main/java/org/bukkit/configuration/ConfigurationSection.java -+++ b/src/main/java/org/bukkit/configuration/ConfigurationSection.java -@@ -1,8 +1,5 @@ - package org.bukkit.configuration; - --import java.util.List; --import java.util.Map; --import java.util.Set; - import org.bukkit.Color; - import org.bukkit.Location; - import org.bukkit.OfflinePlayer; -@@ -12,6 +9,10 @@ import org.bukkit.util.Vector; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+import java.util.Map; -+import java.util.Set; -+ - /** - * Represents a section of a {@link Configuration} - */ -diff --git a/src/main/java/org/bukkit/configuration/MemoryConfiguration.java b/src/main/java/org/bukkit/configuration/MemoryConfiguration.java -index 010a97fee25233929e933aafad9a34a15bc4b847..59382f4a57265fc960505635fb09b978d987f853 100644 ---- a/src/main/java/org/bukkit/configuration/MemoryConfiguration.java -+++ b/src/main/java/org/bukkit/configuration/MemoryConfiguration.java -@@ -1,10 +1,11 @@ - package org.bukkit.configuration; - --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * This is a {@link Configuration} implementation that does not save or load - * from any source, and stores all values in memory only. -diff --git a/src/main/java/org/bukkit/configuration/MemorySection.java b/src/main/java/org/bukkit/configuration/MemorySection.java -index f03dec0c9e489bb3deac760fd11970055998cf59..82ed6a1fbf73bf3199ceda47f87aba332a3abca1 100644 ---- a/src/main/java/org/bukkit/configuration/MemorySection.java -+++ b/src/main/java/org/bukkit/configuration/MemorySection.java -@@ -1,12 +1,5 @@ - package org.bukkit.configuration; - --import static org.bukkit.util.NumberConversions.*; --import java.util.ArrayList; --import java.util.LinkedHashMap; --import java.util.LinkedHashSet; --import java.util.List; --import java.util.Map; --import java.util.Set; - import org.apache.commons.lang.Validate; - import org.bukkit.Color; - import org.bukkit.Location; -@@ -17,6 +10,10 @@ import org.bukkit.util.Vector; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+ -+import static org.bukkit.util.NumberConversions.*; -+ - /** - * A type of {@link ConfigurationSection} that is stored in memory. - */ -diff --git a/src/main/java/org/bukkit/configuration/file/FileConfiguration.java b/src/main/java/org/bukkit/configuration/file/FileConfiguration.java -index 581889ffa2afbf17ca2ebe2905f2a041fe760cd8..fad42b6efd5022ca67381be473bfd31060400832 100644 ---- a/src/main/java/org/bukkit/configuration/file/FileConfiguration.java -+++ b/src/main/java/org/bukkit/configuration/file/FileConfiguration.java -@@ -2,16 +2,6 @@ package org.bukkit.configuration.file; - - import com.google.common.base.Charsets; - import com.google.common.io.Files; --import java.io.BufferedReader; --import java.io.File; --import java.io.FileInputStream; --import java.io.FileNotFoundException; --import java.io.FileOutputStream; --import java.io.IOException; --import java.io.InputStreamReader; --import java.io.OutputStreamWriter; --import java.io.Reader; --import java.io.Writer; - import org.apache.commons.lang.Validate; - import org.bukkit.configuration.Configuration; - import org.bukkit.configuration.InvalidConfigurationException; -@@ -19,6 +9,8 @@ import org.bukkit.configuration.MemoryConfiguration; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.io.*; -+ - /** - * This is a base class for all File based implementations of {@link - * Configuration} -diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java -index be8d35f1560b1e751f3c3102b9ae094ed61fe911..555c6f37d5b9daf0f7231070ee79fcfd36e87bfc 100644 ---- a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java -+++ b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java -@@ -1,11 +1,5 @@ - package org.bukkit.configuration.file; - --import java.io.File; --import java.io.FileNotFoundException; --import java.io.IOException; --import java.io.Reader; --import java.util.Map; --import java.util.logging.Level; - import org.apache.commons.lang.Validate; - import org.bukkit.Bukkit; - import org.bukkit.configuration.Configuration; -@@ -18,6 +12,13 @@ import org.yaml.snakeyaml.Yaml; - import org.yaml.snakeyaml.error.YAMLException; - import org.yaml.snakeyaml.representer.Representer; - -+import java.io.File; -+import java.io.FileNotFoundException; -+import java.io.IOException; -+import java.io.Reader; -+import java.util.Map; -+import java.util.logging.Level; -+ - /** - * An implementation of {@link Configuration} which saves all files in Yaml. - * Note that this implementation is not synchronized. -diff --git a/src/main/java/org/bukkit/configuration/file/YamlConstructor.java b/src/main/java/org/bukkit/configuration/file/YamlConstructor.java -index c8466a29a22d6f685e856feaa8e1990aa35ae72c..7de54663e6f9dd861ed8aea716f70eae010a4372 100644 ---- a/src/main/java/org/bukkit/configuration/file/YamlConstructor.java -+++ b/src/main/java/org/bukkit/configuration/file/YamlConstructor.java -@@ -1,7 +1,5 @@ - package org.bukkit.configuration.file; - --import java.util.LinkedHashMap; --import java.util.Map; - import org.bukkit.configuration.serialization.ConfigurationSerialization; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; -@@ -10,6 +8,9 @@ import org.yaml.snakeyaml.error.YAMLException; - import org.yaml.snakeyaml.nodes.Node; - import org.yaml.snakeyaml.nodes.Tag; - -+import java.util.LinkedHashMap; -+import java.util.Map; -+ - public class YamlConstructor extends SafeConstructor { - - public YamlConstructor() { -diff --git a/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java b/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java -index f03da36223c7b73678c58f17b49f42f670dd29a3..dc78a24b328b6f409f8d3a34ffc45fb35b74d581 100644 ---- a/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java -+++ b/src/main/java/org/bukkit/configuration/file/YamlRepresenter.java -@@ -1,7 +1,5 @@ - package org.bukkit.configuration.file; - --import java.util.LinkedHashMap; --import java.util.Map; - import org.bukkit.configuration.ConfigurationSection; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.ConfigurationSerialization; -@@ -9,6 +7,9 @@ import org.jetbrains.annotations.NotNull; - import org.yaml.snakeyaml.nodes.Node; - import org.yaml.snakeyaml.representer.Representer; - -+import java.util.LinkedHashMap; -+import java.util.Map; -+ - public class YamlRepresenter extends Representer { - - public YamlRepresenter() { -diff --git a/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java b/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java -index 177944d4e8cf37d7f9a8884cafdeefd7c3b3d78b..a666db15e5cbd9c2939d17cbab3f82be7020b7c1 100644 ---- a/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java -+++ b/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerializable.java -@@ -1,8 +1,9 @@ - package org.bukkit.configuration.serialization; - --import java.util.Map; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+ - /** - * Represents an object that may be serialized. - *

-diff --git a/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java b/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java -index 8c9b4f6967e4f9264c653be84cb821c1f8bb0753..92775fcf96e409100b674013ebcedd48a32b567f 100644 ---- a/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java -+++ b/src/main/java/org/bukkit/configuration/serialization/ConfigurationSerialization.java -@@ -1,13 +1,5 @@ - package org.bukkit.configuration.serialization; - --import java.lang.reflect.Constructor; --import java.lang.reflect.InvocationTargetException; --import java.lang.reflect.Method; --import java.lang.reflect.Modifier; --import java.util.HashMap; --import java.util.Map; --import java.util.logging.Level; --import java.util.logging.Logger; - import org.apache.commons.lang.Validate; - import org.bukkit.Color; - import org.bukkit.FireworkEffect; -@@ -23,6 +15,15 @@ import org.bukkit.util.Vector; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.reflect.Constructor; -+import java.lang.reflect.InvocationTargetException; -+import java.lang.reflect.Method; -+import java.lang.reflect.Modifier; -+import java.util.HashMap; -+import java.util.Map; -+import java.util.logging.Level; -+import java.util.logging.Logger; -+ - /** - * Utility class for storing and retrieving classes for {@link Configuration}. - */ -diff --git a/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java b/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java -index 13839611610258263fd6ea6a62e67fd21f5e4be8..2fa5d2dfef0710add52185889a5c7e984a540cd5 100644 ---- a/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java -+++ b/src/main/java/org/bukkit/configuration/serialization/DelegateDeserialization.java -@@ -1,10 +1,11 @@ - package org.bukkit.configuration.serialization; - -+import org.jetbrains.annotations.NotNull; -+ - import java.lang.annotation.ElementType; - import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; - import java.lang.annotation.Target; --import org.jetbrains.annotations.NotNull; - - /** - * Applies to a {@link ConfigurationSerializable} that will delegate all -diff --git a/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java b/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java -index 725685ed346a6b378869341c474dfcd9e8f296fb..9f4e7950491e5a94ddd8e552c22c7899ecd571ac 100644 ---- a/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java -+++ b/src/main/java/org/bukkit/configuration/serialization/SerializableAs.java -@@ -1,10 +1,11 @@ - package org.bukkit.configuration.serialization; - -+import org.jetbrains.annotations.NotNull; -+ - import java.lang.annotation.ElementType; - import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; - import java.lang.annotation.Target; --import org.jetbrains.annotations.NotNull; - - /** - * Represents an "alias" that a {@link ConfigurationSerializable} may be -diff --git a/src/main/java/org/bukkit/conversations/Conversation.java b/src/main/java/org/bukkit/conversations/Conversation.java -index bf2407c838bc20197802687c150d513f4e86ed2b..cb77dbd3c48aa33631ec16d82a039d5be019af08 100644 ---- a/src/main/java/org/bukkit/conversations/Conversation.java -+++ b/src/main/java/org/bukkit/conversations/Conversation.java -@@ -1,12 +1,13 @@ - package org.bukkit.conversations; - -+import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ - import java.util.ArrayList; - import java.util.HashMap; - import java.util.List; - import java.util.Map; --import org.bukkit.plugin.Plugin; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * The Conversation class is responsible for tracking the current state of a -diff --git a/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java b/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java -index 0d67fe0c00e886def63edf72c3af3e4e5b7b3ea2..5c634789db28a3a3cbed550563a7173ec7d8ef3c 100644 ---- a/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java -+++ b/src/main/java/org/bukkit/conversations/ConversationAbandonedEvent.java -@@ -1,9 +1,10 @@ - package org.bukkit.conversations; - --import java.util.EventObject; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.EventObject; -+ - /** - * ConversationAbandonedEvent contains information about an abandoned - * conversation. -diff --git a/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java b/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java -index 451121e7dfdd6f58c0649a509b1770c1d3752480..48585ce53d77775e21df82e5d66fd6ddd1f0d34b 100644 ---- a/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java -+++ b/src/main/java/org/bukkit/conversations/ConversationAbandonedListener.java -@@ -1,8 +1,9 @@ - package org.bukkit.conversations; - --import java.util.EventListener; - import org.jetbrains.annotations.NotNull; - -+import java.util.EventListener; -+ - /** - */ - public interface ConversationAbandonedListener extends EventListener { -diff --git a/src/main/java/org/bukkit/conversations/ConversationContext.java b/src/main/java/org/bukkit/conversations/ConversationContext.java -index 5bc0d36fe2a0f0e8f1cd3fb077f6b2285d60cbf4..b192b03be44404eb03b8f6ed4b8cc5f4f65d2562 100644 ---- a/src/main/java/org/bukkit/conversations/ConversationContext.java -+++ b/src/main/java/org/bukkit/conversations/ConversationContext.java -@@ -1,10 +1,11 @@ - package org.bukkit.conversations; - --import java.util.Map; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * A ConversationContext provides continuity between nodes in the prompt graph - * by giving the developer access to the subject of the conversation and a -diff --git a/src/main/java/org/bukkit/conversations/ConversationFactory.java b/src/main/java/org/bukkit/conversations/ConversationFactory.java -index 58009e1e7a9cbbba1b0db43cd81eddc19c710687..c629f10fcb0f9574011ac9cf6c41903d92623467 100644 ---- a/src/main/java/org/bukkit/conversations/ConversationFactory.java -+++ b/src/main/java/org/bukkit/conversations/ConversationFactory.java -@@ -1,14 +1,15 @@ - package org.bukkit.conversations; - --import java.util.ArrayList; --import java.util.HashMap; --import java.util.List; --import java.util.Map; - import org.bukkit.entity.Player; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.ArrayList; -+import java.util.HashMap; -+import java.util.List; -+import java.util.Map; -+ - /** - * A ConversationFactory is responsible for creating a {@link Conversation} - * from a predefined template. A ConversationFactory is typically created when -diff --git a/src/main/java/org/bukkit/conversations/FixedSetPrompt.java b/src/main/java/org/bukkit/conversations/FixedSetPrompt.java -index 9bf3336faea731c495bc7f64558654769731d6e1..544bc3768c1436f1a8c8809191ee163273e3f21f 100644 ---- a/src/main/java/org/bukkit/conversations/FixedSetPrompt.java -+++ b/src/main/java/org/bukkit/conversations/FixedSetPrompt.java -@@ -1,10 +1,11 @@ - package org.bukkit.conversations; - --import java.util.Arrays; --import java.util.List; - import org.apache.commons.lang.StringUtils; - import org.jetbrains.annotations.NotNull; - -+import java.util.Arrays; -+import java.util.List; -+ - /** - * FixedSetPrompt is the base class for any prompt that requires a fixed set - * response from the user. -diff --git a/src/main/java/org/bukkit/conversations/RegexPrompt.java b/src/main/java/org/bukkit/conversations/RegexPrompt.java -index 6b3f1e4591d68fe6698cd960b97b04c82f67366d..3de2a5897481e8429a741d30885e790de0e533f6 100644 ---- a/src/main/java/org/bukkit/conversations/RegexPrompt.java -+++ b/src/main/java/org/bukkit/conversations/RegexPrompt.java -@@ -1,8 +1,9 @@ - package org.bukkit.conversations; - --import java.util.regex.Pattern; - import org.jetbrains.annotations.NotNull; - -+import java.util.regex.Pattern; -+ - /** - * RegexPrompt is the base class for any prompt that requires an input - * validated by a regular expression. -diff --git a/src/main/java/org/bukkit/enchantments/Enchantment.java b/src/main/java/org/bukkit/enchantments/Enchantment.java -index b833ef63fbe01271ceb2bd83a9eb4a84c9912761..f61fc5faf2e8a663272c7b5f63cdc3b612dec2ea 100644 ---- a/src/main/java/org/bukkit/enchantments/Enchantment.java -+++ b/src/main/java/org/bukkit/enchantments/Enchantment.java -@@ -1,7 +1,5 @@ - package org.bukkit.enchantments; - --import java.util.HashMap; --import java.util.Map; - import org.bukkit.Keyed; - import org.bukkit.NamespacedKey; - import org.bukkit.inventory.ItemStack; -@@ -9,6 +7,9 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+ - /** - * The various type of enchantments that may be added to armour or weapons - */ -diff --git a/src/main/java/org/bukkit/entity/AnimalTamer.java b/src/main/java/org/bukkit/entity/AnimalTamer.java -index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..9f1eed9ba5b1a613681b3887e83ab6785a82c414 100644 ---- a/src/main/java/org/bukkit/entity/AnimalTamer.java -+++ b/src/main/java/org/bukkit/entity/AnimalTamer.java -@@ -1,9 +1,10 @@ - package org.bukkit.entity; - --import java.util.UUID; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.UUID; -+ - public interface AnimalTamer { - - /** -diff --git a/src/main/java/org/bukkit/entity/Animals.java b/src/main/java/org/bukkit/entity/Animals.java -index 1047481e418f6cde50ff477950b2c65e16e50e32..3d4f8c3d4614f013952797160eb71b37628c792f 100644 ---- a/src/main/java/org/bukkit/entity/Animals.java -+++ b/src/main/java/org/bukkit/entity/Animals.java -@@ -1,8 +1,9 @@ - package org.bukkit.entity; - --import java.util.UUID; - import org.jetbrains.annotations.Nullable; - -+import java.util.UUID; -+ - /** - * Represents an Animal. - */ -diff --git a/src/main/java/org/bukkit/entity/AreaEffectCloud.java b/src/main/java/org/bukkit/entity/AreaEffectCloud.java -index bca9d3659f6fceeca4b7fecbc7034d6fdbc4581e..977d9d0e8c9eec14c08bf6d284853ab98d1530f8 100644 ---- a/src/main/java/org/bukkit/entity/AreaEffectCloud.java -+++ b/src/main/java/org/bukkit/entity/AreaEffectCloud.java -@@ -1,6 +1,5 @@ - package org.bukkit.entity; - --import java.util.List; - import org.bukkit.Color; - import org.bukkit.Particle; - import org.bukkit.potion.PotionData; -@@ -10,6 +9,8 @@ import org.bukkit.projectiles.ProjectileSource; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents an area effect cloud which will imbue a potion effect onto - * entities which enter it. -diff --git a/src/main/java/org/bukkit/entity/Arrow.java b/src/main/java/org/bukkit/entity/Arrow.java -index ec8443b67014c0129256c9227cc89686422b9217..6ea47e5628eddc1f256aae5fee09064a1f39a073 100644 ---- a/src/main/java/org/bukkit/entity/Arrow.java -+++ b/src/main/java/org/bukkit/entity/Arrow.java -@@ -1,6 +1,5 @@ - package org.bukkit.entity; - --import java.util.List; - import org.bukkit.Color; - import org.bukkit.potion.PotionData; - import org.bukkit.potion.PotionEffect; -@@ -8,6 +7,8 @@ import org.bukkit.potion.PotionEffectType; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - public interface Arrow extends AbstractArrow { - - /** -diff --git a/src/main/java/org/bukkit/entity/ComplexLivingEntity.java b/src/main/java/org/bukkit/entity/ComplexLivingEntity.java -index 2151e3bac040b0dd47c67ffe3a9de6dc45e9d62c..038bcb6dc7cedf134b9b49837ff864814a322748 100644 ---- a/src/main/java/org/bukkit/entity/ComplexLivingEntity.java -+++ b/src/main/java/org/bukkit/entity/ComplexLivingEntity.java -@@ -1,8 +1,9 @@ - package org.bukkit.entity; - --import java.util.Set; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * Represents a complex living entity - one that is made up of various smaller - * parts -diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 801815e64bb281dbd480258db24a36892f485990..285d3c40c3a332e665121a5631df3f828b204627 100644 ---- a/src/main/java/org/bukkit/entity/Entity.java -+++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1,14 +1,6 @@ - package org.bukkit.entity; - --import java.util.List; --import java.util.Set; --import java.util.UUID; --import org.bukkit.Chunk; // Paper --import org.bukkit.EntityEffect; --import org.bukkit.Location; --import org.bukkit.Nameable; --import org.bukkit.Server; --import org.bukkit.World; -+import org.bukkit.*; - import org.bukkit.block.BlockFace; - import org.bukkit.block.PistonMoveReaction; - import org.bukkit.command.CommandSender; -@@ -23,6 +15,10 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+import java.util.Set; -+import java.util.UUID; -+ - /** - * Represents a base entity in the world - */ -diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java -index 98ebed7d90e99fa4d333d2c2b51c61418c4e5188..de60a4b51fd68de7fdd3f24f8bd49b94fcb93646 100644 ---- a/src/main/java/org/bukkit/entity/EntityType.java -+++ b/src/main/java/org/bukkit/entity/EntityType.java -@@ -1,25 +1,20 @@ - package org.bukkit.entity; - - import com.google.common.base.Preconditions; --import java.util.HashMap; --import java.util.Map; - import org.bukkit.Keyed; - import org.bukkit.Location; - import org.bukkit.NamespacedKey; - import org.bukkit.World; --import org.bukkit.entity.minecart.CommandMinecart; --import org.bukkit.entity.minecart.ExplosiveMinecart; --import org.bukkit.entity.minecart.HopperMinecart; --import org.bukkit.entity.minecart.PoweredMinecart; --import org.bukkit.entity.minecart.RideableMinecart; --import org.bukkit.entity.minecart.SpawnerMinecart; --import org.bukkit.entity.minecart.StorageMinecart; -+import org.bukkit.entity.minecart.*; - import org.bukkit.inventory.ItemStack; - import org.bukkit.potion.PotionEffectType; - import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+ - public enum EntityType implements Keyed { - - // These strings MUST match the strings in nms.EntityTypes and are case sensitive. -diff --git a/src/main/java/org/bukkit/entity/ExperienceOrb.java b/src/main/java/org/bukkit/entity/ExperienceOrb.java -index dec70bbfaf73a9d525b2c45682b804c684e1645b..36f0b5a004b9d22d673632009cbb161e811540a7 100644 ---- a/src/main/java/org/bukkit/entity/ExperienceOrb.java -+++ b/src/main/java/org/bukkit/entity/ExperienceOrb.java -@@ -1,7 +1,7 @@ - package org.bukkit.entity; - - import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; // Paper -+import org.jetbrains.annotations.Nullable; - - /** - * Represents an Experience Orb. -diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index d3998c61af0c5fb1189ae7829e8cdfbef0cd3f97..f1728dbcafd7dcedadad7a44088edf2a1038d6b0 100644 ---- a/src/main/java/org/bukkit/entity/HumanEntity.java -+++ b/src/main/java/org/bukkit/entity/HumanEntity.java -@@ -1,21 +1,16 @@ - package org.bukkit.entity; - --import java.util.Collection; --import java.util.Set; - import org.bukkit.GameMode; - import org.bukkit.Location; - import org.bukkit.Material; - import org.bukkit.NamespacedKey; --import org.bukkit.inventory.Inventory; --import org.bukkit.inventory.InventoryHolder; --import org.bukkit.inventory.InventoryView; --import org.bukkit.inventory.ItemStack; --import org.bukkit.inventory.MainHand; --import org.bukkit.inventory.Merchant; --import org.bukkit.inventory.PlayerInventory; -+import org.bukkit.inventory.*; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.Set; -+ - /** - * Represents a human entity, such as an NPC or a player - */ -diff --git a/src/main/java/org/bukkit/entity/Item.java b/src/main/java/org/bukkit/entity/Item.java -index acd80d812fe88dee3978d19b24149e9fe0ac596b..6b8dd87fe4e4535075d81ac1bfc87a4d787a7a56 100644 ---- a/src/main/java/org/bukkit/entity/Item.java -+++ b/src/main/java/org/bukkit/entity/Item.java -@@ -2,9 +2,8 @@ package org.bukkit.entity; - - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; -- --// Paper start - import org.jetbrains.annotations.Nullable; -+ - import java.util.UUID; - // Paper end - -diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index a60523cc9c05396ce5c3ebabd231f3ca374c3efe..ba66273873a7692de0316068fe2b8bb0455bcbba 100644 ---- a/src/main/java/org/bukkit/entity/LivingEntity.java -+++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1,9 +1,5 @@ - package org.bukkit.entity; - --import java.util.Collection; --import java.util.List; --import java.util.Set; --import java.util.UUID; - import org.bukkit.FluidCollisionMode; - import org.bukkit.Location; - import org.bukkit.Material; -@@ -21,6 +17,11 @@ import org.bukkit.util.Vector; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.List; -+import java.util.Set; -+import java.util.UUID; -+ - /** - * Represents a living entity, such as a monster or player - */ -diff --git a/src/main/java/org/bukkit/entity/Phantom.java b/src/main/java/org/bukkit/entity/Phantom.java -index ed4d417c2deefb78807cb61b01df5afcd334d754..e5a5b49564d523a05a02be3e8de558cba81e953c 100644 ---- a/src/main/java/org/bukkit/entity/Phantom.java -+++ b/src/main/java/org/bukkit/entity/Phantom.java -@@ -1,6 +1,5 @@ - package org.bukkit.entity; - --import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - - /** -diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index b584f8b15f7ee36b42bba0e0bae721aae8f6f14b..3ca3fb8b59eaf82851aad998d5b6b2af7e26896a 100644 ---- a/src/main/java/org/bukkit/entity/Player.java -+++ b/src/main/java/org/bukkit/entity/Player.java -@@ -1,25 +1,9 @@ - package org.bukkit.entity; - --import java.net.InetSocketAddress; --import com.destroystokyo.paper.ClientOption; // Paper --import com.destroystokyo.paper.Title; // Paper --import com.destroystokyo.paper.profile.PlayerProfile; // Paper --import java.util.Date; // Paper --import org.bukkit.BanEntry; // Paper --import org.bukkit.BanList; // Paper --import org.bukkit.Bukkit; // Paper --import org.bukkit.DyeColor; --import org.bukkit.Effect; --import org.bukkit.GameMode; --import org.bukkit.Instrument; --import org.bukkit.Location; --import org.bukkit.Material; --import org.bukkit.Note; --import org.bukkit.OfflinePlayer; --import org.bukkit.Particle; --import org.bukkit.Sound; --import org.bukkit.SoundCategory; --import org.bukkit.WeatherType; -+import com.destroystokyo.paper.ClientOption; -+import com.destroystokyo.paper.Title; -+import com.destroystokyo.paper.profile.PlayerProfile; -+import org.bukkit.*; - import org.bukkit.advancement.Advancement; - import org.bukkit.advancement.AdvancementProgress; - import org.bukkit.block.data.BlockData; -@@ -33,6 +17,9 @@ import org.bukkit.scoreboard.Scoreboard; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.net.InetSocketAddress; -+import java.util.Date; -+ - /** - * Represents a player, connected or not - */ -diff --git a/src/main/java/org/bukkit/entity/Skeleton.java b/src/main/java/org/bukkit/entity/Skeleton.java -index 1c367f78eadf24850061a84ce63b950b79d3c435..cb9b5053cb9d351a34f34d7c3c00363c4ea65053 100644 ---- a/src/main/java/org/bukkit/entity/Skeleton.java -+++ b/src/main/java/org/bukkit/entity/Skeleton.java -@@ -1,8 +1,8 @@ - package org.bukkit.entity; - -+import com.destroystokyo.paper.entity.RangedEntity; - import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; --import com.destroystokyo.paper.entity.RangedEntity; - - /** - * Represents a Skeleton. -diff --git a/src/main/java/org/bukkit/entity/Tameable.java b/src/main/java/org/bukkit/entity/Tameable.java -index 65e68da98ab66ed781bce2f0dbe0913be48d2990..48a5abbc44e31568e614f95dbe1eff8344f46b31 100644 ---- a/src/main/java/org/bukkit/entity/Tameable.java -+++ b/src/main/java/org/bukkit/entity/Tameable.java -@@ -1,6 +1,5 @@ - package org.bukkit.entity; - --import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - - public interface Tameable extends Animals { -diff --git a/src/main/java/org/bukkit/entity/ThrownPotion.java b/src/main/java/org/bukkit/entity/ThrownPotion.java -index 10a3c297bd87ad3ab4555054858f47a479e76e1a..b703788a00c80f494812caa363c2174fe9c06e91 100644 ---- a/src/main/java/org/bukkit/entity/ThrownPotion.java -+++ b/src/main/java/org/bukkit/entity/ThrownPotion.java -@@ -1,10 +1,11 @@ - package org.bukkit.entity; - --import java.util.Collection; - import org.bukkit.inventory.ItemStack; - import org.bukkit.potion.PotionEffect; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Represents a thrown potion bottle - */ -diff --git a/src/main/java/org/bukkit/entity/Villager.java b/src/main/java/org/bukkit/entity/Villager.java -index c8777a476e38ef5e72b6709761990a339eb43d2b..f2ae3c836197d07ef35d5a0a3473a2be297b409d 100644 ---- a/src/main/java/org/bukkit/entity/Villager.java -+++ b/src/main/java/org/bukkit/entity/Villager.java -@@ -1,13 +1,14 @@ - package org.bukkit.entity; - --import java.util.Locale; --import java.util.Map; // Paper --import java.util.UUID; // Paper - import org.bukkit.Keyed; - import org.bukkit.Location; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; // Paper -+import org.jetbrains.annotations.Nullable; -+ -+import java.util.Locale; -+import java.util.Map; -+import java.util.UUID; - - /** - * Represents a villager NPC -diff --git a/src/main/java/org/bukkit/entity/Witch.java b/src/main/java/org/bukkit/entity/Witch.java -index cd8d0a20e52ad35f659175e0d24a1dc0e92023b9..7be855e4206e13e91965fc5acabf8363b602b05b 100644 ---- a/src/main/java/org/bukkit/entity/Witch.java -+++ b/src/main/java/org/bukkit/entity/Witch.java -@@ -1,8 +1,6 @@ - package org.bukkit.entity; - - import com.destroystokyo.paper.entity.RangedEntity; -- --// Paper start - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.Nullable; - // Paper end -diff --git a/src/main/java/org/bukkit/entity/memory/MemoryKey.java b/src/main/java/org/bukkit/entity/memory/MemoryKey.java -index 3aa8a30a5f95d44ad26240778bb2c33005c494e4..5be328b74699a07d5740009b182b160a81243068 100644 ---- a/src/main/java/org/bukkit/entity/memory/MemoryKey.java -+++ b/src/main/java/org/bukkit/entity/memory/MemoryKey.java -@@ -1,16 +1,13 @@ - package org.bukkit.entity.memory; - --import java.util.HashMap; --import java.util.HashSet; --import java.util.Map; --import java.util.Set; --import java.util.UUID; - import org.bukkit.Keyed; - import org.bukkit.Location; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+ - /** - * Represents a key used for accessing memory values of a - * {@link org.bukkit.entity.LivingEntity}. -diff --git a/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java b/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java -index db69687a7ad4b18d17ab1677cae5d8dd4dcd3678..4cb69fed09e5641c074087d7841eb8b84b5cda80 100644 ---- a/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java -+++ b/src/main/java/org/bukkit/entity/minecart/HopperMinecart.java -@@ -3,7 +3,6 @@ package org.bukkit.entity.minecart; - import com.destroystokyo.paper.loottable.LootableEntityInventory; - import org.bukkit.entity.Minecart; - import org.bukkit.inventory.InventoryHolder; --import org.bukkit.loot.Lootable; - - /** - * Represents a Minecart with a Hopper inside it -diff --git a/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java b/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java -index 238d118f7788b13cd86b7e9ea3a0fc38e2e09715..7416d30e283b03473170a268a01765b135e2ceac 100644 ---- a/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java -+++ b/src/main/java/org/bukkit/entity/minecart/StorageMinecart.java -@@ -3,7 +3,6 @@ package org.bukkit.entity.minecart; - import com.destroystokyo.paper.loottable.LootableEntityInventory; - import org.bukkit.entity.Minecart; - import org.bukkit.inventory.InventoryHolder; --import org.bukkit.loot.Lootable; - - /** - * Represents a minecart with a chest. These types of {@link Minecart -diff --git a/src/main/java/org/bukkit/event/HandlerList.java b/src/main/java/org/bukkit/event/HandlerList.java -index ed78cca71f83b296d082d0af147ca8d622c7606a..e73e8d4c347d63f22211a9eb5105bd1bbdc24fcb 100644 ---- a/src/main/java/org/bukkit/event/HandlerList.java -+++ b/src/main/java/org/bukkit/event/HandlerList.java -@@ -1,15 +1,12 @@ - package org.bukkit.event; - --import java.util.ArrayList; --import java.util.Collection; --import java.util.EnumMap; --import java.util.List; --import java.util.ListIterator; --import java.util.Map.Entry; - import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.RegisteredListener; - import org.jetbrains.annotations.NotNull; - -+import java.util.*; -+import java.util.Map.Entry; -+ - /** - * A list of event handlers, stored per-event. Based on lahwran's fevents. - */ -diff --git a/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java b/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java -index a0f6f1af304190b4c5db4b284d460f625eeb7801..4151fb144b14acbe1329d8a2b4b3a3b631c1847d 100644 ---- a/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java -+++ b/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.block; - --import java.util.List; - import org.bukkit.block.Block; - import org.bukkit.block.BlockState; - import org.bukkit.entity.Item; -@@ -9,6 +8,8 @@ import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Called if a block broken by a player drops an item. - * -diff --git a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java -index 44f7f6939a27b9a0a796d91eac4b7c97ec90a643..857f061a818691626442d2c3a5614360109d16b4 100644 ---- a/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java -+++ b/src/main/java/org/bukkit/event/block/BlockExplodeEvent.java -@@ -1,11 +1,12 @@ - package org.bukkit.event.block; - --import java.util.List; - import org.bukkit.block.Block; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Called when a block explodes - */ -diff --git a/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java b/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java -index 695309b4b7ef269ba2496408a5f874f61cd6c445..958c13826832bf90adad17faba6a674a83c27ac5 100644 ---- a/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java -+++ b/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.block; - --import java.util.List; - import org.bukkit.block.Block; - import org.bukkit.block.BlockState; - import org.bukkit.entity.Player; -@@ -10,6 +9,8 @@ import org.bukkit.event.world.StructureGrowEvent; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Called with the block changes resulting from a player fertilizing a given - * block with bonemeal. Will be called after the applicable -diff --git a/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java b/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java -index 8460aa4f5e211fb0a6ab11f7487d38dba927e1da..9234b3023513aff076e4387413b26650bcda68d8 100644 ---- a/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java -+++ b/src/main/java/org/bukkit/event/block/BlockMultiPlaceEvent.java -@@ -1,13 +1,14 @@ - package org.bukkit.event.block; - - import com.google.common.collect.ImmutableList; --import java.util.List; - import org.bukkit.block.Block; - import org.bukkit.block.BlockState; - import org.bukkit.entity.Player; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Fired when a single block placement action of a player triggers the - * creation of multiple blocks(e.g. placing a bed block). The block returned -diff --git a/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java b/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java -index 40ddc364971af1f266ee367f4d09d83a8e914e23..6437f76b2524b83341bebf9def6a189916b08398 100644 ---- a/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java -+++ b/src/main/java/org/bukkit/event/block/BlockPistonExtendEvent.java -@@ -1,13 +1,14 @@ - package org.bukkit.event.block; - --import java.util.ArrayList; --import java.util.Collections; --import java.util.List; - import org.bukkit.block.Block; - import org.bukkit.block.BlockFace; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.ArrayList; -+import java.util.Collections; -+import java.util.List; -+ - /** - * Called when a piston extends - */ -diff --git a/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java b/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java -index 340fa397e68c024df380a28db21545a0c83d9fa6..44bfdb1db130a3a75317d2f2b053040fed074d43 100644 ---- a/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java -+++ b/src/main/java/org/bukkit/event/block/BlockPistonRetractEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.block; - --import java.util.List; - import org.bukkit.Location; - import org.bukkit.block.Block; - import org.bukkit.block.BlockFace; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Called when a piston retracts - */ -diff --git a/src/main/java/org/bukkit/event/block/SpongeAbsorbEvent.java b/src/main/java/org/bukkit/event/block/SpongeAbsorbEvent.java -index 7029cfcd00ed5d9c7f06898ec2b81238ec775a70..260c8f0bfaeb4ff28202a38c035216866666b6e6 100644 ---- a/src/main/java/org/bukkit/event/block/SpongeAbsorbEvent.java -+++ b/src/main/java/org/bukkit/event/block/SpongeAbsorbEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.block; - --import java.util.List; - import org.bukkit.Material; - import org.bukkit.block.Block; - import org.bukkit.block.BlockState; -@@ -8,6 +7,8 @@ import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Called when a sponge absorbs water from the world. - *
-diff --git a/src/main/java/org/bukkit/event/command/UnknownCommandEvent.java b/src/main/java/org/bukkit/event/command/UnknownCommandEvent.java -index 251342c3cc6204f47ef1efb5724302a776359f4d..3242454af320225e7f2e2a543ce6785a25f837bd 100644 ---- a/src/main/java/org/bukkit/event/command/UnknownCommandEvent.java -+++ b/src/main/java/org/bukkit/event/command/UnknownCommandEvent.java -@@ -1,9 +1,8 @@ - package org.bukkit.event.command; - - import org.bukkit.command.CommandSender; --import org.bukkit.event.HandlerList; - import org.bukkit.event.Event; -- -+import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -diff --git a/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java b/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java -index b898fdefc77e961b03977c1dd70fb8b8bf320871..4b9f97ddd2f6f31afb5f673f04fba60b26869682 100644 ---- a/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java -+++ b/src/main/java/org/bukkit/event/enchantment/EnchantItemEvent.java -@@ -1,7 +1,5 @@ - package org.bukkit.event.enchantment; - --import java.util.HashMap; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.block.Block; - import org.bukkit.enchantments.Enchantment; -@@ -13,6 +11,9 @@ import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - -+import java.util.HashMap; -+import java.util.Map; -+ - /** - * Called when an ItemStack is successfully enchanted (currently at - * enchantment table) -diff --git a/src/main/java/org/bukkit/event/entity/AreaEffectCloudApplyEvent.java b/src/main/java/org/bukkit/event/entity/AreaEffectCloudApplyEvent.java -index a37febd0d4dd5b733e9ee72628fdf9395fec4367..8fd408e56fe6ca25e70cd4f96bdbaee98d6d7858 100644 ---- a/src/main/java/org/bukkit/event/entity/AreaEffectCloudApplyEvent.java -+++ b/src/main/java/org/bukkit/event/entity/AreaEffectCloudApplyEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.entity; - --import java.util.List; - import org.bukkit.entity.AreaEffectCloud; - import org.bukkit.entity.LivingEntity; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Called when a lingering potion applies it's effects. Happens - * once every 5 ticks -diff --git a/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java b/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java -index 397baaefd2fb45ae9d50b7b9bd5276e6ad980f20..0f20ae139997ef6896ce0924463c1cea3c26ddae 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityCreatePortalEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.entity; - --import java.util.List; - import org.bukkit.PortalType; - import org.bukkit.block.BlockState; - import org.bukkit.entity.LivingEntity; -@@ -9,6 +8,8 @@ import org.bukkit.event.HandlerList; - import org.bukkit.event.world.PortalCreateEvent; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Thrown when a Living Entity creates a portal in a world. - * -diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java -index 461727dc7f06efb3550fc370e0db5bd04ba89711..040375843a670f3ae319025b0089641db1133485 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.entity; - - import com.google.common.base.Function; --import java.util.Map; - import org.bukkit.block.Block; - import org.bukkit.entity.Entity; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Called when an entity is damaged by a block - */ -diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java -index 869bad7405ec7fa67728e90d8b9f2e11b542611f..cd1ae3aef868f8f673b3de88284d494f9e1a419a 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java -@@ -1,10 +1,11 @@ - package org.bukkit.event.entity; - - import com.google.common.base.Function; --import java.util.Map; - import org.bukkit.entity.Entity; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+ - /** - * Called when an entity is damaged by an entity - */ -diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -index feec8b1e15cd407b7a50cfcfaba11374c0e37e82..e1f6581e45637745b12ce7dbc8f2286735b7ff73 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java -@@ -3,8 +3,6 @@ package org.bukkit.event.entity; - import com.google.common.base.Function; - import com.google.common.base.Functions; - import com.google.common.collect.ImmutableMap; --import java.util.EnumMap; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.Material; - import org.bukkit.entity.Entity; -@@ -13,6 +11,9 @@ import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.EnumMap; -+import java.util.Map; -+ - /** - * Stores data for damage events - */ -diff --git a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java -index e19a3df9aa2204b44c0b029bda141ae6306f60a1..df7855b073e05cca07739f4cf151eba0159c4e59 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.entity; - --import java.util.List; - import org.bukkit.entity.LivingEntity; - import org.bukkit.event.HandlerList; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Thrown whenever a LivingEntity dies - */ -diff --git a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java -index 10d0e18dfd423b108fe381e8142867eb10399359..2894f71c2e2e765f5943f179840c8adababf3a20 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.entity; - --import java.util.List; - import org.bukkit.Location; - import org.bukkit.block.Block; - import org.bukkit.entity.Entity; -@@ -8,6 +7,8 @@ import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Called when an entity explodes - */ -diff --git a/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java b/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java -index 37dbc12eb47060ebf0f6a18960d036bd27ce3740..88b4f684140d0b698e823f77dd95a8f3e085a64e 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityShootBowEvent.java -@@ -2,7 +2,6 @@ package org.bukkit.event.entity; - - import org.bukkit.entity.Entity; - import org.bukkit.entity.LivingEntity; --import org.bukkit.entity.Projectile; // Paper - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.bukkit.inventory.ItemStack; -diff --git a/src/main/java/org/bukkit/event/entity/EntityTransformEvent.java b/src/main/java/org/bukkit/event/entity/EntityTransformEvent.java -index 1370380ae28fced98239798bbf54d2a7ea9274ae..8f5c554b48b991827604de0e1587e6dc58ca3887 100644 ---- a/src/main/java/org/bukkit/event/entity/EntityTransformEvent.java -+++ b/src/main/java/org/bukkit/event/entity/EntityTransformEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.entity; - --import java.util.Collections; --import java.util.List; - import org.bukkit.entity.Entity; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collections; -+import java.util.List; -+ - /** - * Called when an entity is about to be replaced by another entity. - */ -diff --git a/src/main/java/org/bukkit/event/entity/PigZapEvent.java b/src/main/java/org/bukkit/event/entity/PigZapEvent.java -index d3949edfc736b3d67a627ef378748b374769e183..f7829a522e17228431022c2923bdd6c9f3ba2ed3 100644 ---- a/src/main/java/org/bukkit/event/entity/PigZapEvent.java -+++ b/src/main/java/org/bukkit/event/entity/PigZapEvent.java -@@ -1,13 +1,10 @@ - package org.bukkit.event.entity; - --import java.util.Collections; --import org.bukkit.entity.Entity; - import com.destroystokyo.paper.event.entity.EntityZapEvent; - import org.bukkit.entity.LightningStrike; - import org.bukkit.entity.Pig; - import org.bukkit.entity.PigZombie; - import org.bukkit.event.Cancellable; --import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java -index 3a743430acb5eecc4d8db068fa62fe6d38a249e5..9a25a58d260b440a4ff07b715b8652aec8a6bb12 100644 ---- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java -+++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java -@@ -1,13 +1,13 @@ - package org.bukkit.event.entity; - --import java.util.List; -- - import org.bukkit.GameMode; - import org.bukkit.entity.Player; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Thrown whenever a {@link Player} dies - */ -diff --git a/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java b/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java -index 90d7e8141a18ec7dd97288e90803e37591a51a4f..f4f4ef18198c1fc40826df8f1327e0c8d6cbc69d 100644 ---- a/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java -+++ b/src/main/java/org/bukkit/event/entity/PotionSplashEvent.java -@@ -1,8 +1,5 @@ - package org.bukkit.event.entity; - --import java.util.ArrayList; --import java.util.Collection; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.entity.LivingEntity; - import org.bukkit.entity.ThrownPotion; -@@ -10,6 +7,10 @@ import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.ArrayList; -+import java.util.Collection; -+import java.util.Map; -+ - /** - * Called when a splash potion hits an area - */ -diff --git a/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java -index 856e945c516f2d379e3a88b3ca533fc5ad73bc33..1302313d5b86296996c5dddb8e757186f5d73042 100644 ---- a/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java -+++ b/src/main/java/org/bukkit/event/inventory/InventoryDragEvent.java -@@ -1,9 +1,6 @@ - package org.bukkit.event.inventory; - - import com.google.common.collect.ImmutableSet; --import java.util.Collections; --import java.util.Map; --import java.util.Set; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; - import org.bukkit.entity.HumanEntity; -@@ -17,6 +14,10 @@ import org.bukkit.scheduler.BukkitScheduler; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collections; -+import java.util.Map; -+import java.util.Set; -+ - /** - * This event is called when the player drags an item in their cursor across - * the inventory. The ItemStack is distributed across the slots the -diff --git a/src/main/java/org/bukkit/event/inventory/InventoryEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryEvent.java -index 5d3fe64ab9c5d6a9d0525495c52b77cedcb880b0..b4a1f58054ec0801c6a00c5ac8f63127ad3db103 100644 ---- a/src/main/java/org/bukkit/event/inventory/InventoryEvent.java -+++ b/src/main/java/org/bukkit/event/inventory/InventoryEvent.java -@@ -1,7 +1,6 @@ - - package org.bukkit.event.inventory; - --import java.util.List; - import org.bukkit.entity.HumanEntity; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; -@@ -9,6 +8,8 @@ import org.bukkit.inventory.Inventory; - import org.bukkit.inventory.InventoryView; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Represents a player related inventory event - */ -diff --git a/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java b/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java -index f1f6f4ab4f81a3f21e757fef4a30b00e94371f8d..04e9626ef920f90a8e287a36e003bc4c4a6c5ede 100644 ---- a/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java -+++ b/src/main/java/org/bukkit/event/inventory/PrepareAnvilEvent.java -@@ -1,7 +1,6 @@ - package org.bukkit.event.inventory; - - import com.destroystokyo.paper.event.inventory.PrepareResultEvent; --import org.bukkit.event.HandlerList; - import org.bukkit.inventory.AnvilInventory; - import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.ItemStack; -diff --git a/src/main/java/org/bukkit/event/inventory/PrepareSmithingEvent.java b/src/main/java/org/bukkit/event/inventory/PrepareSmithingEvent.java -index 0bc0ca4f96c800e9c46c61710f44446691d8b93f..4c8659b479842853739b43d685f5bc82820639c7 100644 ---- a/src/main/java/org/bukkit/event/inventory/PrepareSmithingEvent.java -+++ b/src/main/java/org/bukkit/event/inventory/PrepareSmithingEvent.java -@@ -1,7 +1,6 @@ - package org.bukkit.event.inventory; - - import com.destroystokyo.paper.event.inventory.PrepareResultEvent; --import org.bukkit.event.HandlerList; - import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.SmithingInventory; -diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java -index 9c68c3f2d61500479f48b80264f625aaae2f3204..6aa5ad507159f6ff78a9e9d25e8a547cb9276200 100644 ---- a/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java -+++ b/src/main/java/org/bukkit/event/player/AsyncPlayerChatEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.player; - --import java.util.IllegalFormatException; --import java.util.Set; - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.IllegalFormatException; -+import java.util.Set; -+ - /** - * This event will sometimes fire synchronously, depending on how it was - * triggered. -diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index e5b811229830e4d55b08ab18bedec1494ff342ac..dd67f4ca29258f7b4ac5ae96af32ca494fc00aff 100644 ---- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -+++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -@@ -1,14 +1,14 @@ - package org.bukkit.event.player; - --import java.net.InetAddress; --import java.util.UUID; -- - import com.destroystokyo.paper.profile.PlayerProfile; - import org.bukkit.Bukkit; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.net.InetAddress; -+import java.util.UUID; -+ - /** - * Stores details for players attempting to log in. - *

-diff --git a/src/main/java/org/bukkit/event/player/PlayerChatEvent.java b/src/main/java/org/bukkit/event/player/PlayerChatEvent.java -index 8ea56aac752544f798728b429e7152afbee497e4..4cc54eeecb1ea4a9915115da35da04a61c9dfea5 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerChatEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerChatEvent.java -@@ -1,7 +1,5 @@ - package org.bukkit.event.player; - --import java.util.HashSet; --import java.util.Set; - import org.apache.commons.lang.Validate; - import org.bukkit.Warning; - import org.bukkit.entity.Player; -@@ -9,6 +7,9 @@ import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.HashSet; -+import java.util.Set; -+ - /** - * Holds information for player chat and commands - * -diff --git a/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java b/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java -index 0b99c7fb228660878b3f4b8c1beb58d82489701e..e58ea31c1b3633461db50cb96d7b4f6fb0354836 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerChatTabCompleteEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.player; - --import java.util.Collection; - import org.apache.commons.lang.Validate; - import org.bukkit.Warning; - import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Called when a player attempts to tab-complete a chat message. - * -diff --git a/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java b/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java -index a6dae91073ffc054d616d73941ff4d033989f5f3..a794c57b0b6ef35101aa8b7cc75e9f8556bc33b8 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerCommandPreprocessEvent.java -@@ -1,13 +1,14 @@ - package org.bukkit.event.player; - --import java.util.HashSet; --import java.util.Set; - import org.apache.commons.lang.Validate; - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.HashSet; -+import java.util.Set; -+ - /** - * This event is called whenever a player runs a command (by placing a slash - * at the start of their message). It is called early in the command handling -diff --git a/src/main/java/org/bukkit/event/player/PlayerCommandSendEvent.java b/src/main/java/org/bukkit/event/player/PlayerCommandSendEvent.java -index 762825997f1c6249de4ba5a0618d94bd1ec9ef33..2d41822428fd5175a3a6beac46be79ac7e7f30f5 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerCommandSendEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerCommandSendEvent.java -@@ -1,10 +1,11 @@ - package org.bukkit.event.player; - --import java.util.Collection; - import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * This event is called when the list of available server commands is sent to - * the player. -diff --git a/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java b/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java -index 7c340f539c31a431d7d9204a8135e0bfc31863a8..9c38e6af6e647a371dc5c3f8c4ca04c22e591382 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java -@@ -1,11 +1,10 @@ - package org.bukkit.event.player; - --import org.bukkit.entity.Entity; // Paper -+import org.bukkit.entity.Entity; - import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; -- --import org.jetbrains.annotations.Nullable; // Paper -+import org.jetbrains.annotations.Nullable; - - /** - * Called when a players experience changes naturally -diff --git a/src/main/java/org/bukkit/event/player/PlayerHarvestBlockEvent.java b/src/main/java/org/bukkit/event/player/PlayerHarvestBlockEvent.java -index 0ee86dca0452483bbc08d7b253c952adea29742c..31ebd67a094688878b333df6020c78edfab32278 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerHarvestBlockEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerHarvestBlockEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.player; - --import java.util.List; - import org.bukkit.block.Block; - import org.bukkit.entity.Player; - import org.bukkit.event.Cancellable; -@@ -8,6 +7,8 @@ import org.bukkit.event.HandlerList; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * This event is called whenever a player harvests a block. - *
-diff --git a/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java -index 084ca8cfcb7381bfa4fa6280748cf9b81210a9c1..51e997476730e45ca5ca6796fb043c73fc0a87bd 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerLoginEvent.java -@@ -1,10 +1,11 @@ - package org.bukkit.event.player; - --import java.net.InetAddress; - import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.net.InetAddress; -+ - /** - * Stores details for players attempting to log in. - *
-diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -index fb066251f793ec3b41bfc075b9478901b15ee549..fc7d5786a6e79b0063d9d1bbc77f9d3f7f7261be 100644 ---- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -+++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.player; - --import java.net.InetAddress; --import java.util.UUID; - import org.bukkit.Warning; - import org.bukkit.event.Event; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.net.InetAddress; -+import java.util.UUID; -+ - /** - * Stores details for players attempting to log in - * -diff --git a/src/main/java/org/bukkit/event/raid/RaidFinishEvent.java b/src/main/java/org/bukkit/event/raid/RaidFinishEvent.java -index f0d280b8c1c1db802c420fe77a77f4b9871f281e..74d5739a8db0ff8744bb2c68cc980734b397abd8 100644 ---- a/src/main/java/org/bukkit/event/raid/RaidFinishEvent.java -+++ b/src/main/java/org/bukkit/event/raid/RaidFinishEvent.java -@@ -1,13 +1,14 @@ - package org.bukkit.event.raid; - --import java.util.Collections; --import java.util.List; - import org.bukkit.Raid; - import org.bukkit.World; - import org.bukkit.entity.Player; - import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collections; -+import java.util.List; -+ - /** - * This event is called when a {@link Raid} was complete with a clear result. - */ -diff --git a/src/main/java/org/bukkit/event/raid/RaidSpawnWaveEvent.java b/src/main/java/org/bukkit/event/raid/RaidSpawnWaveEvent.java -index cd58dd7de781823804701fc023706e805c0142a8..e9ae947f6a01a874e3ef2b2a56b4726bf64edccb 100644 ---- a/src/main/java/org/bukkit/event/raid/RaidSpawnWaveEvent.java -+++ b/src/main/java/org/bukkit/event/raid/RaidSpawnWaveEvent.java -@@ -1,7 +1,5 @@ - package org.bukkit.event.raid; - --import java.util.Collections; --import java.util.List; - import org.bukkit.Raid; - import org.bukkit.World; - import org.bukkit.entity.Raider; -@@ -9,6 +7,9 @@ import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collections; -+import java.util.List; -+ - /** - * Called when a raid wave spawns. - */ -diff --git a/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java b/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java -index 03bfca9d368bbe4b7c1353d52c883e756bf69bda..8887b2b2fdb64eb99ed3b147ee77d52141ab107b 100644 ---- a/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java -+++ b/src/main/java/org/bukkit/event/server/BroadcastMessageEvent.java -@@ -1,12 +1,13 @@ - package org.bukkit.event.server; - --import java.util.Set; - import org.bukkit.command.CommandSender; - import org.bukkit.event.Cancellable; - import org.bukkit.event.HandlerList; - import org.bukkit.event.player.AsyncPlayerChatEvent; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * Event triggered for server broadcast messages such as from - * {@link org.bukkit.Server#broadcast(String, String)}. -diff --git a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -index 7a2a58bac8e721c3f0c64f69f77be07a51f76d58..f3e4b9cf12bc805d86e96c60c7301b31eac0e130 100644 ---- a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -+++ b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java -@@ -1,7 +1,5 @@ - package org.bukkit.event.server; - --import java.net.InetAddress; --import java.util.Iterator; - import org.apache.commons.lang.Validate; - import org.bukkit.UndefinedNullability; - import org.bukkit.entity.Player; -@@ -9,6 +7,9 @@ import org.bukkit.event.HandlerList; - import org.bukkit.util.CachedServerIcon; - import org.jetbrains.annotations.NotNull; - -+import java.net.InetAddress; -+import java.util.Iterator; -+ - /** - * Called when a server list ping is coming in. Displayed players can be - * checked and removed by {@link #iterator() iterating} over this event. -diff --git a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -index f96c4ba53ab41ea66d4f9a4d54eeabb63f992b58..0823f1c044205e3670d79d60758b1187ee290f69 100644 ---- a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -+++ b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -@@ -1,7 +1,5 @@ - package org.bukkit.event.server; - --import java.util.ArrayList; --import java.util.List; - import org.apache.commons.lang.Validate; - import org.bukkit.command.CommandSender; - import org.bukkit.event.Cancellable; -@@ -11,6 +9,9 @@ import org.bukkit.event.player.PlayerCommandSendEvent; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.ArrayList; -+import java.util.List; -+ - /** - * Called when a {@link CommandSender} of any description (ie: player or - * console) attempts to tab complete. -diff --git a/src/main/java/org/bukkit/event/world/LootGenerateEvent.java b/src/main/java/org/bukkit/event/world/LootGenerateEvent.java -index e051dc8b94893a0aa729996695aae91de57f3acd..bb3e634dfc02b48a8e33b72058fda0822a4bf884 100644 ---- a/src/main/java/org/bukkit/event/world/LootGenerateEvent.java -+++ b/src/main/java/org/bukkit/event/world/LootGenerateEvent.java -@@ -1,7 +1,5 @@ - package org.bukkit.event.world; - --import java.util.Collection; --import java.util.List; - import org.bukkit.World; - import org.bukkit.entity.Entity; - import org.bukkit.event.Cancellable; -@@ -14,6 +12,9 @@ import org.bukkit.loot.LootTable; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.List; -+ - /** - * Called when a {@link LootTable} is generated in the world for an - * {@link InventoryHolder}. -diff --git a/src/main/java/org/bukkit/event/world/PortalCreateEvent.java b/src/main/java/org/bukkit/event/world/PortalCreateEvent.java -index 579f017474ff22f0991ca884c35cdde7e14a94dc..85f395ed5b5bf479936feac1b27e790a78571142 100644 ---- a/src/main/java/org/bukkit/event/world/PortalCreateEvent.java -+++ b/src/main/java/org/bukkit/event/world/PortalCreateEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.world; - --import java.util.List; - import org.bukkit.World; - import org.bukkit.block.BlockState; - import org.bukkit.entity.Entity; -@@ -9,6 +8,8 @@ import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Called when a portal is created - */ -diff --git a/src/main/java/org/bukkit/event/world/StructureGrowEvent.java b/src/main/java/org/bukkit/event/world/StructureGrowEvent.java -index 7af8d6e51c824cf0592b722b834f1d4986e3cc08..67b78850d0cb8923cccf3d9f22e08406272e861d 100644 ---- a/src/main/java/org/bukkit/event/world/StructureGrowEvent.java -+++ b/src/main/java/org/bukkit/event/world/StructureGrowEvent.java -@@ -1,6 +1,5 @@ - package org.bukkit.event.world; - --import java.util.List; - import org.bukkit.Location; - import org.bukkit.TreeType; - import org.bukkit.block.BlockState; -@@ -10,6 +9,8 @@ import org.bukkit.event.HandlerList; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Event that is called when an organic structure attempts to grow (Sapling {@literal ->} - * Tree), (Mushroom {@literal ->} Huge Mushroom), naturally or using bonemeal. -diff --git a/src/main/java/org/bukkit/generator/BlockPopulator.java b/src/main/java/org/bukkit/generator/BlockPopulator.java -index e5e3a6a548630ce79fb90d96a40f66af3d5508ee..0b868107d7960c0d9dfd3e280c22e0d4e9de30ba 100644 ---- a/src/main/java/org/bukkit/generator/BlockPopulator.java -+++ b/src/main/java/org/bukkit/generator/BlockPopulator.java -@@ -1,10 +1,11 @@ - package org.bukkit.generator; - --import java.util.Random; - import org.bukkit.Chunk; - import org.bukkit.World; - import org.jetbrains.annotations.NotNull; - -+import java.util.Random; -+ - /** - * A block populator is responsible for generating a small area of blocks. - *

-diff --git a/src/main/java/org/bukkit/generator/ChunkGenerator.java b/src/main/java/org/bukkit/generator/ChunkGenerator.java -index 5ba77d40a38e5e592ee265e4fbd510043a0b4345..80963c51573ab92a3301e94fdb8082490a75deb8 100644 ---- a/src/main/java/org/bukkit/generator/ChunkGenerator.java -+++ b/src/main/java/org/bukkit/generator/ChunkGenerator.java -@@ -1,8 +1,5 @@ - package org.bukkit.generator; - --import java.util.ArrayList; --import java.util.List; --import java.util.Random; - import org.bukkit.Bukkit; - import org.bukkit.Location; - import org.bukkit.Material; -@@ -14,6 +11,10 @@ import org.bukkit.material.MaterialData; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.ArrayList; -+import java.util.List; -+import java.util.Random; -+ - /** - * A chunk generator is responsible for the initial shaping of an entire - * chunk. For example, the nether chunk generator should shape netherrack and -diff --git a/src/main/java/org/bukkit/help/HelpMap.java b/src/main/java/org/bukkit/help/HelpMap.java -index 48997b5c8ef15f11328868e35b487d2b64975ab0..7a8795f80de93a0f3c5d78cd874de10a4d71fcd6 100644 ---- a/src/main/java/org/bukkit/help/HelpMap.java -+++ b/src/main/java/org/bukkit/help/HelpMap.java -@@ -1,10 +1,11 @@ - package org.bukkit.help; - --import java.util.Collection; --import java.util.List; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.List; -+ - /** - * The HelpMap tracks all help topics registered in a Bukkit server. When the - * server starts up or is reloaded, help is processed and topics are added in -diff --git a/src/main/java/org/bukkit/help/HelpTopicComparator.java b/src/main/java/org/bukkit/help/HelpTopicComparator.java -index 75bb69283f509e8f4fec772714a509a51be9de19..45f14e04142d63e1b3ef2be6e20dd9c815e5b84e 100644 ---- a/src/main/java/org/bukkit/help/HelpTopicComparator.java -+++ b/src/main/java/org/bukkit/help/HelpTopicComparator.java -@@ -1,8 +1,9 @@ - package org.bukkit.help; - --import java.util.Comparator; - import org.jetbrains.annotations.NotNull; - -+import java.util.Comparator; -+ - /** - * Used to impose a custom total ordering on help topics. - *

-diff --git a/src/main/java/org/bukkit/help/IndexHelpTopic.java b/src/main/java/org/bukkit/help/IndexHelpTopic.java -index 88a812d66b7eea7389103b9c2776a8adcfc141c7..f24d7235561c0f917f596b699ebdb6a46eb3fd71 100644 ---- a/src/main/java/org/bukkit/help/IndexHelpTopic.java -+++ b/src/main/java/org/bukkit/help/IndexHelpTopic.java -@@ -1,6 +1,5 @@ - package org.bukkit.help; - --import java.util.Collection; - import org.bukkit.ChatColor; - import org.bukkit.command.CommandSender; - import org.bukkit.command.ConsoleCommandSender; -@@ -9,6 +8,8 @@ import org.bukkit.util.ChatPaginator; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+ - /** - * This help topic generates a list of other help topics. This class is useful - * for adding your own index help topics. To enforce a particular order, use a -diff --git a/src/main/java/org/bukkit/inventory/CookingRecipe.java b/src/main/java/org/bukkit/inventory/CookingRecipe.java -index 6f251252aa96f202139103c657a81c71a0ffbfaf..62ae78a7ddaf6ee70fde222621d3f13559de6595 100644 ---- a/src/main/java/org/bukkit/inventory/CookingRecipe.java -+++ b/src/main/java/org/bukkit/inventory/CookingRecipe.java -@@ -1,12 +1,13 @@ - package org.bukkit.inventory; - - import com.google.common.base.Preconditions; --import java.util.Collections; - import org.bukkit.Keyed; - import org.bukkit.Material; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collections; -+ - /** - * Represents a cooking recipe. - * @param type of recipe -diff --git a/src/main/java/org/bukkit/inventory/FurnaceRecipe.java b/src/main/java/org/bukkit/inventory/FurnaceRecipe.java -index 1d442dc16cbb0fed21714d47007f3f11e30c57d4..860363507f4c5f7ffb5e8b65a4f6cec1cdfbc0b6 100644 ---- a/src/main/java/org/bukkit/inventory/FurnaceRecipe.java -+++ b/src/main/java/org/bukkit/inventory/FurnaceRecipe.java -@@ -1,11 +1,12 @@ - package org.bukkit.inventory; - --import java.util.Collections; - import org.bukkit.Material; - import org.bukkit.NamespacedKey; - import org.bukkit.material.MaterialData; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collections; -+ - /** - * Represents a furnace recipe. - */ -diff --git a/src/main/java/org/bukkit/inventory/GrindstoneInventory.java b/src/main/java/org/bukkit/inventory/GrindstoneInventory.java -index 1c750108f55a0a31ad23433b333e0ea486a63ff2..d09a45c9730990084f9f96a837b8a7db968be20e 100644 ---- a/src/main/java/org/bukkit/inventory/GrindstoneInventory.java -+++ b/src/main/java/org/bukkit/inventory/GrindstoneInventory.java -@@ -1,6 +1,6 @@ - package org.bukkit.inventory; - --import org.jetbrains.annotations.Nullable; // Paper -+import org.jetbrains.annotations.Nullable; - - /** - * Interface to the inventory of a Grindstone. -diff --git a/src/main/java/org/bukkit/inventory/HorseInventory.java b/src/main/java/org/bukkit/inventory/HorseInventory.java -index 53498debe4cfb80592ef3025270bc8e5df4a5fec..e14c1277c3051acd1aa47658f58e3ef3e4a3662f 100644 ---- a/src/main/java/org/bukkit/inventory/HorseInventory.java -+++ b/src/main/java/org/bukkit/inventory/HorseInventory.java -@@ -1,7 +1,5 @@ - package org.bukkit.inventory; - --import org.jetbrains.annotations.Nullable; -- - /** - * An interface to the inventory of a Horse. - */ -diff --git a/src/main/java/org/bukkit/inventory/Inventory.java b/src/main/java/org/bukkit/inventory/Inventory.java -index 753c052291afb0455df8298ea3a8209778ba400f..3a0643b918a3c7d303f71c495bed8c1e9575e23f 100644 ---- a/src/main/java/org/bukkit/inventory/Inventory.java -+++ b/src/main/java/org/bukkit/inventory/Inventory.java -@@ -1,8 +1,5 @@ - package org.bukkit.inventory; - --import java.util.HashMap; --import java.util.List; --import java.util.ListIterator; - import org.bukkit.Location; - import org.bukkit.Material; - import org.bukkit.entity.HumanEntity; -@@ -11,6 +8,10 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.List; -+import java.util.ListIterator; -+ - /** - * Interface to the various inventories. Behavior relating to {@link - * Material#AIR} is unspecified. -diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index b93df6bea4af1b2d4123be031adecf030bcc3893..428ceabb5355794317c855e962d7988c8b837c7f 100644 ---- a/src/main/java/org/bukkit/inventory/ItemStack.java -+++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -1,10 +1,6 @@ - package org.bukkit.inventory; - - import com.google.common.collect.ImmutableMap; --import java.util.LinkedHashMap; --import java.util.List; // Paper --import java.util.Map; --import java.util.Set; // Paper - import org.apache.commons.lang.Validate; - import org.bukkit.Bukkit; - import org.bukkit.Material; -@@ -18,6 +14,11 @@ import org.bukkit.material.MaterialData; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.LinkedHashMap; -+import java.util.List; -+import java.util.Map; -+import java.util.Set; -+ - /** - * Represents a stack of items. - *

-diff --git a/src/main/java/org/bukkit/inventory/Merchant.java b/src/main/java/org/bukkit/inventory/Merchant.java -index 9861bcedde6e63009d0775c57c63893aaf7870fa..e879a5278e6c25edf0668e347d6b07f5aeea45e1 100644 ---- a/src/main/java/org/bukkit/inventory/Merchant.java -+++ b/src/main/java/org/bukkit/inventory/Merchant.java -@@ -1,10 +1,11 @@ - package org.bukkit.inventory; - --import java.util.List; - import org.bukkit.entity.HumanEntity; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents a merchant. A merchant is a special type of inventory which can - * facilitate custom trades between items. -diff --git a/src/main/java/org/bukkit/inventory/MerchantRecipe.java b/src/main/java/org/bukkit/inventory/MerchantRecipe.java -index 1fb4a1c53791776f9c5a952a592f15fc35cb2703..149e63b3a6ec6c71554850b28a787b83bb729e25 100644 ---- a/src/main/java/org/bukkit/inventory/MerchantRecipe.java -+++ b/src/main/java/org/bukkit/inventory/MerchantRecipe.java -@@ -1,9 +1,10 @@ - package org.bukkit.inventory; - - import com.google.common.base.Preconditions; -+import org.jetbrains.annotations.NotNull; -+ - import java.util.ArrayList; - import java.util.List; --import org.jetbrains.annotations.NotNull; - - /** - * Represents a merchant's trade. -diff --git a/src/main/java/org/bukkit/inventory/RecipeChoice.java b/src/main/java/org/bukkit/inventory/RecipeChoice.java -index 3d325cab6b106ce8617e321d7a733eca91ba93e5..92255656afc140220522261f82ed4b954d542dd8 100644 ---- a/src/main/java/org/bukkit/inventory/RecipeChoice.java -+++ b/src/main/java/org/bukkit/inventory/RecipeChoice.java -@@ -1,16 +1,13 @@ - package org.bukkit.inventory; - - import com.google.common.base.Preconditions; --import java.util.ArrayList; --import java.util.Arrays; --import java.util.Collections; --import java.util.List; --import java.util.Objects; --import java.util.function.Predicate; - import org.bukkit.Material; - import org.bukkit.Tag; - import org.jetbrains.annotations.NotNull; - -+import java.util.*; -+import java.util.function.Predicate; -+ - /** - * Represents a potential item match within a recipe. All choices within a - * recipe must be satisfied for it to be craftable. -diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -index 222a12baa8e93ad686ab59426653f066d5876e38..62d20e28aa26f9d7dedac126f8c2e4e22845c080 100644 ---- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java -+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java -@@ -1,9 +1,6 @@ - package org.bukkit.inventory; - - import com.google.common.base.Preconditions; --import java.util.Collections; --import java.util.HashMap; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.Keyed; - import org.bukkit.Material; -@@ -11,6 +8,10 @@ import org.bukkit.NamespacedKey; - import org.bukkit.material.MaterialData; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collections; -+import java.util.HashMap; -+import java.util.Map; -+ - /** - * Represents a shaped (ie normal) crafting recipe. - */ -diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -index ddcf84e6609abe8379cca2ff99983ce3efbab805..9d71e03be3342a3204725ed4aff56a2847373335 100644 ---- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java -@@ -1,10 +1,6 @@ - package org.bukkit.inventory; - - import com.google.common.base.Preconditions; --import java.util.ArrayList; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; - import org.apache.commons.lang.Validate; - import org.bukkit.Keyed; - import org.bukkit.Material; -@@ -12,6 +8,11 @@ import org.bukkit.NamespacedKey; - import org.bukkit.material.MaterialData; - import org.jetbrains.annotations.NotNull; - -+import java.util.ArrayList; -+import java.util.Collections; -+import java.util.Iterator; -+import java.util.List; -+ - /** - * Represents a shapeless recipe, where the arrangement of the ingredients on - * the crafting grid does not matter. -diff --git a/src/main/java/org/bukkit/inventory/StonecutterInventory.java b/src/main/java/org/bukkit/inventory/StonecutterInventory.java -index e7a8e7188bf8b9840de56dc80c2b79d64a9389cb..160b44f36f5b0f985e4c1aa31e53b8ce6d9614bd 100644 ---- a/src/main/java/org/bukkit/inventory/StonecutterInventory.java -+++ b/src/main/java/org/bukkit/inventory/StonecutterInventory.java -@@ -1,6 +1,6 @@ - package org.bukkit.inventory; - --import org.jetbrains.annotations.Nullable; // Paper -+import org.jetbrains.annotations.Nullable; - - /** - * Interface to the inventory of a Stonecutter. -diff --git a/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java b/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java -index d8ef781d6b025790ce9d2a9782e6ef2a47cc8e62..9c59aec2525e1a71def39fd3dc71d40dc0b55dcb 100644 ---- a/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java -+++ b/src/main/java/org/bukkit/inventory/StonecuttingRecipe.java -@@ -1,12 +1,13 @@ - package org.bukkit.inventory; - - import com.google.common.base.Preconditions; --import java.util.Collections; - import org.bukkit.Keyed; - import org.bukkit.Material; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collections; -+ - /** - * Represents a Stonecutting recipe. - */ -diff --git a/src/main/java/org/bukkit/inventory/meta/BannerMeta.java b/src/main/java/org/bukkit/inventory/meta/BannerMeta.java -index 4739d2ecc26e7e4adc1b297013da98e12fe58783..c8c8f4405bf892a61ebd8cdc28ae91d588ef8f76 100644 ---- a/src/main/java/org/bukkit/inventory/meta/BannerMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/BannerMeta.java -@@ -1,11 +1,12 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import org.bukkit.DyeColor; - import org.bukkit.block.banner.Pattern; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - public interface BannerMeta extends ItemMeta { - - /** -diff --git a/src/main/java/org/bukkit/inventory/meta/BookMeta.java b/src/main/java/org/bukkit/inventory/meta/BookMeta.java -index 94852d50e88d0594b84b581cd627174043629995..4ad51d1cf1ad4ea1ea703dbb0fc7c8dd020e074d 100644 ---- a/src/main/java/org/bukkit/inventory/meta/BookMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/BookMeta.java -@@ -1,11 +1,12 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import net.md_5.bungee.api.chat.BaseComponent; - import org.bukkit.Material; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents a book ({@link Material#WRITABLE_BOOK} or {@link - * Material#WRITTEN_BOOK}) that can have a title, an author, and pages. -diff --git a/src/main/java/org/bukkit/inventory/meta/CrossbowMeta.java b/src/main/java/org/bukkit/inventory/meta/CrossbowMeta.java -index 35c6594fd1040a1af1029e7260e5e3a9307b107d..6dcdb271166d3a3ff601f93b156e78ab8c72955b 100644 ---- a/src/main/java/org/bukkit/inventory/meta/CrossbowMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/CrossbowMeta.java -@@ -1,10 +1,11 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - public interface CrossbowMeta extends ItemMeta { - - /** -diff --git a/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java b/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java -index aae2ed2ec4498101ce78b7f96fed1b8c341ffc4f..1b786f24140a5767228c9bef228a864c5c9f6fc5 100644 ---- a/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/EnchantmentStorageMeta.java -@@ -1,10 +1,11 @@ - package org.bukkit.inventory.meta; - --import java.util.Map; - import org.bukkit.Material; - import org.bukkit.enchantments.Enchantment; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+ - /** - * EnchantmentMeta is specific to items that can store enchantments, as - * opposed to being enchanted. {@link Material#ENCHANTED_BOOK} is an example -diff --git a/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java b/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java -index fe23948170ccb101d58730d0066233d334022331..ded985ec52eb8045a896aef57b4b65236a78bc91 100644 ---- a/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/FireworkMeta.java -@@ -1,10 +1,11 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import org.bukkit.FireworkEffect; - import org.bukkit.Material; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Represents a {@link Material#FIREWORK_ROCKET} and its effects. - */ -diff --git a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java -index 5db838cab09888c3b3537e122e0e381a78e1dbb7..1e3ff677d26b9ecec398266ee82ef5a91699e291 100644 ---- a/src/main/java/org/bukkit/inventory/meta/ItemMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/ItemMeta.java -@@ -1,10 +1,6 @@ - package org.bukkit.inventory.meta; - - import com.google.common.collect.Multimap; --import java.util.Collection; --import java.util.List; --import java.util.Map; --import java.util.Set; - import org.bukkit.attribute.Attribute; - import org.bukkit.attribute.AttributeModifier; - import org.bukkit.configuration.serialization.ConfigurationSerializable; -@@ -16,6 +12,11 @@ import org.bukkit.persistence.PersistentDataHolder; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.List; -+import java.util.Map; -+import java.util.Set; -+ - /** - * This type represents the storage mechanism for auxiliary item data. - *

-diff --git a/src/main/java/org/bukkit/inventory/meta/KnowledgeBookMeta.java b/src/main/java/org/bukkit/inventory/meta/KnowledgeBookMeta.java -index 736c60c71d112e8c017473a93091b4e5336a996f..594cefd3ee790c550b98bfaaf67dc0fcb915bc03 100644 ---- a/src/main/java/org/bukkit/inventory/meta/KnowledgeBookMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/KnowledgeBookMeta.java -@@ -1,9 +1,10 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - public interface KnowledgeBookMeta extends ItemMeta { - - /** -diff --git a/src/main/java/org/bukkit/inventory/meta/PotionMeta.java b/src/main/java/org/bukkit/inventory/meta/PotionMeta.java -index 1056849dc3a0dc91c5485a0c55ef96ad3aa187c4..ec61fba71c0028708b01177b6ce819703edf49e0 100644 ---- a/src/main/java/org/bukkit/inventory/meta/PotionMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/PotionMeta.java -@@ -1,6 +1,5 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import org.bukkit.Color; - import org.bukkit.potion.PotionData; - import org.bukkit.potion.PotionEffect; -@@ -8,6 +7,8 @@ import org.bukkit.potion.PotionEffectType; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents a potion or item that can have custom effects. - */ -diff --git a/src/main/java/org/bukkit/inventory/meta/SuspiciousStewMeta.java b/src/main/java/org/bukkit/inventory/meta/SuspiciousStewMeta.java -index c2f4282c188e7d8041459cb3acaad674443ba147..68fcc6086406577738d2c3195850cf832b180cc8 100644 ---- a/src/main/java/org/bukkit/inventory/meta/SuspiciousStewMeta.java -+++ b/src/main/java/org/bukkit/inventory/meta/SuspiciousStewMeta.java -@@ -1,10 +1,11 @@ - package org.bukkit.inventory.meta; - --import java.util.List; - import org.bukkit.potion.PotionEffect; - import org.bukkit.potion.PotionEffectType; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * Represents a suspicious stew that can have custom effects. - */ -diff --git a/src/main/java/org/bukkit/loot/LootTable.java b/src/main/java/org/bukkit/loot/LootTable.java -index 73aa119b6e2d0d02c9c60ec5157573ceaabf4e3b..b391b55de8ab54b8d13a430038731a3fa4c0f65c 100644 ---- a/src/main/java/org/bukkit/loot/LootTable.java -+++ b/src/main/java/org/bukkit/loot/LootTable.java -@@ -1,12 +1,13 @@ - package org.bukkit.loot; - --import java.util.Collection; --import java.util.Random; - import org.bukkit.Keyed; - import org.bukkit.inventory.Inventory; - import org.bukkit.inventory.ItemStack; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+import java.util.Random; -+ - /** - * LootTables are technical files that represent what items should be in - * naturally generated containers, what items should be dropped when killing a -diff --git a/src/main/java/org/bukkit/map/MapCanvas.java b/src/main/java/org/bukkit/map/MapCanvas.java -index cc1714019d7a6c230948dc62dae5ba19b95f2fe7..5f039d15daa27513ac4f400de6776bdfed9b5737 100644 ---- a/src/main/java/org/bukkit/map/MapCanvas.java -+++ b/src/main/java/org/bukkit/map/MapCanvas.java -@@ -1,8 +1,9 @@ - package org.bukkit.map; - --import java.awt.Image; - import org.jetbrains.annotations.NotNull; - -+import java.awt.*; -+ - /** - * Represents a canvas for drawing to a map. Each canvas is associated with a - * specific {@link MapRenderer} and represents that renderer's layer on the -diff --git a/src/main/java/org/bukkit/map/MapCursorCollection.java b/src/main/java/org/bukkit/map/MapCursorCollection.java -index 4dba721aefe4fc6699b3b4bfa7ecb0b19c2a2a1a..be0683ba61d4839500956d89236f9ec9c91b9ffa 100644 ---- a/src/main/java/org/bukkit/map/MapCursorCollection.java -+++ b/src/main/java/org/bukkit/map/MapCursorCollection.java -@@ -1,10 +1,11 @@ - package org.bukkit.map; - --import java.util.ArrayList; --import java.util.List; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.ArrayList; -+import java.util.List; -+ - /** - * Represents all the map cursors on a {@link MapCanvas}. Like MapCanvas, a - * MapCursorCollection is linked to a specific {@link MapRenderer}. -diff --git a/src/main/java/org/bukkit/map/MapFont.java b/src/main/java/org/bukkit/map/MapFont.java -index 2d599c8f3ef1df4c1bde87e502f794984b9401bc..1092c58315e52683b79c43ee01541c4ea22d7904 100644 ---- a/src/main/java/org/bukkit/map/MapFont.java -+++ b/src/main/java/org/bukkit/map/MapFont.java -@@ -1,10 +1,11 @@ - package org.bukkit.map; - --import java.util.HashMap; - import org.bukkit.ChatColor; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+ - /** - * Represents a bitmap font drawable to a map. - */ -diff --git a/src/main/java/org/bukkit/map/MapPalette.java b/src/main/java/org/bukkit/map/MapPalette.java -index 95fe3f4d081053a6cf484e4ef07b474f2dc2ab02..36d9b177623a2ec0588ff0637e1d9f7e3f2dc7be 100644 ---- a/src/main/java/org/bukkit/map/MapPalette.java -+++ b/src/main/java/org/bukkit/map/MapPalette.java -@@ -1,12 +1,11 @@ - package org.bukkit.map; - --import java.awt.Color; --import java.awt.Graphics2D; --import java.awt.Image; --import java.awt.image.BufferedImage; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.awt.*; -+import java.awt.image.BufferedImage; -+ - /** - * Represents the palette that map items use. - *

-diff --git a/src/main/java/org/bukkit/map/MapView.java b/src/main/java/org/bukkit/map/MapView.java -index 9b8b68b66dc15b06800251702c2722623c8462a0..5873ced977965613df67621d25a46b38a30f03a9 100644 ---- a/src/main/java/org/bukkit/map/MapView.java -+++ b/src/main/java/org/bukkit/map/MapView.java -@@ -1,11 +1,12 @@ - package org.bukkit.map; - --import java.util.List; - import org.bukkit.World; - import org.bukkit.inventory.meta.MapMeta; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.List; -+ - /** - * Represents a map item. - */ -diff --git a/src/main/java/org/bukkit/material/MonsterEggs.java b/src/main/java/org/bukkit/material/MonsterEggs.java -index 2fac218f1e237d4b867c1e6215fe40151dcceaf0..b424b622602e0a7a32ee8006570c85017b301594 100644 ---- a/src/main/java/org/bukkit/material/MonsterEggs.java -+++ b/src/main/java/org/bukkit/material/MonsterEggs.java -@@ -1,8 +1,9 @@ - package org.bukkit.material; - -+import org.bukkit.Material; -+ - import java.util.ArrayList; - import java.util.List; --import org.bukkit.Material; - - /** - * Represents the different types of monster eggs -diff --git a/src/main/java/org/bukkit/material/Mushroom.java b/src/main/java/org/bukkit/material/Mushroom.java -index 543b76c8a659a488c3e87d7b59b2f14cf7d651f1..2b45156ee38abd9ec5a350fa59dfbef61bf07d90 100644 ---- a/src/main/java/org/bukkit/material/Mushroom.java -+++ b/src/main/java/org/bukkit/material/Mushroom.java -@@ -1,12 +1,13 @@ - package org.bukkit.material; - --import java.util.EnumSet; --import java.util.Set; - import org.apache.commons.lang.Validate; - import org.bukkit.Material; - import org.bukkit.block.BlockFace; - import org.bukkit.material.types.MushroomBlockTexture; - -+import java.util.EnumSet; -+import java.util.Set; -+ - /** - * Represents a huge mushroom block with certain combinations of faces set to - * cap, pores or stem. -diff --git a/src/main/java/org/bukkit/material/SmoothBrick.java b/src/main/java/org/bukkit/material/SmoothBrick.java -index e4812b7cef9847745d147aad87181c4eb903f5df..6ab768762c77bb0c40cf9df94a7b4203dda5dde5 100644 ---- a/src/main/java/org/bukkit/material/SmoothBrick.java -+++ b/src/main/java/org/bukkit/material/SmoothBrick.java -@@ -1,8 +1,9 @@ - package org.bukkit.material; - -+import org.bukkit.Material; -+ - import java.util.ArrayList; - import java.util.List; --import org.bukkit.Material; - - /** - * Represents the different types of smooth bricks. -diff --git a/src/main/java/org/bukkit/material/Step.java b/src/main/java/org/bukkit/material/Step.java -index 9f502e7ee05d0512e190a1722cc112ece068c4e2..2b20e77dfded15b0b68159b6941ccfbcd3a814a3 100644 ---- a/src/main/java/org/bukkit/material/Step.java -+++ b/src/main/java/org/bukkit/material/Step.java -@@ -1,8 +1,9 @@ - package org.bukkit.material; - -+import org.bukkit.Material; -+ - import java.util.ArrayList; - import java.util.List; --import org.bukkit.Material; - - /** - * Represents the different types of steps. -diff --git a/src/main/java/org/bukkit/material/TexturedMaterial.java b/src/main/java/org/bukkit/material/TexturedMaterial.java -index 6e0a834794453eff7b3efc93e90c9bf49ef7c688..7b30258c8eb102dcaa396d6eec75607bc9077eb1 100644 ---- a/src/main/java/org/bukkit/material/TexturedMaterial.java -+++ b/src/main/java/org/bukkit/material/TexturedMaterial.java -@@ -1,8 +1,9 @@ - package org.bukkit.material; - --import java.util.List; - import org.bukkit.Material; - -+import java.util.List; -+ - /** - * Represents textured materials like steps and smooth bricks - * -diff --git a/src/main/java/org/bukkit/material/Vine.java b/src/main/java/org/bukkit/material/Vine.java -index 07a4f3b1511e274affe751aad2b9020b49df815f..f6e660aa788558920ba29dd8d39449481fb2e77e 100644 ---- a/src/main/java/org/bukkit/material/Vine.java -+++ b/src/main/java/org/bukkit/material/Vine.java -@@ -1,10 +1,11 @@ - package org.bukkit.material; - --import java.util.Arrays; --import java.util.EnumSet; - import org.bukkit.Material; - import org.bukkit.block.BlockFace; - -+import java.util.Arrays; -+import java.util.EnumSet; -+ - /** - * Represents a vine - * -diff --git a/src/main/java/org/bukkit/material/types/MushroomBlockTexture.java b/src/main/java/org/bukkit/material/types/MushroomBlockTexture.java -index 0ea9c6b2420a0f990bd1fdf50fc015e37a7060d8..24c2073dda1cf9423cf008aca0c4d815b2fc36a4 100644 ---- a/src/main/java/org/bukkit/material/types/MushroomBlockTexture.java -+++ b/src/main/java/org/bukkit/material/types/MushroomBlockTexture.java -@@ -1,10 +1,11 @@ - package org.bukkit.material.types; - - import com.google.common.collect.Maps; --import java.util.Map; - import org.bukkit.block.BlockFace; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - /** - * Represents the different textured blocks of mushroom. - */ -diff --git a/src/main/java/org/bukkit/metadata/LazyMetadataValue.java b/src/main/java/org/bukkit/metadata/LazyMetadataValue.java -index 86e0e3767e6e711bd58660a102e98c917a585b1b..de4b317e76f7c949e29952ba979aaab778f04792 100644 ---- a/src/main/java/org/bukkit/metadata/LazyMetadataValue.java -+++ b/src/main/java/org/bukkit/metadata/LazyMetadataValue.java -@@ -1,12 +1,13 @@ - package org.bukkit.metadata; - --import java.lang.ref.SoftReference; --import java.util.concurrent.Callable; - import org.apache.commons.lang.Validate; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.ref.SoftReference; -+import java.util.concurrent.Callable; -+ - /** - * The LazyMetadataValue class implements a type of metadata that is not - * computed until another plugin asks for it. -diff --git a/src/main/java/org/bukkit/metadata/MetadataStore.java b/src/main/java/org/bukkit/metadata/MetadataStore.java -index 29f86fa938c2758cbdf8dec22519a18c3e119818..1ebba41f4a10faf4bd1120f71455400904698456 100644 ---- a/src/main/java/org/bukkit/metadata/MetadataStore.java -+++ b/src/main/java/org/bukkit/metadata/MetadataStore.java -@@ -1,9 +1,10 @@ - package org.bukkit.metadata; - --import java.util.List; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - public interface MetadataStore { - /** - * Adds a metadata value to an object. -diff --git a/src/main/java/org/bukkit/metadata/MetadataStoreBase.java b/src/main/java/org/bukkit/metadata/MetadataStoreBase.java -index abbe545af572687a0399c2387434863cd2b70f68..9a40bea9e4b0a6123e33a4bc49774c841c28a5b5 100644 ---- a/src/main/java/org/bukkit/metadata/MetadataStoreBase.java -+++ b/src/main/java/org/bukkit/metadata/MetadataStoreBase.java -@@ -1,17 +1,11 @@ - package org.bukkit.metadata; - --import java.util.ArrayList; --import java.util.Collection; --import java.util.Collections; --import java.util.HashMap; --import java.util.Iterator; // Paper --import java.util.List; --import java.util.Map; --import java.util.WeakHashMap; - import org.apache.commons.lang.Validate; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.*; -+ - public abstract class MetadataStoreBase { - private Map> metadataMap = new java.util.concurrent.ConcurrentHashMap>(); // Paper - -diff --git a/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java b/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java -index b90d09f57bdab627abdf8a54438b1b531f2c6827..d14dec86eff1a1a8778befa7457c5a3653f2f557 100644 ---- a/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java -+++ b/src/main/java/org/bukkit/metadata/MetadataValueAdapter.java -@@ -1,12 +1,13 @@ - package org.bukkit.metadata; - --import java.lang.ref.WeakReference; - import org.apache.commons.lang.Validate; - import org.bukkit.plugin.Plugin; - import org.bukkit.util.NumberConversions; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.lang.ref.WeakReference; -+ - /** - * Optional base class for facilitating MetadataValue implementations. - *

-diff --git a/src/main/java/org/bukkit/metadata/Metadatable.java b/src/main/java/org/bukkit/metadata/Metadatable.java -index b35f41a15fc729d62474a0b38d59ca7895951f2c..891e516083cc7261d238144662dd6cdc3f1db863 100644 ---- a/src/main/java/org/bukkit/metadata/Metadatable.java -+++ b/src/main/java/org/bukkit/metadata/Metadatable.java -@@ -1,9 +1,10 @@ - package org.bukkit.metadata; - --import java.util.List; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.List; -+ - /** - * This interface is implemented by all objects that can provide metadata - * about themselves. -diff --git a/src/main/java/org/bukkit/permissions/Permissible.java b/src/main/java/org/bukkit/permissions/Permissible.java -index 228421154913116069c20323afb519bdde2134df..2fe3d7e9971d882764e2918ff1c1a593f40a3321 100644 ---- a/src/main/java/org/bukkit/permissions/Permissible.java -+++ b/src/main/java/org/bukkit/permissions/Permissible.java -@@ -1,10 +1,11 @@ - package org.bukkit.permissions; - --import java.util.Set; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Set; -+ - /** - * Represents an object that may be assigned permissions - */ -diff --git a/src/main/java/org/bukkit/permissions/PermissibleBase.java b/src/main/java/org/bukkit/permissions/PermissibleBase.java -index c94e4cdb5785d5dfcb704c4adabda0b19a20ec7d..945573f6a7a82f849f15a525761f0a7ec867c400 100644 ---- a/src/main/java/org/bukkit/permissions/PermissibleBase.java -+++ b/src/main/java/org/bukkit/permissions/PermissibleBase.java -@@ -1,17 +1,13 @@ - package org.bukkit.permissions; - --import java.util.HashMap; --import java.util.HashSet; --import java.util.LinkedList; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.logging.Level; - import org.bukkit.Bukkit; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+import java.util.logging.Level; -+ - /** - * Base Permissible for use in any Permissible object via proxy or extension - */ -diff --git a/src/main/java/org/bukkit/permissions/Permission.java b/src/main/java/org/bukkit/permissions/Permission.java -index 91d45b965724bc3ecf9697b88bafa88c010e9ada..71e5f3e3b2b70f83a8707bba28847436c5cf1948 100644 ---- a/src/main/java/org/bukkit/permissions/Permission.java -+++ b/src/main/java/org/bukkit/permissions/Permission.java -@@ -1,17 +1,14 @@ - package org.bukkit.permissions; - --import java.util.ArrayList; --import java.util.LinkedHashMap; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.logging.Level; - import org.apache.commons.lang.Validate; - import org.bukkit.Bukkit; - import org.bukkit.plugin.PluginManager; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+import java.util.logging.Level; -+ - /** - * Represents a unique permission that may be attached to a {@link - * Permissible} -diff --git a/src/main/java/org/bukkit/permissions/PermissionAttachment.java b/src/main/java/org/bukkit/permissions/PermissionAttachment.java -index cd8ac371a16173e2415c2628a96c1dc3c6ca895d..8ab583927799da4c2603ac827fe52495f2dbdfa8 100644 ---- a/src/main/java/org/bukkit/permissions/PermissionAttachment.java -+++ b/src/main/java/org/bukkit/permissions/PermissionAttachment.java -@@ -1,11 +1,12 @@ - package org.bukkit.permissions; - --import java.util.LinkedHashMap; --import java.util.Map; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.LinkedHashMap; -+import java.util.Map; -+ - /** - * Holds information about a permission attachment on a {@link Permissible} - * object -diff --git a/src/main/java/org/bukkit/permissions/PermissionDefault.java b/src/main/java/org/bukkit/permissions/PermissionDefault.java -index 449df7c798084669c1f39cbeb5c72c4b17a67162..3380f2f20f21cc0f34c3c661fe902ce05cd59d54 100644 ---- a/src/main/java/org/bukkit/permissions/PermissionDefault.java -+++ b/src/main/java/org/bukkit/permissions/PermissionDefault.java -@@ -1,10 +1,11 @@ - package org.bukkit.permissions; - --import java.util.HashMap; --import java.util.Map; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.HashMap; -+import java.util.Map; -+ - /** - * Represents the possible default values for permissions - */ -diff --git a/src/main/java/org/bukkit/persistence/PersistentDataContainer.java b/src/main/java/org/bukkit/persistence/PersistentDataContainer.java -index bf2a957be52d86d07d7d303c86bd3da5fe0a16c0..ebf6252749d7e3e4e36537f0650a6181769bc728 100644 ---- a/src/main/java/org/bukkit/persistence/PersistentDataContainer.java -+++ b/src/main/java/org/bukkit/persistence/PersistentDataContainer.java -@@ -1,10 +1,11 @@ - package org.bukkit.persistence; - --import java.util.Set; - import org.bukkit.NamespacedKey; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Set; -+ - /** - * This interface represents a map like object, capable of storing custom tags - * in it. -diff --git a/src/main/java/org/bukkit/plugin/EventExecutor.java b/src/main/java/org/bukkit/plugin/EventExecutor.java -index 9026e108ccd3a88aee1267ee275137befa646455..a879801e435e6fc0f78c5ae440d1342298fea729 100644 ---- a/src/main/java/org/bukkit/plugin/EventExecutor.java -+++ b/src/main/java/org/bukkit/plugin/EventExecutor.java -@@ -1,22 +1,20 @@ - package org.bukkit.plugin; - -+import com.destroystokyo.paper.event.executor.MethodHandleEventExecutor; -+import com.destroystokyo.paper.event.executor.StaticMethodHandleEventExecutor; -+import com.destroystokyo.paper.event.executor.asm.ASMEventExecutorGenerator; -+import com.destroystokyo.paper.event.executor.asm.ClassDefiner; -+import com.google.common.base.Preconditions; - import org.bukkit.event.Event; - import org.bukkit.event.EventException; - import org.bukkit.event.Listener; - import org.jetbrains.annotations.NotNull; - --// Paper start - import java.lang.reflect.Method; - import java.lang.reflect.Modifier; - import java.util.concurrent.ConcurrentHashMap; - import java.util.concurrent.ConcurrentMap; - import java.util.function.Function; -- --import com.destroystokyo.paper.event.executor.MethodHandleEventExecutor; --import com.destroystokyo.paper.event.executor.StaticMethodHandleEventExecutor; --import com.destroystokyo.paper.event.executor.asm.ASMEventExecutorGenerator; --import com.destroystokyo.paper.event.executor.asm.ClassDefiner; --import com.google.common.base.Preconditions; - // Paper end - - /** -diff --git a/src/main/java/org/bukkit/plugin/Plugin.java b/src/main/java/org/bukkit/plugin/Plugin.java -index 79890c68f1ad31f951dfdbd9a16dac500ec58c40..9bb6821f881f1c43a03410d4e92afeb308e3f962 100644 ---- a/src/main/java/org/bukkit/plugin/Plugin.java -+++ b/src/main/java/org/bukkit/plugin/Plugin.java -@@ -1,8 +1,5 @@ - package org.bukkit.plugin; - --import java.io.File; --import java.io.InputStream; --import java.util.logging.Logger; - import org.bukkit.Server; - import org.bukkit.command.TabExecutor; - import org.bukkit.configuration.file.FileConfiguration; -@@ -10,6 +7,10 @@ import org.bukkit.generator.ChunkGenerator; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.io.File; -+import java.io.InputStream; -+import java.util.logging.Logger; -+ - /** - * Represents a Plugin - *

-diff --git a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java -index f78a7df6e2edbbbaeb0edf4330125b2c2fa39a57..9d7ba043bf971e78f30ba751ea036ea54b54fe7d 100644 ---- a/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java -+++ b/src/main/java/org/bukkit/plugin/PluginDescriptionFile.java -@@ -3,20 +3,7 @@ package org.bukkit.plugin; - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap; - import com.google.common.collect.ImmutableSet; --import java.io.InputStream; --import java.io.Reader; --import java.io.Writer; --import java.util.HashMap; --import java.util.HashSet; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.regex.Pattern; --import org.bukkit.command.Command; --import org.bukkit.command.CommandExecutor; --import org.bukkit.command.CommandSender; --import org.bukkit.command.PluginCommand; --import org.bukkit.command.TabCompleter; -+import org.bukkit.command.*; - import org.bukkit.permissions.Permissible; - import org.bukkit.permissions.Permission; - import org.bukkit.permissions.PermissionDefault; -@@ -29,6 +16,12 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; - import org.yaml.snakeyaml.nodes.Node; - import org.yaml.snakeyaml.nodes.Tag; - -+import java.io.InputStream; -+import java.io.Reader; -+import java.io.Writer; -+import java.util.*; -+import java.util.regex.Pattern; -+ - /** - * This type is the runtime-container for the information in the plugin.yml. - * All plugins must have a respective plugin.yml. For plugins written in java -diff --git a/src/main/java/org/bukkit/plugin/PluginLoader.java b/src/main/java/org/bukkit/plugin/PluginLoader.java -index 6ab9cd8213cbe35943748dcf42948d5fc048c84c..65ffd55db5aaa8bb337d9b892d4c222e915291fa 100644 ---- a/src/main/java/org/bukkit/plugin/PluginLoader.java -+++ b/src/main/java/org/bukkit/plugin/PluginLoader.java -@@ -1,12 +1,13 @@ - package org.bukkit.plugin; - -+import org.bukkit.event.Event; -+import org.bukkit.event.Listener; -+import org.jetbrains.annotations.NotNull; -+ - import java.io.File; - import java.util.Map; - import java.util.Set; - import java.util.regex.Pattern; --import org.bukkit.event.Event; --import org.bukkit.event.Listener; --import org.jetbrains.annotations.NotNull; - - /** - * Represents a plugin loader, which handles direct access to specific types -diff --git a/src/main/java/org/bukkit/plugin/PluginLogger.java b/src/main/java/org/bukkit/plugin/PluginLogger.java -index 0182370014e0dc8b74759933ab984d16678f6ec3..533f0b6f8145884de006ea2525dbc9a288d3ce22 100644 ---- a/src/main/java/org/bukkit/plugin/PluginLogger.java -+++ b/src/main/java/org/bukkit/plugin/PluginLogger.java -@@ -1,9 +1,10 @@ - package org.bukkit.plugin; - -+import org.jetbrains.annotations.NotNull; -+ - import java.util.logging.Level; - import java.util.logging.LogRecord; - import java.util.logging.Logger; --import org.jetbrains.annotations.NotNull; - - /** - * The PluginLogger class is a modified {@link Logger} that prepends all -diff --git a/src/main/java/org/bukkit/plugin/PluginManager.java b/src/main/java/org/bukkit/plugin/PluginManager.java -index 86cc5025ad98f7a752c51713b7cd6a39d5136ecc..7a02175fd4f28a4d45607308218bf2fce09c659e 100644 ---- a/src/main/java/org/bukkit/plugin/PluginManager.java -+++ b/src/main/java/org/bukkit/plugin/PluginManager.java -@@ -1,7 +1,5 @@ - package org.bukkit.plugin; - --import java.io.File; --import java.util.Set; - import org.bukkit.event.Event; - import org.bukkit.event.EventPriority; - import org.bukkit.event.Listener; -@@ -11,6 +9,9 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.io.File; -+import java.util.Set; -+ - /** - * Handles all plugin management from the Server - */ -diff --git a/src/main/java/org/bukkit/plugin/RegisteredListener.java b/src/main/java/org/bukkit/plugin/RegisteredListener.java -index 419aec56b0e3fa8bcec2ea7f340caa3456b57d00..a3b3a056b9659cc06aea7859f2fe017e25648cdb 100644 ---- a/src/main/java/org/bukkit/plugin/RegisteredListener.java -+++ b/src/main/java/org/bukkit/plugin/RegisteredListener.java -@@ -1,10 +1,6 @@ - package org.bukkit.plugin; - --import org.bukkit.event.Cancellable; --import org.bukkit.event.Event; --import org.bukkit.event.EventException; --import org.bukkit.event.EventPriority; --import org.bukkit.event.Listener; -+import org.bukkit.event.*; - import org.jetbrains.annotations.NotNull; - - /** -diff --git a/src/main/java/org/bukkit/plugin/ServicesManager.java b/src/main/java/org/bukkit/plugin/ServicesManager.java -index 9e2f00572af099d3556f210819a65ee9fa2bc0d5..185b644b122b7696d7d7bc9662758fae8d879724 100644 ---- a/src/main/java/org/bukkit/plugin/ServicesManager.java -+++ b/src/main/java/org/bukkit/plugin/ServicesManager.java -@@ -1,10 +1,11 @@ - package org.bukkit.plugin; - --import java.util.Collection; --import java.util.List; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Collection; -+import java.util.List; -+ - /** - * Manages services and service providers. Services are an interface - * specifying a list of methods that a provider must implement. Providers are -diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -index 26685f59b235ea5b4c4fb7ae21acb5149edaa2b3..f6de2ae1eac3466ab0c6d2a02164bb757ebd95eb 100644 ---- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java -+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java -@@ -1,32 +1,13 @@ - package org.bukkit.plugin; - -+import com.destroystokyo.paper.event.server.ServerExceptionEvent; -+import com.destroystokyo.paper.exception.ServerEventException; -+import com.destroystokyo.paper.exception.ServerPluginEnableDisableException; - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableSet; - import com.google.common.graph.GraphBuilder; - import com.google.common.graph.Graphs; - import com.google.common.graph.MutableGraph; --import java.io.File; --import java.lang.reflect.Constructor; --import java.lang.reflect.Method; --import java.util.ArrayList; --import java.util.Collection; --import java.util.HashMap; --import java.util.HashSet; --import java.util.Iterator; --import java.util.LinkedHashMap; --import java.util.LinkedHashSet; --import java.util.LinkedList; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.WeakHashMap; --import java.util.logging.Level; --import java.util.regex.Matcher; --import java.util.regex.Pattern; -- --import com.destroystokyo.paper.event.server.ServerExceptionEvent; --import com.destroystokyo.paper.exception.ServerEventException; --import com.destroystokyo.paper.exception.ServerPluginEnableDisableException; - import org.apache.commons.lang.Validate; - import org.bukkit.Server; - import org.bukkit.World; -@@ -44,6 +25,14 @@ import org.bukkit.util.FileUtil; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.io.File; -+import java.lang.reflect.Constructor; -+import java.lang.reflect.Method; -+import java.util.*; -+import java.util.logging.Level; -+import java.util.regex.Matcher; -+import java.util.regex.Pattern; -+ - /** - * Handles all plugin management from the Server - */ -diff --git a/src/main/java/org/bukkit/plugin/SimpleServicesManager.java b/src/main/java/org/bukkit/plugin/SimpleServicesManager.java -index f3dd8490230b85be7e03f7c0f0c20b476e1574fd..aaa95ca8b99d62b3dfb7b689e09d077b75aa90b5 100644 ---- a/src/main/java/org/bukkit/plugin/SimpleServicesManager.java -+++ b/src/main/java/org/bukkit/plugin/SimpleServicesManager.java -@@ -2,20 +2,14 @@ package org.bukkit.plugin; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableSet; --import java.util.ArrayList; --import java.util.Collections; --import java.util.HashMap; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.NoSuchElementException; --import java.util.Set; - import org.bukkit.Bukkit; - import org.bukkit.event.server.ServiceRegisterEvent; - import org.bukkit.event.server.ServiceUnregisterEvent; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.*; -+ - /** - * A simple services manager. - */ -diff --git a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java -index 04fa3991f6ce4e9dad804f28fc6c947695857089..eb0ed9763a48e73fa0c36790660a79092687ff82 100644 ---- a/src/main/java/org/bukkit/plugin/java/JavaPlugin.java -+++ b/src/main/java/org/bukkit/plugin/java/JavaPlugin.java -@@ -1,18 +1,6 @@ - package org.bukkit.plugin.java; - - import com.google.common.base.Charsets; --import java.io.File; --import java.io.FileOutputStream; --import java.io.IOException; --import java.io.InputStream; --import java.io.InputStreamReader; --import java.io.OutputStream; --import java.io.Reader; --import java.net.URL; --import java.net.URLConnection; --import java.util.List; --import java.util.logging.Level; --import java.util.logging.Logger; - import org.apache.commons.lang.Validate; - import org.bukkit.Server; - import org.bukkit.command.Command; -@@ -24,10 +12,16 @@ import org.bukkit.generator.ChunkGenerator; - import org.bukkit.plugin.PluginBase; - import org.bukkit.plugin.PluginDescriptionFile; - import org.bukkit.plugin.PluginLoader; --import org.bukkit.plugin.PluginLogger; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.io.*; -+import java.net.URL; -+import java.net.URLConnection; -+import java.util.List; -+import java.util.logging.Level; -+import java.util.logging.Logger; -+ - /** - * Represents a Java plugin - */ -diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -index 384edf9890dfbd1cddfdcac4db1ebe9a4d761f78..adc3f55122feaa2b1af786d34ded7a2900d03438 100644 ---- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java -@@ -1,23 +1,5 @@ - package org.bukkit.plugin.java; - --import java.io.File; --import java.io.FileNotFoundException; --import java.io.IOException; --import java.io.InputStream; --import java.lang.reflect.InvocationTargetException; --import java.lang.reflect.Method; --import java.util.Arrays; --import java.util.HashMap; --import java.util.HashSet; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.concurrent.ConcurrentHashMap; --import java.util.concurrent.CopyOnWriteArrayList; --import java.util.jar.JarEntry; --import java.util.jar.JarFile; --import java.util.logging.Level; --import java.util.regex.Pattern; - import org.apache.commons.lang.Validate; - import org.bukkit.Server; - import org.bukkit.Warning; -@@ -25,26 +7,28 @@ import org.bukkit.Warning.WarningState; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.ConfigurationSerialization; - import org.bukkit.event.Event; --import org.bukkit.event.EventException; - import org.bukkit.event.EventHandler; - import org.bukkit.event.Listener; - import org.bukkit.event.server.PluginDisableEvent; - import org.bukkit.event.server.PluginEnableEvent; --import org.bukkit.plugin.AuthorNagException; --import org.bukkit.plugin.EventExecutor; --import org.bukkit.plugin.InvalidDescriptionException; --import org.bukkit.plugin.InvalidPluginException; --import org.bukkit.plugin.Plugin; --import org.bukkit.plugin.PluginDescriptionFile; --import org.bukkit.plugin.PluginLoader; --import org.bukkit.plugin.RegisteredListener; --import org.bukkit.plugin.TimedRegisteredListener; --import org.bukkit.plugin.UnknownDependencyException; -+import org.bukkit.plugin.*; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; --import org.spigotmc.CustomTimingsHandler; // Spigot - import org.yaml.snakeyaml.error.YAMLException; - -+import java.io.File; -+import java.io.FileNotFoundException; -+import java.io.IOException; -+import java.io.InputStream; -+import java.lang.reflect.Method; -+import java.util.*; -+import java.util.concurrent.ConcurrentHashMap; -+import java.util.concurrent.CopyOnWriteArrayList; -+import java.util.jar.JarEntry; -+import java.util.jar.JarFile; -+import java.util.logging.Level; -+import java.util.regex.Pattern; -+ - /** - * Represents a Java plugin loader, allowing plugins in the form of .jar - */ -diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -index 62f7a6817da079513f471e36cd79739d36a36d86..571e68010c3e76dd7ea777fd55ad5ce36af96262 100644 ---- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java -@@ -1,6 +1,13 @@ - package org.bukkit.plugin.java; - - import com.google.common.io.ByteStreams; -+import org.apache.commons.lang.Validate; -+import org.bukkit.plugin.InvalidPluginException; -+import org.bukkit.plugin.PluginDescriptionFile; -+import org.bukkit.plugin.SimplePluginManager; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ - import java.io.File; - import java.io.IOException; - import java.io.InputStream; -@@ -18,12 +25,6 @@ import java.util.jar.JarEntry; - import java.util.jar.JarFile; - import java.util.jar.Manifest; - import java.util.logging.Level; --import org.apache.commons.lang.Validate; --import org.bukkit.plugin.InvalidPluginException; --import org.bukkit.plugin.PluginDescriptionFile; --import org.bukkit.plugin.SimplePluginManager; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; - - /** - * A ClassLoader for plugins, to allow shared classes across multiple plugins -diff --git a/src/main/java/org/bukkit/plugin/messaging/Messenger.java b/src/main/java/org/bukkit/plugin/messaging/Messenger.java -index 682c77188436d696d4dafbc70cf131d5c921e94d..1493bc1bec3269e9521438f8d0840ef2c056e674 100644 ---- a/src/main/java/org/bukkit/plugin/messaging/Messenger.java -+++ b/src/main/java/org/bukkit/plugin/messaging/Messenger.java -@@ -1,11 +1,12 @@ - package org.bukkit.plugin.messaging; - --import java.util.Set; - import org.bukkit.NamespacedKey; - import org.bukkit.entity.Player; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * A class responsible for managing the registrations of plugin channels and - * their listeners. -diff --git a/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java b/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java -index b84b37fe27d84574dc5897285f1d9a1437bd322c..0fec28682598d14ff7b0948b1a3733f6e23ae539 100644 ---- a/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java -+++ b/src/main/java/org/bukkit/plugin/messaging/PluginMessageRecipient.java -@@ -1,9 +1,10 @@ - package org.bukkit.plugin.messaging; - --import java.util.Set; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.Set; -+ - /** - * Represents a possible recipient for a Plugin Message. - */ -diff --git a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java -index 6fda7f3aa68e76af64362e9afed70fc6a5e92986..0635fb216d510a15b8e61c38a5108741ab342ecc 100644 ---- a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java -+++ b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java -@@ -2,16 +2,13 @@ package org.bukkit.plugin.messaging; - - import com.google.common.collect.ImmutableSet; - import com.google.common.collect.ImmutableSet.Builder; --import java.util.HashMap; --import java.util.HashSet; --import java.util.Locale; --import java.util.Map; --import java.util.Set; --import java.util.logging.Level; - import org.bukkit.entity.Player; - import org.bukkit.plugin.Plugin; - import org.jetbrains.annotations.NotNull; - -+import java.util.*; -+import java.util.logging.Level; -+ - /** - * Standard implementation to {@link Messenger} - */ -diff --git a/src/main/java/org/bukkit/potion/Potion.java b/src/main/java/org/bukkit/potion/Potion.java -index ac02ae4fc179483b4ac3d1adc41684a8426197eb..b1397a08d281ed8fb0b22e87520988e8f069ba45 100644 ---- a/src/main/java/org/bukkit/potion/Potion.java -+++ b/src/main/java/org/bukkit/potion/Potion.java -@@ -1,6 +1,5 @@ - package org.bukkit.potion; - --import java.util.Collection; - import org.apache.commons.lang.Validate; - import org.bukkit.Material; - import org.bukkit.entity.LivingEntity; -@@ -8,6 +7,8 @@ import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.meta.PotionMeta; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Potion Adapter for pre-1.9 data values - * see @PotionMeta for 1.9+ -diff --git a/src/main/java/org/bukkit/potion/PotionBrewer.java b/src/main/java/org/bukkit/potion/PotionBrewer.java -index d21f407cc16cfd709c1cabf408e8d8d16aba7e1a..254bd6f3e8d13932076421ad918702841d1cc839 100644 ---- a/src/main/java/org/bukkit/potion/PotionBrewer.java -+++ b/src/main/java/org/bukkit/potion/PotionBrewer.java -@@ -1,8 +1,9 @@ - package org.bukkit.potion; - --import java.util.Collection; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - /** - * Represents a brewer that can create {@link PotionEffect}s. - */ -diff --git a/src/main/java/org/bukkit/potion/PotionEffect.java b/src/main/java/org/bukkit/potion/PotionEffect.java -index 74767751199bce03d63f2a9524712656193f850c..76376bc21ce7f13cb09ef94afabb672731742b83 100644 ---- a/src/main/java/org/bukkit/potion/PotionEffect.java -+++ b/src/main/java/org/bukkit/potion/PotionEffect.java -@@ -1,8 +1,6 @@ - package org.bukkit.potion; - - import com.google.common.collect.ImmutableMap; --import java.util.Map; --import java.util.NoSuchElementException; - import org.apache.commons.lang.Validate; - import org.bukkit.Color; - import org.bukkit.configuration.serialization.ConfigurationSerializable; -@@ -12,6 +10,9 @@ import org.jetbrains.annotations.Contract; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+import java.util.NoSuchElementException; -+ - /** - * Represents a potion effect, that can be added to a {@link LivingEntity}. A - * potion effect has a duration that it will last for, an amplifier that will -diff --git a/src/main/java/org/bukkit/potion/PotionEffectType.java b/src/main/java/org/bukkit/potion/PotionEffectType.java -index b5790aaac67f5b73f941147008d21a92d716b254..0e9e16ee08deb20da11dfe1d00bc69093a8ee04d 100644 ---- a/src/main/java/org/bukkit/potion/PotionEffectType.java -+++ b/src/main/java/org/bukkit/potion/PotionEffectType.java -@@ -1,13 +1,14 @@ - package org.bukkit.potion; - --import java.util.Arrays; --import java.util.HashMap; --import java.util.Map; - import org.apache.commons.lang.Validate; - import org.bukkit.Color; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Arrays; -+import java.util.HashMap; -+import java.util.Map; -+ - /** - * Represents a type of potion and its effect on an entity. - */ -diff --git a/src/main/java/org/bukkit/scheduler/BukkitScheduler.java b/src/main/java/org/bukkit/scheduler/BukkitScheduler.java -index ac140fc2c638e22e06b2920db3e376ab9e8c3733..91d757a1ce940cb244f496e69d11fe96de6e3284 100644 ---- a/src/main/java/org/bukkit/scheduler/BukkitScheduler.java -+++ b/src/main/java/org/bukkit/scheduler/BukkitScheduler.java -@@ -1,11 +1,12 @@ - package org.bukkit.scheduler; - -+import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; -+ - import java.util.List; - import java.util.concurrent.Callable; - import java.util.concurrent.Future; - import java.util.function.Consumer; --import org.bukkit.plugin.Plugin; --import org.jetbrains.annotations.NotNull; - - public interface BukkitScheduler { - -diff --git a/src/main/java/org/bukkit/scoreboard/Scoreboard.java b/src/main/java/org/bukkit/scoreboard/Scoreboard.java -index 4bfaaea78c9b6aa5d392629aa943d26dbe6a7d4a..3f1fcf3a1295b2cac0dbd2a42eaa0c69853e2095 100644 ---- a/src/main/java/org/bukkit/scoreboard/Scoreboard.java -+++ b/src/main/java/org/bukkit/scoreboard/Scoreboard.java -@@ -1,10 +1,11 @@ - package org.bukkit.scoreboard; - --import java.util.Set; - import org.bukkit.OfflinePlayer; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Set; -+ - /** - * A scoreboard - */ -diff --git a/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java b/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java -index 3c0740797a2ad3b165c8a69596d275dbc710feca..255977c2fb13fe6e67ae516e452beb2448c72f09 100644 ---- a/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java -+++ b/src/main/java/org/bukkit/scoreboard/ScoreboardManager.java -@@ -1,8 +1,9 @@ - package org.bukkit.scoreboard; - --import java.lang.ref.WeakReference; - import org.jetbrains.annotations.NotNull; - -+import java.lang.ref.WeakReference; -+ - /** - * Manager of Scoreboards - */ -diff --git a/src/main/java/org/bukkit/scoreboard/Team.java b/src/main/java/org/bukkit/scoreboard/Team.java -index da01d2926cc8a2485a3349ac1ebb32cad20e287c..bea978aeb553566f25a94d7c3f718109d960af89 100644 ---- a/src/main/java/org/bukkit/scoreboard/Team.java -+++ b/src/main/java/org/bukkit/scoreboard/Team.java -@@ -1,12 +1,13 @@ - package org.bukkit.scoreboard; - --import java.util.Set; - import org.bukkit.ChatColor; - import org.bukkit.OfflinePlayer; - import org.bukkit.potion.PotionEffectType; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Set; -+ - /** - * A team on a scoreboard that has a common display theme and other - * properties. This team is only relevant to the display of the associated -diff --git a/src/main/java/org/bukkit/util/BlockIterator.java b/src/main/java/org/bukkit/util/BlockIterator.java -index 8a377e1413a0034da8e8f03e25d1e3d6e2cf6f92..4df279970524faf2201098bffdb3b009883f2608 100644 ---- a/src/main/java/org/bukkit/util/BlockIterator.java -+++ b/src/main/java/org/bukkit/util/BlockIterator.java -@@ -1,8 +1,5 @@ - package org.bukkit.util; - --import static org.bukkit.util.NumberConversions.*; --import java.util.Iterator; --import java.util.NoSuchElementException; - import org.bukkit.Location; - import org.bukkit.World; - import org.bukkit.block.Block; -@@ -10,6 +7,12 @@ import org.bukkit.block.BlockFace; - import org.bukkit.entity.LivingEntity; - import org.jetbrains.annotations.NotNull; - -+import java.util.Iterator; -+import java.util.NoSuchElementException; -+ -+import static org.bukkit.util.NumberConversions.floor; -+import static org.bukkit.util.NumberConversions.round; -+ - /** - * This class performs ray tracing and iterates along blocks on a line - */ -diff --git a/src/main/java/org/bukkit/util/BlockVector.java b/src/main/java/org/bukkit/util/BlockVector.java -index eddc7248903fe3672010c04c0684f9ae3e8559e4..eb3c87dad970ce6e161199419fde6a1fbfc53ad3 100644 ---- a/src/main/java/org/bukkit/util/BlockVector.java -+++ b/src/main/java/org/bukkit/util/BlockVector.java -@@ -1,9 +1,10 @@ - package org.bukkit.util; - --import java.util.Map; - import org.bukkit.configuration.serialization.SerializableAs; - import org.jetbrains.annotations.NotNull; - -+import java.util.Map; -+ - /** - * A vector with a hash function that floors the X, Y, Z components, a la - * BlockVector in WorldEdit. BlockVectors can be used in hash sets and -diff --git a/src/main/java/org/bukkit/util/BoundingBox.java b/src/main/java/org/bukkit/util/BoundingBox.java -index 01f80020b12c7b4637e5c22f7277a0268fe40cd2..be64e9e6f54e6497c9b6fd5397bc1962be7f3f3d 100644 ---- a/src/main/java/org/bukkit/util/BoundingBox.java -+++ b/src/main/java/org/bukkit/util/BoundingBox.java -@@ -1,8 +1,5 @@ - package org.bukkit.util; - --import java.util.LinkedHashMap; --import java.util.Map; --import java.util.Objects; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; - import org.bukkit.block.Block; -@@ -12,6 +9,10 @@ import org.bukkit.configuration.serialization.SerializableAs; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.LinkedHashMap; -+import java.util.Map; -+import java.util.Objects; -+ - /** - * A mutable axis aligned bounding box (AABB). - *

-diff --git a/src/main/java/org/bukkit/util/ChatPaginator.java b/src/main/java/org/bukkit/util/ChatPaginator.java -index 1f510211813836c7a891b14fb8262b75d1d1fce7..04358f17e9b2d28c3f6ddfd6a664110ae74755bf 100644 ---- a/src/main/java/org/bukkit/util/ChatPaginator.java -+++ b/src/main/java/org/bukkit/util/ChatPaginator.java -@@ -1,12 +1,13 @@ - package org.bukkit.util; - --import java.util.Arrays; --import java.util.LinkedList; --import java.util.List; - import org.bukkit.ChatColor; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Arrays; -+import java.util.LinkedList; -+import java.util.List; -+ - /** - * The ChatPaginator takes a raw string of arbitrary length and breaks it down - * into an array of strings appropriate for displaying on the Minecraft player -diff --git a/src/main/java/org/bukkit/util/FileUtil.java b/src/main/java/org/bukkit/util/FileUtil.java -index 6e2352a3084daf05c16cc5ca86b4fa9e8b1c1e4d..3ea60d7f544a4d741f68189faa8614c56dd18ddd 100644 ---- a/src/main/java/org/bukkit/util/FileUtil.java -+++ b/src/main/java/org/bukkit/util/FileUtil.java -@@ -1,11 +1,12 @@ - package org.bukkit.util; - -+import org.jetbrains.annotations.NotNull; -+ - import java.io.File; - import java.io.FileInputStream; - import java.io.FileOutputStream; - import java.io.IOException; - import java.nio.channels.FileChannel; --import org.jetbrains.annotations.NotNull; - - /** - * Class containing file utilities -diff --git a/src/main/java/org/bukkit/util/RayTraceResult.java b/src/main/java/org/bukkit/util/RayTraceResult.java -index 19c52a2a62068f5f4af4184e24defa0f7c1005a7..29869f846337a6833b033b7d2ccd4ff368c334e9 100644 ---- a/src/main/java/org/bukkit/util/RayTraceResult.java -+++ b/src/main/java/org/bukkit/util/RayTraceResult.java -@@ -1,6 +1,5 @@ - package org.bukkit.util; - --import java.util.Objects; - import org.apache.commons.lang.Validate; - import org.bukkit.block.Block; - import org.bukkit.block.BlockFace; -@@ -8,6 +7,8 @@ import org.bukkit.entity.Entity; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Objects; -+ - /** - * The hit result of a ray trace. - *

-diff --git a/src/main/java/org/bukkit/util/StringUtil.java b/src/main/java/org/bukkit/util/StringUtil.java -index 458d5ebdf6c42d695985202dd6d7df626fcc5972..ff80e69f202941015c6b2bed93e54c2fbc7f8178 100644 ---- a/src/main/java/org/bukkit/util/StringUtil.java -+++ b/src/main/java/org/bukkit/util/StringUtil.java -@@ -1,9 +1,10 @@ - package org.bukkit.util; - --import java.util.Collection; - import org.apache.commons.lang.Validate; - import org.jetbrains.annotations.NotNull; - -+import java.util.Collection; -+ - public class StringUtil { - - /** -diff --git a/src/main/java/org/bukkit/util/Vector.java b/src/main/java/org/bukkit/util/Vector.java -index bdfb9623b74ea73a3d343b20fc1369cc797880c5..e77873a189b5228614807ddaadd04ee1f7a5b626 100644 ---- a/src/main/java/org/bukkit/util/Vector.java -+++ b/src/main/java/org/bukkit/util/Vector.java -@@ -2,15 +2,16 @@ package org.bukkit.util; - - import com.google.common.base.Preconditions; - import com.google.common.primitives.Doubles; --import java.util.LinkedHashMap; --import java.util.Map; --import java.util.Random; - import org.bukkit.Location; - import org.bukkit.World; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.SerializableAs; - import org.jetbrains.annotations.NotNull; - -+import java.util.LinkedHashMap; -+import java.util.Map; -+import java.util.Random; -+ - /** - * Represents a mutable vector. Because the components of Vectors are mutable, - * storing Vectors long term may be dangerous if passing code modifies the -diff --git a/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java b/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java -index 0f8eb97bd5e2f8b0f0cc03f7c4342aae06c4520c..e5d45a99bc999a8ce9e493364a40358d666c09eb 100644 ---- a/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java -+++ b/src/main/java/org/bukkit/util/io/BukkitObjectInputStream.java -@@ -1,10 +1,11 @@ - package org.bukkit.util.io; - -+import org.bukkit.configuration.serialization.ConfigurationSerializable; -+import org.bukkit.configuration.serialization.ConfigurationSerialization; -+ - import java.io.IOException; - import java.io.InputStream; - import java.io.ObjectInputStream; --import org.bukkit.configuration.serialization.ConfigurationSerializable; --import org.bukkit.configuration.serialization.ConfigurationSerialization; - - /** - * This class is designed to be used in conjunction with the {@link -diff --git a/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java b/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java -index dd1b9ee5f57773f07924aa311823fd8d63195cb2..4527d83b7a857e2a4e306eb911eb0d1e1f1ce4fb 100644 ---- a/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java -+++ b/src/main/java/org/bukkit/util/io/BukkitObjectOutputStream.java -@@ -1,10 +1,11 @@ - package org.bukkit.util.io; - -+import org.bukkit.configuration.serialization.ConfigurationSerializable; -+ - import java.io.IOException; - import java.io.ObjectOutputStream; - import java.io.OutputStream; - import java.io.Serializable; --import org.bukkit.configuration.serialization.ConfigurationSerializable; - - /** - * This class is designed to be used in conjunction with the {@link -diff --git a/src/main/java/org/bukkit/util/io/Wrapper.java b/src/main/java/org/bukkit/util/io/Wrapper.java -index c3496dc8ba124cfdd23f0fe14d17f8f7cea7c955..a6a39398a21ee65b2e1f688b2c43ef5d27c5cd8f 100644 ---- a/src/main/java/org/bukkit/util/io/Wrapper.java -+++ b/src/main/java/org/bukkit/util/io/Wrapper.java -@@ -1,12 +1,13 @@ - package org.bukkit.util.io; - - import com.google.common.collect.ImmutableMap; --import java.io.Serializable; --import java.util.Map; - import org.bukkit.configuration.serialization.ConfigurationSerializable; - import org.bukkit.configuration.serialization.ConfigurationSerialization; - import org.jetbrains.annotations.NotNull; - -+import java.io.Serializable; -+import java.util.Map; -+ - final class Wrapper & Serializable> implements Serializable { - private static final long serialVersionUID = -986209235411767547L; - -diff --git a/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java b/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java -index 520b65f9e6774f2fb8307311e5144128353cf777..971a806792c4ec356ebbd1248bb099c785e2d504 100644 ---- a/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java -+++ b/src/main/java/org/bukkit/util/noise/PerlinNoiseGenerator.java -@@ -1,9 +1,10 @@ - package org.bukkit.util.noise; - --import java.util.Random; - import org.bukkit.World; - import org.jetbrains.annotations.NotNull; - -+import java.util.Random; -+ - /** - * Generates noise using the "classic" perlin generator - * -diff --git a/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java b/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java -index af7e01188ee767858ba760089b2aceab0bc9626a..6114a1aca8d9ccbd43820a4799a8cbfb513aae82 100644 ---- a/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java -+++ b/src/main/java/org/bukkit/util/noise/PerlinOctaveGenerator.java -@@ -1,9 +1,10 @@ - package org.bukkit.util.noise; - --import java.util.Random; - import org.bukkit.World; - import org.jetbrains.annotations.NotNull; - -+import java.util.Random; -+ - /** - * Creates perlin noise through unbiased octaves - */ -diff --git a/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java b/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java -index 775d8f40322e9ed6702eb23bf50f35442d673c30..51c24a6cca9d4164ff3d3cabc45b73dc7104275d 100644 ---- a/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java -+++ b/src/main/java/org/bukkit/util/noise/SimplexNoiseGenerator.java -@@ -1,10 +1,11 @@ - // CHECKSTYLE:OFF - package org.bukkit.util.noise; - --import java.util.Random; - import org.bukkit.World; - import org.jetbrains.annotations.NotNull; - -+import java.util.Random; -+ - /** - * Generates simplex-based noise. - *

-diff --git a/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java b/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java -index 6cc15431e1b288df1830adac936a7648c6834b3e..d1f8a764520586ad0f20d1a812ec8b6d68e56faf 100644 ---- a/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java -+++ b/src/main/java/org/bukkit/util/noise/SimplexOctaveGenerator.java -@@ -1,9 +1,10 @@ - package org.bukkit.util.noise; - --import java.util.Random; - import org.bukkit.World; - import org.jetbrains.annotations.NotNull; - -+import java.util.Random; -+ - /** - * Creates simplex noise through unbiased octaves - */ -diff --git a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -index 8e481e3815f5645ee92f0d229e5ff25c8fc9a6c2..268deda1fe314474f8d3e9a53163cfb5675a17a8 100644 ---- a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -+++ b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -@@ -1,12 +1,13 @@ - package org.bukkit.util.permissions; - --import java.util.Map; - import org.bukkit.Bukkit; - import org.bukkit.permissions.Permission; - import org.bukkit.permissions.PermissionDefault; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; - -+import java.util.Map; -+ - public final class DefaultPermissions { - private static final String ROOT = "craftbukkit"; - private static final String LEGACY_PREFIX = "craft"; -diff --git a/src/main/java/org/spigotmc/CustomTimingsHandler.java b/src/main/java/org/spigotmc/CustomTimingsHandler.java -index 3cbe5c2bb55dead7968a6f165ef267e3e2931061..8c58a8ce9f9cfc8f94ca315962a9a09cab95b9d4 100644 ---- a/src/main/java/org/spigotmc/CustomTimingsHandler.java -+++ b/src/main/java/org/spigotmc/CustomTimingsHandler.java -@@ -23,18 +23,13 @@ - */ - package org.spigotmc; - --import java.io.PrintStream; --import java.util.Queue; --import java.util.concurrent.ConcurrentLinkedQueue; --import org.bukkit.Bukkit; --import org.bukkit.World; --import org.jetbrains.annotations.NotNull; --import org.jetbrains.annotations.Nullable; --import org.bukkit.plugin.AuthorNagException; --import org.bukkit.plugin.Plugin; - import co.aikar.timings.Timing; - import co.aikar.timings.Timings; - import co.aikar.timings.TimingsManager; -+import org.bukkit.Bukkit; -+import org.bukkit.plugin.AuthorNagException; -+import org.bukkit.plugin.Plugin; -+import org.jetbrains.annotations.NotNull; - - import java.lang.reflect.InvocationTargetException; - import java.lang.reflect.Method; -diff --git a/src/test/java/org/bukkit/ArtTest.java b/src/test/java/org/bukkit/ArtTest.java -index 2e9249a6d48edfe2339cbb4c8cc799cf551381fd..5db12e167056627dda88c6a1599040b0d11b1191 100644 ---- a/src/test/java/org/bukkit/ArtTest.java -+++ b/src/test/java/org/bukkit/ArtTest.java -@@ -1,9 +1,11 @@ - package org.bukkit; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.Matchers.greaterThan; -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - public class ArtTest { - - @Test(expected = IllegalArgumentException.class) -diff --git a/src/test/java/org/bukkit/BukkitMirrorTest.java b/src/test/java/org/bukkit/BukkitMirrorTest.java -index 2dfada66067d79b84cd490eadbe0178e8cd8c260..383fb750ade53ff959a38125981e5d48f0304e96 100644 ---- a/src/test/java/org/bukkit/BukkitMirrorTest.java -+++ b/src/test/java/org/bukkit/BukkitMirrorTest.java -@@ -1,13 +1,7 @@ - package org.bukkit; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import com.google.common.base.Function; - import com.google.common.collect.Lists; --import java.lang.reflect.Method; --import java.lang.reflect.Modifier; --import java.util.Arrays; --import java.util.List; - import org.junit.Before; - import org.junit.Test; - import org.junit.runner.RunWith; -@@ -15,6 +9,14 @@ import org.junit.runners.Parameterized; - import org.junit.runners.Parameterized.Parameter; - import org.junit.runners.Parameterized.Parameters; - -+import java.lang.reflect.Method; -+import java.lang.reflect.Modifier; -+import java.util.Arrays; -+import java.util.List; -+ -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - @RunWith(Parameterized.class) - public class BukkitMirrorTest { - -diff --git a/src/test/java/org/bukkit/ChatColorTest.java b/src/test/java/org/bukkit/ChatColorTest.java -index 2a8c8c729850c65dcc5f681267ee7e543b927d7e..a39d52e724879a97ca09ebe215897f3ece302552 100644 ---- a/src/test/java/org/bukkit/ChatColorTest.java -+++ b/src/test/java/org/bukkit/ChatColorTest.java -@@ -1,9 +1,11 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.hamcrest.CoreMatchers.nullValue; -+import static org.junit.Assert.assertThat; -+ - public class ChatColorTest { - - @Test -diff --git a/src/test/java/org/bukkit/ChatPaginatorTest.java b/src/test/java/org/bukkit/ChatPaginatorTest.java -index d38e64f0995bb4fb142c4a3317d6e3bca2b3bb75..f74a9326d6545e34786f278609707a8568462be0 100644 ---- a/src/test/java/org/bukkit/ChatPaginatorTest.java -+++ b/src/test/java/org/bukkit/ChatPaginatorTest.java -@@ -1,10 +1,11 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.bukkit.util.ChatPaginator; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class ChatPaginatorTest { - @Test - public void testWordWrap1() { -diff --git a/src/test/java/org/bukkit/CoalTypeTest.java b/src/test/java/org/bukkit/CoalTypeTest.java -index b90f10c4ef89a4c155e6f9a6a3b674d149ac7296..5d29b36f2ecdd1e7e9b0dd65e66806ec91c1d4e3 100644 ---- a/src/test/java/org/bukkit/CoalTypeTest.java -+++ b/src/test/java/org/bukkit/CoalTypeTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class CoalTypeTest { - @Test - public void getByData() { -diff --git a/src/test/java/org/bukkit/ColorTest.java b/src/test/java/org/bukkit/ColorTest.java -index 70183fdb7f06e6ec3a64d93737f26bcbeb485e84..dfbc9c8d194f556b4ab9a8fd4cf154242a195f72 100644 ---- a/src/test/java/org/bukkit/ColorTest.java -+++ b/src/test/java/org/bukkit/ColorTest.java -@@ -1,10 +1,11 @@ - package org.bukkit; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import org.bukkit.configuration.file.YamlConfiguration; - import org.junit.Test; - -+import static org.hamcrest.Matchers.*; -+import static org.junit.Assert.assertThat; -+ - @SuppressWarnings("javadoc") - public class ColorTest { - static class TestColor { -diff --git a/src/test/java/org/bukkit/CropStateTest.java b/src/test/java/org/bukkit/CropStateTest.java -index 5cd9d6d2d768f72034cac722e11f8835be426b5e..e348647097dc6686044d9c8299955731ee69564c 100644 ---- a/src/test/java/org/bukkit/CropStateTest.java -+++ b/src/test/java/org/bukkit/CropStateTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class CropStateTest { - @Test - public void getByData() { -diff --git a/src/test/java/org/bukkit/DifficultyTest.java b/src/test/java/org/bukkit/DifficultyTest.java -index d7fe8d39a466a41c92cd928dd78e9d7a4281f825..fb90006ad3b41df0debbaf8e9e381e020115a578 100644 ---- a/src/test/java/org/bukkit/DifficultyTest.java -+++ b/src/test/java/org/bukkit/DifficultyTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class DifficultyTest { - @Test - public void getByValue() { -diff --git a/src/test/java/org/bukkit/DyeColorTest.java b/src/test/java/org/bukkit/DyeColorTest.java -index e56d9439a2c4aa029263d68cb435bec63ce87574..9e2e2f1a5861fc6d8bad1d5ede248725dcd553ed 100644 ---- a/src/test/java/org/bukkit/DyeColorTest.java -+++ b/src/test/java/org/bukkit/DyeColorTest.java -@@ -1,9 +1,5 @@ - package org.bukkit; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; --import java.util.ArrayList; --import java.util.List; - import org.bukkit.material.Colorable; - import org.bukkit.material.Dye; - import org.bukkit.material.Wool; -@@ -13,6 +9,12 @@ import org.junit.runners.Parameterized; - import org.junit.runners.Parameterized.Parameter; - import org.junit.runners.Parameterized.Parameters; - -+import java.util.ArrayList; -+import java.util.List; -+ -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - @RunWith(Parameterized.class) - public class DyeColorTest { - -diff --git a/src/test/java/org/bukkit/EffectTest.java b/src/test/java/org/bukkit/EffectTest.java -index 54e621e86e8fe3414099494d419929b282b33489..8ee419916fcb4f00da484e34bcfb4f7db6202363 100644 ---- a/src/test/java/org/bukkit/EffectTest.java -+++ b/src/test/java/org/bukkit/EffectTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class EffectTest { - @Test - public void getById() { -diff --git a/src/test/java/org/bukkit/GameModeTest.java b/src/test/java/org/bukkit/GameModeTest.java -index 1c53e8ed8ba2a7fe9a51771b80bd6d0cb358adda..14d1789ff8d5abbd0948c348b5bf9ed409c0eeec 100644 ---- a/src/test/java/org/bukkit/GameModeTest.java -+++ b/src/test/java/org/bukkit/GameModeTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class GameModeTest { - @Test - public void getByValue() { -diff --git a/src/test/java/org/bukkit/GrassSpeciesTest.java b/src/test/java/org/bukkit/GrassSpeciesTest.java -index 39f1b899ea9c5389b42dda058949fcae1e2bbe84..b14074b3de7a5ba6feb84311f2673033b51ebc48 100644 ---- a/src/test/java/org/bukkit/GrassSpeciesTest.java -+++ b/src/test/java/org/bukkit/GrassSpeciesTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class GrassSpeciesTest { - @Test - public void getByData() { -diff --git a/src/test/java/org/bukkit/InstrumentTest.java b/src/test/java/org/bukkit/InstrumentTest.java -index f6d261ae50aa264d4ad35b8e465aba778dcabda4..7131d538c854c21586f4ba472ea0227b928f40fc 100644 ---- a/src/test/java/org/bukkit/InstrumentTest.java -+++ b/src/test/java/org/bukkit/InstrumentTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class InstrumentTest { - @Test - public void getByType() { -diff --git a/src/test/java/org/bukkit/LocationTest.java b/src/test/java/org/bukkit/LocationTest.java -index 887305c05c3e53079347502c187984ca3e42a1f8..a5b56467755d87c270a7f84fc2326e7a92343bc1 100644 ---- a/src/test/java/org/bukkit/LocationTest.java -+++ b/src/test/java/org/bukkit/LocationTest.java -@@ -1,10 +1,6 @@ - package org.bukkit; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import com.google.common.collect.ImmutableList; --import java.util.List; --import java.util.Random; - import org.bukkit.util.Vector; - import org.junit.Test; - import org.junit.runner.RunWith; -@@ -12,6 +8,13 @@ import org.junit.runners.Parameterized; - import org.junit.runners.Parameterized.Parameter; - import org.junit.runners.Parameterized.Parameters; - -+import java.util.List; -+import java.util.Random; -+ -+import static org.hamcrest.Matchers.closeTo; -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - @RunWith(Parameterized.class) - public class LocationTest { - private static final double delta = 1.0 / 1000000; -diff --git a/src/test/java/org/bukkit/MaterialTest.java b/src/test/java/org/bukkit/MaterialTest.java -index 6b0eaaadf9772a4850cb70cea2bfe72a81a47a04..fbf4fc6d53c3f30cecb725de10cc4cfd69e6c849 100644 ---- a/src/test/java/org/bukkit/MaterialTest.java -+++ b/src/test/java/org/bukkit/MaterialTest.java -@@ -1,10 +1,12 @@ - package org.bukkit; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import org.bukkit.material.MaterialData; - import org.junit.Test; - -+import static org.hamcrest.Matchers.*; -+import static org.junit.Assert.assertNull; -+import static org.junit.Assert.assertThat; -+ - public class MaterialTest { - @Test - public void getByName() { -diff --git a/src/test/java/org/bukkit/NoteTest.java b/src/test/java/org/bukkit/NoteTest.java -index 0db4bfa43ae7d941c4be35ff89bdc6ce8471602b..c8e5cca912e1e6393cc00c1eb7334385c4e0ddf1 100644 ---- a/src/test/java/org/bukkit/NoteTest.java -+++ b/src/test/java/org/bukkit/NoteTest.java -@@ -1,11 +1,14 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import com.google.common.collect.Lists; --import java.util.Collection; - import org.junit.Test; - -+import java.util.Collection; -+ -+import static org.hamcrest.CoreMatchers.is; -+import static org.hamcrest.CoreMatchers.nullValue; -+import static org.junit.Assert.*; -+ - public class NoteTest { - @Test - public void getToneByData() { -diff --git a/src/test/java/org/bukkit/TestServer.java b/src/test/java/org/bukkit/TestServer.java -index 5f9d348241210689eaf41a39ace5948e7a237b12..d33d974923ef176bd8246ca8a11e80ae5846b8e1 100644 ---- a/src/test/java/org/bukkit/TestServer.java -+++ b/src/test/java/org/bukkit/TestServer.java -@@ -1,14 +1,15 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableMap; -+import org.bukkit.command.SimpleCommandMap; -+import org.bukkit.plugin.PluginManager; -+import org.bukkit.plugin.SimplePluginManager; -+ - import java.lang.reflect.InvocationHandler; - import java.lang.reflect.Method; - import java.lang.reflect.Proxy; - import java.util.Map; - import java.util.logging.Logger; --import org.bukkit.command.SimpleCommandMap; --import org.bukkit.plugin.PluginManager; --import org.bukkit.plugin.SimplePluginManager; - - public final class TestServer implements InvocationHandler { - private static interface MethodHandler { -diff --git a/src/test/java/org/bukkit/TestWorld.java b/src/test/java/org/bukkit/TestWorld.java -index beb15c7c813d8d9b6ff6f88a2826c06533ccd725..50d35e37a632ea3c377680ececdfd1317e017f67 100644 ---- a/src/test/java/org/bukkit/TestWorld.java -+++ b/src/test/java/org/bukkit/TestWorld.java -@@ -1,6 +1,7 @@ - package org.bukkit; - - import com.google.common.collect.ImmutableMap; -+ - import java.lang.reflect.InvocationHandler; - import java.lang.reflect.Method; - import java.lang.reflect.Proxy; -diff --git a/src/test/java/org/bukkit/TreeSpeciesTest.java b/src/test/java/org/bukkit/TreeSpeciesTest.java -index 51e956cc5ea6f856664c0b85daaf6070073d1ec8..3ec69a706bd489131c30c11fa921fb11aa6c2cc0 100644 ---- a/src/test/java/org/bukkit/TreeSpeciesTest.java -+++ b/src/test/java/org/bukkit/TreeSpeciesTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class TreeSpeciesTest { - @Test - public void getByData() { -diff --git a/src/test/java/org/bukkit/WorldTypeTest.java b/src/test/java/org/bukkit/WorldTypeTest.java -index 3c5f7b8a7062629b3c1ebab365986e42f5284ba5..d22c5ed2ac27be6bc159c793e201c805f7f6b3be 100644 ---- a/src/test/java/org/bukkit/WorldTypeTest.java -+++ b/src/test/java/org/bukkit/WorldTypeTest.java -@@ -1,9 +1,10 @@ - package org.bukkit; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class WorldTypeTest { - @Test - public void getByName() { -diff --git a/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java b/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java -index 4356b907116e3eec848135b3d8a9ba939ecea1ff..158ed98ea76579d4efb15c7a502961b96bbcc7d9 100644 ---- a/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java -+++ b/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java -@@ -1,16 +1,14 @@ - package org.bukkit.configuration; - --import static org.junit.Assert.*; --import java.util.Arrays; --import java.util.HashMap; --import java.util.LinkedHashMap; --import java.util.List; --import java.util.Map; - import org.bukkit.Material; - import org.bukkit.inventory.ItemStack; - import org.bukkit.util.Vector; - import org.junit.Test; - -+import java.util.*; -+ -+import static org.junit.Assert.*; -+ - public abstract class ConfigurationSectionTest { - public abstract ConfigurationSection getConfigurationSection(); - -diff --git a/src/test/java/org/bukkit/configuration/ConfigurationTest.java b/src/test/java/org/bukkit/configuration/ConfigurationTest.java -index 94eb854e94d005b2429183a9dced69e85053bf28..e98fd66ef85dd057fafee8d4978cd2a62bd5cbd3 100644 ---- a/src/test/java/org/bukkit/configuration/ConfigurationTest.java -+++ b/src/test/java/org/bukkit/configuration/ConfigurationTest.java -@@ -1,15 +1,12 @@ - package org.bukkit.configuration; - --import static org.junit.Assert.*; --import java.util.Arrays; --import java.util.HashMap; --import java.util.HashSet; --import java.util.LinkedHashMap; --import java.util.Map; --import java.util.Set; - import org.bukkit.util.Vector; - import org.junit.Test; - -+import java.util.*; -+ -+import static org.junit.Assert.*; -+ - public abstract class ConfigurationTest { - public abstract Configuration getConfig(); - -diff --git a/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java b/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java -index a996753b9385f06049fb8ab2786db5fd681f88f0..03c4f3096986e659d045ea66c4c8a818347926c5 100644 ---- a/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java -+++ b/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java -@@ -1,15 +1,17 @@ - package org.bukkit.configuration.file; - --import static org.junit.Assert.*; --import java.io.BufferedWriter; --import java.io.File; --import java.io.FileWriter; --import java.util.Map; - import org.bukkit.configuration.MemoryConfigurationTest; - import org.junit.Rule; - import org.junit.Test; - import org.junit.rules.TemporaryFolder; - -+import java.io.BufferedWriter; -+import java.io.File; -+import java.io.FileWriter; -+import java.util.Map; -+ -+import static org.junit.Assert.*; -+ - public abstract class FileConfigurationTest extends MemoryConfigurationTest { - @Rule - public TemporaryFolder testFolder = new TemporaryFolder(); -diff --git a/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java b/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java -index 06ac381b5cf7284cac71e0f8148bf2fe1841428b..1a7601cf2a5efb626c20c4a54a8e9b838df5d4a6 100644 ---- a/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java -+++ b/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java -@@ -1,8 +1,9 @@ - package org.bukkit.configuration.file; - --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.junit.Assert.assertEquals; -+ - public class YamlConfigurationTest extends FileConfigurationTest { - - @Override -diff --git a/src/test/java/org/bukkit/conversations/ConversationContextTest.java b/src/test/java/org/bukkit/conversations/ConversationContextTest.java -index 3780a47c1f48d47b39a0e8a36c64044b366f8cc0..6920a1464e8bef1cde045389e1845ba23782286b 100644 ---- a/src/test/java/org/bukkit/conversations/ConversationContextTest.java -+++ b/src/test/java/org/bukkit/conversations/ConversationContextTest.java -@@ -1,9 +1,11 @@ - package org.bukkit.conversations; - --import static org.junit.Assert.*; -+import org.junit.Test; -+ - import java.util.HashMap; - import java.util.Map; --import org.junit.Test; -+ -+import static org.junit.Assert.assertEquals; - - /** - */ -diff --git a/src/test/java/org/bukkit/conversations/ConversationTest.java b/src/test/java/org/bukkit/conversations/ConversationTest.java -index c448dc724d65f4b6a4cf52a6213f712b4c06d82e..00a73cd55a166207665384f7915c448f78feaabc 100644 ---- a/src/test/java/org/bukkit/conversations/ConversationTest.java -+++ b/src/test/java/org/bukkit/conversations/ConversationTest.java -@@ -1,9 +1,10 @@ - package org.bukkit.conversations; - --import static org.junit.Assert.*; - import org.bukkit.plugin.TestPlugin; - import org.junit.Test; - -+import static org.junit.Assert.*; -+ - /** - */ - public class ConversationTest { -diff --git a/src/test/java/org/bukkit/conversations/FakeConversable.java b/src/test/java/org/bukkit/conversations/FakeConversable.java -index 1e6b48c7724254571189cdfa367d741796630942..53c55051717e23bb985bddc6fc4df9c3e7cbf730 100644 ---- a/src/test/java/org/bukkit/conversations/FakeConversable.java -+++ b/src/test/java/org/bukkit/conversations/FakeConversable.java -@@ -1,12 +1,13 @@ - package org.bukkit.conversations; - --import java.util.Set; - import org.bukkit.Server; - import org.bukkit.permissions.Permission; - import org.bukkit.permissions.PermissionAttachment; - import org.bukkit.permissions.PermissionAttachmentInfo; - import org.bukkit.plugin.Plugin; - -+import java.util.Set; -+ - /** - */ - public class FakeConversable implements Conversable { -diff --git a/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java b/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java -index 6093e9865b004c8fa4aed0bd0c291a4c77ca8b84..d2ab96681a5e704fe721ee6fde3acb931218e134 100644 ---- a/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java -+++ b/src/test/java/org/bukkit/conversations/ValidatingPromptTest.java -@@ -1,8 +1,9 @@ - package org.bukkit.conversations; - --import static org.junit.Assert.*; - import org.junit.Test; - -+import static org.junit.Assert.*; -+ - /** - */ - public class ValidatingPromptTest { -diff --git a/src/test/java/org/bukkit/entity/memory/MemoryKeyTest.java b/src/test/java/org/bukkit/entity/memory/MemoryKeyTest.java -index b955f6a7adc65a5d1557df3d15fdeb1916ad3cad..4ce86dc9c8f37ba46e7be966d754592f07448cdf 100644 ---- a/src/test/java/org/bukkit/entity/memory/MemoryKeyTest.java -+++ b/src/test/java/org/bukkit/entity/memory/MemoryKeyTest.java -@@ -1,11 +1,12 @@ - package org.bukkit.entity.memory; - --import java.util.Arrays; --import java.util.List; - import org.bukkit.NamespacedKey; - import org.junit.Assert; - import org.junit.Test; - -+import java.util.Arrays; -+import java.util.List; -+ - public class MemoryKeyTest { - - @Test -diff --git a/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java b/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java -index dd5fb243b7af23115908a534bec13e8f455f64b2..66008139243be58101354e2194f6d876de97213f 100644 ---- a/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java -+++ b/src/test/java/org/bukkit/event/PlayerChatTabCompleteEventTest.java -@@ -1,12 +1,13 @@ - package org.bukkit.event; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; - import com.google.common.collect.ImmutableList; - import org.bukkit.event.player.PlayerChatTabCompleteEvent; - import org.bukkit.plugin.messaging.TestPlayer; - import org.junit.Test; - -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.assertThat; -+ - public class PlayerChatTabCompleteEventTest { - - @Test -diff --git a/src/test/java/org/bukkit/materials/MaterialDataTest.java b/src/test/java/org/bukkit/materials/MaterialDataTest.java -index a935ae4a25b7955416652bf8c4690a804f12e903..496dee3ef9c0932b17c1a222bdfde3c85a7d8a91 100644 ---- a/src/test/java/org/bukkit/materials/MaterialDataTest.java -+++ b/src/test/java/org/bukkit/materials/MaterialDataTest.java -@@ -1,27 +1,17 @@ - package org.bukkit.materials; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import org.bukkit.CropState; - import org.bukkit.Material; - import org.bukkit.NetherWartsState; - import org.bukkit.TreeSpecies; - import org.bukkit.block.BlockFace; --import org.bukkit.material.Comparator; --import org.bukkit.material.Crops; --import org.bukkit.material.Diode; --import org.bukkit.material.Door; --import org.bukkit.material.Hopper; --import org.bukkit.material.Leaves; --import org.bukkit.material.Mushroom; --import org.bukkit.material.NetherWarts; --import org.bukkit.material.Sapling; --import org.bukkit.material.Tree; --import org.bukkit.material.Wood; --import org.bukkit.material.WoodenStep; -+import org.bukkit.material.*; - import org.bukkit.material.types.MushroomBlockTexture; - import org.junit.Test; - -+import static org.hamcrest.Matchers.equalTo; -+import static org.junit.Assert.assertThat; -+ - public class MaterialDataTest { - - @Test -diff --git a/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java b/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java -index e8cea99fd0eb966e60b0a8e1ebceca6dce6ff50a..bd93263180a57e64ede728cc8de74b0046879a53 100644 ---- a/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java -+++ b/src/test/java/org/bukkit/metadata/FixedMetadataValueTest.java -@@ -1,10 +1,12 @@ - package org.bukkit.metadata; - --import static org.junit.Assert.*; - import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.TestPlugin; - import org.junit.Test; - -+import static org.junit.Assert.assertEquals; -+import static org.junit.Assert.assertSame; -+ - public class FixedMetadataValueTest { - private Plugin plugin = new TestPlugin("X"); - private FixedMetadataValue subject; -diff --git a/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java b/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java -index bc8a18eea6c0c61ad07bdc44b2a7c38f84117da6..113369efb6157fec390f81228f893d80eba05031 100644 ---- a/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java -+++ b/src/test/java/org/bukkit/metadata/LazyMetadataValueTest.java -@@ -1,10 +1,12 @@ - package org.bukkit.metadata; - --import static org.junit.Assert.*; --import java.util.concurrent.Callable; - import org.bukkit.plugin.TestPlugin; - import org.junit.Test; - -+import java.util.concurrent.Callable; -+ -+import static org.junit.Assert.assertEquals; -+ - public class LazyMetadataValueTest { - private LazyMetadataValue subject; - private TestPlugin plugin = new TestPlugin("x"); -diff --git a/src/test/java/org/bukkit/metadata/MetadataConversionTest.java b/src/test/java/org/bukkit/metadata/MetadataConversionTest.java -index a9c10a2fd9fb37f2f7223fed138b2e2bfdaaef12..a595cc8d674edf74982b7361b9d1a989e673511c 100644 ---- a/src/test/java/org/bukkit/metadata/MetadataConversionTest.java -+++ b/src/test/java/org/bukkit/metadata/MetadataConversionTest.java -@@ -15,11 +15,12 @@ - - package org.bukkit.metadata; - --import static org.junit.Assert.*; - import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.TestPlugin; - import org.junit.Test; - -+import static org.junit.Assert.assertEquals; -+ - /** - */ - public class MetadataConversionTest { -diff --git a/src/test/java/org/bukkit/metadata/MetadataStoreTest.java b/src/test/java/org/bukkit/metadata/MetadataStoreTest.java -index 12373ff16ca71bc437929ea5c4486c2c6bd93d09..3a721ab124218407b7032da554f75e7b62ff09b2 100644 ---- a/src/test/java/org/bukkit/metadata/MetadataStoreTest.java -+++ b/src/test/java/org/bukkit/metadata/MetadataStoreTest.java -@@ -1,12 +1,14 @@ - package org.bukkit.metadata; - --import static org.junit.Assert.*; --import java.util.List; --import java.util.concurrent.Callable; - import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.TestPlugin; - import org.junit.Test; - -+import java.util.List; -+import java.util.concurrent.Callable; -+ -+import static org.junit.Assert.*; -+ - public class MetadataStoreTest { - private Plugin pluginX = new TestPlugin("x"); - private Plugin pluginY = new TestPlugin("y"); -diff --git a/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java b/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java -index c1e78568a86525e922a49a802aa5da85b4b6ae4a..63a01e8a111c283c437fe8ea28d4e7360efc6da1 100644 ---- a/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java -+++ b/src/test/java/org/bukkit/metadata/MetadataValueAdapterTest.java -@@ -1,10 +1,11 @@ - package org.bukkit.metadata; - --import static org.junit.Assert.*; - import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.TestPlugin; - import org.junit.Test; - -+import static org.junit.Assert.assertEquals; -+ - public class MetadataValueAdapterTest { - private TestPlugin plugin = new TestPlugin("x"); - -diff --git a/src/test/java/org/bukkit/plugin/PluginManagerTest.java b/src/test/java/org/bukkit/plugin/PluginManagerTest.java -index 1941c9f49e9514c1236c5f4ea9f7af47f7be85c5..5be4f5ab1bec14529bf0d290398b1b5f32d545c1 100644 ---- a/src/test/java/org/bukkit/plugin/PluginManagerTest.java -+++ b/src/test/java/org/bukkit/plugin/PluginManagerTest.java -@@ -1,7 +1,5 @@ - package org.bukkit.plugin; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import org.bukkit.TestServer; - import org.bukkit.event.Event; - import org.bukkit.event.TestEvent; -@@ -9,6 +7,9 @@ import org.bukkit.permissions.Permission; - import org.junit.After; - import org.junit.Test; - -+import static org.hamcrest.Matchers.*; -+import static org.junit.Assert.assertThat; -+ - public class PluginManagerTest { - private class MutableObject { - volatile Object value = null; -diff --git a/src/test/java/org/bukkit/plugin/TestPlugin.java b/src/test/java/org/bukkit/plugin/TestPlugin.java -index 6d450897187e810070f633e832034763a102a0b0..d870ca7fc1f2e11eac04c8b2c54710d0b8360c10 100644 ---- a/src/test/java/org/bukkit/plugin/TestPlugin.java -+++ b/src/test/java/org/bukkit/plugin/TestPlugin.java -@@ -1,14 +1,15 @@ - package org.bukkit.plugin; - --import java.io.File; --import java.io.InputStream; --import java.util.List; - import org.bukkit.Server; - import org.bukkit.command.Command; - import org.bukkit.command.CommandSender; - import org.bukkit.configuration.file.FileConfiguration; - import org.bukkit.generator.ChunkGenerator; - -+import java.io.File; -+import java.io.InputStream; -+import java.util.List; -+ - public class TestPlugin extends PluginBase { - private boolean enabled = true; - -diff --git a/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java b/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java -index 351fc4a9f45745984d1d4811ba836959a3f3eadb..42c6ddb84048a18067a601fc20c31b0b0cf3ab53 100644 ---- a/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java -+++ b/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java -@@ -1,7 +1,5 @@ - package org.bukkit.plugin; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import org.bukkit.event.Event; - import org.bukkit.event.EventException; - import org.bukkit.event.EventPriority; -@@ -12,6 +10,9 @@ import org.bukkit.event.player.PlayerInteractEvent; - import org.bukkit.event.player.PlayerMoveEvent; - import org.junit.Test; - -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - public class TimedRegisteredListenerTest { - - @Test -diff --git a/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java b/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java -index 7e2335ed8acc692af1e70eddcf97ee7a56e30f68..72bccc0fae5fe2d7537d34cba8b92f44a7185470 100644 ---- a/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java -+++ b/src/test/java/org/bukkit/plugin/messaging/StandardMessengerTest.java -@@ -1,13 +1,16 @@ - package org.bukkit.plugin.messaging; - --import static org.hamcrest.CoreMatchers.*; --import static org.junit.Assert.*; --import java.util.Collection; - import org.bukkit.entity.Player; - import org.bukkit.plugin.TestPlugin; - import org.junit.Assert; - import org.junit.Test; - -+import java.util.Collection; -+ -+import static org.hamcrest.CoreMatchers.hasItems; -+import static org.hamcrest.CoreMatchers.is; -+import static org.junit.Assert.*; -+ - public class StandardMessengerTest { - public StandardMessenger getMessenger() { - return new StandardMessenger(); -diff --git a/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java b/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java -index 7a5b6108d56b8350d1aa419caf25fe6c653066b4..123ead4807487c220ad4df8991b58ba3bbe70375 100644 ---- a/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java -+++ b/src/test/java/org/bukkit/plugin/messaging/TestMessageListener.java -@@ -1,8 +1,10 @@ - package org.bukkit.plugin.messaging; - --import static org.junit.Assert.*; - import org.bukkit.entity.Player; - -+import static org.junit.Assert.assertArrayEquals; -+import static org.junit.Assert.assertEquals; -+ - public class TestMessageListener implements PluginMessageListener { - private final String channel; - private final byte[] message; -diff --git a/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java b/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java -index 1b7642dc1c55c6bf87018b67d8c368478c0b9ca1..7c3c2d1063ba66f89992f29a6520578c673de434 100644 ---- a/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java -+++ b/src/test/java/org/bukkit/plugin/messaging/TestPlayer.java -@@ -1,11 +1,12 @@ - package org.bukkit.plugin.messaging; - -+import org.bukkit.entity.Player; -+ - import java.lang.reflect.Constructor; - import java.lang.reflect.InvocationHandler; - import java.lang.reflect.Method; - import java.lang.reflect.Proxy; - import java.util.HashMap; --import org.bukkit.entity.Player; - - - public final class TestPlayer implements InvocationHandler { -diff --git a/src/test/java/org/bukkit/util/BoundingBoxTest.java b/src/test/java/org/bukkit/util/BoundingBoxTest.java -index 2d50a9ed66d40c9c538f5e767d9e128394f5dc3b..8f6899db65914ef71c89a850c3446376e76b1023 100644 ---- a/src/test/java/org/bukkit/util/BoundingBoxTest.java -+++ b/src/test/java/org/bukkit/util/BoundingBoxTest.java -@@ -1,12 +1,14 @@ - package org.bukkit.util; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; --import java.util.Map; - import org.bukkit.Location; - import org.bukkit.block.BlockFace; - import org.junit.Test; - -+import java.util.Map; -+ -+import static org.hamcrest.Matchers.*; -+import static org.junit.Assert.assertThat; -+ - public class BoundingBoxTest { - - private static final double delta = 1.0 / 1000000; -diff --git a/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java b/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java -index 229c67c769f50ba68b4d9681f984b4bc668619c2..2e6af3a7389a51dce97ed57bb86661fb8907ae10 100644 ---- a/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java -+++ b/src/test/java/org/bukkit/util/StringUtilStartsWithTest.java -@@ -1,15 +1,17 @@ - package org.bukkit.util; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import com.google.common.collect.ImmutableList; --import java.util.List; - import org.junit.Test; - import org.junit.runner.RunWith; - import org.junit.runners.Parameterized; - import org.junit.runners.Parameterized.Parameter; - import org.junit.runners.Parameterized.Parameters; - -+import java.util.List; -+ -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - @RunWith(Parameterized.class) - public class StringUtilStartsWithTest { - -diff --git a/src/test/java/org/bukkit/util/StringUtilTest.java b/src/test/java/org/bukkit/util/StringUtilTest.java -index 6476dd2d1b6d37c3390400d8dea94016b309d69f..e269e7615cf88930f84fb73fe461f1bbe2387203 100644 ---- a/src/test/java/org/bukkit/util/StringUtilTest.java -+++ b/src/test/java/org/bukkit/util/StringUtilTest.java -@@ -1,12 +1,15 @@ - package org.bukkit.util; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import com.google.common.collect.ImmutableList; -+import org.junit.Test; -+ - import java.util.ArrayList; - import java.util.Arrays; - import java.util.List; --import org.junit.Test; -+ -+import static org.hamcrest.Matchers.is; -+import static org.hamcrest.Matchers.sameInstance; -+import static org.junit.Assert.assertThat; - - public class StringUtilTest { - -diff --git a/src/test/java/org/bukkit/util/VectorTest.java b/src/test/java/org/bukkit/util/VectorTest.java -index 9b846deba8eb3ff43c444da70a9d7ca3d1b43b0a..1bdc75e6c07142ea8e862ffbaeac05baadf678fd 100644 ---- a/src/test/java/org/bukkit/util/VectorTest.java -+++ b/src/test/java/org/bukkit/util/VectorTest.java -@@ -1,9 +1,10 @@ - package org.bukkit.util; - --import static org.junit.Assert.*; - import org.bukkit.block.BlockFace; - import org.junit.Test; - -+import static org.junit.Assert.*; -+ - public class VectorTest { - - @Test -diff --git a/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java b/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java -index d3edb72ff83d68b86390b0e9f7e40035482f353a..2f42b8bf14c6ed01a430096e36fc3fcc0026fc2a 100644 ---- a/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java -+++ b/src/test/java/org/bukkit/util/io/BukkitObjectStreamTest.java -@@ -1,14 +1,6 @@ - package org.bukkit.util.io; - --import static org.hamcrest.Matchers.*; --import static org.junit.Assert.*; - import com.google.common.collect.ImmutableList; --import java.io.ByteArrayInputStream; --import java.io.ByteArrayOutputStream; --import java.io.IOException; --import java.io.ObjectInputStream; --import java.io.ObjectOutputStream; --import java.util.List; - import org.bukkit.Color; - import org.bukkit.FireworkEffect; - import org.bukkit.FireworkEffect.Type; -@@ -22,6 +14,12 @@ import org.junit.runners.Parameterized.Parameter; - import org.junit.runners.Parameterized.Parameters; - import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; - -+import java.io.*; -+import java.util.List; -+ -+import static org.hamcrest.Matchers.is; -+import static org.junit.Assert.assertThat; -+ - @RunWith(Parameterized.class) - public class BukkitObjectStreamTest { - diff --git a/patches/server/0001-Yatopia-Server-Fixes.patch b/patches/server/0001-Yatopia-Server-Fixes.patch index 59bb7d7c..3a7da1eb 100644 --- a/patches/server/0001-Yatopia-Server-Fixes.patch +++ b/patches/server/0001-Yatopia-Server-Fixes.patch @@ -5,46 +5,32 @@ Subject: [PATCH] Yatopia-Server-Fixes diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -index 5dfa0658838c4801cdf260eae8b98163f729e5af..88513b8830ea666ddf831771680b6e76e7cf95f0 100644 +index 5dfa0658838c4801cdf260eae8b98163f729e5af..b67f05f290db653cf75a89e85bd3decb5044a1e0 100644 --- a/src/main/java/co/aikar/timings/TimingsExport.java +++ b/src/main/java/co/aikar/timings/TimingsExport.java @@ -231,6 +231,7 @@ public class TimingsExport extends Thread { pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)), pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Tuinity - add config to timings report pair("tuinity", mapAsJSON(Bukkit.spigot().getTuinityConfig(), null)) // Tuinity - add config to timings report -+ , pair("purpur", mapAsJSON(Bukkit.spigot().getPurpurConfig(), null)) // Yatopia - add config to timings report ++ , pair("purpur", mapAsJSON(Bukkit.spigot().getPurpurConfig(), null)) // Purpur - add config to timings report )); new TimingsExport(listeners, parent, history).start(); -diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index f81bd67a323f2e72bdad76c52016993a0bf88307..98a898f8b8469969e5eb388edb818e519ff68681 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperCommand.java -+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java -@@ -439,18 +439,18 @@ public class PaperCommand extends Command { - ChunkProviderServer chunkProviderServer = world.getChunkProvider(); - - Collection entities = world.entitiesById.values(); -- entities.forEach(e -> { -- MinecraftKey key = e.getMinecraftKey(); -- if (e.shouldBeRemoved) return; // Paper -+ for (Entity entity : entities) { -+ MinecraftKey key = entity.getMinecraftKey(); -+ if (entity.shouldBeRemoved) continue; - - MutablePair> info = list.computeIfAbsent(key, k -> MutablePair.of(0, Maps.newHashMap())); -- ChunkCoordIntPair chunk = new ChunkCoordIntPair(e.chunkX, e.chunkZ); -+ ChunkCoordIntPair chunk = new ChunkCoordIntPair(entity.chunkX, entity.chunkZ); - info.left++; - info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1); -- if (!chunkProviderServer.isInEntityTickingChunk(e)) { -+ if (!chunkProviderServer.isInEntityTickingChunk(entity)) { - nonEntityTicking.merge(key, Integer.valueOf(1), Integer::sum); - } -- }); -+ } - - if (names.size() == 1) { - MinecraftKey name = names.iterator().next(); +diff --git a/src/main/java/co/aikar/timings/TimingsExport.java.rej b/src/main/java/co/aikar/timings/TimingsExport.java.rej +deleted file mode 100644 +index 572780ca665c0fb254cc7431af3dd7759a94f26c..0000000000000000000000000000000000000000 +--- a/src/main/java/co/aikar/timings/TimingsExport.java.rej ++++ /dev/null +@@ -1,9 +0,0 @@ +-diff a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java (rejected hunks) +-@@ -230,6 +230,7 @@ public class TimingsExport extends Thread { +- pair("spigot", mapAsJSON(Bukkit.spigot().getSpigotConfig(), null)), +- pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)), +- pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)) +-+ , pair("rainforest", mapAsJSON(Bukkit.spigot().getRainforestConfig(), null)) // Rainforest +- )); +- +- new TimingsExport(listeners, parent, history).start(); diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java.rej b/src/main/java/com/destroystokyo/paper/PaperCommand.java.rej deleted file mode 100644 index 8f31dba6a29514aad6e74e265bf000014cd1e3c3..0000000000000000000000000000000000000000 @@ -77,6 +63,37 @@ index 8f31dba6a29514aad6e74e265bf000014cd1e3c3..00000000000000000000000000000000 - - if (names.size() == 1) { - MinecraftKey name = names.iterator().next(); +diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java +index 60f03502a7fd622d2de3b2da9fe8014b289f3d31..cac599c1e90b261b673acecad7517d91ccd0516a 100644 +--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java ++++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java +@@ -446,4 +446,9 @@ public class PaperConfig { + maxPlayerAutoSavePerTick = (playerAutoSaveRate == -1 || playerAutoSaveRate > 100) ? 10 : 20; + } + } ++ ++ public static boolean asyncAdvancements; ++ private static void asyncAdvancements() { ++ asyncAdvancements = getBoolean("settings.async-advancements", asyncAdvancements); ++ } + } +diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java.rej b/src/main/java/com/destroystokyo/paper/PaperConfig.java.rej +deleted file mode 100644 +index 3a518ca973dbef44126497057c52fc248aa2ebc1..0000000000000000000000000000000000000000 +--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java.rej ++++ /dev/null +@@ -1,11 +0,0 @@ +-diff a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java (rejected hunks) +-@@ -435,4 +435,9 @@ public class PaperConfig { +- allowPistonDuplication = getBoolean("settings.unsupported-settings.allow-piston-duplication", config.getBoolean("settings.unsupported-settings.allow-tnt-duplication", false)); +- set("settings.unsupported-settings.allow-tnt-duplication", null); +- } +-+ +-+ public static boolean asyncAdvancements; +-+ private static void asyncAdvancements() { +-+ asyncAdvancements = getBoolean("settings.async-advancements", asyncAdvancements); +-+ } +- } diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java index dee9655b89d061ec8218ea2c54660c6003e8548f..253b73cfc597d4c7106d969be7b18c68166128ae 100644 --- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java @@ -107,9 +124,18 @@ index c9fa39c5b4b013b56720e339463ffcb5fd3c13f9..00000000000000000000000000000000 - - for (final NextTickListEntry toTick : this.toTickThisTick) { diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index fe7330fabe386966c2d203a190a00a785ea21be0..e2bbbfeb7e2505479e6a457294aaa550b97319ca 100644 +index fe7330fabe386966c2d203a190a00a785ea21be0..be8daf986eb9c83bd5974eca78a00f717e4f5061 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java +@@ -16,7 +16,7 @@ public final class OrigamiConfig { + private static final Object[] EMPTY = new Object[0]; + + private static File configFile; +- private static YamlConfiguration config; ++ public static YamlConfiguration config; // Yatopia + private static int configVersion; + + public static void init(final File file) { @@ -112,6 +112,20 @@ public final class OrigamiConfig { config.addDefault("worlds.default." + path, Double.valueOf(dfl)); return config.getDouble("worlds." + worldName + "." + path, config.getDouble("worlds.default." + path, dfl)); @@ -125,7 +151,7 @@ index fe7330fabe386966c2d203a190a00a785ea21be0..e2bbbfeb7e2505479e6a457294aaa550 + + public boolean fastFeatureSearchDontLoad = false; + private void fastFeatureSearchDontLoad() { -+ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false); ++ fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false); + } + // Yatopia end } @@ -152,11 +178,331 @@ index 8428d4bd05075e86b281312fa38106882c54735b..00000000000000000000000000000000 - } - - public static boolean teleportingOfVehiclesWithPassenger = true; +diff --git a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java +index 685351f11497a33ef4ba99055fa7da3a8de18af2..f65449b147c856522cc196e18ead2c8b8ad5dea0 100644 +--- a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java ++++ b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java +@@ -127,13 +127,23 @@ public class BehaviorInteractDoor extends Behavior { + private static boolean a(WorldServer worldserver, EntityLiving entityliving, BlockPosition blockposition) { + BehaviorController behaviorcontroller = entityliving.getBehaviorController(); + +- return !behaviorcontroller.hasMemory(MemoryModuleType.MOBS) ? false : (behaviorcontroller.getMemory(MemoryModuleType.MOBS).get()).stream().filter((entityliving1) -> { // CraftBukkit - decompile error +- return entityliving1.getEntityType() == entityliving.getEntityType(); +- }).filter((entityliving1) -> { +- return blockposition.a((IPosition) entityliving1.getPositionVector(), 2.0D); +- }).anyMatch((entityliving1) -> { +- return b(worldserver, entityliving1, blockposition); +- }); ++ // Yatopia start - replaced logic ++ if (!behaviorcontroller.hasMemory(MemoryModuleType.MOBS)) { ++ return false; ++ } ++ ++ boolean match = false; ++ for (EntityLiving entityliving1 : behaviorcontroller.getMemory(MemoryModuleType.MOBS).get()) { ++ if (entityliving1.getEntityType() == entityliving.getEntityType() && blockposition.a((IPosition) entityliving1.getPositionVector(), 2.0D)) { ++ match = b(worldserver, entityliving1, blockposition); ++ if (match) { ++ break; ++ } ++ } ++ } ++ ++ return match; ++ // Yatopia end + } + + private static boolean b(WorldServer worldserver, EntityLiving entityliving, BlockPosition blockposition) { +diff --git a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java.rej b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java.rej +deleted file mode 100644 +index 738aa0c089e2d1f1d8ecb983d3d6351a1d4f690c..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java.rej ++++ /dev/null +@@ -1,59 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/BehaviorInteractDoor.java b/src/main/java/net/minecraft/server/BehaviorInteractDoor.java (rejected hunks) +-@@ -2,6 +2,10 @@ package net.minecraft.server; +- +- import com.google.common.collect.ImmutableMap; +- import com.google.common.collect.Sets; +-+import org.bukkit.craftbukkit.block.CraftBlock; +-+import org.bukkit.event.entity.EntityInteractEvent; +-+ +-+import java.util.ArrayList; +- import java.util.Iterator; +- import java.util.List; +- import java.util.Set; +-@@ -19,9 +23,12 @@ public class BehaviorInteractDoor extends Behavior { +- BehaviorController behaviorcontroller = entityliving.getBehaviorController(); +- PathEntity pathentity = (PathEntity) behaviorcontroller.getMemory(MemoryModuleType.PATH).get(); +- List list = (List) behaviorcontroller.getMemory(MemoryModuleType.INTERACTABLE_DOORS).get(); +-- List list1 = (List) pathentity.d().stream().map((pathpoint) -> { +-- return new BlockPosition(pathpoint.a, pathpoint.b, pathpoint.c); +-- }).collect(Collectors.toList()); +-+ List result = new ArrayList<>(); +-+ for (PathPoint pathpoint : pathentity.d()) { +-+ BlockPosition blockPosition = new BlockPosition(pathpoint.a, pathpoint.b, pathpoint.c); +-+ result.add(blockPosition); +-+ } +-+ List list1 = (List) result; +- Set set = this.a(worldserver, list, list1); +- int j = pathentity.f() - 1; +- +-@@ -38,7 +45,7 @@ public class BehaviorInteractDoor extends Behavior { +- } +- +- private void a(WorldServer worldserver, List list, Set set, int i, EntityLiving entityliving, BehaviorController behaviorcontroller) { +-- set.forEach((blockposition) -> { +-+ for (BlockPosition blockposition : set) { +- int j = list.indexOf(blockposition); +- IBlockData iblockdata = worldserver.getType(blockposition); +- Block block = iblockdata.getBlock(); +-@@ -47,10 +54,10 @@ public class BehaviorInteractDoor extends Behavior { +- boolean flag = j >= i; +- +- // CraftBukkit start - entities opening doors +-- org.bukkit.event.entity.EntityInteractEvent event = new org.bukkit.event.entity.EntityInteractEvent(entityliving.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(entityliving.world, blockposition)); +-+ EntityInteractEvent event = new EntityInteractEvent(entityliving.getBukkitEntity(), CraftBlock.at(entityliving.world, blockposition)); +- entityliving.world.getServer().getPluginManager().callEvent(event); +- if (event.isCancelled()) { +-- return; +-+ continue; +- } +- // CaftBukkit end +- ((BlockDoor) block).setDoor(worldserver, blockposition, flag); +-@@ -70,7 +77,7 @@ public class BehaviorInteractDoor extends Behavior { +- } +- } +- +-- }); +-+ } +- a(worldserver, list, i, entityliving, behaviorcontroller); +- } +- +diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java +index bdbb716a91cd320dd9ab39ed6b7442388c92d074..bfae77f129859fba5e0f53723ba62a1626773b7c 100644 +--- a/src/main/java/net/minecraft/server/BiomeBase.java ++++ b/src/main/java/net/minecraft/server/BiomeBase.java +@@ -516,13 +516,13 @@ public final class BiomeBase { + private static final Map e; + + static { +- Map map = new HashMap<>(); ++ Map map = new java.util.HashMap<>(); + for (Precipitation biomebase_precipitation : values()) { + if (map.put(biomebase_precipitation.b(), biomebase_precipitation) != null) { + throw new IllegalStateException("Duplicate key"); + } + } +- e = (Map) map; ++ e = map; + } + + private final String f; +@@ -553,13 +553,13 @@ public final class BiomeBase { + private static final Map s; + + static { +- Map map = new HashMap<>(); ++ Map map = new java.util.HashMap<>(); + for (Geography biomebase_geography : values()) { + if (map.put(biomebase_geography.b(), biomebase_geography) != null) { + throw new IllegalStateException("Duplicate key"); + } + } +- s = (Map) map; ++ s = map; + } + + private final String t; +diff --git a/src/main/java/net/minecraft/server/BiomeBase.java.rej b/src/main/java/net/minecraft/server/BiomeBase.java.rej +deleted file mode 100644 +index 96bedf79efa73874a67a7ac6c7672497f3f94f67..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/BiomeBase.java.rej ++++ /dev/null +@@ -1,74 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java (rejected hunks) +-@@ -7,15 +7,8 @@ import com.google.common.collect.Sets; +- import com.mojang.serialization.Codec; +- import com.mojang.serialization.codecs.RecordCodecBuilder; +- import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap; +--import java.util.Arrays; +--import java.util.Collection; +--import java.util.Comparator; +--import java.util.Iterator; +--import java.util.List; +--import java.util.Map; +--import java.util.Optional; +--import java.util.Random; +--import java.util.Set; +-+ +-+import java.util.*; +- import java.util.function.Function; +- import java.util.stream.Collectors; +- import java.util.stream.Stream; +-@@ -41,7 +34,14 @@ public class BiomeBase { +- WorldGenSurfaceComposite.a.fieldOf("surface_builder").forGetter(biome -> biome.m), +- Codec.simpleMap(WorldGenStage.Features.c, WorldGenCarverWrapper.a.listOf().promotePartial(SystemUtils.a("Carver: ", LOGGER::error)), INamable.a(WorldGenStage.Features.values())).fieldOf("carvers").forGetter(biome -> biome.q), +- Codec.simpleMap((Codec) k1, WorldGenFeatureConfigured.b.listOf().promotePartial(SystemUtils.a("Feature: ", LOGGER::error)), INamable.a(WorldGenStage.Decoration.values())).fieldOf("features").forGetter(biome -> biome.r), +-- StructureFeature.a.listOf().promotePartial(SystemUtils.a("Structure start: ", LOGGER::error)).fieldOf("starts").forGetter(biome -> biome.u.values().stream().sorted(Comparator.comparing(cf -> IRegistry.STRUCTURE_FEATURE.getKey(cf.b))).collect(Collectors.toList())), +-+ StructureFeature.a.listOf().promotePartial(SystemUtils.a("Structure start: ", LOGGER::error)).fieldOf("starts").forGetter(biome -> { +-+ List> list = new ArrayList<>(); +-+ for (StructureFeature structureFeature : biome.u.values()) { +-+ list.add(structureFeature); +-+ } +-+ list.sort(Comparator.comparing(cf -> IRegistry.STRUCTURE_FEATURE.getKey(cf.b))); +-+ return list; +-+ }), +- Codec.simpleMap(EnumCreatureType.g, BiomeMeta.b.listOf().promotePartial(SystemUtils.a("Spawn data: ", LOGGER::error)), INamable.a(EnumCreatureType.values())).fieldOf("spawners").forGetter(biome -> biome.v), +- d.a.listOf().fieldOf("climate_parameters").forGetter(biome -> biome.x), +- Codec.STRING.optionalFieldOf("parent").forGetter(biome -> Optional.ofNullable(biome.l)) +-@@ -159,9 +159,13 @@ public class BiomeBase { +- this.m = worldgensurfacecomposite; +- this.q = map; +- this.r = map1; +-- this.u = (Map) list.stream().collect(Collectors.toMap((structurefeature) -> { +-- return structurefeature.b; +-- }, Function.identity())); +-+ Map, StructureFeature> result = new HashMap<>(); +-+ for (StructureFeature structurefeature : list) { +-+ if (result.put(structurefeature.b, structurefeature) != null) { +-+ throw new IllegalStateException("Duplicate key"); +-+ } +-+ } +-+ this.u = (Map) result; +- this.v = Maps.newEnumMap(EnumCreatureType.class); this.v.putAll(map2); // Paper +- this.x = list1; +- this.l = (String) optional.orElse(null); // Paper - decompile fix +-@@ -727,9 +749,18 @@ public class BiomeBase { +- +- OCEAN("ocean"), COLD("cold"), MEDIUM("medium"), WARM("warm"); +- +-- private static final Map e = (Map) Arrays.stream(values()).collect(Collectors.toMap(BiomeBase.EnumTemperature::a, (biomebase_enumtemperature) -> { +-- return biomebase_enumtemperature; +-- })); +-+ private static final Map e; +-+ +-+ static { +-+ Map map = new HashMap<>(); +-+ for (EnumTemperature biomebase_enumtemperature : values()) { +-+ if (map.put(biomebase_enumtemperature.a(), biomebase_enumtemperature) != null) { +-+ throw new IllegalStateException("Duplicate key"); +-+ } +-+ } +-+ e = (Map) map; +-+ } +-+ +- private final String f; +- +- private EnumTemperature(String s) { +diff --git a/src/main/java/net/minecraft/server/Block.java.rej b/src/main/java/net/minecraft/server/Block.java.rej +deleted file mode 100644 +index 4cc30faacb1ee173cbc546cc57ff4ce032024587..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/Block.java.rej ++++ /dev/null +@@ -1,37 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java (rejected hunks) +-@@ -198,9 +198,9 @@ public class Block extends BlockBase implements IMaterial { +- +- public static void c(IBlockData iblockdata, World world, BlockPosition blockposition) { +- if (world instanceof WorldServer) { +-- a(iblockdata, (WorldServer) world, blockposition, (TileEntity) null).forEach((itemstack) -> { +-+ for (ItemStack itemstack : a(iblockdata, (WorldServer) world, blockposition, (TileEntity) null)) { +- a(world, blockposition, itemstack); +-- }); +-+ } +- } +- +- iblockdata.dropNaturally(world, blockposition, ItemStack.b); +-@@ -208,9 +208,9 @@ public class Block extends BlockBase implements IMaterial { +- public static void dropNaturally(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity) { a(iblockdata, world, blockposition, tileentity); } +- public static void a(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity) { +- if (world instanceof WorldServer) { +-- a(iblockdata, (WorldServer) world, blockposition, tileentity).forEach((itemstack) -> { +-+ for (ItemStack itemstack : a(iblockdata, (WorldServer) world, blockposition, tileentity)) { +- a(world, blockposition, itemstack); +-- }); +-+ } +- } +- +- iblockdata.dropNaturally(world, blockposition, ItemStack.b); +-@@ -218,9 +218,9 @@ public class Block extends BlockBase implements IMaterial { +- +- public static void dropItems(IBlockData iblockdata, World world, BlockPosition blockposition, @Nullable TileEntity tileentity, Entity entity, ItemStack itemstack) { +- if (world instanceof WorldServer) { +-- getDrops(iblockdata, (WorldServer) world, blockposition, tileentity, entity, itemstack).forEach((itemstack1) -> { +-+ for (ItemStack itemstack1 : getDrops(iblockdata, (WorldServer) world, blockposition, tileentity, entity, itemstack)) { +- a(world, blockposition, itemstack1); +-- }); +-+ } +- } +- +- iblockdata.dropNaturally(world, blockposition, itemstack); +diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java +index da37a0207571c3eeb324c7f07daf2af90bb870c8..0396bbc0a5e1315e2a6d09f72690f103163e2bc6 100644 +--- a/src/main/java/net/minecraft/server/BlockBase.java ++++ b/src/main/java/net/minecraft/server/BlockBase.java +@@ -713,9 +713,14 @@ public abstract class BlockBase { + } + + this.b = block.c(iblockdata, BlockAccessAir.INSTANCE, BlockPosition.ZERO, VoxelShapeCollision.a()); +- this.c = Arrays.stream(EnumDirection.EnumAxis.values()).anyMatch((enumdirection_enumaxis) -> { +- return this.b.b(enumdirection_enumaxis) < 0.0D || this.b.c(enumdirection_enumaxis) > 1.0D; +- }); ++ boolean result = false; ++ for (EnumDirection.EnumAxis enumdirection_enumaxis : EnumDirection.EnumAxis.values()) { ++ if (this.b.b(enumdirection_enumaxis) < 1.0D || this.b.c(enumdirection_enumaxis) > 1.0D) { ++ result = true; ++ break; ++ } ++ } ++ this.c = result; + this.j = new boolean[BlockBase.BlockData.Cache.e.length * BlockBase.BlockData.Cache.f]; + EnumDirection[] aenumdirection1 = BlockBase.BlockData.Cache.e; + int k = aenumdirection1.length; +diff --git a/src/main/java/net/minecraft/server/BlockBase.java.rej b/src/main/java/net/minecraft/server/BlockBase.java.rej +deleted file mode 100644 +index 4e6f3d695d5c1a888fe73ea81e936642f3667f48..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/BlockBase.java.rej ++++ /dev/null +@@ -1,19 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java (rejected hunks) +-@@ -700,9 +700,14 @@ public abstract class BlockBase { +- } +- +- this.b = block.c(iblockdata, BlockAccessAir.INSTANCE, BlockPosition.ZERO, VoxelShapeCollision.a()); +-- this.c = Arrays.stream(EnumDirection.EnumAxis.values()).anyMatch((enumdirection_enumaxis) -> { +-- return this.b.b(enumdirection_enumaxis) < 0.0D || this.b.c(enumdirection_enumaxis) > 1.0D; +-- }); +-+ boolean result = false; +-+ for (EnumDirection.EnumAxis enumdirection_enumaxis : EnumDirection.EnumAxis.values()) { +-+ if (this.b.b(enumdirection_enumaxis) < 0.0D || this.b.c(enumdirection_enumaxis) > 1.0D) { +-+ result = true; +-+ break; +-+ } +-+ } +-+ this.c = result; +- this.d = new boolean[6]; +- EnumDirection[] aenumdirection1 = f; +- int k = aenumdirection1.length; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index ee10abb6bc4d957676e7eef377cdc68dc3f43370..c12f4326f68020fbb140e97f0ef43ddcf5a71072 100644 +index dde38e0222e658b5a841a32af3fc5153ecb02392..5af513cb052382c34e157110265f80a1a2efef15 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -974,11 +974,11 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -739,11 +739,11 @@ public class ChunkProviderServer extends IChunkProvider { + if (this.a(playerchunk, l)) { + GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler(); + +- gameprofilerfiller.enter("chunkLoad"); ++ //gameprofilerfiller.enter("chunkLoad"); // Akarin - remove caller + chunkMapDistance.delayDistanceManagerTick = false; // Paper - ensure this is never false + this.tickDistanceManager(); + playerchunk = this.getChunk(k); +- gameprofilerfiller.exit(); ++ //gameprofilerfiller.exit(); // Akarin - remove caller + if (this.a(playerchunk, l)) { + this.chunkMapDistance.removeTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity + throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("No chunk holder after ticket has been added"))); +@@ -981,11 +981,11 @@ public class ChunkProviderServer extends IChunkProvider { player.playerNaturallySpawnedEvent = event; } // Paper end - optimize isOutisdeRange @@ -172,11 +518,25 @@ index ee10abb6bc4d957676e7eef377cdc68dc3f43370..c12f4326f68020fbb140e97f0ef43ddc // Paper start - per player mob spawning diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej b/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej deleted file mode 100644 -index d1152585c5f482e554966f965561626c78ac4d3a..0000000000000000000000000000000000000000 +index 7dd44fa8dc734862bf87691f1d7f4a5dae53b152..0000000000000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java.rej +++ /dev/null -@@ -1,15 +0,0 @@ +@@ -1,29 +0,0 @@ -diff a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java (rejected hunks) +-@@ -732,11 +732,11 @@ public class ChunkProviderServer extends IChunkProvider { +- if (this.a(playerchunk, l)) { +- GameProfilerFiller gameprofilerfiller = this.world.getMethodProfiler(); +- +-- gameprofilerfiller.enter("chunkLoad"); +-+ //gameprofilerfiller.enter("chunkLoad"); // Akarin - remove caller +- chunkMapDistance.delayDistanceManagerTick = false; // Paper - ensure this is never false +- this.tickDistanceManager(); +- playerchunk = this.getChunk(k); +-- gameprofilerfiller.exit(); +-+ //gameprofilerfiller.exit(); // Akarin - remove caller +- if (this.a(playerchunk, l)) { +- this.chunkMapDistance.removeTicketAtLevel(TicketType.REQUIRED_LOAD, chunkcoordintpair, l, identifier); // Tuinity +- throw (IllegalStateException) SystemUtils.c(new IllegalStateException("No chunk holder after ticket has been added")); -@@ -971,11 +971,11 @@ public class ChunkProviderServer extends IChunkProvider { - player.lastEntitySpawnRadiusSquared = (double)((range << 4) * (range << 4)); // used in isOutsideRange - } @@ -191,21 +551,836 @@ index d1152585c5f482e554966f965561626c78ac4d3a..00000000000000000000000000000000 - this.world.timings.countNaturalMobs.startTiming(); // Paper - timings - int l = this.chunkMapDistance.b(); - // Paper start - per player mob spawning +diff --git a/src/main/java/net/minecraft/server/ContainerSmithing.java b/src/main/java/net/minecraft/server/ContainerSmithing.java +index a575dddb262021fd68b4db1435e67a1f0768c633..35e4182282064f49f35d42776edf4b38cd4dd6ea 100644 +--- a/src/main/java/net/minecraft/server/ContainerSmithing.java ++++ b/src/main/java/net/minecraft/server/ContainerSmithing.java +@@ -73,9 +73,12 @@ public class ContainerSmithing extends ContainerAnvilAbstract { + + @Override + protected boolean a(ItemStack itemstack) { +- return this.i.stream().anyMatch((recipesmithing) -> { +- return recipesmithing.a(itemstack); +- }); ++ for (RecipeSmithing recipesmithing : this.i) { ++ if (recipesmithing.a(itemstack)) { ++ return true; ++ } ++ } ++ return false; + } + + @Override +diff --git a/src/main/java/net/minecraft/server/ContainerSmithing.java.rej b/src/main/java/net/minecraft/server/ContainerSmithing.java.rej +deleted file mode 100644 +index 2317638f225d0ccba97020c4e739d7dea99b78db..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/ContainerSmithing.java.rej ++++ /dev/null +@@ -1,17 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/ContainerSmithing.java b/src/main/java/net/minecraft/server/ContainerSmithing.java (rejected hunks) +-@@ -70,9 +70,12 @@ public class ContainerSmithing extends ContainerAnvilAbstract { +- +- @Override +- protected boolean a(ItemStack itemstack) { +-- return this.i.stream().anyMatch((recipesmithing) -> { +-- return recipesmithing.a(itemstack); +-- }); +-+ for (RecipeSmithing recipesmithing : this.i) { +-+ if (recipesmithing.a(itemstack)) { +-+ return true; +-+ } +-+ } +-+ return false; +- } +- +- // CraftBukkit start +diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java +index b0b49904e9590b91743ebafb7983a392a6c95083..66586a0799d669ed860880862173c6ebd0fa76ef 100644 +--- a/src/main/java/net/minecraft/server/CraftingManager.java ++++ b/src/main/java/net/minecraft/server/CraftingManager.java +@@ -124,15 +124,24 @@ public class CraftingManager extends ResourceDataJson { + } + + public Optional> getRecipe(MinecraftKey minecraftkey) { +- return this.recipes.values().stream().map((map) -> { +- return map.get(minecraftkey); // CraftBukkit - decompile error +- }).filter(Objects::nonNull).findFirst(); ++ // CraftBukkit - decompile error ++ for (Object2ObjectLinkedOpenHashMap> map : this.recipes.values()) { ++ IRecipe iRecipe = map.get(minecraftkey); ++ if (iRecipe != null) { ++ return Optional.>of(iRecipe); ++ } ++ } ++ return Optional.empty(); + } + + public Collection> b() { +- return (Collection) this.recipes.values().stream().flatMap((map) -> { +- return map.values().stream(); +- }).collect(Collectors.toSet()); ++ Set> set = new HashSet<>(); ++ for (Object2ObjectLinkedOpenHashMap> map : this.recipes.values()) { ++ for (IRecipe iRecipe : map.values()) { ++ set.add(iRecipe); ++ } ++ } ++ return set; + } + + public Stream d() { +diff --git a/src/main/java/net/minecraft/server/CraftingManager.java.rej b/src/main/java/net/minecraft/server/CraftingManager.java.rej +deleted file mode 100644 +index adeca862cc3a3d1001c9d515fa2083acef0520e2..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/CraftingManager.java.rej ++++ /dev/null +@@ -1,32 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java (rejected hunks) +-@@ -127,15 +124,24 @@ public class CraftingManager extends ResourceDataJson { +- } +- +- public Optional> a(MinecraftKey minecraftkey) { +-- return this.recipes.values().stream().map((map) -> { +-- return map.get(minecraftkey); // CraftBukkit - decompile error +-- }).filter(Objects::nonNull).findFirst(); +-+ // CraftBukkit - decompile error +-+ for (Object2ObjectLinkedOpenHashMap> map : this.recipes.values()) { +-+ IRecipe iRecipe = map.get(minecraftkey); +-+ if (iRecipe != null) { +-+ return Optional.>of(iRecipe); +-+ } +-+ } +-+ return Optional.empty(); +- } +- +- public Collection> b() { +-- return (Collection) this.recipes.values().stream().flatMap((map) -> { +-- return map.values().stream(); +-- }).collect(Collectors.toSet()); +-+ Set> set = new HashSet<>(); +-+ for (Object2ObjectLinkedOpenHashMap> map : this.recipes.values()) { +-+ for (IRecipe iRecipe : map.values()) { +-+ set.add(iRecipe); +-+ } +-+ } +-+ return (Collection) set; +- } +- +- public Stream d() { +diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java.rej b/src/main/java/net/minecraft/server/DedicatedServer.java.rej +deleted file mode 100644 +index 4c2d5b3e080c925d687733ec40d4fb4b22552c96..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/DedicatedServer.java.rej ++++ /dev/null +@@ -1,9 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java (rejected hunks) +-@@ -170,6 +170,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer +- com.destroystokyo.paper.PaperConfig.registerCommands(); +- com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now +- // Paper end +-+ com.proximyst.rainforest.RainforestConfig.init((java.io.File) options.valueOf("rainforest-settings")); // Rainforest +- +- this.setPVP(dedicatedserverproperties.pvp); +- this.setAllowFlight(dedicatedserverproperties.allowFlight); +diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java.rej b/src/main/java/net/minecraft/server/DispenserRegistry.java.rej +deleted file mode 100644 +index 8347faf8a7ee62d27cf5eb9f285695fddadfa624..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/DispenserRegistry.java.rej ++++ /dev/null +@@ -1,13 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java (rejected hunks) +-@@ -156,9 +156,9 @@ public class DispenserRegistry { +- throw new IllegalArgumentException("Not bootstrapped"); +- } else { +- if (SharedConstants.d) { +-- b().forEach((s) -> { +-+ for (String s : b()) { +- DispenserRegistry.LOGGER.error("Missing translations: " + s); +-- }); +-+ } +- } +- +- AttributeDefaults.a(); +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 18ef21d7f78c5106105e0f210c3dca612b430136..6f24467f5d790cbc5726e8ccabe7b0197f7beb21 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -440,7 +440,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + public void setPosition(double d0, double d1, double d2) { + this.setPositionRaw(d0, d1, d2); + //this.a(this.size.a(d0, d1, d2)); // Paper - move into setPositionRaw +- if (valid) ((WorldServer) world).chunkCheck(this); // CraftBukkit ++ if (valid && !dead) ((WorldServer) world).chunkCheck(this); // CraftBukkit // Purpur + } + + protected void ae() { +@@ -3025,7 +3025,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + entity.a(entity1, Entity::teleportAndSync); + } + +- } ++ }); + } + } + +diff --git a/src/main/java/net/minecraft/server/Entity.java.rej b/src/main/java/net/minecraft/server/Entity.java.rej +deleted file mode 100644 +index a1c69628be83c464c4f0da80fb80cc4c4a7e8514..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/Entity.java.rej ++++ /dev/null +@@ -1,10 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java (rejected hunks) +-@@ -1523,7 +1523,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +- this.pitch = MathHelper.a(f1, -90.0F, 90.0F) % 360.0F; +- this.lastYaw = this.yaw; +- this.lastPitch = this.pitch; +-- if (valid) world.getChunkAt((int) Math.floor(this.locX()) >> 4, (int) Math.floor(this.locZ()) >> 4); // CraftBukkit // Paper +-+ if (valid && !dead) world.getChunkAt((int) Math.floor(this.locX()) >> 4, (int) Math.floor(this.locZ()) >> 4); // CraftBukkit // Paper // Purpur +- } +- +- public void c(Vec3D vec3d) { +diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java.rej b/src/main/java/net/minecraft/server/EntityEnderDragon.java.rej +deleted file mode 100644 +index 39583978bd58994a70718fd009ae8e57f7c60af8..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java.rej ++++ /dev/null +@@ -1,13 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java (rejected hunks) +-@@ -462,9 +462,9 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { +- TileEntity tileentity = nmsBlock.isTileEntity() ? this.world.getTileEntity(blockposition) : null; +- LootTableInfo.Builder loottableinfo_builder = (new LootTableInfo.Builder((WorldServer) this.world)).a(this.world.random).set(LootContextParameters.POSITION, blockposition).set(LootContextParameters.TOOL, ItemStack.b).set(LootContextParameters.EXPLOSION_RADIUS, 1.0F / event.getYield()).setOptional(LootContextParameters.BLOCK_ENTITY, tileentity); +- +-- craftBlock.getNMS().a(loottableinfo_builder).forEach((itemstack) -> { +-+ for (ItemStack itemstack : craftBlock.getNMS().a(loottableinfo_builder)) { +- Block.a(world, blockposition, itemstack); +-- }); +-+ } +- craftBlock.getNMS().dropNaturally(world, blockposition, ItemStack.b); +- } +- // Paper start - TNTPrimeEvent +diff --git a/src/main/java/net/minecraft/server/EntityFox.java.rej b/src/main/java/net/minecraft/server/EntityFox.java.rej +deleted file mode 100644 +index c3c7738570d3670b50f144f145b61dcc2d35bb85..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityFox.java.rej ++++ /dev/null +@@ -1,37 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java (rejected hunks) +-@@ -1404,12 +1398,29 @@ public class EntityFox extends EntityAnimal { +- +- RED(0, "red", new BiomeBase[]{Biomes.TAIGA, Biomes.TAIGA_HILLS, Biomes.TAIGA_MOUNTAINS, Biomes.GIANT_TREE_TAIGA, Biomes.GIANT_SPRUCE_TAIGA, Biomes.GIANT_TREE_TAIGA_HILLS, Biomes.GIANT_SPRUCE_TAIGA_HILLS}), SNOW(1, "snow", new BiomeBase[]{Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA_HILLS, Biomes.SNOWY_TAIGA_MOUNTAINS}); +- +-- private static final EntityFox.Type[] c = (EntityFox.Type[]) Arrays.stream(values()).sorted(Comparator.comparingInt(EntityFox.Type::c)).toArray((i) -> { +-- return new EntityFox.Type[i]; +-- }); +-- private static final Map d = (Map) Arrays.stream(values()).collect(Collectors.toMap(EntityFox.Type::a, (entityfox_type) -> { +-- return entityfox_type; +-- })); +-+ private static final EntityFox.Type[] c; +-+ +-+ static { +-+ List list = new ArrayList<>(); +-+ for (Type type : values()) { +-+ list.add(type); +-+ } +-+ list.sort(Comparator.comparingInt(Type::c)); +-+ c = (Type[]) list.toArray(new Type[0]); +-+ } +-+ +-+ private static final Map d; +-+ +-+ static { +-+ Map map = new HashMap<>(); +-+ for (Type entityfox_type : values()) { +-+ if (map.put(entityfox_type.a(), entityfox_type) != null) { +-+ throw new IllegalStateException("Duplicate key"); +-+ } +-+ } +-+ d = (Map) map; +-+ } +-+ +- private final int e; +- private final String f; +- private final List g; +diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java +index cf64c8ca2c5348782bf65a13f210564856b69311..77e4fa44201782b64ad8ca1662835be5abadfa9d 100644 +--- a/src/main/java/net/minecraft/server/EntityHoglin.java ++++ b/src/main/java/net/minecraft/server/EntityHoglin.java +@@ -13,7 +13,7 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { + public int conversionTicks = 0; + public boolean cannotBeHunted = false; + protected static final ImmutableList>> bo = ImmutableList.of(SensorType.c, SensorType.d, SensorType.n, SensorType.m); +- protected static final ImmutableList> bp = ImmutableList.of(MemoryModuleType.BREED_TARGET, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.LOOK_TARGET, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLIN, new MemoryModuleType[]{MemoryModuleType.AVOID_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_ADULT_HOGLINS, MemoryModuleType.NEAREST_VISIBLE_ADULY, MemoryModuleType.NEAREST_REPELLENT, MemoryModuleType.PACIFIED}); ++ protected static final ImmutableList> bp = ImmutableList.of(MemoryModuleType.BREED_TARGET, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.LOOK_TARGET, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLIN, new MemoryModuleType[]{MemoryModuleType.AVOID_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_ADULT_HOGLINS, MemoryModuleType.NEAREST_VISIBLE_ADULY, MemoryModuleType.NEAREST_REPELLENT, MemoryModuleType.PACIFIED}); // Yatopia - decompile fix + + public EntityHoglin(EntityTypes entitytypes, World world) { + super(entitytypes, world); +@@ -77,14 +77,14 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { + + @Override + public BehaviorController getBehaviorController() { +- return super.getBehaviorController(); ++ return (BehaviorController) super.getBehaviorController(); // Yatopia - decompile fix + } + + @Override + protected void mobTick() { +- this.world.getMethodProfiler().enter("hoglinBrain"); +- this.getBehaviorController().a((WorldServer) this.world, (EntityLiving) this); +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().enter("hoglinBrain"); // Akarin - remove caller ++ this.getBehaviorController().a((WorldServer) this.world, this); // Yatopia - decompile fix ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + HoglinAI.a(this); + if (this.isConverting()) { + ++this.conversionTicks; +@@ -259,7 +259,7 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { + + @Override + protected SoundEffect getSoundAmbient() { +- return this.world.isClientSide ? null : (SoundEffect) HoglinAI.b(this).orElse((Object) null); ++ return this.world.isClientSide ? null : (SoundEffect) HoglinAI.b(this).orElse(null); + } + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java.rej b/src/main/java/net/minecraft/server/EntityHoglin.java.rej +deleted file mode 100644 +index be7a4b07540f6cc29c9ed76668bc1eaf9850013c..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityHoglin.java.rej ++++ /dev/null +@@ -1,13 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java (rejected hunks) +-@@ -83,9 +83,9 @@ public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { +- +- @Override +- protected void mobTick() { +-- this.world.getMethodProfiler().enter("hoglinBrain"); +-+ //this.world.getMethodProfiler().enter("hoglinBrain"); // Akarin - remove caller +- this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- HoglinAI.a(this); +- if (this.eO()) { +- ++this.bz; +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java +index 13e7c170413cb7cc0ac9e65c65b9e530efb60a8f..a49e5ece5df3c56f24f04b880e35d3a961a09e0c 100644 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java ++++ b/src/main/java/net/minecraft/server/EntityInsentient.java +@@ -241,13 +241,13 @@ public abstract class EntityInsentient extends EntityLiving { + @Override + public void entityBaseTick() { + super.entityBaseTick(); +- this.world.getMethodProfiler().enter("mobBaseTick"); ++ //this.world.getMethodProfiler().enter("mobBaseTick"); // Akarin - remove caller + if (this.isAlive() && this.random.nextInt(1000) < this.e++) { + this.m(); + this.F(); + } + +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + } + + @Override +@@ -747,30 +747,30 @@ public abstract class EntityInsentient extends EntityLiving { + return; + } + // Paper end +- this.world.getMethodProfiler().enter("sensing"); ++ //this.world.getMethodProfiler().enter("sensing"); // Akarin - remove caller + this.bo.a(); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("targetSelector"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("targetSelector"); // Akarin - remove caller + this.targetSelector.doTick(); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("goalSelector"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("goalSelector"); // Akarin - remove caller + this.goalSelector.doTick(); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("navigation"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("navigation"); // Akarin - remove caller + this.navigation.c(); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("mob tick"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("mob tick"); // Akarin - remove caller + this.mobTick(); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("controls"); +- this.world.getMethodProfiler().enter("move"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("controls"); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("move"); // Akarin - remove caller + this.moveController.a(); +- this.world.getMethodProfiler().exitEnter("look"); ++ //this.world.getMethodProfiler().exitEnter("look"); // Akarin - remove caller + this.lookController.a(); +- this.world.getMethodProfiler().exitEnter("jump"); ++ //this.world.getMethodProfiler().exitEnter("jump"); // Akarin - remove caller + this.bi.b(); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + this.M(); + } + +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java.rej b/src/main/java/net/minecraft/server/EntityInsentient.java.rej +deleted file mode 100644 +index bccb7cd89241ca30549f5442a4ef9847cfdb67a9..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java.rej ++++ /dev/null +@@ -1,64 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java (rejected hunks) +-@@ -241,13 +241,13 @@ public abstract class EntityInsentient extends EntityLiving { +- @Override +- public void entityBaseTick() { +- super.entityBaseTick(); +-- this.world.getMethodProfiler().enter("mobBaseTick"); +-+ //this.world.getMethodProfiler().enter("mobBaseTick"); // Akarin - remove caller +- if (this.isAlive() && this.random.nextInt(1000) < this.e++) { +- this.eJ(); +- this.F(); +- } +- +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- } +- +- @Override +-@@ -747,30 +747,30 @@ public abstract class EntityInsentient extends EntityLiving { +- return; +- } +- // Paper end +-- this.world.getMethodProfiler().enter("sensing"); +-+ //this.world.getMethodProfiler().enter("sensing"); // Akarin - remove caller +- this.bv.a(); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("targetSelector"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("targetSelector"); // Akarin - remove caller +- this.targetSelector.doTick(); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("goalSelector"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("goalSelector"); // Akarin - remove caller +- this.goalSelector.doTick(); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("navigation"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("navigation"); // Akarin - remove caller +- this.navigation.c(); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("mob tick"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("mob tick"); // Akarin - remove caller +- this.mobTick(); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("controls"); +-- this.world.getMethodProfiler().enter("move"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("controls"); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("move"); // Akarin - remove caller +- this.moveController.a(); +-- this.world.getMethodProfiler().exitEnter("look"); +-+ //this.world.getMethodProfiler().exitEnter("look"); // Akarin - remove caller +- this.lookController.a(); +-- this.world.getMethodProfiler().exitEnter("jump"); +-+ //this.world.getMethodProfiler().exitEnter("jump"); // Akarin - remove caller +- this.bp.b(); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- this.M(); +- } +- +diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java +index 1621a248e881e2fb4c3fc05e2fd4ee5d4169f534..730a0262f400a9974f89ecdf8b208e54cf7952f6 100644 +--- a/src/main/java/net/minecraft/server/EntityLiving.java ++++ b/src/main/java/net/minecraft/server/EntityLiving.java +@@ -2503,10 +2503,10 @@ public abstract class EntityLiving extends Entity { + } + + this.aK += (f3 - this.aK) * 0.3F; +- this.world.getMethodProfiler().enter("headTurn"); ++ //this.world.getMethodProfiler().enter("headTurn"); // Akarin - remove caller + f2 = this.f(f1, f2); +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("rangeChecks"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("rangeChecks"); // Akarin - remove caller + + while (this.yaw - this.lastYaw < -180.0F) { + this.lastYaw -= 360.0F; +@@ -2741,19 +2741,19 @@ public abstract class EntityLiving extends Entity { + } + + this.setMot(d4, d5, d6); +- this.world.getMethodProfiler().enter("ai"); ++ //this.world.getMethodProfiler().enter("ai"); // Akarin - remove caller + if (this.isFrozen()) { + this.jumping = false; + this.aR = 0.0F; + this.aT = 0.0F; + } else if (this.doAITick()) { +- this.world.getMethodProfiler().enter("newAi"); ++ //this.world.getMethodProfiler().enter("newAi"); // Akarin - remove caller + this.doTick(); +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + } + +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("jump"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("jump"); // Akarin - remove caller + if (this.jumping && this.cS()) { + double d7; + +@@ -2780,8 +2780,8 @@ public abstract class EntityLiving extends Entity { + this.jumpTicks = 0; + } + +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("travel"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("travel"); // Akarin - remove caller + this.aR *= 0.98F; + this.aT *= 0.98F; + this.r(); +@@ -2790,15 +2790,15 @@ public abstract class EntityLiving extends Entity { + // SpigotTimings.timerEntityAIMove.startTiming(); // Spigot // Paper + this.g(new Vec3D((double) this.aR, (double) this.aS, (double) this.aT)); + // SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot // Paper +- this.world.getMethodProfiler().exit(); +- this.world.getMethodProfiler().enter("push"); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.world.getMethodProfiler().enter("push"); // Akarin - remove caller + if (this.bf > 0) { + --this.bf; + this.a(axisalignedbb, this.getBoundingBox()); + } + + this.collideNearby(); +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + if (!this.world.isClientSide && this.dN() && this.aF()) { + this.damageEntity(DamageSource.DROWN, 1.0F); + } +diff --git a/src/main/java/net/minecraft/server/EntityLiving.java.rej b/src/main/java/net/minecraft/server/EntityLiving.java.rej +deleted file mode 100644 +index 947d12a17358d209be65c828e9dd297c54af91ac..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityLiving.java.rej ++++ /dev/null +@@ -1,87 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java (rejected hunks) +-@@ -365,7 +365,7 @@ public abstract class EntityLiving extends Entity { +- this.aK = this.aJ; +- this.lastYaw = this.yaw; +- this.lastPitch = this.pitch; +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- } +- +- public boolean cM() { +-@@ -2497,10 +2497,10 @@ public abstract class EntityLiving extends Entity { +- } +- +- this.aR += (f3 - this.aR) * 0.3F; +-- this.world.getMethodProfiler().enter("headTurn"); +-+ //this.world.getMethodProfiler().enter("headTurn"); // Akarin - remove caller +- f2 = this.f(f1, f2); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("rangeChecks"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("rangeChecks"); // Akarin - remove caller +- +- while (this.yaw - this.lastYaw < -180.0F) { +- this.lastYaw -= 360.0F; +-@@ -2534,7 +2534,7 @@ public abstract class EntityLiving extends Entity { +- this.aK += 360.0F; +- } +- +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- this.aS += f2; +- if (this.isGliding()) { +- ++this.bl; +-@@ -2733,19 +2733,19 @@ public abstract class EntityLiving extends Entity { +- } +- +- this.setMot(d4, d5, d6); +-- this.world.getMethodProfiler().enter("ai"); +-+ //this.world.getMethodProfiler().enter("ai"); // Akarin - remove caller +- if (this.isFrozen()) { +- this.jumping = false; +- this.aY = 0.0F; +- this.ba = 0.0F; +- } else if (this.doAITick()) { +-- this.world.getMethodProfiler().enter("newAi"); +-+ //this.world.getMethodProfiler().enter("newAi"); // Akarin - remove caller +- this.doTick(); +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- } +- +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("jump"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("jump"); // Akarin - remove caller +- if (this.jumping && this.cS()) { +- double d7; +- +-@@ -2772,23 +2772,23 @@ public abstract class EntityLiving extends Entity { +- this.jumpTicks = 0; +- } +- +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("travel"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("travel"); // Akarin - remove caller +- this.aY *= 0.98F; +- this.ba *= 0.98F; +- this.t(); +- AxisAlignedBB axisalignedbb = this.getBoundingBox(); +- +- this.f(new Vec3D((double) this.aY, (double) this.aZ, (double) this.ba)); +-- this.world.getMethodProfiler().exit(); +-- this.world.getMethodProfiler().enter("push"); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +-+ //this.world.getMethodProfiler().enter("push"); // Akarin - remove caller +- if (this.bm > 0) { +- --this.bm; +- this.a(axisalignedbb, this.getBoundingBox()); +- } +- +- this.collideNearby(); +-- this.world.getMethodProfiler().exit(); +-+ //this.world.getMethodProfiler().exit(); // Akarin - remove caller +- if (!this.world.isClientSide && this.dN() && this.aC()) { +- this.damageEntity(DamageSource.DROWN, 1.0F); +- } +diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java +index 13a2af03fc5a511f13a9be28a813e7275448d09d..cf52e4a350968095e67e704c4a65e01594619165 100644 +--- a/src/main/java/net/minecraft/server/EntityPigZombie.java ++++ b/src/main/java/net/minecraft/server/EntityPigZombie.java +@@ -103,15 +103,16 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { + double d0 = this.b(GenericAttributes.FOLLOW_RANGE); + AxisAlignedBB axisalignedbb = AxisAlignedBB.a(this.getPositionVector()).grow(d0, 10.0D, d0); + +- this.world.b(EntityPigZombie.class, axisalignedbb).stream().filter((entitypigzombie) -> { +- return entitypigzombie != this; +- }).filter((entitypigzombie) -> { +- return entitypigzombie.getGoalTarget() == null; +- }).filter((entitypigzombie) -> { +- return !entitypigzombie.r(this.getGoalTarget()); +- }).forEach((entitypigzombie) -> { +- entitypigzombie.setGoalTarget(this.getGoalTarget(), org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); // CraftBukkit +- }); ++ // CraftBukkit ++ for (EntityPigZombie entitypigzombie : this.world.b(EntityPigZombie.class, axisalignedbb)) { ++ if (entitypigzombie != this) { ++ if (entitypigzombie.getGoalTarget() == null) { ++ if (!entitypigzombie.r(this.getGoalTarget())) { ++ entitypigzombie.setGoalTarget(this.getGoalTarget(), EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); ++ } ++ } ++ } ++ } + } + + private void fa() { +diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java.rej b/src/main/java/net/minecraft/server/EntityPigZombie.java.rej +deleted file mode 100644 +index 39ea87798a00d40a1512c337b74d10c41330cc99..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityPigZombie.java.rej ++++ /dev/null +@@ -1,27 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java (rejected hunks) +-@@ -101,15 +103,16 @@ public class EntityPigZombie extends EntityZombie implements IEntityAngerable { +- double d0 = this.b(GenericAttributes.FOLLOW_RANGE); +- AxisAlignedBB axisalignedbb = AxisAlignedBB.a(this.getPositionVector()).grow(d0, 10.0D, d0); +- +-- this.world.b(EntityPigZombie.class, axisalignedbb).stream().filter((entitypigzombie) -> { +-- return entitypigzombie != this; +-- }).filter((entitypigzombie) -> { +-- return entitypigzombie.getGoalTarget() == null; +-- }).filter((entitypigzombie) -> { +-- return !entitypigzombie.r(this.getGoalTarget()); +-- }).forEach((entitypigzombie) -> { +-- entitypigzombie.setGoalTarget(this.getGoalTarget(), org.bukkit.event.entity.EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); // CraftBukkit +-- }); +-+ // CraftBukkit +-+ for (EntityPigZombie entitypigzombie : this.world.b(EntityPigZombie.class, axisalignedbb)) { +-+ if (entitypigzombie != this) { +-+ if (entitypigzombie.getGoalTarget() == null) { +-+ if (!entitypigzombie.r(this.getGoalTarget())) { +-+ entitypigzombie.setGoalTarget(this.getGoalTarget(), EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY, true); +-+ } +-+ } +-+ } +-+ } +- } +- +- private void fb() { +diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java +index e1b4330074cf3c3de31dbfcd9e1b99feb7baf669..34407b03e527891a877c2f138520200f3396631e 100644 +--- a/src/main/java/net/minecraft/server/EntityPiglin.java ++++ b/src/main/java/net/minecraft/server/EntityPiglin.java +@@ -143,7 +143,7 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow { + + @Override + public BehaviorController getBehaviorController() { +- return super.getBehaviorController(); ++ return (BehaviorController) super.getBehaviorController(); // Yatopia - decompile fix + } + + @Override +@@ -202,7 +202,7 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow { + @Override + protected void mobTick() { + this.world.getMethodProfiler().enter("piglinBrain"); +- this.getBehaviorController().a((WorldServer) this.world, (EntityLiving) this); ++ this.getBehaviorController().a((WorldServer) this.world, this); // Yatopia - decompile fix + this.world.getMethodProfiler().exit(); + PiglinAI.b(this); + super.mobTick(); +@@ -341,7 +341,7 @@ public class EntityPiglin extends EntityPiglinAbstract implements ICrossbow { + + @Override + protected SoundEffect getSoundAmbient() { +- return this.world.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse((Object) null); ++ return this.world.isClientSide ? null : (SoundEffect) PiglinAI.d(this).orElse(null); // Yatopia - decompile fix + } + + @Override +diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java.rej b/src/main/java/net/minecraft/server/EntityPiglin.java.rej +deleted file mode 100644 +index d1016d22fbb2dd15042fd6ccdf2ee7848351e518..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityPiglin.java.rej ++++ /dev/null +@@ -1,23 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java (rejected hunks) +-@@ -63,7 +63,9 @@ public class EntityPiglin extends EntityMonster implements ICrossbow { +- @Override +- protected void dropDeathLoot(DamageSource damagesource, int i, boolean flag) { +- super.dropDeathLoot(damagesource, i, flag); +-- this.bB.f().forEach(this::a); +-+ for (ItemStack itemStack : this.bB.f()) { +-+ a(itemStack); +-+ } +- } +- +- protected ItemStack k(ItemStack itemstack) { +-@@ -259,7 +261,9 @@ public class EntityPiglin extends EntityMonster implements ICrossbow { +- +- private void b(WorldServer worldserver) { +- PiglinAI.c(this); +-- this.bB.f().forEach(this::a); +-+ for (ItemStack itemStack : this.bB.f()) { +-+ a(itemStack); +-+ } +- EntityPigZombie entitypigzombie = (EntityPigZombie) this.b(EntityTypes.ZOMBIFIED_PIGLIN); +- +- entitypigzombie.addEffect(new MobEffect(MobEffects.CONFUSION, 200, 0)); +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index 034216d0c576239f6a5cae373ea9f765ae8b90a9..e022f9bd100db916f0c32278d6669375c239ee52 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -135,7 +135,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + this.playerInteractManager = playerinteractmanager; + this.server = minecraftserver; + this.serverStatisticManager = minecraftserver.getPlayerList().getStatisticManager(this); +- this.advancementDataPlayer = minecraftserver.getPlayerList().f(this); ++ this.advancementDataPlayerCompletableFuture = minecraftserver.getPlayerList().loadAdvancementDataPlayerAsync(this); // Paper - async advancements + this.G = 1.0F; + //this.c(worldserver); // Paper - don't move to spawn on login, only first join + +@@ -501,6 +501,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + CriterionTriggers.u.a(this, this.cf, this.ticksLived - this.cg); + } + ++ if (areAdvancementsLoaded()) // Paper - async advancements: don't tick advancements until they're loaded + this.advancementDataPlayer.b(this); + } + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java.rej b/src/main/java/net/minecraft/server/EntityPlayer.java.rej +deleted file mode 100644 +index aecfc8a44a764aed92b4eead845c21dfb88651fe..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java.rej ++++ /dev/null +@@ -1,18 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java (rejected hunks) +-@@ -130,7 +132,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +- this.playerInteractManager = playerinteractmanager; +- this.server = minecraftserver; +- this.serverStatisticManager = minecraftserver.getPlayerList().getStatisticManager(this); +-- this.advancementDataPlayer = minecraftserver.getPlayerList().f(this); +-+ this.advancementDataPlayerCompletableFuture = minecraftserver.getPlayerList().loadAdvancementDataPlayerAsync(this); // Paper - async advancements +- this.G = 1.0F; +- //this.b(worldserver); // Paper - don't move to spawn on login, only first join +- +-@@ -494,6 +496,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +- CriterionTriggers.u.a(this, this.cm, this.ticksLived - this.cn); +- } +- +-+ if (areAdvancementsLoaded()) // Paper - async advancements: don't tick advancements until they're loaded +- this.advancementDataPlayer.b(this); +- } +- +diff --git a/src/main/java/net/minecraft/server/EntitySheep.java.rej b/src/main/java/net/minecraft/server/EntitySheep.java.rej +deleted file mode 100644 +index 1137eb4819b638cd04d630ec1692b67ec40c740f..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/EntitySheep.java.rej ++++ /dev/null +@@ -1,23 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java (rejected hunks) +-@@ -35,9 +33,18 @@ public class EntitySheep extends EntityAnimal implements IShearable { +- enummap.put(EnumColor.RED, Blocks.RED_WOOL); +- enummap.put(EnumColor.BLACK, Blocks.BLACK_WOOL); +- }); +-- private static final Map bx = Maps.newEnumMap((Map) Arrays.stream(EnumColor.values()).collect(Collectors.toMap((enumcolor) -> { +-- return enumcolor; +-- }, EntitySheep::c))); +-+ private static final Map bx; +-+ +-+ static { +-+ Map map = new HashMap<>(); +-+ for (EnumColor enumcolor : EnumColor.values()) { +-+ if (map.put(enumcolor, c(enumcolor)) != null) { +-+ throw new IllegalStateException("Duplicate key"); +-+ } +-+ } +-+ bx = Maps.newEnumMap((Map) map); +-+ } +-+ +- private int by; +- private PathfinderGoalEatTile bz; +- diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 70ae2923e21d7a0312e629a903ca9e380d6c6114..d906c5e530c2e7f779df079223aee619a73b5d51 100644 +index 516fa58b4f0aab1df6f9dd7f33cad7f62f7a93d7..1b2e395cc141bf700e1f7c24fe8ee7dc68b25513 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java -@@ -164,6 +164,10 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -163,9 +163,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + @Override protected void mobTick() { mobTick(false); } protected void mobTick(boolean inactive) { - //this.world.getMethodProfiler().enter("villagerBrain"); // Akarin - remove caller +- this.world.getMethodProfiler().enter("villagerBrain"); ++ //this.world.getMethodProfiler().enter("villagerBrain"); // Akarin - remove caller + // Purpur start -+ boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0; -+ if (((WorldServer) world).getMinecraftServer().lagging ? tick : world.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick) ++ boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0; ++ if (world.getMinecraftServer().lagging ? tick : world.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick) + // Purpur end if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper - if (this.bM) { - this.bM = false; +- this.world.getMethodProfiler().exit(); ++ //this.world.getMethodProfiler().exit(); // Akarin - remove caller + if (this.bF) { + this.bF = false; + } diff --git a/src/main/java/net/minecraft/server/EntityVillager.java.rej b/src/main/java/net/minecraft/server/EntityVillager.java.rej deleted file mode 100644 index 68f0fc0230a4148ab9fc4181736ce93297c7e1b9..0000000000000000000000000000000000000000 @@ -224,27 +1399,44 @@ index 68f0fc0230a4148ab9fc4181736ce93297c7e1b9..00000000000000000000000000000000 - if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper - if (this.bM) { - this.bM = false; -diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index 9d6d882ad1479771b2a9e7c3a14c71dd00b63172..cc22d89d540a4f86e11d7d09ad2be7fcf070f43d 100644 ---- a/src/main/java/net/minecraft/server/LightEngineThreaded.java -+++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java -@@ -334,10 +334,14 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable { - private final java.util.List post = new java.util.ArrayList<>(); - private void b() { - if (queue.poll(pre, post)) { -- pre.forEach(Runnable::run); -+ for (Runnable runnable1 : pre) { -+ runnable1.run(); -+ } - pre.clear(); - super.a(Integer.MAX_VALUE, true, true); -- post.forEach(Runnable::run); -+ for (Runnable runnable : post) { -+ runnable.run(); -+ } - post.clear(); - } else { - // might have level updates to go still +diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java +index 193932e990ac25b3820bb7438c56a75a43cfdb25..20848d73efdf3e214ee7875398f1931f822614fd 100644 +--- a/src/main/java/net/minecraft/server/Explosion.java ++++ b/src/main/java/net/minecraft/server/Explosion.java +@@ -105,7 +105,7 @@ public class Explosion { + int i; + int j; + +- if (this.a || this.b != Effect.NONE) { // EMC - don't run block processing if neither flag is set ++ if (this.b || this.c != Effect.NONE) { // EMC - don't run block processing if neither flag is set + for (int k = 0; k < 16; ++k) { + for (i = 0; i < 16; ++i) { + for (j = 0; j < 16; ++j) { +@@ -218,7 +218,7 @@ public class Explosion { + boolean flag1 = this.c != Explosion.Effect.NONE; + + if (flag) { +- if (this.size >= 2.0F && flag1) { ++ if (this.size >= 2.0F/* && flag1*/) { // EMC - don't care about block breaks flag for animation + this.world.addParticle(Particles.EXPLOSION_EMITTER, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D); + } else { + this.world.addParticle(Particles.EXPLOSION, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D); +diff --git a/src/main/java/net/minecraft/server/Explosion.java.rej b/src/main/java/net/minecraft/server/Explosion.java.rej +deleted file mode 100644 +index 8d0039b05a5d20762707857770927e2f7e30b7ff..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/Explosion.java.rej ++++ /dev/null +@@ -1,10 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java (rejected hunks) +-@@ -215,7 +217,7 @@ public class Explosion { +- boolean flag1 = this.b != Explosion.Effect.NONE; +- +- if (flag) { +-- if (this.size >= 2.0F && flag1) { +-+ if (this.size >= 2.0F/* && flag1*/) { // EMC - don't care about block breaks flag for animation +- this.world.addParticle(Particles.EXPLOSION_EMITTER, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D); +- } else { +- this.world.addParticle(Particles.EXPLOSION, this.posX, this.posY, this.posZ, 1.0D, 0.0D, 0.0D); diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej b/src/main/java/net/minecraft/server/LightEngineThreaded.java.rej deleted file mode 100644 index 74d10212e547adf96762155adb03c0158df00a16..0000000000000000000000000000000000000000 @@ -270,10 +1462,10 @@ index 74d10212e547adf96762155adb03c0158df00a16..00000000000000000000000000000000 - ran = true; - } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ff1692c131b43f217de1fb6657a8274136a3dd08..5960ed2e91008b363dad900c72064055413eafd9 100644 +index 916053321ab4ec0065e954aca1537b4a5e5dfa6c..fb5d581fa1ded44fb87fad8fcb4994955c2e4a94 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1001,7 +1001,13 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant> 4; - pos.setValues(player.locX(), 0, player.locZ()); - double twoThirdModifier = 2D / 3D; -- MCUtil.getSpiralOutChunks(pos, Math.min(6, viewDistance)).forEach(coord -> { -- if (shouldSkipPrioritization(coord)) return; -+ for (ChunkCoordIntPair coordIntPair : MCUtil.getSpiralOutChunks(pos, Math.min(6, viewDistance))) { -+ if (shouldSkipPrioritization(coordIntPair)) continue; +diff --git a/src/main/java/net/minecraft/server/PiglinAI.java b/src/main/java/net/minecraft/server/PiglinAI.java +index 0407fa1751d89a037da8cb01f5ceef9b9833dd18..9a87894f851ecebb6772b9c87948730d17787be8 100644 +--- a/src/main/java/net/minecraft/server/PiglinAI.java ++++ b/src/main/java/net/minecraft/server/PiglinAI.java +@@ -12,7 +12,7 @@ import java.util.Set; -- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z); -+ double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coordIntPair.x, 0, coordIntPair.z); - // Prioritize immediate - if (dist <= 4 * 4) { -- updateChunkPriorityMap(priorities, coord.pair(), (int) (27 - Math.sqrt(dist))); -- return; -+ updateChunkPriorityMap(priorities, coordIntPair.pair(), (int) (27 - Math.sqrt(dist))); -+ continue; - } + public class PiglinAI { - // Prioritize nearby chunks -- updateChunkPriorityMap(priorities, coord.pair(), (int) (20 - Math.sqrt(dist) * twoThirdModifier)); -- }); -+ updateChunkPriorityMap(priorities, coordIntPair.pair(), (int) (20 - Math.sqrt(dist) * twoThirdModifier)); -+ } +- public static final Item a = Items.GOLD_INGOT; ++ public static final Item a = net.minecraft.server.Items.GOLD_INGOT; + private static final IntRange b = TimeRange.a(30, 120); + private static final IntRange c = TimeRange.a(10, 40); + private static final IntRange d = TimeRange.a(10, 30); +@@ -134,7 +134,7 @@ public class PiglinAI { + ItemStack itemstack; - // Prioritize Frustum near 3 - ChunkCoordIntPair front3 = player.getChunkInFront(3); - pos.setValues(front3.x << 4, 0, front3.z << 4); -- MCUtil.getSpiralOutChunks(pos, Math.min(5, viewDistance)).forEach(coord -> { -- if (shouldSkipPrioritization(coord)) return; -+ for (ChunkCoordIntPair chunkCoordIntPair : MCUtil.getSpiralOutChunks(pos, Math.min(5, viewDistance))) { -+ if (shouldSkipPrioritization(chunkCoordIntPair)) continue; + // CraftBukkit start +- if (entityitem.getItemStack().getItem() == Items.GOLD_NUGGET && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(entitypiglin, entityitem, 0, false).isCancelled()) { ++ if (entityitem.getItemStack().getItem() == net.minecraft.server.Items.GOLD_NUGGET && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPickupItemEvent(entitypiglin, entityitem, 0, false).isCancelled()) { + entitypiglin.receive(entityitem, entityitem.getItemStack().getCount()); + itemstack = entityitem.getItemStack(); + entityitem.die(); +@@ -288,7 +288,7 @@ public class PiglinAI { + } else { + boolean flag = entitypiglin.l(itemstack); -- double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z); -- updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); -- }); -+ double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, chunkCoordIntPair.x, 0, chunkCoordIntPair.z); -+ updateChunkPriorityMap(priorities, chunkCoordIntPair.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); -+ } - - // Prioritize Frustum near 5 - if (viewDistance > 4) { - ChunkCoordIntPair front5 = player.getChunkInFront(5); - pos.setValues(front5.x << 4, 0, front5.z << 4); -- MCUtil.getSpiralOutChunks(pos, 4).forEach(coord -> { -- if (shouldSkipPrioritization(coord)) return; -+ for (ChunkCoordIntPair coord : MCUtil.getSpiralOutChunks(pos, 3)) { -+ if (shouldSkipPrioritization(coord)) continue; - - double dist = MCUtil.distance(playerChunkX, 0, playerChunkZ, coord.x, 0, coord.z); - updateChunkPriorityMap(priorities, coord.pair(), (int) (25 - Math.sqrt(dist) * twoThirdModifier)); -- }); -+ } +- return item == Items.GOLD_NUGGET ? flag : (c(item) ? !u(entitypiglin) && flag : (!a(item) ? entitypiglin.o(itemstack) : z(entitypiglin) && flag)); ++ return item == net.minecraft.server.Items.GOLD_NUGGET ? flag : (c(item) ? !u(entitypiglin) && flag : (!a(item) ? entitypiglin.o(itemstack) : z(entitypiglin) && flag)); } + } - // Prioritize Frustum far 7 -@@ -1170,7 +1170,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - } +@@ -359,16 +359,17 @@ public class PiglinAI { + public static void a(EntityHuman entityhuman, boolean flag) { + List list = entityhuman.world.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D)); // CraftBukkit - decompile error - this.getVillagePlace().loadInData(chunkcoordintpair, chunkHolder.poiData); -- chunkHolder.tasks.forEach(Runnable::run); -+ for (Runnable task : chunkHolder.tasks) { -+ task.run(); -+ } - // Paper end +- list.stream().filter(PiglinAI::d).filter((entitypiglin) -> { +- return !flag || BehaviorUtil.c(entitypiglin, entityhuman); +- }).forEach((entitypiglin) -> { +- if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) { +- d((EntityPiglinAbstract) entitypiglin, (EntityLiving) entityhuman); +- } else { +- c((EntityPiglinAbstract) entitypiglin, (EntityLiving) entityhuman); ++ for (EntityPiglinAbstract entitypiglin : list) { ++ if (d(entitypiglin)) { ++ if (!flag || BehaviorUtil.c(entitypiglin, entityhuman)) { ++ if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) { ++ d(entitypiglin, entityhuman); ++ } else { ++ c(entitypiglin, entityhuman); ++ } ++ } + } +- +- }); ++ } + } - if (chunkHolder.protoChunk != null) {try (Timing ignored2 = this.world.timings.chunkLoadLevelTimer.startTimingIfSync()) { // Paper start - timings // Paper - chunk is created async + public static EnumInteractionResult a(EntityPiglin entitypiglin, EntityHuman entityhuman, EnumHand enumhand) { +@@ -460,9 +461,13 @@ public class PiglinAI { + } + + protected static boolean e(EntityPiglin entitypiglin) { +- return entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY) || m(entitypiglin).stream().anyMatch((entitypiglinabstract) -> { +- return entitypiglinabstract.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY); +- }); ++ if (entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) return true; ++ for (EntityPiglinAbstract entitypiglin1 : m(entitypiglin)) { ++ if (entitypiglin1.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) { ++ return true; ++ } ++ } ++ return false; + } + + private static List m(EntityPiglin entitypiglin) { +diff --git a/src/main/java/net/minecraft/server/PiglinAI.java.rej b/src/main/java/net/minecraft/server/PiglinAI.java.rej +deleted file mode 100644 +index c15111ef7bbb8f71d1b5e5ce812f4526746a3651..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/PiglinAI.java.rej ++++ /dev/null +@@ -1,90 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/PiglinAI.java b/src/main/java/net/minecraft/server/PiglinAI.java (rejected hunks) +-@@ -358,16 +358,18 @@ public class PiglinAI { +- public static void a(EntityHuman entityhuman, boolean flag) { +- List list = entityhuman.world.a(EntityPiglin.class, entityhuman.getBoundingBox().g(16.0D)); +- +-- list.stream().filter(PiglinAI::k).filter((entitypiglin) -> { +-- return !flag || BehaviorUtil.c(entitypiglin, entityhuman); +-- }).forEach((entitypiglin) -> { +-- if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) { +-- f(entitypiglin, entityhuman); +-- } else { +-- c(entitypiglin, (EntityLiving) entityhuman); +-- } +-+ for (EntityPiglin entitypiglin : list) { +-+ if (k(entitypiglin)) { +-+ if (!flag || BehaviorUtil.c(entitypiglin, entityhuman)) { +-+ if (entitypiglin.world.getGameRules().getBoolean(GameRules.UNIVERSAL_ANGER)) { +-+ f(entitypiglin, entityhuman); +-+ } else { +-+ c(entitypiglin, entityhuman); +-+ } +- +-- }); +-+ } +-+ } +-+ } +- } +- +- public static EnumInteractionResult a(EntityPiglin entitypiglin, EntityHuman entityhuman, EnumHand enumhand) { +-@@ -459,9 +461,13 @@ public class PiglinAI { +- } +- +- protected static boolean e(EntityPiglin entitypiglin) { +-- return entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY) || q(entitypiglin).stream().anyMatch((entitypiglin1) -> { +-- return entitypiglin1.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY); +-- }); +-+ if (entitypiglin.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) return true; +-+ for (EntityPiglin entitypiglin1 : q(entitypiglin)) { +-+ if (entitypiglin1.getBehaviorController().hasMemory(MemoryModuleType.HUNTED_RECENTLY)) { +-+ return true; +-+ } +-+ } +-+ return false; +- } +- +- private static List q(EntityPiglin entitypiglin) { +-@@ -501,23 +507,25 @@ public class PiglinAI { +- } +- +- protected static void b(EntityPiglin entitypiglin, EntityLiving entityliving) { +-- r(entitypiglin).forEach((entitypiglin1) -> { +-+ for (EntityPiglin entitypiglin1 : r(entitypiglin)) { +- if (entityliving.getEntityType() != EntityTypes.HOGLIN || entitypiglin1.eN() && ((EntityHoglin) entityliving).eP()) { +- g(entitypiglin1, entityliving); +- } +-- }); +-+ } +- } +- +- protected static void f(EntityPiglin entitypiglin) { +-- r(entitypiglin).forEach((entitypiglin1) -> { +-+ for (EntityPiglin entitypiglin1 : r(entitypiglin)) { +- i(entitypiglin1).ifPresent((entityhuman) -> { +-- c(entitypiglin1, (EntityLiving) entityhuman); +-+ c(entitypiglin1, entityhuman); +- }); +-- }); +-+ } +- } +- +- protected static void g(EntityPiglin entitypiglin) { +-- q(entitypiglin).forEach(PiglinAI::j); +-+ for (EntityPiglin entityPiglin : q(entitypiglin)) { +-+ j(entityPiglin); +-+ } +- } +- +- protected static void c(EntityPiglin entitypiglin, EntityLiving entityliving) { +-@@ -568,9 +576,9 @@ public class PiglinAI { +- } +- +- private static void h(EntityPiglin entitypiglin, EntityLiving entityliving) { +-- q(entitypiglin).forEach((entitypiglin1) -> { +-+ for (EntityPiglin entitypiglin1 : q(entitypiglin)) { +- i(entitypiglin1, entityliving); +-- }); +-+ } +- } +- +- private static void i(EntityPiglin entitypiglin, EntityLiving entityliving) { +diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java.rej b/src/main/java/net/minecraft/server/PlayerChunk.java.rej +deleted file mode 100644 +index fce02f5fcef5179e63997c0b06277601c911ecb7..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/PlayerChunk.java.rej ++++ /dev/null +@@ -1,22 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java (rejected hunks) +-@@ -2,6 +2,7 @@ package net.minecraft.server; +- +- import com.mojang.datafixers.util.Either; +- import java.util.List; +-+import java.util.Map; +- import java.util.Optional; +- import java.util.concurrent.CompletableFuture; +- import java.util.concurrent.atomic.AtomicReferenceArray; +-@@ -745,7 +746,11 @@ public class PlayerChunk { +- if (getCurrentPriority() != priority) { +- this.v.a(this.location, this::getCurrentPriority, priority, this::setPriority); // use preferred priority +- int neighborsPriority = getNeighborsPriority(); +-- this.neighbors.forEach((neighbor, neighborDesired) -> neighbor.setNeighborPriority(this, neighborsPriority)); +-+ for (Map.Entry entry : this.neighbors.entrySet()) { +-+ PlayerChunk neighbor = entry.getKey(); +-+ ChunkStatus neighborDesired = entry.getValue(); +-+ neighbor.setNeighborPriority(this, neighborsPriority); +-+ } +- } +- // Paper end +- this.oldTicketLevel = this.ticketLevel; diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej b/src/main/java/net/minecraft/server/PlayerChunkMap.java.rej deleted file mode 100644 index 759862aba781ec6f1ae0c9a76c4ab6352d603a4c..0000000000000000000000000000000000000000 @@ -471,11 +1791,108 @@ index 759862aba781ec6f1ae0c9a76c4ab6352d603a4c..00000000000000000000000000000000 - // Paper end - - if (chunkHolder.protoChunk != null) {try (Timing ignored2 = this.world.timings.chunkLoadLevelTimer.startTimingIfSync()) { // Paper start - timings // Paper - chunk is created async +diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java +index 62edfda9cc326a428cd267227054f03d94d22dce..934ac7fdfa040f1e00fb78b525b801ed525dae7e 100644 +--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java ++++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java +@@ -23,15 +23,21 @@ public class PortalTravelAgent { + // CraftBukkit end + + villageplace.a(this.world, blockposition, i); +- Optional optional = villageplace.b((villageplacetype) -> { +- return villageplacetype == VillagePlaceType.v; +- }, blockposition, i, VillagePlace.Occupancy.ANY).sorted(Comparator.comparingDouble((VillagePlaceRecord villageplacerecord) -> { // CraftBukkit - decompile error ++ boolean seen = false; ++ VillagePlaceRecord best = null; ++ Comparator comparator = Comparator.comparingDouble((villageplacerecord) -> { // CraftBukkit - decompile error + return villageplacerecord.f().j(blockposition); + }).thenComparingInt((villageplacerecord) -> { + return villageplacerecord.f().getY(); +- })).filter((villageplacerecord) -> { +- return this.world.getType(villageplacerecord.f()).b(BlockProperties.E); +- }).findFirst(); ++ }); ++ List list = villageplace.b(type -> type == VillagePlaceType.v, blockposition, i, VillagePlace.Occupancy.ANY); ++ for (VillagePlaceRecord villagePlaceRecord : list) { ++ if (!seen || comparator.compare(villagePlaceRecord, best) < 0) { ++ seen = true; ++ best = villagePlaceRecord; ++ } ++ } ++ Optional optional = seen ? Optional.of(best) : Optional.empty(); + + return optional.map((villageplacerecord) -> { + BlockPosition blockposition1 = villageplacerecord.f(); +diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java.rej b/src/main/java/net/minecraft/server/PortalTravelAgent.java.rej +deleted file mode 100644 +index e8002e718bce73e4cfedcab7636a85a773dfb099..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java.rej ++++ /dev/null +@@ -1,24 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java (rejected hunks) +-@@ -57,11 +57,20 @@ public class PortalTravelAgent { +- List list = (List) villageplace.b((villageplacetype) -> { +- return villageplacetype == VillagePlaceType.v; +- }, blockposition, searchRadius, VillagePlace.Occupancy.ANY).collect(Collectors.toList()); // CraftBukkit - searchRadius +-- Optional optional = list.stream().min(Comparator.comparingDouble((villageplacerecord) -> { // CraftBukkit - decompile error +-+ boolean seen = false; +-+ VillagePlaceRecord best = null; +-+ Comparator comparator = Comparator.comparingDouble((villageplacerecord) -> { // CraftBukkit - decompile error +- return villageplacerecord.f().j(blockposition); +- }).thenComparingInt((villageplacerecord) -> { +- return villageplacerecord.f().getY(); +-- })); +-+ }); +-+ for (VillagePlaceRecord villagePlaceRecord : list) { +-+ if (!seen || comparator.compare(villagePlaceRecord, best) < 0) { +-+ seen = true; +-+ best = villagePlaceRecord; +-+ } +-+ } +-+ Optional optional = seen ? Optional.of(best) : Optional.empty(); +- +- return (ShapeDetector.Shape) optional.map((villageplacerecord) -> { +- BlockPosition blockposition1 = villageplacerecord.f(); +diff --git a/src/main/java/net/minecraft/server/RegistryMaterials.java.rej b/src/main/java/net/minecraft/server/RegistryMaterials.java.rej +deleted file mode 100644 +index c29a9979eb97870b2b13c4b5fa68395aa40e8059..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/RegistryMaterials.java.rej ++++ /dev/null +@@ -1,29 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/RegistryMaterials.java b/src/main/java/net/minecraft/server/RegistryMaterials.java (rejected hunks) +-@@ -181,17 +181,22 @@ public class RegistryMaterials extends IRegistryWritable { +- return Codec.unboundedMap(MinecraftKey.a.xmap(ResourceKey.a(resourcekey), ResourceKey::a), mapcodec.codec()).xmap((map) -> { +- RegistryMaterials registrymaterials = new RegistryMaterials<>(resourcekey, lifecycle); +- +-- map.forEach((resourcekey1, object) -> { +-+ for (Entry, T> entry : map.entrySet()) { +-+ ResourceKey resourcekey1 = entry.getKey(); +-+ T object = entry.getValue(); +- registrymaterials.a(registrymaterials.bd, resourcekey1, object); +- registrymaterials.d(resourcekey1); +-- }); +-+ } +- return registrymaterials; +- }, (registrymaterials) -> { +- com.google.common.collect.ImmutableMap.Builder, T> com_google_common_collect_immutablemap_builder = ImmutableMap.builder(); +- +-- registrymaterials.bb.entrySet().stream().filter((entry) -> { +-- return registrymaterials.c((ResourceKey) entry.getKey()); +-- }).forEach(entry1 -> com_google_common_collect_immutablemap_builder.put((java.util.Map.Entry,? extends T>) entry1)); // Paper - compiler fix (expand method reference + add cast) +-+ // Paper - compiler fix (expand method reference + add cast) +-+ for (Entry, T> entry : registrymaterials.bb.entrySet()) { +-+ if (registrymaterials.c(entry.getKey())) { +-+ com_google_common_collect_immutablemap_builder.put(entry); +-+ } +-+ } +- return com_google_common_collect_immutablemap_builder.build(); +- }); +- } diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java -index 6eb81504146af614a806add6e5effe0c2b111c8a..512afdfcbaab630a291d1aa120a90e554855d34f 100644 +index c3bd58069d8dbdf36f70f1dafd7c24000f31708b..f915cb4e1110e39178527903ae93508f9459d7ca 100644 --- a/src/main/java/net/minecraft/server/StructureGenerator.java +++ b/src/main/java/net/minecraft/server/StructureGenerator.java -@@ -139,6 +139,11 @@ public abstract class StructureGenerator +@@ -143,6 +143,11 @@ public abstract class StructureGenerator int j2 = i1 + k * l1; ChunkCoordIntPair chunkcoordintpair = this.a(structuresettingsfeature, j, seededrandom, i2, j2); if (!iworldreader.getWorldBorder().isChunkInBounds(chunkcoordintpair.x, chunkcoordintpair.z)) { continue; } // Paper @@ -507,7 +1924,7 @@ index 8b5d001fb8ecb4a5b96bda6532cf8d5900816290..00000000000000000000000000000000 - IChunkAccess ichunkaccess = iworldreader.getChunkAt(chunkcoordintpair.x, chunkcoordintpair.z, ChunkStatus.STRUCTURE_STARTS, !(iworldreader instanceof World) || !((World) iworldreader).origamiConfig.onlyFindGeneratedFeatures); - if (ichunkaccess == null) { diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java -index 2fbbc1588c2943c8998550db4da6642e666650d8..3ff61141aede4b5a09bf83153222de0d14db5ad0 100644 +index 299196ad134593a2979a867b86d44532a23a40f2..95bede605c6401af10f18b641cd12c9d8ec2f207 100644 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java @@ -508,6 +508,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi @@ -518,12 +1935,20 @@ index 2fbbc1588c2943c8998550db4da6642e666650d8..3ff61141aede4b5a09bf83153222de0d return true; } return false; // EMC +@@ -765,6 +766,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi + BlockPosition blockposition = this.getPosition(); + + if (VoxelShapes.c(VoxelShapes.a(entity.getBoundingBox().d((double) (-blockposition.getX()), (double) (-blockposition.getY()), (double) (-blockposition.getZ()))), this.aa_(), OperatorBoolean.AND)) { ++ enableTicking(this, 0); // Origami - don't tick empty hoppers + this.a(() -> { + return a((IInventory) this, (EntityItem) entity); + }); diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java.rej b/src/main/java/net/minecraft/server/TileEntityHopper.java.rej deleted file mode 100644 -index cc8866ec1ccbc131e8491c50eda4f85590bb667b..0000000000000000000000000000000000000000 +index 3f481f57d8e0b156b7d632085265e3acfb2f4fa8..0000000000000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java.rej +++ /dev/null -@@ -1,9 +0,0 @@ +@@ -1,17 +0,0 @@ -diff a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java (rejected hunks) -@@ -466,6 +497,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi - entityitem = (EntityItem) iterator.next(); @@ -533,30 +1958,14 @@ index cc8866ec1ccbc131e8491c50eda4f85590bb667b..00000000000000000000000000000000 - return true; - } - } -diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -index 7fe085e48b6ad625a510edf33b112bef24f7d7ad..9459efde54d507231b4aacb7cba14e9905ebb4d7 100644 ---- a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -+++ b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -@@ -11,7 +11,18 @@ import org.bukkit.entity.HumanEntity; - - public class TileEntityShulkerBox extends TileEntityLootable implements IWorldInventory, ITickable { - -- private static final int[] a = IntStream.range(0, 27).toArray(); -+ private static final int[] a; -+ -+ static { -+ int[] arr = new int[10]; -+ int count = 0; -+ for (int i1 = 0; i1 < 27; i1++) { -+ if (arr.length == count) arr = Arrays.copyOf(arr, count * 2); -+ arr[count++] = i1; -+ } -+ arr = Arrays.copyOfRange(arr, 0, count); -+ a = arr; -+ } - private NonNullList contents; - public int c; // PAIL private -> public, rename viewerCount - private TileEntityShulkerBox.AnimationPhase i; +-@@ -722,6 +754,7 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +- BlockPosition blockposition = this.getPosition(); +- +- if (VoxelShapes.c(VoxelShapes.a(entity.getBoundingBox().d((double) (-blockposition.getX()), (double) (-blockposition.getY()), (double) (-blockposition.getZ()))), this.ac_(), OperatorBoolean.AND)) { +-+ enableTicking(this, 0); // Origami - don't tick empty hoppers +- this.a(() -> { +- return a((IInventory) this, (EntityItem) entity); +- }); diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java.rej b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java.rej deleted file mode 100644 index bada470cba41cce9beb9eb04227b42c1d489d731..0000000000000000000000000000000000000000 @@ -586,32 +1995,33 @@ index bada470cba41cce9beb9eb04227b42c1d489d731..00000000000000000000000000000000 - private int c; - private TileEntityShulkerBox.AnimationPhase i; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 9ae62bd4a6742eb77082867da6edb94c29aa2d9b..29ffa302fa5b3d7d0ece23e2e0eda79d46747c3b 100644 +index 4ccd7c6b7973d97bd3a2feea279953f307f7a9b4..5c67881cb9258b839e713b8bb0b4b380691d3fdd 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -97,6 +97,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { public final com.tuinity.tuinity.config.TuinityConfig.WorldConfig tuinityConfig; // Tuinity - Server Config public final net.pl3x.purpur.PurpurWorldConfig purpurConfig; // Purpur -+ public final de.minebench.origami.OrigamiConfig.WorldConfig origamiConfig; // Origami - World Config ++ public final de.minebench.origami.OrigamiConfig.WorldConfig origamiConfig; // Origami - World config + public final RainforestWorldConfig rainforestConfig; // Rainforest public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPosition lastPhysicsProblem; // Spigot -@@ -127,6 +129,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { - this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this.paperConfig, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray +@@ -130,6 +132,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { + this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig((((WorldDataServer)worlddatamutable).getName()), this.spigotConfig); // Paper + this.chunkPacketBlockController = this.paperConfig.antiXray ? new ChunkPacketBlockControllerAntiXray(this, executor) : ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray this.tuinityConfig = new com.tuinity.tuinity.config.TuinityConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Tuinity - Server Config - this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig((((WorldDataServer)worlddatamutable).getName())); // Purpur -+ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Origami - World Config ++ this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig(((WorldDataServer)worlddatamutable).getName()); // Purpur - world config ++ this.origamiConfig = new de.minebench.origami.OrigamiConfig.WorldConfig(((WorldDataServer)worlddatamutable).getName()); // Origami + this.rainforestConfig = new RainforestWorldConfig(((WorldDataServer)worlddatamutable).getName(), paperConfig); // Rainforest this.generator = gen; this.world = new CraftWorld((WorldServer) this, gen, env); this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit -@@ -678,6 +682,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { +@@ -614,6 +619,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { } -+ public void neighborChanged(BlockPosition pos, Block blockIn, BlockPosition fromPos) { a(pos, blockIn, fromPos); } // Paper - OBFHELPER ++ public final void neighborChanged(BlockPosition pos, Block blockIn, BlockPosition fromPos) { a(pos, blockIn, fromPos); } // Paper - OBFHELPER public void a(BlockPosition blockposition, Block block, BlockPosition blockposition1) { if (!this.isClientSide) { IBlockData iblockdata = this.getTypeIfLoaded(blockposition); // EMC @@ -630,11 +2040,110 @@ index c632cd030e36d8abfd92a14948e4893d885823ad..00000000000000000000000000000000 - public void a(BlockPosition blockposition, Block block, BlockPosition blockposition1) { - if (!this.isClientSide) { - IBlockData iblockdata = this.getType(blockposition); +diff --git a/src/main/java/net/minecraft/server/WorldDataServer.java b/src/main/java/net/minecraft/server/WorldDataServer.java +index a7e623044aece1f46e2d039cd2dcf710120ac267..e9da64d5745b12bc1144b1f55dc45b6125083b8f 100644 +--- a/src/main/java/net/minecraft/server/WorldDataServer.java ++++ b/src/main/java/net/minecraft/server/WorldDataServer.java +@@ -122,7 +122,10 @@ public class WorldDataServer implements IWorldDataServer, SaveData { + private void a(IRegistryCustom iregistrycustom, NBTTagCompound nbttagcompound, @Nullable NBTTagCompound nbttagcompound1) { + NBTTagList nbttaglist = new NBTTagList(); + +- this.C.stream().map(NBTTagString::a).forEach(nbttaglist::add); ++ for (String s : this.C) { ++ NBTTagString a = NBTTagString.a(s); ++ nbttaglist.add(a); ++ } + nbttagcompound.set("ServerBrands", nbttaglist); + nbttagcompound.setBoolean("WasModded", this.D); + NBTTagCompound nbttagcompound2 = new NBTTagCompound(); +diff --git a/src/main/java/net/minecraft/server/WorldDataServer.java.rej b/src/main/java/net/minecraft/server/WorldDataServer.java.rej +deleted file mode 100644 +index ce6a0e3807550ef3652d4e1ab8695f7afe9fc8f8..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/WorldDataServer.java.rej ++++ /dev/null +@@ -1,13 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/WorldDataServer.java b/src/main/java/net/minecraft/server/WorldDataServer.java (rejected hunks) +-@@ -120,7 +120,10 @@ public class WorldDataServer implements IWorldDataServer, SaveData { +- private void a(IRegistryCustom iregistrycustom, NBTTagCompound nbttagcompound, @Nullable NBTTagCompound nbttagcompound1) { +- NBTTagList nbttaglist = new NBTTagList(); +- +-- this.B.stream().map(NBTTagString::a).forEach(nbttaglist::add); +-+ for (String s : this.B) { +-+ NBTTagString a = NBTTagString.a(s); +-+ nbttaglist.add(a); +-+ } +- nbttagcompound.set("ServerBrands", nbttaglist); +- nbttagcompound.setBoolean("WasModded", this.C); +- NBTTagCompound nbttagcompound2 = new NBTTagCompound(); +diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java +index d627a25830646d8808950238f451fa0adbab4ec6..a959672f5857b987001252c3fd7ace9e83e07c9b 100644 +--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java ++++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java +@@ -61,7 +61,7 @@ public class WorldNBTStorage { + } + // Spigot End + +- if (file.exists() && file.isFile()) { ++ if (normalFile) { // Akarin - avoid double I/O operation + nbttagcompound = NBTCompressedStreamTools.a(file); + } + // Spigot Start +diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej b/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej +deleted file mode 100644 +index 3a35169eaf680c45fe42922eb5f0014fa422c31c..0000000000000000000000000000000000000000 +--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java.rej ++++ /dev/null +@@ -1,10 +0,0 @@ +-diff a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java (rejected hunks) +-@@ -62,7 +63,7 @@ public class WorldNBTStorage { +- } +- // Spigot End +- +-- if (file.exists() && file.isFile()) { +-+ if (normalFile) { // Akarin - avoid double I/O operation +- nbttagcompound = NBTCompressedStreamTools.a((InputStream) (new FileInputStream(file))); +- } +- // Spigot Start diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 64f7fc40a6847ebc6c84b3c179614e186f861e1f..3782d329dc62a9e834f16a9009f4102b5b4aad6f 100644 +index 698072f1b97a5a4489472b24140939be46ad0d36..11ac68333a97c21607bd4ce6dd936a69003f2bea 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -943,7 +943,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -869,11 +869,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { + + this.P(); + this.b(); +- gameprofilerfiller.exitEnter("chunkSource"); ++ //gameprofilerfiller.exitEnter("chunkSource"); // Akarin - remove caller + this.timings.chunkProviderTick.startTiming(); // Paper - timings + this.getChunkProvider().tick(booleansupplier); + this.timings.chunkProviderTick.stopTiming(); // Paper - timings +- gameprofilerfiller.exitEnter("tickPending"); ++ //gameprofilerfiller.exitEnter("tickPending"); // Akarin - remove caller + timings.scheduledBlocks.startTiming(); // Paper + if (!this.isDebugWorld()) { + this.nextTickListBlock.b(); +@@ -882,17 +882,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { + timings.scheduledBlocks.stopTiming(); // Paper + + // Tuinity - replace logic +- gameprofilerfiller.exitEnter("raid"); ++ //gameprofilerfiller.exitEnter("raid"); // Akarin - remove caller + this.timings.raids.startTiming(); // Paper - timings + this.persistentRaid.a(); + this.timings.raids.stopTiming(); // Paper - timings +- gameprofilerfiller.exitEnter("blockEvents"); ++ //gameprofilerfiller.exitEnter("blockEvents"); // Akarin - remove caller + timings.doSounds.startTiming(); // Spigot + this.aj(); + timings.doSounds.stopTiming(); // Spigot + // Tuinity - replace logic + this.ticking = false; +- gameprofilerfiller.exitEnter("entities"); ++ //gameprofilerfiller.exitEnter("entities"); // Akarin - remove caller + boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players + + if (flag3) { +@@ -924,7 +924,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // CraftBukkit end */ @@ -643,7 +2152,7 @@ index 64f7fc40a6847ebc6c84b3c179614e186f861e1f..3782d329dc62a9e834f16a9009f4102b if (!entity.dead) { entity.checkDespawn(); // Tuinity start - optimise notify() -@@ -955,7 +955,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -936,7 +936,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Tuinity end - optimise notify() } @@ -652,7 +2161,7 @@ index 64f7fc40a6847ebc6c84b3c179614e186f861e1f..3782d329dc62a9e834f16a9009f4102b if (entity1 != null) { if (!entity1.dead && entity1.w(entity)) { continue; -@@ -964,13 +964,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -945,13 +945,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { entity.stopRiding(); } @@ -669,7 +2178,7 @@ index 64f7fc40a6847ebc6c84b3c179614e186f861e1f..3782d329dc62a9e834f16a9009f4102b if (entity.dead) { this.removeEntityFromChunk(entity); this.entitiesById.remove(entity.getId()); // Tuinity -@@ -982,7 +982,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -963,7 +963,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Tuinity end - optimise notify() @@ -678,22 +2187,66 @@ index 64f7fc40a6847ebc6c84b3c179614e186f861e1f..3782d329dc62a9e834f16a9009f4102b } timings.entityTick.stopTiming(); // Spigot -@@ -1414,7 +1414,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -1050,7 +1050,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { + int k = chunkcoordintpair.e(); + GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); + +- gameprofilerfiller.enter("thunder"); ++ //gameprofilerfiller.enter("thunder"); // Akarin - remove caller + final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change + + if (!this.paperConfig.disableThunder && flag && this.V() && this.random.nextInt(100000) == 0) { // Paper - Disable thunder +@@ -1395,7 +1395,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { // Tuinity end } - this.getMethodProfiler().exit(); -+ // this.getMethodProfiler().exit(); // Akarin - remove caller ++ //this.getMethodProfiler().exit(); // Akarin - remove caller } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java.rej b/src/main/java/net/minecraft/server/WorldServer.java.rej deleted file mode 100644 -index 87367c60dd036f8623d6593e73dd2412a477f6a4..0000000000000000000000000000000000000000 +index 6b024f18ebc32034d1d81ef98f7117944bc0cd0a..0000000000000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/WorldServer.java.rej +++ /dev/null -@@ -1,50 +0,0 @@ +@@ -1,94 +0,0 @@ -diff a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java (rejected hunks) +-@@ -887,11 +887,11 @@ public class WorldServer extends World implements GeneratorAccessSeed { +- +- this.N(); +- this.b(); +-- gameprofilerfiller.exitEnter("chunkSource"); +-+ //gameprofilerfiller.exitEnter("chunkSource"); // Akarin - remove caller +- this.timings.chunkProviderTick.startTiming(); // Paper - timings +- this.getChunkProvider().tick(booleansupplier); +- this.timings.chunkProviderTick.stopTiming(); // Paper - timings +-- gameprofilerfiller.exitEnter("tickPending"); +-+ //gameprofilerfiller.exitEnter("tickPending"); // Akarin - remove caller +- timings.scheduledBlocks.startTiming(); // Paper +- if (!this.isDebugWorld()) { +- this.nextTickListBlock.b(); +-@@ -900,17 +900,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { +- timings.scheduledBlocks.stopTiming(); // Paper +- +- // Tuinity - replace logic +-- gameprofilerfiller.exitEnter("raid"); +-+ //gameprofilerfiller.exitEnter("raid"); // Akarin - remove caller +- this.timings.raids.startTiming(); // Paper - timings +- this.persistentRaid.a(); +- this.timings.raids.stopTiming(); // Paper - timings +-- gameprofilerfiller.exitEnter("blockEvents"); +-+ //gameprofilerfiller.exitEnter("blockEvents"); // Akarin - remove caller +- timings.doSounds.startTiming(); // Spigot +- this.ah(); +- timings.doSounds.stopTiming(); // Spigot +- // Tuinity - replace logic +- this.ticking = false; +-- gameprofilerfiller.exitEnter("entities"); +-+ //gameprofilerfiller.exitEnter("entities"); // Akarin - remove caller +- boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players +- +- if (flag3) { -@@ -943,12 +943,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { - } - // CraftBukkit end */ @@ -734,6 +2287,15 @@ index 87367c60dd036f8623d6593e73dd2412a477f6a4..00000000000000000000000000000000 - } - timings.entityTick.stopTiming(); // Spigot - +-@@ -1049,7 +1049,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +- int k = chunkcoordintpair.e(); +- GameProfilerFiller gameprofilerfiller = this.getMethodProfiler(); +- +-- gameprofilerfiller.enter("thunder"); +-+ //gameprofilerfiller.enter("thunder"); // Akarin - remove caller +- final BlockPosition.MutableBlockPosition blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change +- +- if (!this.paperConfig.disableThunder && flag && this.T() && this.random.nextInt(100000) == 0) { // Paper - Disable thunder -@@ -1377,7 +1377,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - } - } @@ -744,10 +2306,10 @@ index 87367c60dd036f8623d6593e73dd2412a477f6a4..00000000000000000000000000000000 - } - diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 1d00832bffc2b6bcc6153b9065a92035ba974138..b3d6e713c2bfa1a0432b4afc3e8c31d4d7ca5844 100644 +index 1d00832bffc2b6bcc6153b9065a92035ba974138..4a24e95f293b9ba0748fdf0bf695be340d449861 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java -@@ -127,4 +127,23 @@ public class PurpurConfig { +@@ -127,4 +127,24 @@ public class PurpurConfig { config.addDefault(path, def); return config.getString(path, config.getString(path)); } @@ -761,6 +2323,7 @@ index 1d00832bffc2b6bcc6153b9065a92035ba974138..b3d6e713c2bfa1a0432b4afc3e8c31d4 + private static void useAlternateKeepAlive() { + useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive); + } ++ + public static boolean dontSendUselessEntityPackets = false; + private static void dontSendUselessEntityPackets() { + dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets); @@ -831,10 +2394,10 @@ index 120d0df27e76c9beef9f09e6cdc0972454fdd4ca..00000000000000000000000000000000 - } - diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a3ba5313b 100644 +index 624dd7632b9fcc1f60174b0dd82ed42dcf345bd1..2b664724a46a7b7221f93da62c6d87b9cac199f5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -836,6 +836,8 @@ public final class CraftServer implements Server { +@@ -835,6 +835,8 @@ public final class CraftServer implements Server { com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper com.tuinity.tuinity.config.TuinityConfig.init((File) console.options.valueOf("tuinity-settings")); // Tuinity - Server Config net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur @@ -843,7 +2406,7 @@ index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a for (WorldServer world : console.getWorlds()) { world.worldDataServer.setDifficulty(config.difficulty); world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); -@@ -872,6 +874,8 @@ public final class CraftServer implements Server { +@@ -871,6 +873,8 @@ public final class CraftServer implements Server { world.paperConfig.init(); // Paper world.tuinityConfig.init(); // Tuinity - Server Config world.purpurConfig.init(); // Purpur @@ -852,7 +2415,7 @@ index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -2253,6 +2257,13 @@ public final class CraftServer implements Server { +@@ -2249,6 +2253,20 @@ public final class CraftServer implements Server { } // Purpur end @@ -862,11 +2425,18 @@ index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a + return com.proximyst.rainforest.RainforestConfig.config; + } + // Rainforest end ++ ++ // Origami start ++ @Override ++ public YamlConfiguration getOrigamiConfig() { ++ return de.minebench.origami.OrigamiConfig.config; ++ } ++ // Origami end + @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -2392,4 +2403,11 @@ public final class CraftServer implements Server { +@@ -2388,4 +2406,11 @@ public final class CraftServer implements Server { return mobGoals; } // Paper end @@ -878,29 +2448,58 @@ index f3a3a42c346353d699163317efad0e88f666924f..8fab87414b78c2e9bbe6fe98c70bfa6a + } + // Purpur end } +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java.rej b/src/main/java/org/bukkit/craftbukkit/CraftServer.java.rej +deleted file mode 100644 +index a3c8dfd94f78b49341e5f5aba1735651096c9d70..0000000000000000000000000000000000000000 +--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java.rej ++++ /dev/null +@@ -1,31 +0,0 @@ +-diff a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java (rejected hunks) +-@@ -848,6 +848,7 @@ public final class CraftServer implements Server { +- +- org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot +- com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper +-+ com.proximyst.rainforest.RainforestConfig.init((File) console.options.valueOf("rainforest-settings")); // Rainforest +- for (WorldServer world : console.getWorlds()) { +- world.worldDataServer.setDifficulty(config.difficulty); +- world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); +-@@ -882,6 +883,7 @@ public final class CraftServer implements Server { +- } +- world.spigotConfig.init(); // Spigot +- world.paperConfig.init(); // Paper +-+ world.rainforestConfig.init(); // Rainforest +- } +- +- Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper +-@@ -2238,6 +2240,13 @@ public final class CraftServer implements Server { +- return com.destroystokyo.paper.PaperConfig.config; +- } +- +-+ // Rainforest start +-+ @Override +-+ public YamlConfiguration getRainforestConfig() { +-+ return com.proximyst.rainforest.RainforestConfig.config; +-+ } +-+ // Rainforest end +-+ +- @Override +- public void restart() { +- org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index af1d37720fe8ea68bea8cad94ddf4ed907f98696..73a36683e386d9e8e917b6ac04262aae3e3d3b69 100644 +index 25f12589ccf3458576b8653a637b6f83eb633630..d6c82bd0afa43a4afcbc7029622c3915fa39bcc9 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -154,6 +154,30 @@ public class Main { +@@ -154,6 +154,22 @@ public class Main { .describedAs("Yml file"); // Purpur end -+ // Origami Start - Server Config -+ acceptsAll(asList("origami", "origami-settings"), "File for origami settings") -+ .withRequiredArg() -+ .ofType(File.class) -+ .defaultsTo(new File("origami.yml")) -+ .describedAs("Yml file"); -+ // Origami end - Server Config -+ -+ // Purpur Start -+ acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") ++ // Origami start - Server Config ++ acceptsAll(asList("origami", "origami-settings"), "File for origami settings") + .withRequiredArg() + .ofType(File.class) -+ .defaultsTo(new File("purpur.yml")) ++ .defaultsTo(new File("origami.yml")) + .describedAs("Yml file"); -+ // Purpur end ++ // Origami end - Server Config + + // Rainforest start + acceptsAll(asList("rainforest", "rainforest-settings"), "File for rainforest settings") @@ -913,3 +2512,66 @@ index af1d37720fe8ea68bea8cad94ddf4ed907f98696..73a36683e386d9e8e917b6ac04262aae // Paper start acceptsAll(asList("server-name"), "Name of the server") .withRequiredArg() +diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java.rej b/src/main/java/org/bukkit/craftbukkit/Main.java.rej +deleted file mode 100644 +index 916603085d652444027e4513b77293ece84a6c4f..0000000000000000000000000000000000000000 +--- a/src/main/java/org/bukkit/craftbukkit/Main.java.rej ++++ /dev/null +@@ -1,16 +0,0 @@ +-diff a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java (rejected hunks) +-@@ -139,6 +139,14 @@ public class Main { +- .describedAs("Yml file"); +- // Paper end +- +-+ // Rainforest start +-+ acceptsAll(asList("rainforest", "rainforest-settings"), "File for rainforest settings") +-+ .withRequiredArg() +-+ .ofType(File.class) +-+ .defaultsTo(new File("rainforest.yml")) +-+ .describedAs("Yml file"); +-+ // Rainforest end +-+ +- // Paper start +- acceptsAll(asList("server-name"), "Name of the server") +- .withRequiredArg() +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +index 744b2a00fa0743598cabb46c539ae65238cdc736..0677ff98d530da5d4ae2194ebd0c229298d594a6 100644 +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +@@ -670,8 +670,12 @@ public class CraftBlock implements Block { + + // Modelled off EntityHuman#hasBlock + if (item == null || !iblockdata.isRequiresSpecialTool() || nms.canDestroySpecialBlock(iblockdata)) { +- return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms) +- .stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList()); ++ List list = new ArrayList<>(); ++ for (net.minecraft.server.ItemStack itemStack : net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)) { ++ ItemStack stack = CraftItemStack.asBukkitCopy(itemStack); ++ list.add(stack); ++ } ++ return list; + } else { + return Collections.emptyList(); + } +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java.rej b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java.rej +deleted file mode 100644 +index a0c4f6c35175538d82f4019f306aeca122522e20..0000000000000000000000000000000000000000 +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java.rej ++++ /dev/null +@@ -1,16 +0,0 @@ +-diff a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java (rejected hunks) +-@@ -675,8 +677,12 @@ public class CraftBlock implements Block { +- +- // Modelled off EntityHuman#hasBlock +- if (item == null || !iblockdata.isAlwaysDestroyable() || nms.canDestroySpecialBlock(iblockdata)) { +-- return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms) +-- .stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList()); +-+ List list = new ArrayList<>(); +-+ for (net.minecraft.server.ItemStack itemStack : net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)) { +-+ ItemStack stack = CraftItemStack.asBukkitCopy(itemStack); +-+ list.add(stack); +-+ } +-+ return list; +- } else { +- return Collections.emptyList(); +- } diff --git a/patches/server/0002-Modify-POM.patch b/patches/server/0002-Modify-POM.patch index eda80e82..eeff460f 100644 --- a/patches/server/0002-Modify-POM.patch +++ b/patches/server/0002-Modify-POM.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Modify POM diff --git a/pom.xml b/pom.xml -index 6fd59681784a5cc369f4903b4da0d11174b805f2..e7f20c5654caa038b92963c45fc79747bd49beb5 100644 +index ee19a287443127e19db8f01a826490d506553964..09a72ed459cfb949ef59de7ad941698a5da80d3c 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,11 @@ @@ -15,11 +15,11 @@ index 6fd59681784a5cc369f4903b4da0d11174b805f2..e7f20c5654caa038b92963c45fc79747 - tuinity + yatopia jar - 1.16.1-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT - Tuinity-Server - https://github.com/Spottedleaf/Tuinity + Yatopia-Server -+ https://github.com/tr7zw/Yatopia ++ https://github.com/YatopiaMC/Yatopia @@ -44,10 +44,10 @@ index 6fd59681784a5cc369f4903b4da0d11174b805f2..e7f20c5654caa038b92963c45fc79747 ${project.version} compile -@@ -149,6 +149,15 @@ - - Please see https://www.spigotmc.org/go/maven for more information. - --> +@@ -153,6 +153,15 @@ + spigotmc-public + https://hub.spigotmc.org/nexus/content/groups/public/ + + + + destroystokyo-repo @@ -57,9 +57,9 @@ index 6fd59681784a5cc369f4903b4da0d11174b805f2..e7f20c5654caa038b92963c45fc79747 + aikar + https://repo.aikar.co/nexus/content/repositories/aikar/ + - - spigotmc-public - https://hub.spigotmc.org/nexus/content/groups/public/ + + + @@ -164,15 +173,15 @@ @@ -67,7 +67,7 @@ index 6fd59681784a5cc369f4903b4da0d11174b805f2..e7f20c5654caa038b92963c45fc79747 - tuinity-${minecraft.version} - install + yatopia-${minecraft.version} -+ clean install ++ clean install com.lukegb.mojo @@ -75,7 +75,7 @@ index 6fd59681784a5cc369f4903b4da0d11174b805f2..e7f20c5654caa038b92963c45fc79747 1.3 - git-Tuinity- -+ git-Yatopia- ++ git-Yatopia- .. diff --git a/patches/server/0003-Brandings.patch b/patches/server/0003-Brandings.patch index 4d7fa484..d9ee6c01 100644 --- a/patches/server/0003-Brandings.patch +++ b/patches/server/0003-Brandings.patch @@ -18,7 +18,7 @@ index 74ed02fa9296583977bb721014b10ff8b708b43c..a13c7b2b5bc79ecaea404779149ed02c ); diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java new file mode 100644 -index 0000000000000000000000000000000000000000..dfa51d6f170ec4fb010dce909c3fccb6c726deb4 +index 0000000000000000000000000000000000000000..84bc8f6586fdbb44b839a8963f721d8ff0792fcc --- /dev/null +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java @@ -0,0 +1,96 @@ @@ -41,7 +41,7 @@ index 0000000000000000000000000000000000000000..dfa51d6f170ec4fb010dce909c3fccb6 + +public class YatopiaVersionFetcher implements VersionFetcher { + -+ private static final String GITHUB_BRANCH_NAME = "ver/1.16.1"; ++ private static final String GITHUB_BRANCH_NAME = "ver/1.16.2"; + + @Override + public long getCacheTime() { @@ -52,7 +52,7 @@ index 0000000000000000000000000000000000000000..dfa51d6f170ec4fb010dce909c3fccb6 + @Override + public String getVersionMessage(@Nonnull String serverVersion) { + String[] parts = serverVersion.substring("git-Yatopia-".length()).split("[-\\s]"); -+ String updateMessage = getUpdateStatusMessage("tr7zw/Yatopia", GITHUB_BRANCH_NAME, parts[0]); ++ String updateMessage = getUpdateStatusMessage("YatopiaMC/Yatopia", GITHUB_BRANCH_NAME, parts[0]); + String history = getHistory(); + return history != null ? history + "\n" + updateMessage : updateMessage; + } @@ -120,10 +120,10 @@ index 0000000000000000000000000000000000000000..dfa51d6f170ec4fb010dce909c3fccb6 +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5960ed2e91008b363dad900c72064055413eafd9..ee6a2dbc1306871d9ba621f199054befb09744c2 100644 +index fb5d581fa1ded44fb87fad8fcb4994955c2e4a94..26234861e38b4d724a46afeb5428272f14e9f700 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1515,7 +1515,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant 0 && args[0].equals("mem") && sender.hasPermission("bukkit.command.tpsmemory")) { sender.sendMessage(ChatColor.GOLD + "Current Memory Usage: " + ChatColor.GREEN + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (1024 * 1024)) + "/" + (Runtime.getRuntime().totalMemory() / (1024 * 1024)) + " mb (Max: " + (Runtime.getRuntime().maxMemory() / (1024 * 1024)) + " mb)"); if (!hasShownMemoryWarning) { +@@ -52,4 +52,12 @@ public class TicksPerSecondCommand extends Command + return ( ( tps > 18.0 ) ? ChatColor.GREEN : ( tps > 16.0 ) ? ChatColor.YELLOW : ChatColor.RED ).toString() + + ( ( tps > 21.0 ) ? "*" : "" ) + Math.min( Math.round( tps * 100.0 ) / 100.0, 20.0 ); // Paper - only print * at 21, we commonly peak to 20.02 as the tick sleep is not accurate enough, stop the noise + } ++ ++ // Yatopia start ++ private static String format(long ms) ++ { ++ ChatColor startingColor = ms < 40 ? ChatColor.GREEN : ( ms < 50 ) ? ChatColor.YELLOW : ChatColor.RED; ++ return startingColor.toString() + Long.toString( ms ) + ChatColor.GOLD + "ms"; ++ } ++ // Yatopia end + } diff --git a/patches/server/0006-Add-config-Yatopia-command-and-basic-settings.patch b/patches/server/0006-Add-config-Yatopia-command-and-basic-settings.patch index 138d8e13..323de6e7 100644 --- a/patches/server/0006-Add-config-Yatopia-command-and-basic-settings.patch +++ b/patches/server/0006-Add-config-Yatopia-command-and-basic-settings.patch @@ -5,37 +5,39 @@ Subject: [PATCH] Add config Yatopia command and basic settings diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -index 88513b8830ea666ddf831771680b6e76e7cf95f0..6a110318441a16cc3ff7dfa2364768279b16358f 100644 +index b67f05f290db653cf75a89e85bd3decb5044a1e0..11758b6b158d971b9beb1b609d7513dab46be525 100644 --- a/src/main/java/co/aikar/timings/TimingsExport.java +++ b/src/main/java/co/aikar/timings/TimingsExport.java @@ -232,6 +232,7 @@ public class TimingsExport extends Thread { pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Tuinity - add config to timings report pair("tuinity", mapAsJSON(Bukkit.spigot().getTuinityConfig(), null)) // Tuinity - add config to timings report - , pair("purpur", mapAsJSON(Bukkit.spigot().getPurpurConfig(), null)) // Yatopia - add config to timings report -+ //, pair("yatopia", mapAsJSON(Bukkit.spigot().getYatopiaConfig(), null)) // Yatopia - add config to timings report + , pair("purpur", mapAsJSON(Bukkit.spigot().getPurpurConfig(), null)) // Purpur - add config to timings report ++ , pair("yatopia", mapAsJSON(Bukkit.spigot().getYatopiaConfig(), null)) // Yatopia - add config to timings report )); new TimingsExport(listeners, parent, history).start(); diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..119c3b693370ab8753791a0396789c8971a05c9b +index 0000000000000000000000000000000000000000..567dd8839173ac74b7dc122c1b677998afe0db5f --- /dev/null +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaCommand.java -@@ -0,0 +1,126 @@ +@@ -0,0 +1,128 @@ +package dev.tr7zw.yatopia; + +import com.google.common.base.Preconditions; ++import com.google.common.collect.Lists; ++ ++import net.minecraft.server.MinecraftKey; ++import net.minecraft.server.MinecraftServer; ++ +import java.io.File; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Locale; -+ +import java.util.function.Function; -+import com.google.common.collect.Lists; -+import net.minecraft.server.MinecraftKey; -+import net.minecraft.server.MinecraftServer; ++ +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; @@ -109,7 +111,7 @@ index 0000000000000000000000000000000000000000..119c3b693370ab8753791a0396789c89 + return false; + } + -+ switch (args[0].toLowerCase(Locale.ENGLISH)) { ++ switch (args[0].toLowerCase(Locale.ENGLISH)) { + case "info": + doInfo(sender); + break; @@ -148,13 +150,12 @@ index 0000000000000000000000000000000000000000..119c3b693370ab8753791a0396789c89 + Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Yatopia config reload complete."); + } +} -\ No newline at end of file diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b467f6293cc +index 0000000000000000000000000000000000000000..0e5f090e4160d08bce0b46ac4cb6d3d3510128bf --- /dev/null +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -@@ -0,0 +1,210 @@ +@@ -0,0 +1,218 @@ +package dev.tr7zw.yatopia; + +import com.google.common.base.Throwables; @@ -173,7 +174,6 @@ index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b46 +import java.util.logging.Level; +import java.util.regex.Pattern; + -+import net.minecraft.server.MinecraftServer; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.configuration.InvalidConfigurationException; @@ -183,8 +183,8 @@ index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b46 + + 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"; ++ + "Yatopia contains many breaking changes and settings, so know what you are doing!\n" ++ + "You have been warned!\n"; + /*========================================================================*/ + public static YamlConfiguration config; + public static int version; // since we're remapping sidestreams' configs we need this public @@ -282,6 +282,7 @@ index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b46 + + private static final Pattern SPACE = Pattern.compile(" "); + private static final Pattern NOT_NUMERIC = Pattern.compile("[^-\\d.]"); ++ + public static int getSeconds(String str) { + str = SPACE.matcher(str).replaceAll(""); + final char unit = str.charAt(str.length() - 1); @@ -293,10 +294,18 @@ index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b46 + num = 0D; + } + switch (unit) { -+ case 'd': num *= (double) 60*60*24; break; -+ case 'h': num *= (double) 60*60; break; -+ case 'm': num *= 60; break; -+ default: case 's': break; ++ case 'd': ++ num *= (double) 60 * 60 * 24; ++ break; ++ case 'h': ++ num *= (double) 60 * 60; ++ break; ++ case 'm': ++ num *= 60; ++ break; ++ default: ++ case 's': ++ break; + } + return (int) num; + } @@ -305,17 +314,17 @@ index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b46 + String time = ""; + + if (seconds > 60 * 60 * 24) { -+ time += TimeUnit.SECONDS.toDays(seconds) + "d"; ++ time += TimeUnit.SECONDS.toDays(seconds) + "d"; + seconds %= 60 * 60 * 24; + } + + if (seconds > 60 * 60) { -+ time += TimeUnit.SECONDS.toHours(seconds) + "h"; ++ time += TimeUnit.SECONDS.toHours(seconds) + "h"; + seconds %= 60 * 60; + } + + if (seconds > 0) { -+ time += TimeUnit.SECONDS.toMinutes(seconds) + "m"; ++ time += TimeUnit.SECONDS.toMinutes(seconds) + "m"; + } + return time; + } @@ -356,18 +365,17 @@ index 0000000000000000000000000000000000000000..5cffd84ed9842bb7d7e56df8ac841b46 + + public static boolean disableEntityStuckChecks = false; + private static void disableEntityStuckChecks() { -+ disableEntityStuckChecks = getBoolean("settings.disableEntityStuckChecks", false); ++ disableEntityStuckChecks = getBoolean("settings.disableEntityStuckChecks", false); + } + + public static boolean disableEntityCollisionboxes = false; + private static void disableEntityCollisionboxes() { -+ disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false); ++ disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false); + } + +} -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 21dc3b9a638c7ca5e2da56c954088f2f367f05e4..c3becefce8143f34ed2b1093dd22227b7309629c 100644 +index a60634fc455e8a59399020689b70eb64b6824d12..cb4a89940cf02de5c3eefc5c746397a931c96b7a 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -181,6 +181,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -385,12 +393,12 @@ index 21dc3b9a638c7ca5e2da56c954088f2f367f05e4..c3becefce8143f34ed2b1093dd22227b + // Yatopia end this.setPVP(dedicatedserverproperties.pvp); this.setAllowFlight(dedicatedserverproperties.allowFlight); - this.setResourcePack(dedicatedserverproperties.resourcePack, this.aY()); + this.setResourcePack(dedicatedserverproperties.resourcePack, this.aZ()); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index dd093e3e624158ff87bad59785ed2496f161f64c..fe0689f6be466d1a2a1ed2b76331272199a0aa0c 100644 +index 6f24467f5d790cbc5726e8ccabe7b0197f7beb21..724aab2cc747940e31c01a52a258e3519e6bda79 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1035,7 +1035,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1033,7 +1033,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke VoxelShapeCollision voxelshapecollision = VoxelShapeCollision.a(this); VoxelShape voxelshape = this.world.getWorldBorder().c(); Stream stream = !this.world.getWorldBorder().isInBounds(axisalignedbb) ? Stream.empty() : Stream.of(voxelshape); // Paper @@ -400,14 +408,14 @@ index dd093e3e624158ff87bad59785ed2496f161f64c..fe0689f6be466d1a2a1ed2b763312721 }); StreamAccumulator streamaccumulator = new StreamAccumulator<>(Stream.concat(stream1, stream)); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 732a7747fd0360deec8237c80bc93fb9f06b5320..c30fee13723cef0f03eb5a87851158cf347fae3c 100644 +index 730a0262f400a9974f89ecdf8b208e54cf7952f6..99c6e562b310e7268eabee0ddd7ec9e6960edd4f 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -266,6 +266,7 @@ public abstract class EntityLiving extends Entity { //this.world.getMethodProfiler().enter("livingEntityBaseTick"); // Akarin - remove caller boolean flag = this instanceof EntityHuman; -+ if(!dev.tr7zw.yatopia.YatopiaConfig.disableEntityStuckChecks) { // Yatopia start ++ if (!dev.tr7zw.yatopia.YatopiaConfig.disableEntityStuckChecks) { // Yatopia if (this.isAlive()) { if (this.inBlock()) { this.damageEntity(DamageSource.STUCK, 1.0F); @@ -415,15 +423,15 @@ index 732a7747fd0360deec8237c80bc93fb9f06b5320..c30fee13723cef0f03eb5a87851158cf } } } -+ } // Yatopia end ++ } // Yatopia if (this.isFireProof() || this.world.isClientSide) { this.extinguish(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 856e0ba3cfe6225d9928cb99b2d7a00a8fcd6a03..6f4c1bbf39af205ad15318eac667117dd332bb12 100644 +index 7a2b16aaf70cefa00beeacf2d6fcd8878bd7f6de..21ce618d91cde3beec4767f89221d0ed14778501 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -838,6 +838,7 @@ public final class CraftServer implements Server { +@@ -837,6 +837,7 @@ public final class CraftServer implements Server { net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur de.minebench.origami.OrigamiConfig.init((File) console.options.valueOf("origami-settings")); // Origami - Server Config com.proximyst.rainforest.RainforestConfig.init((File) console.options.valueOf("rainforest-settings")); // Rainforest @@ -431,11 +439,25 @@ index 856e0ba3cfe6225d9928cb99b2d7a00a8fcd6a03..6f4c1bbf39af205ad15318eac667117d for (WorldServer world : console.getWorlds()) { world.worldDataServer.setDifficulty(config.difficulty); world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals); +@@ -2267,6 +2268,13 @@ public final class CraftServer implements Server { + } + // Origami end + ++ // Yatopia start ++ @Override ++ public YamlConfiguration getYatopiaConfig() { ++ return dev.tr7zw.yatopia.YatopiaConfig.config; ++ } ++ // Yatopia end ++ + @Override + public void restart() { + org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 73a36683e386d9e8e917b6ac04262aae3e3d3b69..60b4c2337e6fdeddfb785e90fa501149af45756c 100644 +index d6c82bd0afa43a4afcbc7029622c3915fa39bcc9..2ba0d89ae1b5d52eec3bd91328088ea2c7249d07 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -178,6 +178,14 @@ public class Main { +@@ -170,6 +170,14 @@ public class Main { .describedAs("Yml file"); // Rainforest end diff --git a/patches/server/0007-Per-entity-type-collision-settings.patch b/patches/server/0007-Per-entity-type-collision-settings.patch index 622a3f1c..d1997281 100644 --- a/patches/server/0007-Per-entity-type-collision-settings.patch +++ b/patches/server/0007-Per-entity-type-collision-settings.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrIvanPlays -Date: Tue, 11 Aug 2020 10:28:04 +0300 +Date: Thu, 13 Aug 2020 15:14:36 +0300 Subject: [PATCH] Per entity (type) collision settings Base patch was the only player collisions patch, the original author of was tr7zw @@ -14,12 +14,12 @@ The whole code is based around 1 class, the EntityFilter class. Whole filtering Co-authored-by: tr7zw diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index e2bbbfeb7e2505479e6a457294aaa550b97319ca..a89209347418b3006745c50043d0abdf2b91babc 100644 +index be8daf986eb9c83bd5974eca78a00f717e4f5061..3d71ee447b0d45c50ed6f2f17ad5184d28d3bc08 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -125,6 +125,37 @@ public final class OrigamiConfig { +@@ -125,6 +125,38 @@ public final class OrigamiConfig { private void fastFeatureSearchDontLoad() { - fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false); + fastFeatureSearchDontLoad = getBoolean("fast-feature-search-dont-load", false); } + + public boolean playerCollisions = true; @@ -34,6 +34,7 @@ index e2bbbfeb7e2505479e6a457294aaa550b97319ca..a89209347418b3006745c50043d0abdf + public boolean waterCreatureCollisions = true; + public boolean waterAmbientCollisions = true; + public boolean allCollisionsEnabled = false; ++ + private void specificCollisionSettings() { + playerCollisions = getBoolean("collisions.players", playerCollisions); + animalCollisions = getBoolean("collisions.animals", animalCollisions); @@ -57,10 +58,10 @@ index e2bbbfeb7e2505479e6a457294aaa550b97319ca..a89209347418b3006745c50043d0abdf diff --git a/src/main/java/dev/tr7zw/yatopia/EntityFilter.java b/src/main/java/dev/tr7zw/yatopia/EntityFilter.java new file mode 100644 -index 0000000000000000000000000000000000000000..e6617833a7aea4803b78bc55b633fac9698688bd +index 0000000000000000000000000000000000000000..3c6dc395dd26b995f63a15e3f9a0a86abe0a5647 --- /dev/null +++ b/src/main/java/dev/tr7zw/yatopia/EntityFilter.java -@@ -0,0 +1,131 @@ +@@ -0,0 +1,130 @@ +package dev.tr7zw.yatopia; + +import com.google.common.base.Predicates; @@ -72,7 +73,6 @@ index 0000000000000000000000000000000000000000..e6617833a7aea4803b78bc55b633fac9 +import net.minecraft.server.EnumCreatureType; +import net.minecraft.server.IEntitySelector; +import net.minecraft.server.ScoreboardTeamBase; -+import net.minecraft.server.World; + +import java.util.function.Predicate; + @@ -193,10 +193,10 @@ index 0000000000000000000000000000000000000000..e6617833a7aea4803b78bc55b633fac9 + } +} diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index c30fee13723cef0f03eb5a87851158cf347fae3c..a4123c2c7dc84803194459895f29d35643b71d04 100644 +index 99c6e562b310e7268eabee0ddd7ec9e6960edd4f..ef9958e3922bc306e38c76eb67ddbd1f38f4c547 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2846,7 +2846,7 @@ public abstract class EntityLiving extends Entity { +@@ -2849,7 +2849,7 @@ public abstract class EntityLiving extends Entity { // Paper - end don't run getEntities if we're not going to use its result // Tuinity start - reduce memory allocation from collideNearby List list = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList(); diff --git a/patches/server/0008-Allow-to-change-the-piston-push-limit.patch b/patches/server/0008-Allow-to-change-the-piston-push-limit.patch index 0c6b5240..ed51eaa3 100644 --- a/patches/server/0008-Allow-to-change-the-piston-push-limit.patch +++ b/patches/server/0008-Allow-to-change-the-piston-push-limit.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Allow to change the piston push limit diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -index 5cffd84ed9842bb7d7e56df8ac841b467f6293cc..57820ad632a253c93436a77c5811c1bc44e3f06a 100644 +index 0e5f090e4160d08bce0b46ac4cb6d3d3510128bf..c0965eb0b6ef615ab89ffc5942d6a4e92a0d4a67 100644 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -@@ -207,4 +207,8 @@ public class YatopiaConfig { - disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false); +@@ -215,4 +215,8 @@ public class YatopiaConfig { + disableEntityCollisionboxes = getBoolean("settings.disableEntityCollisionboxes", false); } + public static int pistonPushLimit = 12; @@ -17,7 +17,6 @@ index 5cffd84ed9842bb7d7e56df8ac841b467f6293cc..57820ad632a253c93436a77c5811c1bc + pistonPushLimit = getInt("settings.pistonPushLimit", 12); + } } -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/PistonExtendsChecker.java b/src/main/java/net/minecraft/server/PistonExtendsChecker.java index 95aeaaf0bb07c5ecf7117dae3382b0f0aac6426f..89385896af6f6088a9749a13ad5c1d0c581fa502 100644 --- a/src/main/java/net/minecraft/server/PistonExtendsChecker.java diff --git a/patches/server/0009-Add-NBT-API-as-first-class-lib.patch b/patches/server/0009-Add-NBT-API-as-first-class-lib.patch index 4b11dfea..439e1f35 100644 --- a/patches/server/0009-Add-NBT-API-as-first-class-lib.patch +++ b/patches/server/0009-Add-NBT-API-as-first-class-lib.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add NBT-API as first-class lib diff --git a/pom.xml b/pom.xml -index e7f20c5654caa038b92963c45fc79747bd49beb5..170a0506c15e9a6d0069cce16a89bdc70d6fc4fd 100644 +index 09a72ed459cfb949ef59de7ad941698a5da80d3c..7a1de791e38507bc53ab232d42712217d0845754 100644 --- a/pom.xml +++ b/pom.xml @@ -311,6 +311,10 @@ diff --git a/patches/server/0010-Player-saving-async-FileIO.patch b/patches/server/0010-Player-saving-async-FileIO.patch index e8bcd220..42aae0c1 100644 --- a/patches/server/0010-Player-saving-async-FileIO.patch +++ b/patches/server/0010-Player-saving-async-FileIO.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player-saving-async-FileIO diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java -index cf539c98073b475eb5b769c8cc11d48a7e6d58f1..93b14f01fd7094175968918f0dcd7c3c921f156a 100644 +index cf539c98073b475eb5b769c8cc11d48a7e6d58f1..b19c702bae3e750bee13c8b1b3eaa62f0d3ba1ae 100644 --- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java +++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java @@ -50,6 +50,7 @@ public class AdvancementDataPlayer { @@ -32,17 +32,17 @@ index cf539c98073b475eb5b769c8cc11d48a7e6d58f1..93b14f01fd7094175968918f0dcd7c3c try { FileOutputStream fileoutputstream = new FileOutputStream(this.f); Throwable throwable = null; -@@ -275,6 +285,8 @@ public class AdvancementDataPlayer { +@@ -275,7 +285,7 @@ public class AdvancementDataPlayer { } catch (IOException ioexception) { AdvancementDataPlayer.LOGGER.error("Couldn't save player advancements to {}", this.f, ioexception); } -+ */ -+ // Yatopia end - +- ++ */ // Yatopia end } + public boolean grantCriteria(Advancement advancement, String s) { diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..68c033e2b8542c5656d5b9534a4953a370999097 100644 +index ce4ebc96c01f3dacf4e4d0569d86f52140440d43..a52c0391b171c8a57de75f87c534ce1e0e78c44a 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -700,11 +700,20 @@ public abstract class EntityHuman extends EntityLiving { @@ -52,7 +52,7 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..68c033e2b8542c5656d5b9534a4953a3 + // Yatopia start + private NBTTagList inventorySnapshot = null; + private NBTTagList enderchestSnapshot = null; -+ public void takeInventorySnapshot() { ++ public void takeSnapshot() { + inventorySnapshot = this.inventory.a(new NBTTagList()); + enderchestSnapshot = this.enderChest.g(); + } @@ -63,7 +63,7 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..68c033e2b8542c5656d5b9534a4953a3 super.saveData(nbttagcompound); nbttagcompound.setInt("DataVersion", SharedConstants.getGameVersion().getWorldVersion()); - nbttagcompound.set("Inventory", this.inventory.a(new NBTTagList())); -+ nbttagcompound.set("Inventory", inventorySnapshot != null ? inventorySnapshot : this.inventory.a(new NBTTagList())); inventorySnapshot = null;// Yatopia ++ nbttagcompound.set("Inventory", inventorySnapshot != null ? inventorySnapshot : this.inventory.a(new NBTTagList())); inventorySnapshot = null; // Yatopia nbttagcompound.setInt("SelectedItemSlot", this.inventory.itemInHandIndex); nbttagcompound.setShort("SleepTimer", (short) this.sleepTicks); nbttagcompound.setFloat("XpP", this.exp); @@ -72,15 +72,15 @@ index e411f6280d07e3f6a953e1fcaffaaa49f85dc7cc..68c033e2b8542c5656d5b9534a4953a3 this.foodData.b(nbttagcompound); this.abilities.a(nbttagcompound); - nbttagcompound.set("EnderItems", this.enderChest.g()); -+ nbttagcompound.set("EnderItems", enderchestSnapshot != null ? enderchestSnapshot : this.enderChest.g()); enderchestSnapshot = null;// Yatopia ++ nbttagcompound.set("EnderItems", enderchestSnapshot != null ? enderchestSnapshot : this.enderChest.g()); enderchestSnapshot = null; // Yatopia if (!this.getShoulderEntityLeft().isEmpty()) { nbttagcompound.set("ShoulderEntityLeft", this.getShoulderEntityLeft()); } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..0b6c62ff0ac75c7ec11de9f8e9745b07ee12664e 100644 +index 4c6e708b6d6af45159315dc6ab5fdf72320d9825..2b7fb65942f5d22737cbbf0f8e7ef2194fc607a2 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -1260,6 +1260,28 @@ public abstract class PlayerList { +@@ -1284,6 +1284,28 @@ public abstract class PlayerList { if (team != null) scoreboard.removeTeam(team); } // Paper end @@ -88,56 +88,48 @@ index 33c40bf94e74d1ee268fb8ffb809f45b31621df9..0b6c62ff0ac75c7ec11de9f8e9745b07 + // Yatopia start - make sure all saves are done + try { + playerFileData.saveThread.shutdown(); -+ boolean done = playerFileData.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS); -+ if (!done) { -+ LOGGER.error("Players did not save completly!"); -+ } -+ ServerStatisticManager.saveThread.shutdown(); -+ done = ServerStatisticManager.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS); -+ if (!done) { -+ LOGGER.error("Stats did not save completly!"); -+ } -+ AdvancementDataPlayer.saveThread.shutdown(); -+ done = AdvancementDataPlayer.saveThread.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS); -+ if (!done) { -+ LOGGER.error("Advancements did not save completly!"); -+ } -+ } catch (InterruptedException e) { -+ e.printStackTrace(); -+ } ++ boolean done = playerFileData.saveThread.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS); ++ if (!done) { ++ LOGGER.error("Players did not save completely!"); ++ } ++ ServerStatisticManager.saveThread.shutdown(); ++ done = ServerStatisticManager.saveThread.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS); ++ if (!done) { ++ LOGGER.error("Stats did not save completely!"); ++ } ++ AdvancementDataPlayer.saveThread.shutdown(); ++ done = AdvancementDataPlayer.saveThread.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS); ++ if (!done) { ++ LOGGER.error("Advancements did not save completely!"); ++ } ++ } catch (InterruptedException e) { ++ e.printStackTrace(); ++ } + // Yatopia end } // Paper end -@@ -1297,13 +1319,13 @@ public abstract class PlayerList { +@@ -1321,13 +1343,13 @@ public abstract class PlayerList { File file = this.server.a(SavedFile.STATS).toFile(); File file1 = new File(file, uuid + ".json"); - if (!file1.exists()) { -+ /*if (!file1.exists()) { // Yatopia dont check for old stats files with sync File IO ++ /*if (!file1.exists()) { // Yatopia - don't check for old stats files with sync file IO File file2 = new File(file, displayName + ".json"); // CraftBukkit if (file2.exists() && file2.isFile()) { file2.renameTo(file1); } - } -+ }*/ ++ }*/ // Yatopia serverstatisticmanager = new ServerStatisticManager(this.server, file1); // this.o.put(uuid, serverstatisticmanager); // CraftBukkit diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java -index 18725272f920eafb655de8b923a8a85dbdc704cf..a734cb47df9cffaee52a5c798bb3324212a004ba 100644 +index 3c3b87e37cbf69c223da007e8b7eb646ec83691e..e2d12750bce9cb5ef087412b03809632a678bc04 100644 --- a/src/main/java/net/minecraft/server/ServerStatisticManager.java +++ b/src/main/java/net/minecraft/server/ServerStatisticManager.java -@@ -20,6 +20,7 @@ import java.util.Map; - import java.util.Map.Entry; - import java.util.Optional; - import java.util.Set; -+ - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -@@ -30,6 +31,7 @@ public class ServerStatisticManager extends StatisticManager { +@@ -30,6 +30,7 @@ public class ServerStatisticManager extends StatisticManager { private final File d; private final Set> e = Sets.newHashSet(); private int f = -300; @@ -145,7 +137,7 @@ index 18725272f920eafb655de8b923a8a85dbdc704cf..a734cb47df9cffaee52a5c798bb33242 public ServerStatisticManager(MinecraftServer minecraftserver, File file) { this.c = minecraftserver; -@@ -41,6 +43,7 @@ public class ServerStatisticManager extends StatisticManager { +@@ -41,6 +42,7 @@ public class ServerStatisticManager extends StatisticManager { this.a.put( wrapper, entry.getValue().intValue() ); } // Spigot end @@ -153,7 +145,7 @@ index 18725272f920eafb655de8b923a8a85dbdc704cf..a734cb47df9cffaee52a5c798bb33242 if (file.isFile()) { try { this.a(minecraftserver.getDataFixer(), org.apache.commons.io.FileUtils.readFileToString(file)); -@@ -50,17 +53,21 @@ public class ServerStatisticManager extends StatisticManager { +@@ -50,17 +52,20 @@ public class ServerStatisticManager extends StatisticManager { ServerStatisticManager.LOGGER.error("Couldn't parse statistics file {}", file, jsonparseexception); } } @@ -173,34 +165,24 @@ index 18725272f920eafb655de8b923a8a85dbdc704cf..a734cb47df9cffaee52a5c798bb33242 ServerStatisticManager.LOGGER.error("Couldn't save stats", ioexception); } - -+ }); -+ // Yatopia end ++ }); // Yatopia end } @Override -@@ -111,7 +118,7 @@ public class ServerStatisticManager extends StatisticManager { +@@ -111,7 +116,7 @@ public class ServerStatisticManager extends StatisticManager { if (nbttagcompound2.hasKeyOfType(s2, 99)) { SystemUtils.a(this.a(statisticwrapper, s2), (statistic) -> { - this.a.put(statistic, nbttagcompound2.getInt(s2)); -+ this.a.put(statistic, nbttagcompound2.getInt(s2) + this.a.getOrDefault(statistic, 0)); // Yatopia fix async load ++ this.a.put(statistic, nbttagcompound2.getInt(s2) + this.a.getOrDefault(statistic, 0)); // Yatopia }, () -> { ServerStatisticManager.LOGGER.warn("Invalid statistic in {}: Don't know what {} is", this.d, s2); }); diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java -index be060f602f53344cf51c22eafacb4dc9219c8856..12ffee96cfbd135f107b1dff7a058177e2649964 100644 +index a959672f5857b987001252c3fd7ace9e83e07c9b..bcae104ac104d6dcdf8653f291b24601247b5a55 100644 --- a/src/main/java/net/minecraft/server/WorldNBTStorage.java +++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java -@@ -9,8 +9,6 @@ import java.io.OutputStream; - import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftPlayer; - // CraftBukkit end - -@@ -19,6 +17,7 @@ public class WorldNBTStorage { +@@ -17,6 +17,7 @@ public class WorldNBTStorage { private static final Logger LOGGER = LogManager.getLogger(); private final File playerDir; protected final DataFixer a; @@ -208,26 +190,21 @@ index be060f602f53344cf51c22eafacb4dc9219c8856..12ffee96cfbd135f107b1dff7a058177 public WorldNBTStorage(Convertable.ConversionSession convertable_conversionsession, DataFixer datafixer) { this.a = datafixer; -@@ -28,11 +27,13 @@ public class WorldNBTStorage { +@@ -26,6 +27,8 @@ public class WorldNBTStorage { public void save(EntityHuman entityhuman) { if(!com.destroystokyo.paper.PaperConfig.savePlayerData) return; // Paper - Make player data saving configurable -+ entityhuman.takeInventorySnapshot(); // Yatopia ++ entityhuman.takeSnapshot(); // Yatopia + saveThread.submit(() -> { // Yatopia try { NBTTagCompound nbttagcompound = entityhuman.save(new NBTTagCompound()); File file = File.createTempFile(entityhuman.getUniqueIDString() + "-", ".dat", this.playerDir); - -- NBTCompressedStreamTools.a(nbttagcompound, (OutputStream) (new FileOutputStream(file))); -+ NBTCompressedStreamTools.a(nbttagcompound, new FileOutputStream(file)); - File file1 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat"); - File file2 = new File(this.playerDir, entityhuman.getUniqueIDString() + ".dat_old"); - -@@ -40,6 +41,7 @@ public class WorldNBTStorage { +@@ -38,7 +41,7 @@ public class WorldNBTStorage { } catch (Exception exception) { WorldNBTStorage.LOGGER.error("Failed to save player data for {}", entityhuman.getName(), exception); // Paper } +- + }); // Yatopia - } + @Nullable diff --git a/patches/server/0011-Modify-default-configs.patch b/patches/server/0011-Modify-default-configs.patch index ff9edb2c..6ab84ecb 100644 --- a/patches/server/0011-Modify-default-configs.patch +++ b/patches/server/0011-Modify-default-configs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Modify default configs diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 29200d223cf7c5948ebd0907ef5a1d9ea8114c81..1febe2aff4eab2f15e9bc4b21e6d0c350f122c87 100644 +index cac599c1e90b261b673acecad7517d91ccd0516a..f6b2d54ae47510714573f06b074bc2b799859b2f 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -201,7 +201,7 @@ public class PaperConfig { @@ -18,10 +18,10 @@ index 29200d223cf7c5948ebd0907ef5a1d9ea8114c81..1febe2aff4eab2f15e9bc4b21e6d0c35 TimingsManager.privacy = getBoolean("timings.server-name-privacy", false); TimingsManager.hiddenConfigs = getList("timings.hidden-config-entries", Lists.newArrayList("database", "settings.bungeecord-addresses")); diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 8cc8134f701d2517d134077b2fcd223106c09478..c2d5f7d22beb4c4829dfcb55fa842eaf727e906c 100644 +index 9b96b1b326169e7963d828eb9d0612c3c8cb428a..dd9e0cfd92114c28eefd3ae77951376f93165a51 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -600,7 +600,7 @@ public class PaperWorldConfig { +@@ -589,7 +589,7 @@ public class PaperWorldConfig { } public boolean cooldownHopperWhenFull = true; diff --git a/patches/server/0012-lithium-MixinDirection.patch b/patches/server/0012-lithium-MixinDirection.patch index e3bbd503..da277823 100644 --- a/patches/server/0012-lithium-MixinDirection.patch +++ b/patches/server/0012-lithium-MixinDirection.patch @@ -7,7 +7,7 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3 you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/EnumDirection.java b/src/main/java/net/minecraft/server/EnumDirection.java -index 5a04654657fa47cfce0709ee75c5ff0dbe07ec8c..1aa9d9fd074c186b209696ee46e0dda181372f4b 100644 +index 36aafc3b71013bcec0f4d956761fc2710848b3fd..259af9622e91b784a0a5de254304a9eab9a09d15 100644 --- a/src/main/java/net/minecraft/server/EnumDirection.java +++ b/src/main/java/net/minecraft/server/EnumDirection.java @@ -20,13 +20,13 @@ public enum EnumDirection implements INamable { diff --git a/patches/server/0014-lithium-enum_values.patch b/patches/server/0014-lithium-enum_values.patch index d2ea38a2..5d0346e3 100644 --- a/patches/server/0014-lithium-enum_values.patch +++ b/patches/server/0014-lithium-enum_values.patch @@ -7,64 +7,66 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3 you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/BlockPiston.java b/src/main/java/net/minecraft/server/BlockPiston.java -index 4f10ca5ada741b4f5ef941bb9d92a2fa6a7c44ff..3d6f8d948d293ca57bf158bcd1f58e289d937fb5 100644 +index 5d3bb5f393a1e0e4a2e8b9a466530a91279697a9..7f084e7f11a829c10d113c7fb39eec0b8ad77080 100644 --- a/src/main/java/net/minecraft/server/BlockPiston.java +++ b/src/main/java/net/minecraft/server/BlockPiston.java -@@ -127,9 +127,9 @@ public class BlockPiston extends BlockDirectional { +@@ -127,9 +127,10 @@ public class BlockPiston extends BlockDirectional { } } -+ private final static EnumDirection[] aenumdirection = EnumDirection.values(); // Yatopia - don't recreate ++ private static final EnumDirection[] aenumdirection = EnumDirection.values(); // Yatopia private boolean a(World world, BlockPosition blockposition, EnumDirection enumdirection) { - EnumDirection[] aenumdirection = EnumDirection.values(); ++ //EnumDirection[] aenumdirection = EnumDirection.values(); // Yatopia int i = aenumdirection.length; int j; -@@ -146,12 +146,11 @@ public class BlockPiston extends BlockDirectional { +@@ -146,12 +147,12 @@ public class BlockPiston extends BlockDirectional { return true; } else { BlockPosition blockposition1 = blockposition.up(); - EnumDirection[] aenumdirection1 = EnumDirection.values(); ++ //EnumDirection[] aenumdirection1 = EnumDirection.values(); // Yatopia - j = aenumdirection1.length; -+ j = aenumdirection.length; ++ j = aenumdirection.length; // Yatopia for (int k = 0; k < j; ++k) { - EnumDirection enumdirection2 = aenumdirection1[k]; -+ EnumDirection enumdirection2 = aenumdirection[k]; ++ EnumDirection enumdirection2 = aenumdirection[k]; // Yatopia if (enumdirection2 != EnumDirection.DOWN && world.isBlockFacePowered(blockposition1.shift(enumdirection2), enumdirection2)) { return true; diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index a4123c2c7dc84803194459895f29d35643b71d04..173d04df808d9ed1fdd4767c25c2ebe130303d7f 100644 +index ef9958e3922bc306e38c76eb67ddbd1f38f4c547..2fee8f65bdf782e150bc277108d72d93320e5ac2 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2566,11 +2566,14 @@ public abstract class EntityLiving extends Entity { - } +@@ -2568,10 +2568,12 @@ public abstract class EntityLiving extends Entity { } -+ /** -+ * @reason Avoid cloning enum values -+ */ -+ private final static EnumItemSlot[] aenumitemslot = EnumItemSlot.values(); ++ private static final EnumItemSlot[] aenumitemslot = EnumItemSlot.values(); // Yatopia ++ @Nullable - private Map r() { + private Map q() { Map map = null; - EnumItemSlot[] aenumitemslot = EnumItemSlot.values(); ++ //EnumItemSlot[] aenumitemslot = EnumItemSlot.values(); // Yatopia int i = aenumitemslot.length; for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/server/EnumAxisCycle.java b/src/main/java/net/minecraft/server/EnumAxisCycle.java -index a7c2543fdd4d5f6a04c45ec42472837ccaea9619..ccfa23af36f66618f4ef18b0d86c86a73de9ea9f 100644 +index a7c2543fdd4d5f6a04c45ec42472837ccaea9619..92ab79532d29341e8840341ff5ee8f5203cb4aad 100644 --- a/src/main/java/net/minecraft/server/EnumAxisCycle.java +++ b/src/main/java/net/minecraft/server/EnumAxisCycle.java -@@ -26,12 +26,21 @@ public enum EnumAxisCycle { +@@ -26,12 +26,24 @@ public enum EnumAxisCycle { @Override public EnumDirection.EnumAxis a(EnumDirection.EnumAxis enumdirection_enumaxis) { - return null.d[Math.floorMod(enumdirection_enumaxis.ordinal() + 1, 3)]; ++ // Yatopia start - replace logic ++ //return null.d[Math.floorMod(enumdirection_enumaxis.ordinal() + 1, 3)]; + switch (enumdirection_enumaxis) { + case X: + return EnumDirection.EnumAxis.Y; @@ -75,20 +77,23 @@ index a7c2543fdd4d5f6a04c45ec42472837ccaea9619..ccfa23af36f66618f4ef18b0d86c86a7 + } + + throw new IllegalArgumentException(); ++ // Yatopia end } @Override public EnumAxisCycle a() { - return null.BACKWARD; -+ return BACKWARD; ++ return BACKWARD; // Yatopia } }, BACKWARD { -@@ -42,12 +51,21 @@ public enum EnumAxisCycle { +@@ -42,12 +54,24 @@ public enum EnumAxisCycle { @Override public EnumDirection.EnumAxis a(EnumDirection.EnumAxis enumdirection_enumaxis) { - return null.d[Math.floorMod(enumdirection_enumaxis.ordinal() - 1, 3)]; ++ // Yatopia start - replaced logic ++ //return null.d[Math.floorMod(enumdirection_enumaxis.ordinal() - 1, 3)]; + switch (enumdirection_enumaxis) { + case X: + return EnumDirection.EnumAxis.Z; @@ -99,28 +104,30 @@ index a7c2543fdd4d5f6a04c45ec42472837ccaea9619..ccfa23af36f66618f4ef18b0d86c86a7 + } + + throw new IllegalArgumentException(); ++ // Yatopia end } @Override public EnumAxisCycle a() { - return null.FORWARD; -+ return FORWARD; ++ return FORWARD; // Yatopia } }; diff --git a/src/main/java/net/minecraft/server/PistonExtendsChecker.java b/src/main/java/net/minecraft/server/PistonExtendsChecker.java -index 89385896af6f6088a9749a13ad5c1d0c581fa502..4fd1a98e8309bec2ef270ac70c4d79d143002b86 100644 +index 89385896af6f6088a9749a13ad5c1d0c581fa502..0da231cb2d33608714c5f45f995a043a4293cafc 100644 --- a/src/main/java/net/minecraft/server/PistonExtendsChecker.java +++ b/src/main/java/net/minecraft/server/PistonExtendsChecker.java -@@ -166,10 +166,10 @@ public class PistonExtendsChecker { +@@ -166,10 +166,11 @@ public class PistonExtendsChecker { this.f.addAll(list1); this.f.addAll(list2); } -+ private final static EnumDirection[] aenumdirection = EnumDirection.values(); // Yatopia - don't recreate ++ private static final EnumDirection[] aenumdirection = EnumDirection.values(); // Yatopia private boolean a(BlockPosition blockposition) { IBlockData iblockdata = this.a.getType(blockposition); - EnumDirection[] aenumdirection = EnumDirection.values(); ++ //EnumDirection[] aenumdirection = EnumDirection.values(); // Yatopia int i = aenumdirection.length; for (int j = 0; j < i; ++j) { diff --git a/patches/server/0015-lithium-MixinGoalSelector.patch b/patches/server/0015-lithium-MixinGoalSelector.patch index 3f21bdcd..9a20d956 100644 --- a/patches/server/0015-lithium-MixinGoalSelector.patch +++ b/patches/server/0015-lithium-MixinGoalSelector.patch @@ -9,15 +9,23 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3 you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index b783028e5526df722d98e4760ffb214d5d2f83dd..0ad38a7b426b8b1e0ae8a98a2cb5b28878ae1249 100644 +index b783028e5526df722d98e4760ffb214d5d2f83dd..9be854ebef1eb23ee4cc5d733e43dfca7d6439f7 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -@@ -27,7 +27,7 @@ public class PathfinderGoalSelector { +@@ -11,6 +11,7 @@ import java.util.function.Supplier; + import java.util.stream.Stream; + import org.apache.logging.log4j.LogManager; + import org.apache.logging.log4j.Logger; ++import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; // Yatopia + + public class PathfinderGoalSelector { + +@@ -27,7 +28,7 @@ public class PathfinderGoalSelector { } }; private final Map c = new EnumMap(PathfinderGoal.Type.class); - private final Set d = Sets.newLinkedHashSet(); public final Set getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public -+ private final Set d = new it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet<>();/* Yatopia better set */ public final Set getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public ++ private final Set d = new ObjectLinkedOpenHashSet<>();/* Yatopia better set */ public final Set getTasks() { return d; }// Paper - OBFHELPER // Paper - private -> public private final Supplier e; private final EnumSet 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 goalTypes = new OptimizedSmallEnumSet<>(PathfinderGoal.Type.class); // Paper - remove streams from pathfindergoalselector diff --git a/patches/server/0016-lithium-MixinLandPathNodeMaker.patch b/patches/server/0016-lithium-MixinLandPathNodeMaker.patch index f44cf71d..3e3aead7 100644 --- a/patches/server/0016-lithium-MixinLandPathNodeMaker.patch +++ b/patches/server/0016-lithium-MixinLandPathNodeMaker.patch @@ -7,80 +7,86 @@ Original code by JellySquid, licensed under GNU Lesser General Public License v3 you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.16.x/fabric (Yarn mappings) diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java -index ec55785af2b432b692d3a3bf4298ffb32489bf3b..4f59e4b31300009f5e7ef8767be6c89d7b449af0 100644 +index 9caf6598f8a267ce057e863a32ee29fa5fdb0641..56da391b4d415630b881cccbaa50507eb2c23cc0 100644 --- a/src/main/java/net/minecraft/server/PathfinderNormal.java +++ b/src/main/java/net/minecraft/server/PathfinderNormal.java -@@ -10,6 +10,11 @@ import javax.annotation.Nullable; +@@ -7,9 +7,15 @@ import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; + import java.util.EnumSet; + import java.util.Iterator; + import javax.annotation.Nullable; ++import it.unimi.dsi.fastutil.objects.Reference2ReferenceMap; // Yatopia ++import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap; // Yatopia public class PathfinderNormal extends PathfinderAbstract { -+ // Yatopia start - this is not thread safe! -+ private static final it.unimi.dsi.fastutil.objects.Reference2ReferenceMap commonTypes = -+ new it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap<>(); -+ // Yatopia end ++ // Yatopia start - this is not thread safe! ++ private static final Reference2ReferenceMap commonTypes = new Reference2ReferenceOpenHashMap<>(); ++ // Yatopia end + protected float j; private final Long2ObjectMap k = new Long2ObjectOpenHashMap(); private final Object2BooleanMap l = new Object2BooleanOpenHashMap(); -@@ -508,13 +513,44 @@ public class PathfinderNormal extends PathfinderAbstract { +@@ -490,9 +496,22 @@ public class PathfinderNormal extends PathfinderAbstract { protected static PathType b(IBlockAccess iblockaccess, BlockPosition blockposition) { IBlockData iblockdata = iblockaccess.getTypeIfLoaded(blockposition); // Paper if (iblockdata == null) return PathType.BLOCKED; // Paper - Block block = iblockdata.getBlock(); - Material material = iblockdata.getMaterial(); -+ // Check early if the block is air as it will always be open regardless of other conditions -+ if(iblockdata.isAir())return PathType.OPEN; -+ -+ // Get the cached type for this block state ++ // Yatopia start - replaced logic ++ //Block block = iblockdata.getBlock(); ++ //Material material = iblockdata.getMaterial(); ++ if (iblockdata.isAir()) return PathType.OPEN; + PathType type = commonTypes.get(iblockdata); -+ -+ // No result has been cached for this block state yet, so calculate and cache it + if (type == null) { -+ commonTypes.put(iblockdata, type = getPathType(iblockaccess, blockposition, iblockdata)); ++ commonTypes.put(iblockdata, type = getPathType(iblockdata)); + } -+ // If the node type is open, it means that we were unable to determine a more specific type, so we need -+ // to check the fallback path. + + if (type == PathType.OPEN) { -+ // This is only ever called in vanilla after all other possibilities are exhausted, but before fluid checks -+ // It should be safe to perform it last in actuality and take advantage of the cache for fluid types as well -+ // since fluids will always pass this check. + if (!iblockdata.a(iblockaccess, blockposition, PathMode.LAND)) { + return PathType.BLOCKED; + } - -- if (iblockdata.isAir()) { -+ // All checks succeed, this path node really is open! - return PathType.OPEN; -- } else if (!iblockdata.a((Tag) TagsBlock.TRAPDOORS) && !iblockdata.a(Blocks.LILY_PAD)) { -- if (iblockdata.a(Blocks.CACTUS)) { + } + -+ // Return the cached value since we found an obstacle earlier ++ /* + if (iblockdata.isAir()) { + return PathType.OPEN; + } else if (!iblockdata.a((Tag) TagsBlock.TRAPDOORS) && !iblockdata.a(Blocks.LILY_PAD)) { +@@ -512,7 +531,38 @@ public class PathfinderNormal extends PathfinderAbstract { + } else { + return PathType.TRAPDOOR; + } ++ */ + return type; -+ ++ // Yatopia end + } + -+ private static PathType getPathType(IBlockAccess iblockaccess, BlockPosition blockposition, -+ IBlockData iblockdata) { -+ Block block = iblockdata.getBlock(); -+ Material material = iblockdata.getMaterial(); -+ ++ // Yatopia start ++ private static PathType getPathType(IBlockData iblockdata) { ++ Block block = iblockdata.getBlock(); + if (!block.a(TagsBlock.TRAPDOORS) && block != Blocks.LILY_PAD) { + if (block == Blocks.FIRE) { + return PathType.DAMAGE_FIRE; + } else if (block == Blocks.CACTUS) { - return PathType.DAMAGE_CACTUS; - } else if (iblockdata.a(Blocks.SWEET_BERRY_BUSH)) { - return PathType.DAMAGE_OTHER; -@@ -540,7 +576,10 @@ public class PathfinderNormal extends PathfinderAbstract { - } else { - Fluid fluid = iblockdata.getFluid(); // Tuinity - remove another getType call - -- return fluid.a((Tag) TagsFluid.WATER) ? PathType.WATER : (fluid.a((Tag) TagsFluid.LAVA) ? PathType.LAVA : PathType.OPEN); -+ if(fluid.a(TagsFluid.WATER))return PathType.WATER; -+ if(fluid.a(TagsFluid.LAVA))return PathType.LAVA; ++ return PathType.DAMAGE_CACTUS; ++ } else if (iblockdata.a(Blocks.SWEET_BERRY_BUSH)) { ++ return PathType.DAMAGE_OTHER; ++ } else if (iblockdata.a(Blocks.HONEY_BLOCK)) { ++ return PathType.STICKY_HONEY; ++ } else if (iblockdata.a(Blocks.COCOA)) { ++ return PathType.COCOA; ++ } else { ++ Fluid fluid = iblockdata.getFluid(); // Tuinity - remove another get type call + -+ return PathType.OPEN; - } - } else { - return PathType.FENCE; ++ if (fluid.a(TagsFluid.WATER)) return PathType.WATER; ++ if (fluid.a(TagsFluid.LAVA)) return PathType.LAVA; ++ ++ return PathType.OPEN; ++ } ++ } else { ++ return PathType.TRAPDOOR; ++ } + } ++ // Yatopia end + + private static boolean a(IBlockData iblockdata) { + return iblockdata.a((Tag) TagsBlock.FIRE) || iblockdata.a(Blocks.LAVA) || iblockdata.a(Blocks.MAGMA_BLOCK) || BlockCampfire.g(iblockdata); diff --git a/patches/server/0017-lithium-MixinBiome.patch b/patches/server/0017-lithium-MixinBiome.patch index 2bd78c7a..015e37b6 100644 --- a/patches/server/0017-lithium-MixinBiome.patch +++ b/patches/server/0017-lithium-MixinBiome.patch @@ -8,7 +8,7 @@ you can find the original code on https://github.com/jellysquid3/lithium-fabric/ diff --git a/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java new file mode 100644 -index 0000000000000000000000000000000000000000..3079549f466a350223c3ee11466432bf3dc4c5b6 +index 0000000000000000000000000000000000000000..15cc7232e4edf6803e4b831ff094a748f95e1f9a --- /dev/null +++ b/src/main/java/me/jellysquid/mods/lithium/common/util/collections/HashedList.java @@ -0,0 +1,171 @@ @@ -183,17 +183,16 @@ index 0000000000000000000000000000000000000000..3079549f466a350223c3ee11466432bf + return new HashedList<>(list, new HashSet<>(list)); // Yatopia - use hashset + } +} -\ No newline at end of file -diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java -index b2b654218382cc2cf1649067cd140b539235e3d2..f7f082c80442cd352e14daa4b199b2f3ad75c22f 100644 ---- a/src/main/java/net/minecraft/server/BiomeBase.java -+++ b/src/main/java/net/minecraft/server/BiomeBase.java -@@ -139,7 +139,7 @@ public class BiomeBase { - for (j = 0; j < i; ++j) { - EnumCreatureType enumcreaturetype = aenumcreaturetype[j]; - -- this.v.put(enumcreaturetype, new MobList()); // Paper -+ this.v.put(enumcreaturetype, me.jellysquid.mods.lithium.common.util.collections.HashedList.wrapper(new MobList())); // Paper // Yatopia - lithium change - } - - } else { +diff --git a/src/main/java/net/minecraft/server/BiomeSettingsMobs.java b/src/main/java/net/minecraft/server/BiomeSettingsMobs.java +index a18ca3f0001a771f21012bd39711f581efb2fef0..0f88b7b38b6191c3adbebdee82427275640c4197 100644 +--- a/src/main/java/net/minecraft/server/BiomeSettingsMobs.java ++++ b/src/main/java/net/minecraft/server/BiomeSettingsMobs.java +@@ -113,7 +113,7 @@ public class BiomeSettingsMobs { + private final Map> a = (Map) Stream.of(EnumCreatureType.values()).collect(Maps.toImmutableEnumMap((enumcreaturetype) -> { + return enumcreaturetype; + }, (enumcreaturetype) -> { +- return new MobList(); // Use MobList instead of ArrayList ++ return me.jellysquid.mods.lithium.common.util.collections.HashedList.wrapper(new MobList()); // Use MobList instead of ArrayList // Yatopia - hashedlist + })); + // Paper end + private final Map, BiomeSettingsMobs.b> b = Maps.newLinkedHashMap(); diff --git a/patches/server/0018-Item-stuck-sleep-config.patch b/patches/server/0018-Item-stuck-sleep-config.patch index a7619150..5bfd64e8 100644 --- a/patches/server/0018-Item-stuck-sleep-config.patch +++ b/patches/server/0018-Item-stuck-sleep-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Item stuck sleep config diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -index 57820ad632a253c93436a77c5811c1bc44e3f06a..c7ef8b2cd84d66b955bdbabdecfc18c1d4cc4444 100644 +index c0965eb0b6ef615ab89ffc5942d6a4e92a0d4a67..fb7551f79f3e2e7e834359ef701ff7e568882a7f 100644 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -@@ -211,4 +211,9 @@ public class YatopiaConfig { +@@ -219,4 +219,9 @@ public class YatopiaConfig { private static void pistonPushLimit() { pistonPushLimit = getInt("settings.pistonPushLimit", 12); } @@ -18,17 +18,16 @@ index 57820ad632a253c93436a77c5811c1bc44e3f06a..c7ef8b2cd84d66b955bdbabdecfc18c1 + itemStuckSleepTicks = getInt("settings.itemStuckSleepTicks", 1); + } } -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java -index ca9c12151b193c05e42bbb99733f6e3ed2bae221..6869b688810cc72da01f164db1f0853d59752597 100644 +index 732f09319a309b92d74e6536e29d30be917be455..4ba28ab7f96dd83edc552a9c81d79b3c0061dc2c 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java -@@ -81,7 +81,7 @@ public class EntityItem extends Entity { +@@ -82,7 +82,7 @@ public class EntityItem extends Entity { if (this.world.isClientSide) { this.noclip = false; - } else { -+ } else if(!this.onGround || this.noclip || this.ticksLived % dev.tr7zw.yatopia.YatopiaConfig.itemStuckSleepTicks == 0) { // Yatopia ++ } else if (!this.onGround || this.noclip || this.ticksLived % dev.tr7zw.yatopia.YatopiaConfig.itemStuckSleepTicks == 0) { // Yatopia this.noclip = !this.world.getCubes(this); if (this.noclip) { - this.k(this.locX(), (this.getBoundingBox().minY + this.getBoundingBox().maxY) / 2.0D, this.locZ()); + this.l(this.locX(), (this.getBoundingBox().minY + this.getBoundingBox().maxY) / 2.0D, this.locZ()); diff --git a/patches/server/0019-Option-for-simpler-Villagers.patch b/patches/server/0019-Option-for-simpler-Villagers.patch index 6ba67b61..50e732b7 100644 --- a/patches/server/0019-Option-for-simpler-Villagers.patch +++ b/patches/server/0019-Option-for-simpler-Villagers.patch @@ -5,64 +5,55 @@ Subject: [PATCH] Option for simpler Villagers diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -index c7ef8b2cd84d66b955bdbabdecfc18c1d4cc4444..d8e3bbb2ffbf20a111af3fd7a019daf1d5a7dead 100644 +index fb7551f79f3e2e7e834359ef701ff7e568882a7f..0566088538c2b99ff74a408b67a9edee4751f904 100644 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -@@ -216,4 +216,13 @@ public class YatopiaConfig { +@@ -224,4 +224,11 @@ public class YatopiaConfig { private static void itemStuckSleepTicks() { itemStuckSleepTicks = getInt("settings.itemStuckSleepTicks", 1); } -+ public static boolean simplerVillagerBehavior = false; -+ private static void simplerVillagerBehavior() { -+ simplerVillagerBehavior = getBoolean("settings.villager.simplerVillagerBehavior", false); -+ } + ++ public static boolean simplerVillagerBehavior = false; + public static boolean villagersHideAtNight = false; -+ private static void villagersHideAtNight() { ++ private static void villagerSettings() { ++ simplerVillagerBehavior = getBoolean("settings.villager.simplerVillagerBehavior", false); + villagersHideAtNight = getBoolean("settings.villager.villagersHideAtNight", false); + } } -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index d906c5e530c2e7f779df079223aee619a73b5d51..1ecb19c1c81456148af4a9edd59059356c3c0b94 100644 +index 1b2e395cc141bf700e1f7c24fe8ee7dc68b25513..416d421c3ff49125cd540a6e360523775f034689 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java -@@ -7,6 +7,8 @@ import com.mojang.datafixers.util.Pair; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.DynamicOps; -+ -+import dev.tr7zw.yatopia.YatopiaConfig; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; - - import java.util.*; -@@ -27,6 +29,7 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent; +@@ -27,6 +27,7 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent; public class EntityVillager extends EntityVillagerAbstract implements ReputationHandler, VillagerDataHolder { -+ private boolean simplerVillagerBehavior = dev.tr7zw.yatopia.YatopiaConfig.simplerVillagerBehavior; // Yatopia - get this during villager creation so a reloaded config doesn't get them into an invalid state - private static final DataWatcherObject by = DataWatcher.a(EntityVillager.class, DataWatcherRegistry.q); - public static final Map bw = ImmutableMap.of(Items.BREAD, 4, Items.POTATO, 1, Items.CARROT, 1, Items.BEETROOT, 1); - private static final Set bz = ImmutableSet.of(Items.BREAD, Items.POTATO, Items.CARROT, Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT, new Item[]{Items.BEETROOT_SEEDS}); -@@ -63,12 +66,49 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation - public EntityVillager(EntityTypes entitytypes, World world, VillagerType villagertype) { ++ private boolean simplerVillagerBehavior = dev.tr7zw.yatopia.YatopiaConfig.simplerVillagerBehavior; // Yatopia - so we don't make them bork upon reload + private static final DataWatcherObject br = DataWatcher.a(EntityVillager.class, DataWatcherRegistry.q); + public static final Map bp = ImmutableMap.of(Items.BREAD, 4, Items.POTATO, 1, Items.CARROT, 1, Items.BEETROOT, 1); + private static final Set bs = ImmutableSet.of(Items.BREAD, Items.POTATO, Items.CARROT, Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT, new Item[]{Items.BEETROOT_SEEDS}); +@@ -64,12 +65,52 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation super(entitytypes, world); - this.bF = new Reputation(); -+ if (!simplerVillagerBehavior) { + this.by = new Reputation(); ((Navigation) this.getNavigation()).a(true); ++ if (!simplerVillagerBehavior) { // Yatopia this.getNavigation().d(true); -+ } else { + this.setCanPickupLoot(true); ++ } else { // Yatopia start + initPathfinder(); + } - this.setCanPickupLoot(true); ++ // Yatopia end this.setVillagerData(this.getVillagerData().withType(villagertype).withProfession(VillagerProfession.NONE)); this.brainTickOffset = getRandom().nextInt(100); // Purpur } -+ //Yatopia start -+ + ++ // Yatopia start + @Override + protected void initPathfinder() { -+ if (!simplerVillagerBehavior) return; ++ if (!simplerVillagerBehavior) { ++ // safety ++ return; ++ } + this.goalSelector.a(0, new PathfinderGoalFloat(this)); + 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) -> { @@ -90,19 +81,19 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..1ecb19c1c81456148af4a9edd5905935 + this.goalSelector.a(9, new PathfinderGoalInteract(this, EntityHuman.class, 3.0F, 1.0F)); + this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 8.0F)); + } -+ //Yatopia end - ++ @Override public BehaviorController getBehaviorController() { -@@ -82,6 +122,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + return (BehaviorController) super.getBehaviorController(); // CraftBukkit - decompile error +@@ -82,6 +123,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @Override protected BehaviorController a(Dynamic dynamic) { -+ if(simplerVillagerBehavior)return super.a(dynamic); //Yatopia Don't use behaviorcontroller for simple Villagers ++ if (simplerVillagerBehavior) return super.a(dynamic); // Yatopia BehaviorController behaviorcontroller = this.cJ().a(dynamic); this.a(behaviorcontroller); -@@ -159,15 +200,47 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -159,6 +201,27 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation super.inactiveTick(); } // Spigot End @@ -130,57 +121,49 @@ index d906c5e530c2e7f779df079223aee619a73b5d51..1ecb19c1c81456148af4a9edd5905935 @Override protected void mobTick() { mobTick(false); } - protected void mobTick(boolean inactive) { +@@ -168,6 +231,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0; + if (world.getMinecraftServer().lagging ? tick : world.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick) + // Purpur end + // Yatopia start + if (simplerVillagerBehavior && this.getVillagerData().getProfession() == VillagerProfession.NONE) { + this.setVillagerData(this.getVillagerData().withProfession(getRandomProfession())); + } -+ if (simplerVillagerBehavior) { -+ if (canRefresh()) { -+ restUses(); -+ } -+ } ++ if (simplerVillagerBehavior && canRefresh()) restUses(); ++ if (simplerVillagerBehavior) return; + // Yatopia end - //this.world.getMethodProfiler().enter("villagerBrain"); // Akarin - remove caller - // Purpur start - boolean tick = (world.getTime() + brainTickOffset) % world.purpurConfig.villagerBrainTicks == 0; - if (((WorldServer) world).getMinecraftServer().lagging ? tick : world.purpurConfig.villagerUseBrainTicksOnlyWhenLagging || tick) - // Purpur end -+ if(!simplerVillagerBehavior) // Yatopia if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper - if (this.bM) { - this.bM = false; -@@ -298,6 +371,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation - return true; + //this.world.getMethodProfiler().exit(); // Akarin - remove caller + if (this.bF) { +@@ -333,6 +403,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + return this.bD == 0 || this.bD < 2 && this.world.getTime() > this.bC + 2400L; } -+ public void restUses() {fb();} // Yatopia obf helper -+ - public void fb() { - this.fp(); - Iterator iterator = this.getOffers().iterator(); -@@ -332,6 +407,8 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation - return this.bK == 0 || this.bK < 2 && this.world.getTime() > this.bJ + 2400L; - } - -+ public boolean canRefresh() {return fc();} // Yatopia obf helper -+ ++ public final boolean canRefresh() { return fc(); } // Yatopia - OBFHELPER public boolean fc() { - long i = this.bJ + 12000L; + long i = this.bC + 12000L; long j = this.world.getTime(); -@@ -579,6 +656,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -355,6 +426,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + return this.fn() && this.fm(); + } + ++ public final void restUses() { fo(); } // Yatopia - OBFHELPER + private void fo() { + int i = 2 - this.bD; + +@@ -585,6 +657,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation } private void a(Entity entity) { -+ if (simplerVillagerBehavior)return; // Yatopia ++ if (simplerVillagerBehavior) return; // Yatopia if (this.world instanceof WorldServer) { - Optional> optional = this.bn.getMemory(MemoryModuleType.VISIBLE_MOBS); + Optional> optional = this.bg.getMemory(MemoryModuleType.VISIBLE_MOBS); -@@ -604,6 +682,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -610,6 +683,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation } public void a(MemoryModuleType memorymoduletype) { -+ if (simplerVillagerBehavior)return; // Yatopia ++ if (simplerVillagerBehavior) return; // Yatopia if (this.world instanceof WorldServer) { MinecraftServer minecraftserver = ((WorldServer) this.world).getMinecraftServer(); diff --git a/patches/server/0020-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch b/patches/server/0020-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch index a5e4d579..ca418f76 100644 --- a/patches/server/0020-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch +++ b/patches/server/0020-Heavily-optimize-furnance-fuel-and-recipe-lookups.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Heavily optimize furnance fuel and recipe lookups diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java -index c2af174e639396ac70eb7b520fdd641b1d2c67e6..da718601eb77330ff3e5eb25924d2820e3f8acaa 100644 +index 66586a0799d669ed860880862173c6ebd0fa76ef..018f926b71b65dc0bbe56070ba2d83af48e40383 100644 --- a/src/main/java/net/minecraft/server/CraftingManager.java +++ b/src/main/java/net/minecraft/server/CraftingManager.java @@ -83,7 +83,22 @@ public class CraftingManager extends ResourceDataJson { @@ -33,10 +33,10 @@ index c2af174e639396ac70eb7b520fdd641b1d2c67e6..da718601eb77330ff3e5eb25924d2820 public > List a(Recipes recipes) { diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java -index acc533ca8ad612cc439208f4adf6e3d3289c92c7..7637d86ccafbf323f4edaab758fa9fc3cf657841 100644 +index 99bd8626b28a837f0da2268d89fddb6d28b2a944..cee623e5711565703fb16e7ad057e3950fb49e79 100644 --- a/src/main/java/net/minecraft/server/TileEntityFurnace.java +++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java -@@ -99,7 +99,14 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I +@@ -83,7 +83,14 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I this.c = recipes; } @@ -51,7 +51,7 @@ index acc533ca8ad612cc439208f4adf6e3d3289c92c7..7637d86ccafbf323f4edaab758fa9fc3 Map map = Maps.newLinkedHashMap(); a(map, (IMaterial) Items.LAVA_BUCKET, 20000); -@@ -162,6 +169,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I +@@ -146,6 +153,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I a(map, (IMaterial) Blocks.FLETCHING_TABLE, 300); a(map, (IMaterial) Blocks.SMITHING_TABLE, 300); a(map, (IMaterial) Blocks.COMPOSTER, 300); @@ -59,7 +59,7 @@ index acc533ca8ad612cc439208f4adf6e3d3289c92c7..7637d86ccafbf323f4edaab758fa9fc3 return map; } -@@ -615,4 +623,17 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I +@@ -599,4 +607,17 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I } } diff --git a/patches/server/0021-Optimize-Hopper-logic.patch b/patches/server/0021-Optimize-Hopper-logic.patch index 22aaae80..93e719af 100644 --- a/patches/server/0021-Optimize-Hopper-logic.patch +++ b/patches/server/0021-Optimize-Hopper-logic.patch @@ -5,131 +5,121 @@ Subject: [PATCH] Optimize Hopper logic diff --git a/src/main/java/net/minecraft/server/BlockDropper.java b/src/main/java/net/minecraft/server/BlockDropper.java -index 1ce89c28c2b54278dc8f1c17f2d0ccb743a27b34..9c0817d03f88af4c267cd91cd750e861febac4b9 100644 +index 65c212690d8ba7c8ea55d4d3b6af1ba3d9f4a7f6..da8c0ee5184a234f485c2f05e2c6edd965576cbe 100644 --- a/src/main/java/net/minecraft/server/BlockDropper.java +++ b/src/main/java/net/minecraft/server/BlockDropper.java @@ -36,7 +36,7 @@ public class BlockDropper extends BlockDispenser { if (!itemstack.isEmpty()) { - EnumDirection enumdirection = (EnumDirection) world.getType(blockposition).get(BlockDropper.FACING); -- IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection)); -+ IInventory iinventory = TileEntityHopper.b(world, blockposition.shift(enumdirection), false); // Yatopia + EnumDirection enumdirection = (EnumDirection) worldserver.getType(blockposition).get(BlockDropper.FACING); +- IInventory iinventory = TileEntityHopper.b((World) worldserver, blockposition.shift(enumdirection)); ++ IInventory iinventory = TileEntityHopper.b((World) worldserver, blockposition.shift(enumdirection), false); // Yatopia ItemStack itemstack1; if (iinventory == null) { diff --git a/src/main/java/net/minecraft/server/BlockHopper.java b/src/main/java/net/minecraft/server/BlockHopper.java -index a29294fbc7cd6fcfff0df9eadd11de3bd7f1405e..77f279fc29955ba6d78271f71df2ac12b7186d60 100644 +index a29294fbc7cd6fcfff0df9eadd11de3bd7f1405e..2f66740de68667e5c0054a0bc7990256163087cd 100644 --- a/src/main/java/net/minecraft/server/BlockHopper.java +++ b/src/main/java/net/minecraft/server/BlockHopper.java @@ -110,6 +110,12 @@ public class BlockHopper extends BlockTileEntity { @Override public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) { this.a(world, blockposition, iblockdata); -+ // Yatopia start -+ TileEntity tileEntity = world.getTileEntity(blockposition); -+ if (tileEntity instanceof TileEntityHopper) { -+ ((TileEntityHopper)tileEntity).flushCaches(); -+ } -+ // Yatopia end ++ // Yatopia start ++ TileEntity tileEntity = world.getTileEntity(blockposition); ++ if (tileEntity instanceof TileEntityHopper) { ++ ((TileEntityHopper) tileEntity).flushCaches(); ++ } ++ // Yatopia end } private void a(World world, BlockPosition blockposition, IBlockData iblockdata) { diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java -index 3ff61141aede4b5a09bf83153222de0d14db5ad0..e386ffda975b8a0adc218fd47a02e5b38d12e79d 100644 +index 95bede605c6401af10f18b641cd12c9d8ec2f207..b4ec6fb407f86bd03d003d9b555df0c58cd6ced5 100644 --- a/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import java.util.Iterator; - import java.util.List; -+import java.util.Optional; - import java.util.function.Supplier; - import java.util.stream.Collectors; - import java.util.stream.IntStream; -@@ -661,14 +662,48 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -661,14 +661,47 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi @Nullable private IInventory l() { + // Yatopia start -+ if(this.cachedPush != null) { -+ return this.cachedPush; -+ } -+ // Yatopia end ++ if (cachedPush != null) { ++ return cachedPush; ++ } ++ // Yatopia end EnumDirection enumdirection = (EnumDirection) this.getBlock().get(BlockHopper.FACING); - return b(this.getWorld(), this.position.shift(enumdirection)); -+ IInventory tmp = b(this.getWorld(), this.position.shift(enumdirection), this.cachedPushAir); -+ // Yatopia start ++ // Yatopia start - replace logic ++ //return b(this.getWorld(), this.position.shift(enumdirection)); ++ IInventory tmp = b(this.getWorld(), this.position.shift(enumdirection), cachedPushAir); + if (tmp != null && !(tmp instanceof IWorldInventory) && !(tmp instanceof Entity)) { -+ this.cachedPush = tmp; ++ this.cachedPush = tmp; + } else { -+ if(tmp == null) { -+ this.cachedPushAir = true; -+ } -+ return tmp; ++ cachedPushAir = true; ++ return tmp; + } + if (this.cachedPush == null) { -+ this.cachedPushAir = true; ++ this.cachedPushAir = true; + } -+ // Yatopia end + return this.cachedPush; ++ // Yatopia end } @Nullable public static IInventory b(IHopper ihopper) { -- return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A()); -+ // Yatopia start -+ if (ihopper instanceof TileEntityHopper) { -+ TileEntityHopper hopper = (TileEntityHopper) ihopper; -+ if (hopper.cachedAbove != null) { -+ return hopper.cachedAbove; -+ } -+ IInventory inv = a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), hopper.cachedPullAir); -+ hopper.cachedAbove = inv; -+ if (hopper.cachedAbove == null) { -+ hopper.cachedPullAir = true; -+ } ++ // Yatopia start - replaced logic ++ if (ihopper instanceof TileEntityHopper) { ++ TileEntityHopper hopper = (TileEntityHopper) ihopper; ++ if (hopper.cachedAbove != null) { ++ return hopper.cachedAbove; ++ } ++ IInventory inv = a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), hopper.cachedPullAir); ++ hopper.cachedAbove = inv; ++ if (hopper.cachedAbove == null) { ++ hopper.cachedPullAir = true; ++ } + return inv; -+ } else { -+ return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A(), false); -+ } ++ } else { + return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A()); ++ } + // Yatopia end } public static List c(IHopper ihopper) { -@@ -683,14 +718,15 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -683,14 +716,16 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi } @Nullable - public static IInventory b(World world, BlockPosition blockposition) { - return a(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, true); // Paper -+ public static IInventory b(World world, BlockPosition blockposition, boolean skipBlockCheck) { -+ return a(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, true, skipBlockCheck); // Yatopia // Paper ++ public static IInventory b(World world, BlockPosition blockposition, boolean skipBlockCheck) { // Yatopia ++ return a(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, true, skipBlockCheck); // Paper // Yatopia } @Nullable - public static IInventory a(World world, double d0, double d1, double d2) { return a(world, d0, d1, d2, false); } // Paper - overload to default false - public static IInventory a(World world, double d0, double d1, double d2, boolean optimizeEntities) { // Paper -- Object object = null; -+ public static IInventory a(World world, double d0, double d1, double d2, boolean skipBlockCheck) { return a(world, d0, d1, d2, false, skipBlockCheck); } // Yatopia // Paper - overload to default false -+ public static IInventory a(World world, double d0, double d1, double d2, boolean optimizeEntities, boolean skipBlockCheck) { // Yatopia // Paper -+ Object object = null; // Yatopia -+ if(!skipBlockCheck) { // Yatopia ++ public static IInventory a(World world, double d0, double d1, double d2) { return a(world, d0, d1, d2, false); } // Yatopia ++ public static IInventory a(World world, double d0, double d1, double d2, boolean skipBlockCheck) { return a(world, d0, d1, d2, false, skipBlockCheck); } // Paper - overload to default false // Yatopia ++ public static IInventory a(World world, double d0, double d1, double d2, boolean optimizeEntities, boolean skipBlockCheck) { // Paper // Yatopia + Object object = null; ++ if (!skipBlockCheck) { // Yatopia BlockPosition blockposition = new BlockPosition(d0, d1, d2); if ( !world.isLoaded( blockposition ) ) return null; // Spigot IBlockData iblockdata = world.getType(blockposition); -@@ -708,8 +744,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -708,8 +743,9 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi } } } -+ } // Yatopia ++ } // Yatopia - if (object == null && (!optimizeEntities || !org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding())) { // Paper -+ if (object == null && (!optimizeEntities || true/*!org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding()*/)) { // Yatopia // Paper ++ if (object == null && !optimizeEntities) { // Paper // Yatopia List list = world.getEntities((Entity) null, new AxisAlignedBB(d0 - 0.5D, d1 - 0.5D, d2 - 0.5D, d0 + 0.5D, d1 + 0.5D, d2 + 0.5D), IEntitySelector.d); if (!list.isEmpty()) { -@@ -779,4 +816,19 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi +@@ -779,4 +815,16 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi protected Container createContainer(int i, PlayerInventory playerinventory) { return new ContainerHopper(i, playerinventory, this); } @@ -139,13 +129,10 @@ index 3ff61141aede4b5a09bf83153222de0d14db5ad0..e386ffda975b8a0adc218fd47a02e5b3 + private IInventory cachedPush = null; + private boolean cachedPushAir = false; + private boolean cachedPullAir = false; -+ + public void flushCaches() { -+ cachedAbove = null; -+ cachedPush = null; -+ cachedPushAir = false; -+ cachedPullAir = false; ++ cachedAbove = null; ++ cachedPush = null; ++ cachedPushAir = false; ++ cachedPullAir = false; + } -+ // Yatopia end -+ } diff --git a/patches/server/0022-Optimize-TileEntity-loading.patch b/patches/server/0022-Optimize-TileEntity-loading.patch index 76a545a8..9ad0e5b9 100644 --- a/patches/server/0022-Optimize-TileEntity-loading.patch +++ b/patches/server/0022-Optimize-TileEntity-loading.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Optimize TileEntity loading diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 29ffa302fa5b3d7d0ece23e2e0eda79d46747c3b..8beda792cc67e5c789574076f5a06214614a6031 100644 +index 5c67881cb9258b839e713b8bb0b4b380691d3fdd..ccad720e3c11d85c10822cbca1b1eeb6cb71df9a 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -43,8 +43,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable { - public static final ResourceKey THE_END = ResourceKey.a(IRegistry.ae, new MinecraftKey("the_end")); + public static final ResourceKey THE_END = ResourceKey.a(IRegistry.L, new MinecraftKey("the_end")); private static final EnumDirection[] a = EnumDirection.values(); //public final List tileEntityList = Lists.newArrayList(); // Paper - remove unused list - public final List tileEntityListTick = Lists.newArrayList(); diff --git a/patches/server/0024-Redirect-Configs.patch b/patches/server/0024-Redirect-Configs.patch index ac86ad42..24eb7c81 100644 --- a/patches/server/0024-Redirect-Configs.patch +++ b/patches/server/0024-Redirect-Configs.patch @@ -46,7 +46,7 @@ index 22d920686418e86aec8be37f125123682af023a3..081a5344b86e300ae7aa722b9b0ca84c private void set(String path, Object val) { diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index a89209347418b3006745c50043d0abdf2b91babc..e0bd3efb0a856774600b8b5487ec7e2b5b81f41d 100644 +index 3d71ee447b0d45c50ed6f2f17ad5184d28d3bc08..965cc06a826c7d827e6b9a9e586738bfddc974d8 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java @@ -20,6 +20,8 @@ public final class OrigamiConfig { @@ -80,7 +80,7 @@ index a89209347418b3006745c50043d0abdf2b91babc..e0bd3efb0a856774600b8b5487ec7e2b for (final Method method : clazz.getDeclaredMethods()) { if (method.getReturnType() != void.class || method.getParameterCount() != 0 || 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 cb4a89940cf02de5c3eefc5c746397a931c96b7a..7e053bc9bbd8abc1a6c060c1b4166ff27c7043d2 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -189,6 +189,8 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -93,10 +93,10 @@ index c3becefce8143f34ed2b1093dd22227b7309629c..b045cfc0e8ade9632cfde5cffe8fe93b this.setPVP(dedicatedserverproperties.pvp); this.setAllowFlight(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 60b4c2337e6fdeddfb785e90fa501149af45756c..f27214eba0aedfceb770a39e444c46f9df19dcf6 100644 +index 2ba0d89ae1b5d52eec3bd91328088ea2c7249d07..5c2dec887a41351b1d3288c391dfa899cc7e2a03 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -319,7 +319,7 @@ public class Main { +@@ -311,7 +311,7 @@ public class Main { } // Paper end System.setProperty( "library.jansi.version", "Paper" ); // Paper - set meaningless jansi version to prevent git builds from crashing on Windows diff --git a/patches/server/0026-lithium-MixinChunkGeneratorAbstract.patch b/patches/server/0026-lithium-MixinChunkGeneratorAbstract.patch index 36c5d219..52fc27bf 100644 --- a/patches/server/0026-lithium-MixinChunkGeneratorAbstract.patch +++ b/patches/server/0026-lithium-MixinChunkGeneratorAbstract.patch @@ -10,19 +10,20 @@ Co-authored-by: tr7zw 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 new file mode 100644 -index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a123b7a039 +index 0000000000000000000000000000000000000000..e6cd19e75a88f4dbf38d3cc63883068d95aa67d4 --- /dev/null +++ b/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java -@@ -0,0 +1,133 @@ +@@ -0,0 +1,135 @@ +package me.jellysquid.mods.lithium.common.world.noise; + -+import java.util.Arrays; -+ +import it.unimi.dsi.fastutil.HashCommon; ++ +import net.minecraft.server.ChunkCoordIntPair; +import net.minecraft.server.MathHelper; +import net.minecraft.server.NoiseGenerator3Handler; + ++import java.util.Arrays; ++ +/** + * A cache for the End's noise generator that caches computed values. Through the caching, we can eliminate a large + * amount of overhead in computing the noise values several hundred thousand times per chunk. This code uses the same @@ -73,14 +74,14 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1 + + long lx = x; + long lz = z; -+ long distanceFromOriginSq = lx * lx + lz * lz; ++ long distanceFromOriginSq = lx * lx + lz * lz; + + // Ensure we are 64 grid cells away from the origin. + if (distanceFromOriginSq > 64 * 64) { + // Reduce the number of island-forming grid cells by sampling noise with a threshold + if (this.sampler.a(x, z) < -0.9) { + // Generate a pseudo-random value from 9 to 21 -+ value = (Math.abs(x) * 3439.0F + Math.abs(z) * 147.0F) % 13.0F + 9.0F; ++ value = (Math.abs(x) * 3439.0F + Math.abs(z) * 147.0F) %13.0F + 9.0F; + } + } + @@ -92,7 +93,8 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1 + } + + /** -+ * Mapped and cleaned up implementation of the End biome source's sampler. Tries to use cached values wherever possible. ++ * Mapped and cleaned up implementation of the End biome source's sampler. Tries to use cached values wherever ++ * possible. + */ + public float getNoiseAt(int x, int z) { + // [VanillaCopy] TheEndBiomeSource#getNoiseAt @@ -105,16 +107,16 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1 + int gridOriginZ = z % GRID_SIZE; + + // Initialize density for the central island -+ float density = ISLAND_RADIUS - MathHelper.sqrt(x * x + z * z) * 8.0F; ++ float density = ISLAND_RADIUS - MathHelper.sqrt(x * x + z * z) * 8.0F; + if (density >= MAX) { + return MAX; + } + + // Iterate through 25x25 grid cells -+ for (int offsetX = -12; offsetX <= 12; ++offsetX) { -+ for (int offsetZ = -12; offsetZ <= 12; ++offsetZ) { -+ int globalGridX = gridX + offsetX; -+ int globalGridZ = gridZ + offsetZ; ++ for (int offsetX = -12; offsetX <= 12; offsetX++) { ++ for (int offsetZ = -12; offsetZ <= 12; offsetZ++) { ++ int globalGridX = gridX + offsetX; ++ int globalGridZ = gridZ + offsetZ; + + // Try to retrieve values from cache + float distanceFactor = getDistanceFactor(globalGridX, globalGridZ); @@ -124,7 +126,7 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1 + float deltaZ = gridOriginZ - offsetZ * GRID_SIZE; + + // Calculate the density at this grid cell -+ float scaledDistance = MathHelper.sqrt(deltaX * deltaX + deltaZ * deltaZ) * distanceFactor; ++ float scaledDistance = MathHelper.sqrt(deltaX * deltaX + deltaZ * deltaZ) * distanceFactor; + float densityHere = ISLAND_RADIUS - scaledDistance; + + // Try to return early if we're over the max @@ -147,41 +149,41 @@ index 0000000000000000000000000000000000000000..167498cfab7aed0deb32232082ae06a1 + return density; + } +} -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java -index 45b771e4121f2ef27c67d5a5ba2dadcfc0f944e0..b15ed711d8236e9835ffa013f8252aec03e9bb57 100644 +index 321ebe8891defb46f3ad3dfea37c9bb6e2025ad7..119804e5c12aca3f4fbfeaf424f46152f43b3941 100644 --- a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java +++ b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java -@@ -56,12 +56,13 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { +@@ -57,12 +57,13 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { private final NoiseGenerator t; private final NoiseGeneratorOctaves u; @Nullable - private final NoiseGenerator3Handler v; -+ private final NoiseGenerator3Handler v; // Yatopia Note: yarn "SimplexNoiseSampler" ++ private final NoiseGenerator3Handler v; // Yatopia - yarn "SimplexNoiseSampler" protected final IBlockData f; protected final IBlockData g; private final long w; - protected final GeneratorSettingBase h; + protected final Supplier h; private final int x; -+ private ThreadLocal tlCache; // Yatopia: lithium ++ private ThreadLocal tlCache; // Yatopia - public ChunkGeneratorAbstract(WorldChunkManager worldchunkmanager, long i, GeneratorSettingBase generatorsettingbase) { - this(worldchunkmanager, worldchunkmanager, i, generatorsettingbase); -@@ -96,7 +97,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { + public ChunkGeneratorAbstract(WorldChunkManager worldchunkmanager, long i, Supplier supplier) { + this(worldchunkmanager, worldchunkmanager, i, supplier); +@@ -99,7 +100,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { } else { this.v = null; } - -+ this.tlCache = ThreadLocal.withInitial(() -> new me.jellysquid.mods.lithium.common.world.noise.SimplexNoiseCache(v)); // Yatopia: lithium ++ this.tlCache = ThreadLocal.withInitial(() -> new me.jellysquid.mods.lithium.common.world.noise.SimplexNoiseCache(v)); // Yatopia } @Override -@@ -161,7 +162,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { +@@ -164,7 +165,8 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator { double d3; if (this.v != null) { - d0 = (double) (WorldChunkManagerTheEnd.a(this.v, i, j) - 8.0F); -+ d0 = (double) (/*WorldChunkManagerTheEnd.a(this.v, i, j) Yatopia lithium*/tlCache.get().getNoiseAt(i, j) - 8.0F); ++ //d0 = (double) (WorldChunkManagerTheEnd.a(this.v, i, j) - 8.0F); // Yatopia ++ d0 = tlCache.get().getNoiseAt(i, j) - 8.0F; // Yatopia if (d0 > 0.0D) { d1 = 0.25D; } else { diff --git a/patches/server/0027-lithium-MixinDataWatcher.patch b/patches/server/0027-lithium-MixinDataWatcher.patch index 9d52dc7d..62ebfba5 100644 --- a/patches/server/0027-lithium-MixinDataWatcher.patch +++ b/patches/server/0027-lithium-MixinDataWatcher.patch @@ -9,10 +9,10 @@ you can find the original code on https://github.com/jellysquid3/lithium-fabric/ Co-authored-by: tr7zw diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java -index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..23fdd7c7d0368cc88e467a890cea8aa9b495fa11 100644 +index e69093b411f76ea4090789576f8fb6635bd02ca5..4a14431b198c227eb6f0f68eaac14f5c09fc3036 100644 --- a/src/main/java/net/minecraft/server/DataWatcher.java +++ b/src/main/java/net/minecraft/server/DataWatcher.java -@@ -26,6 +26,77 @@ public class DataWatcher { +@@ -27,6 +27,77 @@ public class DataWatcher { private boolean f = true; private boolean g; @@ -26,7 +26,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..23fdd7c7d0368cc88e467a890cea8aa9 + * should only ever occur during entity initialization. Type-erasure is a bit of a pain here since we must redirect + * a calls to the generic Map interface. + */ -+ private Object onAddTrackedDataInsertMap(it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap> map, int keyRaw, DataWatcher.Item valueRaw) { ++ private Object onAddTrackedDataInsertMap(Int2ObjectOpenHashMap> map, int keyRaw, DataWatcher.Item valueRaw) { + int k = keyRaw; + DataWatcher.Item v = (DataWatcher.Item) valueRaw; + @@ -90,7 +90,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..23fdd7c7d0368cc88e467a890cea8aa9 public DataWatcher(Entity entity) { this.entity = entity; } -@@ -90,7 +161,8 @@ public class DataWatcher { +@@ -91,7 +162,8 @@ public class DataWatcher { DataWatcher.Item datawatcher_item = new DataWatcher.Item<>(datawatcherobject, t0); // this.lock.writeLock().lock(); // Spigot - not required @@ -100,7 +100,7 @@ index be8e705fc3f2c31e4f84f59c977488d8ecd9cae1..23fdd7c7d0368cc88e467a890cea8aa9 this.f = false; // this.lock.writeLock().unlock(); // Spigot - not required } -@@ -121,7 +193,8 @@ public class DataWatcher { +@@ -122,7 +194,8 @@ public class DataWatcher { } public T get(DataWatcherObject datawatcherobject) { diff --git a/patches/server/0028-Fix-lead-fall-dmg-config.patch b/patches/server/0028-Fix-lead-fall-dmg-config.patch index bde87ac9..8d9c9bdf 100644 --- a/patches/server/0028-Fix-lead-fall-dmg-config.patch +++ b/patches/server/0028-Fix-lead-fall-dmg-config.patch @@ -5,31 +5,29 @@ Subject: [PATCH] Fix lead fall dmg config diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -index d8e3bbb2ffbf20a111af3fd7a019daf1d5a7dead..325d1fe8f91bdfa82a53a5f1f86804d04f973090 100644 +index 0566088538c2b99ff74a408b67a9edee4751f904..db5e7cb183682f5cf7049190ae49a835738a065e 100644 --- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java +++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -@@ -225,4 +225,10 @@ public class YatopiaConfig { - private static void villagersHideAtNight() { +@@ -231,4 +231,9 @@ public class YatopiaConfig { + simplerVillagerBehavior = getBoolean("settings.villager.simplerVillagerBehavior", false); villagersHideAtNight = getBoolean("settings.villager.villagersHideAtNight", false); } + + public static boolean fixFallDistance = false; + private static void fixFallDistance() { -+ fixFallDistance = getBoolean("settings.fixFallDistance", false); ++ fixFallDistance = getBoolean("settings.fixFallDistance", false); + } -+ } -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index fe0689f6be466d1a2a1ed2b76331272199a0aa0c..eef7128a81b58089a2ea2495264a7e94104668a8 100644 +index 724aab2cc747940e31c01a52a258e3519e6bda79..e19d363e76158335acbabaee2bae295dfee38cf8 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1266,6 +1266,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1264,6 +1264,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.fallDistance = 0.0F; } else if (d0 < 0.0D) { this.fallDistance = (float) ((double) this.fallDistance - d0); + } else if (d0 > 0.0D && dev.tr7zw.yatopia.YatopiaConfig.fixFallDistance) { // Yatopia -+ this.fallDistance = 0.0F; // Yatopia ++ this.fallDistance = 0.0F; // Yatopia } } diff --git a/patches/server/0029-Akarin-updated-Async-Path-Finding.patch b/patches/server/0029-Akarin-updated-Async-Path-Finding.patch index 1b64096b..9b2d1c14 100644 --- a/patches/server/0029-Akarin-updated-Async-Path-Finding.patch +++ b/patches/server/0029-Akarin-updated-Async-Path-Finding.patch @@ -5,37 +5,8 @@ Subject: [PATCH] Akarin updated Async Path Finding Co-authored-by: Bud Gidiere -diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index e6868e2b65e3c2bde7696272b242a47e7394e27f..dcd99ae6cb244c819c68dfafa681adf63a34622a 100644 ---- a/src/main/java/net/minecraft/server/EntityBee.java -+++ b/src/main/java/net/minecraft/server/EntityBee.java -@@ -445,9 +445,9 @@ public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityB - } - - @Override -- public void c() { -+ public void tickAsync() { // Akarin - async pathfinding - if (!EntityBee.this.bJ.k()) { -- super.c(); -+ super.tickAsync(); // Akarin - async pathfinding - } - } - }; -diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 691a4ebc3f267bab375fb2bc83deac9ea825a232..7c9bb358c9967e6c7c02b96e17764f2418df7979 100644 ---- a/src/main/java/net/minecraft/server/EntityInsentient.java -+++ b/src/main/java/net/minecraft/server/EntityInsentient.java -@@ -757,7 +757,7 @@ public abstract class EntityInsentient extends EntityLiving { - this.goalSelector.doTick(); - //this.world.getMethodProfiler().exit(); // Akarin - remove caller - //this.world.getMethodProfiler().enter("navigation"); // Akarin - remove caller -- this.navigation.c(); -+ this.navigation.tickAsync(); // Akarin - Async pathfinder - //this.world.getMethodProfiler().exit(); // Akarin - remove caller - //this.world.getMethodProfiler().enter("mob tick"); // Akarin - remove caller - this.mobTick(); diff --git a/src/main/java/net/minecraft/server/Navigation.java b/src/main/java/net/minecraft/server/Navigation.java -index 681465d8a74831461dce4615d2d19c7ed46bc299..f04411a2a295d2a982dca5851ae76a80a6a83585 100644 +index 0ed01f40edfdbeeeea9db55fcba7501ee597c1fb..795fd9308dcd9edce4ef12da2e8bc5a65f358abc 100644 --- a/src/main/java/net/minecraft/server/Navigation.java +++ b/src/main/java/net/minecraft/server/Navigation.java @@ -183,7 +183,7 @@ public class Navigation extends NavigationAbstract { @@ -48,7 +19,7 @@ index 681465d8a74831461dce4615d2d19c7ed46bc299..f04411a2a295d2a982dca5851ae76a80 if (!this.a(pathtype)) { return false; diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java -index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..78d1d96aeaf8c8b79f5f5bdf74178816c8bc8973 100644 +index ed37caf036ef9ae4c39622caf9b582678fecdccf..666ac7227e273aabb3f8e5ca78b5ac9652486229 100644 --- a/src/main/java/net/minecraft/server/NavigationAbstract.java +++ b/src/main/java/net/minecraft/server/NavigationAbstract.java @@ -28,6 +28,15 @@ public abstract class NavigationAbstract { @@ -59,102 +30,69 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..78d1d96aeaf8c8b79f5f5bdf74178816 + private long lastPathfindAsync; + private static final java.util.concurrent.ExecutorService pathfindExecutor = + java.util.concurrent.Executors.newSingleThreadExecutor( -+ new com.google.common.util.concurrent.ThreadFactoryBuilder() -+ .setDaemon(true) -+ .setNameFormat("StarLink Pathfinder - %d") -+ .build()); ++ new com.google.common.util.concurrent.ThreadFactoryBuilder() ++ .setDaemon(true) ++ .setNameFormat("StarLink Pathfinder - %d") ++ .build()); + // Akarin end // Tuinity start public boolean isViableForPathRecalculationChecking() { -@@ -83,7 +92,40 @@ public abstract class NavigationAbstract { - } - +@@ -36,6 +45,128 @@ public abstract class NavigationAbstract { } + // Tuinity end + + // Akarin start - Async pathfinder, copied from above with modification + public void doPathfindAsync() { + if (this.b.getTime() - this.lastPathfindAsync > 20L) { + if (this.p != null) { + this.lastPathfindAsync = this.b.getTime(); + -+ // Bake chunk cache -+ float f = (float) this.a.b(GenericAttributes.FOLLOW_RANGE);; ++ // Baeke chunk cache ++ float f = (float) this.a.b(GenericAttributes.FOLLOW_RANGE); + BlockPosition blockposition = this.a.getChunkCoordinates(); + int k = (int) (f + (float) 8); -+ ChunkCache cache = new ChunkCache(this.b, blockposition.b(-k, -k, -k), blockposition.b(k, k, k)); ++ ChunkCache chunkCache = new ChunkCache(this.b, blockposition.b(-k, -k, -k), blockposition.b(k, k, k)); + -+ // Execute directly if we already have a path entity, or compute one + if (this.c != null && !this.c.b()) { + doTickAsync(this.c); + return; + } - ++ + pathfindExecutor.execute(() -> { -+ PathEntity result = findPathAsync(cache, java.util.Collections.singleton(this.p), this.q); ++ PathEntity result = findPathAsync(chunkCache, java.util.Collections.singleton(this.p), this.q); + NavigationAbstract.this.b.getMinecraftServer().processQueue.add(() -> { -+ if (result != null && result.m() != null) ++ if (result != null && result.m() != null) { + this.p = result.m(); ++ } + + NavigationAbstract.this.c = result; + }); + }); + } + } else { -+ // Execute directly, keep behaviour with vanilla, see the original doTick method + doTickAsync(this.c); + } + } -+ // Akarin end - @Nullable - public final PathEntity calculateDestination(double d0, double d1, double d2) { return a(d0, d1, d2, 0); } public final PathEntity a(double d0, double d1, double d2, int i) { // Paper - OBFHELPER - return this.a(new BlockPosition(d0, d1, d2), i); -@@ -164,7 +206,17 @@ public abstract class NavigationAbstract { - return pathentity; - } - } -- -+ // Akarin start - Async pathfinder, copied and edited from above with only pathfinding -+ protected PathEntity findPathAsync(ChunkCache cache, Set set, int j) { -+ if (this.a.locY() < 0.0D) { -+ return null; -+ } else if (!this.a()) { -+ return null; -+ } else { -+ return this.s.a(cache, this.a, set, f, j, this.r); -+ } -+ } -+ // Akarin end - public boolean a(double d0, double d1, double d2, double d3) { - return this.a(this.a(d0, d1, d2, 1), d3); - } -@@ -228,7 +280,7 @@ public abstract class NavigationAbstract { - return this.c; - } - -- public void c() { -+/* public void c() { // Yatopia - ++this.e; - if (this.m) { - this.j(); -@@ -256,9 +308,43 @@ public abstract class NavigationAbstract { - this.a.getControllerMove().a(vec3d.x, this.b.getType(blockposition.down()).isAir() ? vec3d.y : PathfinderNormal.a((IBlockAccess) this.b, blockposition), vec3d.z, this.d); - } - } -+ }*/ // Yatopia -+ // Yatopia start -+ public void c() { -+ this.tickAsync(); - } -+ // Yatopia end -+ // Akarin start - Async pathfinder, copied from above -+ public void tickAsync() { -+ ++this.e; -+ this.doPathfindAsync(); ++ ++ protected PathEntity findPathAsync(ChunkCache cache, Set set, int j) { ++ if (this.a.locY() < 0.0D) { ++ return null; ++ } else if (!this.a()) { ++ return null; ++ } else { ++ return this.s.a(cache, this.a, set, f, j, this.r); ++ } + } -+ // This was copied from above partly with param ++ ++ public static boolean shouldContinuePathfind(PathEntity pathEntity) { ++ return pathEntity == null || pathEntity.b(); ++ } ++ + public void doTickAsync(PathEntity pathEntity) { -+ if (shouldContinuePathfind(pathEntity)) ++ if (shouldContinuePathfind(pathEntity)) { + return; ++ } + + Vec3D vec3d; + if (this.a()) { @@ -162,58 +100,37 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..78d1d96aeaf8c8b79f5f5bdf74178816 + } else if (pathEntity.f() < pathEntity.e()) { + vec3d = this.b(); + Vec3D vec3d1 = pathEntity.a(this.a, pathEntity.f()); -+ + if (vec3d.y > vec3d1.y && !this.a.isOnGround() && MathHelper.floor(vec3d.x) == MathHelper.floor(vec3d1.x) && MathHelper.floor(vec3d.z) == MathHelper.floor(vec3d1.z)) { + pathEntity.c(pathEntity.f() + 1); + } + } - -- protected void l() { -+ if (shouldContinuePathfind(pathEntity)) ++ ++ if (shouldContinuePathfind(pathEntity)) { + return; -+ //PacketDebug.a(this.b, this.a, pathEntity, this.l); -+ vec3d = pathEntity.a((Entity) this.a); ++ } ++ vec3d = pathEntity.a(this.a); + BlockPosition blockposition = new BlockPosition(vec3d); + + this.a.getControllerMove().a(vec3d.x, this.b.getType(blockposition.down()).isAir() ? vec3d.y : PathfinderNormal.a((IBlockAccess) this.b, blockposition), vec3d.z, this.d); + } -+/* protected void l() { - Vec3D vec3d = this.b(); - - this.l = this.a.getWidth() > 0.75F ? this.a.getWidth() / 2.0F : 0.75F - this.a.getWidth() / 2.0F; -@@ -273,8 +359,26 @@ public abstract class NavigationAbstract { - } - - this.a(vec3d); -- } -+ }*/ // Akarin end + -+ // Akarin start - Async pathfinder, copied from above with param + protected void applyPath(PathEntity pathEntity) { + Vec3D vec3d = this.b(); + + this.l = this.a.getWidth() > 0.75F ? this.a.getWidth() / 2.0F : 0.75F - this.a.getWidth() / 2.0F; -+ BaseBlockPosition baseblockposition = pathEntity.g(); -+ double d0 = Math.abs(this.a.locX() - ((double) baseblockposition.getX() + 0.5D)); -+ double d1 = Math.abs(this.a.locY() - (double) baseblockposition.getY()); -+ double d2 = Math.abs(this.a.locZ() - ((double) baseblockposition.getZ() + 0.5D)); ++ BaseBlockPosition baseBlockPosition = pathEntity.g(); ++ double d0 = Math.abs(this.a.locX() - ((double) baseBlockPosition.getX() + 0.5)); ++ double d1 = Math.abs(this.a.locY() - ((double) baseBlockPosition.getY())); ++ double d2 = Math.abs(this.a.locZ() - ((double) baseBlockPosition.getZ() + 0.5)); + boolean flag = d0 < (double) this.l && d2 < (double) this.l && d1 < 1.0D; + + if (flag || this.a.b(pathEntity.h().l) && this.b(vec3d)) { + pathEntity.c(pathEntity.f() + 1); + } - ++ + this.applyPath0(pathEntity, vec3d); + } -+ // Akarin end - private boolean b(Vec3D vec3d) { - if (this.c.e() <= this.c.f() + 1) { - return false; -@@ -324,7 +428,39 @@ public abstract class NavigationAbstract { - } - - } -+ // Akarin start - Async pathfinder, copied from above with param ++ + protected void applyPath0(PathEntity pathEntity, Vec3D vec3d) { + if (this.e - this.f > 100) { + if (vec3d.distanceSquared(this.g) < 2.25D) { @@ -228,14 +145,14 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..78d1d96aeaf8c8b79f5f5bdf74178816 + BaseBlockPosition baseblockposition = pathEntity.g(); + + if (baseblockposition.equals(this.h)) { -+ this.i += SystemUtils.getMonotonicMillis() - this.j; ++ this.i = SystemUtils.getMonotonicMillis() - this.j; + } else { + this.h = baseblockposition; + double d0 = vec3d.f(Vec3D.c(this.h)); + + this.k = this.a.dM() > 0.0F ? d0 / (double) this.a.dM() * 1000.0D : 0.0D; + } - ++ + if (this.k > 0.0D && (double) this.i > this.k * 3.0D) { + this.e(); + this.o(); @@ -246,67 +163,47 @@ index 2405dc5e9a6a971a565c37710b61d5fc4737bdf8..78d1d96aeaf8c8b79f5f5bdf74178816 + + } + // Akarin end - private void e() { ++ + public NavigationAbstract(EntityInsentient entityinsentient, World world) { + this.g = Vec3D.a; this.h = BaseBlockPosition.ZERO; - this.i = 0L; -@@ -389,7 +525,11 @@ public abstract class NavigationAbstract { - public boolean r() { - return this.o.e(); +@@ -230,6 +361,8 @@ public abstract class NavigationAbstract { + + public void c() { + ++this.e; ++ this.doPathfindAsync(); // Akarin ++ /* // Akarin + if (this.m) { + this.j(); + } +@@ -256,6 +389,7 @@ 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); + } + } ++ */ // Akarin } -- -+ // Akarin start - Async pathfinder, copied from above with param -+ public static boolean shouldContinuePathfind(PathEntity pathEntity) { -+ return pathEntity == null || pathEntity.b(); -+ } -+ // Akarin end - public void b(BlockPosition blockposition) { - if (this.c != null && !this.c.b() && this.c.e() != 0) { // Tuinity - diff on change - needed for isViableForPathRecalculationChecking() - PathPoint pathpoint = this.c.c(); + + protected void l() { diff --git a/src/main/java/net/minecraft/server/NavigationFlying.java b/src/main/java/net/minecraft/server/NavigationFlying.java -index 0c33a0c9d59d79a39826b5ee14144604717ffebe..14b77c7f8ee54bb2189fbb17814dce9aaa7db3eb 100644 +index 013bdfe5540ae594a7f9cbe3ef8dc54dfb25afd4..d9460cdb87a87450269c468857f0e87947de8861 100644 --- a/src/main/java/net/minecraft/server/NavigationFlying.java +++ b/src/main/java/net/minecraft/server/NavigationFlying.java -@@ -28,7 +28,7 @@ public class NavigationFlying extends NavigationAbstract { +@@ -28,6 +28,7 @@ public class NavigationFlying extends NavigationAbstract { return this.a(entity.getChunkCoordinates(), entity, i); // Paper - Forward target entity } -- @Override -+/* @Override // Yatopia ++ /* // Akarin + @Override public void c() { ++this.e; - if (this.m) { -@@ -53,6 +53,31 @@ public class NavigationFlying extends NavigationAbstract { - this.a.getControllerMove().a(vec3d.x, vec3d.y, vec3d.z, this.d); +@@ -54,6 +55,7 @@ public class NavigationFlying extends NavigationAbstract { } } -+ }*/ // Yatopia -+ -+ // This was copied from above partly with param -+ @Override -+ public void doTickAsync(PathEntity pathEntity) { -+ if (shouldContinuePathfind(pathEntity)) -+ return; -+ -+ Vec3D vec3d; -+ if (this.a()) { -+ this.applyPath(pathEntity); -+ } else if (pathEntity != null && pathEntity.f() < pathEntity.e()) { -+ vec3d = pathEntity.a(this.a, pathEntity.f()); -+ if (MathHelper.floor(this.a.locX()) == MathHelper.floor(vec3d.x) && MathHelper.floor(this.a.locY()) == MathHelper.floor(vec3d.y) && MathHelper.floor(this.a.locZ()) == MathHelper.floor(vec3d.z)) { -+ pathEntity.c(pathEntity.f() + 1); -+ } -+ } -+ -+ if (shouldContinuePathfind(pathEntity)) -+ return; -+ //PacketDebug.a(this.b, this.a, pathEntity, this.l); -+ vec3d = pathEntity.a((Entity) this.a); -+ BlockPosition blockposition = new BlockPosition(vec3d); -+ -+ this.a.getControllerMove().a(vec3d.x, vec3d.y, vec3d.z, this.d); } ++ */ // Akarin @Override + protected boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k) { diff --git a/src/main/java/net/minecraft/server/Pathfinder.java b/src/main/java/net/minecraft/server/Pathfinder.java index 997982136cdd2a0d922e501473e0d4d1aabf567a..9b2d23ef1c9369cf15f9f12161c28199fbf4f373 100644 --- a/src/main/java/net/minecraft/server/Pathfinder.java @@ -321,7 +218,7 @@ index 997982136cdd2a0d922e501473e0d4d1aabf567a..9b2d23ef1c9369cf15f9f12161c28199 this.c.a(chunkcache, entityinsentient); PathPoint pathpoint = this.c.b(); diff --git a/src/main/java/net/minecraft/server/PathfinderTurtle.java b/src/main/java/net/minecraft/server/PathfinderTurtle.java -index cea160885783e8666b616375eac44ba6d1880e1f..9598563b4f97500fd3fba0165813d564d9c96c4f 100644 +index e8aca88284dff6055de6d45e2a50bb28b7a64297..d8dd3aeedee76eaa828bb751dbcdff4c290c66da 100644 --- a/src/main/java/net/minecraft/server/PathfinderTurtle.java +++ b/src/main/java/net/minecraft/server/PathfinderTurtle.java @@ -148,7 +148,7 @@ public class PathfinderTurtle extends PathfinderNormal { diff --git a/patches/server/0031-Optimize-player-loops-around-weather.patch b/patches/server/0030-Optimize-player-loops-around-weather.patch similarity index 88% rename from patches/server/0031-Optimize-player-loops-around-weather.patch rename to patches/server/0030-Optimize-player-loops-around-weather.patch index 8c0c561f..2df197fd 100644 --- a/patches/server/0031-Optimize-player-loops-around-weather.patch +++ b/patches/server/0030-Optimize-player-loops-around-weather.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimize player loops around weather diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 3782d329dc62a9e834f16a9009f4102b5b4aad6f..2a681afff2e8b9f7b7e106dcb780ecac27d14353 100644 +index 11ac68333a97c21607bd4ce6dd936a69003f2bea..8ba9a5ef645dcebf12894c3bd236aef006e473bf 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -833,12 +833,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -814,12 +814,17 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.server.getPlayerList().sendAll(new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.i, this.thunderLevel)); } // */ @@ -29,7 +29,7 @@ index 3782d329dc62a9e834f16a9009f4102b5b4aad6f..2a681afff2e8b9f7b7e106dcb780ecac if (flag != this.isRaining()) { // Only send weather packets to those affected for (int idx = 0; idx < this.players.size(); ++idx) { -@@ -852,6 +857,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { +@@ -833,6 +838,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { ((EntityPlayer) this.players.get(idx)).updateWeather(this.lastRainLevel, this.rainLevel, this.lastThunderLevel, this.thunderLevel); } } diff --git a/patches/server/0032-Optimize-BehaviorController.patch b/patches/server/0031-Optimize-BehaviorController.patch similarity index 100% rename from patches/server/0032-Optimize-BehaviorController.patch rename to patches/server/0031-Optimize-BehaviorController.patch diff --git a/patches/server/0033-Optimize-Villagers.patch b/patches/server/0032-Optimize-Villagers.patch similarity index 79% rename from patches/server/0033-Optimize-Villagers.patch rename to patches/server/0032-Optimize-Villagers.patch index f1cfcff7..c0e9c623 100644 --- a/patches/server/0033-Optimize-Villagers.patch +++ b/patches/server/0032-Optimize-Villagers.patch @@ -42,25 +42,25 @@ Ported to Yatopia and 1.16.1 by MrIvanPlays Co-authored-by: MrIvanPlays diff --git a/src/main/java/net/minecraft/server/BehaviorFindPosition.java b/src/main/java/net/minecraft/server/BehaviorFindPosition.java -index 84a872dfd35249972129130083d51d71d75bff1e..15ea264e49609de61be131d41ae68e65957d002b 100644 +index 63a761ebef80d4af09cdc2682e496d78492c4a3a..db72d203ebfdfcd27f2dae240ccb998d746d518d 100644 --- a/src/main/java/net/minecraft/server/BehaviorFindPosition.java +++ b/src/main/java/net/minecraft/server/BehaviorFindPosition.java -@@ -45,7 +45,7 @@ public class BehaviorFindPosition extends Behavior { +@@ -48,7 +48,7 @@ public class BehaviorFindPosition extends Behavior { if (this.d && entitycreature.isBaby()) { return false; - } else if (this.e == 0L) { -- this.e = entitycreature.world.getTime() + (long) worldserver.random.nextInt(20); -+ this.e = entitycreature.world.getTime() + (long) java.util.concurrent.ThreadLocalRandom.current().nextInt(20); // Yatopia + } else if (this.f == 0L) { +- this.f = entitycreature.world.getTime() + (long) worldserver.random.nextInt(20); ++ this.f = entitycreature.world.getTime() + (long) java.util.concurrent.ThreadLocalRandom.current().nextInt(20); // Yatopia return false; } else { - return worldserver.getTime() >= this.e; -@@ -53,12 +53,57 @@ public class BehaviorFindPosition extends Behavior { + return worldserver.getTime() >= this.f; +@@ -56,12 +56,57 @@ public class BehaviorFindPosition extends Behavior { } protected void a(WorldServer worldserver, EntityCreature entitycreature, long i) { -- this.e = i + 20L + (long) worldserver.getRandom().nextInt(20); -+ this.e = i + 20L + (long) java.util.concurrent.ThreadLocalRandom.current().nextInt(20); // Yatopia - VillagePlace villageplace = worldserver.x(); +- this.f = i + 20L + (long) worldserver.getRandom().nextInt(20); ++ this.f = i + 20L + (long) java.util.concurrent.ThreadLocalRandom.current().nextInt(20); // Yatopia + VillagePlace villageplace = worldserver.y(); + // Yatopia start - replace implementation completely + BlockPosition blockposition2 = new BlockPosition(entitycreature.locX(), entitycreature.locY(), entitycreature.locZ()); @@ -78,21 +78,21 @@ index 84a872dfd35249972129130083d51d71d75bff1e..15ea264e49609de61be131d41ae68e65 + for (java.util.Map.Entry> e : section.get().getRecords().entrySet()) { + if (!predicate.test(e.getKey())) continue; + for (VillagePlaceRecord record : e.getValue()) { -+ if (!record.hasVacany()) continue; ++ if (!record.hasVacancy()) continue; + + BlockPosition pos = record.getPosition(); + long key = pos.asLong(); -+ if (this.f.containsKey(key)) { ++ if (this.g.containsKey(key)) { + continue; + } + double poiDist = pos.distanceSquared(blockposition2); + if (poiDist <= (double) requiredDist) { -+ this.f.put(key, new BehaviorFindPosition.a(java.util.concurrent.ThreadLocalRandom.current(), (long) (this.e + Math.sqrt(poiDist) * 4))); // use dist instead of 40 to blacklist longer if farther distance ++ this.g.put(key, new BehaviorFindPosition.a(java.util.concurrent.ThreadLocalRandom.current(), (long) (this.f + Math.sqrt(poiDist) * 4))) ++ ; // use dist instead of 40 to blacklist longer if farther distance + ++poiAttempts; + PathEntity pathentity = entitycreature.getNavigation().a(com.google.common.collect.ImmutableSet.of(pos), 8, false, this.b.getValidRange()); + + if (pathentity != null && pathentity.canReach()) { -+ record.decreaseVacany(); + GlobalPos globalPos = GlobalPos.create(worldserver.getDimensionKey(), pos); + entitycreature.getBehaviorController().setMemory(c, globalPos); + break OUT; @@ -106,39 +106,40 @@ index 84a872dfd35249972129130083d51d71d75bff1e..15ea264e49609de61be131d41ae68e65 + } + } + - this.f.long2ObjectEntrySet().removeIf((entry) -> { + this.g.long2ObjectEntrySet().removeIf((entry) -> { - return !((BehaviorFindPosition.a) entry.getValue()).b(i); -+ return entry.getValue().b < e; ++ return entry.getValue().b < f; }); + /* Predicate predicate = (blockposition) -> { - BehaviorFindPosition.a behaviorfindposition_a = (BehaviorFindPosition.a) this.f.get(blockposition.asLong()); + BehaviorFindPosition.a behaviorfindposition_a = (BehaviorFindPosition.a) this.g.get(blockposition.asLong()); -@@ -96,6 +141,7 @@ public class BehaviorFindPosition extends Behavior { +@@ -102,7 +147,7 @@ public class BehaviorFindPosition extends Behavior { }); } } +- + */ // Yatopia end - } + static class a { diff --git a/src/main/java/net/minecraft/server/PathEntity.java b/src/main/java/net/minecraft/server/PathEntity.java -index 9154c01a22bc7b6d2dd390bb7b6e21ef52c8006c..e86e09be4990bc6b7a36ab1ad74dba7022f49428 100644 +index c81a5d50c480b064ab60ed6f25f9e2c0bedb6ece..a86ad4c8a28b9aacdb1e99320fddf2344b08bd7e 100644 --- a/src/main/java/net/minecraft/server/PathEntity.java +++ b/src/main/java/net/minecraft/server/PathEntity.java -@@ -106,6 +106,7 @@ public class PathEntity { +@@ -114,6 +114,7 @@ public class PathEntity { } } -+ public final boolean canReach() { return i(); } // Yatopia - OBFHELPER - public boolean i() { ++ public final boolean canReach() { return j(); } // Yatopia - OBFHELPER + public boolean j() { return this.h; } diff --git a/src/main/java/net/minecraft/server/RegionFileSection.java b/src/main/java/net/minecraft/server/RegionFileSection.java -index bd0ff1e43a07a3332f9ade49fec2f76275a25c7f..f99be13169cfbca05cc440e7abef2197036b3d7d 100644 +index 04256a95108b8182e8f808e856e0d2b62165e242..69cc2d1a0642029793827f4195723c380e01c821 100644 --- a/src/main/java/net/minecraft/server/RegionFileSection.java +++ b/src/main/java/net/minecraft/server/RegionFileSection.java -@@ -52,10 +52,12 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab +@@ -52,10 +52,13 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab @Nullable protected Optional c(long i) { @@ -148,43 +149,41 @@ index bd0ff1e43a07a3332f9ade49fec2f76275a25c7f..f99be13169cfbca05cc440e7abef2197 + protected final Optional getSection(long i) { return d(i); } // Yatopia - OBFHELPER protected Optional d(long i) { -+ /* // Yatopia start - replaced logic ++ // Yatopia start - replace method - never load POI data sync, we load this in chunk load already, reduce ops ++ /* SectionPosition sectionposition = SectionPosition.a(i); if (this.b(sectionposition)) { -@@ -75,6 +77,10 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab +@@ -75,6 +78,10 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab } } } + */ -+ // Never load POI data sync, we load this in chunk load already, reduce ops + // If it's an unloaded chunk, well too bad. -+ return c(i); ++ return this.c(i); ++ // Yatopia end } protected boolean b(SectionPosition sectionposition) { -@@ -117,9 +123,11 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab - +@@ -118,7 +125,7 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab private void a(ChunkCoordIntPair chunkcoordintpair, DynamicOps dynamicops, @Nullable T t0) { if (t0 == null) { -+ /* // Yatopia start - NO!!! for (int i = 0; i < 16; ++i) { - this.c.put(SectionPosition.a(chunkcoordintpair, i).s(), Optional.empty()); +- this.c.put(SectionPosition.a(chunkcoordintpair, i).s(), Optional.empty()); ++ //this.c.put(SectionPosition.a(chunkcoordintpair, i).s(), Optional.empty()); // Yatopia - NO!!! } -+ */ // Yatopia end } else { Dynamic dynamic = new Dynamic(dynamicops, t0); - int j = a(dynamic); -@@ -140,7 +148,7 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab +@@ -140,7 +147,7 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab return dataresult.resultOrPartial(logger::error); }); - this.c.put(i1, optional); -+ if (optional.isPresent()) this.c.put(i1, optional); // Yatopia - NO!!! ++ if (optional.isPresent()) this.c.put(i1, optional); // Yatopia optional.ifPresent((object) -> { this.b(i1); if (flag) { -@@ -213,7 +221,7 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab +@@ -213,7 +220,7 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab if (optional != null && optional.isPresent()) { this.d.add(i); } else { @@ -194,10 +193,10 @@ index bd0ff1e43a07a3332f9ade49fec2f76275a25c7f..f99be13169cfbca05cc440e7abef2197 } diff --git a/src/main/java/net/minecraft/server/SectionPosition.java b/src/main/java/net/minecraft/server/SectionPosition.java -index 7806f3c351cba3f0388da11888f900c48004dadf..6556533acb04f57284f7493c7683232e9dddbd48 100644 +index f95925f1c5d091f1a129d0437bb6e175c6ac080f..cf5b25d9375724ea2afcf5cd59e0ccd302cdf45e 100644 --- a/src/main/java/net/minecraft/server/SectionPosition.java +++ b/src/main/java/net/minecraft/server/SectionPosition.java -@@ -145,6 +145,7 @@ public class SectionPosition extends BaseBlockPosition { +@@ -173,6 +173,7 @@ public class SectionPosition extends BaseBlockPosition { return (((long) i & 4194303L) << 42) | (((long) j & 1048575L)) | (((long) k & 4194303L) << 20); // Paper - Simplify to reduce instruction count } @@ -206,30 +205,22 @@ index 7806f3c351cba3f0388da11888f900c48004dadf..6556533acb04f57284f7493c7683232e return (((long) getX() & 4194303L) << 42) | (((long) getY() & 1048575L)) | (((long) getZ() & 4194303L) << 20); // Paper - Simplify to reduce instruction count } diff --git a/src/main/java/net/minecraft/server/VillagePlaceRecord.java b/src/main/java/net/minecraft/server/VillagePlaceRecord.java -index e5d2304808b2bb93041523968f0b88e020c61c1e..2647dc3646e332189a88d17e08831882e40f2910 100644 +index 0b40c2f4dada7d8432e3f91e9cf206c2bda3b24b..1b956d973ebef2345755201dec3449545c458a60 100644 --- a/src/main/java/net/minecraft/server/VillagePlaceRecord.java +++ b/src/main/java/net/minecraft/server/VillagePlaceRecord.java -@@ -34,6 +34,7 @@ public class VillagePlaceRecord { - this(blockposition, villageplacetype, villageplacetype.b(), runnable); - } - -+ public final boolean decreaseVacany() { return b(); } // Yatopia - OBFHELPER - protected boolean b() { - if (this.c <= 0) { - return false; -@@ -44,6 +45,7 @@ public class VillagePlaceRecord { +@@ -44,6 +44,7 @@ public class VillagePlaceRecord { } } -+ public final boolean increaseVacany() { return c(); } // Yatopia - OBFHELPER ++ protected final boolean increaseVacancy() { return c(); } // Yatopia - OBFHELPER protected boolean c() { if (this.c >= this.b.b()) { return false; -@@ -54,14 +56,17 @@ public class VillagePlaceRecord { +@@ -54,14 +55,17 @@ public class VillagePlaceRecord { } } -+ public final boolean hasVacany() { return d(); } // Yatopia - OBFHELPER ++ public final boolean hasVacancy() { return d(); } // Yatopia - OBFHELPER public boolean d() { return this.c > 0; } @@ -244,7 +235,7 @@ index e5d2304808b2bb93041523968f0b88e020c61c1e..2647dc3646e332189a88d17e08831882 return this.a; } diff --git a/src/main/java/net/minecraft/server/VillagePlaceSection.java b/src/main/java/net/minecraft/server/VillagePlaceSection.java -index e82dcdbce698e2e9bc449fa639b7219821844e14..3aaba7fcaf83a491b9da60d156b7f2379f5a6aeb 100644 +index 77c66bc9952542d2444b402896a3d9f622ca2ff9..d4018b9b615dae2b9e30517be51322656601b171 100644 --- a/src/main/java/net/minecraft/server/VillagePlaceSection.java +++ b/src/main/java/net/minecraft/server/VillagePlaceSection.java @@ -23,12 +23,12 @@ public class VillagePlaceSection { @@ -263,7 +254,7 @@ index e82dcdbce698e2e9bc449fa639b7219821844e14..3aaba7fcaf83a491b9da60d156b7f237 return villageplacesection.e; }), VillagePlaceRecord.a(runnable).listOf().fieldOf("Records").forGetter((villageplacesection) -> { diff --git a/src/main/java/net/minecraft/server/VillagePlaceType.java b/src/main/java/net/minecraft/server/VillagePlaceType.java -index 5bd3bcc2b96f7da21d363809a547b0567407ee75..1fb87bf395ced15bc3ef383dae46a42c5e4d2547 100644 +index a5718af9b614ae505067131f04ebb490617d6aa4..142b47df08991a3e72c9f7927af6933a72f7b4cb 100644 --- a/src/main/java/net/minecraft/server/VillagePlaceType.java +++ b/src/main/java/net/minecraft/server/VillagePlaceType.java @@ -14,11 +14,20 @@ import java.util.stream.Collectors; @@ -272,7 +263,7 @@ index 5bd3bcc2b96f7da21d363809a547b0567407ee75..1fb87bf395ced15bc3ef383dae46a42c + static Set professionCache; // Yatopia private static final Supplier> y = Suppliers.memoize(() -> { - return (Set) IRegistry.VILLAGER_PROFESSION.e().map(VillagerProfession::b).collect(Collectors.toSet()); + return (Set) IRegistry.VILLAGER_PROFESSION.g().map(VillagerProfession::b).collect(Collectors.toSet()); }); public static final Predicate a = (villageplacetype) -> { - return ((Set) VillagePlaceType.y.get()).contains(villageplacetype); diff --git a/patches/server/0034-Use-block-distance-in-portal-search-radius.patch b/patches/server/0033-Use-block-distance-in-portal-search-radius.patch similarity index 70% rename from patches/server/0034-Use-block-distance-in-portal-search-radius.patch rename to patches/server/0033-Use-block-distance-in-portal-search-radius.patch index e45819e5..f5a7111c 100644 --- a/patches/server/0034-Use-block-distance-in-portal-search-radius.patch +++ b/patches/server/0033-Use-block-distance-in-portal-search-radius.patch @@ -12,10 +12,10 @@ This changes it so that the portal list is filtered to only include portals with Ported to Yatopia and added per world config option by MrIvanPlays diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index e0bd3efb0a856774600b8b5487ec7e2b5b81f41d..bac1314a698a07a90f7d577911dc3d20a9047bd9 100644 +index 965cc06a826c7d827e6b9a9e586738bfddc974d8..8d6b24c92df72921e5cc81f4892cc9607a33db52 100644 --- a/src/main/java/de/minebench/origami/OrigamiConfig.java +++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -161,6 +161,11 @@ public final class OrigamiConfig { +@@ -162,6 +162,11 @@ public final class OrigamiConfig { && pillagerCollisions && ironGolemCollisions && miscCollisions && itemCollisions && waterCreatureCollisions && waterAmbientCollisions; } @@ -28,30 +28,31 @@ index e0bd3efb0a856774600b8b5487ec7e2b5b81f41d..bac1314a698a07a90f7d577911dc3d20 } diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java -index 68f693de5eaa5eaa8dc65230ffa95556530c2368..d98cef12e1ad78026bc6cdeeedcb3b724fca8b0b 100644 +index 934ac7fdfa040f1e00fb78b525b801ed525dae7e..7f510d56eacdb4432fb4576de3184f67e4353170 100644 --- a/src/main/java/net/minecraft/server/PortalTravelAgent.java +++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java -@@ -59,6 +59,15 @@ public class PortalTravelAgent { - }, blockposition, searchRadius, VillagePlace.Occupancy.ANY).collect(Collectors.toList()); // CraftBukkit - searchRadius - boolean seen = false; - VillagePlaceRecord best = null; +@@ -30,13 +30,23 @@ public class PortalTravelAgent { + }).thenComparingInt((villageplacerecord) -> { + return villageplacerecord.f().getY(); + }); +- List list = villageplace.b(type -> type == VillagePlaceType.v, blockposition, i, VillagePlace.Occupancy.ANY); ++ java.util.List list = villageplace.b(type -> type == VillagePlaceType.v, blockposition, i, VillagePlace.Occupancy.ANY).collect(java.util.stream.Collectors.toList()); + // Yatopia start - fix portal bug + if (world.origamiConfig.useBlockDistanceInPortalSearchRadius) { + list.removeIf(villagePlaceRecord -> { + BlockPosition portalPosition = villagePlaceRecord.getPosition(); -+ return Math.abs(portalPosition.getX() - blockposition.getX()) > searchRadius -+ || Math.abs(portalPosition.getZ() - blockposition.getZ()) > searchRadius; ++ return Math.abs(portalPosition.getX() - blockposition.getX()) > world.paperConfig.portalSearchRadius ++ || Math.abs(portalPosition.getZ() - blockposition.getZ()) > world.paperConfig.portalSearchRadius; + }); + } + if (!list.isEmpty()) { - Comparator comparator = Comparator.comparingDouble((villageplacerecord) -> { // CraftBukkit - decompile error - return villageplacerecord.f().j(blockposition); - }).thenComparingInt((villageplacerecord) -> { -@@ -70,6 +79,7 @@ public class PortalTravelAgent { + for (VillagePlaceRecord villagePlaceRecord : list) { + if (!seen || comparator.compare(villagePlaceRecord, best) < 0) { + seen = true; best = villagePlaceRecord; } } + } // Yatopia end Optional optional = seen ? Optional.of(best) : Optional.empty(); - return (ShapeDetector.Shape) optional.map((villageplacerecord) -> { + return optional.map((villageplacerecord) -> { diff --git a/patches/server/0035-Intellij-Optimize-Imports.patch b/patches/server/0035-Intellij-Optimize-Imports.patch deleted file mode 100644 index 649e07ed..00000000 --- a/patches/server/0035-Intellij-Optimize-Imports.patch +++ /dev/null @@ -1,13425 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Bud Gidiere -Date: Sun, 9 Aug 2020 17:19:26 -0500 -Subject: [PATCH] Intellij Optimize Imports. - -Do not update, just regen. - -diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java -index 85b25eace786fa0d7694afa405f9d2bdf4937b6e..6c65b2fddf70d51735ecf7fab4548f4279e13a5d 100644 ---- a/src/main/java/co/aikar/timings/MinecraftTimings.java -+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java -@@ -2,11 +2,10 @@ package co.aikar.timings; - - import com.google.common.collect.MapMaker; - import net.minecraft.server.*; -+import org.bukkit.craftbukkit.scheduler.CraftTask; - import org.bukkit.plugin.Plugin; - import org.bukkit.scheduler.BukkitTask; - --import org.bukkit.craftbukkit.scheduler.CraftTask; -- - import java.util.Map; - - // TODO: Re-implement missing timers -diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -index 6a110318441a16cc3ff7dfa2364768279b16358f..25418d5de822c5ce31380c1b8ae0fb43883e0ac6 100644 ---- a/src/main/java/co/aikar/timings/TimingsExport.java -+++ b/src/main/java/co/aikar/timings/TimingsExport.java -@@ -53,12 +53,7 @@ import java.util.logging.Level; - import java.util.zip.GZIPOutputStream; - - import static co.aikar.timings.TimingsManager.HISTORY; --import static co.aikar.util.JSONUtil.appendObjectData; --import static co.aikar.util.JSONUtil.createObject; --import static co.aikar.util.JSONUtil.pair; --import static co.aikar.util.JSONUtil.toArray; --import static co.aikar.util.JSONUtil.toArrayMapper; --import static co.aikar.util.JSONUtil.toObjectMapper; -+import static co.aikar.util.JSONUtil.*; - - @SuppressWarnings({"rawtypes", "SuppressionAnnotation"}) - public class TimingsExport extends Thread { -diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index 98a898f8b8469969e5eb388edb818e519ff68681..27c863ea9d6a91ef7298da5fbd85135b66ff4e73 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperCommand.java -+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java -@@ -1,7 +1,7 @@ - package com.destroystokyo.paper; - --import com.destroystokyo.paper.io.chunk.ChunkTaskManager; - import com.destroystokyo.paper.io.SyncLoadFinder; -+import com.destroystokyo.paper.io.chunk.ChunkTaskManager; - import com.google.common.base.Functions; - import com.google.common.collect.Iterables; - import com.google.common.collect.Lists; -@@ -32,7 +32,6 @@ import java.io.StringWriter; - import java.time.LocalDateTime; - import java.time.format.DateTimeFormatter; - import java.util.*; --import java.util.stream.Collectors; - - public class PaperCommand extends Command { - -diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 1febe2aff4eab2f15e9bc4b21e6d0c350f122c87..fd1e9518ff6555a347b3d14eb510d7be896c9f94 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperConfig.java -+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java -@@ -1,8 +1,20 @@ - package com.destroystokyo.paper; - -+import co.aikar.timings.Timings; -+import co.aikar.timings.TimingsManager; - import com.destroystokyo.paper.io.chunk.ChunkTaskManager; - import com.google.common.base.Strings; - import com.google.common.base.Throwables; -+import com.google.common.collect.Lists; -+import net.minecraft.server.MinecraftServer; -+import org.bukkit.Bukkit; -+import org.bukkit.ChatColor; -+import org.bukkit.command.Command; -+import org.bukkit.configuration.ConfigurationSection; -+import org.bukkit.configuration.InvalidConfigurationException; -+import org.bukkit.configuration.file.YamlConfiguration; -+import org.spigotmc.SpigotConfig; -+import org.spigotmc.WatchdogThread; - - import java.io.File; - import java.io.IOException; -@@ -17,19 +29,6 @@ import java.util.concurrent.TimeUnit; - import java.util.logging.Level; - import java.util.regex.Pattern; - --import com.google.common.collect.Lists; --import net.minecraft.server.MinecraftServer; --import org.bukkit.Bukkit; --import org.bukkit.ChatColor; --import org.bukkit.command.Command; --import org.bukkit.configuration.ConfigurationSection; --import org.bukkit.configuration.InvalidConfigurationException; --import org.bukkit.configuration.file.YamlConfiguration; --import co.aikar.timings.Timings; --import co.aikar.timings.TimingsManager; --import org.spigotmc.SpigotConfig; --import org.spigotmc.WatchdogThread; -- - public class PaperConfig { - - private static File CONFIG_FILE; -diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 60d6469b8115f57a0b117aaef56c8192b7621104..1a0cfc3b768f0b7ccd6b73c1759764ef960a8135 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -3,11 +3,15 @@ package com.destroystokyo.paper; - import com.destroystokyo.paper.util.VersionFetcher; - import com.google.common.base.Charsets; - import com.google.common.io.Resources; --import com.google.gson.*; -+import com.google.gson.Gson; -+import com.google.gson.JsonObject; -+import com.google.gson.JsonSyntaxException; - - import javax.annotation.Nonnull; - import javax.annotation.Nullable; --import java.io.*; -+import java.io.BufferedReader; -+import java.io.IOException; -+import java.io.InputStreamReader; - import java.net.HttpURLConnection; - import java.net.URL; - -diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index c2d5f7d22beb4c4829dfcb55fa842eaf727e906c..b8f3e91d17d2e260401f3a06ef0fb7327d42f059 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -1,11 +1,5 @@ - package com.destroystokyo.paper; - --import java.util.Arrays; --import java.util.EnumMap; --import java.util.HashMap; --import java.util.List; --import java.util.Map; -- - import com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray.EngineMode; - import org.bukkit.Bukkit; - import org.bukkit.Material; -@@ -13,6 +7,8 @@ import org.bukkit.configuration.ConfigurationSection; - import org.bukkit.configuration.file.YamlConfiguration; - import org.spigotmc.SpigotWorldConfig; - -+import java.util.*; -+ - import static com.destroystokyo.paper.PaperConfig.log; - import static com.destroystokyo.paper.PaperConfig.logError; - -diff --git a/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java -index f699ce18ca044f813e194ef2786b7ea853ea86e7..033c1339ad70de046c54b2efc1736f8783c147c2 100644 ---- a/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java -+++ b/src/main/java/com/destroystokyo/paper/ServerSchedulerReportingWrapper.java -@@ -1,9 +1,9 @@ - package com.destroystokyo.paper; - --import com.google.common.base.Preconditions; --import org.bukkit.craftbukkit.scheduler.CraftTask; - import com.destroystokyo.paper.event.server.ServerExceptionEvent; - import com.destroystokyo.paper.exception.ServerSchedulerException; -+import com.google.common.base.Preconditions; -+import org.bukkit.craftbukkit.scheduler.CraftTask; - - /** - * Reporting wrapper to catch exceptions not natively -diff --git a/src/main/java/com/destroystokyo/paper/VersionHistoryManager.java b/src/main/java/com/destroystokyo/paper/VersionHistoryManager.java -index aac3f66cb23d260729c2a48d8710a9de2346aa22..0a2520e4372baa98b91398a1818fccafbe006746 100644 ---- a/src/main/java/com/destroystokyo/paper/VersionHistoryManager.java -+++ b/src/main/java/com/destroystokyo/paper/VersionHistoryManager.java -@@ -3,6 +3,10 @@ package com.destroystokyo.paper; - import com.google.common.base.MoreObjects; - import com.google.gson.Gson; - import com.google.gson.JsonSyntaxException; -+import org.bukkit.Bukkit; -+ -+import javax.annotation.Nonnull; -+import javax.annotation.Nullable; - import java.io.BufferedReader; - import java.io.BufferedWriter; - import java.io.IOException; -@@ -14,10 +18,6 @@ import java.nio.file.StandardOpenOption; - import java.util.Objects; - import java.util.logging.Level; - import java.util.logging.Logger; --import org.bukkit.Bukkit; -- --import javax.annotation.Nonnull; --import javax.annotation.Nullable; - - public enum VersionHistoryManager { - INSTANCE; -diff --git a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockController.java b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockController.java -index df7e4183d8842f5be8ae9d0698f8fa90742ff43c..87483f14d546d3557b3add5fde30672eab0690c2 100644 ---- a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockController.java -+++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockController.java -@@ -1,14 +1,6 @@ - package com.destroystokyo.paper.antixray; - --import net.minecraft.server.BlockPosition; --import net.minecraft.server.Chunk; --import net.minecraft.server.ChunkSection; --import net.minecraft.server.EnumDirection; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IChunkAccess; --import net.minecraft.server.PacketPlayOutMapChunk; --import net.minecraft.server.PlayerInteractManager; --import net.minecraft.server.World; -+import net.minecraft.server.*; - - public class ChunkPacketBlockController { - -diff --git a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java -index c0d7767adb996edf9f645be591e4eee1d1dddf97..604c3811ee915f1624e7098cccead7b9f703aa78 100644 ---- a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java -+++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java -@@ -1,17 +1,16 @@ - package com.destroystokyo.paper.antixray; - -+import com.destroystokyo.paper.PaperWorldConfig; -+import net.minecraft.server.*; -+import org.bukkit.Bukkit; -+import org.bukkit.World.Environment; -+ - import java.util.ArrayList; - import java.util.HashSet; - import java.util.List; - import java.util.Set; - import java.util.concurrent.Executor; - --import net.minecraft.server.*; --import org.bukkit.Bukkit; --import org.bukkit.World.Environment; -- --import com.destroystokyo.paper.PaperWorldConfig; -- - public final class ChunkPacketBlockControllerAntiXray extends ChunkPacketBlockController { - - private final Executor executor; -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index 7b12014db0abd9c4b89f58ceaaa7d9dd032b027a..6e72904dfd1ead41ddfaf81abfe589216d9dddeb 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -1,24 +1,15 @@ - package com.destroystokyo.paper.entity.ai; - --import com.google.common.collect.BiMap; --import com.google.common.collect.HashBiMap; -- - import com.destroystokyo.paper.entity.RangedEntity; --import com.destroystokyo.paper.entity.ai.GoalKey; --import com.destroystokyo.paper.entity.ai.GoalType; - import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; -- --import net.minecraft.server.*; // intentional star import -+import com.google.common.collect.BiMap; -+import com.google.common.collect.HashBiMap; -+import net.minecraft.server.*; -+import org.bukkit.NamespacedKey; -+import org.bukkit.entity.*; - - import java.lang.reflect.Constructor; --import java.util.EnumSet; --import java.util.HashMap; --import java.util.HashSet; --import java.util.Map; --import java.util.Set; -- --import org.bukkit.NamespacedKey; --import org.bukkit.entity.*; // intentional star import -+import java.util.*; - - public class MobGoalHelper { - -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java -index 5720feaaf92fc8b6a70e7f6e2d25163c42d231c1..ab9103b239cd79c05a697ca50104412b7f266115 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperCustomGoal.java -@@ -1,7 +1,6 @@ - package com.destroystokyo.paper.entity.ai; - - import net.minecraft.server.PathfinderGoal; -- - import org.bukkit.entity.Mob; - - /** -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java -index 45b383f4d118d076e41c42b5b158b2a3713341a8..5d04c63384729b697e5f72aa0bd69c5237595504 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperMobGoals.java -@@ -3,19 +3,11 @@ package com.destroystokyo.paper.entity.ai; - import net.minecraft.server.PathfinderGoal; - import net.minecraft.server.PathfinderGoalSelector; - import net.minecraft.server.PathfinderGoalWrapped; -- --import java.util.Collection; --import java.util.EnumSet; --import java.util.HashMap; --import java.util.HashSet; --import java.util.LinkedList; --import java.util.List; --import java.util.Map; --import java.util.Set; -- - import org.bukkit.craftbukkit.entity.CraftMob; - import org.bukkit.entity.Mob; - -+import java.util.*; -+ - public class PaperMobGoals implements MobGoals { - - private final Map> instanceCache = new HashMap<>(); -diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java -index 2988e3d1b37d73b6d1ef514acd237e88a5cc079e..57ed9276dea3ff001e864ef467733ea7e63fbea3 100644 ---- a/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java -+++ b/src/main/java/com/destroystokyo/paper/entity/ai/PaperVanillaGoal.java -@@ -1,11 +1,10 @@ - package com.destroystokyo.paper.entity.ai; - - import net.minecraft.server.PathfinderGoal; -+import org.bukkit.entity.Mob; - - import java.util.EnumSet; - --import org.bukkit.entity.Mob; -- - /** - * Wraps vanilla in api - */ -diff --git a/src/main/java/com/destroystokyo/paper/gui/GraphColor.java b/src/main/java/com/destroystokyo/paper/gui/GraphColor.java -index a4e641fdcccd3efcd1a2865dc6dc28d50671b995..b91edf034a0efe3659b104180cf3f20c64142df7 100644 ---- a/src/main/java/com/destroystokyo/paper/gui/GraphColor.java -+++ b/src/main/java/com/destroystokyo/paper/gui/GraphColor.java -@@ -1,6 +1,6 @@ - package com.destroystokyo.paper.gui; - --import java.awt.Color; -+import java.awt.*; - - public class GraphColor { - private static final Color[] colorLine = new Color[101]; -diff --git a/src/main/java/com/destroystokyo/paper/gui/GraphData.java b/src/main/java/com/destroystokyo/paper/gui/GraphData.java -index 186fc722965e403f76b1480e1c2381fc34e29049..3ec7a1ac40aee54854a662540ecb5726c5773acc 100644 ---- a/src/main/java/com/destroystokyo/paper/gui/GraphData.java -+++ b/src/main/java/com/destroystokyo/paper/gui/GraphData.java -@@ -1,6 +1,6 @@ - package com.destroystokyo.paper.gui; - --import java.awt.Color; -+import java.awt.*; - - public class GraphData { - private long total; -diff --git a/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java b/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java -index 0f29ad583e798c09b2fe3f568ed50cbc719e40e2..4c8c46f59d48f7658a344c4f53c64eb4a2effd87 100644 ---- a/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java -+++ b/src/main/java/com/destroystokyo/paper/gui/GuiStatsComponent.java -@@ -2,10 +2,8 @@ package com.destroystokyo.paper.gui; - - import net.minecraft.server.MinecraftServer; - --import javax.swing.JPanel; --import javax.swing.Timer; --import java.awt.BorderLayout; --import java.awt.Dimension; -+import javax.swing.*; -+import java.awt.*; - - public class GuiStatsComponent extends JPanel { - private final Timer timer; -diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -index e463a86a6ad6c4f2885f4df159411bad294e1208..689330cc46cc83ff4500334e7d8108ec85bf4a86 100644 ---- a/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -+++ b/src/main/java/com/destroystokyo/paper/gui/RAMDetails.java -@@ -2,13 +2,10 @@ package com.destroystokyo.paper.gui; - - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.SystemUtils; --import org.bukkit.Bukkit; - --import javax.swing.DefaultListCellRenderer; --import javax.swing.DefaultListSelectionModel; --import javax.swing.JList; -+import javax.swing.*; - import javax.swing.border.EmptyBorder; --import java.awt.Dimension; -+import java.awt.*; - import java.text.DecimalFormat; - import java.text.DecimalFormatSymbols; - import java.util.Locale; -diff --git a/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java b/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java -index c3e54da4ab6440811aab2f9dd1e218802ac13285..9461f95941957f7956e939aa3c8a68d8f9e12d77 100644 ---- a/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java -+++ b/src/main/java/com/destroystokyo/paper/gui/RAMGraph.java -@@ -1,15 +1,7 @@ - package com.destroystokyo.paper.gui; - --import javax.swing.JComponent; --import javax.swing.SwingUtilities; --import javax.swing.Timer; --import javax.swing.ToolTipManager; --import java.awt.Color; --import java.awt.Dimension; --import java.awt.Graphics; --import java.awt.MouseInfo; --import java.awt.Point; --import java.awt.PointerInfo; -+import javax.swing.*; -+import java.awt.*; - import java.awt.event.MouseAdapter; - import java.awt.event.MouseEvent; - import java.text.SimpleDateFormat; -diff --git a/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java b/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java -index 1917d7be7dfddc93c95b9fd864cf13f9a24c8f96..6962d0874d2b91ccec06f27acc2e99c822a86ac8 100644 ---- a/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java -+++ b/src/main/java/com/destroystokyo/paper/io/PaperFileIOThread.java -@@ -1,10 +1,6 @@ - package com.destroystokyo.paper.io; - --import net.minecraft.server.ChunkCoordIntPair; --import net.minecraft.server.MinecraftServer; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.RegionFile; --import net.minecraft.server.WorldServer; -+import net.minecraft.server.*; - import org.apache.logging.log4j.Logger; - - import java.io.IOException; -diff --git a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java -index 6ccaf3491923f3092819f71c362045bba4952093..f4288b0ae09ca3a8bc8412093a73d01937ddb544 100644 ---- a/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java -+++ b/src/main/java/com/destroystokyo/paper/io/SyncLoadFinder.java -@@ -5,7 +5,6 @@ import com.google.gson.JsonObject; - import com.mojang.datafixers.util.Pair; - import it.unimi.dsi.fastutil.longs.Long2IntMap; - import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; --import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; - import net.minecraft.server.World; - -diff --git a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkLoadTask.java b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkLoadTask.java -index 6367092663a213793367ccb65733afc119e4883c..7d697662b7777bfb200c0efb3f69b9c9cbc2b022 100644 ---- a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkLoadTask.java -+++ b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkLoadTask.java -@@ -1,8 +1,8 @@ - package com.destroystokyo.paper.io.chunk; - - import co.aikar.timings.Timing; --import com.destroystokyo.paper.io.PaperFileIOThread; - import com.destroystokyo.paper.io.IOUtil; -+import com.destroystokyo.paper.io.PaperFileIOThread; - import net.minecraft.server.ChunkCoordIntPair; - import net.minecraft.server.ChunkRegionLoader; - import net.minecraft.server.PlayerChunkMap; -diff --git a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkSaveTask.java b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkSaveTask.java -index 60312b85f9e7070378458f29afee0ebb7850d8a5..df83cd02ed3c47754063af86b2a214709b0373d0 100644 ---- a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkSaveTask.java -+++ b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkSaveTask.java -@@ -1,11 +1,10 @@ - package com.destroystokyo.paper.io.chunk; - - import co.aikar.timings.Timing; --import com.destroystokyo.paper.io.PaperFileIOThread; - import com.destroystokyo.paper.io.IOUtil; -+import com.destroystokyo.paper.io.PaperFileIOThread; - import com.destroystokyo.paper.io.PrioritizedTaskQueue; - import net.minecraft.server.ChunkRegionLoader; --import net.minecraft.server.IAsyncTaskHandler; - import net.minecraft.server.IChunkAccess; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.WorldServer; -diff --git a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java -index bcb7ce2692c5bc1a6214c3a384949666107864fb..815b630a01c91af0cb7738a0c4f9bb0604d94ecc 100644 ---- a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java -+++ b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java -@@ -1,19 +1,10 @@ - package com.destroystokyo.paper.io.chunk; - --import com.destroystokyo.paper.io.PaperFileIOThread; - import com.destroystokyo.paper.io.IOUtil; -+import com.destroystokyo.paper.io.PaperFileIOThread; - import com.destroystokyo.paper.io.PrioritizedTaskQueue; - import com.destroystokyo.paper.io.QueueExecutorThread; --import it.unimi.dsi.fastutil.longs.Long2ObjectMap; --import net.minecraft.server.ChunkCoordIntPair; --import net.minecraft.server.ChunkRegionLoader; --import net.minecraft.server.ChunkStatus; --import net.minecraft.server.IAsyncTaskHandler; --import net.minecraft.server.IChunkAccess; --import net.minecraft.server.MinecraftServer; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.PlayerChunk; --import net.minecraft.server.WorldServer; -+import net.minecraft.server.*; - import org.apache.commons.lang.StringUtils; - import org.apache.logging.log4j.Level; - import org.bukkit.Bukkit; -diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java -index b5401eaf974857455c17c3f9cfdedf2eb4bde321..faa835b79d4e668b973ccc2a543d7928f8db93ab 100644 ---- a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java -+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java -@@ -1,7 +1,9 @@ - package com.destroystokyo.paper.loottable; - - import com.destroystokyo.paper.PaperWorldConfig; --import net.minecraft.server.*; -+import net.minecraft.server.EntityHuman; -+import net.minecraft.server.NBTTagCompound; -+import net.minecraft.server.NBTTagList; - import org.bukkit.entity.Player; - import org.bukkit.loot.LootTable; - -diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperMinecartLootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperMinecartLootableInventory.java -index 8c1fa60a55570be91ab5ea63cb2005caa09e3600..2d7cd434374c904e6621110d617da5655002118a 100644 ---- a/src/main/java/com/destroystokyo/paper/loottable/PaperMinecartLootableInventory.java -+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperMinecartLootableInventory.java -@@ -2,7 +2,6 @@ package com.destroystokyo.paper.loottable; - - import net.minecraft.server.Entity; - import net.minecraft.server.EntityMinecartContainer; --import net.minecraft.server.MinecraftKey; - import net.minecraft.server.World; - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; -diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java -index a1923aff2b5e2e867670a5a064a767915fc1cc2a..f75042e7b7a00bd4da3c56c4ddf65d27fac2c119 100644 ---- a/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java -+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperTileEntityLootableInventory.java -@@ -1,7 +1,6 @@ - package com.destroystokyo.paper.loottable; - - import net.minecraft.server.MCUtil; --import net.minecraft.server.MinecraftKey; - import net.minecraft.server.TileEntityLootable; - import net.minecraft.server.World; - import org.bukkit.Bukkit; -diff --git a/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java b/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java -index 74c012fd40491f1d870fbc1aa8c318a2197eb106..4306de5611c488fa7ac7f3ed5a68afcb628f60d8 100644 ---- a/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java -+++ b/src/main/java/com/destroystokyo/paper/network/PaperLegacyStatusClient.java -@@ -5,9 +5,8 @@ import net.minecraft.server.MinecraftServer; - import org.apache.commons.lang3.StringUtils; - import org.bukkit.ChatColor; - --import java.net.InetSocketAddress; -- - import javax.annotation.Nullable; -+import java.net.InetSocketAddress; - - public final class PaperLegacyStatusClient implements StatusClient { - -diff --git a/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java -index 5caca6439d2135e34880d501397fe2ea197d7249..2295f22d78971147443e8a7b8ecee64dfc7eb937 100644 ---- a/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java -+++ b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java -@@ -2,9 +2,8 @@ package com.destroystokyo.paper.network; - - import net.minecraft.server.NetworkManager; - --import java.net.InetSocketAddress; -- - import javax.annotation.Nullable; -+import java.net.InetSocketAddress; - - public class PaperNetworkClient implements NetworkClient { - -diff --git a/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java b/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java -index 26ddf92f86fccc2b2562f7abf4788d1ed6b73205..dfec5882598f09492e9a17de25774a4c6c04da7a 100644 ---- a/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java -+++ b/src/main/java/com/destroystokyo/paper/network/StandardPaperServerListPingEventImpl.java -@@ -11,11 +11,10 @@ import net.minecraft.server.PacketStatusOutServerInfo; - import net.minecraft.server.ServerPing; - import org.bukkit.craftbukkit.util.CraftChatMessage; - -+import javax.annotation.Nonnull; - import java.util.List; - import java.util.UUID; - --import javax.annotation.Nonnull; -- - public final class StandardPaperServerListPingEventImpl extends PaperServerListPingEventImpl { - - private static final GameProfile[] EMPTY_PROFILES = new GameProfile[0]; -diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java -index 2a67013f6d2656a3d89cb042ba401bcaeb731d83..9e2f0107b27f37ce13616c32f4b5691aae221fc8 100644 ---- a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java -+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java -@@ -13,12 +13,7 @@ import org.spigotmc.SpigotConfig; - - import javax.annotation.Nonnull; - import javax.annotation.Nullable; --import java.util.AbstractSet; --import java.util.Collection; --import java.util.Iterator; --import java.util.Objects; --import java.util.Set; --import java.util.UUID; -+import java.util.*; - - public class CraftPlayerProfile implements PlayerProfile { - -diff --git a/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java b/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java -index 5c7d2ee19243d0911a3a00af3ae42078a2ccba94..f3c8fc22bd1bfce1d40608de17dafc854c907171 100644 ---- a/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java -+++ b/src/main/java/com/destroystokyo/paper/profile/PaperMinecraftSessionService.java -@@ -1,8 +1,8 @@ - package com.destroystokyo.paper.profile; - --import com.mojang.authlib.Environment; - import com.destroystokyo.paper.event.profile.FillProfileEvent; - import com.destroystokyo.paper.event.profile.PreFillProfileEvent; -+import com.mojang.authlib.Environment; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.minecraft.MinecraftProfileTexture; - import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; -diff --git a/src/main/java/com/destroystokyo/paper/proxy/VelocityProxy.java b/src/main/java/com/destroystokyo/paper/proxy/VelocityProxy.java -index fdd8708f974700c7cde6e436c2f189d94d336f1f..2f6d79f8ce9e3392b98286b9568bcda4bc7d88aa 100644 ---- a/src/main/java/com/destroystokyo/paper/proxy/VelocityProxy.java -+++ b/src/main/java/com/destroystokyo/paper/proxy/VelocityProxy.java -@@ -7,14 +7,13 @@ import com.mojang.authlib.properties.Property; - import net.minecraft.server.MinecraftKey; - import net.minecraft.server.PacketDataSerializer; - -+import javax.crypto.Mac; -+import javax.crypto.spec.SecretKeySpec; - import java.net.InetAddress; - import java.security.InvalidKeyException; - import java.security.MessageDigest; - import java.security.NoSuchAlgorithmException; - --import javax.crypto.Mac; --import javax.crypto.spec.SecretKeySpec; -- - public class VelocityProxy { - private static final int SUPPORTED_FORWARDING_VERSION = 1; - public static final MinecraftKey PLAYER_INFO_CHANNEL = new MinecraftKey("velocity", "player_info"); -diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java -index 253b73cfc597d4c7106d969be7b18c68166128ae..62403feec70ca2aedcd0928bd22b8d05d08b2d7e 100644 ---- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java -+++ b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java -@@ -1,30 +1,11 @@ - package com.destroystokyo.paper.server.ticklist; - --import net.minecraft.server.MCUtil; --import net.minecraft.server.MinecraftServer; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectRBTreeSet; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.ChunkCoordIntPair; --import net.minecraft.server.ChunkProviderServer; --import net.minecraft.server.CrashReport; --import net.minecraft.server.CrashReportSystemDetails; --import net.minecraft.server.IBlockData; --import net.minecraft.server.MinecraftKey; --import net.minecraft.server.NBTTagList; --import net.minecraft.server.NextTickListEntry; --import net.minecraft.server.ReportedException; --import net.minecraft.server.StructureBoundingBox; --import net.minecraft.server.TickListPriority; --import net.minecraft.server.TickListServer; --import net.minecraft.server.WorldServer; --import java.util.ArrayDeque; --import java.util.ArrayList; --import java.util.Collections; --import java.util.Comparator; --import java.util.Iterator; --import java.util.List; -+import net.minecraft.server.*; -+ -+import java.util.*; - import java.util.function.Consumer; - import java.util.function.Function; - import java.util.function.Predicate; -diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/TickListServerInterval.java b/src/main/java/com/destroystokyo/paper/server/ticklist/TickListServerInterval.java -index 13cf1a55a9babbffccbca1acfbe1c496e8925521..ffba88a3dbf78052e4b9314fae8c67d07bd55b9f 100644 ---- a/src/main/java/com/destroystokyo/paper/server/ticklist/TickListServerInterval.java -+++ b/src/main/java/com/destroystokyo/paper/server/ticklist/TickListServerInterval.java -@@ -3,6 +3,7 @@ package com.destroystokyo.paper.server.ticklist; - import com.destroystokyo.paper.util.set.LinkedSortedSet; - import net.minecraft.server.NextTickListEntry; - import net.minecraft.server.TickListPriority; -+ - import java.util.Comparator; - - // represents a set of entries to tick at a specified time -diff --git a/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java b/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java -index 9ebd7ecb7a0ac73ccacf34c097056598bb5d26e8..bb1e0b6c8d98a221a2f60cba454f9d5fe81c39ab 100644 ---- a/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java -+++ b/src/main/java/com/destroystokyo/paper/util/PlayerMobDistanceMap.java -@@ -7,10 +7,10 @@ import net.minecraft.server.ChunkCoordIntPair; - import net.minecraft.server.EntityPlayer; - import net.minecraft.server.SectionPosition; - import org.spigotmc.AsyncCatcher; -+ - import java.util.HashMap; - import java.util.List; - import java.util.Map; --import java.util.Set; - - /** @author Spottedleaf */ - public final class PlayerMobDistanceMap { -diff --git a/src/main/java/com/destroystokyo/paper/util/PooledHashSets.java b/src/main/java/com/destroystokyo/paper/util/PooledHashSets.java -index 4f13d3ff8391793a99f067189f854078334499c6..132f8d476620e03388f4f2d9e31cf0d9d0d77ac0 100644 ---- a/src/main/java/com/destroystokyo/paper/util/PooledHashSets.java -+++ b/src/main/java/com/destroystokyo/paper/util/PooledHashSets.java -@@ -2,6 +2,7 @@ package com.destroystokyo.paper.util; - - import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; -+ - import java.lang.ref.WeakReference; - import java.util.Iterator; - -diff --git a/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java -index b69803cbf2db2781aa050b145bf88468254880ae..9989cf178c781b3a8651b828870b3983018e2251 100644 ---- a/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java -+++ b/src/main/java/com/destroystokyo/paper/util/RedstoneWireTurbo.java -@@ -1,21 +1,13 @@ - package com.destroystokyo.paper.util; - --import java.util.List; --import java.util.Map; --import java.util.concurrent.ThreadLocalRandom; -- --import org.bukkit.event.block.BlockRedstoneEvent; -- - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; -+import net.minecraft.server.*; -+import org.bukkit.event.block.BlockRedstoneEvent; - --import net.minecraft.server.Block; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.BlockRedstoneWire; --import net.minecraft.server.IBlockData; --import net.minecraft.server.Items; --import net.minecraft.server.ItemStack; --import net.minecraft.server.World; -+import java.util.List; -+import java.util.Map; -+import java.util.concurrent.ThreadLocalRandom; - - /** - * Used for the faster redstone algorithm. -diff --git a/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java b/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java -index 7bab31a312463cc963d9621cdc543a281459bd32..f6b1059a67d48a8326dfd3b84016610873dc1b49 100644 ---- a/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java -+++ b/src/main/java/com/destroystokyo/paper/util/map/QueuedChangesMapLong2Object.java -@@ -4,6 +4,7 @@ import com.destroystokyo.paper.util.concurrent.WeakSeqLock; - import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap; - import it.unimi.dsi.fastutil.objects.ObjectBidirectionalIterator; -+ - import java.util.ArrayList; - import java.util.Collection; - import java.util.List; -diff --git a/src/main/java/com/destroystokyo/paper/util/maplist/ChunkList.java b/src/main/java/com/destroystokyo/paper/util/maplist/ChunkList.java -index 4eac0577862450e0e3299f5579f9ff6759b0256d..98d958544c03c35b8a9388a23c67ab695ef4a90a 100644 ---- a/src/main/java/com/destroystokyo/paper/util/maplist/ChunkList.java -+++ b/src/main/java/com/destroystokyo/paper/util/maplist/ChunkList.java -@@ -2,7 +2,7 @@ package com.destroystokyo.paper.util.maplist; - - import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; - import net.minecraft.server.Chunk; --import net.minecraft.server.MCUtil; -+ - import java.util.Arrays; - import java.util.Iterator; - import java.util.NoSuchElementException; -diff --git a/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java b/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java -index cdda74564ced196ae577a64782236c2bfe36e433..66f84c6ab08221b8db3be382df4372301c9bd8e9 100644 ---- a/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java -+++ b/src/main/java/com/destroystokyo/paper/util/maplist/EntityList.java -@@ -2,6 +2,7 @@ package com.destroystokyo.paper.util.maplist; - - import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - import net.minecraft.server.Entity; -+ - import java.util.Arrays; - import java.util.Iterator; - import java.util.NoSuchElementException; -diff --git a/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java b/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java -index 84ef8d9ecab4745a90504718f803110b9e2dbf65..79da166d52ccc9eaf557592178d3a2d150730e8f 100644 ---- a/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java -+++ b/src/main/java/com/destroystokyo/paper/util/maplist/IBlockDataList.java -@@ -5,6 +5,7 @@ import it.unimi.dsi.fastutil.shorts.Short2LongOpenHashMap; - import net.minecraft.server.ChunkSection; - import net.minecraft.server.DataPaletteGlobal; - import net.minecraft.server.IBlockData; -+ - import java.util.Arrays; - - /** -diff --git a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java -index 1330df2c1d3c4f52dad0adeb169409eb412814ab..53e14a76629bc349a93adb558d6c8818f574c7d4 100644 ---- a/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java -+++ b/src/main/java/com/destroystokyo/paper/util/misc/AreaMap.java -@@ -8,6 +8,7 @@ import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; - import net.minecraft.server.ChunkCoordIntPair; - import net.minecraft.server.MCUtil; - import net.minecraft.server.MinecraftServer; -+ - import javax.annotation.Nullable; - import java.util.Iterator; - -diff --git a/src/main/java/com/destroystokyo/paper/util/misc/PooledLinkedHashSets.java b/src/main/java/com/destroystokyo/paper/util/misc/PooledLinkedHashSets.java -index e51104e65a07b6ea7bbbcbb6afb066ef6401cc5b..3a317dbd9ff86c943ab97116f3e9c05b445a61b0 100644 ---- a/src/main/java/com/destroystokyo/paper/util/misc/PooledLinkedHashSets.java -+++ b/src/main/java/com/destroystokyo/paper/util/misc/PooledLinkedHashSets.java -@@ -2,6 +2,7 @@ package com.destroystokyo.paper.util.misc; - - import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -+ - import java.lang.ref.WeakReference; - - /** @author Spottedleaf */ -diff --git a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java -index 8e182fdd69dba6e1c52e2f6a893534d77fb3bfaa..cfddb85b5321e0fe5808e9bf52c9f8981983d443 100644 ---- a/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java -+++ b/src/main/java/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java -@@ -3,12 +3,7 @@ package com.mojang.authlib.yggdrasil; - import com.google.common.base.Strings; - import com.google.common.collect.Iterables; - import com.google.common.collect.Sets; --import com.mojang.authlib.Agent; --import com.mojang.authlib.Environment; --import com.mojang.authlib.GameProfile; --import com.mojang.authlib.GameProfileRepository; --import com.mojang.authlib.HttpAuthenticationService; --import com.mojang.authlib.ProfileLookupCallback; -+import com.mojang.authlib.*; - import com.mojang.authlib.exceptions.AuthenticationException; - import com.mojang.authlib.yggdrasil.response.ProfileSearchResultsResponse; - import org.apache.logging.log4j.LogManager; -diff --git a/src/main/java/com/mojang/brigadier/tree/CommandNode.java b/src/main/java/com/mojang/brigadier/tree/CommandNode.java -index ca0d664487a65a4768f0e65af6a320fd1875de8f..debd9ee0ec1af6481dbe7d0e732c7b2c8cc979ac 100644 ---- a/src/main/java/com/mojang/brigadier/tree/CommandNode.java -+++ b/src/main/java/com/mojang/brigadier/tree/CommandNode.java -@@ -1,6 +1,7 @@ - package com.mojang.brigadier.tree; - - // CHECKSTYLE:OFF -+ - import com.google.common.collect.ComparisonChain; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; -@@ -14,17 +15,14 @@ import com.mojang.brigadier.context.CommandContextBuilder; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.suggestion.Suggestions; - import com.mojang.brigadier.suggestion.SuggestionsBuilder; -+import net.minecraft.server.CommandListenerWrapper; - - import java.util.Collection; - import java.util.Collections; --import java.util.LinkedHashMap; - import java.util.Map; - import java.util.Set; - import java.util.concurrent.CompletableFuture; - import java.util.function.Predicate; --import java.util.stream.Collectors; -- --import net.minecraft.server.CommandListenerWrapper; // CraftBukkit - - public abstract class CommandNode implements Comparable> { - private Map> children = Maps.newTreeMap(); //Paper - Switch to tree map for automatic sorting -diff --git a/src/main/java/com/mojang/datafixers/util/Either.java b/src/main/java/com/mojang/datafixers/util/Either.java -index 3f65fe71024928e35111fc6719a290aab9a6859e..9f4f02d96b872d49237ddd062d902b9928de1fc9 100644 ---- a/src/main/java/com/mojang/datafixers/util/Either.java -+++ b/src/main/java/com/mojang/datafixers/util/Either.java -@@ -2,11 +2,7 @@ - // Licensed under the MIT license. - package com.mojang.datafixers.util; - --import com.mojang.datafixers.kinds.App; --import com.mojang.datafixers.kinds.Applicative; --import com.mojang.datafixers.kinds.CocartesianLike; --import com.mojang.datafixers.kinds.K1; --import com.mojang.datafixers.kinds.Traversable; -+import com.mojang.datafixers.kinds.*; - - import java.util.Objects; - import java.util.Optional; -diff --git a/src/main/java/com/proximyst/rainforest/RainforestCommand.java b/src/main/java/com/proximyst/rainforest/RainforestCommand.java -index 9e26fa3bff387e362a6748266df8742cf5682af6..86550dfcc77dce295ecdffee6f83e9eb697fdf3b 100644 ---- a/src/main/java/com/proximyst/rainforest/RainforestCommand.java -+++ b/src/main/java/com/proximyst/rainforest/RainforestCommand.java -@@ -1,10 +1,6 @@ - package com.proximyst.rainforest; - - import com.destroystokyo.paper.PaperCommand; --import java.io.File; --import java.util.Collections; --import java.util.List; --import java.util.Locale; - import net.md_5.bungee.api.ChatColor; - import net.md_5.bungee.api.chat.ComponentBuilder; - import net.minecraft.server.MinecraftServer; -@@ -13,6 +9,11 @@ import org.bukkit.Location; - import org.bukkit.command.Command; - import org.bukkit.command.CommandSender; - -+import java.io.File; -+import java.util.Collections; -+import java.util.List; -+import java.util.Locale; -+ - public class RainforestCommand extends Command { - public RainforestCommand(String name) { - super(name); -diff --git a/src/main/java/com/proximyst/rainforest/RainforestConfig.java b/src/main/java/com/proximyst/rainforest/RainforestConfig.java -index c4092282040d4e7cd960b6922feb8b179a6a8ada..0ba65e2e76b6680e8ea1b36989a402c3dac5eed9 100644 ---- a/src/main/java/com/proximyst/rainforest/RainforestConfig.java -+++ b/src/main/java/com/proximyst/rainforest/RainforestConfig.java -@@ -1,22 +1,21 @@ - package com.proximyst.rainforest; - - import com.google.common.base.Throwables; -+import net.minecraft.server.MinecraftServer; -+import org.bukkit.Bukkit; -+import org.bukkit.command.Command; -+import org.bukkit.configuration.file.YamlConfiguration; -+ - import java.io.File; - import java.io.IOException; - import java.lang.reflect.InvocationTargetException; - import java.lang.reflect.Method; - import java.lang.reflect.Modifier; --import java.util.HashMap; - import java.util.List; - import java.util.Map; - import java.util.concurrent.TimeUnit; - import java.util.logging.Level; - import java.util.regex.Pattern; --import net.minecraft.server.MinecraftServer; --import org.bukkit.Bukkit; --import org.bukkit.command.Command; --import org.bukkit.configuration.InvalidConfigurationException; --import org.bukkit.configuration.file.YamlConfiguration; - - // Based on PaperConfig - public final class RainforestConfig { -diff --git a/src/main/java/com/proximyst/rainforest/RainforestWorldConfig.java b/src/main/java/com/proximyst/rainforest/RainforestWorldConfig.java -index 081a5344b86e300ae7aa722b9b0ca84c77844e49..bc5e25f4b4ebb4fee8635c92c3b35841c01137f8 100644 ---- a/src/main/java/com/proximyst/rainforest/RainforestWorldConfig.java -+++ b/src/main/java/com/proximyst/rainforest/RainforestWorldConfig.java -@@ -1,11 +1,12 @@ - package com.proximyst.rainforest; - --import static com.proximyst.rainforest.RainforestConfig.log; -- - import com.destroystokyo.paper.PaperWorldConfig; --import java.util.List; - import org.bukkit.configuration.file.YamlConfiguration; - -+import java.util.List; -+ -+import static com.proximyst.rainforest.RainforestConfig.log; -+ - // Based on PaperWorldConfig - public final class RainforestWorldConfig { - private final String worldName; -diff --git a/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java -index f599725e17d2ec6020e9fff0ec55f4d14a5c0844..5fb61b126428a12166bc3453a83a802093e1f43a 100644 ---- a/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java -+++ b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java -@@ -2,13 +2,13 @@ package com.tuinity.tuinity.chunk; - - import co.aikar.timings.MinecraftTimings; - import co.aikar.timings.Timing; --import com.google.common.collect.Iterators; - import com.tuinity.tuinity.util.maplist.IteratorSafeOrderedReferenceSet; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet; - import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; - import net.minecraft.server.MCUtil; - import net.minecraft.server.WorldServer; -+ - import java.util.ArrayList; - import java.util.EnumMap; - import java.util.Iterator; -diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java -index 1c7b858ed53f853541724e8d3fdae4e0e82e5d4f..26959488c92193c30fa9992a705e61103ccfd322 100644 ---- a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java -+++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java -@@ -5,10 +5,10 @@ import net.minecraft.server.TicketType; - import org.bukkit.Bukkit; - import org.bukkit.configuration.ConfigurationSection; - import org.bukkit.configuration.file.YamlConfiguration; -+ - import java.io.File; - import java.lang.reflect.Method; - import java.lang.reflect.Modifier; --import java.util.List; - import java.util.logging.Level; - - public final class TuinityConfig { -diff --git a/src/main/java/com/tuinity/tuinity/util/CachedLists.java b/src/main/java/com/tuinity/tuinity/util/CachedLists.java -index a54f516ba72806c0470259436f889faa8f6e7586..59e0dcac498a6ca1f761aa00cf5fbb660a454a33 100644 ---- a/src/main/java/com/tuinity/tuinity/util/CachedLists.java -+++ b/src/main/java/com/tuinity/tuinity/util/CachedLists.java -@@ -4,6 +4,7 @@ import net.minecraft.server.AxisAlignedBB; - import net.minecraft.server.Entity; - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.util.UnsafeList; -+ - import java.util.List; - - public class CachedLists { -diff --git a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -index b0f1e21e6e34f2a339fdec5f0f951a103599ac2d..f4aba8398bdf49a94061955821e8562fe60c4564 100644 ---- a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -+++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java -@@ -3,6 +3,7 @@ package com.tuinity.tuinity.util.maplist; - import it.unimi.dsi.fastutil.objects.Reference2IntLinkedOpenHashMap; - import it.unimi.dsi.fastutil.objects.Reference2IntMap; - import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet; -+ - import java.util.Arrays; - import java.util.NoSuchElementException; - -diff --git a/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java b/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java -index 76593df295e5f462adcbc223d791316a849fffeb..2fb99e8626b962184854c2850d0507f7606617a5 100644 ---- a/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java -+++ b/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java -@@ -6,6 +6,7 @@ import net.minecraft.server.AxisAlignedBB; - import net.minecraft.server.EnumDirection; - import net.minecraft.server.VoxelShape; - import net.minecraft.server.VoxelShapes; -+ - import java.util.ArrayList; - import java.util.List; - -diff --git a/src/main/java/de/minebench/origami/OrigamiConfig.java b/src/main/java/de/minebench/origami/OrigamiConfig.java -index bac1314a698a07a90f7d577911dc3d20a9047bd9..af93c5e3197611a4113c3078663b0b611939fdec 100644 ---- a/src/main/java/de/minebench/origami/OrigamiConfig.java -+++ b/src/main/java/de/minebench/origami/OrigamiConfig.java -@@ -1,12 +1,10 @@ - package de.minebench.origami; - --import org.bukkit.Bukkit; - import org.bukkit.configuration.file.YamlConfiguration; - - import java.io.File; - import java.lang.reflect.Method; - import java.lang.reflect.Modifier; --import java.util.logging.Level; - - public final class OrigamiConfig { - -diff --git a/src/main/java/dev/tr7zw/yatopia/EntityFilter.java b/src/main/java/dev/tr7zw/yatopia/EntityFilter.java -index e6617833a7aea4803b78bc55b633fac9698688bd..43def748a996fea8caf56ee58a3585da7f8c14e3 100644 ---- a/src/main/java/dev/tr7zw/yatopia/EntityFilter.java -+++ b/src/main/java/dev/tr7zw/yatopia/EntityFilter.java -@@ -1,15 +1,8 @@ - package dev.tr7zw.yatopia; - - import com.google.common.base.Predicates; -- - import de.minebench.origami.OrigamiConfig; -- --import net.minecraft.server.Entity; --import net.minecraft.server.EntityTypes; --import net.minecraft.server.EnumCreatureType; --import net.minecraft.server.IEntitySelector; --import net.minecraft.server.ScoreboardTeamBase; --import net.minecraft.server.World; -+import net.minecraft.server.*; - - import java.util.function.Predicate; - -diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -index 01a44ad139699a1f6b745853c36d79c39f7d75eb..185675b3ef36e9c73f5729d1d7d773e1a4a6f5b9 100644 ---- a/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaConfig.java -@@ -1,8 +1,11 @@ - package dev.tr7zw.yatopia; - - import com.google.common.base.Throwables; -- - import net.minecraft.server.MinecraftServer; -+import org.bukkit.Bukkit; -+import org.bukkit.command.Command; -+import org.bukkit.configuration.InvalidConfigurationException; -+import org.bukkit.configuration.file.YamlConfiguration; - - import java.io.File; - import java.io.IOException; -@@ -16,12 +19,6 @@ import java.util.concurrent.TimeUnit; - import java.util.logging.Level; - import java.util.regex.Pattern; - --import net.minecraft.server.MinecraftServer; --import org.bukkit.Bukkit; --import org.bukkit.command.Command; --import org.bukkit.configuration.InvalidConfigurationException; --import org.bukkit.configuration.file.YamlConfiguration; -- - public class YatopiaConfig { - - public static File CONFIG_FILE; -diff --git a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java -index dfa51d6f170ec4fb010dce909c3fccb6c726deb4..b663a5707539e1e411647e466481ec880c511c9f 100644 ---- a/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java -+++ b/src/main/java/dev/tr7zw/yatopia/YatopiaVersionFetcher.java -@@ -1,6 +1,7 @@ - package dev.tr7zw.yatopia; - - 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 javax.annotation.Nullable; - - public class YatopiaVersionFetcher implements VersionFetcher { -diff --git a/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java b/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java -index 167498cfab7aed0deb32232082ae06a123b7a039..a28486e5ad4a86bd02219f1db696d8049b6955bf 100644 ---- a/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java -+++ b/src/main/java/me/jellysquid/mods/lithium/common/world/noise/SimplexNoiseCache.java -@@ -1,12 +1,12 @@ - package me.jellysquid.mods.lithium.common.world.noise; - --import java.util.Arrays; -- - import it.unimi.dsi.fastutil.HashCommon; - import net.minecraft.server.ChunkCoordIntPair; - import net.minecraft.server.MathHelper; - import net.minecraft.server.NoiseGenerator3Handler; - -+import java.util.Arrays; -+ - /** - * A cache for the End's noise generator that caches computed values. Through the caching, we can eliminate a large - * amount of overhead in computing the noise values several hundred thousand times per chunk. This code uses the same -diff --git a/src/main/java/net/minecraft/server/Advancement.java b/src/main/java/net/minecraft/server/Advancement.java -index 315a03cf5e64264523ce95ce7b9ffe7c450e1e5b..9f48cfb84cd3fccc408d908db37d27f1bad6368d 100644 ---- a/src/main/java/net/minecraft/server/Advancement.java -+++ b/src/main/java/net/minecraft/server/Advancement.java -@@ -6,6 +6,9 @@ import com.google.common.collect.Sets; - import com.google.gson.JsonArray; - import com.google.gson.JsonObject; - import com.google.gson.JsonSyntaxException; -+import org.apache.commons.lang3.ArrayUtils; -+ -+import javax.annotation.Nullable; - import java.util.Arrays; - import java.util.Iterator; - import java.util.Map; -@@ -13,8 +16,6 @@ import java.util.Map.Entry; - import java.util.Set; - import java.util.function.Consumer; - import java.util.function.Function; --import javax.annotation.Nullable; --import org.apache.commons.lang3.ArrayUtils; - - public class Advancement { - -diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java -index 93b14f01fd7094175968918f0dcd7c3c921f156a..d62f6b17e4e3a5b2a49dab4edcd3e8ef3226579a 100644 ---- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java -+++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java -@@ -15,23 +15,17 @@ import com.google.gson.stream.JsonReader; - import com.mojang.datafixers.DataFixer; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.JsonOps; --import java.io.File; --import java.io.FileOutputStream; --import java.io.IOException; --import java.io.OutputStreamWriter; --import java.io.StringReader; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.nio.charset.StandardCharsets; --import java.util.Comparator; --import java.util.Iterator; --import java.util.List; --import java.util.Map; -+import java.util.*; - import java.util.Map.Entry; - import java.util.Set; - 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 AdvancementDataPlayer { - -diff --git a/src/main/java/net/minecraft/server/AdvancementDataWorld.java b/src/main/java/net/minecraft/server/AdvancementDataWorld.java -index a70e42f2d5055fde4b39f990f76f5e89ef707d4c..e1192141d802509ace1fc2c7d11a3c24a0c36e37 100644 ---- a/src/main/java/net/minecraft/server/AdvancementDataWorld.java -+++ b/src/main/java/net/minecraft/server/AdvancementDataWorld.java -@@ -1,19 +1,16 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; --import com.google.gson.Gson; --import com.google.gson.GsonBuilder; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import java.util.Collection; --import java.util.Iterator; --import java.util.Map; --import javax.annotation.Nullable; -+import com.google.gson.*; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - import org.spigotmc.SpigotConfig; - -+import javax.annotation.Nullable; -+import java.util.Collection; -+import java.util.Iterator; -+import java.util.Map; -+ - public class AdvancementDataWorld extends ResourceDataJson { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/Advancements.java b/src/main/java/net/minecraft/server/Advancements.java -index 2fed42a5aec165a67a1480e822376e66244c31c8..b1adbc542936a6d30759123d72e23eabb39fb48c 100644 ---- a/src/main/java/net/minecraft/server/Advancements.java -+++ b/src/main/java/net/minecraft/server/Advancements.java -@@ -4,14 +4,15 @@ import com.google.common.base.Function; - import com.google.common.base.Functions; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Iterator; - import java.util.Map; - import java.util.Map.Entry; - import java.util.Set; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class Advancements { - -diff --git a/src/main/java/net/minecraft/server/ArgumentBlock.java b/src/main/java/net/minecraft/server/ArgumentBlock.java -index e1894fe66911adb991989ff5322d2a9e9446fce7..9bd7ded6e5682991ba62e10d54f9f0d2b21e7279 100644 ---- a/src/main/java/net/minecraft/server/ArgumentBlock.java -+++ b/src/main/java/net/minecraft/server/ArgumentBlock.java -@@ -3,13 +3,11 @@ package net.minecraft.server; - import com.google.common.collect.Maps; - import com.google.common.collect.UnmodifiableIterator; - import com.mojang.brigadier.StringReader; --import com.mojang.brigadier.exceptions.CommandSyntaxException; --import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; --import com.mojang.brigadier.exceptions.Dynamic3CommandExceptionType; --import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; --import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; -+import com.mojang.brigadier.exceptions.*; - import com.mojang.brigadier.suggestion.Suggestions; - import com.mojang.brigadier.suggestion.SuggestionsBuilder; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Locale; - import java.util.Map; -@@ -17,7 +15,6 @@ import java.util.Map.Entry; - import java.util.Optional; - import java.util.concurrent.CompletableFuture; - import java.util.function.BiFunction; --import javax.annotation.Nullable; - - public class ArgumentBlock { - -diff --git a/src/main/java/net/minecraft/server/ArgumentEntity.java b/src/main/java/net/minecraft/server/ArgumentEntity.java -index 1194f91a51f87bc461af039fe0819aaf3e5c8bdd..af275a63b2ba583f6a07d606a1b66fca409efd61 100644 ---- a/src/main/java/net/minecraft/server/ArgumentEntity.java -+++ b/src/main/java/net/minecraft/server/ArgumentEntity.java -@@ -9,6 +9,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; - import com.mojang.brigadier.suggestion.Suggestions; - import com.mojang.brigadier.suggestion.SuggestionsBuilder; -+ - import java.util.Arrays; - import java.util.Collection; - import java.util.List; -diff --git a/src/main/java/net/minecraft/server/ArgumentParserSelector.java b/src/main/java/net/minecraft/server/ArgumentParserSelector.java -index 0b222c8be84d28280a08c79b98484220a8727f7d..f1c630da24dfad324bb439e647948434f0c61e39 100644 ---- a/src/main/java/net/minecraft/server/ArgumentParserSelector.java -+++ b/src/main/java/net/minecraft/server/ArgumentParserSelector.java -@@ -7,17 +7,13 @@ import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; - import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; - import com.mojang.brigadier.suggestion.Suggestions; - import com.mojang.brigadier.suggestion.SuggestionsBuilder; -+ -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.List; - import java.util.UUID; - import java.util.concurrent.CompletableFuture; --import java.util.function.BiConsumer; --import java.util.function.BiFunction; --import java.util.function.Consumer; --import java.util.function.Function; --import java.util.function.Predicate; --import java.util.function.ToDoubleFunction; --import javax.annotation.Nullable; -+import java.util.function.*; - - public class ArgumentParserSelector { - -diff --git a/src/main/java/net/minecraft/server/ArraySetSorted.java b/src/main/java/net/minecraft/server/ArraySetSorted.java -index 7db6b5850b91588eb4d91f0d7e8b5dbbcb95b7cb..1a099dcdda23f9f64316e9f3a986ba1e93360deb 100644 ---- a/src/main/java/net/minecraft/server/ArraySetSorted.java -+++ b/src/main/java/net/minecraft/server/ArraySetSorted.java -@@ -1,11 +1,8 @@ - package net.minecraft.server; - - import it.unimi.dsi.fastutil.objects.ObjectArrays; --import java.util.AbstractSet; --import java.util.Arrays; --import java.util.Comparator; --import java.util.Iterator; --import java.util.NoSuchElementException; -+ -+import java.util.*; - - public class ArraySetSorted extends AbstractSet { - -diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java -index 661331bc005ba1c6ba6c6a4df22e0205bfd2b660..7b391d5694e6531adabb0a843e4563ad045bb64c 100644 ---- a/src/main/java/net/minecraft/server/AxisAlignedBB.java -+++ b/src/main/java/net/minecraft/server/AxisAlignedBB.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Optional; --import javax.annotation.Nullable; - - public class AxisAlignedBB { - -diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java -index e69b7dbc7a954374f9e2374ffe7faebfed2b0644..e4b62eab1262f035395366cc5a5d0893975596d6 100644 ---- a/src/main/java/net/minecraft/server/BaseBlockPosition.java -+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java -@@ -2,8 +2,9 @@ package net.minecraft.server; - - import com.google.common.base.MoreObjects; - import com.mojang.serialization.Codec; --import java.util.stream.IntStream; -+ - import javax.annotation.concurrent.Immutable; -+import java.util.stream.IntStream; - - @Immutable - public class BaseBlockPosition implements Comparable { -diff --git a/src/main/java/net/minecraft/server/BehaviorAttackTargetForget.java b/src/main/java/net/minecraft/server/BehaviorAttackTargetForget.java -index 51203fd30bfee57ef8d52d0360a64a7e1d6c65a3..0b8fa6dafa6e8cab5cb5bfdb657b3e8d92285450 100644 ---- a/src/main/java/net/minecraft/server/BehaviorAttackTargetForget.java -+++ b/src/main/java/net/minecraft/server/BehaviorAttackTargetForget.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; --import java.util.Optional; --import java.util.function.Predicate; --// CraftBukkit start --import org.bukkit.craftbukkit.entity.CraftLivingEntity; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityTargetEvent; -+ -+import java.util.Optional; -+import java.util.function.Predicate; - // CraftBukkit end - - public class BehaviorAttackTargetForget extends Behavior { -diff --git a/src/main/java/net/minecraft/server/BehaviorAttackTargetSet.java b/src/main/java/net/minecraft/server/BehaviorAttackTargetSet.java -index f75b17e7174888cec8d9e1b6adc760c715e25a05..c6fbe5c1f6c627c1fe6da557fd1b21504893035e 100644 ---- a/src/main/java/net/minecraft/server/BehaviorAttackTargetSet.java -+++ b/src/main/java/net/minecraft/server/BehaviorAttackTargetSet.java -@@ -1,13 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; --import java.util.Optional; --import java.util.function.Function; --import java.util.function.Predicate; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftLivingEntity; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityTargetEvent; -+ -+import java.util.Optional; -+import java.util.function.Function; -+import java.util.function.Predicate; - // CraftBukkit end - - public class BehaviorAttackTargetSet extends Behavior { -diff --git a/src/main/java/net/minecraft/server/BehaviorCareer.java b/src/main/java/net/minecraft/server/BehaviorCareer.java -index 2bc482b2bfcfa0b5188d7edad9896536f3e0e91f..cee88035cc54a50da7a586cbdb7dfd62595716ec 100644 ---- a/src/main/java/net/minecraft/server/BehaviorCareer.java -+++ b/src/main/java/net/minecraft/server/BehaviorCareer.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; --import java.util.Optional; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftVillager; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.VillagerCareerChangeEvent; -+ -+import java.util.Optional; - // CraftBukkit end - - public class BehaviorCareer extends Behavior { -diff --git a/src/main/java/net/minecraft/server/BehaviorController.java b/src/main/java/net/minecraft/server/BehaviorController.java -index 4ad7f42158bb945088a4d1c574c63dd6c15fa53c..00f509613a7e67fa89325f66728fe1f20c0a8821 100644 ---- a/src/main/java/net/minecraft/server/BehaviorController.java -+++ b/src/main/java/net/minecraft/server/BehaviorController.java -@@ -1,34 +1,20 @@ - package net.minecraft.server; - --import com.google.common.collect.ImmutableList; -+import com.google.common.collect.*; - import com.google.common.collect.ImmutableList.Builder; --import com.google.common.collect.ImmutableSet; --import com.google.common.collect.Maps; --import com.google.common.collect.Sets; --import com.google.common.collect.UnmodifiableIterator; - import com.mojang.datafixers.util.Pair; --import com.mojang.serialization.Codec; --import com.mojang.serialization.DataResult; --import com.mojang.serialization.Dynamic; --import com.mojang.serialization.DynamicOps; --import com.mojang.serialization.MapCodec; --import com.mojang.serialization.MapLike; --import com.mojang.serialization.RecordBuilder; -+import com.mojang.serialization.*; - import it.unimi.dsi.fastutil.objects.ObjectArrayList; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Map.Entry; --import java.util.Optional; --import java.util.Set; --import java.util.function.Supplier; --import java.util.stream.Stream; --import javax.annotation.Nullable; - import org.apache.commons.lang3.mutable.MutableObject; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.Map.Entry; -+import java.util.function.Supplier; -+import java.util.stream.Stream; -+ - public class BehaviorController { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/BehaviorFarm.java b/src/main/java/net/minecraft/server/BehaviorFarm.java -index 54a555509e3d83e9749609dc35897ad151bca681..9f2350c5b20f9e611c1ccadc01b7acb6815880bc 100644 ---- a/src/main/java/net/minecraft/server/BehaviorFarm.java -+++ b/src/main/java/net/minecraft/server/BehaviorFarm.java -@@ -2,8 +2,9 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; - import com.google.common.collect.Lists; --import java.util.List; -+ - import javax.annotation.Nullable; -+import java.util.List; - - public class BehaviorFarm extends Behavior { - -diff --git a/src/main/java/net/minecraft/server/BehaviorFindPosition.java b/src/main/java/net/minecraft/server/BehaviorFindPosition.java -index 15ea264e49609de61be131d41ae68e65957d002b..9c86546798cbb50422f012f7403da3f7a826b20c 100644 ---- a/src/main/java/net/minecraft/server/BehaviorFindPosition.java -+++ b/src/main/java/net/minecraft/server/BehaviorFindPosition.java -@@ -4,11 +4,9 @@ import com.google.common.collect.ImmutableMap; - import com.google.common.collect.ImmutableMap.Builder; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; --import java.util.Iterator; -+ - import java.util.Random; --import java.util.Set; - import java.util.function.Predicate; --import java.util.stream.Collectors; - - public class BehaviorFindPosition extends Behavior { - -diff --git a/src/main/java/net/minecraft/server/BehaviorGate.java b/src/main/java/net/minecraft/server/BehaviorGate.java -index 46e910581210421c8699637431804dc2f43eb4a6..f6e60fc77cfe40dd3824abb9aaa4d8e76d8edd97 100644 ---- a/src/main/java/net/minecraft/server/BehaviorGate.java -+++ b/src/main/java/net/minecraft/server/BehaviorGate.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.mojang.datafixers.util.Pair; -+ - import java.util.List; - import java.util.Map; - import java.util.Set; -diff --git a/src/main/java/net/minecraft/server/BehaviorMakeLove.java b/src/main/java/net/minecraft/server/BehaviorMakeLove.java -index d9a4d88408eb522fe1463c5adf105b002d14bb49..498a4fca2b21e04dc329a74d85a6dce9a4e4937f 100644 ---- a/src/main/java/net/minecraft/server/BehaviorMakeLove.java -+++ b/src/main/java/net/minecraft/server/BehaviorMakeLove.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; -+ - import java.util.Optional; - - public class BehaviorMakeLove extends Behavior { -diff --git a/src/main/java/net/minecraft/server/BehaviorProfession.java b/src/main/java/net/minecraft/server/BehaviorProfession.java -index f502b5b71d35cb755a8f13b81c0c33551e291225..35258f55f26a960b1cd1b4a53cacfebba99c5c8e 100644 ---- a/src/main/java/net/minecraft/server/BehaviorProfession.java -+++ b/src/main/java/net/minecraft/server/BehaviorProfession.java -@@ -1,7 +1,6 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftVillager; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.VillagerCareerChangeEvent; -diff --git a/src/main/java/net/minecraft/server/BehaviorSleep.java b/src/main/java/net/minecraft/server/BehaviorSleep.java -index 615a06497588e07fa2b71194a5836ef6360bf0ca..d219c4fcdcff31aa1dc2d471262d7fafe4cd5b5e 100644 ---- a/src/main/java/net/minecraft/server/BehaviorSleep.java -+++ b/src/main/java/net/minecraft/server/BehaviorSleep.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap; -+ - import java.util.List; - import java.util.Optional; - -diff --git a/src/main/java/net/minecraft/server/BehaviorWork.java b/src/main/java/net/minecraft/server/BehaviorWork.java -index 3418d5463192d5f2763ad5dad9442e66827cbdf7..de2a448764e02e3a3434fdf4c1a36921ef411607 100644 ---- a/src/main/java/net/minecraft/server/BehaviorWork.java -+++ b/src/main/java/net/minecraft/server/BehaviorWork.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; -+ - import java.util.Optional; - - public class BehaviorWork extends Behavior { -diff --git a/src/main/java/net/minecraft/server/BehaviorWorkComposter.java b/src/main/java/net/minecraft/server/BehaviorWorkComposter.java -index cedd2a26cd373c10835df104206defdc50405a62..eba9f9a401a40ac4ad964e8f9fffb973a0022a82 100644 ---- a/src/main/java/net/minecraft/server/BehaviorWorkComposter.java -+++ b/src/main/java/net/minecraft/server/BehaviorWorkComposter.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableList; -+ - import java.util.List; - import java.util.Optional; - -diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java -index f7f082c80442cd352e14daa4b199b2f3ad75c22f..c434aafff57af844b04730e53d17819364083885 100644 ---- a/src/main/java/net/minecraft/server/BiomeBase.java -+++ b/src/main/java/net/minecraft/server/BiomeBase.java -@@ -7,7 +7,6 @@ import com.google.common.collect.Sets; - import com.mojang.serialization.Codec; - import com.mojang.serialization.codecs.RecordCodecBuilder; - import it.unimi.dsi.fastutil.longs.Long2FloatLinkedOpenHashMap; -- - import java.util.*; - import java.util.function.Function; - import java.util.stream.Collectors; -diff --git a/src/main/java/net/minecraft/server/BiomeStorage.java b/src/main/java/net/minecraft/server/BiomeStorage.java -index 49114864e3cd7ef48b827220939c5069d3b8ca3a..11b47ebc3a49927f4c704b111254b6b1e67dd1d0 100644 ---- a/src/main/java/net/minecraft/server/BiomeStorage.java -+++ b/src/main/java/net/minecraft/server/BiomeStorage.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+ - public class BiomeStorage implements BiomeManager.Provider { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java -index 09bb2f8b8d2451a41a1b1e77b8dfb6417748c20d..c16b64b30066bdff4e93c2b728c1825d11457daf 100644 ---- a/src/main/java/net/minecraft/server/Block.java -+++ b/src/main/java/net/minecraft/server/Block.java -@@ -4,12 +4,13 @@ import com.google.common.cache.CacheBuilder; - import com.google.common.cache.CacheLoader; - import com.google.common.cache.LoadingCache; - import it.unimi.dsi.fastutil.objects.Object2ByteLinkedOpenHashMap; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.stream.Stream; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class Block extends BlockBase implements IMaterial { - -diff --git a/src/main/java/net/minecraft/server/BlockBamboo.java b/src/main/java/net/minecraft/server/BlockBamboo.java -index 14790c1674fd4fa6baca8f0d694e9b02e6b3d0a0..53eb9241dd7a36506261401aec0b1ed91e97ced3 100644 ---- a/src/main/java/net/minecraft/server/BlockBamboo.java -+++ b/src/main/java/net/minecraft/server/BlockBamboo.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockBamboo extends Block implements IBlockFragilePlantElement { - -diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java -index 93e33a5418ab11a6e968b2c05e7a9f9dc616e2dc..809ec5f8fba12929a62a7a0fab843f5a4ed6b461 100644 ---- a/src/main/java/net/minecraft/server/BlockBase.java -+++ b/src/main/java/net/minecraft/server/BlockBase.java -@@ -2,14 +2,14 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; - import com.mojang.serialization.MapCodec; --import java.util.Arrays; -+ -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.List; - import java.util.Random; - import java.util.function.Function; - import java.util.function.Predicate; - import java.util.function.ToIntFunction; --import javax.annotation.Nullable; - - public abstract class BlockBase { - -diff --git a/src/main/java/net/minecraft/server/BlockBed.java b/src/main/java/net/minecraft/server/BlockBed.java -index e7bd9061cceba284443b75cc5506e1b9f2ef42e8..f0a622585124cb149aa031c64757b34894bf1d44 100644 ---- a/src/main/java/net/minecraft/server/BlockBed.java -+++ b/src/main/java/net/minecraft/server/BlockBed.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Optional; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class BlockBed extends BlockFacingHorizontal implements ITileEntity { - -diff --git a/src/main/java/net/minecraft/server/BlockBeehive.java b/src/main/java/net/minecraft/server/BlockBeehive.java -index 7e2c63e4731ac2d234d5f90eb80d314cdede07ca..6a4d63139ebce442b3dc9f89c05cf17430e40e1e 100644 ---- a/src/main/java/net/minecraft/server/BlockBeehive.java -+++ b/src/main/java/net/minecraft/server/BlockBeehive.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Random; --import javax.annotation.Nullable; - - public class BlockBeehive extends BlockTileEntity { - -diff --git a/src/main/java/net/minecraft/server/BlockButtonAbstract.java b/src/main/java/net/minecraft/server/BlockButtonAbstract.java -index da6b90cbe6caaf19b98670feb731511dd7dcf904..1dba8e8c34005f9e9b28a32b24647cc538da06be 100644 ---- a/src/main/java/net/minecraft/server/BlockButtonAbstract.java -+++ b/src/main/java/net/minecraft/server/BlockButtonAbstract.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - --import java.util.List; --import java.util.Random; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.event.block.BlockRedstoneEvent; - import org.bukkit.event.entity.EntityInteractEvent; -+ -+import javax.annotation.Nullable; -+import java.util.List; -+import java.util.Random; - // CraftBukkit end - - public abstract class BlockButtonAbstract extends BlockAttachable { -diff --git a/src/main/java/net/minecraft/server/BlockCactus.java b/src/main/java/net/minecraft/server/BlockCactus.java -index 13e4517bd04096001ca1caf32b9949abb3cf9c7f..ce0797fdc43bbb7b5a2bd67632db04209be40124 100644 ---- a/src/main/java/net/minecraft/server/BlockCactus.java -+++ b/src/main/java/net/minecraft/server/BlockCactus.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ - import java.util.Iterator; - import java.util.Random; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -- - public class BlockCactus extends Block { - - public static final BlockStateInteger AGE = BlockProperties.aj; -diff --git a/src/main/java/net/minecraft/server/BlockCampfire.java b/src/main/java/net/minecraft/server/BlockCampfire.java -index 11e02ffdaaec2203b83125ff28cddf2784237d7c..e7581cc1a41fb5dd85a7d56c62bb73792dde931c 100644 ---- a/src/main/java/net/minecraft/server/BlockCampfire.java -+++ b/src/main/java/net/minecraft/server/BlockCampfire.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Optional; - import java.util.Random; --import javax.annotation.Nullable; - - public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged { - -diff --git a/src/main/java/net/minecraft/server/BlockCauldron.java b/src/main/java/net/minecraft/server/BlockCauldron.java -index 9fed3883828e7d6ca917a5eca7a7a3e37582f983..f7eaeb70aff716665e2da84eab5da6657adeade7 100644 ---- a/src/main/java/net/minecraft/server/BlockCauldron.java -+++ b/src/main/java/net/minecraft/server/BlockCauldron.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.block.CauldronLevelChangeEvent; // CraftBukkit -+import org.bukkit.event.block.CauldronLevelChangeEvent; - - public class BlockCauldron extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java -index dba774018ccd88d75f3a69ceee10fd4691fcfdb6..80b46fe0841c694f2de6fb912d646f3bcdd86a40 100644 ---- a/src/main/java/net/minecraft/server/BlockChest.java -+++ b/src/main/java/net/minecraft/server/BlockChest.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Optional; - import java.util.function.BiPredicate; - import java.util.function.Supplier; --import javax.annotation.Nullable; - - public class BlockChest extends BlockChestAbstract implements IBlockWaterlogged { - -diff --git a/src/main/java/net/minecraft/server/BlockChorusFlower.java b/src/main/java/net/minecraft/server/BlockChorusFlower.java -index c6cb947d2bd53501e4779537f3ccdd926433fe76..5bc4726f9aaa7eb27d107053ad48880bc2e3c36c 100644 ---- a/src/main/java/net/minecraft/server/BlockChorusFlower.java -+++ b/src/main/java/net/minecraft/server/BlockChorusFlower.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Random; --import javax.annotation.Nullable; -- --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class BlockChorusFlower extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockCocoa.java b/src/main/java/net/minecraft/server/BlockCocoa.java -index 5f00a69d4e596886a44c953900f36c991d43d6b6..4b3bbbba66b86a63d9fbd913f1c3a3fb765a0429 100644 ---- a/src/main/java/net/minecraft/server/BlockCocoa.java -+++ b/src/main/java/net/minecraft/server/BlockCocoa.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - --import java.util.Random; --import javax.annotation.Nullable; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockCocoa extends BlockFacingHorizontal implements IBlockFragilePlantElement { - -diff --git a/src/main/java/net/minecraft/server/BlockCommand.java b/src/main/java/net/minecraft/server/BlockCommand.java -index 6b353a99c04e0312f520f8559c05ddaf51c26aaf..0d69bdee165b37c88bcdd8e19160e3d4b1c253f1 100644 ---- a/src/main/java/net/minecraft/server/BlockCommand.java -+++ b/src/main/java/net/minecraft/server/BlockCommand.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - --import java.util.Random; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -+import org.bukkit.event.block.BlockRedstoneEvent; - --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit -+import java.util.Random; - - public class BlockCommand extends BlockTileEntity { - -diff --git a/src/main/java/net/minecraft/server/BlockComposter.java b/src/main/java/net/minecraft/server/BlockComposter.java -index c4e3a306446163903a269cdb1b1d65480f7d1dce..0a7137b096db1807950f0b6754ff2644df97892d 100644 ---- a/src/main/java/net/minecraft/server/BlockComposter.java -+++ b/src/main/java/net/minecraft/server/BlockComposter.java -@@ -2,11 +2,11 @@ package net.minecraft.server; - - import it.unimi.dsi.fastutil.objects.Object2FloatMap; - import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap; --import java.util.Random; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftBlockInventoryHolder; - import org.bukkit.craftbukkit.util.DummyGeneratorAccess; -+ -+import javax.annotation.Nullable; -+import java.util.Random; - // CraftBukkit end - - public class BlockComposter extends Block implements IInventoryHolder { -diff --git a/src/main/java/net/minecraft/server/BlockCoral.java b/src/main/java/net/minecraft/server/BlockCoral.java -index 4611577966e19836311098d5b1a2d1e596327466..ead4fa9c767e07cac7e031c2f2c5ed18cdbd723f 100644 ---- a/src/main/java/net/minecraft/server/BlockCoral.java -+++ b/src/main/java/net/minecraft/server/BlockCoral.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockCoral extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java -index a9897d4c8b3ef864b050b20eb7d1cee2c889aafb..45f8f1b9fb05f5598d0ae493d6394b314c01a0d1 100644 ---- a/src/main/java/net/minecraft/server/BlockCrops.java -+++ b/src/main/java/net/minecraft/server/BlockCrops.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import java.util.Random; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import java.util.Random; - - public class BlockCrops extends BlockPlant implements IBlockFragilePlantElement { - -diff --git a/src/main/java/net/minecraft/server/BlockDiodeAbstract.java b/src/main/java/net/minecraft/server/BlockDiodeAbstract.java -index 682e3222435e68c38d91f430f224cae1b52db8cf..4dc2546db159ea770b07295962e11315f255fc37 100644 ---- a/src/main/java/net/minecraft/server/BlockDiodeAbstract.java -+++ b/src/main/java/net/minecraft/server/BlockDiodeAbstract.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import java.util.Random; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import java.util.Random; - - public abstract class BlockDiodeAbstract extends BlockFacingHorizontal { - -diff --git a/src/main/java/net/minecraft/server/BlockDispenser.java b/src/main/java/net/minecraft/server/BlockDispenser.java -index 34f33777258ae4c3e9c15b236d329b2c89d2bc69..65e41ce3363638d7b7062a3de974527e1e7ea692 100644 ---- a/src/main/java/net/minecraft/server/BlockDispenser.java -+++ b/src/main/java/net/minecraft/server/BlockDispenser.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -+ - import java.util.Map; - import java.util.Random; - -diff --git a/src/main/java/net/minecraft/server/BlockDoor.java b/src/main/java/net/minecraft/server/BlockDoor.java -index 9d28c00cb1c1e6aff0a4a3c5201b1aae7f887d9f..c32cdc4856e1a0062796f7b25402357418d85a44 100644 ---- a/src/main/java/net/minecraft/server/BlockDoor.java -+++ b/src/main/java/net/minecraft/server/BlockDoor.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; -+import org.bukkit.event.block.BlockRedstoneEvent; - --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit -+import javax.annotation.Nullable; - - public class BlockDoor extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockDragonEgg.java b/src/main/java/net/minecraft/server/BlockDragonEgg.java -index ee397cb7fd4160da31efd200ad3db19644abc494..7ea9155c4bf91516fd555c64253daeb8b3e9a42a 100644 ---- a/src/main/java/net/minecraft/server/BlockDragonEgg.java -+++ b/src/main/java/net/minecraft/server/BlockDragonEgg.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.block.BlockFromToEvent; // CraftBukkit -+import org.bukkit.event.block.BlockFromToEvent; - - public class BlockDragonEgg extends BlockFalling { - -diff --git a/src/main/java/net/minecraft/server/BlockFire.java b/src/main/java/net/minecraft/server/BlockFire.java -index a8875a9a5fa6b285b41f3de1bc81c44f35ea5cce..41bbb8d9d2f9da2a71a95e00b0048aa62deb0429 100644 ---- a/src/main/java/net/minecraft/server/BlockFire.java -+++ b/src/main/java/net/minecraft/server/BlockFire.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.event.block.TNTPrimeEvent; - import it.unimi.dsi.fastutil.objects.Object2IntMap; - import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; --import com.destroystokyo.paper.event.block.TNTPrimeEvent; // Paper - TNTPrimeEvent --import java.util.Map; --import java.util.Random; -- --// CraftBukkit start - import org.bukkit.craftbukkit.block.CraftBlockState; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.block.BlockBurnEvent; - import org.bukkit.event.block.BlockFadeEvent; -+ -+import java.util.Map; -+import java.util.Random; - // CraftBukkit end - - public class BlockFire extends BlockFireAbstract { -diff --git a/src/main/java/net/minecraft/server/BlockFluids.java b/src/main/java/net/minecraft/server/BlockFluids.java -index a28ac8b00b22a8c7afc2b64f9720a4e32b653e5f..335750d4a247c8898ffec3512f3b3453b4e84340 100644 ---- a/src/main/java/net/minecraft/server/BlockFluids.java -+++ b/src/main/java/net/minecraft/server/BlockFluids.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ - import java.util.Collections; - import java.util.List; - import java.util.Random; -diff --git a/src/main/java/net/minecraft/server/BlockIce.java b/src/main/java/net/minecraft/server/BlockIce.java -index aba5c6b8713c04302632bd1d289fd968c9e0607a..7b74d7f6fe8d198664d09463b0c28bce076075c6 100644 ---- a/src/main/java/net/minecraft/server/BlockIce.java -+++ b/src/main/java/net/minecraft/server/BlockIce.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockIce extends BlockHalfTransparent { - -diff --git a/src/main/java/net/minecraft/server/BlockLeaves.java b/src/main/java/net/minecraft/server/BlockLeaves.java -index 468d0bf193f9a90e734ff413b223e83d431113e7..03d0c9ca4facbac2c573e86938cece0942b2369d 100644 ---- a/src/main/java/net/minecraft/server/BlockLeaves.java -+++ b/src/main/java/net/minecraft/server/BlockLeaves.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import java.util.Random; -+import org.bukkit.event.block.LeavesDecayEvent; - --import org.bukkit.event.block.LeavesDecayEvent; // CraftBukkit -+import java.util.Random; - - public class BlockLeaves extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockLectern.java b/src/main/java/net/minecraft/server/BlockLectern.java -index 87bdc49f90eee5c45ffee1d8fd5085198339fe9c..7e5d3384b7fbb1be218bbb1259e9b5ec55ed69c0 100644 ---- a/src/main/java/net/minecraft/server/BlockLectern.java -+++ b/src/main/java/net/minecraft/server/BlockLectern.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockLectern extends BlockTileEntity { - -diff --git a/src/main/java/net/minecraft/server/BlockLever.java b/src/main/java/net/minecraft/server/BlockLever.java -index 641c543c5d177ee4a4644609a89982953075270f..f1e38e4f1d95b07f45f4201b6093adf0ed7e0b55 100644 ---- a/src/main/java/net/minecraft/server/BlockLever.java -+++ b/src/main/java/net/minecraft/server/BlockLever.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit -+import org.bukkit.event.block.BlockRedstoneEvent; - - public class BlockLever extends BlockAttachable { - -diff --git a/src/main/java/net/minecraft/server/BlockMinecartDetector.java b/src/main/java/net/minecraft/server/BlockMinecartDetector.java -index b8e91fca957c8a39c9fbf4f87c089c4ce710c8e0..f8a91f5e3cb75ac2fbee6f2cb951ade66006a93e 100644 ---- a/src/main/java/net/minecraft/server/BlockMinecartDetector.java -+++ b/src/main/java/net/minecraft/server/BlockMinecartDetector.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - -+import org.bukkit.event.block.BlockRedstoneEvent; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Random; - import java.util.function.Predicate; --import javax.annotation.Nullable; -- --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit - - public class BlockMinecartDetector extends BlockMinecartTrackAbstract { - -diff --git a/src/main/java/net/minecraft/server/BlockMonsterEggs.java b/src/main/java/net/minecraft/server/BlockMonsterEggs.java -index 159416e307daac88dfe85fcb8cc9292ef7fb92d4..a8d48e3e9be1ed0a7bc61d73795a8c8ae5dfacfc 100644 ---- a/src/main/java/net/minecraft/server/BlockMonsterEggs.java -+++ b/src/main/java/net/minecraft/server/BlockMonsterEggs.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; --import java.util.Map; -+import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; - --import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; // CraftBukkit -+import java.util.Map; - - public class BlockMonsterEggs extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockMushroom.java b/src/main/java/net/minecraft/server/BlockMushroom.java -index a52444463f527ec402d6b975f322782a6864d5bb..45c721e59c8d2639b154c948b9f6a540a88da83e 100644 ---- a/src/main/java/net/minecraft/server/BlockMushroom.java -+++ b/src/main/java/net/minecraft/server/BlockMushroom.java -@@ -1,10 +1,9 @@ - package net.minecraft.server; - -+import org.bukkit.TreeType; -+ - import java.util.Iterator; - import java.util.Random; -- --// CraftBukkit start --import org.bukkit.TreeType; - // CraftBukkit end - - public class BlockMushroom extends BlockPlant implements IBlockFragilePlantElement { -diff --git a/src/main/java/net/minecraft/server/BlockObserver.java b/src/main/java/net/minecraft/server/BlockObserver.java -index 7dfe632523f7fc4426a035b6bf23917b2ea80389..595851324fc06ebb5b590b67b53ba7437665a794 100644 ---- a/src/main/java/net/minecraft/server/BlockObserver.java -+++ b/src/main/java/net/minecraft/server/BlockObserver.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import java.util.Random; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import java.util.Random; - - public class BlockObserver extends BlockDirectional { - -diff --git a/src/main/java/net/minecraft/server/BlockPiston.java b/src/main/java/net/minecraft/server/BlockPiston.java -index 3d6f8d948d293ca57bf158bcd1f58e289d937fb5..c03d519d937bca13e9c4750de3a56603c44e72df 100644 ---- a/src/main/java/net/minecraft/server/BlockPiston.java -+++ b/src/main/java/net/minecraft/server/BlockPiston.java -@@ -1,18 +1,17 @@ - package net.minecraft.server; - -+import com.google.common.collect.ImmutableList; - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; -+import org.bukkit.craftbukkit.block.CraftBlock; -+import org.bukkit.event.block.BlockPistonExtendEvent; -+import org.bukkit.event.block.BlockPistonRetractEvent; -+ -+import java.util.AbstractList; - import java.util.Iterator; - import java.util.List; - import java.util.Map; - import java.util.Map.Entry; -- --// CraftBukkit start --import com.google.common.collect.ImmutableList; --import java.util.AbstractList; --import org.bukkit.craftbukkit.block.CraftBlock; --import org.bukkit.event.block.BlockPistonRetractEvent; --import org.bukkit.event.block.BlockPistonExtendEvent; - // CraftBukkit end - - public class BlockPiston extends BlockDirectional { -diff --git a/src/main/java/net/minecraft/server/BlockPistonMoving.java b/src/main/java/net/minecraft/server/BlockPistonMoving.java -index bf76615d720911fa3f31efb05fa49f2a1ec239ac..29ea9b650b3fbed4d2f4bc9332ce26d92ce2e01e 100644 ---- a/src/main/java/net/minecraft/server/BlockPistonMoving.java -+++ b/src/main/java/net/minecraft/server/BlockPistonMoving.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.List; --import javax.annotation.Nullable; - - public class BlockPistonMoving extends BlockTileEntity { - -diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java -index 77f8d5e6662fa75e622f07b3e6efae04c38735fe..f044de840b24055b24f0a039e18331c13161511d 100644 ---- a/src/main/java/net/minecraft/server/BlockPortal.java -+++ b/src/main/java/net/minecraft/server/BlockPortal.java -@@ -1,14 +1,13 @@ - package net.minecraft.server; - - import com.google.common.cache.LoadingCache; --import java.util.Random; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.block.CraftBlockState; - import org.bukkit.event.entity.EntityPortalEnterEvent; - import org.bukkit.event.world.PortalCreateEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Random; - // CraftBukkit end - - public class BlockPortal extends Block { -diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index c77f71b6de87757900b3734feda819754e9408b1..ea42b2a0ebfabe57055785f95b018e2d2c2bfa7a 100644 ---- a/src/main/java/net/minecraft/server/BlockPosition.java -+++ b/src/main/java/net/minecraft/server/BlockPosition.java -@@ -2,15 +2,16 @@ package net.minecraft.server; - - import com.google.common.collect.AbstractIterator; - import com.mojang.serialization.Codec; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.concurrent.Immutable; - import java.util.Optional; - import java.util.Random; - import java.util.function.Predicate; - import java.util.stream.IntStream; - import java.util.stream.Stream; - import java.util.stream.StreamSupport; --import javax.annotation.concurrent.Immutable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - @Immutable - public class BlockPosition extends BaseBlockPosition { -diff --git a/src/main/java/net/minecraft/server/BlockPoweredRail.java b/src/main/java/net/minecraft/server/BlockPoweredRail.java -index d39b87b17694290b5f62191e59e5c1098c4f0a37..3b5c097defd83e3f82b695312fae3ded536f1f55 100644 ---- a/src/main/java/net/minecraft/server/BlockPoweredRail.java -+++ b/src/main/java/net/minecraft/server/BlockPoweredRail.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import org.bukkit.craftbukkit.event.CraftEventFactory; - - public class BlockPoweredRail extends BlockMinecartTrackAbstract { - -diff --git a/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java b/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java -index 2878c5aa7f9f90859d8a661664765fa62e68ee2e..d163ec51b5477be2fa94767835962ab341b61b6f 100644 ---- a/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java -+++ b/src/main/java/net/minecraft/server/BlockPressurePlateAbstract.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import java.util.Random; -+import org.bukkit.event.block.BlockRedstoneEvent; - --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit -+import java.util.Random; - - public abstract class BlockPressurePlateAbstract extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java b/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java -index ef79fbb628c4eaffe9d34de6129d6e833aac7c76..af29ceacd6d57d955dcca7b0a11559d97ffc9d96 100644 ---- a/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java -+++ b/src/main/java/net/minecraft/server/BlockPressurePlateBinary.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.event.entity.EntityInteractEvent; -+ - import java.util.Iterator; - import java.util.List; - --import org.bukkit.event.entity.EntityInteractEvent; // CraftBukkit -- - public class BlockPressurePlateBinary extends BlockPressurePlateAbstract { - - public static final BlockStateBoolean POWERED = BlockProperties.w; -diff --git a/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java b/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java -index e358cce6fad4b71c199bcd432dfcd6e393a7ad3c..f76dd0f7f2d6a68aad2f19b2e926138c9c0c0ad0 100644 ---- a/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java -+++ b/src/main/java/net/minecraft/server/BlockPressurePlateWeighted.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.entity.EntityInteractEvent; // CraftBukkit -+import org.bukkit.event.entity.EntityInteractEvent; - - public class BlockPressurePlateWeighted extends BlockPressurePlateAbstract { - -diff --git a/src/main/java/net/minecraft/server/BlockPumpkinCarved.java b/src/main/java/net/minecraft/server/BlockPumpkinCarved.java -index c8ef631e1e77ea534e782b35027c2ca5ea57aaa3..f07d09348145f795c3788ffb4577c30a7b2e5bb6 100644 ---- a/src/main/java/net/minecraft/server/BlockPumpkinCarved.java -+++ b/src/main/java/net/minecraft/server/BlockPumpkinCarved.java -@@ -1,13 +1,11 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.function.Predicate; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.util.BlockStateListPopulator; --import org.bukkit.event.block.BlockRedstoneEvent; - import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.function.Predicate; - // CraftBukkit end - - public class BlockPumpkinCarved extends BlockFacingHorizontal implements ItemWearable { -diff --git a/src/main/java/net/minecraft/server/BlockRedstoneComparator.java b/src/main/java/net/minecraft/server/BlockRedstoneComparator.java -index 3e771f6d770932b8b71b9e13c3adf71ac9249709..70595d2a00fef8664224060865adb7cc6fc89c0e 100644 ---- a/src/main/java/net/minecraft/server/BlockRedstoneComparator.java -+++ b/src/main/java/net/minecraft/server/BlockRedstoneComparator.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Random; --import javax.annotation.Nullable; -- --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class BlockRedstoneComparator extends BlockDiodeAbstract implements ITileEntity { - -diff --git a/src/main/java/net/minecraft/server/BlockRedstoneLamp.java b/src/main/java/net/minecraft/server/BlockRedstoneLamp.java -index 22a1863ca88ce41ff5f899821c252ca7f2e87f63..154d217a27c490542e36f41b547e4905e728fb8f 100644 ---- a/src/main/java/net/minecraft/server/BlockRedstoneLamp.java -+++ b/src/main/java/net/minecraft/server/BlockRedstoneLamp.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - --import java.util.Random; --import javax.annotation.Nullable; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockRedstoneLamp extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockRedstoneOre.java b/src/main/java/net/minecraft/server/BlockRedstoneOre.java -index e31a3890df554552c9db72396ef43de7af428388..7a4a481135e1457716bbe606571d143da27e654b 100644 ---- a/src/main/java/net/minecraft/server/BlockRedstoneOre.java -+++ b/src/main/java/net/minecraft/server/BlockRedstoneOre.java -@@ -1,10 +1,9 @@ - package net.minecraft.server; - --import java.util.Random; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityInteractEvent; -+ -+import java.util.Random; - // CraftBukkit end - - public class BlockRedstoneOre extends Block { -diff --git a/src/main/java/net/minecraft/server/BlockRedstoneTorch.java b/src/main/java/net/minecraft/server/BlockRedstoneTorch.java -index a63a60348fe45f63deec6fcb27b6be09cd2f088c..520a34550f58f35eeaf6cb62a3f0edc64abb1451 100644 ---- a/src/main/java/net/minecraft/server/BlockRedstoneTorch.java -+++ b/src/main/java/net/minecraft/server/BlockRedstoneTorch.java -@@ -1,12 +1,8 @@ - package net.minecraft.server; - --import com.google.common.collect.Lists; --import java.util.List; --import java.util.Map; --import java.util.Random; --import java.util.WeakHashMap; -+import org.bukkit.event.block.BlockRedstoneEvent; - --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit -+import java.util.Random; - - public class BlockRedstoneTorch extends BlockTorch { - -diff --git a/src/main/java/net/minecraft/server/BlockRedstoneWire.java b/src/main/java/net/minecraft/server/BlockRedstoneWire.java -index 6abc3d4cfbe8f5cc1dbe83031d90ee8df3b2f914..f9cb85492078aec72eae938af8db2c371e9e489c 100644 ---- a/src/main/java/net/minecraft/server/BlockRedstoneWire.java -+++ b/src/main/java/net/minecraft/server/BlockRedstoneWire.java -@@ -1,17 +1,16 @@ - package net.minecraft.server; - --import com.destroystokyo.paper.PaperConfig; - import com.destroystokyo.paper.util.RedstoneWireTurbo; - import com.google.common.collect.ImmutableMap; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; - import com.google.common.collect.UnmodifiableIterator; -+import org.bukkit.event.block.BlockRedstoneEvent; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Map; - import java.util.Set; --import javax.annotation.Nullable; -- --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit - - public class BlockRedstoneWire extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java -index e08af2850f2da35b62cbf1203f3f5ffcf759565a..de5ee6c9af67b7ce82c5b3699120f649fdd69652 100644 ---- a/src/main/java/net/minecraft/server/BlockSapling.java -+++ b/src/main/java/net/minecraft/server/BlockSapling.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - --import java.util.Random; -- --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.TreeType; - import org.bukkit.block.BlockState; - import org.bukkit.event.world.StructureGrowEvent; -+ -+import java.util.Random; - // CraftBukkit end - - public class BlockSapling extends BlockPlant implements IBlockFragilePlantElement { -diff --git a/src/main/java/net/minecraft/server/BlockSnow.java b/src/main/java/net/minecraft/server/BlockSnow.java -index 66f188c9eb6431eedfd655a1dd4a35b5141e7196..fd254e83a2a18a45a1f3fef65d08d3a1e3e2116a 100644 ---- a/src/main/java/net/minecraft/server/BlockSnow.java -+++ b/src/main/java/net/minecraft/server/BlockSnow.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockSnow extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockSoil.java b/src/main/java/net/minecraft/server/BlockSoil.java -index a315e2628c35ee713b68741c6e52c4b140c05f27..f80e60c924228f84a785840bc9da75a016787d65 100644 ---- a/src/main/java/net/minecraft/server/BlockSoil.java -+++ b/src/main/java/net/minecraft/server/BlockSoil.java -@@ -1,11 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+import org.bukkit.event.entity.EntityInteractEvent; -+ - import java.util.Iterator; - import java.util.Random; -- --// CraftBukkit start --import org.bukkit.event.entity.EntityInteractEvent; --import org.bukkit.craftbukkit.event.CraftEventFactory; - // CraftBukkit end - - public class BlockSoil extends Block { -diff --git a/src/main/java/net/minecraft/server/BlockSponge.java b/src/main/java/net/minecraft/server/BlockSponge.java -index 362750bd85bc65c304f5fece344ecdeddebaf4ee..9407c67c2b21473d5a7456f074a9860829d88393 100644 ---- a/src/main/java/net/minecraft/server/BlockSponge.java -+++ b/src/main/java/net/minecraft/server/BlockSponge.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.util.Queue; --// CraftBukkit start --import java.util.List; - import org.bukkit.craftbukkit.block.CraftBlockState; - import org.bukkit.craftbukkit.util.BlockStateListPopulator; - import org.bukkit.event.block.SpongeAbsorbEvent; -+ -+import java.util.List; -+import java.util.Queue; - // CraftBukkit end - - public class BlockSponge extends Block { -diff --git a/src/main/java/net/minecraft/server/BlockStateBoolean.java b/src/main/java/net/minecraft/server/BlockStateBoolean.java -index 4ca8db630434915de4eaeac6c4ecd60714d7f5d9..bbaed354286c2233373f13edfd2574316b5d5434 100644 ---- a/src/main/java/net/minecraft/server/BlockStateBoolean.java -+++ b/src/main/java/net/minecraft/server/BlockStateBoolean.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableSet; -+ - import java.util.Collection; - import java.util.Optional; - -diff --git a/src/main/java/net/minecraft/server/BlockStateEnum.java b/src/main/java/net/minecraft/server/BlockStateEnum.java -index 7eeb71accaae99d4398b6f24b1e9ef5a2b95b00a..71b594ccc2a68e5f0a3066b6daa9ec6e879aec01 100644 ---- a/src/main/java/net/minecraft/server/BlockStateEnum.java -+++ b/src/main/java/net/minecraft/server/BlockStateEnum.java -@@ -7,7 +7,6 @@ import com.google.common.collect.Maps; - - import java.util.*; - import java.util.function.Predicate; --import java.util.stream.Collectors; - - public class BlockStateEnum & INamable> extends IBlockState { - -diff --git a/src/main/java/net/minecraft/server/BlockStateInteger.java b/src/main/java/net/minecraft/server/BlockStateInteger.java -index 36b84446e96faefad3b783f73df74e0f3bce8255..0d8f485ff910b8aa54b45b60453bc871d3441543 100644 ---- a/src/main/java/net/minecraft/server/BlockStateInteger.java -+++ b/src/main/java/net/minecraft/server/BlockStateInteger.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableSet; - import com.google.common.collect.Sets; -+ - import java.util.Collection; - import java.util.Optional; - import java.util.Set; -diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java -index c6b8c37f076c0a5ce11d5187b059ea1ab5c03369..ce99f308689c8073bf4b6dd65604016aa0102f60 100644 ---- a/src/main/java/net/minecraft/server/BlockStem.java -+++ b/src/main/java/net/minecraft/server/BlockStem.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import java.util.Random; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import java.util.Random; - - public class BlockStem extends BlockPlant implements IBlockFragilePlantElement { - -diff --git a/src/main/java/net/minecraft/server/BlockSweetBerryBush.java b/src/main/java/net/minecraft/server/BlockSweetBerryBush.java -index 3aa46479dcc462b62026195eb6f5abe8a193c443..679d4dd446efad0a8927f66cf3cd84802a3b08af 100644 ---- a/src/main/java/net/minecraft/server/BlockSweetBerryBush.java -+++ b/src/main/java/net/minecraft/server/BlockSweetBerryBush.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - --import java.util.Random; --// CraftBukkit start --import java.util.Collections; - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.player.PlayerHarvestBlockEvent; -+ -+import java.util.Collections; -+import java.util.Random; - // CraftBukkit end - - public class BlockSweetBerryBush extends BlockPlant implements IBlockFragilePlantElement { -diff --git a/src/main/java/net/minecraft/server/BlockTNT.java b/src/main/java/net/minecraft/server/BlockTNT.java -index 7b601955f3fd36f06c838b896b455a606954d980..1f54c5e97adc0de5db11d7ec0708f5796fedd453 100644 ---- a/src/main/java/net/minecraft/server/BlockTNT.java -+++ b/src/main/java/net/minecraft/server/BlockTNT.java -@@ -1,7 +1,8 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.event.block.TNTPrimeEvent; -+ - import javax.annotation.Nullable; --import com.destroystokyo.paper.event.block.TNTPrimeEvent; // Paper - TNTPrimeEvent - - public class BlockTNT extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockTrapdoor.java b/src/main/java/net/minecraft/server/BlockTrapdoor.java -index 313b1bdd2cb78564e09ba7fa05ccfc8d7ab1c373..49b3f24162067a28f7886c3ab3bde8c031371350 100644 ---- a/src/main/java/net/minecraft/server/BlockTrapdoor.java -+++ b/src/main/java/net/minecraft/server/BlockTrapdoor.java -@@ -1,7 +1,8 @@ - package net.minecraft.server; - -+import org.bukkit.event.block.BlockRedstoneEvent; -+ - import javax.annotation.Nullable; --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit - - public class BlockTrapdoor extends BlockFacingHorizontal implements IBlockWaterlogged { - -diff --git a/src/main/java/net/minecraft/server/BlockTripwire.java b/src/main/java/net/minecraft/server/BlockTripwire.java -index 5c401f28191c83b1a121d8cef4a5d8b2e681de49..e04bf62581a5d0fca29bf2d49bab7c3d37fe7cfa 100644 ---- a/src/main/java/net/minecraft/server/BlockTripwire.java -+++ b/src/main/java/net/minecraft/server/BlockTripwire.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - -+import org.bukkit.event.entity.EntityInteractEvent; -+ - import java.util.Iterator; - import java.util.List; - import java.util.Map; - import java.util.Random; - --import org.bukkit.event.entity.EntityInteractEvent; // CraftBukkit -- - public class BlockTripwire extends Block { - - public static final BlockStateBoolean POWERED = BlockProperties.w; -diff --git a/src/main/java/net/minecraft/server/BlockTripwireHook.java b/src/main/java/net/minecraft/server/BlockTripwireHook.java -index dd30810569325096d35a367c4348e09f1463b2a9..fabc713798e7292d376db4ba74d2820ed18bd4e8 100644 ---- a/src/main/java/net/minecraft/server/BlockTripwireHook.java -+++ b/src/main/java/net/minecraft/server/BlockTripwireHook.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - - import com.google.common.base.MoreObjects; --import java.util.Random; --import javax.annotation.Nullable; -+import org.bukkit.event.block.BlockRedstoneEvent; - --import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit -+import javax.annotation.Nullable; -+import java.util.Random; - - public class BlockTripwireHook extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockTurtleEgg.java b/src/main/java/net/minecraft/server/BlockTurtleEgg.java -index 553c8affab6228cb187549deb5b34f79ba8f912c..77478d89afd0dcaef3b726b1e320a72bbd30e04e 100644 ---- a/src/main/java/net/minecraft/server/BlockTurtleEgg.java -+++ b/src/main/java/net/minecraft/server/BlockTurtleEgg.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - --import java.util.Random; --import javax.annotation.Nullable; - import org.bukkit.craftbukkit.block.CraftBlock; -- --// CraftBukkit start --import org.bukkit.event.entity.EntityInteractEvent; - import org.bukkit.craftbukkit.event.CraftEventFactory; -+import org.bukkit.event.entity.EntityInteractEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Random; - // CraftBukkit end - - public class BlockTurtleEgg extends Block { -diff --git a/src/main/java/net/minecraft/server/BlockVine.java b/src/main/java/net/minecraft/server/BlockVine.java -index b580caace70428b079fdc35b4e96ad87c9a1c057..48bbf6d3b5dcbe6c188066dd2ef9219dc903f19c 100644 ---- a/src/main/java/net/minecraft/server/BlockVine.java -+++ b/src/main/java/net/minecraft/server/BlockVine.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Map; - import java.util.Random; --import javax.annotation.Nullable; -- --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class BlockVine extends Block { - -diff --git a/src/main/java/net/minecraft/server/BlockWitherSkull.java b/src/main/java/net/minecraft/server/BlockWitherSkull.java -index 5551da3bebeb87bc4037f0d4d59aaf4f05351760..c17ec61f589b7177af7ae44aa1f018d6e9f9aa1a 100644 ---- a/src/main/java/net/minecraft/server/BlockWitherSkull.java -+++ b/src/main/java/net/minecraft/server/BlockWitherSkull.java -@@ -1,11 +1,10 @@ - package net.minecraft.server; - --import java.util.Iterator; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.util.BlockStateListPopulator; - import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; - // CraftBukkit end - - public class BlockWitherSkull extends BlockSkull { -diff --git a/src/main/java/net/minecraft/server/BossBattleCustom.java b/src/main/java/net/minecraft/server/BossBattleCustom.java -index 00b1d1bd873c6fe5e1c26973e2b09dd688e4b150..722a2b229a2ecea9da0d59ab6c471b24394a1996 100644 ---- a/src/main/java/net/minecraft/server/BossBattleCustom.java -+++ b/src/main/java/net/minecraft/server/BossBattleCustom.java -@@ -1,14 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.Sets; -+import org.bukkit.boss.KeyedBossBar; -+import org.bukkit.craftbukkit.boss.CraftKeyedBossbar; -+ - import java.util.Collection; - import java.util.Iterator; - import java.util.Set; - import java.util.UUID; -- --// CraftBukkit start --import org.bukkit.boss.KeyedBossBar; --import org.bukkit.craftbukkit.boss.CraftKeyedBossbar; - // CraftBukkit end - - public class BossBattleCustom extends BossBattleServer { -diff --git a/src/main/java/net/minecraft/server/ChatHexColor.java b/src/main/java/net/minecraft/server/ChatHexColor.java -index 3cb6ad020da3018f4392b0791e50e6c2ebee869a..5e7f063f5e7a4f41554d13042726fb8b981365e3 100644 ---- a/src/main/java/net/minecraft/server/ChatHexColor.java -+++ b/src/main/java/net/minecraft/server/ChatHexColor.java -@@ -1,11 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; -+ -+import javax.annotation.Nullable; - import java.util.Map; - import java.util.Objects; - import java.util.function.Function; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public final class ChatHexColor { - -diff --git a/src/main/java/net/minecraft/server/ChatModifier.java b/src/main/java/net/minecraft/server/ChatModifier.java -index 9ce4fb103daaf71d399edc6abe422ef6580f3987..84d773375bedda460ba5da09e66cfb176f8a73e6 100644 ---- a/src/main/java/net/minecraft/server/ChatModifier.java -+++ b/src/main/java/net/minecraft/server/ChatModifier.java -@@ -1,16 +1,10 @@ - package net.minecraft.server; - --import com.google.gson.JsonDeserializationContext; --import com.google.gson.JsonDeserializer; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSerializationContext; --import com.google.gson.JsonSerializer; --import com.google.gson.JsonSyntaxException; -+import com.google.gson.*; -+ -+import javax.annotation.Nullable; - import java.lang.reflect.Type; - import java.util.Objects; --import javax.annotation.Nullable; - - public class ChatModifier { - -diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 9d313fdefef21fca61a6ba58a5d2feb3251ffc09..d1d3ed44bf3ad0dc44d268b66df77051aa195fb8 100644 ---- a/src/main/java/net/minecraft/server/Chunk.java -+++ b/src/main/java/net/minecraft/server/Chunk.java -@@ -7,21 +7,17 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet; - import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.shorts.ShortList; - import it.unimi.dsi.fastutil.shorts.ShortListIterator; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Map; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; -+import java.util.*; - import java.util.Map.Entry; --import java.util.Set; - import java.util.function.Consumer; - import java.util.function.Predicate; - import java.util.function.Supplier; - import java.util.stream.Stream; - import java.util.stream.StreamSupport; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class Chunk implements IChunkAccess { - -diff --git a/src/main/java/net/minecraft/server/ChunkCache.java b/src/main/java/net/minecraft/server/ChunkCache.java -index 8eecdcde510661ec3a13a25a04ba394f6b6dc012..e49bdf51a50ef368d11f4436acad81b0360b2129 100644 ---- a/src/main/java/net/minecraft/server/ChunkCache.java -+++ b/src/main/java/net/minecraft/server/ChunkCache.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.function.Predicate; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class ChunkCache implements IBlockAccess, ICollisionAccess { - -diff --git a/src/main/java/net/minecraft/server/ChunkConverter.java b/src/main/java/net/minecraft/server/ChunkConverter.java -index 5366314e5f889b5b8d7740bbd0f024d9b7b9d643..c52ff505f31036c00a67d4bf85302d73b3fd923e 100644 ---- a/src/main/java/net/minecraft/server/ChunkConverter.java -+++ b/src/main/java/net/minecraft/server/ChunkConverter.java -@@ -5,15 +5,11 @@ import com.google.common.collect.Sets; - import it.unimi.dsi.fastutil.objects.ObjectIterator; - import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; - import it.unimi.dsi.fastutil.objects.ObjectSet; --import java.util.EnumSet; --import java.util.IdentityHashMap; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Set; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import java.util.*; -+ - public class ChunkConverter { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/ChunkCoordIntPair.java b/src/main/java/net/minecraft/server/ChunkCoordIntPair.java -index b7093f1682d152988a54ffc5e5579d2f0ce10ad4..939551c5a8dd3272723f164fc3bf6336fee78171 100644 ---- a/src/main/java/net/minecraft/server/ChunkCoordIntPair.java -+++ b/src/main/java/net/minecraft/server/ChunkCoordIntPair.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Spliterators.AbstractSpliterator; - import java.util.function.Consumer; - import java.util.stream.Stream; - import java.util.stream.StreamSupport; --import javax.annotation.Nullable; - - public class ChunkCoordIntPair { - -diff --git a/src/main/java/net/minecraft/server/ChunkEmpty.java b/src/main/java/net/minecraft/server/ChunkEmpty.java -index fd49438961451987bd102a85484be24b341d946b..46f7f64edb26345118da9112bd6f85cf4f7e76b2 100644 ---- a/src/main/java/net/minecraft/server/ChunkEmpty.java -+++ b/src/main/java/net/minecraft/server/ChunkEmpty.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Arrays; - import java.util.List; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class ChunkEmpty extends Chunk { - -diff --git a/src/main/java/net/minecraft/server/ChunkGenerator.java b/src/main/java/net/minecraft/server/ChunkGenerator.java -index ee6726e5c664115417c6397aa153315c8eb835a9..43b80b6667839a2769c14508fcdef71d829dc949 100644 ---- a/src/main/java/net/minecraft/server/ChunkGenerator.java -+++ b/src/main/java/net/minecraft/server/ChunkGenerator.java -@@ -2,13 +2,10 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.mojang.serialization.Codec; --import java.util.BitSet; --import java.util.Iterator; --import java.util.List; --import java.util.ListIterator; --import java.util.Random; --import java.util.function.Function; -+ - import javax.annotation.Nullable; -+import java.util.*; -+import java.util.function.Function; - - public abstract class ChunkGenerator { - -diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 46fc70bd9878ca089c446619f97b997c9bb27eec..eabc303195f6cc560a4c3ad33e07bcd3abb3bce7 100644 ---- a/src/main/java/net/minecraft/server/ChunkMapDistance.java -+++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java -@@ -1,29 +1,19 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableList; --import com.google.common.collect.Sets; - import com.mojang.datafixers.util.Either; --import it.unimi.dsi.fastutil.longs.Long2ByteMap; --import it.unimi.dsi.fastutil.longs.Long2ByteOpenHashMap; --import it.unimi.dsi.fastutil.longs.Long2IntMap; --import it.unimi.dsi.fastutil.longs.Long2IntMaps; --import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; --import it.unimi.dsi.fastutil.longs.Long2ObjectMap; -+import it.unimi.dsi.fastutil.longs.*; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap.Entry; --import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; --import it.unimi.dsi.fastutil.longs.LongIterator; --import it.unimi.dsi.fastutil.longs.LongOpenHashSet; --import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.objects.ObjectIterator; - import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; - import it.unimi.dsi.fastutil.objects.ObjectSet; --import java.util.Set; --import java.util.concurrent.CompletableFuture; --import java.util.concurrent.Executor; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --import org.spigotmc.AsyncCatcher; // Paper -+import org.spigotmc.AsyncCatcher; -+ -+import javax.annotation.Nullable; -+import java.util.concurrent.CompletableFuture; -+import java.util.concurrent.Executor; - - public abstract class ChunkMapDistance { - -diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index c12f4326f68020fbb140e97f0ef43ddcf5a71072..22f96def107223b07dd4b3b89b65cb103a061741 100644 ---- a/src/main/java/net/minecraft/server/ChunkProviderServer.java -+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -1,13 +1,13 @@ - package net.minecraft.server; - - import com.google.common.annotations.VisibleForTesting; --import com.google.common.collect.Lists; - import com.mojang.datafixers.DataFixer; - import com.mojang.datafixers.util.Either; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.io.IOException; - import java.util.Arrays; --import java.util.Collections; - import java.util.List; - import java.util.Optional; - import java.util.concurrent.CompletableFuture; -@@ -16,10 +16,6 @@ import java.util.function.BooleanSupplier; - import java.util.function.Consumer; - import java.util.function.Function; - import java.util.function.Supplier; --import javax.annotation.Nullable; --import com.destroystokyo.paper.exception.ServerInternalException; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class ChunkProviderServer extends IChunkProvider { - -diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 8a7296f691008dc35502165ec694c70a145247df..6c117070ba321a1a59c97fd638c54b9126a48333 100644 ---- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java -+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -@@ -1,25 +1,18 @@ - package net.minecraft.server; - --import co.aikar.timings.Timings; - import com.google.common.collect.Maps; - import it.unimi.dsi.fastutil.longs.LongOpenHashSet; - import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.shorts.ShortList; - import it.unimi.dsi.fastutil.shorts.ShortListIterator; --import java.util.ArrayDeque; // Paper --import java.util.Arrays; --import java.util.BitSet; --import java.util.EnumSet; --import java.util.Iterator; --import java.util.Locale; --import java.util.Map; --import java.util.Map.Entry; --import java.util.Objects; --import java.util.function.Function; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.Map.Entry; -+import java.util.function.Function; -+ - public class ChunkRegionLoader { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java -index cf54336b8618071056ab8bf1ac13bbe6d29ced0e..bdfbd1c51aa25b06ecb4abfc0012712cbbcafaa7 100644 ---- a/src/main/java/net/minecraft/server/ChunkSection.java -+++ b/src/main/java/net/minecraft/server/ChunkSection.java -@@ -1,8 +1,9 @@ - package net.minecraft.server; - --import java.util.function.Predicate; --import com.destroystokyo.paper.antixray.ChunkPacketInfo; // Paper - Anti-Xray - Add chunk packet info -+import com.destroystokyo.paper.antixray.ChunkPacketInfo; -+ - import javax.annotation.Nullable; -+import java.util.function.Predicate; - - public class ChunkSection { - -diff --git a/src/main/java/net/minecraft/server/ChunkStatus.java b/src/main/java/net/minecraft/server/ChunkStatus.java -index 7e32a2eab92500857e8cc07837f106dc28b371ea..aa4c400e214775fb1e6bfefd11713c1ff9418ddf 100644 ---- a/src/main/java/net/minecraft/server/ChunkStatus.java -+++ b/src/main/java/net/minecraft/server/ChunkStatus.java -@@ -5,12 +5,13 @@ import com.google.common.collect.Lists; - import com.mojang.datafixers.util.Either; - import it.unimi.dsi.fastutil.ints.IntArrayList; - import it.unimi.dsi.fastutil.ints.IntList; -+ -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.EnumSet; - import java.util.List; - import java.util.concurrent.CompletableFuture; - import java.util.function.Function; --import javax.annotation.Nullable; - - public class ChunkStatus { - -diff --git a/src/main/java/net/minecraft/server/CombatTracker.java b/src/main/java/net/minecraft/server/CombatTracker.java -index 7f3401d5d7878e4a0f407e92bf110dbe7c7868a6..75818cd3f54dcd362f78842a640ce17f4c5913ef 100644 ---- a/src/main/java/net/minecraft/server/CombatTracker.java -+++ b/src/main/java/net/minecraft/server/CombatTracker.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Optional; --import javax.annotation.Nullable; - - public class CombatTracker { - -diff --git a/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java b/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java -index 3820acd65f3cd488dba964e6d9c458852570f4a0..1a802f7f8b6842858e936b73421240cf67fa38b9 100644 ---- a/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java -+++ b/src/main/java/net/minecraft/server/CommandBlockListenerAbstract.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - -+import org.bukkit.command.CommandSender; -+ -+import javax.annotation.Nullable; - import java.text.SimpleDateFormat; - import java.util.Date; - import java.util.UUID; --import javax.annotation.Nullable; --import org.bukkit.command.CommandSender; - - public abstract class CommandBlockListenerAbstract implements ICommandListener { - -diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java -index 4e2a5a5b152b9d0eeba39bb4073d28890df0e757..c11ba2f1c4cfea9d32a432e473a2a82f06a1356a 100644 ---- a/src/main/java/net/minecraft/server/CommandDispatcher.java -+++ b/src/main/java/net/minecraft/server/CommandDispatcher.java -@@ -1,5 +1,6 @@ - package net.minecraft.server; - -+import com.google.common.base.Joiner; - import com.google.common.collect.Maps; - import com.mojang.brigadier.ParseResults; - import com.mojang.brigadier.StringReader; -@@ -10,19 +11,17 @@ import com.mojang.brigadier.builder.RequiredArgumentBuilder; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.tree.CommandNode; - import com.mojang.brigadier.tree.RootCommandNode; --import java.util.Iterator; --import java.util.Map; --import java.util.function.Predicate; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -+import org.bukkit.event.player.PlayerCommandSendEvent; -+import org.bukkit.event.server.ServerCommandEvent; - --// CraftBukkit start --import com.google.common.base.Joiner; -+import javax.annotation.Nullable; - import java.util.Collection; -+import java.util.Iterator; - import java.util.LinkedHashSet; --import org.bukkit.event.player.PlayerCommandSendEvent; --import org.bukkit.event.server.ServerCommandEvent; -+import java.util.Map; -+import java.util.function.Predicate; - // CraftBukkit end - - public class CommandDispatcher { -diff --git a/src/main/java/net/minecraft/server/CommandEffect.java b/src/main/java/net/minecraft/server/CommandEffect.java -index ee1e642b22736b2b9b9f59cc7f2c3e9edc98796b..ddb9948d3f729dff5daa039f6fba099d46333012 100644 ---- a/src/main/java/net/minecraft/server/CommandEffect.java -+++ b/src/main/java/net/minecraft/server/CommandEffect.java -@@ -8,9 +8,10 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; - import com.mojang.brigadier.builder.RequiredArgumentBuilder; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Iterator; --import javax.annotation.Nullable; - - public class CommandEffect { - -diff --git a/src/main/java/net/minecraft/server/CommandGamemode.java b/src/main/java/net/minecraft/server/CommandGamemode.java -index 8400fa356dd2c5a76ac7741d114bf066af8043c5..9ae005dbce25bc1abf5ee6c60aff7707c77691c7 100644 ---- a/src/main/java/net/minecraft/server/CommandGamemode.java -+++ b/src/main/java/net/minecraft/server/CommandGamemode.java -@@ -3,6 +3,7 @@ package net.minecraft.server; - import com.mojang.brigadier.arguments.ArgumentType; - import com.mojang.brigadier.builder.LiteralArgumentBuilder; - import com.mojang.brigadier.context.CommandContext; -+ - import java.util.Collection; - import java.util.Collections; - import java.util.Iterator; -diff --git a/src/main/java/net/minecraft/server/CommandListenerWrapper.java b/src/main/java/net/minecraft/server/CommandListenerWrapper.java -index a4995ddc82100bc460cd2021dcfa8389769d5da0..2829ea1b689286314c1d0c5579abd0c553aca405 100644 ---- a/src/main/java/net/minecraft/server/CommandListenerWrapper.java -+++ b/src/main/java/net/minecraft/server/CommandListenerWrapper.java -@@ -8,13 +8,14 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; - import com.mojang.brigadier.suggestion.Suggestions; - import com.mojang.brigadier.suggestion.SuggestionsBuilder; - import com.mojang.brigadier.tree.CommandNode; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Iterator; - import java.util.Set; - import java.util.concurrent.CompletableFuture; - import java.util.function.BinaryOperator; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class CommandListenerWrapper implements ICompletionProvider, com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource { // Paper - -diff --git a/src/main/java/net/minecraft/server/CommandReload.java b/src/main/java/net/minecraft/server/CommandReload.java -index 2e215558e862b4ddd8262b754cd4c51ba7e52946..0767395f07990f88d88ca1a8d9666ed7181c65f8 100644 ---- a/src/main/java/net/minecraft/server/CommandReload.java -+++ b/src/main/java/net/minecraft/server/CommandReload.java -@@ -2,11 +2,12 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.mojang.brigadier.builder.LiteralArgumentBuilder; --import java.util.Collection; --import java.util.Iterator; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import java.util.Collection; -+import java.util.Iterator; -+ - public class CommandReload { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/CommandSpreadPlayers.java b/src/main/java/net/minecraft/server/CommandSpreadPlayers.java -index c9f4b69874e693c8e5c3346f09db7b5014dcfb63..2a1baa58de9a1061e45dea46486ea8696d95d7d2 100644 ---- a/src/main/java/net/minecraft/server/CommandSpreadPlayers.java -+++ b/src/main/java/net/minecraft/server/CommandSpreadPlayers.java -@@ -10,12 +10,8 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; - import com.mojang.brigadier.builder.RequiredArgumentBuilder; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.exceptions.Dynamic4CommandExceptionType; --import java.util.Collection; --import java.util.Iterator; --import java.util.Locale; --import java.util.Map; --import java.util.Random; --import java.util.Set; -+ -+import java.util.*; - - public class CommandSpreadPlayers { - -diff --git a/src/main/java/net/minecraft/server/CommandTeleport.java b/src/main/java/net/minecraft/server/CommandTeleport.java -index 203373c3bb97d331ff6c6b9e21ae4cbc8b173fe6..c0934df435089d020c2e637ec6329d9bf9276c0f 100644 ---- a/src/main/java/net/minecraft/server/CommandTeleport.java -+++ b/src/main/java/net/minecraft/server/CommandTeleport.java -@@ -6,16 +6,12 @@ import com.mojang.brigadier.builder.RequiredArgumentBuilder; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; - import com.mojang.brigadier.tree.LiteralCommandNode; --import java.util.Collection; --import java.util.Collections; --import java.util.EnumSet; --import java.util.Iterator; --import java.util.Set; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.event.entity.EntityTeleportEvent; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // CraftBukkit end - - public class CommandTeleport { -diff --git a/src/main/java/net/minecraft/server/CommandTime.java b/src/main/java/net/minecraft/server/CommandTime.java -index b1fe8d51dc78ad4d8c08108c5bd8f95eefe2f953..97ea1e66ed7d5d85cf52b8eecc93abfc5c807166 100644 ---- a/src/main/java/net/minecraft/server/CommandTime.java -+++ b/src/main/java/net/minecraft/server/CommandTime.java -@@ -3,10 +3,10 @@ package net.minecraft.server; - import com.mojang.brigadier.arguments.ArgumentType; - import com.mojang.brigadier.arguments.IntegerArgumentType; - import com.mojang.brigadier.builder.LiteralArgumentBuilder; --import java.util.Iterator; --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.event.world.TimeSkipEvent; -+ -+import java.util.Iterator; - // CrafBukkit end - - public class CommandTime { -diff --git a/src/main/java/net/minecraft/server/Container.java b/src/main/java/net/minecraft/server/Container.java -index 44db4851e2e6901e816b34c2037d00948c0a2008..bd6e5f85f7cab597f1e7e076fe4305efbdf598b8 100644 ---- a/src/main/java/net/minecraft/server/Container.java -+++ b/src/main/java/net/minecraft/server/Container.java -@@ -1,22 +1,17 @@ - package net.minecraft.server; - -+import com.google.common.base.Preconditions; - import com.google.common.collect.Lists; - import com.google.common.collect.Sets; --import java.util.Iterator; --import java.util.List; --import java.util.Set; --import javax.annotation.Nullable; -- --// CraftBukkit start --import com.google.common.base.Preconditions; --import java.util.HashMap; --import java.util.Map; - import org.bukkit.craftbukkit.inventory.CraftInventory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.Event.Result; - import org.bukkit.event.inventory.InventoryDragEvent; - import org.bukkit.event.inventory.InventoryType; - import org.bukkit.inventory.InventoryView; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // CraftBukkit end - - public abstract class Container { -diff --git a/src/main/java/net/minecraft/server/ContainerAnvil.java b/src/main/java/net/minecraft/server/ContainerAnvil.java -index fc2038df89f25c07f6f853f6df41fe9b203c3585..2b55aa0f3444c3c5c3233083cb3693e4ccac3b6d 100644 ---- a/src/main/java/net/minecraft/server/ContainerAnvil.java -+++ b/src/main/java/net/minecraft/server/ContainerAnvil.java -@@ -1,13 +1,12 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.Map; - import org.apache.commons.lang3.StringUtils; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftInventoryView; -+ -+import java.util.Iterator; -+import java.util.Map; - // CraftBukkit end - - public class ContainerAnvil extends ContainerAnvilAbstract { -diff --git a/src/main/java/net/minecraft/server/ContainerBeacon.java b/src/main/java/net/minecraft/server/ContainerBeacon.java -index 288390bf9210f0fcc7c85e3093a4924614dc1573..15e2f03d11ec35477401daa5e104ea76fd5de82b 100644 ---- a/src/main/java/net/minecraft/server/ContainerBeacon.java -+++ b/src/main/java/net/minecraft/server/ContainerBeacon.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit -+import org.bukkit.craftbukkit.inventory.CraftInventoryView; - - public class ContainerBeacon extends Container { - -diff --git a/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/src/main/java/net/minecraft/server/ContainerEnchantTable.java -index 6b0e2c7fe0386b97b513be84d22bbcae7bb57ae8..3722c14e2491cd929cad00f9bd971a1fc2f56694 100644 ---- a/src/main/java/net/minecraft/server/ContainerEnchantTable.java -+++ b/src/main/java/net/minecraft/server/ContainerEnchantTable.java -@@ -1,11 +1,5 @@ - package net.minecraft.server; - --import java.util.List; --import java.util.Random; -- --// CraftBukkit start --import java.util.Collections; --import java.util.Map; - import org.bukkit.Location; - import org.bukkit.NamespacedKey; - import org.bukkit.craftbukkit.inventory.CraftInventoryEnchanting; -@@ -13,9 +7,13 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryView; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; - import org.bukkit.enchantments.EnchantmentOffer; -+import org.bukkit.entity.Player; - import org.bukkit.event.enchantment.EnchantItemEvent; - import org.bukkit.event.enchantment.PrepareItemEnchantEvent; --import org.bukkit.entity.Player; -+ -+import java.util.List; -+import java.util.Map; -+import java.util.Random; - // CraftBukkit end - - public class ContainerEnchantTable extends Container { -diff --git a/src/main/java/net/minecraft/server/ContainerGrindstone.java b/src/main/java/net/minecraft/server/ContainerGrindstone.java -index 869353bdcda753f90872a5fbad7adfa9d25447a7..667099bb130038b88bc2e1c4be076e8d725a5601 100644 ---- a/src/main/java/net/minecraft/server/ContainerGrindstone.java -+++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java -@@ -1,15 +1,14 @@ - package net.minecraft.server; - --import java.util.HashMap; --import java.util.Iterator; --import java.util.Map; --import java.util.Map.Entry; --import java.util.stream.Collectors; --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.craftbukkit.inventory.CraftInventoryGrindstone; - import org.bukkit.craftbukkit.inventory.CraftInventoryView; - import org.bukkit.entity.Player; -+ -+import java.util.HashMap; -+import java.util.Iterator; -+import java.util.Map; -+import java.util.Map.Entry; - // CraftBukkit end - - public class ContainerGrindstone extends Container { -diff --git a/src/main/java/net/minecraft/server/ContainerMerchant.java b/src/main/java/net/minecraft/server/ContainerMerchant.java -index a63446048d9930ea017e417618012239df354a31..d7f3f1dabf5cef892ff51566bbacd286bc18fd1e 100644 ---- a/src/main/java/net/minecraft/server/ContainerMerchant.java -+++ b/src/main/java/net/minecraft/server/ContainerMerchant.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit -+import org.bukkit.craftbukkit.inventory.CraftInventoryView; - - public class ContainerMerchant extends Container { - -diff --git a/src/main/java/net/minecraft/server/ContainerSmithing.java b/src/main/java/net/minecraft/server/ContainerSmithing.java -index 38fb4717e7f52bb41a58e74207fc828c58a3c14c..b541ee24b5bf4b5fb5cd1a6e197fa76b3e3596c3 100644 ---- a/src/main/java/net/minecraft/server/ContainerSmithing.java -+++ b/src/main/java/net/minecraft/server/ContainerSmithing.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - --import java.util.List; --import javax.annotation.Nullable; -+import org.bukkit.craftbukkit.inventory.CraftInventoryView; - --import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit -+import javax.annotation.Nullable; -+import java.util.List; - - public class ContainerSmithing extends ContainerAnvilAbstract { - -diff --git a/src/main/java/net/minecraft/server/ContainerStonecutter.java b/src/main/java/net/minecraft/server/ContainerStonecutter.java -index a235f6406dc06ceafea6fbe429bf595da2fea07c..0e1630424aa112df9e602f782cc430c8ffb95d4a 100644 ---- a/src/main/java/net/minecraft/server/ContainerStonecutter.java -+++ b/src/main/java/net/minecraft/server/ContainerStonecutter.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.util.List; --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftInventoryStonecutter; - import org.bukkit.craftbukkit.inventory.CraftInventoryView; - import org.bukkit.entity.Player; -+ -+import java.util.List; - // CraftBukkit end - - public class ContainerStonecutter extends Container { -diff --git a/src/main/java/net/minecraft/server/ContainerWorkbench.java b/src/main/java/net/minecraft/server/ContainerWorkbench.java -index 0700af8f1141eab1a996c5aea78c1aaa19484514..7d6a2cc31e9082c33ac8fab99721639c280c54be 100644 ---- a/src/main/java/net/minecraft/server/ContainerWorkbench.java -+++ b/src/main/java/net/minecraft/server/ContainerWorkbench.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - --import java.util.Optional; --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftInventoryCrafting; - import org.bukkit.craftbukkit.inventory.CraftInventoryView; -+ -+import java.util.Optional; - // CraftBukkit end - - public class ContainerWorkbench extends ContainerRecipeBook { -diff --git a/src/main/java/net/minecraft/server/Convertable.java b/src/main/java/net/minecraft/server/Convertable.java -index 079304e8b1abb2c37febef536b1dd9f76e5ad47d..c0f2e44c6c54e22f32d5df6cbc9e926387749383 100644 ---- a/src/main/java/net/minecraft/server/Convertable.java -+++ b/src/main/java/net/minecraft/server/Convertable.java -@@ -9,12 +9,11 @@ import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.DynamicOps; - import com.mojang.serialization.Lifecycle; --import java.io.File; --import java.io.FileInputStream; --import java.io.FileOutputStream; --import java.io.IOException; --import java.io.InputStream; --import java.io.OutputStream; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.nio.file.Files; - import java.nio.file.LinkOption; - import java.time.format.DateTimeFormatter; -@@ -24,9 +23,6 @@ import java.time.temporal.ChronoField; - import java.util.Map; - import java.util.Optional; - import java.util.function.BiFunction; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class Convertable { - -diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java -index da718601eb77330ff3e5eb25924d2820e3f8acaa..75afa85ce53ae0bfcdfa1a0b51f939c8c0dfed2c 100644 ---- a/src/main/java/net/minecraft/server/CraftingManager.java -+++ b/src/main/java/net/minecraft/server/CraftingManager.java -@@ -1,23 +1,16 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; --import com.google.common.collect.ImmutableMap.Builder; - import com.google.common.collect.Maps; --import com.google.gson.Gson; --import com.google.gson.GsonBuilder; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSyntaxException; -+import com.google.gson.*; -+import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; - - import java.util.*; - import java.util.Map.Entry; - import java.util.stream.Collectors; - import java.util.stream.Stream; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -- --import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; // CraftBukkit - - public class CraftingManager extends ResourceDataJson { - -diff --git a/src/main/java/net/minecraft/server/CrashReport.java b/src/main/java/net/minecraft/server/CrashReport.java -index 7b5b8fcac615ab517b4dd8ad9fab17d635f716bc..8e48cbf130d1033f8ea65bbbe90384782b04f283 100644 ---- a/src/main/java/net/minecraft/server/CrashReport.java -+++ b/src/main/java/net/minecraft/server/CrashReport.java -@@ -1,11 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.io.File; --import java.io.FileOutputStream; --import java.io.OutputStreamWriter; --import java.io.PrintWriter; --import java.io.StringWriter; -+import org.apache.commons.io.IOUtils; -+import org.apache.commons.lang3.ArrayUtils; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import java.io.*; - import java.nio.charset.StandardCharsets; - import java.text.SimpleDateFormat; - import java.util.Date; -@@ -14,10 +15,6 @@ import java.util.List; - import java.util.StringJoiner; - import java.util.concurrent.CompletionException; - import java.util.stream.Collectors; --import org.apache.commons.io.IOUtils; --import org.apache.commons.lang3.ArrayUtils; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class CrashReport { - -diff --git a/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java b/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java -index 5fd81933f8ba30d165fb3fdf25aaf94917637539..3d9054b44fcaac45f3d37ec1b3b7cd66a55aaccc 100644 ---- a/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java -+++ b/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import com.google.common.collect.Maps; - import com.google.common.collect.Sets; - import com.google.gson.JsonObject; -+ - import java.util.Iterator; - import java.util.List; --import java.util.Map; - import java.util.Set; - import java.util.function.Predicate; - -diff --git a/src/main/java/net/minecraft/server/CustomFunction.java b/src/main/java/net/minecraft/server/CustomFunction.java -index 67e1b153a6f2ff9547dd03fcf4abcbea851e69f9..759dbd50d584ed2e1ff836c90526d50d59d15691 100644 ---- a/src/main/java/net/minecraft/server/CustomFunction.java -+++ b/src/main/java/net/minecraft/server/CustomFunction.java -@@ -4,10 +4,11 @@ import com.google.common.collect.Lists; - import com.mojang.brigadier.ParseResults; - import com.mojang.brigadier.StringReader; - import com.mojang.brigadier.exceptions.CommandSyntaxException; -+ -+import javax.annotation.Nullable; - import java.util.ArrayDeque; - import java.util.List; - import java.util.Optional; --import javax.annotation.Nullable; - - public class CustomFunction { - -diff --git a/src/main/java/net/minecraft/server/CustomFunctionData.java b/src/main/java/net/minecraft/server/CustomFunctionData.java -index ddfd127d0e618d373086caf2c0ce6ca218a0b021..52150f3b71552ecbd721e464be1533a759309d25 100644 ---- a/src/main/java/net/minecraft/server/CustomFunctionData.java -+++ b/src/main/java/net/minecraft/server/CustomFunctionData.java -@@ -1,11 +1,8 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.util.ArrayDeque; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Optional; -+ -+import java.util.*; - - public class CustomFunctionData { - -diff --git a/src/main/java/net/minecraft/server/DataBits.java b/src/main/java/net/minecraft/server/DataBits.java -index ed817893e6955059d026b0466c2fcd20a879769b..d109499e811123d623bed4315201bcfd71ea77fe 100644 ---- a/src/main/java/net/minecraft/server/DataBits.java -+++ b/src/main/java/net/minecraft/server/DataBits.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - --import java.util.function.IntConsumer; --import javax.annotation.Nullable; - import org.apache.commons.lang3.Validate; - -+import javax.annotation.Nullable; -+import java.util.function.IntConsumer; -+ - public class DataBits { - - private static final int[] a = new int[]{-1, -1, 0, Integer.MIN_VALUE, 0, 0, 1431655765, 1431655765, 0, Integer.MIN_VALUE, 0, 1, 858993459, 858993459, 0, 715827882, 715827882, 0, 613566756, 613566756, 0, Integer.MIN_VALUE, 0, 2, 477218588, 477218588, 0, 429496729, 429496729, 0, 390451572, 390451572, 0, 357913941, 357913941, 0, 330382099, 330382099, 0, 306783378, 306783378, 0, 286331153, 286331153, 0, Integer.MIN_VALUE, 0, 3, 252645135, 252645135, 0, 238609294, 238609294, 0, 226050910, 226050910, 0, 214748364, 214748364, 0, 204522252, 204522252, 0, 195225786, 195225786, 0, 186737708, 186737708, 0, 178956970, 178956970, 0, 171798691, 171798691, 0, 165191049, 165191049, 0, 159072862, 159072862, 0, 153391689, 153391689, 0, 148102320, 148102320, 0, 143165576, 143165576, 0, 138547332, 138547332, 0, Integer.MIN_VALUE, 0, 4, 130150524, 130150524, 0, 126322567, 126322567, 0, 122713351, 122713351, 0, 119304647, 119304647, 0, 116080197, 116080197, 0, 113025455, 113025455, 0, 110127366, 110127366, 0, 107374182, 107374182, 0, 104755299, 104755299, 0, 102261126, 102261126, 0, 99882960, 99882960, 0, 97612893, 97612893, 0, 95443717, 95443717, 0, 93368854, 93368854, 0, 91382282, 91382282, 0, 89478485, 89478485, 0, 87652393, 87652393, 0, 85899345, 85899345, 0, 84215045, 84215045, 0, 82595524, 82595524, 0, 81037118, 81037118, 0, 79536431, 79536431, 0, 78090314, 78090314, 0, 76695844, 76695844, 0, 75350303, 75350303, 0, 74051160, 74051160, 0, 72796055, 72796055, 0, 71582788, 71582788, 0, 70409299, 70409299, 0, 69273666, 69273666, 0, 68174084, 68174084, 0, Integer.MIN_VALUE, 0, 5}; -diff --git a/src/main/java/net/minecraft/server/DataConverterFlatten.java b/src/main/java/net/minecraft/server/DataConverterFlatten.java -index a68829e2c671632fa0c642cf14b4e7c4e5e50c92..8d1f58aa2601fa79f68731b68e9a8e09629efeb7 100644 ---- a/src/main/java/net/minecraft/server/DataConverterFlatten.java -+++ b/src/main/java/net/minecraft/server/DataConverterFlatten.java -@@ -2,23 +2,17 @@ package net.minecraft.server; - - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; --import com.mojang.datafixers.DSL; --import com.mojang.datafixers.DataFix; --import com.mojang.datafixers.DataFixUtils; --import com.mojang.datafixers.OpticFinder; --import com.mojang.datafixers.TypeRewriteRule; --import com.mojang.datafixers.Typed; -+import com.mojang.datafixers.*; - import com.mojang.datafixers.schemas.Schema; - import com.mojang.datafixers.types.Type; - import com.mojang.datafixers.util.Pair; - import com.mojang.serialization.Dynamic; - -+import javax.annotation.Nullable; - import java.util.HashSet; - import java.util.Map; - import java.util.Optional; - import java.util.Set; --import java.util.stream.Collectors; --import javax.annotation.Nullable; - - public class DataConverterFlatten extends DataFix { - -diff --git a/src/main/java/net/minecraft/server/DataConverterMap.java b/src/main/java/net/minecraft/server/DataConverterMap.java -index 2a3bcf8066047ba0b54d6de4d6988fba33773a0b..85bb4850b79f15f07fdf723e79a236d755b8b330 100644 ---- a/src/main/java/net/minecraft/server/DataConverterMap.java -+++ b/src/main/java/net/minecraft/server/DataConverterMap.java -@@ -1,14 +1,11 @@ - package net.minecraft.server; - --import com.mojang.datafixers.DSL; --import com.mojang.datafixers.DataFix; --import com.mojang.datafixers.OpticFinder; --import com.mojang.datafixers.TypeRewriteRule; --import com.mojang.datafixers.Typed; -+import com.mojang.datafixers.*; - import com.mojang.datafixers.schemas.Schema; - import com.mojang.datafixers.types.Type; - import com.mojang.datafixers.util.Pair; - import com.mojang.serialization.Dynamic; -+ - import java.util.Objects; - import java.util.Optional; - -diff --git a/src/main/java/net/minecraft/server/DataConverterRegistry.java b/src/main/java/net/minecraft/server/DataConverterRegistry.java -index 5d807082281527c78a08d01430e42b3ecee6d2cf..6953ca641f8a7a8481254cadda2ad83cd809767a 100644 ---- a/src/main/java/net/minecraft/server/DataConverterRegistry.java -+++ b/src/main/java/net/minecraft/server/DataConverterRegistry.java -@@ -6,6 +6,7 @@ import com.mojang.datafixers.DataFixer; - import com.mojang.datafixers.DataFixerBuilder; - import com.mojang.datafixers.Typed; - import com.mojang.datafixers.schemas.Schema; -+ - import java.util.Map; - import java.util.Objects; - import java.util.function.BiFunction; -diff --git a/src/main/java/net/minecraft/server/DataPalette.java b/src/main/java/net/minecraft/server/DataPalette.java -index 75b721933ccbe8edc1cd7ea5cc4562214e26b66d..f37489d87afe759664152d76de03cca08e2cfe7d 100644 ---- a/src/main/java/net/minecraft/server/DataPalette.java -+++ b/src/main/java/net/minecraft/server/DataPalette.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.function.Predicate; - import javax.annotation.Nullable; -+import java.util.function.Predicate; - - public interface DataPalette { - -diff --git a/src/main/java/net/minecraft/server/DataPaletteBlock.java b/src/main/java/net/minecraft/server/DataPaletteBlock.java -index 52948a84b89554646c9ec1fd13d6d3c9e7cbf996..eada694a8e57284bdda477ccca2c250285c34fcd 100644 ---- a/src/main/java/net/minecraft/server/DataPaletteBlock.java -+++ b/src/main/java/net/minecraft/server/DataPaletteBlock.java -@@ -1,14 +1,12 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.antixray.ChunkPacketInfo; - import it.unimi.dsi.fastutil.ints.Int2IntMap; - import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; --import com.destroystokyo.paper.antixray.ChunkPacketInfo; // Paper - Anti-Xray - Add chunk packet info --import java.util.Arrays; --import java.util.Objects; -+ - import java.util.concurrent.locks.ReentrantLock; - import java.util.function.Function; - import java.util.function.Predicate; --import java.util.stream.Collectors; - - public class DataPaletteBlock implements DataPaletteExpandable { - -diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java -index 23fdd7c7d0368cc88e467a890cea8aa9b495fa11..e038b406de0de50b1df55349c125c18f691ca61a 100644 ---- a/src/main/java/net/minecraft/server/DataWatcher.java -+++ b/src/main/java/net/minecraft/server/DataWatcher.java -@@ -9,8 +9,6 @@ import java.util.ArrayList; - import java.util.Iterator; - import java.util.List; - import java.util.Map; --import java.util.concurrent.locks.ReadWriteLock; --import java.util.concurrent.locks.ReentrantReadWriteLock; - import javax.annotation.Nullable; - import org.apache.commons.lang3.ObjectUtils; - import org.apache.logging.log4j.LogManager; -diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index b045cfc0e8ade9632cfde5cffe8fe93b5ee08b27..8974915ea2e0d2e831d2fb25a5402c439320965d 100644 ---- a/src/main/java/net/minecraft/server/DedicatedServer.java -+++ b/src/main/java/net/minecraft/server/DedicatedServer.java -@@ -1,37 +1,27 @@ - package net.minecraft.server; - -+import co.aikar.timings.MinecraftTimings; - import com.google.common.base.Strings; --import com.google.common.collect.Lists; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.GameProfileRepository; - import com.mojang.authlib.minecraft.MinecraftSessionService; - import com.mojang.datafixers.DataFixer; --import java.io.BufferedReader; -+import org.apache.logging.log4j.Level; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+import org.bukkit.command.CommandSender; -+import org.bukkit.craftbukkit.util.Waitable; -+import org.bukkit.event.server.RemoteServerCommandEvent; -+import org.bukkit.event.server.ServerCommandEvent; -+ -+import javax.annotation.Nullable; - import java.io.IOException; --import java.io.InputStreamReader; - import java.net.InetAddress; - import java.net.Proxy; --import java.nio.charset.StandardCharsets; --import java.util.Collections; --import java.util.List; - import java.util.Locale; - import java.util.Optional; - import java.util.function.BooleanSupplier; - import java.util.regex.Pattern; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.io.PrintStream; --import org.apache.logging.log4j.Level; -- --import org.bukkit.command.CommandSender; --import org.bukkit.craftbukkit.LoggerOutputStream; --import co.aikar.timings.MinecraftTimings; // Paper --import org.bukkit.event.server.ServerCommandEvent; --import org.bukkit.craftbukkit.util.Waitable; --import org.bukkit.event.server.RemoteServerCommandEvent; - // CraftBukkit end - - public class DedicatedServer extends MinecraftServer implements IMinecraftServer { -diff --git a/src/main/java/net/minecraft/server/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/DedicatedServerProperties.java -index 6786fd0947724069366a2375c710ec518a92f2b1..addfec76b34a0af11e70d74ca8540155ba7254a3 100644 ---- a/src/main/java/net/minecraft/server/DedicatedServerProperties.java -+++ b/src/main/java/net/minecraft/server/DedicatedServerProperties.java -@@ -1,8 +1,9 @@ - package net.minecraft.server; - -+import joptsimple.OptionSet; -+ - import java.util.Properties; - import java.util.concurrent.TimeUnit; --import joptsimple.OptionSet; // CraftBukkit - - public class DedicatedServerProperties extends PropertyManager { - -diff --git a/src/main/java/net/minecraft/server/DedicatedServerSettings.java b/src/main/java/net/minecraft/server/DedicatedServerSettings.java -index 34f2ba53dadd69b48077db6da1aada32cb65bb70..659b302de68d8c5ec598aa499955aa05275d76a9 100644 ---- a/src/main/java/net/minecraft/server/DedicatedServerSettings.java -+++ b/src/main/java/net/minecraft/server/DedicatedServerSettings.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - --import java.util.function.UnaryOperator; --// CraftBukkit start --import java.io.File; - import joptsimple.OptionSet; -+ -+import java.io.File; -+import java.util.function.UnaryOperator; - // CraftBukkit end - - public class DedicatedServerSettings { -diff --git a/src/main/java/net/minecraft/server/DefinedStructure.java b/src/main/java/net/minecraft/server/DefinedStructure.java -index 25323eccfe0cffd6e6d17dab111d9a473e11333f..4bc8c48576ca91bd4efe02c94eaa4b8f1f740b2c 100644 ---- a/src/main/java/net/minecraft/server/DefinedStructure.java -+++ b/src/main/java/net/minecraft/server/DefinedStructure.java -@@ -4,9 +4,8 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.mojang.datafixers.util.Pair; - --import java.util.*; --import java.util.stream.Collectors; - import javax.annotation.Nullable; -+import java.util.*; - - public class DefinedStructure { - -diff --git a/src/main/java/net/minecraft/server/DefinedStructureManager.java b/src/main/java/net/minecraft/server/DefinedStructureManager.java -index 595789d2ba8571f8375a17cabd26a06040523849..162b6989ff3b2ab0513910ad86b84dc6d29bad81 100644 ---- a/src/main/java/net/minecraft/server/DefinedStructureManager.java -+++ b/src/main/java/net/minecraft/server/DefinedStructureManager.java -@@ -2,19 +2,15 @@ package net.minecraft.server; - - import com.google.common.collect.Maps; - import com.mojang.datafixers.DataFixer; --import java.io.FileInputStream; --import java.io.FileNotFoundException; --import java.io.FileOutputStream; --import java.io.IOException; --import java.io.InputStream; --import java.io.OutputStream; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.nio.file.Files; - import java.nio.file.InvalidPathException; - import java.nio.file.LinkOption; - import java.util.Map; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class DefinedStructureManager { - -diff --git a/src/main/java/net/minecraft/server/DispenseBehaviorShears.java b/src/main/java/net/minecraft/server/DispenseBehaviorShears.java -index fbd961f6d306c9173839412f48ac0698a65a3461..db743d81ea4cda5cafcccd01f3f120da9449dca4 100644 ---- a/src/main/java/net/minecraft/server/DispenseBehaviorShears.java -+++ b/src/main/java/net/minecraft/server/DispenseBehaviorShears.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.block.BlockDispenseEvent; -+ -+import java.util.Iterator; -+import java.util.List; - // CraftBukkit end - - public class DispenseBehaviorShears extends DispenseBehaviorMaybe { -diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java -index fdb11cfc423f64a358a0ba7a828b338c11388cae..8aabda32c5bd474e6ff6e2c08d97063ac44c5ce9 100644 ---- a/src/main/java/net/minecraft/server/DispenserRegistry.java -+++ b/src/main/java/net/minecraft/server/DispenserRegistry.java -@@ -1,20 +1,12 @@ - package net.minecraft.server; - -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.io.PrintStream; - import java.util.Set; - import java.util.TreeSet; - import java.util.function.Function; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.util.List; --import org.bukkit.Location; --import org.bukkit.TreeType; --import org.bukkit.craftbukkit.inventory.CraftItemStack; --import org.bukkit.craftbukkit.util.DummyGeneratorAccess; --import org.bukkit.event.block.BlockDispenseEvent; --import org.bukkit.event.world.StructureGrowEvent; - // CraftBukkit end - - public class DispenserRegistry { -diff --git a/src/main/java/net/minecraft/server/DragonControllerManager.java b/src/main/java/net/minecraft/server/DragonControllerManager.java -index 551387dc06a42bf7e45fe09f59fd92133edcad89..504761ac9fde42edb4cbaf28136d6f6e41c7a843 100644 ---- a/src/main/java/net/minecraft/server/DragonControllerManager.java -+++ b/src/main/java/net/minecraft/server/DragonControllerManager.java -@@ -2,7 +2,6 @@ package net.minecraft.server; - - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftEnderDragon; - import org.bukkit.event.entity.EnderDragonChangePhaseEvent; - // CraftBukkit end -diff --git a/src/main/java/net/minecraft/server/DragonControllerStrafe.java b/src/main/java/net/minecraft/server/DragonControllerStrafe.java -index ac546ff959510a2d0120c24c90bf13ff83873161..892be05e196ffed7c8bd59fff0cba89a614f5d66 100644 ---- a/src/main/java/net/minecraft/server/DragonControllerStrafe.java -+++ b/src/main/java/net/minecraft/server/DragonControllerStrafe.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+ - public class DragonControllerStrafe extends AbstractDragonController { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/EULA.java b/src/main/java/net/minecraft/server/EULA.java -index 345f8b811946fd11695dd718d060c5a86cd64703..391ed2bbb7fd02294ddb20c2c01a6886883ffdad 100644 ---- a/src/main/java/net/minecraft/server/EULA.java -+++ b/src/main/java/net/minecraft/server/EULA.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; - import java.io.InputStream; - import java.io.OutputStream; - import java.nio.file.Files; - import java.util.Properties; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class EULA { - -diff --git a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java b/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java -index 176be2e4d0d23d3e7967b6e0e99d060a96b3d976..4d769a513216c56ae93944cd99d091fa3ad97e51 100644 ---- a/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java -+++ b/src/main/java/net/minecraft/server/EnchantmentFrostWalker.java -@@ -1,9 +1,6 @@ - package net.minecraft.server; - - import java.util.Iterator; --// CraftBukkit start --import org.bukkit.craftbukkit.util.CraftMagicNumbers; --import org.bukkit.event.block.EntityBlockFormEvent; - // CraftBukkit end - - public class EnchantmentFrostWalker extends Enchantment { -diff --git a/src/main/java/net/minecraft/server/EnchantmentManager.java b/src/main/java/net/minecraft/server/EnchantmentManager.java -index 7a4768c32c426ef3cf16904e0f565a7f8fdc753f..ed7692c65b54e7b0f37794f6bd07141e32122d67 100644 ---- a/src/main/java/net/minecraft/server/EnchantmentManager.java -+++ b/src/main/java/net/minecraft/server/EnchantmentManager.java -@@ -2,17 +2,14 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Map.Entry; --import java.util.Random; --import java.util.function.Predicate; --import javax.annotation.Nullable; - import org.apache.commons.lang3.mutable.MutableFloat; - import org.apache.commons.lang3.mutable.MutableInt; - -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.Map.Entry; -+import java.util.function.Predicate; -+ - public class EnchantmentManager { - - public static int getEnchantmentLevel(Enchantment enchantment, ItemStack itemstack) { -diff --git a/src/main/java/net/minecraft/server/EnderDragonBattle.java b/src/main/java/net/minecraft/server/EnderDragonBattle.java -index e2c1de7ab246f1b4c8add06c513afc2eca97d796..589f00d27255aa1b227fea7c19a27862321c83ef 100644 ---- a/src/main/java/net/minecraft/server/EnderDragonBattle.java -+++ b/src/main/java/net/minecraft/server/EnderDragonBattle.java -@@ -1,21 +1,13 @@ - package net.minecraft.server; - --import com.google.common.collect.ContiguousSet; --import com.google.common.collect.DiscreteDomain; --import com.google.common.collect.Lists; --import com.google.common.collect.Range; --import com.google.common.collect.Sets; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Random; --import java.util.Set; --import java.util.UUID; --import java.util.function.Predicate; --import javax.annotation.Nullable; -+import com.google.common.collect.*; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.function.Predicate; -+ - public class EnderDragonBattle { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index eef7128a81b58089a2ea2495264a7e94104668a8..9008edf5ac28ead63f6df91f00a7a457fc72f1d0 100644 ---- a/src/main/java/net/minecraft/server/Entity.java -+++ b/src/main/java/net/minecraft/server/Entity.java -@@ -5,6 +5,7 @@ import co.aikar.timings.Timing; - import com.google.common.collect.Iterables; - import com.google.common.collect.Lists; - import com.google.common.collect.Sets; -+import dev.tr7zw.yatopia.YatopiaConfig; - import it.unimi.dsi.fastutil.objects.Object2DoubleArrayMap; - import it.unimi.dsi.fastutil.objects.Object2DoubleMap; - import org.apache.logging.log4j.LogManager; -@@ -21,12 +22,7 @@ import org.bukkit.entity.Hanging; - import org.bukkit.entity.LivingEntity; - import org.bukkit.entity.Pose; - import org.bukkit.entity.Vehicle; --import org.bukkit.event.entity.EntityAirChangeEvent; --import org.bukkit.event.entity.EntityCombustByEntityEvent; --import org.bukkit.event.entity.EntityCombustEvent; --import org.bukkit.event.entity.EntityDropItemEvent; --import org.bukkit.event.entity.EntityPortalEvent; --import org.bukkit.event.entity.EntityPoseChangeEvent; -+import org.bukkit.event.entity.*; - import org.bukkit.event.hanging.HangingBreakByEntityEvent; - import org.bukkit.event.player.PlayerTeleportEvent; - import org.bukkit.event.vehicle.VehicleBlockCollisionEvent; -@@ -35,16 +31,7 @@ import org.bukkit.event.vehicle.VehicleExitEvent; - import org.bukkit.plugin.PluginManager; - - import javax.annotation.Nullable; --import java.util.Arrays; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Locale; --import java.util.Optional; --import java.util.Random; --import java.util.Set; --import java.util.UUID; -+import java.util.*; - import java.util.concurrent.atomic.AtomicInteger; - import java.util.stream.Stream; - -diff --git a/src/main/java/net/minecraft/server/EntityAnimal.java b/src/main/java/net/minecraft/server/EntityAnimal.java -index b1a41ca53462e50dc0d5cabfcd91579908c07b62..2b7caab9e4b150b260603b0d2481f3d2e94f6fea 100644 ---- a/src/main/java/net/minecraft/server/EntityAnimal.java -+++ b/src/main/java/net/minecraft/server/EntityAnimal.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - --import java.util.Random; --import java.util.UUID; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityEnterLoveModeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Random; -+import java.util.UUID; - // CraftBukkit end - - public abstract class EntityAnimal extends EntityAgeable { -diff --git a/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java b/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java -index a6721a8872a5aae52eb39118bc490b2d2ea0a980..5a9157697e9b3b9dbd78aa20561c030957fd1243 100644 ---- a/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java -+++ b/src/main/java/net/minecraft/server/EntityAreaEffectCloud.java -@@ -4,18 +4,14 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.mojang.brigadier.StringReader; - import com.mojang.brigadier.exceptions.CommandSyntaxException; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Map.Entry; --import java.util.UUID; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftLivingEntity; - import org.bukkit.entity.LivingEntity; -+ -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.Map.Entry; - // CraftBukkit end - - public class EntityAreaEffectCloud extends Entity { -diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 98b0f1efb506803dfd213ad45a48adb365094a83..c4257b33f28a8cb6c99ad34d9226422e5ef4bfc0 100644 ---- a/src/main/java/net/minecraft/server/EntityArmorStand.java -+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java -@@ -1,17 +1,16 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --import java.util.function.Predicate; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.inventory.EquipmentSlot; - import org.bukkit.craftbukkit.CraftEquipmentSlot; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.entity.ArmorStand; - import org.bukkit.entity.Player; - import org.bukkit.event.player.PlayerArmorStandManipulateEvent; -+import org.bukkit.inventory.EquipmentSlot; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; -+import java.util.function.Predicate; - // CraftBukkit end - - public class EntityArmorStand extends EntityLiving { -diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java -index 0d43eb8e1712d1b98888db7579bc343ccb1e8989..2a659eb7bc7766663828a6547da9c1b3944a90a2 100644 ---- a/src/main/java/net/minecraft/server/EntityArrow.java -+++ b/src/main/java/net/minecraft/server/EntityArrow.java -@@ -2,15 +2,14 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -+import org.bukkit.event.entity.EntityCombustByEntityEvent; -+import org.bukkit.event.player.PlayerPickupArrowEvent; -+ -+import javax.annotation.Nullable; - import java.util.Arrays; - import java.util.Collection; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.event.entity.EntityCombustByEntityEvent; --import org.bukkit.event.player.PlayerPickupArrowEvent; - // CraftBukkit end - - public abstract class EntityArrow extends IProjectile { -diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java -index 3dd3b8913e345471f971c4ef55bb91200eb50a33..781cadf1471cf8aa405af406bc9ae8db01d6eb8f 100644 ---- a/src/main/java/net/minecraft/server/EntityBat.java -+++ b/src/main/java/net/minecraft/server/EntityBat.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.time.LocalDate; - import java.time.temporal.ChronoField; - import java.util.Random; --import javax.annotation.Nullable; --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class EntityBat extends EntityAmbient { - -diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index dcd99ae6cb244c819c68dfafa681adf63a34622a..6311fcac0c408c546b459b5a120990ea7a1dbd8f 100644 ---- a/src/main/java/net/minecraft/server/EntityBee.java -+++ b/src/main/java/net/minecraft/server/EntityBee.java -@@ -1,16 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.util.Comparator; --import java.util.EnumSet; --import java.util.Iterator; --import java.util.List; --import java.util.Optional; --import java.util.UUID; -+ -+import javax.annotation.Nullable; -+import java.util.*; - import java.util.function.Predicate; - import java.util.stream.Collectors; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class EntityBee extends EntityAnimal implements IEntityAngerable, EntityBird { - -diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java -index 409e0ac0a2aaccda29f7cc146dbccdd45de80e9f..e762b4db13286bd7d973d240ca3da95b9bbab57f 100644 ---- a/src/main/java/net/minecraft/server/EntityBoat.java -+++ b/src/main/java/net/minecraft/server/EntityBoat.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - - import com.google.common.collect.UnmodifiableIterator; --import java.util.List; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.entity.Vehicle; - import org.bukkit.event.vehicle.VehicleDamageEvent; - import org.bukkit.event.vehicle.VehicleDestroyEvent; - import org.bukkit.event.vehicle.VehicleEntityCollisionEvent; - import org.bukkit.event.vehicle.VehicleMoveEvent; -+ -+import javax.annotation.Nullable; -+import java.util.List; - // CraftBukkit end - - public class EntityBoat extends Entity { -diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 20497c3962a2d025b11f66b4659402c9217825cf..2fad3a1ae884726f431d8e5f5106134dec322309 100644 ---- a/src/main/java/net/minecraft/server/EntityCat.java -+++ b/src/main/java/net/minecraft/server/EntityCat.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Map; - import java.util.Random; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityCat extends EntityTameableAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java -index 5e7f3af37b7cb068183fc2a7637b4c770fd5f936..46c64aa6b0676635a48452818a99322a396f0441 100644 ---- a/src/main/java/net/minecraft/server/EntityCreeper.java -+++ b/src/main/java/net/minecraft/server/EntityCreeper.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - --import java.util.Collection; --import java.util.Iterator; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.CreatureSpawnEvent; - import org.bukkit.event.entity.ExplosionPrimeEvent; -+ -+import java.util.Collection; -+import java.util.Iterator; - // CraftBukkit end - - public class EntityCreeper extends EntityMonster { -diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java -index 053ca43e5089b098be1aaf48519848ecb04428bc..f0adab12020fa8adb2483cad7f945c4b66763cba 100644 ---- a/src/main/java/net/minecraft/server/EntityDolphin.java -+++ b/src/main/java/net/minecraft/server/EntityDolphin.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.EnumSet; - import java.util.List; - import java.util.Random; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityDolphin extends EntityWaterAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java -index e6425bdf1a85e773f5555db1aebe7e159f7cd37c..d8a8c62daa9bceb98ec70f745c351e6d162d35d8 100644 ---- a/src/main/java/net/minecraft/server/EntityDrowned.java -+++ b/src/main/java/net/minecraft/server/EntityDrowned.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.EnumSet; - import java.util.Random; --import javax.annotation.Nullable; - - public class EntityDrowned extends EntityZombie implements IRangedEntity { - -diff --git a/src/main/java/net/minecraft/server/EntityEnderCrystal.java b/src/main/java/net/minecraft/server/EntityEnderCrystal.java -index 21dfe7f4251300873f2c305c1a02467b86d1bcfe..be5c79102e6dcb60061267c3d9a5a97386d09ccc 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderCrystal.java -+++ b/src/main/java/net/minecraft/server/EntityEnderCrystal.java -@@ -1,11 +1,10 @@ - package net.minecraft.server; - --import java.util.Optional; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.ExplosionPrimeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Optional; - // CraftBukkit end - - public class EntityEnderCrystal extends Entity { -diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index e7f897c1fb5f45c5b22ca315874a2cd8d8d2c838..c1d52acec510ea20273fc7dc83ae6453ea42990e 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderDragon.java -+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java -@@ -1,17 +1,16 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.event.block.TNTPrimeEvent; - import com.google.common.collect.Lists; --import java.util.Iterator; --import java.util.List; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.event.entity.EntityExplodeEvent; - import org.bukkit.event.entity.EntityRegainHealthEvent; --// CraftBukkit end --import com.destroystokyo.paper.event.block.TNTPrimeEvent; // Paper - TNTPrimeEvent -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; - - // PAIL: Fixme - public class EntityEnderDragon extends EntityInsentient implements IMonster { -diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java -index 12f18a971e50a63cc527ec56faf389beba4c23c5..290e1e198ec76c3fc08e273371e9d7ab3375df9f 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderPearl.java -+++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.CreatureSpawnEvent; - import org.bukkit.event.player.PlayerTeleportEvent; -+ -+import javax.annotation.Nullable; - // CraftBukkit end - - public class EntityEnderPearl extends EntityProjectileThrowable { -diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index b61de33513989a9097e2729f0bd733dda687644d..e3f0067ca9981257279d0288c878ccb7786dcb82 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderman.java -+++ b/src/main/java/net/minecraft/server/EntityEnderman.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.event.entity.EndermanEscapeEvent; -+ -+import javax.annotation.Nullable; - import java.util.EnumSet; - import java.util.Optional; --import com.destroystokyo.paper.event.entity.EndermanEscapeEvent; // Paper - import java.util.Random; - import java.util.UUID; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityEnderman extends EntityMonster implements IEntityAngerable { - -diff --git a/src/main/java/net/minecraft/server/EntityEvokerFangs.java b/src/main/java/net/minecraft/server/EntityEvokerFangs.java -index 31dbd21db0ba92cba3bc7816147f41d5eb53c57b..8f68721caa79fbc7ac517e24688be6bfc09b953b 100644 ---- a/src/main/java/net/minecraft/server/EntityEvokerFangs.java -+++ b/src/main/java/net/minecraft/server/EntityEvokerFangs.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.UUID; --import javax.annotation.Nullable; - - public class EntityEvokerFangs extends Entity { - -diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java -index f01a8743ab1220052d5dafac679b9381679f632c..1e69d270c9a13a9d34e6a9abd4f1c9715d96a447 100644 ---- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java -+++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - --import java.util.Map.Entry; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; --import org.bukkit.event.entity.EntityTargetLivingEntityEvent; - import org.bukkit.event.entity.EntityTargetEvent; -+import org.bukkit.event.entity.EntityTargetLivingEntityEvent; -+ -+import java.util.Map.Entry; - // CraftBukkit end - - public class EntityExperienceOrb extends Entity { -diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java -index 6697b94550054ebbc8d4b3761bd9f36eb7e4ba8a..9c6ee54e4efd7c6f49cb179c4fa57b10895eb96a 100644 ---- a/src/main/java/net/minecraft/server/EntityFallingBlock.java -+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ - import java.util.Iterator; - import java.util.List; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -- - public class EntityFallingBlock extends Entity { - - private IBlockData block; -diff --git a/src/main/java/net/minecraft/server/EntityFireball.java b/src/main/java/net/minecraft/server/EntityFireball.java -index 5c737d605219bcb0c509f10e62550981f7cdb03f..e54df71af1420e275e13960de621e79c073c2708 100644 ---- a/src/main/java/net/minecraft/server/EntityFireball.java -+++ b/src/main/java/net/minecraft/server/EntityFireball.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import org.bukkit.craftbukkit.event.CraftEventFactory; - - public abstract class EntityFireball extends IProjectile { - -diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java -index 451f0544513bdeeca24755f9dafe6604dd944a28..a6e55a9754cd1970a928732f85f6b88315ce6620 100644 ---- a/src/main/java/net/minecraft/server/EntityFireworks.java -+++ b/src/main/java/net/minecraft/server/EntityFireworks.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.OptionalInt; --import javax.annotation.Nullable; --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class EntityFireworks extends IProjectile { - -diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java -index 93aea1a9cd484271c61f7818f16488d2d3924898..a9602613fa80a4ba65ce749c6780b202392457ab 100644 ---- a/src/main/java/net/minecraft/server/EntityFishingHook.java -+++ b/src/main/java/net/minecraft/server/EntityFishingHook.java -@@ -1,15 +1,11 @@ - package net.minecraft.server; - --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Random; --import javax.annotation.Nullable; --// CraftBukkit start --import org.bukkit.entity.Player; - import org.bukkit.entity.FishHook; -+import org.bukkit.entity.Player; - import org.bukkit.event.player.PlayerFishEvent; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // CraftBukkit end - - public class EntityFishingHook extends IProjectile { -diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index 3b1d958d12025ec42c904e17b25c0c179fc2182b..1ee54cc1d2ef08d05e89e1289c7f232f460d1ac3 100644 ---- a/src/main/java/net/minecraft/server/EntityFox.java -+++ b/src/main/java/net/minecraft/server/EntityFox.java -@@ -2,10 +2,9 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - -+import javax.annotation.Nullable; - import java.util.*; - import java.util.function.Predicate; --import java.util.stream.Collectors; --import javax.annotation.Nullable; - - public class EntityFox extends EntityAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityHanging.java b/src/main/java/net/minecraft/server/EntityHanging.java -index 06cf11af972f7762de43dc1df18a431a62787111..ace78adfb5baf462d4b511d84f17beb11607ce62 100644 ---- a/src/main/java/net/minecraft/server/EntityHanging.java -+++ b/src/main/java/net/minecraft/server/EntityHanging.java -@@ -1,13 +1,12 @@ - package net.minecraft.server; - --import java.util.function.Predicate; --import javax.annotation.Nullable; - import org.apache.commons.lang3.Validate; -- --// CraftBukkit start - import org.bukkit.entity.Hanging; - import org.bukkit.event.hanging.HangingBreakByEntityEvent; - import org.bukkit.event.hanging.HangingBreakEvent; -+ -+import javax.annotation.Nullable; -+import java.util.function.Predicate; - // CraftBukkit end - - public abstract class EntityHanging extends Entity { -diff --git a/src/main/java/net/minecraft/server/EntityHoglin.java b/src/main/java/net/minecraft/server/EntityHoglin.java -index 97570b4521758a84c36e41f80653a17789ad4b60..9f47392e115e20e307e2e79fc3ec5bf03c2d90cd 100644 ---- a/src/main/java/net/minecraft/server/EntityHoglin.java -+++ b/src/main/java/net/minecraft/server/EntityHoglin.java -@@ -2,9 +2,10 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableList; - import com.mojang.serialization.Dynamic; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Random; --import javax.annotation.Nullable; - - public class EntityHoglin extends EntityAnimal implements IMonster, IOglin { - -diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -index 364697e0155012c300219ad94a3995809e6c2f8f..8de9b17292bc69e603d5e3ef1f5e82d594f08804 100644 ---- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java -+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.UnmodifiableIterator; -+import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Optional; - import java.util.UUID; - import java.util.function.Predicate; --import javax.annotation.Nullable; --import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; // CraftBukkit - - public abstract class EntityHorseAbstract extends EntityAnimal implements IInventoryListener, IJumpable, ISaddleable { - -diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 68c033e2b8542c5656d5b9534a4953a370999097..02b3fb9b12bb054117702283ed769b4b8238006c 100644 ---- a/src/main/java/net/minecraft/server/EntityHuman.java -+++ b/src/main/java/net/minecraft/server/EntityHuman.java -@@ -5,18 +5,6 @@ import com.google.common.collect.ImmutableMap; - import com.google.common.collect.Lists; - import com.mojang.authlib.GameProfile; - import com.mojang.datafixers.util.Either; --import java.nio.charset.StandardCharsets; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Optional; --import java.util.OptionalInt; --import java.util.UUID; --import java.util.function.Predicate; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.craftbukkit.util.CraftVector; - import org.bukkit.entity.Item; -@@ -26,7 +14,11 @@ import org.bukkit.event.entity.EntityCombustByEntityEvent; - import org.bukkit.event.player.PlayerBedLeaveEvent; - import org.bukkit.event.player.PlayerDropItemEvent; - import org.bukkit.event.player.PlayerVelocityEvent; --import org.bukkit.util.Vector; -+ -+import javax.annotation.Nullable; -+import java.nio.charset.StandardCharsets; -+import java.util.*; -+import java.util.function.Predicate; - // CraftBukkit end - - public abstract class EntityHuman extends EntityLiving { -diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index 7c9bb358c9967e6c7c02b96e17764f2418df7979..e65447a0867abbd60dd2ebf6b9961cb9a5216bb7 100644 ---- a/src/main/java/net/minecraft/server/EntityInsentient.java -+++ b/src/main/java/net/minecraft/server/EntityInsentient.java -@@ -1,25 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; --import java.util.Arrays; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Optional; --import java.util.Random; --import java.util.UUID; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.entity.CraftLivingEntity; --import org.bukkit.event.entity.CreatureSpawnEvent; --import org.bukkit.event.entity.EntityCombustByEntityEvent; --import org.bukkit.event.entity.EntityTargetLivingEntityEvent; --import org.bukkit.event.entity.EntityTargetEvent; --import org.bukkit.event.entity.EntityTransformEvent; --import org.bukkit.event.entity.EntityUnleashEvent; -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+import org.bukkit.event.entity.*; - import org.bukkit.event.entity.EntityUnleashEvent.UnleashReason; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // CraftBukkit end - - public abstract class EntityInsentient extends EntityLiving { -diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index e38a675be7e6a4cbb1f2f7606bf84ac570bb5985..a7373a63cb11822ca83728d6740f39180833856e 100644 ---- a/src/main/java/net/minecraft/server/EntityIronGolem.java -+++ b/src/main/java/net/minecraft/server/EntityIronGolem.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableList; -+ -+import javax.annotation.Nullable; - import java.util.Comparator; - import java.util.Iterator; - import java.util.List; - import java.util.UUID; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class EntityIronGolem extends EntityGolem implements IEntityAngerable { - -diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java -index 6869b688810cc72da01f164db1f0853d59752597..ebedb11ad7f281601abb26da6b035f1103e1fc98 100644 ---- a/src/main/java/net/minecraft/server/EntityItem.java -+++ b/src/main/java/net/minecraft/server/EntityItem.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - -+import org.bukkit.Material; -+import org.bukkit.event.entity.EntityPickupItemEvent; -+import org.bukkit.event.player.PlayerAttemptPickupItemEvent; -+import org.bukkit.event.player.PlayerPickupItemEvent; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Objects; - import java.util.UUID; --import javax.annotation.Nullable; --// CraftBukkit start --import org.bukkit.Material; // Paper --import org.bukkit.event.entity.EntityPickupItemEvent; --import org.bukkit.event.player.PlayerPickupItemEvent; --// CraftBukkit end --import org.bukkit.event.player.PlayerAttemptPickupItemEvent; // Paper - - public class EntityItem extends Entity { - -diff --git a/src/main/java/net/minecraft/server/EntityItemFrame.java b/src/main/java/net/minecraft/server/EntityItemFrame.java -index e20915578720f6d18955a4ddc6fb436af807acb3..e38f5d1ab2764e85aefc3398d29170c806250148 100644 ---- a/src/main/java/net/minecraft/server/EntityItemFrame.java -+++ b/src/main/java/net/minecraft/server/EntityItemFrame.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; - import org.apache.commons.lang3.Validate; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+ - public class EntityItemFrame extends EntityHanging { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/EntityLargeFireball.java b/src/main/java/net/minecraft/server/EntityLargeFireball.java -index b4b0dfbc70f91f74f9792b835ec2f8d5af41c311..0ff812f8da4db0ca9cf65792805d8e61ab99ba57 100644 ---- a/src/main/java/net/minecraft/server/EntityLargeFireball.java -+++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit -+import org.bukkit.event.entity.ExplosionPrimeEvent; - - public class EntityLargeFireball extends EntityFireballFireball { - -diff --git a/src/main/java/net/minecraft/server/EntityLeash.java b/src/main/java/net/minecraft/server/EntityLeash.java -index 34b41ab9cf65ac8a7a29f1d3d23c86f6707a436a..99052f026f2d24300ab0a1b7c6b8b134d6800995 100644 ---- a/src/main/java/net/minecraft/server/EntityLeash.java -+++ b/src/main/java/net/minecraft/server/EntityLeash.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; -- --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class EntityLeash extends EntityHanging { - -diff --git a/src/main/java/net/minecraft/server/EntityLightning.java b/src/main/java/net/minecraft/server/EntityLightning.java -index b1b8748fa95aab25562c2f5397cb6454737fa508..71cc6953091119dda28003a8199e981440483c72 100644 ---- a/src/main/java/net/minecraft/server/EntityLightning.java -+++ b/src/main/java/net/minecraft/server/EntityLightning.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; -- --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class EntityLightning extends Entity { - -diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 173d04df808d9ed1fdd4767c25c2ebe130303d7f..71a0ec28b1e6077a232f37c56847485f5482ed81 100644 ---- a/src/main/java/net/minecraft/server/EntityLiving.java -+++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - --import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; // Paper -+import com.destroystokyo.paper.event.player.PlayerArmorChangeEvent; -+import com.google.common.base.Function; - import com.google.common.base.Objects; - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap; -@@ -10,39 +11,20 @@ import com.mojang.datafixers.util.Pair; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.DynamicOps; --import java.util.Collection; --import java.util.ConcurrentModificationException; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Optional; --import java.util.Random; --import java.util.UUID; --import java.util.function.Predicate; --import javax.annotation.Nullable; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.util.ArrayList; --import java.util.HashSet; --import java.util.Set; --import com.google.common.base.Function; - import org.bukkit.Location; - import org.bukkit.craftbukkit.attribute.CraftAttributeMap; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.entity.LivingEntity; - import org.bukkit.entity.Player; --import org.bukkit.event.entity.EntityDamageEvent; -+import org.bukkit.event.entity.*; - import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; --import org.bukkit.event.entity.EntityPotionEffectEvent; --import org.bukkit.event.entity.EntityRegainHealthEvent; --import org.bukkit.event.entity.EntityResurrectEvent; --import org.bukkit.event.entity.EntityTeleportEvent; - import org.bukkit.event.player.PlayerItemConsumeEvent; --// CraftBukkit end - --import co.aikar.timings.MinecraftTimings; // Paper -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.function.Predicate; - - public abstract class EntityLiving extends Entity { - -diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index 4fe769c761949c40bbb923cde5dfe1709843921f..039a74ee15bc1bf562f782b46f797dddccf9e04e 100644 ---- a/src/main/java/net/minecraft/server/EntityLlama.java -+++ b/src/main/java/net/minecraft/server/EntityLlama.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Iterator; - import javax.annotation.Nullable; -+import java.util.Iterator; - - public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEntity { - -diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java -index 11008c4323d16fc989c0e68978741113b3b57268..45661626586674b35d81bc92b268549aa9b50f1f 100644 ---- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java -+++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.EnumSet; - import javax.annotation.Nullable; -+import java.util.EnumSet; - - public class EntityLlamaTrader extends EntityLlama { - -diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -index 6e038905ea6e5245190e5970481195ba668f3247..0f57985d9b4fc8d31e87b50284200aead6b4dd7e 100644 ---- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -+++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -@@ -5,18 +5,17 @@ import com.google.common.collect.ImmutableMap; - import com.google.common.collect.Maps; - import com.google.common.collect.UnmodifiableIterator; - import com.mojang.datafixers.util.Pair; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.entity.Vehicle; - import org.bukkit.event.vehicle.VehicleDamageEvent; - import org.bukkit.event.vehicle.VehicleDestroyEvent; - import org.bukkit.event.vehicle.VehicleEntityCollisionEvent; - import org.bukkit.util.Vector; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; - // CraftBukkit end - - public abstract class EntityMinecartAbstract extends Entity { -diff --git a/src/main/java/net/minecraft/server/EntityMinecartContainer.java b/src/main/java/net/minecraft/server/EntityMinecartContainer.java -index ca4b142f9a62a14c6fa9b2f865fa0c9f7b2ecbed..ff7763a62a57a1f73d385ca161efd5a26c6d8711 100644 ---- a/src/main/java/net/minecraft/server/EntityMinecartContainer.java -+++ b/src/main/java/net/minecraft/server/EntityMinecartContainer.java -@@ -1,13 +1,13 @@ - package net.minecraft.server; - --import java.util.Iterator; --import javax.annotation.Nullable; --// CraftBukkit start --import java.util.List; - import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; - import org.bukkit.inventory.InventoryHolder; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; - // CraftBukkit end - - public abstract class EntityMinecartContainer extends EntityMinecartAbstract implements IInventory, ITileInventory { -diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java -index 23ef033067e388b7b7b2a981df8655e240a30594..6b66c54d6f45fb9034e13576e383bf3a0009e99a 100644 ---- a/src/main/java/net/minecraft/server/EntityMushroomCow.java -+++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - --import java.util.Optional; --import java.util.Random; --import java.util.UUID; - import org.apache.commons.lang3.tuple.Pair; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityTransformEvent; -+ -+import java.util.Optional; -+import java.util.Random; -+import java.util.UUID; - // CraftBukkit end - - public class EntityMushroomCow extends EntityCow implements IShearable { -diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java -index 9c1f019f911a1b91bbfa431e1558dec790624050..ea4da16de36a1680bcc8eae06c59899d607976a1 100644 ---- a/src/main/java/net/minecraft/server/EntityOcelot.java -+++ b/src/main/java/net/minecraft/server/EntityOcelot.java -@@ -1,8 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; --import java.util.function.Predicate; - import javax.annotation.Nullable; -+import java.util.Random; - - public class EntityOcelot extends EntityAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityPainting.java b/src/main/java/net/minecraft/server/EntityPainting.java -index ce9d414f2ad92d1392057827fff6dad631b5fd10..53dd219b0ee41090ac7ab417301d7098783e5fee 100644 ---- a/src/main/java/net/minecraft/server/EntityPainting.java -+++ b/src/main/java/net/minecraft/server/EntityPainting.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; - - public class EntityPainting extends EntityHanging { - -diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java -index 5697761087f6661e4d63fcbfeadfe9a8c56a17b5..12f7020ec7abbefaa876dc8b0a424603c0605687 100644 ---- a/src/main/java/net/minecraft/server/EntityPanda.java -+++ b/src/main/java/net/minecraft/server/EntityPanda.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.event.entity.EntityTargetEvent; -+ -+import javax.annotation.Nullable; - import java.util.*; - import java.util.function.Predicate; --import javax.annotation.Nullable; -- --import org.bukkit.event.entity.EntityTargetEvent; // CraftBukkit - - public class EntityPanda extends EntityAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java -index 2172fcefbc0d1c41cf2715a63015659a706e57ec..6d313783838103c848b3375ac29ccd8b33a27430 100644 ---- a/src/main/java/net/minecraft/server/EntityParrot.java -+++ b/src/main/java/net/minecraft/server/EntityParrot.java -@@ -3,12 +3,13 @@ package net.minecraft.server; - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Map; - import java.util.Random; - import java.util.Set; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityParrot extends EntityPerchable implements EntityBird { - -diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 3cb78924daa48c3a0a3e5c9c64ef6e726d79a798..1d6fd36a0ea06db7dd74f6d14ac2effe93b9ac74 100644 ---- a/src/main/java/net/minecraft/server/EntityPhantom.java -+++ b/src/main/java/net/minecraft/server/EntityPhantom.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Comparator; - import java.util.EnumSet; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; - - public class EntityPhantom extends EntityFlying implements IMonster { - -diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index cd0a94794e8969937f7f8408e0fb46c1684abc00..13b95af73c1f7f09b8d41cb4350792e9300fda1a 100644 ---- a/src/main/java/net/minecraft/server/EntityPig.java -+++ b/src/main/java/net/minecraft/server/EntityPig.java -@@ -1,10 +1,9 @@ - package net.minecraft.server; - - import com.google.common.collect.UnmodifiableIterator; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - // CraftBukkit end - - public class EntityPig extends EntityAnimal implements ISteerable, ISaddleable { -diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index e97997c28667ee4d3110df2b47a851aa37f0d4bc..c5dcaabdcf701c0dac3660562512d0c5c869b726 100644 ---- a/src/main/java/net/minecraft/server/EntityPigZombie.java -+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java -@@ -2,9 +2,9 @@ package net.minecraft.server; - - import org.bukkit.event.entity.EntityTargetEvent; - -+import javax.annotation.Nullable; - import java.util.Random; - import java.util.UUID; --import javax.annotation.Nullable; - - public class EntityPigZombie extends EntityZombie implements IEntityAngerable { - -diff --git a/src/main/java/net/minecraft/server/EntityPiglin.java b/src/main/java/net/minecraft/server/EntityPiglin.java -index a8e3e3e4b0b4f9af2f5ac551072a0e2caa644d07..f6e58838b5008fe091cff4eb3bf08f5026dd7880 100644 ---- a/src/main/java/net/minecraft/server/EntityPiglin.java -+++ b/src/main/java/net/minecraft/server/EntityPiglin.java -@@ -2,11 +2,12 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableList; - import com.mojang.serialization.Dynamic; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.List; - import java.util.Random; - import java.util.UUID; --import javax.annotation.Nullable; - - public class EntityPiglin extends EntityMonster implements ICrossbow { - -diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java -index f73c30ae49e6a80004ead1a134b4457a3c2a48fc..f0cc1d75d91064c5bf8c0655067bd34ccf6d4dba 100644 ---- a/src/main/java/net/minecraft/server/EntityPillager.java -+++ b/src/main/java/net/minecraft/server/EntityPillager.java -@@ -1,8 +1,9 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; --import java.util.Map; -+ - import javax.annotation.Nullable; -+import java.util.Map; - - public class EntityPillager extends EntityIllagerAbstract implements ICrossbow { - -diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index f6ce27a5d1a44b2c6ec42842d51cb769138862f5..bfcc647d9269f04ccf628e746cb521d7d3cd5a7d 100644 ---- a/src/main/java/net/minecraft/server/EntityPlayer.java -+++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1,26 +1,13 @@ - package net.minecraft.server; - - import com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent; -+import com.destroystokyo.paper.event.player.PlayerClientOptionsChangeEvent; - import com.google.common.collect.Lists; --import com.destroystokyo.paper.event.player.PlayerClientOptionsChangeEvent; // Paper - import com.mojang.authlib.GameProfile; - import com.mojang.datafixers.util.Either; - import com.mojang.serialization.DataResult; --import java.util.ArrayDeque; // Paper --import java.util.Collection; --import java.util.Deque; // Paper --import java.util.Iterator; --import java.util.List; --import java.util.OptionalInt; --import java.util.Random; --import java.util.UUID; --import java.util.concurrent.CompletableFuture; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import com.google.common.base.Preconditions; - import org.bukkit.Bukkit; - import org.bukkit.GameMode; - import org.bukkit.Location; -@@ -30,14 +17,13 @@ import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.inventory.InventoryType; --import org.bukkit.event.player.PlayerChangedMainHandEvent; --import org.bukkit.event.player.PlayerChangedWorldEvent; --import org.bukkit.event.player.PlayerGameModeChangeEvent; --import org.bukkit.event.player.PlayerLocaleChangeEvent; --import org.bukkit.event.player.PlayerPortalEvent; --import org.bukkit.event.player.PlayerTeleportEvent; -+import org.bukkit.event.player.*; - import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; - import org.bukkit.inventory.MainHand; -+ -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.concurrent.CompletableFuture; - // CraftBukkit end - - public class EntityPlayer extends EntityHuman implements ICrafting { -diff --git a/src/main/java/net/minecraft/server/EntityPotion.java b/src/main/java/net/minecraft/server/EntityPotion.java -index c7416602c19c6a0675c414b5af4452ed5df3827b..cc5a362346427070980b4cbf8ab18313d82aa669 100644 ---- a/src/main/java/net/minecraft/server/EntityPotion.java -+++ b/src/main/java/net/minecraft/server/EntityPotion.java -@@ -1,15 +1,15 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --import java.util.function.Predicate; --import javax.annotation.Nullable; --// CraftBukkit start --import java.util.HashMap; --import java.util.Map; - import org.bukkit.craftbukkit.entity.CraftLivingEntity; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.entity.LivingEntity; -+ -+import javax.annotation.Nullable; -+import java.util.HashMap; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; -+import java.util.function.Predicate; - // CraftBukkit end - - public class EntityPotion extends EntityProjectileThrowable { -diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java -index baf4405380c70581a3ed457cb8d12153160f8d1d..911182863c171c8e2faeb9375d1515d4be353b42 100644 ---- a/src/main/java/net/minecraft/server/EntityRabbit.java -+++ b/src/main/java/net/minecraft/server/EntityRabbit.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class EntityRabbit extends EntityAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityRaider.java b/src/main/java/net/minecraft/server/EntityRaider.java -index 751873c20ef74daa1e1f7278e8364a22be18504c..42f8d85c460a74f7f7c3277c44ed4648cd56a013 100644 ---- a/src/main/java/net/minecraft/server/EntityRaider.java -+++ b/src/main/java/net/minecraft/server/EntityRaider.java -@@ -1,13 +1,10 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.util.EnumSet; --import java.util.Iterator; --import java.util.List; --import java.util.Objects; --import java.util.Optional; --import java.util.function.Predicate; -+ - import javax.annotation.Nullable; -+import java.util.*; -+import java.util.function.Predicate; - - public abstract class EntityRaider extends EntityMonsterPatrolling { - -diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java -index 9734845c16ab9ebbd3c5db089f782c2775ea428e..6bdf90f43a1b683bbbb188cbb4a03f522b138c8e 100644 ---- a/src/main/java/net/minecraft/server/EntityRavager.java -+++ b/src/main/java/net/minecraft/server/EntityRavager.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityRavager extends EntityRaider { - -diff --git a/src/main/java/net/minecraft/server/EntitySelector.java b/src/main/java/net/minecraft/server/EntitySelector.java -index c5d1dfa0660ba94412664974adae56ecffda0b45..0d0dd4f580ec6a5f3c49e619ed6a53f5dc94b735 100644 ---- a/src/main/java/net/minecraft/server/EntitySelector.java -+++ b/src/main/java/net/minecraft/server/EntitySelector.java -@@ -2,6 +2,8 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.mojang.brigadier.exceptions.CommandSyntaxException; -+ -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.Iterator; - import java.util.List; -@@ -9,7 +11,6 @@ import java.util.UUID; - import java.util.function.BiConsumer; - import java.util.function.Function; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntitySelector { - -diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java -index bb8183ce9fd62178c4941ed0ff885eb717e3c8e9..a41d55ba3f3ae8a3f62f152ac178e114e72cb6a4 100644 ---- a/src/main/java/net/minecraft/server/EntitySheep.java -+++ b/src/main/java/net/minecraft/server/EntitySheep.java -@@ -1,15 +1,15 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; -- --import java.util.*; --import java.util.stream.Collectors; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.SheepRegrowWoolEvent; - import org.bukkit.inventory.InventoryView; -+ -+import javax.annotation.Nullable; -+import java.util.HashMap; -+import java.util.Map; -+import java.util.Optional; -+import java.util.Random; - // CraftBukkit end - - public class EntitySheep extends EntityAnimal implements IShearable { -diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java -index afc4cf4960ed2aaf17121209fec89ab9eb365083..75541b1c1515f4d008038d41c886b02c3c89bd49 100644 ---- a/src/main/java/net/minecraft/server/EntityShulker.java -+++ b/src/main/java/net/minecraft/server/EntityShulker.java -@@ -1,14 +1,10 @@ - package net.minecraft.server; - --import java.util.EnumSet; --import java.util.Iterator; --import java.util.List; --import java.util.Optional; --import java.util.UUID; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.event.entity.EntityTeleportEvent; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // CraftBukkit end - - public class EntityShulker extends EntityGolem implements IMonster { -diff --git a/src/main/java/net/minecraft/server/EntityShulkerBullet.java b/src/main/java/net/minecraft/server/EntityShulkerBullet.java -index ff5a3fdd5ce601967b10c1056302e3a4555a9a40..64a127f3d51ba34996e40eec72c0911f64394e98 100644 ---- a/src/main/java/net/minecraft/server/EntityShulkerBullet.java -+++ b/src/main/java/net/minecraft/server/EntityShulkerBullet.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.UUID; --import javax.annotation.Nullable; - - public class EntityShulkerBullet extends IProjectile { - -diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -index 84f83d48a8c41a26289ce0995aa9f5fd332c0ccb..531ff5246e1f2a0862617752bdf0707d33970227 100644 ---- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -+++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.time.LocalDate; - import java.time.temporal.ChronoField; --import javax.annotation.Nullable; - - public abstract class EntitySkeletonAbstract extends EntityMonster implements IRangedEntity { - -diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java -index a4642cc7390b08580d00689a853d59e3e1ef6496..58d811d75fa12d4f37fb0309787b9c136c79ad09 100644 ---- a/src/main/java/net/minecraft/server/EntitySlime.java -+++ b/src/main/java/net/minecraft/server/EntitySlime.java -@@ -1,22 +1,20 @@ - package net.minecraft.server; - --import java.util.EnumSet; --import java.util.Random; --import javax.annotation.Nullable; --// Paper start - import com.destroystokyo.paper.event.entity.SlimeChangeDirectionEvent; - import com.destroystokyo.paper.event.entity.SlimeSwimEvent; - import com.destroystokyo.paper.event.entity.SlimeTargetLivingEntityEvent; - import com.destroystokyo.paper.event.entity.SlimeWanderEvent; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.entity.LivingEntity; - import org.bukkit.entity.Slime; --// Paper end --// CraftBukkit start --import java.util.ArrayList; --import java.util.List; --import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityTransformEvent; - import org.bukkit.event.entity.SlimeSplitEvent; -+ -+import javax.annotation.Nullable; -+import java.util.ArrayList; -+import java.util.EnumSet; -+import java.util.List; -+import java.util.Random; - // CraftBukkit end - - public class EntitySlime extends EntityInsentient implements IMonster { -diff --git a/src/main/java/net/minecraft/server/EntitySmallFireball.java b/src/main/java/net/minecraft/server/EntitySmallFireball.java -index 92efb29534243ffb4c5bdd944d54037710358e20..8c006ba920e4ae89c9534b16f3b11042036ce936 100644 ---- a/src/main/java/net/minecraft/server/EntitySmallFireball.java -+++ b/src/main/java/net/minecraft/server/EntitySmallFireball.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.entity.EntityCombustByEntityEvent; // CraftBukkit -+import org.bukkit.event.entity.EntityCombustByEntityEvent; - - public class EntitySmallFireball extends EntityFireballFireball { - -diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index 15b886d9b399f534779ec72057b66134047ec85f..f391889deddc248b06b7e4e20b9208f98aab91bc 100644 ---- a/src/main/java/net/minecraft/server/EntitySnowman.java -+++ b/src/main/java/net/minecraft/server/EntitySnowman.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - // CraftBukkit end - - public class EntitySnowman extends EntityGolem implements IShearable, IRangedEntity { -diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java -index f6a677200210ea5035ab6d2c1022cc737c8fd1c4..53405c4479ad8787a4222008011aaf4d8dccdca7 100644 ---- a/src/main/java/net/minecraft/server/EntitySpider.java -+++ b/src/main/java/net/minecraft/server/EntitySpider.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public class EntitySpider extends EntityMonster { - -diff --git a/src/main/java/net/minecraft/server/EntityStrider.java b/src/main/java/net/minecraft/server/EntityStrider.java -index c123e9fe97f1c0da0c6807e17df497a31749c1b3..f6bf51c17ae158e2d65ea65e885ecebe11037ba8 100644 ---- a/src/main/java/net/minecraft/server/EntityStrider.java -+++ b/src/main/java/net/minecraft/server/EntityStrider.java -@@ -2,10 +2,11 @@ package net.minecraft.server; - - import com.google.common.collect.Sets; - import com.google.common.collect.UnmodifiableIterator; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Random; - import java.util.Set; --import javax.annotation.Nullable; - - public class EntityStrider extends EntityAnimal implements ISteerable, ISaddleable { - -diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java -index 57ac6469ecdf3d89a538f01ecde5f3bd5a28c18f..d85139e4acd58eb0c521f9942cbe13541b2db490 100644 ---- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java -+++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java -@@ -1,7 +1,8 @@ - package net.minecraft.server; - -+import org.bukkit.event.entity.ExplosionPrimeEvent; -+ - import javax.annotation.Nullable; --import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit - - public class EntityTNTPrimed extends Entity { - -diff --git a/src/main/java/net/minecraft/server/EntityTippedArrow.java b/src/main/java/net/minecraft/server/EntityTippedArrow.java -index 85d5b68cfe9aee258a2331788b133a92911a9c11..2828cf35df63cf4d8478aab74ef7e7a1e7d57d9d 100644 ---- a/src/main/java/net/minecraft/server/EntityTippedArrow.java -+++ b/src/main/java/net/minecraft/server/EntityTippedArrow.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Sets; -+ - import java.util.Collection; - import java.util.Iterator; - import java.util.Set; -diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index f148bc2bb8fdb7e76c8c42a29017a0c62a222990..ea0890a8c8f2c575fca384f909ce15dfe4ddf9f7 100644 ---- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java -+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -@@ -2,19 +2,13 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.mojang.datafixers.util.Pair; --import java.util.Collection; --import java.util.Collections; --import java.util.HashSet; --import java.util.Iterator; --import java.util.List; --import java.util.Set; --import java.util.function.Consumer; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start - import org.bukkit.entity.Player; - import org.bukkit.event.player.PlayerVelocityEvent; -+ -+import java.util.*; -+import java.util.function.Consumer; - // CraftBukkit end - - public class EntityTrackerEntry { -diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java -index 06333b69539a86b14b6b1efa5fee19b5bdfacfdf..1959155080fe2a2fb19227c884d598719528b140 100644 ---- a/src/main/java/net/minecraft/server/EntityTurtle.java -+++ b/src/main/java/net/minecraft/server/EntityTurtle.java -@@ -1,11 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.Sets; -+ -+import javax.annotation.Nullable; - import java.util.EnumSet; - import java.util.Random; - import java.util.Set; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityTurtle extends EntityAnimal { - -diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java -index 18a806ebbf092b904983691529ce5edf2da4e6db..85c784ceea900d65de136da8c7ac718f26127456 100644 ---- a/src/main/java/net/minecraft/server/EntityTypes.java -+++ b/src/main/java/net/minecraft/server/EntityTypes.java -@@ -1,15 +1,15 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableSet; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Optional; --import java.util.Set; // Paper --import java.util.Map; // Paper -+import java.util.Set; - import java.util.UUID; - import java.util.function.Function; - import java.util.stream.Stream; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class EntityTypes { - -diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java -index 99a98e37ebd292f8fb1c3613348bd6dd51e9191b..3af1ad56464ee6d0c43f8a2fcba993e398036829 100644 ---- a/src/main/java/net/minecraft/server/EntityVex.java -+++ b/src/main/java/net/minecraft/server/EntityVex.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - --import java.util.EnumSet; --import javax.annotation.Nullable; - import org.bukkit.event.entity.EntityTargetEvent; - -+import javax.annotation.Nullable; -+import java.util.EnumSet; -+ - public class EntityVex extends EntityMonster { - - protected static final DataWatcherObject b = DataWatcher.a(EntityVex.class, DataWatcherRegistry.a); -diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 1ecb19c1c81456148af4a9edd59059356c3c0b94..85d88dceb25f4a0aac2cd86fed2fbc5bc0658ffc 100644 ---- a/src/main/java/net/minecraft/server/EntityVillager.java -+++ b/src/main/java/net/minecraft/server/EntityVillager.java -@@ -7,24 +7,18 @@ import com.mojang.datafixers.util.Pair; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.DynamicOps; -- - import dev.tr7zw.yatopia.YatopiaConfig; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -- --import java.util.*; --import java.util.function.BiPredicate; --import java.util.stream.Collectors; --import javax.annotation.Nullable; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.Bukkit; --import org.bukkit.craftbukkit.entity.CraftVillager; - import org.bukkit.craftbukkit.event.CraftEventFactory; --import org.bukkit.craftbukkit.inventory.CraftMerchantRecipe; - import org.bukkit.entity.Villager; - import org.bukkit.event.entity.EntityTransformEvent; --import org.bukkit.event.entity.VillagerAcquireTradeEvent; - import org.bukkit.event.entity.VillagerReplenishTradeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.function.BiPredicate; - // CraftBukkit end - - public class EntityVillager extends EntityVillagerAbstract implements ReputationHandler, VillagerDataHolder { -diff --git a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java -index 81823b5d5ef17479583fda0121c95091175fdf1e..c15feba3c54c5b8610f16cceada91cf9077a8701 100644 ---- a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java -+++ b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java -@@ -1,15 +1,15 @@ - package net.minecraft.server; - - import com.google.common.collect.Sets; --import java.util.Iterator; --import java.util.Set; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.inventory.CraftMerchant; - import org.bukkit.craftbukkit.inventory.CraftMerchantRecipe; - import org.bukkit.entity.AbstractVillager; - import org.bukkit.event.entity.VillagerAcquireTradeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.Set; - // CraftBukkit end - - public abstract class EntityVillagerAbstract extends EntityAgeable implements NPC, IMerchant { -diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java -index a0841cfaf950508b73b43a5fadbc1796015e5dbb..3116488509862fc82b0b9172957af812d96bcf80 100644 ---- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java -+++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - --import java.util.EnumSet; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.inventory.CraftMerchantRecipe; - import org.bukkit.entity.AbstractVillager; - import org.bukkit.event.entity.VillagerAcquireTradeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.EnumSet; - // CraftBukkit end - - public class EntityVillagerTrader extends EntityVillagerAbstract { -diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java -index 58315906b641ba46ce73b6fefc43ea333bb0a088..66851778820759547f17288dc82ec58114592257 100644 ---- a/src/main/java/net/minecraft/server/EntityVindicator.java -+++ b/src/main/java/net/minecraft/server/EntityVindicator.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; -+ -+import javax.annotation.Nullable; - import java.util.EnumSet; - import java.util.Map; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class EntityVindicator extends EntityIllagerAbstract { - -diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java -index e8d8935b8ef2db0d4405ee1ff8e2f0f2e17a91b3..32ff8f7dbe910ae9457e73fa75aaa749103cb6cb 100644 ---- a/src/main/java/net/minecraft/server/EntityWitch.java -+++ b/src/main/java/net/minecraft/server/EntityWitch.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - - // Paper start -+ - import com.destroystokyo.paper.event.entity.WitchReadyPotionEvent; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.entity.Witch; --// Paper end - - import java.util.Iterator; - import java.util.List; -diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java -index 1074995e8c8a83f6cdb94019123fbffa309d5e08..8c7bfe19f95cc757397bc496087df8dcd88351c4 100644 ---- a/src/main/java/net/minecraft/server/EntityWither.java -+++ b/src/main/java/net/minecraft/server/EntityWither.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableList; --import java.util.EnumSet; --import java.util.List; --import java.util.function.Predicate; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityRegainHealthEvent; - import org.bukkit.event.entity.EntityTargetEvent; - import org.bukkit.event.entity.ExplosionPrimeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.EnumSet; -+import java.util.List; -+import java.util.function.Predicate; - // CraftBukkit end - - public class EntityWither extends EntityMonster implements IRangedEntity { -diff --git a/src/main/java/net/minecraft/server/EntityWitherSkull.java b/src/main/java/net/minecraft/server/EntityWitherSkull.java -index 72d59adce78943ce47e91301fe17e96ec3579fa6..3839e63b7981f7d6225e9ade7f0be21427ffa8e9 100644 ---- a/src/main/java/net/minecraft/server/EntityWitherSkull.java -+++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.entity.ExplosionPrimeEvent; // CraftBukkit -+import org.bukkit.event.entity.ExplosionPrimeEvent; - - public class EntityWitherSkull extends EntityFireball { - -diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index 5b519fa394707f6f21b241689daa6d2abf360df7..5f8a74a433fe69eb5eb528663e290279cf3239f4 100644 ---- a/src/main/java/net/minecraft/server/EntityWolf.java -+++ b/src/main/java/net/minecraft/server/EntityWolf.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - --import java.util.UUID; --import java.util.function.Predicate; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityTargetEvent.TargetReason; -+ -+import javax.annotation.Nullable; -+import java.util.UUID; -+import java.util.function.Predicate; - // CraftBukkit end - - public class EntityWolf extends EntityTameableAnimal implements IEntityAngerable { -diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 8784da7ca664b93c4ce1d3e63bb841229f4616df..e18a2b7b25bd6b30e73ce675849520c1250833dd 100644 ---- a/src/main/java/net/minecraft/server/EntityZombie.java -+++ b/src/main/java/net/minecraft/server/EntityZombie.java -@@ -1,21 +1,20 @@ - package net.minecraft.server; - - import com.mojang.serialization.DynamicOps; --import java.time.LocalDate; --import java.time.temporal.ChronoField; --import java.util.List; --import java.util.Random; --import java.util.UUID; --import java.util.function.Predicate; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.entity.Zombie; - import org.bukkit.event.entity.CreatureSpawnEvent; - import org.bukkit.event.entity.EntityCombustByEntityEvent; - import org.bukkit.event.entity.EntityTargetEvent; - import org.bukkit.event.entity.EntityTransformEvent; -+ -+import javax.annotation.Nullable; -+import java.time.LocalDate; -+import java.time.temporal.ChronoField; -+import java.util.List; -+import java.util.Random; -+import java.util.UUID; -+import java.util.function.Predicate; - // CraftBukkit end - - public class EntityZombie extends EntityMonster { -diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java -index 9b920332bd397f9711f0c99702245d54b9d3841b..c3acf82e8396a554c4e56df33731c8f891117879 100644 ---- a/src/main/java/net/minecraft/server/EntityZombieVillager.java -+++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java -@@ -2,13 +2,13 @@ package net.minecraft.server; - - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; --import java.util.UUID; --import javax.annotation.Nullable; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.entity.ZombieVillager; - import org.bukkit.event.entity.EntityTransformEvent; -+ -+import javax.annotation.Nullable; -+import java.util.UUID; - // CraftBukkit end - - public class EntityZombieVillager extends EntityZombie implements VillagerDataHolder { -diff --git a/src/main/java/net/minecraft/server/EnumDirection.java b/src/main/java/net/minecraft/server/EnumDirection.java -index 1aa9d9fd074c186b209696ee46e0dda181372f4b..a02f87750d8a0dc617bebd8c7f4db33f1d050b3d 100644 ---- a/src/main/java/net/minecraft/server/EnumDirection.java -+++ b/src/main/java/net/minecraft/server/EnumDirection.java -@@ -4,16 +4,12 @@ import com.google.common.collect.Iterators; - import com.mojang.serialization.Codec; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; --import java.util.Arrays; --import java.util.Comparator; --import java.util.Iterator; --import java.util.Locale; --import java.util.Map; --import java.util.Random; -+ -+import javax.annotation.Nullable; -+import java.util.*; - import java.util.function.Predicate; - import java.util.stream.Collectors; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public enum EnumDirection implements INamable { - -diff --git a/src/main/java/net/minecraft/server/EnumProtocol.java b/src/main/java/net/minecraft/server/EnumProtocol.java -index ec3c8ec6a7c0a835d0bab9872d0ead68b2ff54df..4e856e3bccf667bdfb426331e3c3b3b68119a9ad 100644 ---- a/src/main/java/net/minecraft/server/EnumProtocol.java -+++ b/src/main/java/net/minecraft/server/EnumProtocol.java -@@ -5,11 +5,12 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import it.unimi.dsi.fastutil.objects.Object2IntMap; - import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -+import org.apache.logging.log4j.LogManager; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Map; - import java.util.function.Supplier; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; - - public enum EnumProtocol { - -diff --git a/src/main/java/net/minecraft/server/ExpirableListEntry.java b/src/main/java/net/minecraft/server/ExpirableListEntry.java -index 8aa38f805dec83f8ba07d0b78d64c9c9d066ace1..749f85cadadb662bea70fc89d2b41988d7b6ebde 100644 ---- a/src/main/java/net/minecraft/server/ExpirableListEntry.java -+++ b/src/main/java/net/minecraft/server/ExpirableListEntry.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import com.google.gson.JsonObject; -+ -+import javax.annotation.Nullable; - import java.text.ParseException; - import java.text.SimpleDateFormat; - import java.util.Date; --import javax.annotation.Nullable; - - public abstract class ExpirableListEntry extends JsonListEntry { - -diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java -index 35f5be9ef91f8d91ca66c52640719b2fdf52bbfd..15224fc323b66c4f33f487a994590df043db4f52 100644 ---- a/src/main/java/net/minecraft/server/Explosion.java -+++ b/src/main/java/net/minecraft/server/Explosion.java -@@ -6,20 +6,13 @@ import com.google.common.collect.Sets; - import com.mojang.datafixers.util.Pair; - import it.unimi.dsi.fastutil.objects.ObjectArrayList; - import it.unimi.dsi.fastutil.objects.ObjectListIterator; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Optional; --import java.util.Random; --import java.util.Set; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.craftbukkit.event.CraftEventFactory; --import org.bukkit.event.entity.EntityExplodeEvent; - import org.bukkit.Location; -+import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.block.BlockExplodeEvent; -+import org.bukkit.event.entity.EntityExplodeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // CraftBukkit end - - public class Explosion { -diff --git a/src/main/java/net/minecraft/server/Fluid.java b/src/main/java/net/minecraft/server/Fluid.java -index 8ffc5db509867c585e90ea12d8509dcd0b1435e0..2189477e59e4695278c891ce14ec3f6797249caa 100644 ---- a/src/main/java/net/minecraft/server/Fluid.java -+++ b/src/main/java/net/minecraft/server/Fluid.java -@@ -3,6 +3,7 @@ package net.minecraft.server; - import com.google.common.collect.ImmutableMap; - import com.mojang.serialization.Codec; - import com.mojang.serialization.MapCodec; -+ - import java.util.Random; - - public final class Fluid extends IBlockDataHolder { -diff --git a/src/main/java/net/minecraft/server/FluidTypeFlowing.java b/src/main/java/net/minecraft/server/FluidTypeFlowing.java -index d72a88e9275eb00eed35b6467538a46e5cee32d5..7e97b5dffc1228b30f4e75789398b7b616d68447 100644 ---- a/src/main/java/net/minecraft/server/FluidTypeFlowing.java -+++ b/src/main/java/net/minecraft/server/FluidTypeFlowing.java -@@ -7,16 +7,16 @@ import it.unimi.dsi.fastutil.shorts.Short2BooleanMap; - import it.unimi.dsi.fastutil.shorts.Short2BooleanOpenHashMap; - import it.unimi.dsi.fastutil.shorts.Short2ObjectMap; - import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap; --import java.util.Iterator; --import java.util.Map; --import java.util.Map.Entry; --// CraftBukkit start - import org.bukkit.block.BlockFace; - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.block.data.CraftBlockData; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.block.BlockFromToEvent; - import org.bukkit.event.block.FluidLevelChangeEvent; -+ -+import java.util.Iterator; -+import java.util.Map; -+import java.util.Map.Entry; - // CraftBukkit end - - public abstract class FluidTypeFlowing extends FluidType { -diff --git a/src/main/java/net/minecraft/server/FurnaceRecipe.java b/src/main/java/net/minecraft/server/FurnaceRecipe.java -index 0b15f25303c05b5d1dd04434ebd52c7af1ade2d2..c0f7def983d53e661b229a0a7eb44251665f2793 100644 ---- a/src/main/java/net/minecraft/server/FurnaceRecipe.java -+++ b/src/main/java/net/minecraft/server/FurnaceRecipe.java -@@ -1,12 +1,10 @@ - package net.minecraft.server; - - // CraftBukkit start --import java.util.ArrayList; --import java.util.List; -+ - import org.bukkit.craftbukkit.inventory.CraftFurnaceRecipe; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.inventory.CraftRecipe; --import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; - import org.bukkit.inventory.Recipe; - // CraftBukkit end -diff --git a/src/main/java/net/minecraft/server/GameProfileBanEntry.java b/src/main/java/net/minecraft/server/GameProfileBanEntry.java -index 120c71766d3f0c2fcfbf5210b4b6c8c013a8a7b0..c07122cf7df7d3f86c00574bec508dadb2f49151 100644 ---- a/src/main/java/net/minecraft/server/GameProfileBanEntry.java -+++ b/src/main/java/net/minecraft/server/GameProfileBanEntry.java -@@ -2,10 +2,11 @@ package net.minecraft.server; - - import com.google.gson.JsonObject; - import com.mojang.authlib.GameProfile; -+ -+import javax.annotation.Nullable; - import java.util.Date; - import java.util.Objects; - import java.util.UUID; --import javax.annotation.Nullable; - - public class GameProfileBanEntry extends ExpirableListEntry { - -diff --git a/src/main/java/net/minecraft/server/GameProfileSerializer.java b/src/main/java/net/minecraft/server/GameProfileSerializer.java -index 1fe44d4a1a1895f5715c720f9d7d7acb10e50f61..66a10de0bd9d2901c4e5cc5398f19c20b70e6c56 100644 ---- a/src/main/java/net/minecraft/server/GameProfileSerializer.java -+++ b/src/main/java/net/minecraft/server/GameProfileSerializer.java -@@ -7,13 +7,14 @@ import com.mojang.authlib.GameProfile; - import com.mojang.authlib.properties.Property; - import com.mojang.datafixers.DataFixer; - import com.mojang.serialization.Dynamic; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Map.Entry; - import java.util.Optional; - import java.util.UUID; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public final class GameProfileSerializer { - -diff --git a/src/main/java/net/minecraft/server/GameRules.java b/src/main/java/net/minecraft/server/GameRules.java -index dec56f5fe2d01564905c19a907eceea11abd42de..2510cfbd7bc96824fc660d02a80fe55f376853a6 100644 ---- a/src/main/java/net/minecraft/server/GameRules.java -+++ b/src/main/java/net/minecraft/server/GameRules.java -@@ -8,6 +8,10 @@ import com.mojang.brigadier.arguments.IntegerArgumentType; - import com.mojang.brigadier.builder.RequiredArgumentBuilder; - import com.mojang.brigadier.context.CommandContext; - import com.mojang.serialization.DynamicLike; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Comparator; - import java.util.Iterator; - import java.util.Map; -@@ -15,9 +19,6 @@ import java.util.Map.Entry; - import java.util.function.BiConsumer; - import java.util.function.Function; - import java.util.function.Supplier; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class GameRules { - -diff --git a/src/main/java/net/minecraft/server/GuiStatsComponent.java b/src/main/java/net/minecraft/server/GuiStatsComponent.java -index 859e31c63f94bdc7729c6d475990750b76e24b9c..decb89a87a85f26fa30574dc077e0f61910a1fe6 100644 ---- a/src/main/java/net/minecraft/server/GuiStatsComponent.java -+++ b/src/main/java/net/minecraft/server/GuiStatsComponent.java -@@ -1,13 +1,10 @@ - package net.minecraft.server; - --import java.awt.Color; --import java.awt.Dimension; --import java.awt.Graphics; -+import javax.swing.*; -+import java.awt.*; - import java.text.DecimalFormat; - import java.text.DecimalFormatSymbols; - import java.util.Locale; --import javax.swing.JComponent; --import javax.swing.Timer; - - public class GuiStatsComponent extends JComponent { - -diff --git a/src/main/java/net/minecraft/server/HeightMap.java b/src/main/java/net/minecraft/server/HeightMap.java -index a43c4ca3ea2e0dbf34a177592daed18c64bb14d3..1fdc709f5dcb873a20cebc3fe788e2a6bd5a641e 100644 ---- a/src/main/java/net/minecraft/server/HeightMap.java -+++ b/src/main/java/net/minecraft/server/HeightMap.java -@@ -5,11 +5,12 @@ import com.mojang.serialization.Codec; - import it.unimi.dsi.fastutil.objects.ObjectArrayList; - import it.unimi.dsi.fastutil.objects.ObjectList; - import it.unimi.dsi.fastutil.objects.ObjectListIterator; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Map; - import java.util.Set; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class HeightMap { - -diff --git a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java -index fb4c5ae4011e104848bab9e9141d9e90a5cb45ca..94f9b2036573b035db6bc9625412f09185d22181 100644 ---- a/src/main/java/net/minecraft/server/IAsyncTaskHandler.java -+++ b/src/main/java/net/minecraft/server/IAsyncTaskHandler.java -@@ -1,13 +1,14 @@ - package net.minecraft.server; - - import com.google.common.collect.Queues; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.util.Queue; - import java.util.concurrent.CompletableFuture; - import java.util.concurrent.Executor; - import java.util.concurrent.locks.LockSupport; - import java.util.function.BooleanSupplier; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public abstract class IAsyncTaskHandler implements Mailbox, Executor { - -diff --git a/src/main/java/net/minecraft/server/IBlockAccess.java b/src/main/java/net/minecraft/server/IBlockAccess.java -index a59df0e48a9bcbb32c51ec0013f634d474f68e52..54f48ebc0a1add4183ad1a02e21d8025550f1cdb 100644 ---- a/src/main/java/net/minecraft/server/IBlockAccess.java -+++ b/src/main/java/net/minecraft/server/IBlockAccess.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.function.BiFunction; - import java.util.function.Function; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public interface IBlockAccess { - -diff --git a/src/main/java/net/minecraft/server/IBlockState.java b/src/main/java/net/minecraft/server/IBlockState.java -index 6550b55067db31dbbc903fe17a13849383651c5a..6dde34c3ce51ec7f3c06567c9675fe3bfab4610d 100644 ---- a/src/main/java/net/minecraft/server/IBlockState.java -+++ b/src/main/java/net/minecraft/server/IBlockState.java -@@ -3,6 +3,7 @@ package net.minecraft.server; - import com.google.common.base.MoreObjects; - import com.mojang.serialization.Codec; - import com.mojang.serialization.DataResult; -+ - import java.util.Collection; - import java.util.Optional; - import java.util.stream.Stream; -diff --git a/src/main/java/net/minecraft/server/IChatBaseComponent.java b/src/main/java/net/minecraft/server/IChatBaseComponent.java -index 94a6d0ad76b10b8790ffb2019bf6972472b04c3d..9fa95225ff3a31db29236a55bb7ad4a6b700e62e 100644 ---- a/src/main/java/net/minecraft/server/IChatBaseComponent.java -+++ b/src/main/java/net/minecraft/server/IChatBaseComponent.java -@@ -1,18 +1,11 @@ - package net.minecraft.server; - --import com.google.gson.Gson; --import com.google.gson.GsonBuilder; --import com.google.gson.JsonArray; --import com.google.gson.JsonDeserializationContext; --import com.google.gson.JsonDeserializer; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonPrimitive; --import com.google.gson.JsonSerializationContext; --import com.google.gson.JsonSerializer; -+import com.google.common.collect.Streams; -+import com.google.gson.*; - import com.google.gson.stream.JsonReader; - import com.mojang.brigadier.Message; -+ -+import javax.annotation.Nullable; - import java.io.IOException; - import java.io.StringReader; - import java.lang.reflect.Field; -@@ -21,9 +14,6 @@ import java.util.Iterator; - import java.util.List; - import java.util.Map.Entry; - import java.util.Optional; --import javax.annotation.Nullable; --// CraftBukkit start --import com.google.common.collect.Streams; - import java.util.stream.Stream; - - public interface IChatBaseComponent extends Message, IChatFormatted, Iterable { -diff --git a/src/main/java/net/minecraft/server/IChunkAccess.java b/src/main/java/net/minecraft/server/IChunkAccess.java -index 930cd8106412b362650c77a69ea5f945043c92c7..854edaf19962dd0d6d5dc47cdad8e025fb1fb6d1 100644 ---- a/src/main/java/net/minecraft/server/IChunkAccess.java -+++ b/src/main/java/net/minecraft/server/IChunkAccess.java -@@ -2,13 +2,14 @@ package net.minecraft.server; - - import it.unimi.dsi.fastutil.shorts.ShortArrayList; - import it.unimi.dsi.fastutil.shorts.ShortList; -+import org.apache.logging.log4j.LogManager; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Map; - import java.util.Map.Entry; - import java.util.Set; - import java.util.stream.Stream; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; - - public interface IChunkAccess extends IBlockAccess, IStructureAccess { - -diff --git a/src/main/java/net/minecraft/server/IChunkLoader.java b/src/main/java/net/minecraft/server/IChunkLoader.java -index 5601088cd5024a40e8296bab979f43de924c2b62..69d138f2bb4625ff96223c8d70217c3ffef6de5d 100644 ---- a/src/main/java/net/minecraft/server/IChunkLoader.java -+++ b/src/main/java/net/minecraft/server/IChunkLoader.java -@@ -1,14 +1,11 @@ - package net.minecraft.server; - - import com.mojang.datafixers.DataFixer; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.io.IOException; --// Paper start --import java.util.concurrent.CompletableFuture; --import java.util.concurrent.CompletionException; --// Paper end - import java.util.function.Supplier; --import javax.annotation.Nullable; - - public class IChunkLoader implements AutoCloseable { - -diff --git a/src/main/java/net/minecraft/server/ICollisionAccess.java b/src/main/java/net/minecraft/server/ICollisionAccess.java -index 3ce2f7497a9e12082b70525ad2aaf5e0828cc068..37d5c492a1cfa137abfd3b801a7f1020e5289e00 100644 ---- a/src/main/java/net/minecraft/server/ICollisionAccess.java -+++ b/src/main/java/net/minecraft/server/ICollisionAccess.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.function.BiPredicate; - import java.util.function.Predicate; - import java.util.stream.Stream; - import java.util.stream.StreamSupport; --import javax.annotation.Nullable; - - public interface ICollisionAccess extends IBlockAccess { - -diff --git a/src/main/java/net/minecraft/server/IDispenseBehavior.java b/src/main/java/net/minecraft/server/IDispenseBehavior.java -index 660f44975a003ea68ddad59899618485fdaf5487..1ec06c6f02f40fb3bf29e0f11ddcbb4338d83cb1 100644 ---- a/src/main/java/net/minecraft/server/IDispenseBehavior.java -+++ b/src/main/java/net/minecraft/server/IDispenseBehavior.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --import java.util.Random; --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.TreeType; --import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.util.DummyGeneratorAccess; - import org.bukkit.event.block.BlockDispenseEvent; - import org.bukkit.event.world.StructureGrowEvent; -+ -+import java.util.Iterator; -+import java.util.List; -+import java.util.Random; - // CraftBukkit end - - public interface IDispenseBehavior { -diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java -index 0edcb775e965a3d6539d44e49480068deafab7a5..09e2ecb035fc724f35304460b67f303637b2860a 100644 ---- a/src/main/java/net/minecraft/server/IEntityAccess.java -+++ b/src/main/java/net/minecraft/server/IEntityAccess.java -@@ -1,13 +1,14 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Objects; - import java.util.UUID; - import java.util.function.Predicate; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public interface IEntityAccess { - -diff --git a/src/main/java/net/minecraft/server/IEntityAngerable.java b/src/main/java/net/minecraft/server/IEntityAngerable.java -index d2b8bf5c1c92469a878755dd2d90b0291ae53e37..d8b8670c83816b2233a61b451cec4b08d21101c3 100644 ---- a/src/main/java/net/minecraft/server/IEntityAngerable.java -+++ b/src/main/java/net/minecraft/server/IEntityAngerable.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Objects; - import java.util.UUID; --import javax.annotation.Nullable; - - public interface IEntityAngerable { - -diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java -index a52dd0c021e264a57a62bde27ea9d2a6a97e2335..3873b29900485a40bbc464580e1e69aec767528c 100644 ---- a/src/main/java/net/minecraft/server/IEntitySelector.java -+++ b/src/main/java/net/minecraft/server/IEntitySelector.java -@@ -1,8 +1,9 @@ - package net.minecraft.server; - - import com.google.common.base.Predicates; --import java.util.function.Predicate; -+ - import javax.annotation.Nullable; -+import java.util.function.Predicate; - - public final class IEntitySelector { - -diff --git a/src/main/java/net/minecraft/server/IHopper.java b/src/main/java/net/minecraft/server/IHopper.java -index 84dcf4a0c5020f54f233e514a101e608d70286d5..2553abbfa05f0c6537c5ec92694b3c0704adad5c 100644 ---- a/src/main/java/net/minecraft/server/IHopper.java -+++ b/src/main/java/net/minecraft/server/IHopper.java -@@ -1,7 +1,5 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; -- - public interface IHopper extends IInventory { - - VoxelShape a = Block.a(2.0D, 11.0D, 2.0D, 14.0D, 16.0D, 14.0D); -diff --git a/src/main/java/net/minecraft/server/IInventory.java b/src/main/java/net/minecraft/server/IInventory.java -index 46b88056b852a7f91d32862dea7bd3a7ea4a1226..8c6568019517336fc30c5f4e694e06c730639017 100644 ---- a/src/main/java/net/minecraft/server/IInventory.java -+++ b/src/main/java/net/minecraft/server/IInventory.java -@@ -1,7 +1,8 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.entity.CraftHumanEntity; -+ - import java.util.Set; --import org.bukkit.craftbukkit.entity.CraftHumanEntity; // CraftBukkit - - public interface IInventory extends Clearable { - -diff --git a/src/main/java/net/minecraft/server/IMerchant.java b/src/main/java/net/minecraft/server/IMerchant.java -index f69132b6b87dfad47738661fff097d8f1346f4a5..904756d92590ecb3e49c08ffe4e4cdc4c1a99d65 100644 ---- a/src/main/java/net/minecraft/server/IMerchant.java -+++ b/src/main/java/net/minecraft/server/IMerchant.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.OptionalInt; - import javax.annotation.Nullable; -+import java.util.OptionalInt; - - public interface IMerchant { - -diff --git a/src/main/java/net/minecraft/server/IOWorker.java b/src/main/java/net/minecraft/server/IOWorker.java -index 620acc318d67a7317e3c40b24f2015aff5907be2..907916f8ce8021b0f0007bb6e1cda9287163d0cc 100644 ---- a/src/main/java/net/minecraft/server/IOWorker.java -+++ b/src/main/java/net/minecraft/server/IOWorker.java -@@ -2,6 +2,10 @@ package net.minecraft.server; - - import com.google.common.collect.Maps; - import com.mojang.datafixers.util.Either; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.io.IOException; - import java.util.ArrayList; -@@ -14,9 +18,6 @@ import java.util.concurrent.CompletionException; - import java.util.concurrent.atomic.AtomicBoolean; - import java.util.function.Function; - import java.util.function.Supplier; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class IOWorker implements AutoCloseable { - -diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java -index f538189aead404e97254ad3c9ca7bde1901791d8..28f53508f91b6a3412b8b3cfb8f7e70f0727053f 100644 ---- a/src/main/java/net/minecraft/server/IProjectile.java -+++ b/src/main/java/net/minecraft/server/IProjectile.java -@@ -1,11 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.projectiles.ProjectileSource; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.UUID; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.projectiles.ProjectileSource; - // CraftBukkit end - - public abstract class IProjectile extends Entity { -diff --git a/src/main/java/net/minecraft/server/IWorldReader.java b/src/main/java/net/minecraft/server/IWorldReader.java -index b6d6905260cdd32873010f24ef5a3505e66159be..a2475bd55975445fc1e412d45720d5d1ff0e4553 100644 ---- a/src/main/java/net/minecraft/server/IWorldReader.java -+++ b/src/main/java/net/minecraft/server/IWorldReader.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.stream.Stream; - import javax.annotation.Nullable; -+import java.util.stream.Stream; - - public interface IWorldReader extends IBlockLightAccess, ICollisionAccess, BiomeManager.Provider { - -diff --git a/src/main/java/net/minecraft/server/InventoryCraftResult.java b/src/main/java/net/minecraft/server/InventoryCraftResult.java -index ff35cb2bd68335eba6af8bf5e6bd90916f358e01..0948a829e72d26f47f4578fb3defc7dedf92c917 100644 ---- a/src/main/java/net/minecraft/server/InventoryCraftResult.java -+++ b/src/main/java/net/minecraft/server/InventoryCraftResult.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - --import java.util.Iterator; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; - // CraftBukkit end - - public class InventoryCraftResult implements IInventory, RecipeHolder { -diff --git a/src/main/java/net/minecraft/server/InventoryCrafting.java b/src/main/java/net/minecraft/server/InventoryCrafting.java -index 0dd7a8708c7ae8b494cae8da57de089bb32c7d4a..1e29bf073058291b80d0a41b91b6e1690a861535 100644 ---- a/src/main/java/net/minecraft/server/InventoryCrafting.java -+++ b/src/main/java/net/minecraft/server/InventoryCrafting.java -@@ -1,13 +1,12 @@ - package net.minecraft.server; - --import java.util.Iterator; --// CraftBukkit start --import java.util.List; - import org.bukkit.Location; -- - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; - import org.bukkit.event.inventory.InventoryType; -+ -+import java.util.Iterator; -+import java.util.List; - // CraftBukkit end - - public class InventoryCrafting implements IInventory, AutoRecipeOutput { -diff --git a/src/main/java/net/minecraft/server/InventoryLargeChest.java b/src/main/java/net/minecraft/server/InventoryLargeChest.java -index d41f04ff36a437531f86abdad82efecd36f1b786..9c26d5d0475fc0dfe6ee9cb8df46772aa19194f4 100644 ---- a/src/main/java/net/minecraft/server/InventoryLargeChest.java -+++ b/src/main/java/net/minecraft/server/InventoryLargeChest.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - - // CraftBukkit start --import java.util.ArrayList; --import java.util.List; --import org.bukkit.Location; - -+import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import java.util.ArrayList; -+import java.util.List; - // CraftBukkit end - - public class InventoryLargeChest implements IInventory { -diff --git a/src/main/java/net/minecraft/server/InventoryMerchant.java b/src/main/java/net/minecraft/server/InventoryMerchant.java -index 8f17a346deec7a3a7cacb516fcab04954e4b1824..9da614417d915d410335cf9bbcfca9343c36dd55 100644 ---- a/src/main/java/net/minecraft/server/InventoryMerchant.java -+++ b/src/main/java/net/minecraft/server/InventoryMerchant.java -@@ -1,13 +1,13 @@ - package net.minecraft.server; - --import java.util.Iterator; --import javax.annotation.Nullable; --// CraftBukkit start --import java.util.List; - import org.bukkit.Location; --import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.craftbukkit.entity.CraftAbstractVillager; -+import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; - // CraftBukkit end - - public class InventoryMerchant implements IInventory { -diff --git a/src/main/java/net/minecraft/server/InventorySubcontainer.java b/src/main/java/net/minecraft/server/InventorySubcontainer.java -index 4cf5dad0939ecb636752e19ad19aec2c882d5efc..b9d1c0d48c2fd0e2b423b99447a4b8d551077f08 100644 ---- a/src/main/java/net/minecraft/server/InventorySubcontainer.java -+++ b/src/main/java/net/minecraft/server/InventorySubcontainer.java -@@ -1,16 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+import org.bukkit.Location; -+import org.bukkit.craftbukkit.entity.CraftHumanEntity; -+import org.bukkit.entity.HumanEntity; - - import java.util.ArrayList; - import java.util.Iterator; - import java.util.List; --import java.util.stream.Collectors; -- --// CraftBukkit start --import org.bukkit.Location; --import org.bukkit.craftbukkit.entity.CraftHumanEntity; --import org.bukkit.entity.HumanEntity; - // CraftBukkit end - - public class InventorySubcontainer implements IInventory, AutoRecipeOutput { -diff --git a/src/main/java/net/minecraft/server/ItemArmor.java b/src/main/java/net/minecraft/server/ItemArmor.java -index 885458d54c97ad597d84ebb414884bf9fc1e0d86..9aeecdafeed5b4bd7b13b91cfa71456e0719bcf0 100644 ---- a/src/main/java/net/minecraft/server/ItemArmor.java -+++ b/src/main/java/net/minecraft/server/ItemArmor.java -@@ -3,12 +3,11 @@ package net.minecraft.server; - import com.google.common.collect.ImmutableMultimap; - import com.google.common.collect.ImmutableMultimap.Builder; - import com.google.common.collect.Multimap; --import java.util.List; --import java.util.UUID; -- --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.block.BlockDispenseArmorEvent; -+ -+import java.util.List; -+import java.util.UUID; - // CraftBukkit end - - public class ItemArmor extends Item implements ItemWearable { -diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java -index 2e3e373dedcf1c358da061c82ada8faf902421fb..65558af58dfaf8c92e4d6f766f97e007154ae709 100644 ---- a/src/main/java/net/minecraft/server/ItemBlock.java -+++ b/src/main/java/net/minecraft/server/ItemBlock.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.Map; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.block.data.CraftBlockData; - import org.bukkit.event.block.BlockCanBuildEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.Map; - // CraftBukkit end - - public class ItemBlock extends Item { -diff --git a/src/main/java/net/minecraft/server/ItemBucket.java b/src/main/java/net/minecraft/server/ItemBucket.java -index 120bf8436fd82294c339add2e7bff1cda8311aea..6697cfb7cf32cc2a86993a9d59aec056ac493c30 100644 ---- a/src/main/java/net/minecraft/server/ItemBucket.java -+++ b/src/main/java/net/minecraft/server/ItemBucket.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.util.DummyGeneratorAccess; - import org.bukkit.event.player.PlayerBucketEmptyEvent; - import org.bukkit.event.player.PlayerBucketFillEvent; -+ -+import javax.annotation.Nullable; - // CraftBukkit end - - public class ItemBucket extends Item { -diff --git a/src/main/java/net/minecraft/server/ItemCrossbow.java b/src/main/java/net/minecraft/server/ItemCrossbow.java -index 728767356ba82a77cc87040db5a7aef88c1ea8e1..4e5d09d2d43aca5cfd7f284120043293e82009a3 100644 ---- a/src/main/java/net/minecraft/server/ItemCrossbow.java -+++ b/src/main/java/net/minecraft/server/ItemCrossbow.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ - import java.util.List; - import java.util.Random; - import java.util.function.Predicate; -diff --git a/src/main/java/net/minecraft/server/ItemDebugStick.java b/src/main/java/net/minecraft/server/ItemDebugStick.java -index 138dc40c4080ee6c345cb99d5a8fa26e2cb472be..480dbd68605a0d2ff6423ddb99a75b5a516ab600 100644 ---- a/src/main/java/net/minecraft/server/ItemDebugStick.java -+++ b/src/main/java/net/minecraft/server/ItemDebugStick.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Collection; - import javax.annotation.Nullable; -+import java.util.Collection; - - public class ItemDebugStick extends Item { - -diff --git a/src/main/java/net/minecraft/server/ItemDye.java b/src/main/java/net/minecraft/server/ItemDye.java -index b885d66717c44ca128874b7c0887f8efe4bda183..64e63663e65bc4ab1e975f9b61c547fb270eb092 100644 ---- a/src/main/java/net/minecraft/server/ItemDye.java -+++ b/src/main/java/net/minecraft/server/ItemDye.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; --import java.util.Map; -+import org.bukkit.event.entity.SheepDyeWoolEvent; - --import org.bukkit.event.entity.SheepDyeWoolEvent; // CraftBukkit -+import java.util.Map; - - public class ItemDye extends Item { - -diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java -index 886b6006c0691afb85de605bb4f5dfc05b440878..cf232cb18bf320011f588602e42c0e20b52fe70c 100644 ---- a/src/main/java/net/minecraft/server/ItemFireworks.java -+++ b/src/main/java/net/minecraft/server/ItemFireworks.java -@@ -1,7 +1,6 @@ - package net.minecraft.server; - - import java.util.ArrayList; --import java.util.Arrays; - import java.util.Comparator; - import java.util.List; - -diff --git a/src/main/java/net/minecraft/server/ItemFishingRod.java b/src/main/java/net/minecraft/server/ItemFishingRod.java -index 427c593be79fc26d5b8a1b5b60987d15b25f93ed..1b0146413e80c5a0df594da3def26e7118d874ee 100644 ---- a/src/main/java/net/minecraft/server/ItemFishingRod.java -+++ b/src/main/java/net/minecraft/server/ItemFishingRod.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.event.player.PlayerFishEvent; // CraftBukkit -+import org.bukkit.event.player.PlayerFishEvent; - - public class ItemFishingRod extends Item implements ItemVanishable { - -diff --git a/src/main/java/net/minecraft/server/ItemLeash.java b/src/main/java/net/minecraft/server/ItemLeash.java -index aadceb34a09729b883ff1fcabfafdc02b4448bff..7d58e32a257174053e73a5de0a31d055b90316cf 100644 ---- a/src/main/java/net/minecraft/server/ItemLeash.java -+++ b/src/main/java/net/minecraft/server/ItemLeash.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.event.hanging.HangingPlaceEvent; -+ - import java.util.Iterator; - import java.util.List; - --import org.bukkit.event.hanging.HangingPlaceEvent; // CraftBukkit -- - public class ItemLeash extends Item { - - public ItemLeash(Item.Info item_info) { -diff --git a/src/main/java/net/minecraft/server/ItemMonsterEgg.java b/src/main/java/net/minecraft/server/ItemMonsterEgg.java -index 6d83210806aafd00f45dc44c6723b818c5b1fba1..cb88147e34f66a65d5da4db2637a28746c2eff87 100644 ---- a/src/main/java/net/minecraft/server/ItemMonsterEgg.java -+++ b/src/main/java/net/minecraft/server/ItemMonsterEgg.java -@@ -2,10 +2,11 @@ package net.minecraft.server; - - import com.google.common.collect.Iterables; - import com.google.common.collect.Maps; -+ -+import javax.annotation.Nullable; - import java.util.Map; - import java.util.Objects; - import java.util.Optional; --import javax.annotation.Nullable; - - public class ItemMonsterEgg extends Item { - -diff --git a/src/main/java/net/minecraft/server/ItemRecord.java b/src/main/java/net/minecraft/server/ItemRecord.java -index 3e49b2c9db37ddba1c6bdd544877d5e7cd67141e..13b9bd8ece4aaa804d8d79b902d3ec63a737de87 100644 ---- a/src/main/java/net/minecraft/server/ItemRecord.java -+++ b/src/main/java/net/minecraft/server/ItemRecord.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; -+ - import java.util.Map; - - public class ItemRecord extends Item { -diff --git a/src/main/java/net/minecraft/server/ItemSkullPlayer.java b/src/main/java/net/minecraft/server/ItemSkullPlayer.java -index 61f4cf9cc62a1b2ba59137b8682cb58834b4abcc..d08946bb977a3e949fc2178ed12e84152551a635 100644 ---- a/src/main/java/net/minecraft/server/ItemSkullPlayer.java -+++ b/src/main/java/net/minecraft/server/ItemSkullPlayer.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - - import com.mojang.authlib.GameProfile; --import java.util.UUID; - import org.apache.commons.lang3.StringUtils; - -+import java.util.UUID; -+ - public class ItemSkullPlayer extends ItemBlockWallable { - - public ItemSkullPlayer(Block block, Block block1, Item.Info item_info) { -diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java -index 3c56053e3075173edd22eccb277f51a12287ab56..9529eb584b1d5f4549d4f376a2d4894a65f05c6d 100644 ---- a/src/main/java/net/minecraft/server/ItemStack.java -+++ b/src/main/java/net/minecraft/server/ItemStack.java -@@ -6,26 +6,10 @@ import com.google.gson.JsonParseException; - import com.mojang.brigadier.StringReader; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.serialization.Codec; -+import com.mojang.serialization.Dynamic; - import com.mojang.serialization.codecs.RecordCodecBuilder; --import java.text.DecimalFormat; --import java.text.DecimalFormatSymbols; --import java.util.Collections; --import java.util.Comparator; --import java.util.Locale; --import java.util.Objects; --import java.util.Optional; --import java.util.Random; --import java.util.function.Consumer; --import java.util.function.Predicate; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import com.mojang.serialization.Dynamic; --import java.util.List; --import java.util.Map; -- - import org.bukkit.Location; - import org.bukkit.TreeType; - import org.bukkit.block.BlockState; -@@ -37,6 +21,13 @@ import org.bukkit.entity.Player; - import org.bukkit.event.block.BlockFertilizeEvent; - import org.bukkit.event.player.PlayerItemDamageEvent; - import org.bukkit.event.world.StructureGrowEvent; -+ -+import javax.annotation.Nullable; -+import java.text.DecimalFormat; -+import java.text.DecimalFormatSymbols; -+import java.util.*; -+import java.util.function.Consumer; -+import java.util.function.Predicate; - // CraftBukkit end - - public final class ItemStack { -diff --git a/src/main/java/net/minecraft/server/ItemWorldMap.java b/src/main/java/net/minecraft/server/ItemWorldMap.java -index faa556d4358bc9890ae80c18ee10c38a8d46548e..0f342d972f94852d057e39f0c24baf46b21c0d52 100644 ---- a/src/main/java/net/minecraft/server/ItemWorldMap.java -+++ b/src/main/java/net/minecraft/server/ItemWorldMap.java -@@ -4,11 +4,10 @@ import com.google.common.collect.Iterables; - import com.google.common.collect.LinkedHashMultiset; - import com.google.common.collect.Multiset; - import com.google.common.collect.Multisets; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.event.server.MapInitializeEvent; -+ -+import javax.annotation.Nullable; - // CraftBukkit end - - public class ItemWorldMap extends ItemWorldMapBase { -diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java -index 3fb72d6ee587d66a9b7e1dec27fc4f64b82ab4df..0859a8ac90c4a514d35d9df40f85677f64fa21c3 100644 ---- a/src/main/java/net/minecraft/server/JsonList.java -+++ b/src/main/java/net/minecraft/server/JsonList.java -@@ -1,27 +1,23 @@ - package net.minecraft.server; - --import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.google.common.io.Files; --import com.google.gson.Gson; --import com.google.gson.GsonBuilder; --import com.google.gson.JsonArray; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; -+import com.google.gson.*; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.BufferedReader; - import java.io.BufferedWriter; - import java.io.File; - import java.io.IOException; --import java.lang.reflect.ParameterizedType; // Paper --import java.lang.reflect.Type; // Paper -+import java.lang.reflect.ParameterizedType; -+import java.lang.reflect.Type; - import java.nio.charset.StandardCharsets; - import java.util.Collection; - import java.util.Iterator; - import java.util.List; - import java.util.Map; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public abstract class JsonList> { - -diff --git a/src/main/java/net/minecraft/server/LegacyPingHandler.java b/src/main/java/net/minecraft/server/LegacyPingHandler.java -index 4a49fe4cc600e2b70963302ddae0c4479849f3f5..c9f277c06d29741fbab92c77dadf0b53cc84911a 100644 ---- a/src/main/java/net/minecraft/server/LegacyPingHandler.java -+++ b/src/main/java/net/minecraft/server/LegacyPingHandler.java -@@ -1,17 +1,17 @@ - package net.minecraft.server; - - import com.destroystokyo.paper.network.PaperLegacyStatusClient; -- - import io.netty.buffer.ByteBuf; - import io.netty.buffer.Unpooled; - import io.netty.channel.ChannelFutureListener; - import io.netty.channel.ChannelHandlerContext; - import io.netty.channel.ChannelInboundHandlerAdapter; --import java.net.InetSocketAddress; --import java.nio.charset.StandardCharsets; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import java.net.InetSocketAddress; -+import java.nio.charset.StandardCharsets; -+ - public class LegacyPingHandler extends ChannelInboundHandlerAdapter { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/LightEngineLayer.java b/src/main/java/net/minecraft/server/LightEngineLayer.java -index b5d5dd1075fd6aabbfbbd60f219b76593fc54a76..56c2ee99ab1d2ec28befaf3383e83a8f70fbdb20 100644 ---- a/src/main/java/net/minecraft/server/LightEngineLayer.java -+++ b/src/main/java/net/minecraft/server/LightEngineLayer.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - --import java.util.Arrays; --import javax.annotation.Nullable; - import org.apache.commons.lang3.mutable.MutableInt; - -+import javax.annotation.Nullable; -+import java.util.Arrays; -+ - public abstract class LightEngineLayer, S extends LightEngineStorage> extends LightEngineGraph implements LightEngineLayerEventListener { - - private static final EnumDirection[] e = EnumDirection.values(); -diff --git a/src/main/java/net/minecraft/server/LightEngineStorage.java b/src/main/java/net/minecraft/server/LightEngineStorage.java -index e0bbfe1422cbad811ecb43d7436380d86b0f8abc..e06de856b8d889c4235cb0a443d9df808cfe34d3 100644 ---- a/src/main/java/net/minecraft/server/LightEngineStorage.java -+++ b/src/main/java/net/minecraft/server/LightEngineStorage.java -@@ -1,13 +1,9 @@ - package net.minecraft.server; - --import it.unimi.dsi.fastutil.longs.Long2ObjectMap; -+import it.unimi.dsi.fastutil.longs.*; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap.Entry; --import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; --import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; --import it.unimi.dsi.fastutil.longs.LongIterator; --import it.unimi.dsi.fastutil.longs.LongOpenHashSet; --import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.objects.ObjectIterator; -+ - import javax.annotation.Nullable; - - public abstract class LightEngineStorage> extends LightEngineGraphSection { -diff --git a/src/main/java/net/minecraft/server/LightEngineStorageArray.java b/src/main/java/net/minecraft/server/LightEngineStorageArray.java -index 549c2551c2b59730bf53a80f8706d388d96ad932..cee30e695c378acba0aab9ae66094914364ea3c9 100644 ---- a/src/main/java/net/minecraft/server/LightEngineStorageArray.java -+++ b/src/main/java/net/minecraft/server/LightEngineStorageArray.java -@@ -1,6 +1,5 @@ - package net.minecraft.server; - --import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; - import javax.annotation.Nullable; - - public abstract class LightEngineStorageArray> { -diff --git a/src/main/java/net/minecraft/server/LightEngineStorageBlock.java b/src/main/java/net/minecraft/server/LightEngineStorageBlock.java -index 5b7b7506f5d1a7578fb54a578891324dfcec3f03..c6362f6ba91c5f945e1d3ce1e5b095771eebd55b 100644 ---- a/src/main/java/net/minecraft/server/LightEngineStorageBlock.java -+++ b/src/main/java/net/minecraft/server/LightEngineStorageBlock.java -@@ -1,7 +1,5 @@ - package net.minecraft.server; - --import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; -- - public class LightEngineStorageBlock extends LightEngineStorage { - - protected LightEngineStorageBlock(ILightAccess ilightaccess) { -diff --git a/src/main/java/net/minecraft/server/LightEngineStorageSky.java b/src/main/java/net/minecraft/server/LightEngineStorageSky.java -index 944094e8e770cc8c0205ef2aa6c48fff55d74639..d29e1edffd6c27b351eebb385ceac23db6101713 100644 ---- a/src/main/java/net/minecraft/server/LightEngineStorageSky.java -+++ b/src/main/java/net/minecraft/server/LightEngineStorageSky.java -@@ -1,10 +1,9 @@ - package net.minecraft.server; - --import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; --import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.longs.LongIterator; - import it.unimi.dsi.fastutil.longs.LongOpenHashSet; - import it.unimi.dsi.fastutil.longs.LongSet; -+ - import java.util.Arrays; - - public class LightEngineStorageSky extends LightEngineStorage { -diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index cc22d89d540a4f86e11d7d09ad2be7fcf070f43d..adc7e6b6c0a8bec4dc0d2c9bf39a459578bdd41d 100644 ---- a/src/main/java/net/minecraft/server/LightEngineThreaded.java -+++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java -@@ -1,15 +1,12 @@ - package net.minecraft.server; - --import com.mojang.datafixers.util.Pair; --import it.unimi.dsi.fastutil.objects.ObjectArrayList; --import it.unimi.dsi.fastutil.objects.ObjectList; --import it.unimi.dsi.fastutil.objects.ObjectListIterator; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.concurrent.CompletableFuture; - import java.util.concurrent.atomic.AtomicBoolean; - import java.util.function.IntSupplier; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class LightEngineThreaded extends LightEngine implements AutoCloseable { - -diff --git a/src/main/java/net/minecraft/server/LocaleLanguage.java b/src/main/java/net/minecraft/server/LocaleLanguage.java -index c83ba9d9869f8ba51df17963d530536d2a08c263..b87b989a4dfd1abe160842071b435d19bdd8942e 100644 ---- a/src/main/java/net/minecraft/server/LocaleLanguage.java -+++ b/src/main/java/net/minecraft/server/LocaleLanguage.java -@@ -6,6 +6,9 @@ import com.google.gson.Gson; - import com.google.gson.JsonElement; - import com.google.gson.JsonObject; - import com.google.gson.JsonParseException; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.io.IOException; - import java.io.InputStream; - import java.io.InputStreamReader; -@@ -15,8 +18,6 @@ import java.util.Map; - import java.util.Map.Entry; - import java.util.function.BiConsumer; - import java.util.regex.Pattern; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public abstract class LocaleLanguage { - -diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index b46122a57b60888b20ec6602bb89df898ff981a4..656ba5b0621aa3f5a3208a4e08692a381522f437 100644 ---- a/src/main/java/net/minecraft/server/LoginListener.java -+++ b/src/main/java/net/minecraft/server/LoginListener.java -@@ -4,6 +4,16 @@ import com.destroystokyo.paper.profile.CraftPlayerProfile; - import com.destroystokyo.paper.profile.PlayerProfile; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.exceptions.AuthenticationUnavailableException; -+import io.netty.buffer.Unpooled; -+import org.apache.commons.lang3.Validate; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+import org.bukkit.craftbukkit.util.Waitable; -+import org.bukkit.event.player.AsyncPlayerPreLoginEvent; -+import org.bukkit.event.player.PlayerPreLoginEvent; -+ -+import javax.annotation.Nullable; -+import javax.crypto.SecretKey; - import java.math.BigInteger; - import java.net.InetAddress; - import java.net.InetSocketAddress; -@@ -13,19 +23,6 @@ import java.util.Arrays; - import java.util.Random; - import java.util.UUID; - import java.util.concurrent.atomic.AtomicInteger; --import javax.annotation.Nullable; --import javax.crypto.SecretKey; --import org.apache.commons.lang3.Validate; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import org.bukkit.Bukkit; --import org.bukkit.craftbukkit.util.Waitable; --import org.bukkit.event.player.AsyncPlayerPreLoginEvent; --import org.bukkit.event.player.PlayerPreLoginEvent; --// CraftBukkit end --import io.netty.buffer.Unpooled; // Paper - - public class LoginListener implements PacketLoginInListener { - -diff --git a/src/main/java/net/minecraft/server/LootEnchantFunction.java b/src/main/java/net/minecraft/server/LootEnchantFunction.java -index 53c37b4a79a6bbd0d6b62ee0aa224f5cb32c9fbd..5da2f615e1a67cfca13609910576098daa741a82 100644 ---- a/src/main/java/net/minecraft/server/LootEnchantFunction.java -+++ b/src/main/java/net/minecraft/server/LootEnchantFunction.java -@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet; - import com.google.gson.JsonDeserializationContext; - import com.google.gson.JsonObject; - import com.google.gson.JsonSerializationContext; -+ - import java.util.Set; - - public class LootEnchantFunction extends LootItemFunctionConditional { -diff --git a/src/main/java/net/minecraft/server/LootEntryAbstract.java b/src/main/java/net/minecraft/server/LootEntryAbstract.java -index 788078c209b8bcbd551cf0a52eb6172928d7b5f9..39227fd450c32ea58439f6ad1d310f2c518ad109 100644 ---- a/src/main/java/net/minecraft/server/LootEntryAbstract.java -+++ b/src/main/java/net/minecraft/server/LootEntryAbstract.java -@@ -4,6 +4,7 @@ import com.google.common.collect.Lists; - import com.google.gson.JsonDeserializationContext; - import com.google.gson.JsonObject; - import com.google.gson.JsonSerializationContext; -+ - import java.util.List; - import java.util.function.Predicate; - -diff --git a/src/main/java/net/minecraft/server/LootItemConditionRandomChanceWithLooting.java b/src/main/java/net/minecraft/server/LootItemConditionRandomChanceWithLooting.java -index be735fe49317cb70b0f77d567a3714faca4b60ae..fb285b3fb92af4eb4c867e44253fa7cd3d3c87fc 100644 ---- a/src/main/java/net/minecraft/server/LootItemConditionRandomChanceWithLooting.java -+++ b/src/main/java/net/minecraft/server/LootItemConditionRandomChanceWithLooting.java -@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet; - import com.google.gson.JsonDeserializationContext; - import com.google.gson.JsonObject; - import com.google.gson.JsonSerializationContext; -+ - import java.util.Set; - - public class LootItemConditionRandomChanceWithLooting implements LootItemCondition { -diff --git a/src/main/java/net/minecraft/server/LootItemConditionSurvivesExplosion.java b/src/main/java/net/minecraft/server/LootItemConditionSurvivesExplosion.java -index 873a177cdc13a7b04cea5af81c178e82a32d307b..bb75895189ddcef1a5376b328bf2fed0ec148079 100644 ---- a/src/main/java/net/minecraft/server/LootItemConditionSurvivesExplosion.java -+++ b/src/main/java/net/minecraft/server/LootItemConditionSurvivesExplosion.java -@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet; - import com.google.gson.JsonDeserializationContext; - import com.google.gson.JsonObject; - import com.google.gson.JsonSerializationContext; -+ - import java.util.Random; - import java.util.Set; - -diff --git a/src/main/java/net/minecraft/server/LootItemFunctionExplorationMap.java b/src/main/java/net/minecraft/server/LootItemFunctionExplorationMap.java -index 30f21e3ff7eed3c7291e01b94cc0f66fd48756d0..cccd0b1a4cc7505b3a63b117e25ad8e8e0b949e4 100644 ---- a/src/main/java/net/minecraft/server/LootItemFunctionExplorationMap.java -+++ b/src/main/java/net/minecraft/server/LootItemFunctionExplorationMap.java -@@ -4,11 +4,12 @@ import com.google.common.collect.ImmutableSet; - import com.google.gson.JsonDeserializationContext; - import com.google.gson.JsonObject; - import com.google.gson.JsonSerializationContext; --import java.util.Locale; --import java.util.Set; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import java.util.Locale; -+import java.util.Set; -+ - public class LootItemFunctionExplorationMap extends LootItemFunctionConditional { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/LootSelectorEntry.java b/src/main/java/net/minecraft/server/LootSelectorEntry.java -index ca18d3156fd2b10f8ee48ff02f6f47e6e649200b..3aced0cb32f3a4f11efda79e40b6f8cd5045b295 100644 ---- a/src/main/java/net/minecraft/server/LootSelectorEntry.java -+++ b/src/main/java/net/minecraft/server/LootSelectorEntry.java -@@ -4,10 +4,11 @@ import com.google.common.collect.Lists; - import com.google.gson.JsonDeserializationContext; - import com.google.gson.JsonObject; - import com.google.gson.JsonSerializationContext; -+import org.apache.commons.lang3.ArrayUtils; -+ - import java.util.List; - import java.util.function.BiFunction; - import java.util.function.Consumer; --import org.apache.commons.lang3.ArrayUtils; - - public abstract class LootSelectorEntry extends LootEntryAbstract { - -diff --git a/src/main/java/net/minecraft/server/LootTable.java b/src/main/java/net/minecraft/server/LootTable.java -index 424144fc4c2fdec628ff0c0207f21b0c56d96501..451cec0df56e1153c1c8c9ae554530fbc77ad312 100644 ---- a/src/main/java/net/minecraft/server/LootTable.java -+++ b/src/main/java/net/minecraft/server/LootTable.java -@@ -1,25 +1,18 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import com.google.gson.JsonDeserializationContext; --import com.google.gson.JsonDeserializer; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSerializationContext; --import com.google.gson.JsonSerializer; --import java.lang.reflect.Type; --import java.util.*; --import java.util.function.BiFunction; --import java.util.function.Consumer; -+import com.google.gson.*; - import org.apache.commons.lang3.ArrayUtils; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start --import java.util.stream.Collectors; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.world.LootGenerateEvent; -+ -+import java.lang.reflect.Type; -+import java.util.*; -+import java.util.function.BiFunction; -+import java.util.function.Consumer; - // CraftBukkit end - - public class LootTable { -diff --git a/src/main/java/net/minecraft/server/LootTableRegistry.java b/src/main/java/net/minecraft/server/LootTableRegistry.java -index 43452f663eab54e094e8feab1e9f2266efe82e16..2c456bc34ca9eb56534f68f4844057a852f5ca8a 100644 ---- a/src/main/java/net/minecraft/server/LootTableRegistry.java -+++ b/src/main/java/net/minecraft/server/LootTableRegistry.java -@@ -4,11 +4,12 @@ import com.google.common.collect.ImmutableMap; - import com.google.common.collect.ImmutableMap.Builder; - import com.google.gson.Gson; - import com.google.gson.JsonElement; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.util.Map; - import java.util.Set; - import java.util.function.Function; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class LootTableRegistry extends ResourceDataJson { - -diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java -index 284448e6fe9c1c2649ac852cbf9efb7aa00ba3de..14f91c7e67e92b6407a789835378db76a2ecd797 100644 ---- a/src/main/java/net/minecraft/server/MCUtil.java -+++ b/src/main/java/net/minecraft/server/MCUtil.java -@@ -4,7 +4,6 @@ import com.destroystokyo.paper.block.TargetBlockInfo; - import com.destroystokyo.paper.profile.CraftPlayerProfile; - import com.destroystokyo.paper.profile.PlayerProfile; - import com.google.common.util.concurrent.ThreadFactoryBuilder; --import org.apache.commons.lang.exception.ExceptionUtils; - import com.google.gson.JsonArray; - import com.google.gson.JsonObject; - import com.google.gson.internal.Streams; -@@ -12,6 +11,7 @@ import com.google.gson.stream.JsonWriter; - import com.mojang.authlib.GameProfile; - import com.mojang.datafixers.util.Either; - import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; -+import org.apache.commons.lang.exception.ExceptionUtils; - import org.bukkit.Location; - import org.bukkit.block.BlockFace; - import org.bukkit.craftbukkit.CraftWorld; -@@ -25,12 +25,7 @@ import java.util.ArrayList; - import java.util.List; - import java.util.Queue; - import java.util.Set; --import java.util.concurrent.CompletableFuture; --import java.util.concurrent.ExecutionException; --import java.util.concurrent.LinkedBlockingQueue; --import java.util.concurrent.ThreadPoolExecutor; --import java.util.concurrent.TimeUnit; --import java.util.concurrent.TimeoutException; -+import java.util.concurrent.*; - import java.util.concurrent.atomic.AtomicBoolean; - import java.util.function.BiConsumer; - import java.util.function.Consumer; -diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index c426d1ed14177326c774d44c248f38229b3ad5be..2ddd36aa4b7c6835261012c5b70570898c2877e7 100644 ---- a/src/main/java/net/minecraft/server/Main.java -+++ b/src/main/java/net/minecraft/server/Main.java -@@ -5,9 +5,11 @@ import com.mojang.authlib.GameProfileRepository; - import com.mojang.authlib.minecraft.MinecraftSessionService; - import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; - import com.mojang.datafixers.DataFixer; --import com.mojang.serialization.DynamicOps; --import com.mojang.serialization.Lifecycle; --import java.awt.GraphicsEnvironment; -+import joptsimple.OptionSet; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import java.awt.*; - import java.io.File; - import java.net.Proxy; - import java.nio.file.Paths; -@@ -15,12 +17,6 @@ import java.util.Optional; - import java.util.UUID; - import java.util.concurrent.CompletableFuture; - import java.util.function.BooleanSupplier; --import joptsimple.NonOptionArgumentSpec; --import joptsimple.OptionParser; --import joptsimple.OptionSet; --import joptsimple.OptionSpec; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class Main { - -diff --git a/src/main/java/net/minecraft/server/MerchantRecipe.java b/src/main/java/net/minecraft/server/MerchantRecipe.java -index e42382a5c385c27b6322b03e87870eb20b21cb22..154a8bd5b17c79b4b3ff4d15ed43332f37528c2c 100644 ---- a/src/main/java/net/minecraft/server/MerchantRecipe.java -+++ b/src/main/java/net/minecraft/server/MerchantRecipe.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import org.bukkit.craftbukkit.inventory.CraftMerchantRecipe; // CraftBukkit -+import org.bukkit.craftbukkit.inventory.CraftMerchantRecipe; - - public class MerchantRecipe { - -diff --git a/src/main/java/net/minecraft/server/MinecartTrackLogic.java b/src/main/java/net/minecraft/server/MinecartTrackLogic.java -index e0be3a425aae51e1aced8eb6d8a5e84fc9315e3a..6faccf602f22a2b58064ba2342bf2c6adc1b79f2 100644 ---- a/src/main/java/net/minecraft/server/MinecartTrackLogic.java -+++ b/src/main/java/net/minecraft/server/MinecartTrackLogic.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; - - public class MinecartTrackLogic { - -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f3e67e96bea9059aad60c896d7f376f727a5a158..efe4638481d3c78d251dbe0f3b07d98845776e8e 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1,13 +1,8 @@ - package net.minecraft.server; - -+import co.aikar.timings.MinecraftTimings; - import com.google.common.base.Splitter; --import com.google.common.collect.ImmutableList; --import co.aikar.timings.Timings; --import com.destroystokyo.paper.event.server.PaperServerListPingEvent; --import com.google.common.base.Stopwatch; --import com.google.common.collect.Lists; --import com.google.common.collect.Maps; --import com.google.common.collect.Sets; -+import com.google.common.collect.*; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.GameProfileRepository; - import com.mojang.authlib.minecraft.MinecraftSessionService; -@@ -18,6 +13,15 @@ import io.netty.buffer.ByteBuf; - import io.netty.buffer.ByteBufOutputStream; - import io.netty.buffer.Unpooled; - import it.unimi.dsi.fastutil.longs.LongIterator; -+import joptsimple.OptionSet; -+import org.apache.commons.lang3.Validate; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+import org.bukkit.event.server.ServerLoadEvent; -+import org.spigotmc.SlackActivityAccountant; -+ -+import javax.annotation.Nullable; -+import javax.imageio.ImageIO; - import java.awt.image.BufferedImage; - import java.io.BufferedWriter; - import java.io.File; -@@ -41,22 +45,6 @@ import java.util.concurrent.atomic.AtomicReference; - import java.util.function.BooleanSupplier; - import java.util.function.Function; - import java.util.stream.Stream; --import javax.annotation.Nullable; --import javax.imageio.ImageIO; --import org.apache.commons.lang3.Validate; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; --// CraftBukkit start --import com.google.common.collect.ImmutableSet; --// import jline.console.ConsoleReader; // Paper --import joptsimple.OptionSet; --import org.bukkit.Bukkit; --import org.bukkit.craftbukkit.CraftServer; --import org.bukkit.craftbukkit.Main; --import org.bukkit.event.server.ServerLoadEvent; --// CraftBukkit end --import co.aikar.timings.MinecraftTimings; // Paper --import org.spigotmc.SlackActivityAccountant; // Spigot - - public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant implements IMojangStatistics, ICommandListener, AutoCloseable { - -diff --git a/src/main/java/net/minecraft/server/MobEffectList.java b/src/main/java/net/minecraft/server/MobEffectList.java -index 08911c9aacbd60a1fe4d19650f4335a4cce4084e..a6c18f175e0dbc1c03e5c9750a0e184b7d5c6ede 100644 ---- a/src/main/java/net/minecraft/server/MobEffectList.java -+++ b/src/main/java/net/minecraft/server/MobEffectList.java -@@ -1,15 +1,14 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Map; - import java.util.Map.Entry; - import java.util.UUID; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.craftbukkit.event.CraftEventFactory; --import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; - // CraftBukkit end - - public class MobEffectList { -diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -index 17e5e1f191efd91b0797826cb96e5f230d622a0d..2a7846b0ea96638e5b519f92e6d20a96c12d25b0 100644 ---- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Optional; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public abstract class MobSpawnerAbstract { - -diff --git a/src/main/java/net/minecraft/server/MobSpawnerTrader.java b/src/main/java/net/minecraft/server/MobSpawnerTrader.java -index 736b794f8268858e2e63a3aafef328b443386989..55758e608cd439bd55b71d80408e9f1dec57d967 100644 ---- a/src/main/java/net/minecraft/server/MobSpawnerTrader.java -+++ b/src/main/java/net/minecraft/server/MobSpawnerTrader.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Optional; - import java.util.Random; --import javax.annotation.Nullable; - - public class MobSpawnerTrader implements MobSpawner { - -diff --git a/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java b/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java -index c948e590eeff0aea53573532f8c507d638cc0bdf..1dd0276f409c4d82d9932582847cd128c3a668a2 100644 ---- a/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java -+++ b/src/main/java/net/minecraft/server/NBTCompressedStreamTools.java -@@ -1,17 +1,10 @@ - package net.minecraft.server; - --import java.io.BufferedInputStream; --import java.io.BufferedOutputStream; --import java.io.DataInput; --import java.io.DataInputStream; --import java.io.DataOutput; --import java.io.DataOutputStream; --import java.io.IOException; --import java.io.InputStream; --import java.io.OutputStream; -+import io.netty.buffer.ByteBufInputStream; -+ -+import java.io.*; - import java.util.zip.GZIPInputStream; - import java.util.zip.GZIPOutputStream; --import io.netty.buffer.ByteBufInputStream; // Paper - - public class NBTCompressedStreamTools { - -diff --git a/src/main/java/net/minecraft/server/NBTTagByteArray.java b/src/main/java/net/minecraft/server/NBTTagByteArray.java -index d7ba2db6380d04d732888420a86a396e009b84c8..b62311247d1b8b02d2239de972a5a1450a973ef2 100644 ---- a/src/main/java/net/minecraft/server/NBTTagByteArray.java -+++ b/src/main/java/net/minecraft/server/NBTTagByteArray.java -@@ -1,11 +1,12 @@ - package net.minecraft.server; - -+import org.apache.commons.lang3.ArrayUtils; -+ - import java.io.DataInput; - import java.io.DataOutput; - import java.io.IOException; - import java.util.Arrays; - import java.util.List; --import org.apache.commons.lang3.ArrayUtils; - - public class NBTTagByteArray extends NBTList { - -diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java -index 436f40bcd7817bedde4f6570c7c47dba7ff7034f..2b044b9807826034b3b94c45b26b7c0882b53d2c 100644 ---- a/src/main/java/net/minecraft/server/NBTTagCompound.java -+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java -@@ -2,26 +2,18 @@ package net.minecraft.server; - - import com.google.common.base.Strings; - import com.google.common.collect.Lists; --import com.google.common.collect.Maps; - import com.mojang.serialization.Codec; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.DataInput; - import java.io.DataOutput; - import java.io.IOException; --import java.util.Collection; --import java.util.Collections; --import java.util.HashMap; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Objects; --import java.util.Set; --import java.util.UUID; -+import java.util.*; - import java.util.regex.Pattern; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class NBTTagCompound implements NBTBase { - -diff --git a/src/main/java/net/minecraft/server/NBTTagIntArray.java b/src/main/java/net/minecraft/server/NBTTagIntArray.java -index eb3fc6db692b3be8cf6adea5eacc405b3c317f04..48ef35fb282395b1fa609ef4e2e9511abb7cf641 100644 ---- a/src/main/java/net/minecraft/server/NBTTagIntArray.java -+++ b/src/main/java/net/minecraft/server/NBTTagIntArray.java -@@ -1,11 +1,12 @@ - package net.minecraft.server; - -+import org.apache.commons.lang3.ArrayUtils; -+ - import java.io.DataInput; - import java.io.DataOutput; - import java.io.IOException; - import java.util.Arrays; - import java.util.List; --import org.apache.commons.lang3.ArrayUtils; - - public class NBTTagIntArray extends NBTList { - -diff --git a/src/main/java/net/minecraft/server/NBTTagList.java b/src/main/java/net/minecraft/server/NBTTagList.java -index ad4807e0bdd6409bd798f995da8f43cec1d0b385..3a04a1eda9c12d5b5ffdea7dafdf93a410a404b0 100644 ---- a/src/main/java/net/minecraft/server/NBTTagList.java -+++ b/src/main/java/net/minecraft/server/NBTTagList.java -@@ -5,6 +5,7 @@ import com.google.common.collect.Iterables; - import com.google.common.collect.Lists; - import it.unimi.dsi.fastutil.bytes.ByteOpenHashSet; - import it.unimi.dsi.fastutil.bytes.ByteSet; -+ - import java.io.DataInput; - import java.io.DataOutput; - import java.io.IOException; -diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -index 376427eee7774a26da53ac041ae197bd982bafce..04552de8d42d9bd75fd37f7ef13ee275a2ead931 100644 ---- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java -@@ -8,14 +8,15 @@ import com.mojang.authlib.Agent; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.ProfileLookupCallback; - import com.mojang.authlib.yggdrasil.ProfileNotFoundException; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.io.IOException; - import java.nio.charset.StandardCharsets; - import java.text.ParseException; - import java.util.*; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class NameReferencingFileConverter { - -diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java -index 78d1d96aeaf8c8b79f5f5bdf74178816c8bc8973..e1ee0992b5ff3b70da24fc7fc5624fe7c120ce02 100644 ---- a/src/main/java/net/minecraft/server/NavigationAbstract.java -+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableSet; -+ -+import javax.annotation.Nullable; - import java.util.Set; - import java.util.stream.Collectors; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public abstract class NavigationAbstract { - -diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index 946c9f05af3091e227efd7c1399c4d947710f722..773d51f0bbef5f4473bba99ea176b37739de862a 100644 ---- a/src/main/java/net/minecraft/server/NetworkManager.java -+++ b/src/main/java/net/minecraft/server/NetworkManager.java -@@ -2,31 +2,27 @@ package net.minecraft.server; - - import com.google.common.collect.Queues; - import com.google.common.util.concurrent.ThreadFactoryBuilder; --import io.netty.channel.Channel; --import io.netty.channel.ChannelFuture; --import io.netty.channel.ChannelFutureListener; --import io.netty.channel.ChannelHandlerContext; --import io.netty.channel.DefaultEventLoopGroup; --import io.netty.channel.SimpleChannelInboundHandler; -+import io.netty.channel.*; - import io.netty.channel.epoll.EpollEventLoopGroup; - import io.netty.channel.local.LocalChannel; - import io.netty.channel.local.LocalServerChannel; - import io.netty.channel.nio.NioEventLoopGroup; --import io.netty.handler.codec.EncoderException; // Paper -+import io.netty.handler.codec.EncoderException; - import io.netty.handler.timeout.TimeoutException; - import io.netty.util.AttributeKey; - import io.netty.util.concurrent.Future; - import io.netty.util.concurrent.GenericFutureListener; --import java.net.SocketAddress; --import java.util.Queue; --import javax.annotation.Nullable; --import javax.crypto.SecretKey; - import org.apache.commons.lang3.Validate; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - import org.apache.logging.log4j.Marker; - import org.apache.logging.log4j.MarkerManager; - -+import javax.annotation.Nullable; -+import javax.crypto.SecretKey; -+import java.net.SocketAddress; -+import java.util.Queue; -+ - public class NetworkManager extends SimpleChannelInboundHandler> { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/NibbleArray.java b/src/main/java/net/minecraft/server/NibbleArray.java -index a9795394c9b17f9f0ce4c4f9c8f51a48e950418e..09398d1740b1ad0752183578294ee8f5453b84fd 100644 ---- a/src/main/java/net/minecraft/server/NibbleArray.java -+++ b/src/main/java/net/minecraft/server/NibbleArray.java -@@ -1,6 +1,6 @@ - package net.minecraft.server; - --import com.destroystokyo.paper.util.pooled.PooledObjects; // Paper -+import com.destroystokyo.paper.util.pooled.PooledObjects; - - import javax.annotation.Nonnull; - import javax.annotation.Nullable; -diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java -index 545dbe6ddcce1d172f465b4a7ab85654ee5fdbb4..5d792e036848ed42973fc125fa4ab5e5688945d1 100644 ---- a/src/main/java/net/minecraft/server/Packet.java -+++ b/src/main/java/net/minecraft/server/Packet.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - --import io.netty.channel.ChannelFuture; // Paper -+import io.netty.channel.ChannelFuture; -+ - import java.io.IOException; - - public interface Packet { -diff --git a/src/main/java/net/minecraft/server/PacketDataSerializer.java b/src/main/java/net/minecraft/server/PacketDataSerializer.java -index 31e7fb56206a522a335f5e78afd09324d1c38864..d410843fe0c0d20cc374eac676c8f34a0a8aef2f 100644 ---- a/src/main/java/net/minecraft/server/PacketDataSerializer.java -+++ b/src/main/java/net/minecraft/server/PacketDataSerializer.java -@@ -10,11 +10,9 @@ import io.netty.buffer.ByteBufOutputStream; - import io.netty.handler.codec.DecoderException; - import io.netty.handler.codec.EncoderException; - import io.netty.util.ByteProcessor; --import java.io.DataInput; --import java.io.DataOutput; --import java.io.IOException; --import java.io.InputStream; --import java.io.OutputStream; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.nio.ByteBuffer; - import java.nio.ByteOrder; - import java.nio.channels.FileChannel; -@@ -24,9 +22,6 @@ import java.nio.charset.Charset; - import java.nio.charset.StandardCharsets; - import java.util.Date; - import java.util.UUID; --import javax.annotation.Nullable; -- --import org.bukkit.craftbukkit.inventory.CraftItemStack; // CraftBukkit - - public class PacketDataSerializer extends ByteBuf { - -diff --git a/src/main/java/net/minecraft/server/PacketEncoder.java b/src/main/java/net/minecraft/server/PacketEncoder.java -index b0cfef52cbb5e23beae528668e4e98cedecf603c..7deab4d4e40156590eada8f49b7e078efe924b44 100644 ---- a/src/main/java/net/minecraft/server/PacketEncoder.java -+++ b/src/main/java/net/minecraft/server/PacketEncoder.java -@@ -3,12 +3,13 @@ package net.minecraft.server; - import io.netty.buffer.ByteBuf; - import io.netty.channel.ChannelHandlerContext; - import io.netty.handler.codec.MessageToByteEncoder; --import java.io.IOException; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - import org.apache.logging.log4j.Marker; - import org.apache.logging.log4j.MarkerManager; - -+import java.io.IOException; -+ - public class PacketEncoder extends MessageToByteEncoder> { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java b/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java -index 51970a4f134e29f5d2bf681d83aeeda916fe9195..79363155ce48746db8cb749358efad07e91b2f3d 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java -+++ b/src/main/java/net/minecraft/server/PacketPlayInUseEntity.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.io.IOException; - import javax.annotation.Nullable; -+import java.io.IOException; - - public class PacketPlayInUseEntity implements Packet { - -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java b/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java -index a22f0cccecc85b4e4fe4603bcfa213f15c23db69..2400beb4128c9de380bf55476731359f83557c1b 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java -+++ b/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import io.netty.channel.ChannelFuture; // Paper -+import io.netty.channel.ChannelFuture; - - import java.io.IOException; - import java.util.Iterator; -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -index e0ee524093e63e902cc7aea3c82e226438d4deb6..5309ef7abbd243e1fa753139f175e9824d11802c 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -@@ -1,14 +1,15 @@ - package net.minecraft.server; - --import com.destroystokyo.paper.antixray.ChunkPacketInfo; // Paper - Anti-Xray - Add chunk packet info -+import com.destroystokyo.paper.antixray.ChunkPacketInfo; - import com.google.common.collect.Lists; - import io.netty.buffer.ByteBuf; - import io.netty.buffer.Unpooled; -+ -+import javax.annotation.Nullable; - import java.io.IOException; - import java.util.Iterator; - import java.util.List; - import java.util.Map.Entry; --import javax.annotation.Nullable; - - public class PacketPlayOutMapChunk implements Packet { - -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java b/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java -index 99dc43159f240135957aee35f6129f19419c6c25..27cf029e0704d59481621543fb1283767f166e2d 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java -+++ b/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ - import java.io.IOException; - import java.util.Collection; - import java.util.Iterator; -diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java -index 535056c64ef866e645b1bfbd149b50c53cb64485..4edf99eb64be454eae25da128a81795038ca8f97 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java -+++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.io.IOException; - import javax.annotation.Nullable; -+import java.io.IOException; - - public class PacketPlayOutTitle implements Packet { - -diff --git a/src/main/java/net/minecraft/server/PacketSplitter.java b/src/main/java/net/minecraft/server/PacketSplitter.java -index 2aaa8770edfd8acc6861c23176e405863858b275..660f3f69b7c982ac4b5859844cc6d72a49d8f375 100644 ---- a/src/main/java/net/minecraft/server/PacketSplitter.java -+++ b/src/main/java/net/minecraft/server/PacketSplitter.java -@@ -5,6 +5,7 @@ import io.netty.buffer.Unpooled; - import io.netty.channel.ChannelHandlerContext; - import io.netty.handler.codec.ByteToMessageDecoder; - import io.netty.handler.codec.CorruptedFrameException; -+ - import java.util.List; - - public class PacketSplitter extends ByteToMessageDecoder { -diff --git a/src/main/java/net/minecraft/server/PacketStatusListener.java b/src/main/java/net/minecraft/server/PacketStatusListener.java -index b98d094422f09ddffe09bac7cf1a9c7e92ae5aa6..ce17341ee7a4c26d48a2cc49a2cf412505185c91 100644 ---- a/src/main/java/net/minecraft/server/PacketStatusListener.java -+++ b/src/main/java/net/minecraft/server/PacketStatusListener.java -@@ -1,12 +1,6 @@ - package net.minecraft.server; - - // CraftBukkit start --import com.mojang.authlib.GameProfile; --import java.net.InetSocketAddress; --import java.util.Iterator; --import org.bukkit.craftbukkit.util.CraftChatMessage; --import org.bukkit.craftbukkit.util.CraftIconCache; --import org.bukkit.entity.Player; - // CraftBukkit end - - public class PacketStatusListener implements PacketStatusInListener { -diff --git a/src/main/java/net/minecraft/server/PairedQueue.java b/src/main/java/net/minecraft/server/PairedQueue.java -index 2369afb4f37863c5c59456e46c48ad0d32f9eeb7..d18359567b46e4bbd807ad8eeadb8bfeff533bf8 100644 ---- a/src/main/java/net/minecraft/server/PairedQueue.java -+++ b/src/main/java/net/minecraft/server/PairedQueue.java -@@ -1,13 +1,10 @@ - package net.minecraft.server; - - import com.google.common.collect.Queues; --import java.util.Collection; --import java.util.Iterator; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Queue; --import java.util.stream.Collectors; --import java.util.stream.IntStream; --import javax.annotation.Nullable; - - public interface PairedQueue { - -diff --git a/src/main/java/net/minecraft/server/PathEntity.java b/src/main/java/net/minecraft/server/PathEntity.java -index e86e09be4990bc6b7a36ab1ad74dba7022f49428..1660f6a0eeb061ce426b89e2d11f05c882abe582 100644 ---- a/src/main/java/net/minecraft/server/PathEntity.java -+++ b/src/main/java/net/minecraft/server/PathEntity.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.List; - import javax.annotation.Nullable; -+import java.util.List; - - public class PathEntity { - -diff --git a/src/main/java/net/minecraft/server/Pathfinder.java b/src/main/java/net/minecraft/server/Pathfinder.java -index 9b2d23ef1c9369cf15f9f12161c28199fbf4f373..4dca3cd3447ed58f597db33f40da5a2df3c3cd82 100644 ---- a/src/main/java/net/minecraft/server/Pathfinder.java -+++ b/src/main/java/net/minecraft/server/Pathfinder.java -@@ -2,16 +2,12 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableSet; - import com.google.common.collect.Lists; --import com.google.common.collect.Sets; -+ -+import javax.annotation.Nullable; - import java.util.Comparator; --import java.util.Iterator; - import java.util.List; - import java.util.Map; --import java.util.Optional; - import java.util.Set; --import java.util.function.Function; --import java.util.stream.Collectors; --import javax.annotation.Nullable; - - public class Pathfinder { - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java -index 8f26cb20b8c63f2809838c97528cef62ec39bcdb..dc62b66a5bb31002b897d9db4633e7c2d34cfa01 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoal.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoal.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - --import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector -+import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; -+ - import java.util.EnumSet; - - public abstract class PathfinderGoal { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java b/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java -index b7e1e7e35a33cf6a476b11284ebdb0cdda524af2..e7d10a87dc83de567bba0545570c8a7dd96bfb77 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java -@@ -1,10 +1,9 @@ - package net.minecraft.server; - -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ - import java.util.EnumSet; - import java.util.function.Predicate; -- --// CraftBukkit start --import org.bukkit.craftbukkit.event.CraftEventFactory; - // CraftBukkit end - - public class PathfinderGoalEatTile extends PathfinderGoal { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java b/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java -index 514dbf29aa74ac896a183cab84c233f26c41f813..2eb4eab78cf7f8205092982ab1278188085ecd80 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - --import java.util.EnumSet; --// CraftBukkit start - import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftEntity; - import org.bukkit.event.entity.EntityTeleportEvent; -+ -+import java.util.EnumSet; - // CraftBukkit end - - public class PathfinderGoalFollowOwner extends PathfinderGoal { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java -index c0721c7fe479c8f753b8f48197a70dcd1ecfef5f..dee689e4c792d94d5f313aa44e0568648a8fe949 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java -@@ -1,8 +1,8 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.EnumSet; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class PathfinderGoalNearestAttackableTarget extends PathfinderGoalTarget { - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalPanic.java b/src/main/java/net/minecraft/server/PathfinderGoalPanic.java -index a55a8ef6e110821c6c7c28a28d9e053e5e84adfa..30eab63fc900b4c92458d033cd26c9bf01575411 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalPanic.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalPanic.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.EnumSet; - import javax.annotation.Nullable; -+import java.util.EnumSet; - - public class PathfinderGoalPanic extends PathfinderGoal { - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java b/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -index 29efbdd2ca77833e6be59e5b5b4c38633e43588d..b27679e5993177d550a7a2727fc3bcda5afe15b5 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - --import java.util.Random; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.event.entity.EntityInteractEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Random; - // CraftBukkit end - - public class PathfinderGoalRemoveBlock extends PathfinderGoalGotoTarget { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -index 0ad38a7b426b8b1e0ae8a98a2cb5b28878ae1249..d1c00b0535128ae234c3aa8139614185f79683fb 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java -@@ -1,7 +1,6 @@ - package net.minecraft.server; - - import com.destroystokyo.paper.util.set.OptimizedSmallEnumSet; // Paper - remove streams from pathfindergoalselector --import com.google.common.collect.Sets; - import java.util.EnumMap; - import java.util.EnumSet; - import java.util.Iterator; // Paper - remove streams from pathfindergoalselector -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java -index 29822c19496e3927eb9a061869872f4fee525254..6d1b9348e95ce154a1cae31e7f67a6213a1d3803 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java -@@ -1,7 +1,8 @@ - package net.minecraft.server; - -+import org.bukkit.event.entity.EntityTargetEvent; -+ - import javax.annotation.Nullable; --import org.bukkit.event.entity.EntityTargetEvent; // CraftBukkit - - public abstract class PathfinderGoalTarget extends PathfinderGoal { - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTempt.java b/src/main/java/net/minecraft/server/PathfinderGoalTempt.java -index b115f40b0b11e89184960a5cce5b8295030469e9..c6feca04953a946aff4936bfd85b0e45c612a01c 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalTempt.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalTempt.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - --import java.util.EnumSet; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftLivingEntity; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.entity.EntityTargetEvent; - import org.bukkit.event.entity.EntityTargetLivingEntityEvent; -+ -+import java.util.EnumSet; - // CraftBukkit end - - public class PathfinderGoalTempt extends PathfinderGoal { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -index 112d8bab65bf41263a477c5faa717687fe8a2bc9..85e63bc6f46637e8a4c0fec77a61f9cadef815a5 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.EnumSet; - import javax.annotation.Nullable; -+import java.util.EnumSet; - - public class PathfinderGoalWrapped extends PathfinderGoal { - -diff --git a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java b/src/main/java/net/minecraft/server/PathfinderTargetCondition.java -index af09e1926fb6f3b780a5063b2e2e00da4cdc8ce6..c855ca15a6b2e463de48a86738d5182d28b32c20 100644 ---- a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java -+++ b/src/main/java/net/minecraft/server/PathfinderTargetCondition.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.function.Predicate; - import javax.annotation.Nullable; -+import java.util.function.Predicate; - - public class PathfinderTargetCondition { - -diff --git a/src/main/java/net/minecraft/server/PersistentRaid.java b/src/main/java/net/minecraft/server/PersistentRaid.java -index 64e5c6d1e4273dd5dc9fffe70f4f57d73d72f659..56f766ebddb0727b1edab918bc34151155bfa7a0 100644 ---- a/src/main/java/net/minecraft/server/PersistentRaid.java -+++ b/src/main/java/net/minecraft/server/PersistentRaid.java -@@ -1,11 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.Maps; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Map; - import java.util.stream.Collectors; --import javax.annotation.Nullable; - - public class PersistentRaid extends PersistentBase { - -diff --git a/src/main/java/net/minecraft/server/PersistentScoreboard.java b/src/main/java/net/minecraft/server/PersistentScoreboard.java -index a08c54da92d87fcd24ef8e2556901d3b1977c5ea..2b705fbcc68741237ad158888b1f27bcb5751b38 100644 ---- a/src/main/java/net/minecraft/server/PersistentScoreboard.java -+++ b/src/main/java/net/minecraft/server/PersistentScoreboard.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - --import java.util.Collection; --import java.util.Iterator; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import java.util.Collection; -+import java.util.Iterator; -+ - public class PersistentScoreboard extends PersistentBase { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/PersistentStructureLegacy.java b/src/main/java/net/minecraft/server/PersistentStructureLegacy.java -index 75f2da314b348ccf807975d9a7faeb71934a6e3b..a263559c2136743a4549ae630fc8a50b445abe45 100644 ---- a/src/main/java/net/minecraft/server/PersistentStructureLegacy.java -+++ b/src/main/java/net/minecraft/server/PersistentStructureLegacy.java -@@ -5,12 +5,13 @@ import com.google.common.collect.Maps; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.longs.LongArrayList; -+ -+import javax.annotation.Nullable; - import java.io.IOException; - import java.util.Iterator; - import java.util.List; - import java.util.Locale; - import java.util.Map; --import javax.annotation.Nullable; - - public class PersistentStructureLegacy { - -diff --git a/src/main/java/net/minecraft/server/PiglinAI.java b/src/main/java/net/minecraft/server/PiglinAI.java -index 313c383920213cc1eb5525dab4a1665a087abf6f..e219d23643fb01227fca8b83011525b23cbf4600 100644 ---- a/src/main/java/net/minecraft/server/PiglinAI.java -+++ b/src/main/java/net/minecraft/server/PiglinAI.java -@@ -3,12 +3,8 @@ package net.minecraft.server; - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableSet; - import com.mojang.datafixers.util.Pair; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Optional; --import java.util.Random; --import java.util.Set; -+ -+import java.util.*; - - public class PiglinAI { - -diff --git a/src/main/java/net/minecraft/server/PistonExtendsChecker.java b/src/main/java/net/minecraft/server/PistonExtendsChecker.java -index 4fd1a98e8309bec2ef270ac70c4d79d143002b86..194a0a7bf3d48909ffe9322f0ad6b4e84cddd956 100644 ---- a/src/main/java/net/minecraft/server/PistonExtendsChecker.java -+++ b/src/main/java/net/minecraft/server/PistonExtendsChecker.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ - import java.util.List; - - public class PistonExtendsChecker { -diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index a90c97603e5e9fa5639f6ff1f8462b3323ecc428..b0997aa1b6d03f98042a8293eb7be702ba559f4a 100644 ---- a/src/main/java/net/minecraft/server/PlayerChunk.java -+++ b/src/main/java/net/minecraft/server/PlayerChunk.java -@@ -1,6 +1,8 @@ - package net.minecraft.server; - - import com.mojang.datafixers.util.Either; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Map; - import java.util.Optional; -@@ -9,7 +11,6 @@ import java.util.concurrent.atomic.AtomicReferenceArray; - import java.util.function.IntConsumer; - import java.util.function.IntSupplier; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class PlayerChunk { - -diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 74998ea20176c2753a0ebb03833f13f3f58a186a..af489b49985c90178d5231ea46869152e89614e2 100644 ---- a/src/main/java/net/minecraft/server/PlayerChunkMap.java -+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java -@@ -1,26 +1,25 @@ - package net.minecraft.server; - --import co.aikar.timings.Timing; // Paper --import com.destroystokyo.paper.PaperWorldConfig; // Paper -+import co.aikar.timings.Timing; -+import com.destroystokyo.paper.PaperWorldConfig; - import com.google.common.collect.ImmutableList; - import com.google.common.collect.Iterables; --import com.google.common.collect.ComparisonChain; // Paper - import com.google.common.collect.Lists; --import com.google.common.collect.Queues; --import com.google.common.collect.Sets; - import com.mojang.datafixers.DataFixer; - import com.mojang.datafixers.util.Either; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; --import it.unimi.dsi.fastutil.longs.Long2ByteMap; --import it.unimi.dsi.fastutil.longs.Long2ByteOpenHashMap; --import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; -+import it.unimi.dsi.fastutil.longs.*; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap.Entry; --import it.unimi.dsi.fastutil.longs.LongIterator; --import it.unimi.dsi.fastutil.longs.LongOpenHashSet; --import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.objects.ObjectBidirectionalIterator; - import it.unimi.dsi.fastutil.objects.ObjectIterator; -+import org.apache.commons.lang3.mutable.MutableBoolean; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+import org.bukkit.entity.Player; -+import org.spigotmc.AsyncCatcher; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.io.IOException; - import java.io.Writer; -@@ -30,19 +29,8 @@ import java.util.concurrent.CompletableFuture; - import java.util.concurrent.CompletionException; - import java.util.concurrent.Executor; - import java.util.concurrent.atomic.AtomicInteger; --import java.util.function.BooleanSupplier; --import java.util.function.Consumer; --import java.util.function.IntFunction; --import java.util.function.IntSupplier; --import java.util.function.Supplier; --import java.util.stream.Collectors; -+import java.util.function.*; - import java.util.stream.Stream; --import javax.annotation.Nullable; --import org.apache.commons.lang3.mutable.MutableBoolean; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; --import org.bukkit.entity.Player; // CraftBukkit --import org.spigotmc.AsyncCatcher; - - public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - -diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 85bf9f9e5b4e75f17b8affdaac48d6e3183ed7de..ad56cb830d81c5d02bd338c004a788891becb095 100644 ---- a/src/main/java/net/minecraft/server/PlayerConnection.java -+++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -1,5 +1,7 @@ - package net.minecraft.server; - -+import co.aikar.timings.MinecraftTimings; -+import com.destroystokyo.paper.event.player.PlayerJumpEvent; - import com.google.common.primitives.Doubles; - import com.google.common.primitives.Floats; - import com.mojang.brigadier.ParseResults; -@@ -8,20 +10,9 @@ import io.netty.util.concurrent.Future; - import io.netty.util.concurrent.GenericFutureListener; - import it.unimi.dsi.fastutil.ints.Int2ShortMap; - import it.unimi.dsi.fastutil.ints.Int2ShortOpenHashMap; --import java.util.Collections; --import java.util.Iterator; --import java.util.Optional; --import java.util.Set; --import java.util.stream.Stream; --import javax.annotation.Nullable; --import org.apache.commons.lang3.StringEscapeUtils; - import org.apache.commons.lang3.StringUtils; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.util.concurrent.ExecutionException; --import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; - import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.craftbukkit.event.CraftEventFactory; -@@ -34,34 +25,22 @@ import org.bukkit.entity.Player; - import org.bukkit.event.Event; - import org.bukkit.event.block.Action; - import org.bukkit.event.block.SignChangeEvent; --import org.bukkit.event.inventory.ClickType; --import org.bukkit.event.inventory.CraftItemEvent; --import org.bukkit.event.inventory.InventoryAction; --import org.bukkit.event.inventory.InventoryClickEvent; --import org.bukkit.event.inventory.InventoryCreativeEvent; -+import org.bukkit.event.inventory.*; - import org.bukkit.event.inventory.InventoryType.SlotType; --import org.bukkit.event.player.AsyncPlayerChatEvent; --import org.bukkit.event.player.PlayerAnimationEvent; --import org.bukkit.event.player.PlayerChatEvent; --import org.bukkit.event.player.PlayerCommandPreprocessEvent; --import org.bukkit.event.player.PlayerInteractAtEntityEvent; --import org.bukkit.event.player.PlayerInteractEntityEvent; --import org.bukkit.event.player.PlayerItemHeldEvent; --import org.bukkit.event.player.PlayerKickEvent; --import org.bukkit.event.player.PlayerMoveEvent; --import org.bukkit.event.player.PlayerResourcePackStatusEvent; --import org.bukkit.event.player.PlayerSwapHandItemsEvent; --import org.bukkit.event.player.PlayerTeleportEvent; --import org.bukkit.event.player.PlayerToggleFlightEvent; --import org.bukkit.event.player.PlayerToggleSneakEvent; --import org.bukkit.event.player.PlayerToggleSprintEvent; -+import org.bukkit.event.player.*; - import org.bukkit.inventory.CraftingInventory; - import org.bukkit.inventory.EquipmentSlot; - import org.bukkit.inventory.InventoryView; - import org.bukkit.util.NumberConversions; --import com.destroystokyo.paper.event.player.IllegalPacketEvent; // Paper --import com.destroystokyo.paper.event.player.PlayerJumpEvent; // Paper --import co.aikar.timings.MinecraftTimings; // Paper -+ -+import javax.annotation.Nullable; -+import java.util.Collections; -+import java.util.Iterator; -+import java.util.Optional; -+import java.util.Set; -+import java.util.concurrent.ExecutionException; -+import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; -+import java.util.stream.Stream; - // CraftBukkit end - - public class PlayerConnection implements PacketListenerPlayIn { -diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -index e698dd22607b2b2c4068c5bfb03ac53eb5bac080..a0658cda96d3a2796fb940cd947aa708aaae24b7 100644 ---- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -+++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import co.aikar.timings.MinecraftTimings; -+import co.aikar.timings.Timing; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --import co.aikar.timings.MinecraftTimings; // Paper --import co.aikar.timings.Timing; // Paper - - public class PlayerConnectionUtils { - -diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java -index f5de49e3e384b1d2926197e72992ace51d2967b6..52b465ae49c602d8b52878c12d1aab37c003259a 100644 ---- a/src/main/java/net/minecraft/server/PlayerInteractManager.java -+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java -@@ -1,16 +1,16 @@ - package net.minecraft.server; - --import java.util.Objects; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start --import java.util.ArrayList; - import org.bukkit.craftbukkit.block.CraftBlock; --import org.bukkit.event.block.BlockBreakEvent; - import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.event.Event; - import org.bukkit.event.block.Action; -+import org.bukkit.event.block.BlockBreakEvent; - import org.bukkit.event.player.PlayerInteractEvent; -+ -+import java.util.ArrayList; -+import java.util.Objects; - // CraftBukkit end - - public class PlayerInteractManager { -diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java -index 3b65711b91c51ac7b4b5b2b0144ffd279fe60eeb..b7fe6425a6c830b2b63710b3c4c3c6e70df5268f 100644 ---- a/src/main/java/net/minecraft/server/PlayerInventory.java -+++ b/src/main/java/net/minecraft/server/PlayerInventory.java -@@ -1,15 +1,14 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableList; --import java.util.Iterator; --import java.util.List; --import java.util.function.Predicate; -- --// CraftBukkit start --import java.util.ArrayList; - import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import java.util.ArrayList; -+import java.util.Iterator; -+import java.util.List; -+import java.util.function.Predicate; - // CraftBukkit end - - public class PlayerInventory implements IInventory, INamableTileEntity { -diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 60fa4b84c3701fc29d07215d005e5b7b45b5dfbb..c3b833c8a0c9a9746fdd6bed9ac21a0060c79dda 100644 ---- a/src/main/java/net/minecraft/server/PlayerList.java -+++ b/src/main/java/net/minecraft/server/PlayerList.java -@@ -1,6 +1,8 @@ - package net.minecraft.server; - - import co.aikar.timings.MinecraftTimings; -+import com.google.common.base.Predicate; -+import com.google.common.collect.Iterables; - import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; -@@ -22,26 +24,13 @@ import java.util.concurrent.CompletableFuture; - import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import com.google.common.base.Predicate; --import com.google.common.collect.Iterables; -- --import org.bukkit.craftbukkit.CraftServer; --import org.bukkit.craftbukkit.CraftWorld; -- - import org.bukkit.Bukkit; - import org.bukkit.Location; -+import org.bukkit.craftbukkit.CraftServer; -+import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.craftbukkit.util.CraftChatMessage; - import org.bukkit.entity.Player; --import org.bukkit.event.player.PlayerChangedWorldEvent; --import org.bukkit.event.player.PlayerPortalEvent; --import org.bukkit.event.player.PlayerJoinEvent; --import org.bukkit.event.player.PlayerLoginEvent; --import org.bukkit.event.player.PlayerQuitEvent; --import org.bukkit.event.player.PlayerRespawnEvent; --import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; --import org.bukkit.util.Vector; -+import org.bukkit.event.player.*; - import org.spigotmc.event.player.PlayerSpawnLocationEvent; - // CraftBukkit end - -diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java -index d98cef12e1ad78026bc6cdeeedcb3b724fca8b0b..579f9cb1b0ae00dd561f974bf68b9977ebcc358e 100644 ---- a/src/main/java/net/minecraft/server/PortalTravelAgent.java -+++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java -@@ -1,11 +1,11 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Comparator; - import java.util.List; - import java.util.Optional; - import java.util.Random; - import java.util.stream.Collectors; --import javax.annotation.Nullable; - - public class PortalTravelAgent { - -diff --git a/src/main/java/net/minecraft/server/PotionUtil.java b/src/main/java/net/minecraft/server/PotionUtil.java -index bf4172be525d5bdd7c152117afce8bf00106a139..a448fa6418e6e56df70dc53fec2e5582def5593e 100644 ---- a/src/main/java/net/minecraft/server/PotionUtil.java -+++ b/src/main/java/net/minecraft/server/PotionUtil.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.Collection; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; - - public class PotionUtil { - -diff --git a/src/main/java/net/minecraft/server/PropertyManager.java b/src/main/java/net/minecraft/server/PropertyManager.java -index 729455ce53944a9afaaa3e30052ab44f2a87cad9..cea260df46d9300d95182d72cec2a1ea15ff8625 100644 ---- a/src/main/java/net/minecraft/server/PropertyManager.java -+++ b/src/main/java/net/minecraft/server/PropertyManager.java -@@ -1,6 +1,11 @@ - package net.minecraft.server; - - import com.google.common.base.MoreObjects; -+import joptsimple.OptionSet; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.IOException; - import java.io.InputStream; - import java.io.OutputStream; -@@ -11,11 +16,6 @@ import java.util.function.Function; - import java.util.function.IntFunction; - import java.util.function.Supplier; - import java.util.function.UnaryOperator; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -- --import joptsimple.OptionSet; // CraftBukkit - - public abstract class PropertyManager> { - -diff --git a/src/main/java/net/minecraft/server/ProtoChunk.java b/src/main/java/net/minecraft/server/ProtoChunk.java -index 6ac9f437e853957e19be077bb2c78eef0dbbbf01..5e34bb8a0619ca3ac170db5e94fb9597ee271e46 100644 ---- a/src/main/java/net/minecraft/server/ProtoChunk.java -+++ b/src/main/java/net/minecraft/server/ProtoChunk.java -@@ -7,20 +7,14 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet; - import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap; - import it.unimi.dsi.fastutil.shorts.ShortList; --import java.util.BitSet; --import java.util.Collection; --import java.util.Collections; --import java.util.EnumSet; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Map.Entry; --import java.util.Set; --import java.util.stream.Stream; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.Map.Entry; -+import java.util.stream.Stream; -+ - public class ProtoChunk implements IChunkAccess { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/ProtoChunkExtension.java b/src/main/java/net/minecraft/server/ProtoChunkExtension.java -index 9f91c02b444874e690eacb0cfa0c810168c8bb46..c154b40f6ee4fda14debea94ae41ae24c5423633 100644 ---- a/src/main/java/net/minecraft/server/ProtoChunkExtension.java -+++ b/src/main/java/net/minecraft/server/ProtoChunkExtension.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import it.unimi.dsi.fastutil.longs.LongSet; -+ -+import javax.annotation.Nullable; - import java.util.BitSet; - import java.util.Map; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class ProtoChunkExtension extends ProtoChunk { - -diff --git a/src/main/java/net/minecraft/server/Raid.java b/src/main/java/net/minecraft/server/Raid.java -index 54731f78c844e5ae7484949f8621946de8562dea..8fb4513944de5bbdf08443d6c1e20ae2d0548686 100644 ---- a/src/main/java/net/minecraft/server/Raid.java -+++ b/src/main/java/net/minecraft/server/Raid.java -@@ -2,20 +2,11 @@ package net.minecraft.server; - - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; --import java.util.Collection; --import java.util.Comparator; --import java.util.HashSet; --import java.util.Iterator; --import java.util.List; --import java.util.Locale; --import java.util.Map; --import java.util.Optional; --import java.util.Random; --import java.util.Set; --import java.util.UUID; -+ -+import javax.annotation.Nullable; -+import java.util.*; - import java.util.function.Predicate; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public class Raid { - -diff --git a/src/main/java/net/minecraft/server/RandomPositionGenerator.java b/src/main/java/net/minecraft/server/RandomPositionGenerator.java -index dc89c707b10c5544eca06a634a625bce0dd778f0..1584f6e83abd213309ea9dde2f567329eae0f8ed 100644 ---- a/src/main/java/net/minecraft/server/RandomPositionGenerator.java -+++ b/src/main/java/net/minecraft/server/RandomPositionGenerator.java -@@ -1,9 +1,9 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Random; - import java.util.function.Predicate; - import java.util.function.ToDoubleFunction; --import javax.annotation.Nullable; - - public class RandomPositionGenerator { - -diff --git a/src/main/java/net/minecraft/server/RecipeBook.java b/src/main/java/net/minecraft/server/RecipeBook.java -index 0d27b76b66660b1764132bf0f1ca357a136978d7..badd7fb485b7d9783dc721e54bc5284ba5e54c81 100644 ---- a/src/main/java/net/minecraft/server/RecipeBook.java -+++ b/src/main/java/net/minecraft/server/RecipeBook.java -@@ -1,8 +1,9 @@ - package net.minecraft.server; - - import com.google.common.collect.Sets; --import java.util.Set; -+ - import javax.annotation.Nullable; -+import java.util.Set; - - public class RecipeBook { - -diff --git a/src/main/java/net/minecraft/server/RecipeBookServer.java b/src/main/java/net/minecraft/server/RecipeBookServer.java -index 3235b26648d99a71e734e0d6ba2351ca9d9f4f30..03778e6381fe6b9d6264774fae7acba483474947 100644 ---- a/src/main/java/net/minecraft/server/RecipeBookServer.java -+++ b/src/main/java/net/minecraft/server/RecipeBookServer.java -@@ -1,15 +1,12 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Optional; --import java.util.function.Consumer; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import java.util.*; -+import java.util.function.Consumer; - - public class RecipeBookServer extends RecipeBook { - -diff --git a/src/main/java/net/minecraft/server/RecipeItemStack.java b/src/main/java/net/minecraft/server/RecipeItemStack.java -index 31a06a908234f8d98c90ded33ba14c281a40db81..43c86b27b811f1fe5e3578973637f8d9bd20d246 100644 ---- a/src/main/java/net/minecraft/server/RecipeItemStack.java -+++ b/src/main/java/net/minecraft/server/RecipeItemStack.java -@@ -1,20 +1,16 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; --import com.google.gson.JsonArray; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSyntaxException; -+import com.google.gson.*; - import it.unimi.dsi.fastutil.ints.IntArrayList; - import it.unimi.dsi.fastutil.ints.IntComparators; - import it.unimi.dsi.fastutil.ints.IntList; - -+import javax.annotation.Nullable; - import java.util.*; - import java.util.function.Predicate; - import java.util.stream.Stream; - import java.util.stream.StreamSupport; --import javax.annotation.Nullable; - - public final class RecipeItemStack implements Predicate { - -diff --git a/src/main/java/net/minecraft/server/RecipeSmithing.java b/src/main/java/net/minecraft/server/RecipeSmithing.java -index 035e4bfa8713637ca9cca05411d55f2d1b8be188..02c972d6e882fba22fc3f0285244bb848ad443aa 100644 ---- a/src/main/java/net/minecraft/server/RecipeSmithing.java -+++ b/src/main/java/net/minecraft/server/RecipeSmithing.java -@@ -2,7 +2,6 @@ package net.minecraft.server; - - import com.google.gson.JsonElement; - import com.google.gson.JsonObject; --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.inventory.CraftRecipe; - import org.bukkit.craftbukkit.inventory.CraftSmithingRecipe; -diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index 7f2382a89547802bcb38eb5a785c69183827716e..2a36e621898ea4b70184130d57fa7db72aa4486f 100644 ---- a/src/main/java/net/minecraft/server/RegionFile.java -+++ b/src/main/java/net/minecraft/server/RegionFile.java -@@ -1,15 +1,10 @@ - package net.minecraft.server; - --import java.io.BufferedInputStream; --import java.io.BufferedOutputStream; --import java.io.ByteArrayInputStream; --import java.io.ByteArrayOutputStream; --import java.io.DataInputStream; --import java.io.DataOutputStream; --import java.io.File; --import java.io.IOException; --import java.io.InputStream; --import java.io.OutputStream; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.nio.ByteBuffer; - import java.nio.IntBuffer; - import java.nio.channels.FileChannel; -@@ -17,11 +12,7 @@ import java.nio.file.Files; - import java.nio.file.LinkOption; - import java.nio.file.StandardCopyOption; - import java.nio.file.StandardOpenOption; --import java.util.zip.InflaterInputStream; // Paper -- --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -+import java.util.zip.InflaterInputStream; - - public class RegionFile implements AutoCloseable { - -diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index 60b4171a3aa2a8b216aba13738c84ac9d7f3b49e..50822874f484dc35c75195add9a478b23a4f96db 100644 ---- a/src/main/java/net/minecraft/server/RegionFileCache.java -+++ b/src/main/java/net/minecraft/server/RegionFileCache.java -@@ -2,12 +2,9 @@ package net.minecraft.server; - - import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectIterator; --import java.io.DataInputStream; --import java.io.DataOutput; --import java.io.DataOutputStream; --import java.io.File; --import java.io.IOException; -+ - import javax.annotation.Nullable; -+import java.io.*; - - public class RegionFileCache implements AutoCloseable { // Paper - no final - -diff --git a/src/main/java/net/minecraft/server/RegionFileCompression.java b/src/main/java/net/minecraft/server/RegionFileCompression.java -index 29137f495942d810e61fadc33178999ad57fdcc0..a4c1eb60ab7349cb3146018642cc753f403b61d9 100644 ---- a/src/main/java/net/minecraft/server/RegionFileCompression.java -+++ b/src/main/java/net/minecraft/server/RegionFileCompression.java -@@ -2,6 +2,8 @@ package net.minecraft.server; - - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -+ -+import javax.annotation.Nullable; - import java.io.IOException; - import java.io.InputStream; - import java.io.OutputStream; -@@ -9,7 +11,6 @@ import java.util.zip.DeflaterOutputStream; - import java.util.zip.GZIPInputStream; - import java.util.zip.GZIPOutputStream; - import java.util.zip.InflaterInputStream; --import javax.annotation.Nullable; - - public class RegionFileCompression { - -diff --git a/src/main/java/net/minecraft/server/RegionFileSection.java b/src/main/java/net/minecraft/server/RegionFileSection.java -index f99be13169cfbca05cc440e7abef2197036b3d7d..ea2897eadb4c8bdd7fdc6ae55a51a77d545fc847 100644 ---- a/src/main/java/net/minecraft/server/RegionFileSection.java -+++ b/src/main/java/net/minecraft/server/RegionFileSection.java -@@ -3,23 +3,20 @@ package net.minecraft.server; - import com.google.common.collect.ImmutableMap; - import com.google.common.collect.Maps; - import com.mojang.datafixers.DataFixer; --import com.mojang.serialization.Codec; --import com.mojang.serialization.DataResult; --import com.mojang.serialization.Dynamic; --import com.mojang.serialization.DynamicOps; --import com.mojang.serialization.OptionalDynamic; -+import com.mojang.serialization.*; - import it.unimi.dsi.fastutil.longs.Long2ObjectMap; - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; - import it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.io.IOException; - import java.util.Map; - import java.util.Optional; - import java.util.function.BooleanSupplier; - import java.util.function.Function; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class RegionFileSection extends RegionFileCache implements AutoCloseable { // Paper - nuke IOWorker - -diff --git a/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java b/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java -index 478d252953c65792df9f0068a4c1afd1985151ab..43180bb5b7fb6de1455bbe11b25925e28bd04826 100644 ---- a/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java -+++ b/src/main/java/net/minecraft/server/RegionLimitedWorldAccess.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.List; - import java.util.Random; - import java.util.function.Predicate; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class RegionLimitedWorldAccess implements GeneratorAccessSeed { - -diff --git a/src/main/java/net/minecraft/server/RegistryBlockID.java b/src/main/java/net/minecraft/server/RegistryBlockID.java -index 60948afa4ead71010dc27c7cef3e5acdb0ba005a..636709f303401e528a539837917dac959d7e383b 100644 ---- a/src/main/java/net/minecraft/server/RegistryBlockID.java -+++ b/src/main/java/net/minecraft/server/RegistryBlockID.java -@@ -3,10 +3,11 @@ package net.minecraft.server; - import com.google.common.base.Predicates; - import com.google.common.collect.Iterators; - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.IdentityHashMap; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; - - public class RegistryBlockID implements Registry { - -diff --git a/src/main/java/net/minecraft/server/RegistryID.java b/src/main/java/net/minecraft/server/RegistryID.java -index f9692408a1d177ba4668261070d7610ecfb53a7b..7cf11307b18d66186bc592568f2ea0833a57faab 100644 ---- a/src/main/java/net/minecraft/server/RegistryID.java -+++ b/src/main/java/net/minecraft/server/RegistryID.java -@@ -2,9 +2,10 @@ package net.minecraft.server; - - import com.google.common.base.Predicates; - import com.google.common.collect.Iterators; -+ -+import javax.annotation.Nullable; - import java.util.Arrays; - import java.util.Iterator; --import javax.annotation.Nullable; - - public class RegistryID implements Registry { - -diff --git a/src/main/java/net/minecraft/server/RegistryMaterials.java b/src/main/java/net/minecraft/server/RegistryMaterials.java -index ba36ab19dbb13c33c6b0cdc30b1109d01c84b1da..075e250f451f64b91e748d42fdf4ceed91bf4667 100644 ---- a/src/main/java/net/minecraft/server/RegistryMaterials.java -+++ b/src/main/java/net/minecraft/server/RegistryMaterials.java -@@ -1,27 +1,19 @@ - package net.minecraft.server; - --import com.google.common.collect.BiMap; --import com.google.common.collect.HashBiMap; --import com.google.common.collect.ImmutableList; -+import com.google.common.collect.*; - import com.google.common.collect.ImmutableList.Builder; --import com.google.common.collect.ImmutableMap; --import com.google.common.collect.Sets; - import com.mojang.datafixers.util.Pair; - import com.mojang.serialization.Codec; - import com.mojang.serialization.Lifecycle; - import com.mojang.serialization.MapCodec; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.Map.Entry; --import java.util.Optional; --import java.util.Random; --import java.util.Set; --import javax.annotation.Nullable; - import org.apache.commons.lang3.Validate; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.Map.Entry; -+ - public class RegistryMaterials extends IRegistryWritable { - - protected static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/RemoteControlListener.java b/src/main/java/net/minecraft/server/RemoteControlListener.java -index e550b8428245ef2bc0265ae6267bb7e1cabec35c..8d9b6be9088a86966d36c14b2d4163b3b2c23867 100644 ---- a/src/main/java/net/minecraft/server/RemoteControlListener.java -+++ b/src/main/java/net/minecraft/server/RemoteControlListener.java -@@ -1,6 +1,9 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.io.IOException; - import java.net.InetAddress; - import java.net.ServerSocket; -@@ -8,8 +11,6 @@ import java.net.Socket; - import java.net.SocketTimeoutException; - import java.util.Iterator; - import java.util.List; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class RemoteControlListener extends RemoteConnectionThread { - -diff --git a/src/main/java/net/minecraft/server/Reputation.java b/src/main/java/net/minecraft/server/Reputation.java -index dffac0dc85fe7d093c58663f91ad687a6be50ad5..8c155b4a649b783996161991f04f7a130d354666 100644 ---- a/src/main/java/net/minecraft/server/Reputation.java -+++ b/src/main/java/net/minecraft/server/Reputation.java -@@ -10,17 +10,9 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; - import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; - import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectIterator; --import java.util.Arrays; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Random; --import java.util.Set; --import java.util.UUID; -+ -+import java.util.*; - import java.util.function.Predicate; --import java.util.stream.Collectors; - import java.util.stream.Stream; - - public class Reputation { -diff --git a/src/main/java/net/minecraft/server/ReputationType.java b/src/main/java/net/minecraft/server/ReputationType.java -index 73ad45295efbdfb5bd37a7743e17f8f210d3efbf..35b9248af248f0a37013d9f938c29ca779903c23 100644 ---- a/src/main/java/net/minecraft/server/ReputationType.java -+++ b/src/main/java/net/minecraft/server/ReputationType.java -@@ -1,10 +1,11 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableMap; -+ -+import javax.annotation.Nullable; - import java.util.Map; - import java.util.function.Function; - import java.util.stream.Stream; --import javax.annotation.Nullable; - - public enum ReputationType { - -diff --git a/src/main/java/net/minecraft/server/ScoreboardServer.java b/src/main/java/net/minecraft/server/ScoreboardServer.java -index 929397a4ca8af8aba24c36bd6fc8ed0071982b64..cf15f7038ab4c392623b39ef676d3a24227f6e51 100644 ---- a/src/main/java/net/minecraft/server/ScoreboardServer.java -+++ b/src/main/java/net/minecraft/server/ScoreboardServer.java -@@ -2,11 +2,12 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.google.common.collect.Sets; -+ -+import javax.annotation.Nullable; - import java.util.Arrays; - import java.util.Iterator; - import java.util.List; - import java.util.Set; --import javax.annotation.Nullable; - - public class ScoreboardServer extends Scoreboard { - -diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java -index 0438126662e7c635d9a4f7b8c54fe7c50403ffe8..d8efb35f1c22c1ed495461d73f2ec124ce542e24 100644 ---- a/src/main/java/net/minecraft/server/ServerConnection.java -+++ b/src/main/java/net/minecraft/server/ServerConnection.java -@@ -3,28 +3,23 @@ package net.minecraft.server; - import com.google.common.collect.Lists; - import com.google.common.util.concurrent.ThreadFactoryBuilder; - import io.netty.bootstrap.ServerBootstrap; --import io.netty.channel.Channel; --import io.netty.channel.ChannelException; --import io.netty.channel.ChannelFuture; --import io.netty.channel.ChannelInitializer; --import io.netty.channel.ChannelOption; --import io.netty.channel.EventLoopGroup; -+import io.netty.channel.*; - import io.netty.channel.epoll.Epoll; - import io.netty.channel.epoll.EpollEventLoopGroup; - import io.netty.channel.epoll.EpollServerSocketChannel; - import io.netty.channel.nio.NioEventLoopGroup; --import io.netty.channel.socket.ServerSocketChannel; - import io.netty.channel.socket.nio.NioServerSocketChannel; --import io.netty.handler.flush.FlushConsolidationHandler; // Paper -+import io.netty.handler.flush.FlushConsolidationHandler; - import io.netty.handler.timeout.ReadTimeoutHandler; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.IOException; - import java.net.InetAddress; - import java.util.Collections; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class ServerConnection { - -diff --git a/src/main/java/net/minecraft/server/ServerGUI.java b/src/main/java/net/minecraft/server/ServerGUI.java -index 76ed8e87d3213080109205489c786d6bdbe08908..fe87c689d774666c0d39af80ca54aba259e954e6 100644 ---- a/src/main/java/net/minecraft/server/ServerGUI.java -+++ b/src/main/java/net/minecraft/server/ServerGUI.java -@@ -2,33 +2,22 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.mojang.util.QueueLogAppender; --import java.awt.BorderLayout; --import java.awt.Component; --import java.awt.Dimension; --import java.awt.Font; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.swing.*; -+import javax.swing.border.EtchedBorder; -+import javax.swing.border.TitledBorder; -+import javax.swing.text.AttributeSet; -+import javax.swing.text.BadLocationException; -+import javax.swing.text.Document; -+import java.awt.*; - import java.awt.event.FocusAdapter; - import java.awt.event.FocusEvent; - import java.awt.event.WindowAdapter; - import java.awt.event.WindowEvent; - import java.util.Collection; - import java.util.concurrent.atomic.AtomicBoolean; --import javax.swing.JComponent; --import javax.swing.JFrame; --import javax.swing.JList; --import javax.swing.JPanel; --import javax.swing.JScrollBar; --import javax.swing.JScrollPane; --import javax.swing.JTextArea; --import javax.swing.JTextField; --import javax.swing.SwingUtilities; --import javax.swing.UIManager; --import javax.swing.border.EtchedBorder; --import javax.swing.border.TitledBorder; --import javax.swing.text.AttributeSet; --import javax.swing.text.BadLocationException; --import javax.swing.text.Document; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class ServerGUI extends JComponent { - -diff --git a/src/main/java/net/minecraft/server/ServerPing.java b/src/main/java/net/minecraft/server/ServerPing.java -index ea52e89bd965afbd74f15b0e2974657319c28e4a..e5b69c561f3ff2e76351f784d970f77d381f284d 100644 ---- a/src/main/java/net/minecraft/server/ServerPing.java -+++ b/src/main/java/net/minecraft/server/ServerPing.java -@@ -1,14 +1,8 @@ - package net.minecraft.server; - --import com.google.gson.JsonArray; --import com.google.gson.JsonDeserializationContext; --import com.google.gson.JsonDeserializer; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSerializationContext; --import com.google.gson.JsonSerializer; -+import com.google.gson.*; - import com.mojang.authlib.GameProfile; -+ - import java.lang.reflect.Type; - import java.util.UUID; - -diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java -index a734cb47df9cffaee52a5c798bb3324212a004ba..eaf788301779d2d4ad57d849b0864d5af82c054f 100644 ---- a/src/main/java/net/minecraft/server/ServerStatisticManager.java -+++ b/src/main/java/net/minecraft/server/ServerStatisticManager.java -@@ -12,6 +12,9 @@ import com.mojang.datafixers.DataFixer; - import it.unimi.dsi.fastutil.objects.Object2IntMap; - import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectIterator; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.io.File; - import java.io.IOException; - import java.io.StringReader; -@@ -21,9 +24,6 @@ import java.util.Map.Entry; - import java.util.Optional; - import java.util.Set; - --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; -- - public class ServerStatisticManager extends StatisticManager { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/ShapedRecipes.java b/src/main/java/net/minecraft/server/ShapedRecipes.java -index f9f65b30c66e46b00ec34976bc08380459eef270..05e39e5a9a6d8a89a4087429b7944de74d94dab1 100644 ---- a/src/main/java/net/minecraft/server/ShapedRecipes.java -+++ b/src/main/java/net/minecraft/server/ShapedRecipes.java -@@ -3,23 +3,16 @@ package net.minecraft.server; - import com.google.common.annotations.VisibleForTesting; - import com.google.common.collect.Maps; - import com.google.common.collect.Sets; --import com.google.gson.JsonArray; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSyntaxException; --import java.util.Iterator; --import java.util.Map; --import java.util.Map.Entry; --import java.util.Set; --// CraftBukkit start --import java.util.ArrayList; --import java.util.List; -+import com.google.gson.*; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.inventory.CraftRecipe; - import org.bukkit.craftbukkit.inventory.CraftShapedRecipe; --import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.RecipeChoice; -+ -+import java.util.Iterator; -+import java.util.Map; -+import java.util.Map.Entry; -+import java.util.Set; - // CraftBukkit end - - public class ShapedRecipes implements RecipeCrafting { -diff --git a/src/main/java/net/minecraft/server/ShapelessRecipes.java b/src/main/java/net/minecraft/server/ShapelessRecipes.java -index fb481e65862b4aaa08e2302a517fdd8253d63812..9f14514ef9b16fbf473c1ee04c141cb0dbf7c7e4 100644 ---- a/src/main/java/net/minecraft/server/ShapelessRecipes.java -+++ b/src/main/java/net/minecraft/server/ShapelessRecipes.java -@@ -3,12 +3,11 @@ package net.minecraft.server; - import com.google.gson.JsonArray; - import com.google.gson.JsonObject; - import com.google.gson.JsonParseException; --import it.unimi.dsi.fastutil.ints.IntList; --import java.util.Iterator; --// CraftBukkit start - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.inventory.CraftRecipe; - import org.bukkit.craftbukkit.inventory.CraftShapelessRecipe; -+ -+import java.util.Iterator; - // CraftBukkit end - - public class ShapelessRecipes implements RecipeCrafting { -diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java -index 9af08eed145e527e3bcb4f2f5ab1804f53a4bbb6..600b508846d2e6654c74b61b04b7ef9c6095e856 100644 ---- a/src/main/java/net/minecraft/server/SpawnerCreature.java -+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java -@@ -1,19 +1,16 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.exception.ServerInternalException; - import it.unimi.dsi.fastutil.objects.Object2IntMap; - import it.unimi.dsi.fastutil.objects.Object2IntMaps; - import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -- --import java.util.*; --import java.util.function.Consumer; --import java.util.stream.Stream; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import com.destroystokyo.paper.exception.ServerInternalException; - import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -+ -+import javax.annotation.Nullable; -+import java.util.*; -+import java.util.function.Consumer; - // CraftBukkit end - - public final class SpawnerCreature { -diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java -index 512afdfcbaab630a291d1aa120a90e554855d34f..f9200b8e6f915b401dc35ac88da31948b18aa551 100644 ---- a/src/main/java/net/minecraft/server/StructureGenerator.java -+++ b/src/main/java/net/minecraft/server/StructureGenerator.java -@@ -5,13 +5,14 @@ import com.google.common.collect.HashBiMap; - import com.google.common.collect.ImmutableList; - import com.google.common.collect.Maps; - import com.mojang.serialization.Codec; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.util.Collections; - import java.util.List; - import java.util.Locale; - import java.util.Map; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public abstract class StructureGenerator { - -diff --git a/src/main/java/net/minecraft/server/StructureManager.java b/src/main/java/net/minecraft/server/StructureManager.java -index 6c7804ac0e994ec03b95eda7a24139b65a59db7e..88247c3d65733b7c07d52497740cb8f1b39f8b74 100644 ---- a/src/main/java/net/minecraft/server/StructureManager.java -+++ b/src/main/java/net/minecraft/server/StructureManager.java -@@ -1,8 +1,7 @@ - package net.minecraft.server; - --import com.mojang.datafixers.DataFixUtils; --import java.util.stream.Stream; - import javax.annotation.Nullable; -+import java.util.stream.Stream; - - public class StructureManager { - -diff --git a/src/main/java/net/minecraft/server/StructureSettings.java b/src/main/java/net/minecraft/server/StructureSettings.java -index 7bd9fa4811dae2a43bd8e51ab23766155921e5af..a5be5d4d9ea2429279594e8aa4664a6cf1b33d1c 100644 ---- a/src/main/java/net/minecraft/server/StructureSettings.java -+++ b/src/main/java/net/minecraft/server/StructureSettings.java -@@ -4,10 +4,10 @@ import com.google.common.collect.ImmutableMap; - import com.google.common.collect.Maps; - import com.mojang.serialization.Codec; - import com.mojang.serialization.codecs.RecordCodecBuilder; --import java.util.Iterator; -+ -+import javax.annotation.Nullable; - import java.util.Map; - import java.util.Optional; --import javax.annotation.Nullable; - - public class StructureSettings { - -diff --git a/src/main/java/net/minecraft/server/SystemUtils.java b/src/main/java/net/minecraft/server/SystemUtils.java -index 91ebcea452707f5d64e2b61a76b42fcdbf40fdee..cfaab66b1e7d8dd54340af2956d24de426e0baad 100644 ---- a/src/main/java/net/minecraft/server/SystemUtils.java -+++ b/src/main/java/net/minecraft/server/SystemUtils.java -@@ -8,27 +8,17 @@ import com.mojang.datafixers.DataFixUtils; - import com.mojang.datafixers.types.Type; - import com.mojang.serialization.DataResult; - import it.unimi.dsi.fastutil.Hash.Strategy; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; - import java.io.File; - import java.lang.management.ManagementFactory; - import java.lang.management.RuntimeMXBean; - import java.time.Instant; --import java.util.Arrays; --import java.util.Iterator; --import java.util.List; --import java.util.Locale; --import java.util.Map; -+import java.util.*; - import java.util.Map.Entry; --import java.util.Optional; --import java.util.Random; --import java.util.UUID; --import java.util.concurrent.CompletableFuture; --import java.util.concurrent.CompletionException; --import java.util.concurrent.Executor; --import java.util.concurrent.ExecutorService; --import java.util.concurrent.Executors; --import java.util.concurrent.ForkJoinPool; --import java.util.concurrent.ForkJoinWorkerThread; --import java.util.concurrent.TimeUnit; -+import java.util.concurrent.*; - import java.util.concurrent.atomic.AtomicInteger; - import java.util.function.Consumer; - import java.util.function.LongSupplier; -@@ -37,9 +27,6 @@ import java.util.stream.Collector; - import java.util.stream.Collectors; - import java.util.stream.IntStream; - import java.util.stream.Stream; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class SystemUtils { - -diff --git a/src/main/java/net/minecraft/server/TagRegistry.java b/src/main/java/net/minecraft/server/TagRegistry.java -index c836cd8f7945d9209c71ca7f1afebb43b931da18..0cce20c6115e9ef5eb0bba678951cb8a60013ec9 100644 ---- a/src/main/java/net/minecraft/server/TagRegistry.java -+++ b/src/main/java/net/minecraft/server/TagRegistry.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.google.common.collect.HashMultimap; - import com.google.common.collect.Multimap; -+ - import java.util.Map; - import java.util.concurrent.CompletableFuture; - import java.util.concurrent.Executor; -diff --git a/src/main/java/net/minecraft/server/TagsServer.java b/src/main/java/net/minecraft/server/TagsServer.java -index 1d1c79fc3e72e0b5eca072ec0fd150b4f7f6af86..c312f892153b81a6ba6ffdf6fcffb8ae5257be5a 100644 ---- a/src/main/java/net/minecraft/server/TagsServer.java -+++ b/src/main/java/net/minecraft/server/TagsServer.java -@@ -3,6 +3,7 @@ package net.minecraft.server; - import com.google.common.collect.ImmutableSet; - import com.google.common.collect.ImmutableSet.Builder; - import com.google.common.collect.Maps; -+ - import java.util.Iterator; - import java.util.Map; - import java.util.Map.Entry; -diff --git a/src/main/java/net/minecraft/server/ThreadedMailbox.java b/src/main/java/net/minecraft/server/ThreadedMailbox.java -index cd30215dc098068ae034117c409cb295ebca58c1..68e3314de4c0be6ab54594c0533ed69f37a5e9ce 100644 ---- a/src/main/java/net/minecraft/server/ThreadedMailbox.java -+++ b/src/main/java/net/minecraft/server/ThreadedMailbox.java -@@ -1,12 +1,13 @@ - package net.minecraft.server; - - import it.unimi.dsi.fastutil.ints.Int2BooleanFunction; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.util.concurrent.ConcurrentLinkedQueue; - import java.util.concurrent.Executor; - import java.util.concurrent.RejectedExecutionException; - import java.util.concurrent.atomic.AtomicInteger; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class ThreadedMailbox implements Mailbox, AutoCloseable, Runnable { - -diff --git a/src/main/java/net/minecraft/server/TickListChunk.java b/src/main/java/net/minecraft/server/TickListChunk.java -index 8af1229c3da63a838b0bec1cafde1e41cf5cf551..56bd6ba96ea4331dbe1275840fded27428ea8fc3 100644 ---- a/src/main/java/net/minecraft/server/TickListChunk.java -+++ b/src/main/java/net/minecraft/server/TickListChunk.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ - import java.util.Iterator; - import java.util.List; - import java.util.function.Function; -diff --git a/src/main/java/net/minecraft/server/TickListServer.java b/src/main/java/net/minecraft/server/TickListServer.java -index 721476be8f5cb1753605c1b09ea7ba87daae2725..454beb548ca3eb05e9ae39c8a4fb2ab25137ed69 100644 ---- a/src/main/java/net/minecraft/server/TickListServer.java -+++ b/src/main/java/net/minecraft/server/TickListServer.java -@@ -3,17 +3,12 @@ package net.minecraft.server; - import com.google.common.collect.Lists; - import com.google.common.collect.Queues; - import com.google.common.collect.Sets; --import java.util.Collection; --import java.util.Collections; --import java.util.Iterator; --import java.util.List; --import java.util.Queue; --import java.util.Set; --import java.util.TreeSet; -+ -+import javax.annotation.Nullable; -+import java.util.*; - import java.util.function.Consumer; - import java.util.function.Function; - import java.util.function.Predicate; --import javax.annotation.Nullable; - - public class TickListServer implements TickList { - -diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index e1f1d6e33fd76bd11eb23e78457ba711bf9d5cde..3f9201d2ae8fa86cfb2707bc3c4c9266dcf76dfe 100644 ---- a/src/main/java/net/minecraft/server/TileEntity.java -+++ b/src/main/java/net/minecraft/server/TileEntity.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; -+import co.aikar.timings.MinecraftTimings; -+import co.aikar.timings.Timing; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - import org.apache.logging.log4j.util.Supplier; --// CraftBukkit start - import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; - import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; - import org.bukkit.inventory.InventoryHolder; --// CraftBukkit end --import co.aikar.timings.MinecraftTimings; // Paper --import co.aikar.timings.Timing; // Paper -+ -+import javax.annotation.Nullable; - - public abstract class TileEntity implements KeyedObject, Cloneable { // Paper // Tuinity - -diff --git a/src/main/java/net/minecraft/server/TileEntityBanner.java b/src/main/java/net/minecraft/server/TileEntityBanner.java -index 5397d8a69a0326cf73fe0ee1175d1871cac3769d..94a3f51d35930e86507490aaa942921dd4277cd6 100644 ---- a/src/main/java/net/minecraft/server/TileEntityBanner.java -+++ b/src/main/java/net/minecraft/server/TileEntityBanner.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - - import com.mojang.datafixers.util.Pair; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.function.Supplier; --import javax.annotation.Nullable; - - public class TileEntityBanner extends TileEntity implements INamableTileEntity { - -diff --git a/src/main/java/net/minecraft/server/TileEntityBarrel.java b/src/main/java/net/minecraft/server/TileEntityBarrel.java -index f70faa39a88dfe49c5abfcfb7ce9f80a065c4655..b7f1418aa0f10024159994cc57c67762c6a1bbd2 100644 ---- a/src/main/java/net/minecraft/server/TileEntityBarrel.java -+++ b/src/main/java/net/minecraft/server/TileEntityBarrel.java -@@ -1,16 +1,12 @@ - package net.minecraft.server; - - // CraftBukkit start --import java.util.ArrayList; --import java.util.Arrays; --import java.util.List; --import org.bukkit.Location; --import org.bukkit.block.Barrel; --import org.bukkit.block.Lectern; --import org.bukkit.craftbukkit.block.CraftBlock; -+ - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; --import org.bukkit.inventory.InventoryHolder; -+ -+import java.util.ArrayList; -+import java.util.List; - // CraftBukkit end - - public class TileEntityBarrel extends TileEntityLootable { -diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java -index e109223f3f445f8b7d881853206f7bba9fd05b8b..1c91cc5ce28e936e62a5276ed82ddfebb2f233e6 100644 ---- a/src/main/java/net/minecraft/server/TileEntityBeacon.java -+++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java -@@ -1,21 +1,14 @@ - package net.minecraft.server; - -+import com.destroystokyo.paper.event.block.BeaconEffectEvent; - import com.google.common.collect.Lists; -- --import java.util.*; --import java.util.stream.Collectors; --import javax.annotation.Nullable; -- --// CraftBukkit start --import org.bukkit.craftbukkit.entity.CraftHumanEntity; --import org.bukkit.craftbukkit.potion.CraftPotionUtil; --import org.bukkit.entity.HumanEntity; --import org.bukkit.potion.PotionEffect; --// CraftBukkit end --// Paper start - import org.bukkit.craftbukkit.event.CraftEventFactory; -+import org.bukkit.craftbukkit.potion.CraftPotionUtil; - import org.bukkit.entity.Player; --import com.destroystokyo.paper.event.block.BeaconEffectEvent; -+import org.bukkit.potion.PotionEffect; -+ -+import javax.annotation.Nullable; -+import java.util.*; - // Paper end - - public class TileEntityBeacon extends TileEntity implements ITileInventory, ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityBeehive.java b/src/main/java/net/minecraft/server/TileEntityBeehive.java -index 9da356de6b98e4b9c48ee9ea23647c2e292adea9..ce66802b437b57e0f6a66be3c6d69b36228a4afc 100644 ---- a/src/main/java/net/minecraft/server/TileEntityBeehive.java -+++ b/src/main/java/net/minecraft/server/TileEntityBeehive.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; --import javax.annotation.Nullable; - - public class TileEntityBeehive extends TileEntity implements ITickable { - -diff --git a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java -index e38a494d7b1aa03b5644a54e9ba9139aa43eb759..568bde484cdfe2e2f4a55fe6fd5616263c0e4c37 100644 ---- a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java -+++ b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java -@@ -1,17 +1,16 @@ - package net.minecraft.server; - --import java.util.Arrays; --import java.util.Iterator; --import javax.annotation.Nullable; -- --// CraftBukkit start --import java.util.List; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.entity.HumanEntity; - import org.bukkit.event.inventory.BrewEvent; - import org.bukkit.event.inventory.BrewingStandFuelEvent; - import org.bukkit.inventory.InventoryHolder; -+ -+import javax.annotation.Nullable; -+import java.util.Arrays; -+import java.util.Iterator; -+import java.util.List; - // CraftBukkit end - - public class TileEntityBrewingStand extends TileEntityContainer implements IWorldInventory, ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityCampfire.java b/src/main/java/net/minecraft/server/TileEntityCampfire.java -index 1d002341652f34100c033b84afd958e0e6aace97..d3fb2f4a190742441e88c497ff5f915055b4df19 100644 ---- a/src/main/java/net/minecraft/server/TileEntityCampfire.java -+++ b/src/main/java/net/minecraft/server/TileEntityCampfire.java -@@ -1,12 +1,12 @@ - package net.minecraft.server; - --import java.util.Optional; --import java.util.Random; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.event.block.BlockCookEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Optional; -+import java.util.Random; - // CraftBukkit end - - public class TileEntityCampfire extends TileEntity implements Clearable, ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java -index 0a73895999f6e680cc89746b8573a596d91749d2..2e638f09369f5041222f57cdef2fbb903da9ba88 100644 ---- a/src/main/java/net/minecraft/server/TileEntityChest.java -+++ b/src/main/java/net/minecraft/server/TileEntityChest.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import java.util.Iterator; -+import java.util.List; - // CraftBukkit end - - public class TileEntityChest extends TileEntityLootable { // Paper - Remove ITickable -diff --git a/src/main/java/net/minecraft/server/TileEntityConduit.java b/src/main/java/net/minecraft/server/TileEntityConduit.java -index 7e9470caa568ccd5857b8f5c774b6d2651f6f96c..adbfb11064fe38648588b167e1f9db2130a6a0da 100644 ---- a/src/main/java/net/minecraft/server/TileEntityConduit.java -+++ b/src/main/java/net/minecraft/server/TileEntityConduit.java -@@ -1,14 +1,14 @@ - package net.minecraft.server; - - import com.google.common.collect.Lists; -+import org.bukkit.craftbukkit.block.CraftBlock; -+import org.bukkit.craftbukkit.event.CraftEventFactory; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.List; - import java.util.Random; - import java.util.UUID; --import javax.annotation.Nullable; --// CraftBukkit start --import org.bukkit.craftbukkit.block.CraftBlock; --import org.bukkit.craftbukkit.event.CraftEventFactory; - // CraftBukkit end - - public class TileEntityConduit extends TileEntity implements ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityDispenser.java b/src/main/java/net/minecraft/server/TileEntityDispenser.java -index 6ea4bc31151bce2bdd3376a889029c4b999befac..2fdee45e359d21fd73a1748ec0e534a6260c1588 100644 ---- a/src/main/java/net/minecraft/server/TileEntityDispenser.java -+++ b/src/main/java/net/minecraft/server/TileEntityDispenser.java -@@ -1,11 +1,10 @@ - package net.minecraft.server; - --import java.util.Random; --// CraftBukkit start --import java.util.List; -- - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import java.util.List; -+import java.util.Random; - // CraftBukkit end - - public class TileEntityDispenser extends TileEntityLootable { -diff --git a/src/main/java/net/minecraft/server/TileEntityEndGateway.java b/src/main/java/net/minecraft/server/TileEntityEndGateway.java -index 89537dec8ed278e79e078cb2fd3d3e839cdbab59..159db8d095f9abed59348594147a640cec96889f 100644 ---- a/src/main/java/net/minecraft/server/TileEntityEndGateway.java -+++ b/src/main/java/net/minecraft/server/TileEntityEndGateway.java -@@ -1,16 +1,16 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --import java.util.Random; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.Location; - import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.event.player.PlayerTeleportEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Random; - // CraftBukkit end - - public class TileEntityEndGateway extends TileEntityEnderPortal implements ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java -index 7637d86ccafbf323f4edaab758fa9fc3cf657841..9b45020c41a0aa6e34853587894f0e907db257ff 100644 ---- a/src/main/java/net/minecraft/server/TileEntityFurnace.java -+++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java -@@ -5,12 +5,6 @@ import com.google.common.collect.Maps; - import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; - import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import it.unimi.dsi.fastutil.objects.ObjectIterator; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import javax.annotation.Nullable; --// CraftBukkit start --import java.util.List; - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.craftbukkit.inventory.CraftItemStack; -@@ -19,6 +13,11 @@ import org.bukkit.entity.Player; - import org.bukkit.event.inventory.FurnaceBurnEvent; - import org.bukkit.event.inventory.FurnaceExtractEvent; - import org.bukkit.event.inventory.FurnaceSmeltEvent; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; - // CraftBukkit end - - public abstract class TileEntityFurnace extends TileEntityContainer implements IWorldInventory, RecipeHolder, AutoRecipeOutput, ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java -index e386ffda975b8a0adc218fd47a02e5b38d12e79d..500f2783a9fc1bc89de95aeb462bc44750451566 100644 ---- a/src/main/java/net/minecraft/server/TileEntityHopper.java -+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java -@@ -1,20 +1,17 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; --import java.util.Optional; --import java.util.function.Supplier; --import java.util.stream.Collectors; --import java.util.stream.IntStream; --import javax.annotation.Nullable; -- --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.entity.HumanEntity; - import org.bukkit.event.inventory.InventoryMoveItemEvent; - import org.bukkit.event.inventory.InventoryPickupItemEvent; - import org.bukkit.inventory.Inventory; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; -+import java.util.function.Supplier; -+import java.util.stream.IntStream; - // CraftBukkit end - - public class TileEntityHopper extends TileEntityLootable implements IHopper, ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntityLectern.java b/src/main/java/net/minecraft/server/TileEntityLectern.java -index b955d5d6619d6b9c64559937df6aa619fb4c8c04..0651a733c7d18606e637fae3ab6602e544dd92da 100644 ---- a/src/main/java/net/minecraft/server/TileEntityLectern.java -+++ b/src/main/java/net/minecraft/server/TileEntityLectern.java -@@ -1,17 +1,16 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; --// CraftBukkit start --import java.util.ArrayList; --import java.util.Arrays; --import java.util.List; --import java.util.UUID; - import org.bukkit.Location; - import org.bukkit.block.Lectern; --import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; - import org.bukkit.inventory.InventoryHolder; -+ -+import javax.annotation.Nullable; -+import java.util.ArrayList; -+import java.util.Arrays; -+import java.util.List; -+import java.util.UUID; - // CraftBukkit end - - public class TileEntityLectern extends TileEntity implements Clearable, ITileInventory, ICommandListener { // CraftBukkit - ICommandListener -diff --git a/src/main/java/net/minecraft/server/TileEntityLootable.java b/src/main/java/net/minecraft/server/TileEntityLootable.java -index 81651778fe1e81273ecdf7cdd511c84b5f3e1d40..634f7a444e98537a6895c2ac2a892f9f39e2fde9 100644 ---- a/src/main/java/net/minecraft/server/TileEntityLootable.java -+++ b/src/main/java/net/minecraft/server/TileEntityLootable.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public abstract class TileEntityLootable extends TileEntityContainer { - -diff --git a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -index 9459efde54d507231b4aacb7cba14e9905ebb4d7..9eee9c250d4b6cf28951cf9c0cee961268947320 100644 ---- a/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -+++ b/src/main/java/net/minecraft/server/TileEntityShulkerBox.java -@@ -1,12 +1,11 @@ - package net.minecraft.server; - --import java.util.Arrays; --import java.util.List; --import java.util.stream.IntStream; --import javax.annotation.Nullable; --// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftHumanEntity; - import org.bukkit.entity.HumanEntity; -+ -+import javax.annotation.Nullable; -+import java.util.Arrays; -+import java.util.List; - // CraftBukkit end - - public class TileEntityShulkerBox extends TileEntityLootable implements IWorldInventory, ITickable { -diff --git a/src/main/java/net/minecraft/server/TileEntitySign.java b/src/main/java/net/minecraft/server/TileEntitySign.java -index c4b0d8720e71c7bf2cac7ed962b8fd33cf0b49b3..fa63d9c7eae6f38a953176be8bcf1125094c3c52 100644 ---- a/src/main/java/net/minecraft/server/TileEntitySign.java -+++ b/src/main/java/net/minecraft/server/TileEntitySign.java -@@ -1,8 +1,9 @@ - package net.minecraft.server; - - import com.mojang.brigadier.exceptions.CommandSyntaxException; --import java.util.UUID; -+ - import javax.annotation.Nullable; -+import java.util.UUID; - - public class TileEntitySign extends TileEntity implements ICommandListener { // CraftBukkit - implements - -diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java -index ab553f408b31cb7e2d281cc3d8fe42e19dc717d9..870b1faebfe5194aa48c70293593bc89d24aa116 100644 ---- a/src/main/java/net/minecraft/server/TileEntitySkull.java -+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java -@@ -9,19 +9,14 @@ import javax.annotation.Nullable; - - // Spigot start - import com.google.common.base.Predicate; --import com.google.common.cache.LoadingCache; - import com.google.common.cache.CacheBuilder; - import com.google.common.cache.CacheLoader; -+import com.google.common.cache.LoadingCache; - import com.google.common.util.concurrent.Futures; --import java.util.concurrent.Executors; --import java.util.concurrent.ExecutorService; --import java.util.concurrent.Future; --import java.util.concurrent.TimeUnit; -- - import com.google.common.util.concurrent.ThreadFactoryBuilder; - import com.mojang.authlib.Agent; - import com.mojang.authlib.ProfileLookupCallback; --import java.util.concurrent.Callable; -+import java.util.concurrent.*; - // Spigot end - - public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Paper - remove tickable -diff --git a/src/main/java/net/minecraft/server/UserCache.java b/src/main/java/net/minecraft/server/UserCache.java -index 2cdc6cf8ce06103b2c042f512e53567d95994202..d9421dc1afc86c8f1f4acacbe23a70ac8143bb19 100644 ---- a/src/main/java/net/minecraft/server/UserCache.java -+++ b/src/main/java/net/minecraft/server/UserCache.java -@@ -2,42 +2,22 @@ package net.minecraft.server; - - import com.google.common.collect.Iterators; - import com.google.common.collect.Lists; --import com.google.common.collect.Maps; - import com.google.common.io.Files; --import com.google.gson.Gson; --import com.google.gson.GsonBuilder; --import com.google.gson.JsonDeserializationContext; --import com.google.gson.JsonDeserializer; --import com.google.gson.JsonElement; --import com.google.gson.JsonObject; --import com.google.gson.JsonParseException; --import com.google.gson.JsonSerializationContext; --import com.google.gson.JsonSerializer; -+import com.google.gson.*; - import com.google.gson.reflect.TypeToken; - import com.mojang.authlib.Agent; - import com.mojang.authlib.GameProfile; - import com.mojang.authlib.GameProfileRepository; - import com.mojang.authlib.ProfileLookupCallback; --import java.io.BufferedReader; --import java.io.BufferedWriter; --import java.io.File; --import java.io.FileNotFoundException; --import java.io.IOException; --import java.io.Reader; -+import org.apache.commons.io.IOUtils; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.lang.reflect.Type; - import java.nio.charset.StandardCharsets; - import java.text.ParseException; - import java.text.SimpleDateFormat; --import java.util.Calendar; --import java.util.Date; --import java.util.Deque; --import java.util.Iterator; --import java.util.List; --import java.util.Locale; --import java.util.Map; --import java.util.UUID; --import javax.annotation.Nullable; --import org.apache.commons.io.IOUtils; -+import java.util.*; - - public class UserCache { - -diff --git a/src/main/java/net/minecraft/server/VillagePlace.java b/src/main/java/net/minecraft/server/VillagePlace.java -index f1e791c87457bcdf31a70f6f06bf865f556f12e7..1e75251c2a47f524ad7f2dbb864674c7707bc58b 100644 ---- a/src/main/java/net/minecraft/server/VillagePlace.java -+++ b/src/main/java/net/minecraft/server/VillagePlace.java -@@ -6,13 +6,9 @@ import it.unimi.dsi.fastutil.longs.Long2ByteMap; - import it.unimi.dsi.fastutil.longs.Long2ByteOpenHashMap; - import it.unimi.dsi.fastutil.longs.LongOpenHashSet; - import it.unimi.dsi.fastutil.longs.LongSet; -+ - import java.io.File; --import java.util.Collections; --import java.util.Comparator; --import java.util.List; --import java.util.Optional; --import java.util.Random; --import java.util.Set; -+import java.util.*; - import java.util.function.BiConsumer; - import java.util.function.BooleanSupplier; - import java.util.function.Predicate; -diff --git a/src/main/java/net/minecraft/server/VillagePlaceRecord.java b/src/main/java/net/minecraft/server/VillagePlaceRecord.java -index 2647dc3646e332189a88d17e08831882e40f2910..2c9b617e903c4c070cd13d1ee759e3a40a7a60b8 100644 ---- a/src/main/java/net/minecraft/server/VillagePlaceRecord.java -+++ b/src/main/java/net/minecraft/server/VillagePlaceRecord.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.mojang.serialization.Codec; - import com.mojang.serialization.codecs.RecordCodecBuilder; -+ - import java.util.Objects; - - public class VillagePlaceRecord { -diff --git a/src/main/java/net/minecraft/server/VillagePlaceSection.java b/src/main/java/net/minecraft/server/VillagePlaceSection.java -index 3aaba7fcaf83a491b9da60d156b7f2379f5a6aeb..9834465a5a6c6dd386b91f3e43a298b719c207b4 100644 ---- a/src/main/java/net/minecraft/server/VillagePlaceSection.java -+++ b/src/main/java/net/minecraft/server/VillagePlaceSection.java -@@ -7,6 +7,10 @@ import com.mojang.serialization.Codec; - import com.mojang.serialization.codecs.RecordCodecBuilder; - import it.unimi.dsi.fastutil.shorts.Short2ObjectMap; - import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+import org.apache.logging.log4j.util.Supplier; -+ - import java.util.List; - import java.util.Map; - import java.util.Optional; -@@ -15,9 +19,6 @@ import java.util.function.BiConsumer; - import java.util.function.Consumer; - import java.util.function.Predicate; - import java.util.stream.Stream; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; --import org.apache.logging.log4j.util.Supplier; - - public class VillagePlaceSection { - -diff --git a/src/main/java/net/minecraft/server/VillagePlaceType.java b/src/main/java/net/minecraft/server/VillagePlaceType.java -index 1fb87bf395ced15bc3ef383dae46a42c5e4d2547..c720b82faae3d5fe1249f01d42e8d5cbdbab7cd6 100644 ---- a/src/main/java/net/minecraft/server/VillagePlaceType.java -+++ b/src/main/java/net/minecraft/server/VillagePlaceType.java -@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableSet; - import com.google.common.collect.Maps; - import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -+ - import java.util.Map; - import java.util.Optional; - import java.util.Set; -diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java -index b1081e441023f5d24091321b1267b5651adeb331..31783b9b1fe53ccb3ae39149bc066037b3074843 100644 ---- a/src/main/java/net/minecraft/server/VillageSiege.java -+++ b/src/main/java/net/minecraft/server/VillageSiege.java -@@ -2,8 +2,8 @@ package net.minecraft.server; - - import com.destroystokyo.paper.exception.ServerInternalException; - --import java.util.Iterator; - import javax.annotation.Nullable; -+import java.util.Iterator; - - public class VillageSiege implements MobSpawner { - -diff --git a/src/main/java/net/minecraft/server/VillagerProfession.java b/src/main/java/net/minecraft/server/VillagerProfession.java -index 1b012914cb3fcbc4bb456195ade96668b6742cfd..9dac1d6be967968ca3f83dca349af1c5759f586d 100644 ---- a/src/main/java/net/minecraft/server/VillagerProfession.java -+++ b/src/main/java/net/minecraft/server/VillagerProfession.java -@@ -1,6 +1,7 @@ - package net.minecraft.server; - - import com.google.common.collect.ImmutableSet; -+ - import javax.annotation.Nullable; - - public class VillagerProfession { -diff --git a/src/main/java/net/minecraft/server/VillagerTrades.java b/src/main/java/net/minecraft/server/VillagerTrades.java -index d0c2ec4050458e26d1bd85cc09b1a3fdca8488c6..9eb3996a0e927276327402653de395f6cfa3669f 100644 ---- a/src/main/java/net/minecraft/server/VillagerTrades.java -+++ b/src/main/java/net/minecraft/server/VillagerTrades.java -@@ -5,12 +5,13 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -+ -+import javax.annotation.Nullable; - import java.util.List; - import java.util.Locale; - import java.util.Map; - import java.util.Random; - import java.util.stream.Collectors; --import javax.annotation.Nullable; - - public class VillagerTrades { - -diff --git a/src/main/java/net/minecraft/server/VoxelShape.java b/src/main/java/net/minecraft/server/VoxelShape.java -index 3a98e242e06ad3a936b9c3a110c66238d172323e..f7a647ce5ae20843f2b2274857cd71eca399fa46 100644 ---- a/src/main/java/net/minecraft/server/VoxelShape.java -+++ b/src/main/java/net/minecraft/server/VoxelShape.java -@@ -3,8 +3,9 @@ package net.minecraft.server; - import com.google.common.collect.Lists; - import com.google.common.math.DoubleMath; - import it.unimi.dsi.fastutil.doubles.DoubleList; --import java.util.List; -+ - import javax.annotation.Nullable; -+import java.util.List; - - public abstract class VoxelShape { - -diff --git a/src/main/java/net/minecraft/server/VoxelShapeArray.java b/src/main/java/net/minecraft/server/VoxelShapeArray.java -index 8d68c783f6d8c1dae62c0d3ed34e305785169579..ee8b29fabcd706dfd324732daf22035848109aac 100644 ---- a/src/main/java/net/minecraft/server/VoxelShapeArray.java -+++ b/src/main/java/net/minecraft/server/VoxelShapeArray.java -@@ -2,8 +2,8 @@ package net.minecraft.server; - - import it.unimi.dsi.fastutil.doubles.DoubleArrayList; - import it.unimi.dsi.fastutil.doubles.DoubleList; -+ - import java.util.Arrays; --import java.util.List; - - public final class VoxelShapeArray extends VoxelShape { - -diff --git a/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java b/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java -index e841611bb7c36dffec44bb9e74a0a9657a113263..30d9414d20617c3b6f58994f4268a81461b1d011 100644 ---- a/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java -+++ b/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java -@@ -1,10 +1,10 @@ - package net.minecraft.server; - -+import javax.annotation.Nullable; - import java.util.Objects; - import java.util.Spliterators.AbstractSpliterator; - import java.util.function.BiPredicate; - import java.util.function.Consumer; --import javax.annotation.Nullable; - - public class VoxelShapeSpliterator extends AbstractSpliterator { - -diff --git a/src/main/java/net/minecraft/server/VoxelShapes.java b/src/main/java/net/minecraft/server/VoxelShapes.java -index 34a180361e817b5cbd37d206fbc7cfd5ad2a468b..fa35fe79d1d35a6862151aca0dba09237236227d 100644 ---- a/src/main/java/net/minecraft/server/VoxelShapes.java -+++ b/src/main/java/net/minecraft/server/VoxelShapes.java -@@ -5,7 +5,7 @@ import com.google.common.math.DoubleMath; - import com.google.common.math.IntMath; - import it.unimi.dsi.fastutil.doubles.DoubleArrayList; - import it.unimi.dsi.fastutil.doubles.DoubleList; --import java.util.Arrays; -+ - import java.util.Iterator; - import java.util.Objects; - import java.util.stream.Stream; -diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 8beda792cc67e5c789574076f5a06214614a6031..9047b02dc61d161fa4093885c39c8e7f793fc406 100644 ---- a/src/main/java/net/minecraft/server/World.java -+++ b/src/main/java/net/minecraft/server/World.java -@@ -1,30 +1,14 @@ - package net.minecraft.server; - --import co.aikar.timings.Timing; --import co.aikar.timings.Timings; --import com.destroystokyo.paper.antixray.ChunkPacketBlockController; // Paper - Anti-Xray --import com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray; // Paper - Anti-Xray -+import com.destroystokyo.paper.antixray.ChunkPacketBlockController; -+import com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray; - import com.destroystokyo.paper.event.server.ServerExceptionEvent; - import com.destroystokyo.paper.exception.ServerInternalException; --import com.google.common.base.MoreObjects; - import com.google.common.collect.Lists; - import com.mojang.serialization.Codec; - import com.proximyst.rainforest.RainforestWorldConfig; --import java.io.IOException; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Random; --import java.util.function.Consumer; --import java.util.function.Predicate; --import java.util.function.Supplier; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.util.HashMap; --import java.util.Map; - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.CraftWorld; -@@ -32,6 +16,13 @@ import org.bukkit.craftbukkit.block.CapturedBlockState; - import org.bukkit.craftbukkit.block.CraftBlockState; - import org.bukkit.craftbukkit.block.data.CraftBlockData; - import org.bukkit.event.block.BlockPhysicsEvent; -+ -+import javax.annotation.Nullable; -+import java.io.IOException; -+import java.util.*; -+import java.util.function.Consumer; -+import java.util.function.Predicate; -+import java.util.function.Supplier; - // CraftBukkit end - - public abstract class World implements GeneratorAccess, AutoCloseable { -diff --git a/src/main/java/net/minecraft/server/WorldBorder.java b/src/main/java/net/minecraft/server/WorldBorder.java -index 5cba3b0e613bb6c016c4441ebb931be9dba8db4e..b9c4e82524f842475811eae5bbe4547d12f2ceba 100644 ---- a/src/main/java/net/minecraft/server/WorldBorder.java -+++ b/src/main/java/net/minecraft/server/WorldBorder.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.google.common.collect.Lists; - import com.mojang.serialization.DynamicLike; -+ - import java.util.Iterator; - import java.util.List; - -diff --git a/src/main/java/net/minecraft/server/WorldChunkManagerTheEnd.java b/src/main/java/net/minecraft/server/WorldChunkManagerTheEnd.java -index 631a028dd262476f257c382f488320fee42584cd..0f00d4c9bdf09eece00547c8a66db2e90eff1e5a 100644 ---- a/src/main/java/net/minecraft/server/WorldChunkManagerTheEnd.java -+++ b/src/main/java/net/minecraft/server/WorldChunkManagerTheEnd.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.google.common.collect.ImmutableList; - import com.mojang.serialization.Codec; -+ - import java.util.List; - - public class WorldChunkManagerTheEnd extends WorldChunkManager { -diff --git a/src/main/java/net/minecraft/server/WorldDataServer.java b/src/main/java/net/minecraft/server/WorldDataServer.java -index 51cec9739c1409a2865d1aef7488acdb2079c88c..98e70eb333793e7d28d77c9ad3627453d469c6e8 100644 ---- a/src/main/java/net/minecraft/server/WorldDataServer.java -+++ b/src/main/java/net/minecraft/server/WorldDataServer.java -@@ -6,17 +6,17 @@ import com.mojang.datafixers.DataFixer; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; - import com.mojang.serialization.Lifecycle; --import java.util.LinkedHashSet; --import java.util.Set; --import java.util.UUID; --import java.util.stream.Collectors; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; --// CraftBukkit start - import org.bukkit.Bukkit; - import org.bukkit.event.weather.ThunderChangeEvent; - import org.bukkit.event.weather.WeatherChangeEvent; -+ -+import javax.annotation.Nullable; -+import java.util.LinkedHashSet; -+import java.util.Set; -+import java.util.UUID; -+import java.util.stream.Collectors; - // CraftBukkit end - - public class WorldDataServer implements IWorldDataServer, SaveData { -diff --git a/src/main/java/net/minecraft/server/WorldGenMegaTreeProvider.java b/src/main/java/net/minecraft/server/WorldGenMegaTreeProvider.java -index 2830c53c23e516ec0a2aec72084fdd1007274833..4000ba57175bcf8ac940573f3685ca27303ef707 100644 ---- a/src/main/java/net/minecraft/server/WorldGenMegaTreeProvider.java -+++ b/src/main/java/net/minecraft/server/WorldGenMegaTreeProvider.java -@@ -1,7 +1,7 @@ - package net.minecraft.server; - --import java.util.Random; - import javax.annotation.Nullable; -+import java.util.Random; - - public abstract class WorldGenMegaTreeProvider extends WorldGenTreeProvider { - -diff --git a/src/main/java/net/minecraft/server/WorldGenTreeProvider.java b/src/main/java/net/minecraft/server/WorldGenTreeProvider.java -index ce1cd82e6c9e4a41622f3c10e812003f4f273a6f..6e340b2581529dc52b739d43e58c74c80f5c1b01 100644 ---- a/src/main/java/net/minecraft/server/WorldGenTreeProvider.java -+++ b/src/main/java/net/minecraft/server/WorldGenTreeProvider.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - -+import org.bukkit.TreeType; -+ -+import javax.annotation.Nullable; - import java.util.Iterator; - import java.util.Random; --import javax.annotation.Nullable; --import org.bukkit.TreeType; // CraftBukkit - - public abstract class WorldGenTreeProvider { - -diff --git a/src/main/java/net/minecraft/server/WorldLoadListenerLogger.java b/src/main/java/net/minecraft/server/WorldLoadListenerLogger.java -index ae77805f71c6c574d92f39c51b1e48f2138e9ab6..3891835ccbda8cd3569b1054ec5873c1fb8e6ab1 100644 ---- a/src/main/java/net/minecraft/server/WorldLoadListenerLogger.java -+++ b/src/main/java/net/minecraft/server/WorldLoadListenerLogger.java -@@ -1,9 +1,10 @@ - package net.minecraft.server; - --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import javax.annotation.Nullable; -+ - public class WorldLoadListenerLogger implements WorldLoadListener { - - private static final Logger LOGGER = LogManager.getLogger(); -diff --git a/src/main/java/net/minecraft/server/WorldMap.java b/src/main/java/net/minecraft/server/WorldMap.java -index 3b1779f8220afc61d4d63926bcda0c27b44dd96e..e3bcf63922639db39e83c8b6b1ad65b948295644 100644 ---- a/src/main/java/net/minecraft/server/WorldMap.java -+++ b/src/main/java/net/minecraft/server/WorldMap.java -@@ -4,22 +4,20 @@ import com.google.common.collect.Lists; - import com.google.common.collect.Maps; - import com.mojang.serialization.DataResult; - import com.mojang.serialization.Dynamic; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.util.UUID; -- - import org.bukkit.Bukkit; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.craftbukkit.map.CraftMapView; - import org.bukkit.craftbukkit.util.CraftChatMessage; - import org.bukkit.entity.Player; -+ -+import javax.annotation.Nullable; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; -+import java.util.UUID; - // CraftBukkit end - - public class WorldMap extends PersistentBase { -diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java -index 12ffee96cfbd135f107b1dff7a058177e2649964..d763c9f06d8b006936c2e19daedd6396d42a5d12 100644 ---- a/src/main/java/net/minecraft/server/WorldNBTStorage.java -+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java -@@ -9,6 +9,7 @@ import java.io.OutputStream; - import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -+// CraftBukkit start - import org.bukkit.craftbukkit.entity.CraftPlayer; - // CraftBukkit end - -diff --git a/src/main/java/net/minecraft/server/WorldPersistentData.java b/src/main/java/net/minecraft/server/WorldPersistentData.java -index a2a25cf6a43a1f59a80c997e2980f2bb8e6b3817..045605b71a74a1ea3a29e622bb790bdd690d33dc 100644 ---- a/src/main/java/net/minecraft/server/WorldPersistentData.java -+++ b/src/main/java/net/minecraft/server/WorldPersistentData.java -@@ -2,18 +2,14 @@ package net.minecraft.server; - - import com.google.common.collect.Maps; - import com.mojang.datafixers.DataFixer; --import java.io.DataInputStream; --import java.io.File; --import java.io.FileInputStream; --import java.io.IOException; --import java.io.InputStream; --import java.io.PushbackInputStream; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ -+import javax.annotation.Nullable; -+import java.io.*; - import java.util.Iterator; - import java.util.Map; - import java.util.function.Supplier; --import javax.annotation.Nullable; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class WorldPersistentData { - -diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 2a681afff2e8b9f7b7e106dcb780ecac27d14353..709e24cc1a7970ce5bb318b949114ffea5e34923 100644 ---- a/src/main/java/net/minecraft/server/WorldServer.java -+++ b/src/main/java/net/minecraft/server/WorldServer.java -@@ -1,39 +1,17 @@ - package net.minecraft.server; - -+import co.aikar.timings.TimingHistory; -+import com.destroystokyo.paper.PaperWorldConfig; - import com.google.common.annotations.VisibleForTesting; --import com.google.common.collect.ImmutableList; --import com.google.common.collect.Iterables; --import co.aikar.timings.TimingHistory; // Paper --import co.aikar.timings.Timings; // Paper -- --import com.destroystokyo.paper.PaperWorldConfig; // Paper --import com.google.common.collect.Lists; --import com.google.common.collect.Maps; --import com.google.common.collect.Queues; --import com.google.common.collect.Sets; -+import com.google.common.collect.*; - import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; - import it.unimi.dsi.fastutil.ints.Int2ObjectMap; --import it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry; - import it.unimi.dsi.fastutil.longs.LongSet; - import it.unimi.dsi.fastutil.longs.LongSets; - import it.unimi.dsi.fastutil.objects.ObjectIterator; - import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; --import java.io.BufferedWriter; --import java.io.IOException; --import java.io.Writer; --import java.nio.file.Files; --import java.util.*; --import java.util.concurrent.Executor; --import java.util.function.BooleanSupplier; --import java.util.function.Predicate; --import java.util.stream.Collectors; --import javax.annotation.Nonnull; --import javax.annotation.Nullable; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -- --// CraftBukkit start --import java.util.logging.Level; - import org.bukkit.Bukkit; - import org.bukkit.WeatherType; - import org.bukkit.craftbukkit.event.CraftEventFactory; -@@ -42,6 +20,18 @@ import org.bukkit.event.entity.CreatureSpawnEvent; - import org.bukkit.event.server.MapInitializeEvent; - import org.bukkit.event.weather.LightningStrikeEvent; - import org.bukkit.event.world.TimeSkipEvent; -+ -+import javax.annotation.Nonnull; -+import javax.annotation.Nullable; -+import java.io.BufferedWriter; -+import java.io.IOException; -+import java.io.Writer; -+import java.nio.file.Files; -+import java.util.*; -+import java.util.concurrent.Executor; -+import java.util.function.BooleanSupplier; -+import java.util.function.Predicate; -+import java.util.logging.Level; - // CraftBukkit end - - public class WorldServer extends World implements GeneratorAccessSeed { -diff --git a/src/main/java/net/minecraft/server/WorldUpgrader.java b/src/main/java/net/minecraft/server/WorldUpgrader.java -index 888dae2d5ee8a71e83dd24e5f3c6bc8513016f9d..61adf30422dd7c7d0444696e0aaf25ea2baf3a1c 100644 ---- a/src/main/java/net/minecraft/server/WorldUpgrader.java -+++ b/src/main/java/net/minecraft/server/WorldUpgrader.java -@@ -1,16 +1,15 @@ - package net.minecraft.server; - --import com.google.common.collect.ImmutableList; --import com.google.common.collect.ImmutableMap; -+import com.google.common.collect.*; - import com.google.common.collect.ImmutableMap.Builder; --import com.google.common.collect.ImmutableSet; --import com.google.common.collect.Lists; --import com.google.common.collect.UnmodifiableIterator; - import com.google.common.util.concurrent.ThreadFactoryBuilder; - import com.mojang.datafixers.DataFixer; - import it.unimi.dsi.fastutil.objects.Object2FloatMap; - import it.unimi.dsi.fastutil.objects.Object2FloatMaps; - import it.unimi.dsi.fastutil.objects.Object2FloatOpenCustomHashMap; -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.io.File; - import java.io.IOException; - import java.util.List; -@@ -18,8 +17,6 @@ import java.util.ListIterator; - import java.util.concurrent.ThreadFactory; - import java.util.regex.Matcher; - import java.util.regex.Pattern; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class WorldUpgrader { - -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7cde55ae407012b3445f11b07a0ebc9d00e031e3..23cbd9a980ce65c99cdfd1cbade3ffa5796a1e7f 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1,7 +1,9 @@ - package net.pl3x.purpur; - - import org.bukkit.configuration.ConfigurationSection; -+ - import java.util.List; -+ - import static net.pl3x.purpur.PurpurConfig.log; - - public class PurpurWorldConfig { -diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index f27214eba0aedfceb770a39e444c46f9df19dcf6..e646e9e579ba8f90dbe1d2f891cd836e2221dae9 100644 ---- a/src/main/java/org/bukkit/craftbukkit/Main.java -+++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -1,5 +1,9 @@ - package org.bukkit.craftbukkit; - -+import joptsimple.OptionParser; -+import joptsimple.OptionSet; -+import net.minecrell.terminalconsole.TerminalConsoleAppender; -+ - import java.io.File; - import java.io.IOException; - import java.text.SimpleDateFormat; -@@ -7,12 +11,8 @@ import java.util.Arrays; - import java.util.Calendar; - import java.util.Date; - import java.util.List; --import java.util.concurrent.TimeUnit; - import java.util.logging.Level; - import java.util.logging.Logger; --import joptsimple.OptionParser; --import joptsimple.OptionSet; --import net.minecrell.terminalconsole.TerminalConsoleAppender; // Paper - - public class Main { - public static boolean useJline = true; -diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java -index a7c500323b52b532edf1f7fbaa0637efa527a4e8..6ac92a6b87edfb232efcc3881bfce385f10eb76f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java -+++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java -@@ -1,13 +1,14 @@ - package org.bukkit.craftbukkit.attribute; - - import com.google.common.base.Preconditions; --import java.util.ArrayList; --import java.util.Collection; --import java.util.List; - import org.bukkit.attribute.Attribute; - import org.bukkit.attribute.AttributeInstance; - import org.bukkit.attribute.AttributeModifier; - -+import java.util.ArrayList; -+import java.util.Collection; -+import java.util.List; -+ - public class CraftAttributeInstance implements AttributeInstance { - - private final net.minecraft.server.AttributeModifiable handle; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CapturedBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CapturedBlockState.java -index 27bd1916e060bcf8989597f1594c129131fd0aed..bb537efd2f7916e4e9bb258fcff41d1a2aff6103 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CapturedBlockState.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CapturedBlockState.java -@@ -1,16 +1,11 @@ - package org.bukkit.craftbukkit.block; - --import java.util.Random; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.EntityBee; --import net.minecraft.server.EntityTypes; --import net.minecraft.server.GeneratorAccess; --import net.minecraft.server.TileEntity; --import net.minecraft.server.TileEntityBeehive; --import net.minecraft.server.World; -+import net.minecraft.server.*; - import org.bukkit.Material; - import org.bukkit.block.Block; - -+import java.util.Random; -+ - public final class CapturedBlockState extends CraftBlockState { - - private final boolean treeBlock; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java -index 754205636b02f388ce5e885258b228f8a373a9f5..f98a342ef107799f8f47dc54908fbd4437d1d039 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBanner.java -@@ -1,13 +1,7 @@ - package org.bukkit.craftbukkit.block; - - import com.google.common.base.Preconditions; --import java.util.ArrayList; --import java.util.List; --import net.minecraft.server.BlockBannerAbstract; --import net.minecraft.server.EnumColor; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.NBTTagList; --import net.minecraft.server.TileEntityBanner; -+import net.minecraft.server.*; - import org.bukkit.DyeColor; - import org.bukkit.Material; - import org.bukkit.block.Banner; -@@ -15,6 +9,9 @@ import org.bukkit.block.Block; - import org.bukkit.block.banner.Pattern; - import org.bukkit.block.banner.PatternType; - -+import java.util.ArrayList; -+import java.util.List; -+ - public class CraftBanner extends CraftBlockEntityState implements Banner { - - private DyeColor base; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java -index 21ebceafbf27125761aa08cfe0785f6f05c77592..f65a2c602d7fd46d8c2d6d3810ed0d45475f66c5 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java -@@ -1,12 +1,6 @@ - package org.bukkit.craftbukkit.block; - --import java.util.ArrayList; --import java.util.Collection; --import net.minecraft.server.ChestLock; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.MobEffectList; --import net.minecraft.server.TileEntity; --import net.minecraft.server.TileEntityBeacon; -+import net.minecraft.server.*; - import org.bukkit.Material; - import org.bukkit.block.Beacon; - import org.bukkit.block.Block; -@@ -15,6 +9,9 @@ import org.bukkit.entity.LivingEntity; - import org.bukkit.potion.PotionEffect; - import org.bukkit.potion.PotionEffectType; - -+import java.util.ArrayList; -+import java.util.Collection; -+ - public class CraftBeacon extends CraftBlockEntityState implements Beacon { - - public CraftBeacon(final Block block) { -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -index 0ffec81155fcf80b80360ffa8e4a6895095f84d7..70bacea68ed0286c5a746a24cafa222673449743 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeehive.java -@@ -1,8 +1,6 @@ - package org.bukkit.craftbukkit.block; - - import com.google.common.base.Preconditions; --import java.util.ArrayList; --import java.util.List; - import net.minecraft.server.BlockPosition; - import net.minecraft.server.Entity; - import net.minecraft.server.TileEntityBeehive; -@@ -14,6 +12,9 @@ import org.bukkit.block.Block; - import org.bukkit.craftbukkit.entity.CraftBee; - import org.bukkit.entity.Bee; - -+import java.util.ArrayList; -+import java.util.List; -+ - public class CraftBeehive extends CraftBlockEntityState implements Beehive { - - public CraftBeehive(final Block block) { -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 6a681a8efc64417b0a2945d8fe3c1287c7d5e358..bbe1cb40f188a65e0a4665f6ca8bbab25311b03d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -@@ -1,41 +1,14 @@ - package org.bukkit.craftbukkit.block; - - import com.google.common.base.Preconditions; -- --import java.util.ArrayList; --import java.util.Collection; --import java.util.Collections; --import java.util.List; --import java.util.stream.Collectors; --import net.minecraft.server.AxisAlignedBB; --import net.minecraft.server.BiomeBase; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.BlockRedstoneWire; --import net.minecraft.server.BlockTileEntity; --import net.minecraft.server.Blocks; --import net.minecraft.server.EnumDirection; --import net.minecraft.server.EnumSkyBlock; --import net.minecraft.server.GeneratorAccess; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IRegistry; --import net.minecraft.server.MinecraftKey; --import net.minecraft.server.MovingObjectPosition; --import net.minecraft.server.RayTrace; --import net.minecraft.server.TileEntity; --import net.minecraft.server.Vec3D; --import net.minecraft.server.VoxelShape; --import net.minecraft.server.WorldServer; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.Chunk; --import org.bukkit.FluidCollisionMode; --import org.bukkit.Location; - import org.bukkit.Material; - import org.bukkit.World; --import org.bukkit.block.Biome; -+import org.bukkit.*; - import org.bukkit.block.Block; --import org.bukkit.block.BlockFace; --import org.bukkit.block.BlockState; --import org.bukkit.block.PistonMoveReaction; -+import org.bukkit.block.*; - import org.bukkit.block.data.BlockData; - import org.bukkit.craftbukkit.CraftFluidCollisionMode; - import org.bukkit.craftbukkit.CraftWorld; -@@ -53,6 +26,11 @@ import org.bukkit.util.BoundingBox; - import org.bukkit.util.RayTraceResult; - import org.bukkit.util.Vector; - -+import java.util.ArrayList; -+import java.util.Collection; -+import java.util.Collections; -+import java.util.List; -+ - public class CraftBlock implements Block { - private final net.minecraft.server.GeneratorAccess world; - private final BlockPosition position; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java -index c51c43573faa33ca5a10e76cb0f6aa9bc301f118..a3380b9bc574ebd77c31f7d275a17d1f7ec8bc38 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.block; - - import com.google.common.base.Preconditions; --import java.util.List; - import net.minecraft.server.BlockPosition; - import net.minecraft.server.GeneratorAccess; - import net.minecraft.server.IBlockData; -@@ -12,7 +11,6 @@ import org.bukkit.World; - import org.bukkit.block.Block; - import org.bukkit.block.BlockState; - import org.bukkit.block.data.BlockData; --import org.bukkit.craftbukkit.CraftChunk; - import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.craftbukkit.block.data.CraftBlockData; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; -@@ -21,6 +19,8 @@ import org.bukkit.material.MaterialData; - import org.bukkit.metadata.MetadataValue; - import org.bukkit.plugin.Plugin; - -+import java.util.List; -+ - public class CraftBlockState implements BlockState { - protected final CraftWorld world; - private final BlockPosition position; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java b/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java -index 31585e9bb825fbd84e30b7c026da57734a3698b3..251ad6ef51ed58ef9e7bb818e281d106a266cf56 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftChest.java -@@ -1,10 +1,7 @@ - package org.bukkit.craftbukkit.block; - --import net.minecraft.server.BlockChest; --import net.minecraft.server.Blocks; --import net.minecraft.server.ITileInventory; --import net.minecraft.server.SoundEffects; --import net.minecraft.server.TileEntityChest; -+import com.destroystokyo.paper.loottable.PaperLootableBlockInventory; -+import net.minecraft.server.*; - import org.bukkit.Material; - import org.bukkit.block.Block; - import org.bukkit.block.Chest; -@@ -12,7 +9,6 @@ import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.craftbukkit.inventory.CraftInventory; - import org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest; - import org.bukkit.inventory.Inventory; --import com.destroystokyo.paper.loottable.PaperLootableBlockInventory; // Paper - - public class CraftChest extends CraftLootable implements Chest, PaperLootableBlockInventory { // Paper - -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java b/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java -index 54287744e1385fe74a80e3f04d2cdc20f37e5541..90efa1220ddb6f3a562f96a862c922936a828272 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.block; - --import java.util.Objects; - import net.minecraft.server.BlockPosition; - import net.minecraft.server.TileEntityEndGateway; - import org.bukkit.Location; -@@ -8,6 +7,8 @@ import org.bukkit.Material; - import org.bukkit.block.Block; - import org.bukkit.block.EndGateway; - -+import java.util.Objects; -+ - public class CraftEndGateway extends CraftBlockEntityState implements EndGateway { - - public CraftEndGateway(Block block) { -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java b/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java -index 6f20b9ac76bc0d9f5f7c769af39103f4ac8d5ae7..035447cf0bdab65e4b835fbbebe496dbf1e6fdee 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftJukebox.java -@@ -1,10 +1,6 @@ - package org.bukkit.craftbukkit.block; - --import net.minecraft.server.BlockJukeBox; --import net.minecraft.server.Blocks; --import net.minecraft.server.ItemStack; --import net.minecraft.server.TileEntity; --import net.minecraft.server.TileEntityJukeBox; -+import net.minecraft.server.*; - import org.bukkit.Effect; - import org.bukkit.Material; - import org.bukkit.block.Block; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java b/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java -index 10bc0b0944bdd7f6db2bb2cd4f329be0e23e3cea..fb9e71f57543f840b41918c9c9ff991511385032 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftShulkerBox.java -@@ -1,10 +1,6 @@ - package org.bukkit.craftbukkit.block; - --import net.minecraft.server.BlockShulkerBox; --import net.minecraft.server.SoundCategory; --import net.minecraft.server.SoundEffects; --import net.minecraft.server.TileEntityShulkerBox; --import net.minecraft.server.World; -+import net.minecraft.server.*; - import org.bukkit.DyeColor; - import org.bukkit.Material; - import org.bukkit.block.Block; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java -index ecc32c2fb1e8e1ac03074102b982adb4cda169db..c6a20a2a121597ad8aada3e023d3195f412ab030 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSkull.java -@@ -17,6 +17,7 @@ import org.bukkit.block.data.BlockData; - import org.bukkit.block.data.Directional; - import org.bukkit.block.data.Rotatable; - import org.bukkit.craftbukkit.entity.CraftPlayer; -+ - import javax.annotation.Nullable; - - public class CraftSkull extends CraftBlockEntityState implements Skull { -diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftStructureBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftStructureBlock.java -index 15e01f615e5f7bf5f611159a3d529e8c78cdd84e..1a059ecb93ade09e723527d7cd58e3530e66ee8f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/CraftStructureBlock.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftStructureBlock.java -@@ -1,11 +1,7 @@ - package org.bukkit.craftbukkit.block; - - import com.google.common.base.Preconditions; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.BlockPropertyStructureMode; --import net.minecraft.server.EnumBlockMirror; --import net.minecraft.server.EnumBlockRotation; --import net.minecraft.server.TileEntityStructure; -+import net.minecraft.server.*; - import org.apache.commons.lang3.Validate; - import org.bukkit.Material; - import org.bukkit.block.Block; -diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java -index 4045e3c194048d66ada0a15a9c208f8dbac5285e..782c50c392222bb47de7c16b569257df4ed0d04c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java -+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java -@@ -7,29 +7,18 @@ import com.google.common.collect.HashBiMap; - import com.google.common.collect.ImmutableSet; - import com.mojang.brigadier.StringReader; - import com.mojang.brigadier.exceptions.CommandSyntaxException; --import java.util.HashMap; --import java.util.Map; --import java.util.Set; --import java.util.StringJoiner; --import java.util.stream.Collectors; --import net.minecraft.server.ArgumentBlock; --import net.minecraft.server.Block; --import net.minecraft.server.BlockStateBoolean; --import net.minecraft.server.BlockStateEnum; --import net.minecraft.server.BlockStateInteger; --import net.minecraft.server.EnumDirection; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IBlockDataHolder; --import net.minecraft.server.IBlockState; --import net.minecraft.server.INamable; --import net.minecraft.server.IRegistry; --import net.minecraft.server.NBTTagCompound; -+import net.minecraft.server.*; - import org.bukkit.Material; - import org.bukkit.block.BlockFace; - import org.bukkit.block.data.BlockData; - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - -+import java.util.HashMap; -+import java.util.Map; -+import java.util.Set; -+import java.util.StringJoiner; -+ - public class CraftBlockData implements BlockData { - - private IBlockData state; -diff --git a/src/main/java/org/bukkit/craftbukkit/boss/CraftBossBar.java b/src/main/java/org/bukkit/craftbukkit/boss/CraftBossBar.java -index 7771cd6d04f08c4756cbb157d6c04bbb2fc960f9..f9c2d38fd9b329ae77c116ee12f02a5ec9e2f7fb 100644 ---- a/src/main/java/org/bukkit/craftbukkit/boss/CraftBossBar.java -+++ b/src/main/java/org/bukkit/craftbukkit/boss/CraftBossBar.java -@@ -2,11 +2,6 @@ package org.bukkit.craftbukkit.boss; - - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableList; --import java.util.HashMap; --import java.util.List; --import java.util.Map; --import java.util.function.Consumer; --import java.util.function.Supplier; - import net.minecraft.server.BossBattle; - import net.minecraft.server.BossBattleServer; - import net.minecraft.server.EntityPlayer; -@@ -19,6 +14,12 @@ import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.craftbukkit.util.CraftChatMessage; - import org.bukkit.entity.Player; - -+import java.util.HashMap; -+import java.util.List; -+import java.util.Map; -+import java.util.function.Consumer; -+import java.util.function.Supplier; -+ - public class CraftBossBar implements BossBar { - - private final BossBattleServer handle; -diff --git a/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java -index e16ecdea7d27424053b3f21378af054b2f808eca..08090858492b3a4788a0156e1ca1ba85c992544d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/BukkitCommandWrapper.java -@@ -10,13 +10,14 @@ import com.mojang.brigadier.suggestion.SuggestionProvider; - import com.mojang.brigadier.suggestion.Suggestions; - import com.mojang.brigadier.suggestion.SuggestionsBuilder; - import com.mojang.brigadier.tree.LiteralCommandNode; --import java.util.List; --import java.util.concurrent.CompletableFuture; --import java.util.function.Predicate; - import net.minecraft.server.CommandListenerWrapper; - import org.bukkit.command.Command; - import org.bukkit.craftbukkit.CraftServer; - -+import java.util.List; -+import java.util.concurrent.CompletableFuture; -+import java.util.function.Predicate; -+ - public class BukkitCommandWrapper implements com.mojang.brigadier.Command, Predicate, SuggestionProvider, com.destroystokyo.paper.brigadier.BukkitBrigadierCommand { // Paper - - private final CraftServer server; -diff --git a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java -index 88acfeb8fa1a82f7a896a181ac57b435454656df..cf8b91e77fe400bf122e70c6a7cc146cf968442b 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java -@@ -1,12 +1,5 @@ - package org.bukkit.craftbukkit.command; - --import java.util.EnumMap; --import java.util.Map; --//import jline.Terminal; --import org.bukkit.Bukkit; --import org.bukkit.ChatColor; --import org.bukkit.command.ConsoleCommandSender; --import org.bukkit.craftbukkit.CraftServer; - //import org.fusesource.jansi.Ansi; - //import org.fusesource.jansi.Ansi.Attribute; - -diff --git a/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java b/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java -index f276cdcaacc2fd2650a2ddccbbf190421a20c2bd..fa3755aa9bb206bbcdab124741f6d6c2551fd033 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java -@@ -1,21 +1,19 @@ - package org.bukkit.craftbukkit.command; - --import java.util.ArrayList; --import java.util.Collections; --import java.util.List; --import java.util.concurrent.ExecutionException; --import java.util.logging.Level; -+import net.minecraft.server.DedicatedServer; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.util.Waitable; -- --// Paper start - JLine update --import net.minecraft.server.DedicatedServer; // Paper -+import org.bukkit.event.server.TabCompleteEvent; - import org.jline.reader.Candidate; - import org.jline.reader.Completer; - import org.jline.reader.LineReader; - import org.jline.reader.ParsedLine; --// Paper end --import org.bukkit.event.server.TabCompleteEvent; -+ -+import java.util.ArrayList; -+import java.util.Collections; -+import java.util.List; -+import java.util.concurrent.ExecutionException; -+import java.util.logging.Level; - - public class ConsoleCommandCompleter implements Completer { - private final DedicatedServer server; // Paper - CraftServer -> DedicatedServer -diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java b/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java -index 2fd69c0f915f1c3cb1c410d5dab0498f05d5c888..e8902262eb0edb422d3fd052bae2e0ef638b64ee 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java -@@ -1,10 +1,11 @@ - package org.bukkit.craftbukkit.command; - --import java.util.Map; - import org.bukkit.Server; - import org.bukkit.command.Command; - import org.bukkit.command.SimpleCommandMap; - -+import java.util.Map; -+ - public class CraftCommandMap extends SimpleCommandMap { - - public CraftCommandMap(Server server) { -diff --git a/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java -index ce2c5c38c3df124ca1569cbd7cec62a9cf11f3d5..563e01a9bd187030aea586856df141a871638435 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java -@@ -1,7 +1,6 @@ - - package org.bukkit.craftbukkit.command; - --import java.util.Set; - import net.minecraft.server.CommandListenerWrapper; - import org.bukkit.Server; - import org.bukkit.command.CommandSender; -@@ -11,6 +10,8 @@ import org.bukkit.permissions.PermissionAttachment; - import org.bukkit.permissions.PermissionAttachmentInfo; - import org.bukkit.plugin.Plugin; - -+import java.util.Set; -+ - public class ProxiedNativeCommandSender implements ProxiedCommandSender { - - private final CommandListenerWrapper orig; -diff --git a/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java -index 9776746a0a45a8e60b22c6a72ba91572c33922ff..e512df675cc01a7ff5d50cdec0ba08f23b454d6e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.command; - --import java.util.Set; - import org.bukkit.Bukkit; - import org.bukkit.Server; - import org.bukkit.command.CommandSender; -@@ -10,6 +9,8 @@ import org.bukkit.permissions.PermissionAttachment; - import org.bukkit.permissions.PermissionAttachmentInfo; - import org.bukkit.plugin.Plugin; - -+import java.util.Set; -+ - public abstract class ServerCommandSender implements CommandSender { - private static PermissibleBase blockPermInst; - private final PermissibleBase perm; -diff --git a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java -index 3c610a889f371f54b0f456266d14538fc3ff03ac..9f7ead4c0fc24fb7412a4164741a3fd57617e198 100644 ---- a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java -+++ b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java -@@ -4,21 +4,10 @@ import com.google.common.base.Joiner; - import com.mojang.brigadier.ParseResults; - import com.mojang.brigadier.suggestion.Suggestion; - import com.mojang.brigadier.tree.CommandNode; --import java.util.ArrayList; --import java.util.Collections; --import java.util.List; --import net.minecraft.server.CommandDispatcher; --import net.minecraft.server.CommandListenerWrapper; --import net.minecraft.server.DedicatedServer; --import net.minecraft.server.EntityMinecartCommandBlock; --import net.minecraft.server.MinecraftServer; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; --import org.bukkit.command.BlockCommandSender; --import org.bukkit.command.CommandSender; --import org.bukkit.command.ConsoleCommandSender; --import org.bukkit.command.ProxiedCommandSender; --import org.bukkit.command.RemoteConsoleCommandSender; -+import org.bukkit.command.*; - import org.bukkit.command.defaults.BukkitCommand; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.entity.CraftMinecartCommand; -@@ -26,6 +15,10 @@ import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.entity.Player; - import org.bukkit.entity.minecart.CommandMinecart; - -+import java.util.ArrayList; -+import java.util.Collections; -+import java.util.List; -+ - public final class VanillaCommandWrapper extends BukkitCommand { - - private final CommandDispatcher dispatcher; -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java -index 218a2190d1203ca0fbc2a5ad87e145f436aac314..ed3ff7880a075fdab86098b198b10add9dfd6684 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java -@@ -1,17 +1,17 @@ - package org.bukkit.craftbukkit.entity; - --import java.util.UUID; - import net.minecraft.server.EntityHorseAbstract; - import net.minecraft.server.GenericAttributes; - import org.apache.commons.lang.Validate; - import org.bukkit.craftbukkit.CraftServer; --import org.bukkit.craftbukkit.inventory.CraftInventoryAbstractHorse; - import org.bukkit.craftbukkit.inventory.CraftSaddledInventory; - import org.bukkit.entity.AbstractHorse; - import org.bukkit.entity.AnimalTamer; - import org.bukkit.entity.Horse; - import org.bukkit.inventory.AbstractHorseInventory; - -+import java.util.UUID; -+ - public abstract class CraftAbstractHorse extends CraftAnimals implements AbstractHorse { - - public CraftAbstractHorse(CraftServer server, EntityHorseAbstract entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractVillager.java -index 18520fec054b3bcdf73aaca95c665e7a1254b76f..c6ba1e913868dfb41fea539d284fad3d17f46282 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractVillager.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractVillager.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.entity; - --import java.util.List; - import net.minecraft.server.EntityVillager; - import net.minecraft.server.EntityVillagerAbstract; - import org.bukkit.craftbukkit.CraftServer; -@@ -12,6 +11,8 @@ import org.bukkit.inventory.Inventory; - import org.bukkit.inventory.InventoryHolder; - import org.bukkit.inventory.MerchantRecipe; - -+import java.util.List; -+ - public class CraftAbstractVillager extends CraftAgeable implements AbstractVillager, InventoryHolder { - - public CraftAbstractVillager(CraftServer server, EntityVillagerAbstract entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java -index 599db583b19fb085d55319903e35b853d1d3719e..d7b8ae59d32bf76fdb5060b384f9fb39692ab4dd 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java -@@ -1,11 +1,12 @@ - package org.bukkit.craftbukkit.entity; - - import com.google.common.base.Preconditions; --import java.util.UUID; - import net.minecraft.server.EntityAnimal; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.entity.Animals; - -+import java.util.UUID; -+ - public class CraftAnimals extends CraftAgeable implements Animals { - - public CraftAnimals(CraftServer server, EntityAnimal entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java -index ab6cbf560040a3650ac6320659897cb0c8ecec6d..6593347c49963a70be100a109be9d3aa934b572d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.entity; - - import com.google.common.collect.ImmutableList; --import java.util.List; - import net.minecraft.server.EntityAreaEffectCloud; - import net.minecraft.server.EntityLiving; - import net.minecraft.server.MobEffect; -@@ -20,6 +19,8 @@ import org.bukkit.potion.PotionEffect; - import org.bukkit.potion.PotionEffectType; - import org.bukkit.projectiles.ProjectileSource; - -+import java.util.List; -+ - public class CraftAreaEffectCloud extends CraftEntity implements AreaEffectCloud { - - public CraftAreaEffectCloud(CraftServer server, EntityAreaEffectCloud entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java -index 4947249da2d507163de90f92ff59d9b08213eafd..66c618dff4787a0fad0e8c6c9933838dd1c589ba 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.entity; - - import net.minecraft.server.EntityInsentient; --import net.minecraft.server.EntityLiving; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.entity.ComplexLivingEntity; - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java -index e8eb5f9f269effcc369237491ed543e17119afdb..289f231d1fbf2922a9d5bca96485e08659ff9a9c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderDragon.java -@@ -2,7 +2,6 @@ package org.bukkit.craftbukkit.entity; - - import com.google.common.collect.ImmutableSet; - import com.google.common.collect.ImmutableSet.Builder; --import java.util.Set; - import net.minecraft.server.DragonControllerPhase; - import net.minecraft.server.EntityComplexPart; - import net.minecraft.server.EntityEnderDragon; -@@ -14,6 +13,8 @@ import org.bukkit.entity.ComplexEntityPart; - import org.bukkit.entity.EnderDragon; - import org.bukkit.entity.EntityType; - -+import java.util.Set; -+ - public class CraftEnderDragon extends CraftComplexLivingEntity implements EnderDragon { - - public CraftEnderDragon(CraftServer server, EntityEnderDragon entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 6f18a789805163de63561569e84d9fa1b3dabb61..6b33a1e2c1f793df363697f868cbaeae01bc15f0 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -3,149 +3,10 @@ package org.bukkit.craftbukkit.entity; - import com.google.common.base.Function; - import com.google.common.base.Preconditions; - import com.google.common.collect.Lists; --import java.util.List; --import java.util.Set; --import java.util.UUID; --import net.minecraft.server.AxisAlignedBB; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.DamageSource; --import net.minecraft.server.Entity; --import net.minecraft.server.EntityAmbient; --import net.minecraft.server.EntityAnimal; --import net.minecraft.server.EntityAreaEffectCloud; --import net.minecraft.server.EntityArmorStand; --import net.minecraft.server.EntityArrow; --import net.minecraft.server.EntityBat; --import net.minecraft.server.EntityBee; --import net.minecraft.server.EntityBlaze; --import net.minecraft.server.EntityBoat; --import net.minecraft.server.EntityCat; --import net.minecraft.server.EntityCaveSpider; --import net.minecraft.server.EntityChicken; --import net.minecraft.server.EntityCod; --import net.minecraft.server.EntityComplexPart; --import net.minecraft.server.EntityCow; --import net.minecraft.server.EntityCreature; --import net.minecraft.server.EntityCreeper; --import net.minecraft.server.EntityDolphin; --import net.minecraft.server.EntityDragonFireball; --import net.minecraft.server.EntityDrowned; --import net.minecraft.server.EntityEgg; --import net.minecraft.server.EntityEnderCrystal; --import net.minecraft.server.EntityEnderDragon; --import net.minecraft.server.EntityEnderPearl; --import net.minecraft.server.EntityEnderSignal; --import net.minecraft.server.EntityEnderman; --import net.minecraft.server.EntityEndermite; --import net.minecraft.server.EntityEvoker; --import net.minecraft.server.EntityEvokerFangs; --import net.minecraft.server.EntityExperienceOrb; --import net.minecraft.server.EntityFallingBlock; --import net.minecraft.server.EntityFireball; --import net.minecraft.server.EntityFireworks; --import net.minecraft.server.EntityFish; --import net.minecraft.server.EntityFishingHook; --import net.minecraft.server.EntityFlying; --import net.minecraft.server.EntityFox; --import net.minecraft.server.EntityGhast; --import net.minecraft.server.EntityGiantZombie; --import net.minecraft.server.EntityGolem; --import net.minecraft.server.EntityGuardian; --import net.minecraft.server.EntityGuardianElder; --import net.minecraft.server.EntityHanging; --import net.minecraft.server.EntityHoglin; --import net.minecraft.server.EntityHorse; --import net.minecraft.server.EntityHorseAbstract; --import net.minecraft.server.EntityHorseChestedAbstract; --import net.minecraft.server.EntityHorseDonkey; --import net.minecraft.server.EntityHorseMule; --import net.minecraft.server.EntityHorseSkeleton; --import net.minecraft.server.EntityHorseZombie; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.EntityIllagerAbstract; --import net.minecraft.server.EntityIllagerIllusioner; --import net.minecraft.server.EntityIllagerWizard; --import net.minecraft.server.EntityIronGolem; --import net.minecraft.server.EntityItem; --import net.minecraft.server.EntityItemFrame; --import net.minecraft.server.EntityLargeFireball; --import net.minecraft.server.EntityLeash; --import net.minecraft.server.EntityLightning; --import net.minecraft.server.EntityLiving; --import net.minecraft.server.EntityLlama; --import net.minecraft.server.EntityLlamaSpit; --import net.minecraft.server.EntityLlamaTrader; --import net.minecraft.server.EntityMagmaCube; --import net.minecraft.server.EntityMinecartAbstract; --import net.minecraft.server.EntityMinecartChest; --import net.minecraft.server.EntityMinecartCommandBlock; --import net.minecraft.server.EntityMinecartFurnace; --import net.minecraft.server.EntityMinecartHopper; --import net.minecraft.server.EntityMinecartMobSpawner; --import net.minecraft.server.EntityMinecartRideable; --import net.minecraft.server.EntityMinecartTNT; --import net.minecraft.server.EntityMonster; --import net.minecraft.server.EntityMushroomCow; --import net.minecraft.server.EntityOcelot; --import net.minecraft.server.EntityPainting; --import net.minecraft.server.EntityPanda; --import net.minecraft.server.EntityParrot; --import net.minecraft.server.EntityPhantom; --import net.minecraft.server.EntityPig; --import net.minecraft.server.EntityPigZombie; --import net.minecraft.server.EntityPiglin; --import net.minecraft.server.EntityPillager; --import net.minecraft.server.EntityPlayer; --import net.minecraft.server.EntityPolarBear; --import net.minecraft.server.EntityPotion; --import net.minecraft.server.EntityProjectile; --import net.minecraft.server.EntityPufferFish; --import net.minecraft.server.EntityRabbit; --import net.minecraft.server.EntityRavager; --import net.minecraft.server.EntitySalmon; --import net.minecraft.server.EntitySheep; --import net.minecraft.server.EntityShulker; --import net.minecraft.server.EntityShulkerBullet; --import net.minecraft.server.EntitySilverfish; --import net.minecraft.server.EntitySkeletonAbstract; --import net.minecraft.server.EntitySkeletonStray; --import net.minecraft.server.EntitySkeletonWither; --import net.minecraft.server.EntitySlime; --import net.minecraft.server.EntitySmallFireball; --import net.minecraft.server.EntitySnowball; --import net.minecraft.server.EntitySnowman; --import net.minecraft.server.EntitySpectralArrow; --import net.minecraft.server.EntitySpider; --import net.minecraft.server.EntitySquid; --import net.minecraft.server.EntityStrider; --import net.minecraft.server.EntityTNTPrimed; --import net.minecraft.server.EntityTameableAnimal; --import net.minecraft.server.EntityThrownExpBottle; --import net.minecraft.server.EntityThrownTrident; --import net.minecraft.server.EntityTippedArrow; --import net.minecraft.server.EntityTropicalFish; --import net.minecraft.server.EntityTurtle; --import net.minecraft.server.EntityVex; --import net.minecraft.server.EntityVillager; --import net.minecraft.server.EntityVillagerAbstract; --import net.minecraft.server.EntityVillagerTrader; --import net.minecraft.server.EntityVindicator; --import net.minecraft.server.EntityWaterAnimal; --import net.minecraft.server.EntityWitch; --import net.minecraft.server.EntityWither; --import net.minecraft.server.EntityWitherSkull; --import net.minecraft.server.EntityWolf; --import net.minecraft.server.EntityZoglin; --import net.minecraft.server.EntityZombie; --import net.minecraft.server.EntityZombieHusk; --import net.minecraft.server.EntityZombieVillager; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.NBTTagCompound; --import org.bukkit.Chunk; // Paper --import org.bukkit.EntityEffect; --import org.bukkit.Location; --import org.bukkit.Server; -+import net.minecraft.server.*; -+import org.bukkit.Chunk; - import org.bukkit.World; -+import org.bukkit.*; - import org.bukkit.block.BlockFace; - import org.bukkit.block.PistonMoveReaction; - import org.bukkit.craftbukkit.CraftServer; -@@ -159,16 +20,16 @@ import org.bukkit.entity.Pose; - import org.bukkit.event.entity.EntityDamageEvent; - import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; - import org.bukkit.metadata.MetadataValue; --import org.bukkit.permissions.PermissibleBase; --import org.bukkit.permissions.Permission; --import org.bukkit.permissions.PermissionAttachment; --import org.bukkit.permissions.PermissionAttachmentInfo; --import org.bukkit.permissions.ServerOperator; -+import org.bukkit.permissions.*; - import org.bukkit.plugin.Plugin; - import org.bukkit.util.BoundingBox; - import org.bukkit.util.NumberConversions; - import org.bukkit.util.Vector; - -+import java.util.List; -+import java.util.Set; -+import java.util.UUID; -+ - public abstract class CraftEntity implements org.bukkit.entity.Entity { - private static PermissibleBase perm; - private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java -index 97fdf356034dd6b063519474fca6e4d947e6b886..f1437d2c508c82eba3cd614d61c9ca1b60166404 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.entity; - - import net.minecraft.server.EntityFireball; --import net.minecraft.server.MathHelper; - import org.apache.commons.lang.Validate; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.entity.EntityType; -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java -index f3066e6c781bcee72c235abcef5060fb080892d5..618b96769d4c99983db6d35c0539412cd70d2eb8 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.entity; - --import java.util.Random; - import net.minecraft.server.EntityFireworks; - import net.minecraft.server.ItemStack; - import net.minecraft.server.Items; -@@ -11,6 +10,8 @@ import org.bukkit.entity.EntityType; - import org.bukkit.entity.Firework; - import org.bukkit.inventory.meta.FireworkMeta; - -+import java.util.Random; -+ - public class CraftFirework extends CraftProjectile implements Firework { - - private final Random random = new Random(); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java -index 0b73a448604177dcc2b4c4dc77c7186dfc397135..7a2e186336defb8020b91cc55d154e024e461223 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java -@@ -1,14 +1,15 @@ - package org.bukkit.craftbukkit.entity; - - import com.google.common.base.Preconditions; --import java.util.Optional; --import java.util.UUID; - import net.minecraft.server.EntityFox; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.entity.AnimalTamer; - import org.bukkit.entity.EntityType; - import org.bukkit.entity.Fox; - -+import java.util.Optional; -+import java.util.UUID; -+ - public class CraftFox extends CraftAnimals implements Fox { - - public CraftFox(CraftServer server, EntityFox entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index fef2035fe5564645d786d042dceedb10ca8b59ce..a2e283b941f399380551920a0533f7cdc15df8f5 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -2,36 +2,7 @@ package org.bukkit.craftbukkit.entity; - - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableSet; --import java.util.ArrayList; --import java.util.Arrays; --import java.util.Collection; --import java.util.Optional; --import java.util.Set; --import net.minecraft.server.BlockBed; --import net.minecraft.server.BlockEnchantmentTable; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.BlockWorkbench; --import net.minecraft.server.Blocks; --import net.minecraft.server.ChatComponentText; --import net.minecraft.server.Container; --import net.minecraft.server.Containers; --import net.minecraft.server.CraftingManager; --import net.minecraft.server.Entity; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.EntityPlayer; --import net.minecraft.server.EntityTypes; --import net.minecraft.server.EnumMainHand; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.IMerchant; --import net.minecraft.server.IRecipe; --import net.minecraft.server.ITileInventory; --import net.minecraft.server.ItemCooldown; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.PacketPlayInCloseWindow; --import net.minecraft.server.PacketPlayOutOpenWindow; --import net.minecraft.server.TileEntity; --import net.minecraft.server.TileEntityContainer; -+import net.minecraft.server.*; - import org.bukkit.GameMode; - import org.bukkit.Location; - import org.bukkit.Material; -@@ -39,31 +10,23 @@ import org.bukkit.NamespacedKey; - import org.bukkit.block.Block; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.event.CraftEventFactory; --import org.bukkit.craftbukkit.inventory.CraftContainer; --import org.bukkit.craftbukkit.inventory.CraftInventory; --import org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest; --import org.bukkit.craftbukkit.inventory.CraftInventoryPlayer; --import org.bukkit.craftbukkit.inventory.CraftInventoryView; --import org.bukkit.craftbukkit.inventory.CraftItemStack; --import org.bukkit.craftbukkit.inventory.CraftMerchantCustom; -+import org.bukkit.craftbukkit.inventory.*; - import org.bukkit.craftbukkit.util.CraftChatMessage; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; - import org.bukkit.entity.HumanEntity; - import org.bukkit.entity.Villager; --import org.bukkit.inventory.EntityEquipment; --import org.bukkit.inventory.Inventory; --import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.ItemStack; --import org.bukkit.inventory.MainHand; --import org.bukkit.inventory.Merchant; - import org.bukkit.inventory.PlayerInventory; -+import org.bukkit.inventory.*; - import org.bukkit.permissions.PermissibleBase; - import org.bukkit.permissions.Permission; - import org.bukkit.permissions.PermissionAttachment; - import org.bukkit.permissions.PermissionAttachmentInfo; - import org.bukkit.plugin.Plugin; - -+import java.util.*; -+ - public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { - private CraftInventoryPlayer inventory; - private final CraftInventory enderChest; -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index cb756b1ba0438045904a1b3fe8e827e8f1e105bd..0797782298ac903929c2f46c556a7d6a7a8d2262 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -8,7 +8,6 @@ import org.bukkit.entity.EntityType; - import org.bukkit.entity.Item; - import org.bukkit.inventory.ItemStack; - --// Paper start - import javax.annotation.Nullable; - import java.util.UUID; - // Paper end -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java -index 8a43416ae2a9b923e3fa2b207931cb48cdb6bbd2..e36af9de1263fa07e523451f0a6efc667e9111a7 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItemFrame.java -@@ -1,11 +1,6 @@ - package org.bukkit.craftbukkit.entity; - --import net.minecraft.server.BlockPosition; --import net.minecraft.server.EntityHanging; --import net.minecraft.server.EntityItemFrame; --import net.minecraft.server.EnumDirection; --import net.minecraft.server.ItemStack; --import net.minecraft.server.WorldServer; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.Rotation; - import org.bukkit.block.BlockFace; -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 3777aba5f32f58f4620d4fe496af4e641ff8c858..d9d4ba1f0b9e47b8632b2488f7a639e303b392d6 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -2,42 +2,7 @@ package org.bukkit.craftbukkit.entity; - - import com.google.common.base.Preconditions; - import com.google.common.collect.Sets; --import java.util.ArrayList; --import java.util.Collection; --import java.util.Iterator; --import java.util.List; --import java.util.Set; --import java.util.UUID; --import net.minecraft.server.DamageSource; --import net.minecraft.server.EntityArmorStand; --import net.minecraft.server.EntityArrow; --import net.minecraft.server.EntityDragonFireball; --import net.minecraft.server.EntityEgg; --import net.minecraft.server.EntityEnderPearl; --import net.minecraft.server.EntityFireball; --import net.minecraft.server.EntityFireworks; --import net.minecraft.server.EntityFishingHook; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.EntityInsentient; --import net.minecraft.server.EntityLargeFireball; --import net.minecraft.server.EntityLiving; --import net.minecraft.server.EntityLlamaSpit; --import net.minecraft.server.EntityPotion; --import net.minecraft.server.EntityProjectile; --import net.minecraft.server.EntityShulkerBullet; --import net.minecraft.server.EntitySmallFireball; --import net.minecraft.server.EntitySnowball; --import net.minecraft.server.EntitySpectralArrow; --import net.minecraft.server.EntityThrownExpBottle; --import net.minecraft.server.EntityThrownTrident; --import net.minecraft.server.EntityTippedArrow; --import net.minecraft.server.EntityTypes; --import net.minecraft.server.EntityWither; --import net.minecraft.server.EntityWitherSkull; --import net.minecraft.server.EnumHand; --import net.minecraft.server.GenericAttributes; --import net.minecraft.server.MobEffect; --import net.minecraft.server.MobEffectList; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.FluidCollisionMode; - import org.bukkit.Location; -@@ -52,30 +17,8 @@ import org.bukkit.craftbukkit.entity.memory.CraftMemoryMapper; - import org.bukkit.craftbukkit.inventory.CraftEntityEquipment; - import org.bukkit.craftbukkit.inventory.CraftItemStack; - import org.bukkit.craftbukkit.potion.CraftPotionUtil; --import org.bukkit.entity.AbstractArrow; --import org.bukkit.entity.DragonFireball; --import org.bukkit.entity.Egg; --import org.bukkit.entity.EnderPearl; - import org.bukkit.entity.Entity; --import org.bukkit.entity.EntityType; --import org.bukkit.entity.Fireball; --import org.bukkit.entity.Firework; --import org.bukkit.entity.FishHook; --import org.bukkit.entity.HumanEntity; --import org.bukkit.entity.LingeringPotion; --import org.bukkit.entity.LivingEntity; --import org.bukkit.entity.LlamaSpit; --import org.bukkit.entity.Player; --import org.bukkit.entity.Projectile; --import org.bukkit.entity.ShulkerBullet; --import org.bukkit.entity.SmallFireball; --import org.bukkit.entity.Snowball; --import org.bukkit.entity.SpectralArrow; --import org.bukkit.entity.ThrownExpBottle; --import org.bukkit.entity.ThrownPotion; --import org.bukkit.entity.TippedArrow; --import org.bukkit.entity.Trident; --import org.bukkit.entity.WitherSkull; -+import org.bukkit.entity.*; - import org.bukkit.entity.memory.MemoryKey; - import org.bukkit.event.entity.EntityPotionEffectEvent; - import org.bukkit.event.player.PlayerTeleportEvent; -@@ -89,6 +32,8 @@ import org.bukkit.util.BlockIterator; - import org.bukkit.util.RayTraceResult; - import org.bukkit.util.Vector; - -+import java.util.*; -+ - public class CraftLivingEntity extends CraftEntity implements LivingEntity { - private CraftEntityEquipment equipment; - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java -index ab4807b2cd3cdcd61d8ac4ae2825df69dd2b7c64..6cf5d3a3bc91e11110a35ea52d8172307d862e09 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java -@@ -1,6 +1,6 @@ - package org.bukkit.craftbukkit.entity; - --import com.destroystokyo.paper.loottable.PaperLootableEntityInventory; // Paper -+import com.destroystokyo.paper.loottable.PaperLootableEntityInventory; - import net.minecraft.server.EntityMinecartChest; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.inventory.CraftInventory; -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java -index 89affac56d40ed4b20d5ddd668d0f820bad72a3f..430ce5f831e1e15ea054338098f05f685f9cc388 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartCommand.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.entity; - --import java.util.Set; - import net.minecraft.server.EntityMinecartCommandBlock; - import org.bukkit.Bukkit; - import org.bukkit.Server; -@@ -14,6 +13,8 @@ import org.bukkit.permissions.PermissionAttachment; - import org.bukkit.permissions.PermissionAttachmentInfo; - import org.bukkit.plugin.Plugin; - -+import java.util.Set; -+ - public class CraftMinecartCommand extends CraftMinecart implements CommandMinecart { - private final PermissibleBase perm = new PermissibleBase(this); - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java -index f5b31237fc6e62345edcc3d6b02ff9e94237ae31..326478d8e79bec0f5523badae09f0279b6faf99e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java -@@ -1,6 +1,6 @@ - package org.bukkit.craftbukkit.entity; - --import com.destroystokyo.paper.loottable.PaperLootableEntityInventory; // Paper -+import com.destroystokyo.paper.loottable.PaperLootableEntityInventory; - import net.minecraft.server.EntityMinecartHopper; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.inventory.CraftInventory; -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index adf918fd757fe3147f897de3ade64a9adf1d3203..3dbf0254047bc0c8a0bb06091b7e4407f285832c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1,8 +1,8 @@ - package org.bukkit.craftbukkit.entity; - -+import com.destroystokyo.paper.ClientOption; - import com.destroystokyo.paper.ClientOption.ChatVisibility; - import com.destroystokyo.paper.PaperSkinParts; --import com.destroystokyo.paper.ClientOption; - import com.destroystokyo.paper.Title; - import com.destroystokyo.paper.profile.CraftPlayerProfile; - import com.destroystokyo.paper.profile.PlayerProfile; -@@ -11,99 +11,21 @@ import com.google.common.collect.ImmutableSet; - import com.google.common.io.BaseEncoding; - import com.mojang.authlib.GameProfile; - import io.netty.buffer.Unpooled; --import java.io.ByteArrayOutputStream; --import java.io.IOException; --import java.lang.ref.WeakReference; --import java.net.InetSocketAddress; --import java.net.SocketAddress; --import java.util.ArrayList; --import java.util.Collection; --import java.util.HashMap; --import java.util.HashSet; --import java.util.LinkedHashMap; --import java.util.List; --import java.util.Map; --import java.util.Optional; --import java.util.Set; --import java.util.UUID; --import java.util.WeakHashMap; --import java.util.logging.Level; --import java.util.logging.Logger; --import javax.annotation.Nullable; --import net.minecraft.server.AdvancementDataPlayer; --import net.minecraft.server.AdvancementProgress; --import net.minecraft.server.AttributeMapBase; --import net.minecraft.server.AttributeModifiable; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.ChatComponentText; --import net.minecraft.server.ChatMessageType; --import net.minecraft.server.Container; --import net.minecraft.server.Entity; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.EntityLiving; --import net.minecraft.server.EntityPlayer; --import net.minecraft.server.EnumColor; --import net.minecraft.server.EnumGamemode; --import net.minecraft.server.GenericAttributes; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.MCUtil; --import net.minecraft.server.MapIcon; --import net.minecraft.server.MinecraftKey; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.PacketDataSerializer; --import net.minecraft.server.PacketPlayOutBlockChange; --import net.minecraft.server.PacketPlayOutChat; --import net.minecraft.server.PacketPlayOutCustomPayload; --import net.minecraft.server.PacketPlayOutCustomSoundEffect; --import net.minecraft.server.PacketPlayOutExperience; --import net.minecraft.server.PacketPlayOutMap; --import net.minecraft.server.PacketPlayOutNamedSoundEffect; --import net.minecraft.server.PacketPlayOutPlayerInfo; --import net.minecraft.server.PacketPlayOutPlayerListHeaderFooter; --import net.minecraft.server.PacketPlayOutSpawnPosition; --import net.minecraft.server.PacketPlayOutStopSound; --import net.minecraft.server.PacketPlayOutTitle; --import net.minecraft.server.PacketPlayOutUpdateAttributes; --import net.minecraft.server.PacketPlayOutUpdateHealth; --import net.minecraft.server.PacketPlayOutWorldEvent; --import net.minecraft.server.PacketPlayOutWorldParticles; --import net.minecraft.server.PlayerChunkMap; --import net.minecraft.server.PlayerConnection; --import net.minecraft.server.SystemUtils; --import net.minecraft.server.TileEntitySign; --import net.minecraft.server.Vec3D; --import net.minecraft.server.WhiteListEntry; --import net.minecraft.server.WorldServer; -+import net.md_5.bungee.api.chat.BaseComponent; -+import net.minecraft.server.*; - import org.apache.commons.lang.NotImplementedException; - import org.apache.commons.lang.Validate; --import org.bukkit.BanList; --import org.bukkit.Bukkit; --import org.bukkit.DyeColor; --import org.bukkit.Effect; --import org.bukkit.GameMode; --import org.bukkit.Instrument; --import org.bukkit.Location; - import org.bukkit.Material; --import org.bukkit.NamespacedKey; --import org.bukkit.Note; --import org.bukkit.OfflinePlayer; - import org.bukkit.Particle; --import org.bukkit.Sound; - import org.bukkit.Statistic; --import org.bukkit.WeatherType; - import org.bukkit.World; -+import org.bukkit.*; - import org.bukkit.block.data.BlockData; - import org.bukkit.configuration.serialization.DelegateDeserialization; - import org.bukkit.conversations.Conversation; - import org.bukkit.conversations.ConversationAbandonedEvent; - import org.bukkit.conversations.ManuallyAbandonedConversationCanceller; --import org.bukkit.craftbukkit.CraftEffect; --import org.bukkit.craftbukkit.CraftOfflinePlayer; --import org.bukkit.craftbukkit.CraftParticle; --import org.bukkit.craftbukkit.CraftServer; --import org.bukkit.craftbukkit.CraftSound; --import org.bukkit.craftbukkit.CraftStatistic; --import org.bukkit.craftbukkit.CraftWorld; -+import org.bukkit.craftbukkit.*; - import org.bukkit.craftbukkit.advancement.CraftAdvancement; - import org.bukkit.craftbukkit.advancement.CraftAdvancementProgress; - import org.bukkit.craftbukkit.block.CraftSign; -@@ -129,7 +51,15 @@ import org.bukkit.plugin.Plugin; - import org.bukkit.plugin.messaging.StandardMessenger; - import org.bukkit.scoreboard.Scoreboard; - --import net.md_5.bungee.api.chat.BaseComponent; // Spigot -+import javax.annotation.Nullable; -+import java.io.ByteArrayOutputStream; -+import java.io.IOException; -+import java.lang.ref.WeakReference; -+import java.net.InetSocketAddress; -+import java.net.SocketAddress; -+import java.util.*; -+import java.util.logging.Level; -+import java.util.logging.Logger; - - @DelegateDeserialization(CraftOfflinePlayer.class) - public class CraftPlayer extends CraftHumanEntity implements Player { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java -index 6a642155cf387f7d0e2cf9bdf1a78c62aef8205b..eaef6458d62093667c620a267a0bcd1d5761fef4 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTameableAnimal.java -@@ -1,12 +1,13 @@ - package org.bukkit.craftbukkit.entity; - --import java.util.UUID; - import net.minecraft.server.EntityTameableAnimal; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.entity.AnimalTamer; - import org.bukkit.entity.Creature; - import org.bukkit.entity.Tameable; - -+import java.util.UUID; -+ - public class CraftTameableAnimal extends CraftAnimals implements Tameable, Creature { - public CraftTameableAnimal(CraftServer server, EntityTameableAnimal entity) { - super(server, entity); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java -index 2400f33093639dcf70884b939da2426a8821f1b9..d23f625d17f96237ffa85c335456b0d86dd12706 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.entity; - - import com.google.common.collect.ImmutableList; --import java.util.Collection; - import net.minecraft.server.EntityPotion; - import net.minecraft.server.MobEffect; - import net.minecraft.server.PotionUtil; -@@ -15,6 +14,8 @@ import org.bukkit.entity.ThrownPotion; - import org.bukkit.inventory.ItemStack; - import org.bukkit.potion.PotionEffect; - -+import java.util.Collection; -+ - public class CraftThrownPotion extends CraftProjectile implements ThrownPotion { - public CraftThrownPotion(CraftServer server, EntityPotion entity) { - super(server, entity); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTippedArrow.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTippedArrow.java -index ecdaa2b97f48486362eedded188fec4246117d8e..dabe6775f5b8a00cba52a4a304201a5762141a76 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTippedArrow.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTippedArrow.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.entity; - - import com.google.common.collect.ImmutableList; --import java.util.List; - import net.minecraft.server.EntityTippedArrow; - import net.minecraft.server.MobEffect; - import net.minecraft.server.MobEffectList; -@@ -15,6 +14,8 @@ import org.bukkit.potion.PotionData; - import org.bukkit.potion.PotionEffect; - import org.bukkit.potion.PotionEffectType; - -+import java.util.List; -+ - public class CraftTippedArrow extends CraftArrow implements Arrow { - - public CraftTippedArrow(CraftServer server, EntityTippedArrow entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java -index 9243381a2fbdf255b3772000ba1c4653871ab976..5c6523bfa26d94da2eaade55aea740c436a5138e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java -@@ -1,13 +1,14 @@ - package org.bukkit.craftbukkit.entity; - --import java.util.HashMap; --import java.util.Map; - import net.minecraft.server.EntityTropicalFish; - import org.bukkit.DyeColor; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.entity.EntityType; - import org.bukkit.entity.TropicalFish; - -+import java.util.HashMap; -+import java.util.Map; -+ - public class CraftTropicalFish extends CraftFish implements TropicalFish { - - public CraftTropicalFish(CraftServer server, EntityTropicalFish entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -index 85a7406048a5d44b8e26d7949feacb7ec12c575c..a9ead9a050998bca4f855ad31d669e5aa0c4fdfd 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -1,19 +1,9 @@ - package org.bukkit.craftbukkit.entity; - --import com.destroystokyo.paper.entity.villager.Reputation; // Paper -+import com.destroystokyo.paper.entity.villager.Reputation; - import com.google.common.base.Preconditions; --import com.google.common.collect.Maps; // Paper -- --import java.util.HashMap; --import java.util.Locale; --import net.minecraft.server.BlockBed; --import net.minecraft.server.BlockPosition; --import java.util.Map; // Paper --import java.util.UUID; // Paper --import net.minecraft.server.EntityVillager; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IRegistry; --import net.minecraft.server.VillagerProfession; -+import com.google.common.collect.Maps; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; - import org.bukkit.craftbukkit.CraftServer; -@@ -21,6 +11,11 @@ import org.bukkit.craftbukkit.util.CraftNamespacedKey; - import org.bukkit.entity.EntityType; - import org.bukkit.entity.Villager; - -+import java.util.HashMap; -+import java.util.Locale; -+import java.util.Map; -+import java.util.UUID; -+ - public class CraftVillager extends CraftAbstractVillager implements Villager { - - public CraftVillager(CraftServer server, EntityVillager entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java -index 2c8f157a928c6a05575eb2760be2b40cc3fda293..60d3135d5a503a982bea7f3738f2439c57244057 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java -@@ -1,8 +1,6 @@ - package org.bukkit.craftbukkit.entity; - - import com.google.common.base.Preconditions; --import java.util.Locale; --import java.util.UUID; - import net.minecraft.server.EntityZombieVillager; - import net.minecraft.server.IRegistry; - import net.minecraft.server.MinecraftKey; -@@ -16,6 +14,9 @@ import org.bukkit.entity.EntityType; - import org.bukkit.entity.Villager; - import org.bukkit.entity.ZombieVillager; - -+import java.util.Locale; -+import java.util.UUID; -+ - public class CraftVillagerZombie extends CraftZombie implements ZombieVillager { - - public CraftVillagerZombie(CraftServer server, EntityZombieVillager entity) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java -index b43a2bbd5bfd613887a7ae1519f6e729faf9bcc2..e1f23f1a5cf535129b150edaaae7b0e754cd2442 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java -@@ -1,14 +1,13 @@ - package org.bukkit.craftbukkit.entity; - --import net.minecraft.server.EntityWitch; --import org.bukkit.craftbukkit.CraftServer; --import org.bukkit.entity.EntityType; --import org.bukkit.entity.Witch; --// Paper start - import com.destroystokyo.paper.entity.CraftRangedEntity; - import com.google.common.base.Preconditions; -+import net.minecraft.server.EntityWitch; - import org.bukkit.Material; -+import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.inventory.CraftItemStack; -+import org.bukkit.entity.EntityType; -+import org.bukkit.entity.Witch; - import org.bukkit.inventory.ItemStack; - // Paper end - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryMapper.java b/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryMapper.java -index 0616cdf196d734312b3ce62e4e032119a9b46499..e96c9887cf6900ef75d289ab97533635fb9244b9 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryMapper.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/memory/CraftMemoryMapper.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.entity.memory; - --import java.util.UUID; - import net.minecraft.server.BlockPosition; - import net.minecraft.server.GlobalPos; - import org.bukkit.Bukkit; -@@ -8,6 +7,8 @@ import org.bukkit.Location; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.CraftWorld; - -+import java.util.UUID; -+ - public final class CraftMemoryMapper { - - private CraftMemoryMapper() {} -diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6b01f0493c4905142c2c2038e8e57adc3d37c02b..a3fc8c0b641f0224affc399a73ef55f324c336b4 100644 ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -4,85 +4,18 @@ import com.google.common.base.Function; - import com.google.common.base.Functions; - import com.google.common.collect.Lists; - import com.mojang.datafixers.util.Either; --import java.net.InetAddress; --import java.util.ArrayList; --import java.util.Collections; --import java.util.EnumMap; --import java.util.List; --import java.util.Map; --import java.util.stream.Collectors; --import javax.annotation.Nullable; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.BlockPropertyInstrument; --import net.minecraft.server.ChatMessage; --import net.minecraft.server.ChatModifier; --import net.minecraft.server.Container; --import net.minecraft.server.ContainerMerchant; --import net.minecraft.server.DamageSource; - import net.minecraft.server.Entity; --import net.minecraft.server.EntityAnimal; --import net.minecraft.server.EntityAreaEffectCloud; --import net.minecraft.server.EntityDamageSource; --import net.minecraft.server.EntityDamageSourceIndirect; --import net.minecraft.server.EntityEnderCrystal; --import net.minecraft.server.EntityEnderDragon; --import net.minecraft.server.EntityExperienceOrb; --import net.minecraft.server.EntityFireworks; --import net.minecraft.server.EntityGhast; --import net.minecraft.server.EntityGolem; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.EntityInsentient; --import net.minecraft.server.EntityItem; --import net.minecraft.server.EntityLiving; --import net.minecraft.server.EntityMonster; --import net.minecraft.server.EntityPlayer; --import net.minecraft.server.EntityPotion; --import net.minecraft.server.EntityRaider; --import net.minecraft.server.EntitySlime; --import net.minecraft.server.EntityStrider; --import net.minecraft.server.EntityTypes; --import net.minecraft.server.EntityVillager; --import net.minecraft.server.EntityWaterAnimal; --import net.minecraft.server.EnumDirection; --import net.minecraft.server.EnumHand; --import net.minecraft.server.EnumItemSlot; --import net.minecraft.server.Explosion; --import net.minecraft.server.GeneratorAccess; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.IInventory; --import net.minecraft.server.IProjectile; --import net.minecraft.server.ItemActionContext; --import net.minecraft.server.ItemStack; --import net.minecraft.server.Items; --import net.minecraft.server.LootContextParameters; --import net.minecraft.server.LootTable; --import net.minecraft.server.LootTableInfo; --import net.minecraft.server.MinecraftKey; --import net.minecraft.server.MobEffect; --import net.minecraft.server.MovingObjectPosition; --import net.minecraft.server.MovingObjectPositionBlock; --import net.minecraft.server.MovingObjectPositionEntity; - import net.minecraft.server.NPC; --import net.minecraft.server.PacketPlayInCloseWindow; - import net.minecraft.server.Raid; --import net.minecraft.server.Unit; - import net.minecraft.server.World; --import net.minecraft.server.WorldServer; --import org.bukkit.Bukkit; --import org.bukkit.Location; -+import net.minecraft.server.*; - import org.bukkit.Material; --import org.bukkit.NamespacedKey; --import org.bukkit.Server; -+import org.bukkit.*; - import org.bukkit.Statistic.Type; - import org.bukkit.block.Block; - import org.bukkit.block.BlockFace; - import org.bukkit.block.BlockState; --import org.bukkit.craftbukkit.CraftLootTable; --import org.bukkit.craftbukkit.CraftRaid; --import org.bukkit.craftbukkit.CraftServer; --import org.bukkit.craftbukkit.CraftStatistic; --import org.bukkit.craftbukkit.CraftWorld; -+import org.bukkit.craftbukkit.*; - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.craftbukkit.block.CraftBlockState; - import org.bukkit.craftbukkit.block.data.CraftBlockData; -@@ -97,116 +30,21 @@ import org.bukkit.craftbukkit.potion.CraftPotionUtil; - import org.bukkit.craftbukkit.util.CraftDamageSource; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; --import org.bukkit.entity.AbstractHorse; --import org.bukkit.entity.Animals; --import org.bukkit.entity.AreaEffectCloud; --import org.bukkit.entity.Bat; --import org.bukkit.entity.Creeper; --import org.bukkit.entity.EntityType; --import org.bukkit.entity.ExperienceOrb; --import org.bukkit.entity.Firework; --import org.bukkit.entity.HumanEntity; - import org.bukkit.entity.Item; --import org.bukkit.entity.LightningStrike; --import org.bukkit.entity.LivingEntity; --import org.bukkit.entity.Pig; --import org.bukkit.entity.PigZombie; --import org.bukkit.entity.Player; --import org.bukkit.entity.Projectile; --import org.bukkit.entity.Raider; --import org.bukkit.entity.Strider; --import org.bukkit.entity.ThrownExpBottle; --import org.bukkit.entity.ThrownPotion; --import org.bukkit.entity.Vehicle; --import org.bukkit.entity.Villager; -+import org.bukkit.entity.*; - import org.bukkit.entity.Villager.Profession; --import org.bukkit.entity.ExperienceOrb; // Paper - import org.bukkit.event.Cancellable; - import org.bukkit.event.Event; - import org.bukkit.event.Event.Result; --import org.bukkit.event.block.Action; --import org.bukkit.event.block.BlockDamageEvent; --import org.bukkit.event.block.BlockDropItemEvent; --import org.bukkit.event.block.BlockFadeEvent; --import org.bukkit.event.block.BlockFormEvent; --import org.bukkit.event.block.BlockGrowEvent; --import org.bukkit.event.block.BlockIgniteEvent; -+import org.bukkit.event.block.*; - import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; --import org.bukkit.event.block.BlockMultiPlaceEvent; --import org.bukkit.event.block.BlockPhysicsEvent; --import org.bukkit.event.block.BlockPlaceEvent; --import org.bukkit.event.block.BlockRedstoneEvent; --import org.bukkit.event.block.BlockShearEntityEvent; --import org.bukkit.event.block.BlockSpreadEvent; --import org.bukkit.event.block.EntityBlockFormEvent; --import org.bukkit.event.block.FluidLevelChangeEvent; --import org.bukkit.event.block.MoistureChangeEvent; --import org.bukkit.event.block.NotePlayEvent; --import org.bukkit.event.entity.AreaEffectCloudApplyEvent; --import org.bukkit.event.entity.BatToggleSleepEvent; --import org.bukkit.event.entity.CreatureSpawnEvent; -+import org.bukkit.event.entity.*; - import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; --import org.bukkit.event.entity.CreeperPowerEvent; --import org.bukkit.event.entity.EntityBreakDoorEvent; --import org.bukkit.event.entity.EntityBreedEvent; --import org.bukkit.event.entity.EntityChangeBlockEvent; --import org.bukkit.event.entity.EntityDamageByBlockEvent; --import org.bukkit.event.entity.EntityDamageByEntityEvent; --import org.bukkit.event.entity.EntityDamageEvent; - import org.bukkit.event.entity.EntityDamageEvent.DamageCause; - import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; --import org.bukkit.event.entity.EntityDeathEvent; --import org.bukkit.event.entity.EntityEnterLoveModeEvent; --import org.bukkit.event.entity.EntityPickupItemEvent; --import org.bukkit.event.entity.EntityPlaceEvent; --import org.bukkit.event.entity.EntityPortalEvent; --import org.bukkit.event.entity.EntityPotionEffectEvent; --import org.bukkit.event.entity.EntityShootBowEvent; --import org.bukkit.event.entity.EntitySpawnEvent; --import org.bukkit.event.entity.EntityTameEvent; --import org.bukkit.event.entity.EntityTargetEvent; --import org.bukkit.event.entity.EntityTargetLivingEntityEvent; --import org.bukkit.event.entity.EntityToggleGlideEvent; --import org.bukkit.event.entity.EntityToggleSwimEvent; --import org.bukkit.event.entity.EntityTransformEvent; --import org.bukkit.event.entity.ExpBottleEvent; --import org.bukkit.event.entity.FireworkExplodeEvent; --import org.bukkit.event.entity.FoodLevelChangeEvent; --import org.bukkit.event.entity.HorseJumpEvent; --import org.bukkit.event.entity.ItemDespawnEvent; --import org.bukkit.event.entity.ItemMergeEvent; --import org.bukkit.event.entity.ItemSpawnEvent; --import org.bukkit.event.entity.LingeringPotionSplashEvent; --import org.bukkit.event.entity.PigZapEvent; --import org.bukkit.event.entity.PlayerDeathEvent; --import org.bukkit.event.entity.PlayerLeashEntityEvent; --import org.bukkit.event.entity.PotionSplashEvent; --import org.bukkit.event.entity.ProjectileHitEvent; --import org.bukkit.event.entity.ProjectileLaunchEvent; --import org.bukkit.event.entity.StriderTemperatureChangeEvent; --import org.bukkit.event.entity.VillagerCareerChangeEvent; --import org.bukkit.event.inventory.InventoryCloseEvent; --import org.bukkit.event.inventory.InventoryOpenEvent; --import org.bukkit.event.inventory.PrepareAnvilEvent; --import org.bukkit.event.inventory.PrepareItemCraftEvent; --import org.bukkit.event.inventory.PrepareSmithingEvent; --import org.bukkit.event.inventory.TradeSelectEvent; --import org.bukkit.event.player.PlayerBedEnterEvent; -+import org.bukkit.event.inventory.*; -+import org.bukkit.event.player.*; - import org.bukkit.event.player.PlayerBedEnterEvent.BedEnterResult; --import org.bukkit.event.player.PlayerBucketEmptyEvent; --import org.bukkit.event.player.PlayerBucketFillEvent; --import org.bukkit.event.player.PlayerEditBookEvent; --import org.bukkit.event.player.PlayerEvent; --import org.bukkit.event.player.PlayerExpChangeEvent; --import org.bukkit.event.player.PlayerHarvestBlockEvent; --import org.bukkit.event.player.PlayerInteractEvent; --import org.bukkit.event.player.PlayerItemBreakEvent; --import org.bukkit.event.player.PlayerItemMendEvent; --import org.bukkit.event.player.PlayerLevelChangeEvent; --import org.bukkit.event.player.PlayerRecipeDiscoverEvent; --import org.bukkit.event.player.PlayerShearEntityEvent; --import org.bukkit.event.player.PlayerStatisticIncrementEvent; --import org.bukkit.event.player.PlayerUnleashEntityEvent; - import org.bukkit.event.raid.RaidFinishEvent; - import org.bukkit.event.raid.RaidSpawnWaveEvent; - import org.bukkit.event.raid.RaidStopEvent; -@@ -218,9 +56,11 @@ import org.bukkit.inventory.EquipmentSlot; - import org.bukkit.inventory.InventoryView; - import org.bukkit.inventory.meta.BookMeta; - import org.bukkit.potion.PotionEffect; --import org.bukkit.projectiles.ProjectileSource; - --import org.bukkit.event.entity.SpawnerSpawnEvent; // Spigot -+import javax.annotation.Nullable; -+import java.net.InetAddress; -+import java.util.*; -+import java.util.stream.Collectors; - - public class CraftEventFactory { - public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN); -diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java -index ab43c97e8fdcb977ed6349e4163e8ba115588adf..baa14fe42eb07cdc10cf58580478af585f680697 100644 ---- a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java -+++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java -@@ -1,7 +1,5 @@ - package org.bukkit.craftbukkit.generator; - --import java.util.HashSet; --import java.util.Set; - import net.minecraft.server.BlockPosition; - import net.minecraft.server.Blocks; - import net.minecraft.server.ChunkSection; -@@ -14,6 +12,9 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.material.MaterialData; - -+import java.util.HashSet; -+import java.util.Set; -+ - /** - * Data to be used for the block types and data in a newly generated chunk. - */ -diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -index b53d44f0c2dd5f4f2033d4017ee9d6e2d0b6e7ae..afdec465f7b739e8f54b2d2127dd1725997e71a2 100644 ---- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -+++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -@@ -2,39 +2,16 @@ package org.bukkit.craftbukkit.generator; - - import com.google.common.base.Preconditions; - import com.mojang.serialization.Codec; --import java.util.List; --import java.util.Random; --import net.minecraft.server.BiomeBase; --import net.minecraft.server.BiomeManager; --import net.minecraft.server.BiomeStorage; --import net.minecraft.server.Block; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.ChunkSection; --import net.minecraft.server.DefinedStructureManager; --import net.minecraft.server.DimensionManager; --import net.minecraft.server.EnumCreatureType; --import net.minecraft.server.GeneratorAccess; --import net.minecraft.server.HeightMap; --import net.minecraft.server.IBlockAccess; --import net.minecraft.server.IChunkAccess; --import net.minecraft.server.ITileEntity; --import net.minecraft.server.ProtoChunk; --import net.minecraft.server.RegionLimitedWorldAccess; --import net.minecraft.server.RegistryMaterials; --import net.minecraft.server.StructureManager; --import net.minecraft.server.StructureSettings; --import net.minecraft.server.TileEntity; --import net.minecraft.server.WorldChunkManager; --import net.minecraft.server.WorldDimension; --import net.minecraft.server.WorldGenStage; --import net.minecraft.server.WorldServer; --import org.bukkit.World; -+import net.minecraft.server.*; - import org.bukkit.block.Biome; - import org.bukkit.craftbukkit.block.CraftBlock; - import org.bukkit.generator.ChunkGenerator; - import org.bukkit.generator.ChunkGenerator.BiomeGrid; - import org.bukkit.generator.ChunkGenerator.ChunkData; - -+import java.util.List; -+import java.util.Random; -+ - public class CustomChunkGenerator extends InternalChunkGenerator { - private final net.minecraft.server.ChunkGenerator delegate; - private final ChunkGenerator generator; -diff --git a/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java b/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java -index 77134d74bdfe9a56e858deb4cdbdef0b1b7ebc58..2089a5f524220178ca231dd569ab0a963552d5be 100644 ---- a/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java -+++ b/src/main/java/org/bukkit/craftbukkit/help/CustomIndexHelpTopic.java -@@ -1,13 +1,14 @@ - package org.bukkit.craftbukkit.help; - --import java.util.HashSet; --import java.util.LinkedList; --import java.util.List; - import org.bukkit.command.CommandSender; - import org.bukkit.help.HelpMap; - import org.bukkit.help.HelpTopic; - import org.bukkit.help.IndexHelpTopic; - -+import java.util.HashSet; -+import java.util.LinkedList; -+import java.util.List; -+ - /** - */ - public class CustomIndexHelpTopic extends IndexHelpTopic { -diff --git a/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java b/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java -index d3f17d4cde99c4948244f53e6f54326e4f180b99..4b710c12045aa19a42bd62c9008b19dc2b62ff99 100644 ---- a/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java -+++ b/src/main/java/org/bukkit/craftbukkit/help/HelpYamlReader.java -@@ -1,17 +1,18 @@ - package org.bukkit.craftbukkit.help; - - import com.google.common.base.Charsets; -+import org.bukkit.ChatColor; -+import org.bukkit.Server; -+import org.bukkit.configuration.ConfigurationSection; -+import org.bukkit.configuration.file.YamlConfiguration; -+import org.bukkit.help.HelpTopic; -+ - import java.io.File; - import java.io.IOException; - import java.io.InputStreamReader; - import java.util.LinkedList; - import java.util.List; - import java.util.logging.Level; --import org.bukkit.ChatColor; --import org.bukkit.Server; --import org.bukkit.configuration.ConfigurationSection; --import org.bukkit.configuration.file.YamlConfiguration; --import org.bukkit.help.HelpTopic; - - /** - * HelpYamlReader is responsible for processing the contents of the help.yml file. -diff --git a/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java b/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java -index 2358ba5bdc64f6c003a2b9f5f36364bf2328a0a8..4a554b5727112cdd8528dfd0df032c049ec77b5e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java -+++ b/src/main/java/org/bukkit/craftbukkit/help/SimpleHelpMap.java -@@ -3,28 +3,13 @@ package org.bukkit.craftbukkit.help; - import com.google.common.base.Predicate; - import com.google.common.base.Predicates; - import com.google.common.collect.Collections2; --import java.util.Collection; --import java.util.HashMap; --import java.util.HashSet; --import java.util.List; --import java.util.Map; --import java.util.Set; --import java.util.TreeMap; --import java.util.TreeSet; --import org.bukkit.command.Command; --import org.bukkit.command.CommandExecutor; --import org.bukkit.command.MultipleCommandAlias; --import org.bukkit.command.PluginCommand; --import org.bukkit.command.PluginIdentifiableCommand; -+import org.bukkit.command.*; - import org.bukkit.command.defaults.BukkitCommand; - import org.bukkit.craftbukkit.CraftServer; - import org.bukkit.craftbukkit.command.VanillaCommandWrapper; --import org.bukkit.help.GenericCommandHelpTopic; --import org.bukkit.help.HelpMap; --import org.bukkit.help.HelpTopic; --import org.bukkit.help.HelpTopicComparator; --import org.bukkit.help.HelpTopicFactory; --import org.bukkit.help.IndexHelpTopic; -+import org.bukkit.help.*; -+ -+import java.util.*; - - /** - * Standard implementation of {@link HelpMap} for CraftBukkit servers. -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 8c714c7430c0a6b8fd7f4a158d9a271e1642bd7a..22102f154964dafd1ee61eae85fdd7006237c9e5 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -@@ -1,34 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - --import net.minecraft.server.ChatComponentText; --import net.minecraft.server.Container; --import net.minecraft.server.ContainerAnvil; --import net.minecraft.server.ContainerBeacon; --import net.minecraft.server.ContainerBlastFurnace; --import net.minecraft.server.ContainerBrewingStand; --import net.minecraft.server.ContainerCartography; --import net.minecraft.server.ContainerChest; --import net.minecraft.server.ContainerDispenser; --import net.minecraft.server.ContainerEnchantTable; --import net.minecraft.server.ContainerFurnaceFurnace; --import net.minecraft.server.ContainerGrindstone; --import net.minecraft.server.ContainerHopper; --import net.minecraft.server.ContainerLectern; --import net.minecraft.server.ContainerLoom; --import net.minecraft.server.ContainerMerchant; --import net.minecraft.server.ContainerProperties; --import net.minecraft.server.ContainerShulkerBox; --import net.minecraft.server.ContainerSmithing; --import net.minecraft.server.ContainerSmoker; --import net.minecraft.server.ContainerStonecutter; --import net.minecraft.server.ContainerWorkbench; --import net.minecraft.server.Containers; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.IInventory; --import net.minecraft.server.ItemStack; --import net.minecraft.server.PacketPlayOutOpenWindow; --import net.minecraft.server.PlayerInventory; --import net.minecraft.server.Slot; -+import net.minecraft.server.*; - import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.entity.HumanEntity; - import org.bukkit.event.inventory.InventoryType; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -index 7fa5aaff44b44b60d0ddcf08f7e94dbeef4de422..afb6129036c4dd633bb4ecb3b55bb808bb47c751 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -@@ -1,23 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.HashMap; --import java.util.List; --import java.util.ListIterator; --import net.minecraft.server.IHopper; --import net.minecraft.server.IInventory; --import net.minecraft.server.InventoryCrafting; --import net.minecraft.server.InventoryEnderChest; --import net.minecraft.server.InventoryMerchant; --import net.minecraft.server.PlayerInventory; --import net.minecraft.server.TileEntityBarrel; --import net.minecraft.server.TileEntityBlastFurnace; --import net.minecraft.server.TileEntityBrewingStand; --import net.minecraft.server.TileEntityDispenser; --import net.minecraft.server.TileEntityDropper; --import net.minecraft.server.TileEntityFurnace; --import net.minecraft.server.TileEntityLectern; --import net.minecraft.server.TileEntityShulkerBox; --import net.minecraft.server.TileEntitySmoker; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.Location; - import org.bukkit.Material; -@@ -28,6 +11,10 @@ import org.bukkit.inventory.Inventory; - import org.bukkit.inventory.InventoryHolder; - import org.bukkit.inventory.ItemStack; - -+import java.util.HashMap; -+import java.util.List; -+import java.util.ListIterator; -+ - public class CraftInventory implements Inventory { - protected final IInventory inventory; - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java -index 3cf4cd5fa8d7075f7fcc4fd33b002b554ae2cf71..947556832791dcc633c7318c041e694bd45d8b8c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java -@@ -1,13 +1,14 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.Arrays; --import java.util.List; - import net.minecraft.server.IInventory; - import net.minecraft.server.IRecipe; - import org.bukkit.inventory.CraftingInventory; - import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.Recipe; - -+import java.util.Arrays; -+import java.util.List; -+ - public class CraftInventoryCrafting extends CraftInventory implements CraftingInventory { - private final IInventory resultInventory; - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java -index e1dfdb23f7d755b19cf14c0bf15358095406e9a0..09ba087b7b32ae3a38187a7174444c2a9b1fba3e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java -@@ -1,8 +1,5 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.ArrayList; --import java.util.Iterator; --import java.util.List; - import net.minecraft.server.EntityHuman; - import net.minecraft.server.IInventory; - import net.minecraft.server.ItemStack; -@@ -14,6 +11,10 @@ import org.bukkit.entity.HumanEntity; - import org.bukkit.event.inventory.InventoryType; - import org.bukkit.inventory.InventoryHolder; - -+import java.util.ArrayList; -+import java.util.Iterator; -+import java.util.List; -+ - public class CraftInventoryCustom extends CraftInventory { - public CraftInventoryCustom(InventoryHolder owner, InventoryType type) { - super(new MinecraftInventory(owner, type)); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index addb8ef990de3dfbf74969ef4c22276d2fa2614a..967eb9ab814b594247bf999b017af5c38ac3fb4f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -1,16 +1,12 @@ - package org.bukkit.craftbukkit.inventory; - --import static org.bukkit.craftbukkit.inventory.CraftMetaItem.*; - import com.google.common.collect.ImmutableMap; --import java.util.Map; --import net.minecraft.server.EnchantmentManager; - import net.minecraft.server.Item; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; - import org.apache.commons.lang.Validate; - import org.bukkit.Material; - import org.bukkit.configuration.serialization.DelegateDeserialization; --import org.bukkit.craftbukkit.enchantments.CraftEnchantment; - import org.bukkit.craftbukkit.util.CraftLegacy; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; -@@ -19,6 +15,11 @@ import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.meta.ItemMeta; - import org.bukkit.material.MaterialData; - -+import java.util.Map; -+ -+import static org.bukkit.craftbukkit.inventory.CraftMetaItem.ENCHANTMENTS_ID; -+import static org.bukkit.craftbukkit.inventory.CraftMetaItem.ENCHANTMENTS_LVL; -+ - @DelegateDeserialization(ItemStack.class) - public final class CraftItemStack extends ItemStack { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java -index 50bc720d4268804f53b204091c9e8f0c17d8dd23..8cfc359da6caff1e0112cf87c2cb4b025f5add0f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchant.java -@@ -2,8 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.base.Function; - import com.google.common.collect.Lists; --import java.util.Collections; --import java.util.List; - import net.minecraft.server.EntityHuman; - import net.minecraft.server.IMerchant; - import net.minecraft.server.MerchantRecipeList; -@@ -11,6 +9,9 @@ import org.bukkit.entity.HumanEntity; - import org.bukkit.inventory.Merchant; - import org.bukkit.inventory.MerchantRecipe; - -+import java.util.Collections; -+import java.util.List; -+ - public class CraftMerchant implements Merchant { - - protected final IMerchant merchant; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java -index 9f6e797d34e5ad21a496c89f5a45ddb0638d3adc..749b5facb60df384b48d492a08dde0df65dec49e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantCustom.java -@@ -1,15 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - --import net.minecraft.server.ChatComponentText; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.IMerchant; --import net.minecraft.server.ItemStack; --import net.minecraft.server.MerchantRecipe; --import net.minecraft.server.MerchantRecipeList; --import net.minecraft.server.SoundEffect; --import net.minecraft.server.SoundEffects; --import net.minecraft.server.World; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - - public class CraftMerchantCustom extends CraftMerchant { -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java -index e198251617bfd6b0fe932d8bfa5dfcafdac919c2..058bc9839f18d14115611442710eeb3a0d41e1b1 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java -@@ -1,10 +1,11 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.base.Preconditions; --import java.util.List; - import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.MerchantRecipe; - -+import java.util.List; -+ - public class CraftMerchantRecipe extends MerchantRecipe { - - private final net.minecraft.server.MerchantRecipe handle; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java -index 25b310ad3f1bcefd04406b7efd1ffa82519250e1..9f8364761421e75d6e57dfb8b888066d64cbaf2f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java -@@ -1,12 +1,13 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap.Builder; --import java.util.Map; - import net.minecraft.server.NBTBase; - import net.minecraft.server.NBTTagCompound; - import org.bukkit.Material; - import org.bukkit.configuration.serialization.DelegateDeserialization; - -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaArmorStand extends CraftMetaItem implements com.destroystokyo.paper.inventory.meta.ArmorStandMeta { // Paper - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java -index 87a19622cfcc1e87b3648c3aa11e3d983dd8f624..bd73063c3b9c79c07e4224f5ab741a704c51c6a0 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java -@@ -2,9 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap; --import java.util.ArrayList; --import java.util.List; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; - import org.bukkit.DyeColor; -@@ -15,6 +12,10 @@ import org.bukkit.configuration.serialization.DelegateDeserialization; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.BannerMeta; - -+import java.util.ArrayList; -+import java.util.List; -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaBanner extends CraftMetaItem implements BannerMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -index 852e793c0c24bf42f9eb3a5b88e7d0328c7c86fd..83552ce9ba2f7580abc82ef919e918584be150dd 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java -@@ -2,75 +2,17 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.base.Objects; - import com.google.common.collect.ImmutableMap; --import java.util.Map; --import net.minecraft.server.EnumColor; --import net.minecraft.server.NBTBase; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.TileEntity; --import net.minecraft.server.TileEntityBanner; --import net.minecraft.server.TileEntityBarrel; --import net.minecraft.server.TileEntityBeacon; --import net.minecraft.server.TileEntityBeehive; --import net.minecraft.server.TileEntityBell; --import net.minecraft.server.TileEntityBlastFurnace; --import net.minecraft.server.TileEntityBrewingStand; --import net.minecraft.server.TileEntityCampfire; --import net.minecraft.server.TileEntityChest; --import net.minecraft.server.TileEntityCommand; --import net.minecraft.server.TileEntityComparator; --import net.minecraft.server.TileEntityDispenser; --import net.minecraft.server.TileEntityDropper; --import net.minecraft.server.TileEntityEnchantTable; --import net.minecraft.server.TileEntityEndGateway; --import net.minecraft.server.TileEntityEnderChest; --import net.minecraft.server.TileEntityFurnaceFurnace; --import net.minecraft.server.TileEntityHopper; --import net.minecraft.server.TileEntityJigsaw; --import net.minecraft.server.TileEntityJukeBox; --import net.minecraft.server.TileEntityLectern; --import net.minecraft.server.TileEntityLightDetector; --import net.minecraft.server.TileEntityMobSpawner; --import net.minecraft.server.TileEntityShulkerBox; --import net.minecraft.server.TileEntitySign; --import net.minecraft.server.TileEntitySkull; --import net.minecraft.server.TileEntitySmoker; --import net.minecraft.server.TileEntityStructure; -+import net.minecraft.server.*; - import org.apache.commons.lang.Validate; - import org.bukkit.Material; - import org.bukkit.block.BlockState; - import org.bukkit.configuration.serialization.DelegateDeserialization; --import org.bukkit.craftbukkit.block.CraftBanner; --import org.bukkit.craftbukkit.block.CraftBarrel; --import org.bukkit.craftbukkit.block.CraftBeacon; --import org.bukkit.craftbukkit.block.CraftBeehive; --import org.bukkit.craftbukkit.block.CraftBell; --import org.bukkit.craftbukkit.block.CraftBlastFurnace; --import org.bukkit.craftbukkit.block.CraftBlockEntityState; --import org.bukkit.craftbukkit.block.CraftBrewingStand; --import org.bukkit.craftbukkit.block.CraftCampfire; --import org.bukkit.craftbukkit.block.CraftChest; --import org.bukkit.craftbukkit.block.CraftCommandBlock; --import org.bukkit.craftbukkit.block.CraftComparator; --import org.bukkit.craftbukkit.block.CraftCreatureSpawner; --import org.bukkit.craftbukkit.block.CraftDaylightDetector; --import org.bukkit.craftbukkit.block.CraftDispenser; --import org.bukkit.craftbukkit.block.CraftDropper; --import org.bukkit.craftbukkit.block.CraftEnchantingTable; --import org.bukkit.craftbukkit.block.CraftEndGateway; --import org.bukkit.craftbukkit.block.CraftEnderChest; --import org.bukkit.craftbukkit.block.CraftFurnaceFurnace; --import org.bukkit.craftbukkit.block.CraftHopper; --import org.bukkit.craftbukkit.block.CraftJigsaw; --import org.bukkit.craftbukkit.block.CraftJukebox; --import org.bukkit.craftbukkit.block.CraftLectern; --import org.bukkit.craftbukkit.block.CraftShulkerBox; --import org.bukkit.craftbukkit.block.CraftSign; --import org.bukkit.craftbukkit.block.CraftSkull; --import org.bukkit.craftbukkit.block.CraftSmoker; --import org.bukkit.craftbukkit.block.CraftStructureBlock; -+import org.bukkit.craftbukkit.block.*; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.BlockStateMeta; - -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java -index 95ec299687cd4410146f71bd3429bd12ac291a26..abfa2f837b56b33dacba62e656badcc50da75960 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java -@@ -2,9 +2,8 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap.Builder; --import java.util.ArrayList; --import java.util.List; --import java.util.Map; -+import net.md_5.bungee.api.chat.BaseComponent; -+import net.md_5.bungee.chat.ComponentSerializer; - import net.minecraft.server.IChatBaseComponent; - import net.minecraft.server.IChatBaseComponent.ChatSerializer; - import net.minecraft.server.NBTTagCompound; -@@ -18,11 +17,12 @@ import org.bukkit.craftbukkit.util.CraftChatMessage; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.BookMeta; - --// Spigot start --import static org.spigotmc.ValidateUtils.*; - import java.util.AbstractList; --import net.md_5.bungee.api.chat.BaseComponent; --import net.md_5.bungee.chat.ComponentSerializer; -+import java.util.ArrayList; -+import java.util.List; -+import java.util.Map; -+ -+import static org.spigotmc.ValidateUtils.limit; - // Spigot end - - @DelegateDeserialization(SerializableMeta.class) -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java -index 0ea7a9606b529ed6b8fa12d4e285e0eaea2fa93d..be4ba6b96b5936dbfeaeb227ab7941749d37d84e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBookSigned.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap.Builder; --import java.util.Map; - import net.minecraft.server.IChatBaseComponent; - import net.minecraft.server.IChatBaseComponent.ChatSerializer; - import net.minecraft.server.NBTTagCompound; -@@ -13,6 +12,8 @@ import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.BookMeta; - -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaBookSigned extends CraftMetaBook implements BookMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java -index 1ff9ff3f2e97dba2befb4b9f6826cd4aa70c44b9..99e6adf08dda31a72f7d18bfe360b03fd530d108 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap.Builder; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import org.bukkit.FireworkEffect; - import org.bukkit.Material; -@@ -9,6 +8,8 @@ import org.bukkit.configuration.serialization.DelegateDeserialization; - import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.inventory.meta.FireworkEffectMeta; - -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaCharge extends CraftMetaItem implements FireworkEffectMeta { - static final ItemMetaKey EXPLOSION = new ItemMetaKey("Explosion", "firework-effect"); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCompass.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCompass.java -index 974246499c097e61c33fff857a371a208dbfaded..bc8d3c4824e7c20663a0d9437c7cbc5ca98a6cbe 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCompass.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCompass.java -@@ -3,13 +3,7 @@ package org.bukkit.craftbukkit.inventory; - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableMap.Builder; - import com.mojang.serialization.DataResult; --import java.util.Map; --import java.util.Optional; --import net.minecraft.server.DynamicOpsNBT; --import net.minecraft.server.MinecraftServer; --import net.minecraft.server.NBTBase; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.ResourceKey; -+import net.minecraft.server.*; - import org.bukkit.Location; - import org.bukkit.Material; - import org.bukkit.World; -@@ -17,6 +11,9 @@ import org.bukkit.configuration.serialization.DelegateDeserialization; - import org.bukkit.craftbukkit.CraftWorld; - import org.bukkit.inventory.meta.CompassMeta; - -+import java.util.Map; -+import java.util.Optional; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaCompass extends CraftMetaItem implements CompassMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCrossbow.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCrossbow.java -index 8d3d39943c3ee3bd7dca34b20f46b35c7fa8bffe..75259908f08782b1d9f34ad419b0305694651626 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCrossbow.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCrossbow.java -@@ -3,9 +3,6 @@ package org.bukkit.craftbukkit.inventory; - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap; --import java.util.ArrayList; --import java.util.List; --import java.util.Map; - import net.minecraft.server.ItemArrow; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; -@@ -15,6 +12,10 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.meta.CrossbowMeta; - -+import java.util.ArrayList; -+import java.util.List; -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaCrossbow extends CraftMetaItem implements CrossbowMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java -index f5feea20716cd5e1586a71676fa3272e12d1663f..bcc3b23e39e4e4516655f0b725077567c7fd3ad4 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java -@@ -2,8 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap; - import com.google.common.collect.ImmutableMap.Builder; --import java.util.HashMap; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import org.bukkit.Material; - import org.bukkit.configuration.serialization.DelegateDeserialization; -@@ -11,6 +9,9 @@ import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.enchantments.Enchantment; - import org.bukkit.inventory.meta.EnchantmentStorageMeta; - -+import java.util.HashMap; -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaEnchantedBook extends CraftMetaItem implements EnchantmentStorageMeta { - static final ItemMetaKey STORED_ENCHANTMENTS = new ItemMetaKey("StoredEnchantments", "stored-enchants"); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEntityTag.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEntityTag.java -index 325fec72abeaaeae9cb0a38d144b1a5fb123fb74..53f8d13e99019501e85a9a151e948799160a1d46 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEntityTag.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEntityTag.java -@@ -1,12 +1,13 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap.Builder; --import java.util.Map; - import net.minecraft.server.NBTBase; - import net.minecraft.server.NBTTagCompound; - import org.bukkit.Material; - import org.bukkit.configuration.serialization.DelegateDeserialization; - -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaEntityTag extends CraftMetaItem { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java -index e57a0ebf327843c1dc7e33cf48899a938b4d2b04..54820c36311d5bd2a7d5f600ec3deaf92e81b85c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java -@@ -2,10 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap.Builder; --import java.util.ArrayList; --import java.util.Collection; --import java.util.List; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; - import org.apache.commons.lang.Validate; -@@ -20,6 +16,11 @@ import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.FireworkMeta; - -+import java.util.ArrayList; -+import java.util.Collection; -+import java.util.List; -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaFirework extends CraftMetaItem implements FireworkMeta { - /* -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index fe27e2f51a7d734cb874f9fd87c15ccb6f5c63fa..23df1af99051e565f03f63f0b5a9acc55575b22f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -1,40 +1,12 @@ - package org.bukkit.craftbukkit.inventory; - -+import com.destroystokyo.paper.Namespaced; -+import com.destroystokyo.paper.NamespacedTag; - import com.google.common.base.Preconditions; - import com.google.common.base.Strings; --import com.google.common.collect.ImmutableList; --import com.google.common.collect.ImmutableMap; --import com.google.common.collect.ImmutableMultimap; --import com.google.common.collect.LinkedHashMultimap; --import com.google.common.collect.ImmutableSortedMap; // Paper --import com.google.common.collect.Lists; --import com.google.common.collect.Multimap; --import com.google.common.collect.SetMultimap; --import com.google.common.collect.Sets; -+import com.google.common.collect.*; - import com.google.gson.JsonParseException; --import java.io.ByteArrayInputStream; --import java.io.ByteArrayOutputStream; --import java.io.IOException; --import java.lang.annotation.ElementType; --import java.lang.annotation.Retention; --import java.lang.annotation.RetentionPolicy; --import java.lang.annotation.Target; --import java.lang.reflect.Constructor; --import java.lang.reflect.InvocationTargetException; --import java.util.*; --import java.util.logging.Level; --import java.util.logging.Logger; --import javax.annotation.Nonnull; --import javax.annotation.Nullable; --import net.minecraft.server.ChatComponentText; --import net.minecraft.server.EnumItemSlot; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.ItemBlock; --import net.minecraft.server.NBTBase; --import net.minecraft.server.NBTCompressedStreamTools; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.NBTTagList; --import net.minecraft.server.NBTTagString; -+import net.minecraft.server.*; - import org.apache.commons.codec.binary.Base64; - import org.apache.commons.lang.Validate; - import org.apache.commons.lang3.EnumUtils; -@@ -69,13 +41,22 @@ import org.bukkit.inventory.meta.Repairable; - import org.bukkit.inventory.meta.tags.CustomItemTagContainer; - import org.bukkit.persistence.PersistentDataContainer; - --// Spigot start --import static org.spigotmc.ValidateUtils.*; --// Spigot end -+import javax.annotation.Nonnull; -+import javax.annotation.Nullable; -+import java.io.ByteArrayInputStream; -+import java.io.ByteArrayOutputStream; -+import java.io.IOException; -+import java.lang.annotation.ElementType; -+import java.lang.annotation.Retention; -+import java.lang.annotation.RetentionPolicy; -+import java.lang.annotation.Target; -+import java.lang.reflect.Constructor; -+import java.lang.reflect.InvocationTargetException; -+import java.util.*; -+import java.util.logging.Level; -+import java.util.logging.Logger; - --// Paper start --import com.destroystokyo.paper.Namespaced; --import com.destroystokyo.paper.NamespacedTag; -+import static org.spigotmc.ValidateUtils.limit; - // Paper end - - /** -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaKnowledgeBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaKnowledgeBook.java -index 8c86fe2084d5022a2fdd4d4d8d5dca045fe45f82..40d22683be2b0da5c2d11898bb8df81d3c07a19a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaKnowledgeBook.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaKnowledgeBook.java -@@ -1,10 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap.Builder; --import java.util.ArrayList; --import java.util.Collections; --import java.util.List; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; - import net.minecraft.server.NBTTagString; -@@ -15,6 +11,11 @@ import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.craftbukkit.util.CraftNamespacedKey; - import org.bukkit.inventory.meta.KnowledgeBookMeta; - -+import java.util.ArrayList; -+import java.util.Collections; -+import java.util.List; -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - public class CraftMetaKnowledgeBook extends CraftMetaItem implements KnowledgeBookMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java -index 01f6bef68acc78dadb5d083ef698633049af4dfb..7e6270f78175e382f7823f2e15edada74fe7cb7c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaLeatherArmor.java -@@ -1,8 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - --import static org.bukkit.craftbukkit.inventory.CraftItemFactory.*; - import com.google.common.collect.ImmutableMap.Builder; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagInt; - import org.bukkit.Color; -@@ -11,6 +9,10 @@ import org.bukkit.configuration.serialization.DelegateDeserialization; - import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; - import org.bukkit.inventory.meta.LeatherArmorMeta; - -+import java.util.Map; -+ -+import static org.bukkit.craftbukkit.inventory.CraftItemFactory.DEFAULT_LEATHER_COLOR; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaLeatherArmor extends CraftMetaItem implements LeatherArmorMeta { - static final ItemMetaKey COLOR = new ItemMetaKey("color"); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java -index edfe1f773c3688efb78603f74f2d70eb8e0b6401..985acb4a685e0010c323a7a14e92162f46f78d8e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaMap.java -@@ -2,7 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.base.Preconditions; - import com.google.common.collect.ImmutableMap; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagInt; - import net.minecraft.server.NBTTagString; -@@ -15,6 +14,8 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.MapMeta; - import org.bukkit.map.MapView; - -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaMap extends CraftMetaItem implements MapMeta { - static final ItemMetaKey MAP_SCALING = new ItemMetaKey("map_is_scaling", "scaling"); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -index f4374ac95bc33715f8f7f59c1677838771366439..ab3aefae8185733b70f9b8dd000ae8b68a049c0b 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java -@@ -2,10 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap.Builder; --import java.util.ArrayList; --import java.util.Iterator; --import java.util.List; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; - import org.apache.commons.lang.Validate; -@@ -21,6 +17,11 @@ import org.bukkit.potion.PotionEffect; - import org.bukkit.potion.PotionEffectType; - import org.bukkit.potion.PotionType; - -+import java.util.ArrayList; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaPotion extends CraftMetaItem implements PotionMeta { - static final ItemMetaKey AMPLIFIER = new ItemMetaKey("Amplifier", "amplifier"); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java -index 21e7a661739da84e6ec7a20c81cefcb0440484a2..003ac1dfe80f7dadb82c178556581ab928e83a15 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java -@@ -1,10 +1,9 @@ - package org.bukkit.craftbukkit.inventory; - --import com.google.common.collect.ImmutableMap.Builder; --import com.mojang.authlib.GameProfile; --import java.util.Map; - import com.destroystokyo.paper.profile.CraftPlayerProfile; - import com.destroystokyo.paper.profile.PlayerProfile; -+import com.google.common.collect.ImmutableMap.Builder; -+import com.mojang.authlib.GameProfile; - import net.minecraft.server.GameProfileSerializer; - import net.minecraft.server.NBTBase; - import net.minecraft.server.NBTTagCompound; -@@ -19,6 +18,7 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.meta.SkullMeta; - - import javax.annotation.Nullable; -+import java.util.Map; - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaSkull extends CraftMetaItem implements SkullMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java -index 592017c8196b0af8f61a94503e691fca280fd110..c185f76f66ca19a332689f4ad41a72a914ebff6c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSpawnEgg.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap.Builder; --import java.util.Map; - import net.minecraft.server.MinecraftKey; - import net.minecraft.server.NBTBase; - import net.minecraft.server.NBTTagCompound; -@@ -12,6 +11,8 @@ import org.bukkit.entity.EntityType; - import org.bukkit.inventory.meta.SpawnEggMeta; - import org.bukkit.material.MaterialData; - -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaSpawnEgg extends CraftMetaItem implements SpawnEggMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java -index 00bacfe74c83f9af41c732a3e63ecdf6640c8653..8749a022df994829de6542eedd4299e10f0c4cb8 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSuspiciousStew.java -@@ -2,10 +2,6 @@ package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.ImmutableMap.Builder; --import java.util.ArrayList; --import java.util.Iterator; --import java.util.List; --import java.util.Map; - import net.minecraft.server.NBTTagCompound; - import net.minecraft.server.NBTTagList; - import org.apache.commons.lang.Validate; -@@ -16,6 +12,11 @@ import org.bukkit.inventory.meta.SuspiciousStewMeta; - import org.bukkit.potion.PotionEffect; - import org.bukkit.potion.PotionEffectType; - -+import java.util.ArrayList; -+import java.util.Iterator; -+import java.util.List; -+import java.util.Map; -+ - @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) - public class CraftMetaSuspiciousStew extends CraftMetaItem implements SuspiciousStewMeta { - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java -index 134f40f30198f13a4a3381bb00921703c477989e..9616e83bb2cea9e1df03cfb7d93e1c2279e84221 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaTropicalFishBucket.java -@@ -1,7 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - - import com.google.common.collect.ImmutableMap; --import java.util.Map; - import net.minecraft.server.NBTBase; - import net.minecraft.server.NBTTagCompound; - import org.bukkit.DyeColor; -@@ -13,6 +12,8 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.entity.TropicalFish; - import org.bukkit.inventory.meta.TropicalFishBucketMeta; - -+import java.util.Map; -+ - @DelegateDeserialization(SerializableMeta.class) - class CraftMetaTropicalFishBucket extends CraftMetaItem implements TropicalFishBucketMeta { - static final ItemMetaKey VARIANT = new ItemMetaKey("BucketVariantTag", "fish-variant"); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -index ef29599a89bc630899c65df9a7004f836787d95e..e0f5ea21b64abcae53a2cf642e4305ca903cc596 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -@@ -1,13 +1,14 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.ArrayList; --import java.util.List; - import net.minecraft.server.RecipeItemStack; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.Recipe; - import org.bukkit.inventory.RecipeChoice; - -+import java.util.ArrayList; -+import java.util.List; -+ - public interface CraftRecipe extends Recipe { - - void addToCraftingManager(); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSaddledInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSaddledInventory.java -index 99cfbaf90b5ccd828834b33b3c658206efd6ac21..b45809508ee30d299e41c97c4e40923396065741 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSaddledInventory.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSaddledInventory.java -@@ -1,9 +1,6 @@ - package org.bukkit.craftbukkit.inventory; - - import net.minecraft.server.IInventory; -- --import org.bukkit.inventory.AbstractHorseInventory; --import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.SaddledHorseInventory; - - public class CraftSaddledInventory extends CraftInventoryAbstractHorse implements SaddledHorseInventory { -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java -index 6dbd249f54a0c36b7f2dc8857c462e8e17b6a4b2..1e2c6d2ca690262dedd8e9ea620e68400c1bfe2c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapedRecipe.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.Map; - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.NonNullList; - import net.minecraft.server.RecipeItemStack; -@@ -11,6 +10,8 @@ import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.RecipeChoice; - import org.bukkit.inventory.ShapedRecipe; - -+import java.util.Map; -+ - public class CraftShapedRecipe extends ShapedRecipe implements CraftRecipe { - // TODO: Could eventually use this to add a matches() method or some such - private ShapedRecipes recipe; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java -index 4aba511fe8078164bf1467b39645dd9bf6a931e7..344a06f88ae460320bc8134fdd9a938a5fb9d786 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftShapelessRecipe.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.List; - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.NonNullList; - import net.minecraft.server.RecipeItemStack; -@@ -11,6 +10,8 @@ import org.bukkit.inventory.ItemStack; - import org.bukkit.inventory.RecipeChoice; - import org.bukkit.inventory.ShapelessRecipe; - -+import java.util.List; -+ - public class CraftShapelessRecipe extends ShapelessRecipe implements CraftRecipe { - // TODO: Could eventually use this to add a matches() method or some such - private ShapelessRecipes recipe; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java -index de558eef3fa03d770ee44d3250e49408db64c81b..f3888f278e9fa514894e97d2fb3ecce32ff1551d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryIterator.java -@@ -1,9 +1,10 @@ - package org.bukkit.craftbukkit.inventory; - --import java.util.ListIterator; - import org.bukkit.inventory.Inventory; - import org.bukkit.inventory.ItemStack; - -+import java.util.ListIterator; -+ - public class InventoryIterator implements ListIterator { - private final Inventory inventory; - private int nextIndex; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java -index 1223bfc7f5de3bafe283f6289c413c9848bf6f08..fd4d4ef6931c9a1262077d85c225a3817d174d11 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/RecipeIterator.java -@@ -1,14 +1,15 @@ - package org.bukkit.craftbukkit.inventory; - - import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; --import java.util.Iterator; --import java.util.Map; - import net.minecraft.server.IRecipe; - import net.minecraft.server.MinecraftKey; - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.Recipes; - import org.bukkit.inventory.Recipe; - -+import java.util.Iterator; -+import java.util.Map; -+ - public class RecipeIterator implements Iterator { - private final Iterator, Object2ObjectLinkedOpenHashMap>>> recipes; - private Iterator> current; -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/tags/DeprecatedCustomTagContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/tags/DeprecatedCustomTagContainer.java -index 3ef217b0821fc4b9e759e1667840d07124ba33f8..94e59710d814d8c252c4cfcd3245208da7e3cfcc 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/tags/DeprecatedCustomTagContainer.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/tags/DeprecatedCustomTagContainer.java -@@ -1,12 +1,13 @@ - package org.bukkit.craftbukkit.inventory.tags; - --import java.util.Objects; - import org.bukkit.NamespacedKey; - import org.bukkit.inventory.meta.tags.CustomItemTagContainer; - import org.bukkit.inventory.meta.tags.ItemTagAdapterContext; - import org.bukkit.inventory.meta.tags.ItemTagType; - import org.bukkit.persistence.PersistentDataContainer; - -+import java.util.Objects; -+ - /** - * The {@link DeprecatedCustomTagContainer} is a simply wrapper implementation - * that wraps the new api to still be usable with the old api parts. -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftInventoryCreator.java b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftInventoryCreator.java -index c1db7104e398df484f1e5400e98714aefd3315f2..3ede4449ecd40c2f15d076b27b284d054f02c1c6 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftInventoryCreator.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftInventoryCreator.java -@@ -1,11 +1,12 @@ - package org.bukkit.craftbukkit.inventory.util; - --import java.util.HashMap; --import java.util.Map; - import org.bukkit.event.inventory.InventoryType; - import org.bukkit.inventory.Inventory; - import org.bukkit.inventory.InventoryHolder; - -+import java.util.HashMap; -+import java.util.Map; -+ - public final class CraftInventoryCreator { - - public static final CraftInventoryCreator INSTANCE = new CraftInventoryCreator(); -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftTileInventoryConverter.java b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftTileInventoryConverter.java -index ad91eabb47511268d0cf307d941070800ce9bd3f..d89b7e68aa4c91e569e0d9e96d76d0c85dd9a21a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftTileInventoryConverter.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/util/CraftTileInventoryConverter.java -@@ -1,19 +1,6 @@ - package org.bukkit.craftbukkit.inventory.util; - --import net.minecraft.server.BlockPosition; --import net.minecraft.server.IInventory; --import net.minecraft.server.MinecraftServer; --import net.minecraft.server.TileEntityBlastFurnace; --import net.minecraft.server.TileEntityBrewingStand; --import net.minecraft.server.TileEntityDispenser; --import net.minecraft.server.TileEntityDropper; --import net.minecraft.server.TileEntityFurnace; --import net.minecraft.server.TileEntityFurnaceFurnace; --import net.minecraft.server.TileEntityHopper; --import net.minecraft.server.TileEntityLectern; --import net.minecraft.server.TileEntityLootable; --import net.minecraft.server.TileEntitySmoker; --import net.minecraft.server.World; -+import net.minecraft.server.*; - import org.bukkit.craftbukkit.inventory.CraftInventory; - import org.bukkit.craftbukkit.inventory.CraftInventoryBrewer; - import org.bukkit.craftbukkit.inventory.CraftInventoryFurnace; -diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index b14333ce9e6921024bc93c2847b84f1fb40a5508..4d93b4a6670d1e13e6ec5123d91170a5b47122f1 100644 ---- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -@@ -2,35 +2,14 @@ package org.bukkit.craftbukkit.legacy; - - import com.google.common.base.Preconditions; - import com.mojang.serialization.Dynamic; --import java.util.Arrays; --import java.util.HashMap; --import java.util.HashSet; --import java.util.Map; --import java.util.Optional; --import java.util.Set; --import net.minecraft.server.Block; --import net.minecraft.server.BlockStateList; --import net.minecraft.server.Blocks; --import net.minecraft.server.DataConverterFlattenData; --import net.minecraft.server.DataConverterMaterialId; --import net.minecraft.server.DataConverterRegistry; --import net.minecraft.server.DataConverterTypes; --import net.minecraft.server.DispenserRegistry; --import net.minecraft.server.DynamicOpsNBT; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IBlockState; --import net.minecraft.server.IRegistry; --import net.minecraft.server.Item; --import net.minecraft.server.Items; --import net.minecraft.server.MinecraftKey; --import net.minecraft.server.MinecraftServer; --import net.minecraft.server.NBTBase; --import net.minecraft.server.NBTTagCompound; -+import net.minecraft.server.*; - import org.bukkit.Material; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - import org.bukkit.entity.EntityType; - import org.bukkit.material.MaterialData; - -+import java.util.*; -+ - /** - * This class may seem unnecessarily slow and complicated/repetitive however it - * is able to handle a lot more edge cases and invertible transformations (many -diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java -index a4bf147e9b43173f5e7b7d68a9b6109437bac4e1..2cca3eb7ca279c4bb6efbbe048ce2227c8c962d6 100644 ---- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java -+++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapCanvas.java -@@ -1,13 +1,14 @@ - package org.bukkit.craftbukkit.map; - --import java.awt.Image; --import java.util.Arrays; - import org.bukkit.map.MapCanvas; - import org.bukkit.map.MapCursorCollection; - import org.bukkit.map.MapFont; - import org.bukkit.map.MapFont.CharacterSprite; - import org.bukkit.map.MapPalette; - -+import java.awt.*; -+import java.util.Arrays; -+ - public class CraftMapCanvas implements MapCanvas { - - private final byte[] buffer = new byte[128 * 128]; -diff --git a/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java b/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java -index 2c21c5a44d318a548719c8ce379b9c0daf9ef228..6592b115cdfb5e9a182a6232505770da16add13f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java -+++ b/src/main/java/org/bukkit/craftbukkit/map/CraftMapView.java -@@ -1,11 +1,5 @@ - package org.bukkit.craftbukkit.map; - --import java.util.ArrayList; --import java.util.Arrays; --import java.util.HashMap; --import java.util.List; --import java.util.Map; --import java.util.logging.Level; - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.ResourceKey; - import net.minecraft.server.WorldMap; -@@ -17,6 +11,9 @@ import org.bukkit.craftbukkit.entity.CraftPlayer; - import org.bukkit.map.MapRenderer; - import org.bukkit.map.MapView; - -+import java.util.*; -+import java.util.logging.Level; -+ - public final class CraftMapView implements MapView { - - private final Map renderCache = new HashMap(); -diff --git a/src/main/java/org/bukkit/craftbukkit/map/RenderData.java b/src/main/java/org/bukkit/craftbukkit/map/RenderData.java -index 5768cd512ec166f1e8d1f4a28792015347297c3f..816d2536027cc960028a675211421d01b6816222 100644 ---- a/src/main/java/org/bukkit/craftbukkit/map/RenderData.java -+++ b/src/main/java/org/bukkit/craftbukkit/map/RenderData.java -@@ -1,8 +1,9 @@ - package org.bukkit.craftbukkit.map; - --import java.util.ArrayList; - import org.bukkit.map.MapCursor; - -+import java.util.ArrayList; -+ - public class RenderData { - - public byte[] buffer; // Paper -diff --git a/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java b/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java -index b3659e4c1332268abda919b3a0f0493f7978aad2..8935a6d81251cc854cb19c6face4d525ac83e6ca 100644 ---- a/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java -+++ b/src/main/java/org/bukkit/craftbukkit/metadata/BlockMetadataStore.java -@@ -1,6 +1,5 @@ - package org.bukkit.craftbukkit.metadata; - --import java.util.List; - import org.bukkit.World; - import org.bukkit.block.Block; - import org.bukkit.metadata.MetadataStore; -@@ -8,6 +7,8 @@ import org.bukkit.metadata.MetadataStoreBase; - import org.bukkit.metadata.MetadataValue; - import org.bukkit.plugin.Plugin; - -+import java.util.List; -+ - /** - * A BlockMetadataStore stores metadata values for {@link Block} objects. - */ -diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java -index 87d680a8776d0000cf567ff2acbcd138bcc0a6c7..af6cd24d78a215d9ed5b5c4b86b005538865a0b0 100644 ---- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java -+++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionBrewer.java -@@ -2,17 +2,14 @@ package org.bukkit.craftbukkit.potion; - - import com.google.common.collect.ImmutableList; - import com.google.common.collect.Maps; -+import net.minecraft.server.MobEffect; -+import net.minecraft.server.PotionRegistry; -+import org.bukkit.potion.*; -+ - import java.util.ArrayList; - import java.util.Collection; - import java.util.List; - import java.util.Map; --import net.minecraft.server.MobEffect; --import net.minecraft.server.PotionRegistry; --import org.bukkit.potion.PotionBrewer; --import org.bukkit.potion.PotionData; --import org.bukkit.potion.PotionEffect; --import org.bukkit.potion.PotionEffectType; --import org.bukkit.potion.PotionType; - - public class CraftPotionBrewer implements PotionBrewer { - private static final Map> cache = Maps.newHashMap(); -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java -index c38e514b004a4684026d5a89c606399a4fd7efe1..4675805cf281b178b0fcf7dbecda6e70f34973c3 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java -@@ -1,11 +1,12 @@ - package org.bukkit.craftbukkit.scheduler; - -+import org.bukkit.plugin.Plugin; -+import org.bukkit.scheduler.BukkitWorker; -+ - import java.util.Iterator; - import java.util.LinkedList; - import java.util.Map; - import java.util.logging.Level; --import org.bukkit.plugin.Plugin; --import org.bukkit.scheduler.BukkitWorker; - - class CraftAsyncTask extends CraftTask { - -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java -index 1e20385fd60d144ad2d915867156449d5d53c50d..3fa618c2a60651cf8906b9950b9b3ab1da72b573 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftFuture.java -@@ -1,13 +1,9 @@ - package org.bukkit.craftbukkit.scheduler; - --import java.util.concurrent.Callable; --import java.util.concurrent.CancellationException; --import java.util.concurrent.ExecutionException; --import java.util.concurrent.Future; --import java.util.concurrent.TimeUnit; --import java.util.concurrent.TimeoutException; - import org.bukkit.plugin.Plugin; - -+import java.util.concurrent.*; -+ - class CraftFuture extends CraftTask implements Future { - - private final Callable callable; -diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 9d0d1598bfce2f51998395faf39d8bd2f5d3f9f3..ab07107e373d91aad2c37607de741a16a8c684c2 100644 ---- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -@@ -1,14 +1,14 @@ - package org.bukkit.craftbukkit.scheduler; - --import java.util.function.Consumer; -- -+import co.aikar.timings.MinecraftTimings; - import co.aikar.timings.NullTimingHandler; -+import co.aikar.timings.Timing; - import org.bukkit.Bukkit; --import co.aikar.timings.MinecraftTimings; // Paper --import co.aikar.timings.Timing; // Paper - import org.bukkit.plugin.Plugin; - import org.bukkit.scheduler.BukkitTask; - -+import java.util.function.Consumer; -+ - - public class CraftTask implements BukkitTask, Runnable { // Spigot - -diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java -index 57acfb7c0e1e0a9c104cadf9a0f3ab5b8b3f685b..b3a15dd7efbe1a41f72817ebb0c983af6df751c7 100644 ---- a/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java -+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftBlockTag.java -@@ -1,15 +1,15 @@ - package org.bukkit.craftbukkit.tag; - --import java.util.Collections; --import java.util.HashSet; --import java.util.Set; --import java.util.stream.Collectors; - import net.minecraft.server.Block; - import net.minecraft.server.MinecraftKey; - import net.minecraft.server.TagsServer; - import org.bukkit.Material; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - -+import java.util.Collections; -+import java.util.HashSet; -+import java.util.Set; -+ - public class CraftBlockTag extends CraftTag { - - public CraftBlockTag(TagsServer registry, MinecraftKey tag) { -diff --git a/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java b/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java -index 96ee7881b2dea2b4b764265e670e5a7b57a35f69..f64a3c863dd18e52512f5ac2baa3f53d3bd1d22e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java -+++ b/src/main/java/org/bukkit/craftbukkit/tag/CraftItemTag.java -@@ -1,15 +1,15 @@ - package org.bukkit.craftbukkit.tag; - --import java.util.Collections; --import java.util.HashSet; --import java.util.Set; --import java.util.stream.Collectors; - import net.minecraft.server.Item; - import net.minecraft.server.MinecraftKey; - import net.minecraft.server.TagsServer; - import org.bukkit.Material; - import org.bukkit.craftbukkit.util.CraftMagicNumbers; - -+import java.util.Collections; -+import java.util.HashSet; -+import java.util.Set; -+ - public class CraftItemTag extends CraftTag { - - public CraftItemTag(TagsServer registry, MinecraftKey tag) { -diff --git a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java -index c22dbbfbe8b16d4c2f1df1f9efd3b06e330ac909..e938c819fcf5328ec26a8edd851aaacbb0781704 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java -@@ -1,9 +1,5 @@ - package org.bukkit.craftbukkit.util; - --import java.util.ArrayList; --import java.util.LinkedHashMap; --import java.util.List; --import java.util.Set; - import net.minecraft.server.BlockPosition; - import net.minecraft.server.Fluid; - import net.minecraft.server.IBlockData; -@@ -11,6 +7,11 @@ import net.minecraft.server.World; - import org.bukkit.block.BlockState; - import org.bukkit.craftbukkit.block.CraftBlockState; - -+import java.util.ArrayList; -+import java.util.LinkedHashMap; -+import java.util.List; -+import java.util.Set; -+ - public class BlockStateListPopulator extends DummyGeneratorAccess { - private final World world; - private final LinkedHashMap list; -diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -index e944a0f941fc74e267437d43717ddee283ffb673..291ddc726622892dba7ae93c4360eaa132e66430 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java -@@ -1,35 +1,22 @@ - package org.bukkit.craftbukkit.util; - - import com.google.common.io.ByteStreams; --import java.io.File; --import java.io.FileOutputStream; --import java.io.InputStream; --import java.util.Arrays; --import java.util.Enumeration; --import java.util.HashMap; --import java.util.HashSet; --import java.util.Map; --import java.util.Set; --import java.util.jar.JarEntry; --import java.util.jar.JarFile; --import java.util.jar.JarOutputStream; --import java.util.zip.ZipEntry; - import joptsimple.OptionParser; - import joptsimple.OptionSet; - import joptsimple.OptionSpec; - import org.bukkit.Material; - import org.bukkit.plugin.AuthorNagException; --import org.objectweb.asm.ClassReader; --import org.objectweb.asm.ClassVisitor; --import org.objectweb.asm.ClassWriter; --import org.objectweb.asm.FieldVisitor; --import org.objectweb.asm.Handle; --import org.objectweb.asm.Label; --import org.objectweb.asm.MethodVisitor; --import org.objectweb.asm.Opcodes; --import org.objectweb.asm.Type; -+import org.objectweb.asm.*; - - import javax.annotation.Nonnull; -+import java.io.File; -+import java.io.FileOutputStream; -+import java.io.InputStream; -+import java.util.*; -+import java.util.jar.JarEntry; -+import java.util.jar.JarFile; -+import java.util.jar.JarOutputStream; -+import java.util.zip.ZipEntry; - - /** - * This file is imported from Commodore. -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java b/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java -index 00c24bf2fb1df7246d128c5bf33a2c01c4f398c2..f00d81077e372d6dbe34ab0d703316f397083978 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftChatMessage.java -@@ -2,22 +2,16 @@ package org.bukkit.craftbukkit.util; - - import com.google.common.collect.ImmutableMap; - import com.google.common.collect.ImmutableMap.Builder; -+import net.minecraft.server.*; -+import net.minecraft.server.ChatClickable.EnumClickAction; -+import org.bukkit.ChatColor; -+ - import java.util.ArrayList; - import java.util.List; - import java.util.Map; - import java.util.Optional; - import java.util.regex.Matcher; - import java.util.regex.Pattern; --import net.minecraft.server.ChatClickable; --import net.minecraft.server.ChatClickable.EnumClickAction; --import net.minecraft.server.ChatComponentText; --import net.minecraft.server.ChatHexColor; --import net.minecraft.server.ChatMessage; --import net.minecraft.server.ChatModifier; --import net.minecraft.server.EnumChatFormat; --import net.minecraft.server.IChatBaseComponent; --import net.minecraft.server.IChatMutableComponent; --import org.bukkit.ChatColor; - - public final class CraftChatMessage { - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java -index c8dde75de231b5fdde88f5bc111c21883d9c3f49..30572e20c13b8d1204c2d4d239d9b28594c4ad62 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftLegacy.java -@@ -1,9 +1,10 @@ - package org.bukkit.craftbukkit.util; - --import java.util.Arrays; - import org.bukkit.Material; - import org.bukkit.material.MaterialData; - -+import java.util.Arrays; -+ - /** - * @deprecated legacy use only - */ -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 60604e44911d4eb1b67f4a68f8ddad03bcaff95f..58ac86c205fa8f2b18412d8524731c2322d4077d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -8,34 +8,7 @@ import com.google.gson.JsonElement; - import com.google.gson.JsonObject; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.serialization.Dynamic; --import java.io.File; --import java.io.IOException; --import java.util.Arrays; --import java.util.Collections; --import java.util.HashMap; --import java.util.List; --import java.util.Locale; --import java.util.Map; --import java.util.logging.Level; --import java.util.logging.Logger; --import net.minecraft.server.AdvancementDataWorld; --import net.minecraft.server.Block; --import net.minecraft.server.ChatDeserializer; --import net.minecraft.server.DataConverterRegistry; --import net.minecraft.server.DataConverterTypes; --import net.minecraft.server.DynamicOpsNBT; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IRegistry; --import net.minecraft.server.Item; --import net.minecraft.server.LootDeserializationContext; --import net.minecraft.server.MinecraftKey; --import net.minecraft.server.MinecraftServer; --import net.minecraft.server.MojangsonParser; --import net.minecraft.server.NBTBase; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.NBTTagString; --import net.minecraft.server.SavedFile; --import net.minecraft.server.SharedConstants; -+import net.minecraft.server.*; - import org.bukkit.Bukkit; - import org.bukkit.Material; - import org.bukkit.NamespacedKey; -@@ -50,6 +23,12 @@ import org.bukkit.material.MaterialData; - import org.bukkit.plugin.InvalidPluginException; - import org.bukkit.plugin.PluginDescriptionFile; - -+import java.io.File; -+import java.io.IOException; -+import java.util.*; -+import java.util.logging.Level; -+import java.util.logging.Logger; -+ - @SuppressWarnings("deprecation") - public final class CraftMagicNumbers implements UnsafeValues { - public static final UnsafeValues INSTANCE = new CraftMagicNumbers(); -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java b/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java -index b17faa25e6db28e8538cc21d7a651e4acdf0c580..e5e0a437cf2138682076fcc60c84afc40852de96 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftNBTTagConfigSerializer.java -@@ -2,19 +2,13 @@ package org.bukkit.craftbukkit.util; - - import com.mojang.brigadier.StringReader; - import com.mojang.brigadier.exceptions.CommandSyntaxException; -+import net.minecraft.server.*; -+ - import java.util.ArrayList; - import java.util.HashMap; - import java.util.List; - import java.util.Map; - import java.util.regex.Pattern; --import net.minecraft.server.MojangsonParser; --import net.minecraft.server.NBTBase; --import net.minecraft.server.NBTList; --import net.minecraft.server.NBTTagCompound; --import net.minecraft.server.NBTTagDouble; --import net.minecraft.server.NBTTagInt; --import net.minecraft.server.NBTTagList; --import net.minecraft.server.NBTTagString; - - public class CraftNBTTagConfigSerializer { - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftRayTraceResult.java b/src/main/java/org/bukkit/craftbukkit/util/CraftRayTraceResult.java -index 6995e1beadfb0d802f2f10d11bc1109012eeb2c6..5599161b7757359ef20c9b317804a07c856d1d8d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftRayTraceResult.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftRayTraceResult.java -@@ -1,11 +1,7 @@ - package org.bukkit.craftbukkit.util; - --import net.minecraft.server.BlockPosition; --import net.minecraft.server.MovingObjectPosition; -+import net.minecraft.server.*; - import net.minecraft.server.MovingObjectPosition.EnumMovingObjectType; --import net.minecraft.server.MovingObjectPositionBlock; --import net.minecraft.server.MovingObjectPositionEntity; --import net.minecraft.server.Vec3D; - import org.bukkit.World; - import org.bukkit.block.Block; - import org.bukkit.block.BlockFace; -diff --git a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java -index b6c39bf77e716addc9d2a1e915687bc770e937f4..9ec674643ce4667742b8da75612c2cda02889fb5 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java -@@ -1,35 +1,10 @@ - package org.bukkit.craftbukkit.util; - -+import net.minecraft.server.*; -+ - import java.util.List; - import java.util.Random; - import java.util.function.Predicate; --import net.minecraft.server.AxisAlignedBB; --import net.minecraft.server.BiomeBase; --import net.minecraft.server.BiomeManager; --import net.minecraft.server.Block; --import net.minecraft.server.BlockPosition; --import net.minecraft.server.ChunkStatus; --import net.minecraft.server.DifficultyDamageScaler; --import net.minecraft.server.DimensionManager; --import net.minecraft.server.Entity; --import net.minecraft.server.EntityHuman; --import net.minecraft.server.Fluid; --import net.minecraft.server.FluidType; --import net.minecraft.server.GeneratorAccess; --import net.minecraft.server.HeightMap; --import net.minecraft.server.IBlockData; --import net.minecraft.server.IChunkAccess; --import net.minecraft.server.IChunkProvider; --import net.minecraft.server.LightEngine; --import net.minecraft.server.ParticleParam; --import net.minecraft.server.SoundCategory; --import net.minecraft.server.SoundEffect; --import net.minecraft.server.TickList; --import net.minecraft.server.TickListEmpty; --import net.minecraft.server.TileEntity; --import net.minecraft.server.World; --import net.minecraft.server.WorldBorder; --import net.minecraft.server.WorldData; - - public class DummyGeneratorAccess implements GeneratorAccess { - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java b/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java -index 100b8566d9f16f20dfe1c5d1875ad7cdacb7b960..74ce4b2ec75b1ca80fe5b2a7f4bfff287f42326d 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/ForwardLogHandler.java -@@ -1,12 +1,13 @@ - package org.bukkit.craftbukkit.util; - -+import org.apache.logging.log4j.LogManager; -+import org.apache.logging.log4j.Logger; -+ - import java.util.Map; - import java.util.concurrent.ConcurrentHashMap; - import java.util.logging.ConsoleHandler; - import java.util.logging.Level; - import java.util.logging.LogRecord; --import org.apache.logging.log4j.LogManager; --import org.apache.logging.log4j.Logger; - - public class ForwardLogHandler extends ConsoleHandler { - private Map cachedLoggers = new ConcurrentHashMap(); -diff --git a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java b/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java -index f847a9dd6214ba7e7807365a56c1977bc4930c15..408524476651f24e2d28294d88b8be88b0d719fe 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java -@@ -1,11 +1,12 @@ - package org.bukkit.craftbukkit.util; - --import java.util.HashSet; --import java.util.List; - import net.minecraft.server.EntityPlayer; - import net.minecraft.server.MinecraftServer; - import org.bukkit.entity.Player; - -+import java.util.HashSet; -+import java.util.List; -+ - public class LazyPlayerSet extends LazyHashSet { - - private final MinecraftServer server; -diff --git a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java -index 9a2da548b8860b496e396564b2c8f6383f020193..7b579654e0eda696ee5419b2a8a02148cbd3f40f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java -@@ -1,12 +1,5 @@ - package org.bukkit.craftbukkit.util; - --import com.mojang.util.QueueLogAppender; --import java.io.IOException; --import java.io.OutputStream; --import java.util.logging.Level; --import java.util.logging.Logger; --//import jline.console.ConsoleReader; --import org.bukkit.craftbukkit.Main; - //import org.fusesource.jansi.Ansi; - //import org.fusesource.jansi.Ansi.Erase; - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java b/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java -index 50f855b931dba60754fff9c7cdf5e0e744f00fdd..3165126e185ad18a4406712d1a0e27d3634e7b81 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java -@@ -4,13 +4,7 @@ import java.io.IOException; - import java.io.ObjectInputStream; - import java.io.ObjectOutputStream; - import java.io.Serializable; --import java.util.AbstractList; --import java.util.Arrays; --import java.util.ConcurrentModificationException; --import java.util.Iterator; --import java.util.List; --import java.util.NoSuchElementException; --import java.util.RandomAccess; -+import java.util.*; - - // implementation of an ArrayList that offers a getter without range checks - @SuppressWarnings("unchecked") -diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 2e6cd1780d759a9f94dc4d740fa1b81faad2a1ee..f96d936c82cd223621a12abbf4f0780d7df26259 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -@@ -1,11 +1,12 @@ - package org.bukkit.craftbukkit.util; - -+import org.bukkit.Bukkit; -+ - import java.io.IOException; - import java.io.InputStream; - import java.util.Properties; - import java.util.logging.Level; - import java.util.logging.Logger; --import org.bukkit.Bukkit; - - public final class Versioning { - public static String getBukkitVersion() { -diff --git a/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java b/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java -index 3c8946837351bf5a469be494b735d414e1801c20..d2e979c0ece68ccae2045d1bcbc6299eee4bf751 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/WeakCollection.java -@@ -1,11 +1,12 @@ - package org.bukkit.craftbukkit.util; - -+import org.apache.commons.lang.Validate; -+ - import java.lang.ref.WeakReference; - import java.util.ArrayList; - import java.util.Collection; - import java.util.Iterator; - import java.util.NoSuchElementException; --import org.apache.commons.lang.Validate; - - public final class WeakCollection implements Collection { - static final Object NO_VALUE = new Object(); -diff --git a/src/main/java/org/bukkit/craftbukkit/util/WorldUUID.java b/src/main/java/org/bukkit/craftbukkit/util/WorldUUID.java -index f101ed6c5a5e16e5804b36f1182edca874981831..af89e91a272a6850fe55221a7b103f6e8b8c59a2 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/WorldUUID.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/WorldUUID.java -@@ -1,15 +1,11 @@ - package org.bukkit.craftbukkit.util; - --import java.io.DataInputStream; --import java.io.DataOutputStream; --import java.io.File; --import java.io.FileInputStream; --import java.io.FileOutputStream; --import java.io.IOException; --import java.util.UUID; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - -+import java.io.*; -+import java.util.UUID; -+ - public final class WorldUUID { - - private static final Logger LOGGER = LogManager.getLogger(); diff --git a/scripts/fetchUpstream.sh b/scripts/fetchUpstream.sh index 16b753a0..3b113e3a 100755 --- a/scripts/fetchUpstream.sh +++ b/scripts/fetchUpstream.sh @@ -5,5 +5,5 @@ cd Tuinity git clean -fx git clean -fd git fetch -git reset --hard origin/ver/1.16 +git reset --hard origin/1.16.2tmp git submodule update --init --recursive -f \ No newline at end of file