Merge tuinity (#6413)

This PR contains all of Tuinity's patches. Very notable ones are:

- Highly optimised collisions
- Optimised entity lookups by bounding box (Mojang made regressions in 1.17, this brings it back to 1.16)
- Starlight https://github.com/PaperMC/Starlight
- Rewritten dataconverter system https://github.com/PaperMC/DataConverter
- Random block ticking optimisation (wrongly dropped from Paper 1.17)
- Chunk ticking optimisations
- Anything else I've forgotten in the 60 or so patches

If you are a previous Tuinity user, your config will not migrate. You must do it yourself. The config options have simply been moved into paper.yml, so it will be an easy migration. However, please note that the chunk loading options in tuinity.yml are NOT compatible with the options in paper.yml. 

* Port tuinity, initial patchset

* Update gradle to 7.2

jmp said it fixes rebuildpatches not working for me. it fucking better

* Completely clean apply

* Remove tuinity config, add per player api patch

* Remove paper reobf mappings patch

* Properly update gradlew

* Force clean rebuild

* Mark fixups

Comments and ATs still need to be done

* grep -r "Tuinity"

* Fixup

* Ensure gameprofile lastaccess is written only under the state lock

* update URL for dataconverter

* Only clean rebuild tuinity patches

might fix merge conflicts

* Use UTF-8 for gradlew

* Clean rb patches again

* Convert block ids used as item ids

Neither the converters of pre 1.13 nor DFU handled these cases,
as by the time they were written the game at the time didn't
consider these ids valid - they would be air. Because of this,
some worlds have logspam since only DataConverter (not DFU or
legacy converters) will warn when an invalid id has been
seen.

While quite a few do need to now be considered as air, quite a lot
do not. So it makes sense to add conversion for these items, instead
of simply suppressing or ignoring the logs. I've now added id -> string conversion
for all block ids that could be used as items that existed in the game
before 1.7.10 (I have no interest in tracking down the
exact version block ids stopped working) that were on
https://minecraft-ids.grahamedgecombe.com/

Items that did not directly convert to new items will
be instead converted to air: stems, wheat crops, piston head,
tripwire wire block

* Fix LightPopulated parsing in V1466

The DFU code was checking if the number existed, not if it
didn't exist. I misread the original code.

* Always parse protochunk light sources unless it is marked as non-lit

Chunks not marked as lit will always go through the light engine,
so they should always have their block sources parsed.

* Update custom names to JSON for players

Missed this fix from CB, as it was inside
the DataFixers class.

I decided to double check all of the CB changes again:

DataFixers.java was the only area I missed, as I had inspected all
datafixer diffs and implemented them all into DataConverter. I also
checked Bootstrap.java again, and re-evaluated their changes. I had
previously done this, but determined that they were all bad.

The changes to make standing_sign block map to oak_sign block in
V1450 is bad, because that's not the item id V1450 accepts. Only
in 1.14 did oak_sign even exist, and as expected there is a converter
to rename all existing sign items/blocks.

The fix to register the portal block under id 1440 is useless, as
the flattenning logic will default to the lowest registered id - which
is the exact blockstate that CB registers into 1440. So it just
doesn't do anything.

The extra item ids in the id -> string converter are already added,
but I found this from EMC originally.

The change for the spawn egg id 23 -> Arrow is just wrong,
that id DOES correspond to TippedArrow, NOT Arrow. As
expected, the spawn egg already has a dedicated mapping for
Arrow, which is id 10 - which was Arrow's entity id.

I also ported a fix for the cooked_fished id update. This doesn't
really matter since there is already a dataconverter to fix this,
but the game didn't accept cooked_fished at the time. So I see
no harm.

* Review all converters and walkers

- Refactor V99 to have helper methods for defining entity/tile
  entity types
- Automatically namespace all ids that should be namespaced.
  While vanilla never saved non-namespaced data for things that
  are namespaced, plugins/users might have.
- Synchronised the identity ensure map in HelperBlockFlatteningV1450
- Code style consistency
- Add missing log warning in V102 for ITEM_NAME type conversion
- Use getBoolean instead of getByte
- Use ConverterAbstractEntityRename for V143 TippedArrow -> Arrow
  rename, as it will affect ENTITY_NAME type
- Always set isVillager to false in V502 for Zombie
- Register V808's converter under subversion 1 like DFU
- Register a breakpoint for V1.17.1. In the future, all final
  versions of major releases will have a breakpoint so that
  the work required to determine if a converter needs a breakpoint
  is minimal
- Validate that a dataconverter is only registered for a version
  that is registered
- ConverterFlattenTileEntity is actually ConverterFlattenEntity
  It even registered the converters under TILE_ENTITY, instead of
  ENTITY.
- Fix id comparison in V1492 STRUCTURE_FEATURE renamer
- Use ConverterAbstractStatsRename for V1510 stats renamer
  At the time I had written that class, the abstract renamer didn't
  exist.
- Ensure OwnerUUID is at least set to empty string in
  V1904 if the ocelot is converted to a cat (this is
  likely so that it retains a collar)
- Use generic read/write for Records in V1946
  Records is actually a list, not a map. So reading map was
  invalid.

* Always set light to zero when propagating decrease

This fixes an almost infinite loop where light values
would be spam queued on a very small subset on blocks.

This also likely fixes the memory issues people were
seeing.

* re-organize patches

* Apply and fix conflicts

* Revert some patches

getChunkAt retains chunks so that plugins don't spam loads
revert mc-4 fix will remain unless issues pop up

* Shuffle iterated chunks if per player is not enabled

Can help with some mob spawning stacking up at locations

* Make per player default, migrate all configs

* Adjust comments in fixups

* Rework config for player chunk loader

Old config is not compatible. Move all configs to be
under `settings` in paper.yml

The player chunk loader has been modified to
less aggressively load chunks, but to send
chunks at higher rates compared to tuinity. There are
new config entries to tune this behavior.

* Add back old constructor to CompressionEncoder/Decoder (fixes
 Tuinity #358)

* Raise chunk loading default limits

* Reduce worldgen thread workers for lower core count cpus

* Raise limits for chunk loading config

Also place it under `chunk-loading`

* Disable max chunk send rate by default

* Fix conflicts and rebuild patches

* Drop default send rate again

Appears to be still causing problems for no known reason

* Raise chunk send limits to 100 per player

While a low limit fixes ping issues for some people, most people
do not suffer from this issue and thus should not suffer from
an extremely slow load-in rate.

* Rebase part 1

Autosquash the fixups

* Move not implemented up

* Fixup mc-dev fixes

Missed this one

* Rebase per player viewdistance api into the original api patch

* Remove old light engine patch part 1

The prioritisation must be kept from it, so that part
has been rebased into the priority patch.
Part 2 will deal with rebasing all of the patches _after_

* Rebase remaining patches for old light patch removal

* Remove other mid tick patch

* Remove Optimize-PlayerChunkMap-memory-use-for-visibleChunks.patch

Replaced by `Do not copy visible chunks`

* Revert AT for Vec3i setX/Y/Z

The class is immutable. set should not be exposed

* Remove old IntegerUtil class

* Replace old CraftChunk#getEntities patch

* Remove import for SWMRNibbleArray in ChunkAccess

* Finished merge checklist

* Remove ensureTickThread impl in urgency patch

Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com>
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
This commit is contained in:
Spottedleaf 2021-08-31 04:02:11 -07:00 committed by GitHub
parent 7ff0a9ba19
commit 7d10cdea03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
953 changed files with 40037 additions and 3168 deletions

View file

@ -298,7 +298,7 @@ index 0000000000000000000000000000000000000000..bee2fa2bfbb61209381f24ed6508d3d1
+}
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..da4e7ee0914cd23679645ced0060541de69c64ee
index 0000000000000000000000000000000000000000..a632a796a3e5f2b361a521d70581b83a6839fc73
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -0,0 +1,185 @@
@ -364,8 +364,8 @@ index 0000000000000000000000000000000000000000..da4e7ee0914cd23679645ced0060541d
+ commands = new HashMap<String, Command>();
+ commands.put("paper", new PaperCommand("paper"));
+
+ version = getInt("config-version", 21);
+ set("config-version", 21);
+ version = getInt("config-version", 22);
+ set("config-version", 22);
+ readConfig(PaperConfig.class, null);
+ }
+

View file

@ -221,6 +221,19 @@ index a2bab5980a8fd6d98c20aa601ba0ce97044ce996..d7cc7e12d265a47564c3f1d4af27a3ec
return i == 0;
});
} finally {
diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java
index 75c1c4671fedb425dea20dc4fb0c6cb2304dee83..5a86bc6f552913e2978c61233148db22e3a240f1 100644
--- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java
+++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java
@@ -30,7 +30,7 @@ public class PoiSection {
private boolean isValid;
public static Codec<PoiSection> codec(Runnable updateListener) {
- return RecordCodecBuilder.create((instance) -> {
+ return RecordCodecBuilder.<PoiSection>create((instance) -> { // Paper - decompile fix
return instance.group(RecordCodecBuilder.point(updateListener), Codec.BOOL.optionalFieldOf("Valid", Boolean.valueOf(false)).forGetter((poiSet) -> {
return poiSet.isValid;
}), PoiRecord.codec(updateListener).listOf().fieldOf("Records").forGetter((poiSet) -> {
diff --git a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java b/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java
index 38dd114fbfa07a18987cd774ae05060d723247e4..057b92a2948543644618c63abd3f61d1120db4dd 100644
--- a/src/main/java/net/minecraft/world/item/crafting/RecipeManager.java

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,67 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sun, 3 Mar 2019 20:53:18 -0800
Subject: [PATCH] Not implemeneted
Currently a placeholder patch.
diff --git a/src/main/java/io/papermc/paper/util/TickThread.java b/src/main/java/io/papermc/paper/util/TickThread.java
new file mode 100644
index 0000000000000000000000000000000000000000..728c39bb163b2334da9915441fd46970b16cf2a9
--- /dev/null
+++ b/src/main/java/io/papermc/paper/util/TickThread.java
@@ -0,0 +1,41 @@
+package io.papermc.paper.util;
+
+import net.minecraft.server.MinecraftServer;
+import org.bukkit.Bukkit;
+
+public final class TickThread extends Thread {
+
+ public static final boolean STRICT_THREAD_CHECKS = Boolean.getBoolean("paper.strict-thread-checks");
+
+ static {
+ if (STRICT_THREAD_CHECKS) {
+ MinecraftServer.LOGGER.warn("Strict thread checks enabled - performance may suffer");
+ }
+ }
+
+ public static void softEnsureTickThread(final String reason) {
+ if (!STRICT_THREAD_CHECKS) {
+ return;
+ }
+ ensureTickThread(reason);
+ }
+
+
+ public static void ensureTickThread(final String reason) {
+ if (!Bukkit.isPrimaryThread()) {
+ MinecraftServer.LOGGER.fatal("Thread " + Thread.currentThread().getName() + " failed main thread check: " + reason, new Throwable());
+ throw new IllegalStateException(reason);
+ }
+ }
+
+ public final int id; /* We don't override getId as the spec requires that it be unique (with respect to all other threads) */
+
+ public TickThread(final Runnable run, final String name, final int id) {
+ super(run, name);
+ this.id = id;
+ }
+
+ public static TickThread getCurrentTickThread() {
+ return (TickThread)Thread.currentThread();
+ }
+}
diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java
index bbf0d9d9c44fe8d7add2f978994ec129420814c7..78669fa035b7537ff7e533cf32aaf2995625424f 100644
--- a/src/main/java/org/spigotmc/AsyncCatcher.java
+++ b/src/main/java/org/spigotmc/AsyncCatcher.java
@@ -9,7 +9,7 @@ public class AsyncCatcher
public static void catchOp(String reason)
{
- if ( AsyncCatcher.enabled && Thread.currentThread() != MinecraftServer.getServer().serverThread )
+ if ( (AsyncCatcher.enabled || io.papermc.paper.util.TickThread.STRICT_THREAD_CHECKS) && Thread.currentThread() != MinecraftServer.getServer().serverThread ) // Paper
{
throw new IllegalStateException( "Asynchronous " + reason + "!" );
}

View file

@ -690,7 +690,7 @@ index 0000000000000000000000000000000000000000..e3b74dbdf8e14219a56fab939f3174e0
+ }
+}
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 2c0514892d3993bef57ecf677cf8bb0fbe0216e4..da922f395f0fff0881ead893c900c5b2623f48f0 100644
index a632a796a3e5f2b361a521d70581b83a6839fc73..644a26bd5ac49e67a04ced0ac07097e22fe064f5 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -42,6 +42,7 @@ public class PaperConfig {
@ -714,7 +714,7 @@ index 2c0514892d3993bef57ecf677cf8bb0fbe0216e4..da922f395f0fff0881ead893c900c5b2
static void readConfig(Class<?> clazz, Object instance) {
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index e38b5957b015be3c835ca28a9fe6ee75d7954393..2d226fd06759ed92bf5591259fc86f34f606a3ec 100644
index 58c9ab2f6db97bfbf280efc56f9c9be791604a75..f8a9d6a394f796634e4663ef4078a4c98447e13c 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -83,6 +83,7 @@ public class SpigotConfig

View file

@ -37,7 +37,7 @@ index 0000000000000000000000000000000000000000..d02bd109399d6b32cbbb5e6f9ec7e650
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index c57bde6b2042c0a68cb02f43c28cae0070f38111..89ed84d2e3ac8f25785a2d39b4fd37e50497e49e 100644
index a5f704edf4d8afdb088f3a4ac8e3957f8851842d..264d216429c164798d5e645c044b95892b3b615e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -146,7 +146,7 @@ import org.bukkit.event.player.PlayerTeleportEvent;
@ -49,7 +49,7 @@ index c57bde6b2042c0a68cb02f43c28cae0070f38111..89ed84d2e3ac8f25785a2d39b4fd37e5
// CraftBukkit start
private static final int CURRENT_LEVEL = 2;
@@ -1955,12 +1955,31 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1960,12 +1960,31 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return true;
}

View file

@ -669,7 +669,7 @@ index 0000000000000000000000000000000000000000..0fda52841b5e1643efeda92106124998
+ }
+}
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 99ad5dfe52534048078a386020c4f3f277020107..997041d4bc1cd6be97a2d403723eded7eda60351 100644
index 644a26bd5ac49e67a04ced0ac07097e22fe064f5..666d956d0417d02a3c9e78a688edbe66e42cce18 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -14,12 +14,15 @@ import java.util.concurrent.TimeUnit;
@ -772,7 +772,7 @@ index b3a6aeba2363d283f03982cf749f25cfa11a5052..449f1b2f5dca350dc0912e14c8c2bf3e
PacketUtils.LOGGER.debug("Ignoring packet due to disconnection: {}", packet);
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ede9fc2846 100644
index dab59e1a523ab14f28764b179931a7a54e1bf52e..5de0b15ee206ad01b1b4522b2d375fae08d2486f 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -182,7 +182,7 @@ import org.bukkit.craftbukkit.generator.CustomWorldChunkManager;
@ -784,7 +784,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
import org.spigotmc.SlackActivityAccountant; // Spigot
public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTask> implements SnooperPopulator, CommandSource, AutoCloseable {
@@ -910,6 +910,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -911,6 +911,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// CraftBukkit end
MinecraftServer.LOGGER.info("Stopping server");
@ -792,7 +792,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
// CraftBukkit start
if (this.server != null) {
this.server.disablePlugins();
@@ -1112,9 +1113,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1114,9 +1115,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private boolean haveTime() {
// CraftBukkit start
@ -814,7 +814,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
private void executeModerately() {
this.runAllTasks();
java.util.concurrent.locks.LockSupport.parkNanos("executing tasks", 1000L);
@@ -1122,9 +1135,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1124,9 +1137,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end
protected void waitUntilNextTick() {
@ -826,7 +826,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
});
}
@@ -1210,10 +1223,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1212,10 +1225,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public void onServerExit() {}
public void tickServer(BooleanSupplier shouldKeepTicking) {
@ -846,7 +846,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
++this.tickCount;
this.tickChildren(shouldKeepTicking);
if (i - this.lastServerStatus >= 5000000000L) {
@@ -1231,14 +1252,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1233,14 +1254,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
if (this.autosavePeriod > 0 && this.tickCount % this.autosavePeriod == 0) { // CraftBukkit
@ -861,9 +861,9 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
}
this.profiler.push("snooper");
@@ -1251,6 +1270,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
@@ -1254,6 +1273,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
io.papermc.paper.util.CachedLists.reset(); // Paper
this.profiler.pop();
+
+ // Paper start - move executeAll() into full server tick timing
@ -875,7 +875,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
this.profiler.push("tallying");
long l = this.tickTimes[this.tickCount % 100] = Util.getNanos() - i;
@@ -1261,30 +1287,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1264,30 +1290,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.pop();
org.spigotmc.WatchdogThread.tick(); // Spigot
this.slackActivityAccountant.tickEnded(l); // Spigot
@ -914,7 +914,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
// Send time updates to everyone, it will get the right time from the world the player is in.
if (this.tickCount % 20 == 0) {
for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
@@ -1292,7 +1317,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1295,7 +1320,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
entityplayer.connection.send(new ClientboundSetTimePacket(entityplayer.level.getGameTime(), entityplayer.getPlayerTime(), entityplayer.level.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT))); // Add support for per player time
}
}
@ -923,7 +923,7 @@ index dc7779b722cfa5337717b92896c168d839c14946..b3707d09bd73c306ea5e87785e6754ed
while (iterator.hasNext()) {
ServerLevel worldserver = (ServerLevel) iterator.next();
@@ -1333,24 +1358,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1341,24 +1366,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
this.profiler.popPush("connection");
@ -1049,7 +1049,7 @@ index fac993d58bd6e3bb19fd69881092a863c8952c65..2b062beaad39f2e86801fdd5b0cc84b2
}
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80df1d64cc 100644
index 12a9a6fa04867d5695d46bf7973f1542798485be..e0794c0eac5c2d323b10e1f69d9c1875731da125 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1,7 +1,9 @@
@ -1062,7 +1062,7 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
import com.google.common.collect.Lists;
import com.google.common.collect.Queues;
import com.google.common.collect.Sets;
@@ -580,11 +582,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -629,11 +631,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
private CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> scheduleChunkLoad(ChunkPos pos) {
return CompletableFuture.supplyAsync(() -> {
@ -1080,7 +1080,7 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
boolean flag = nbttagcompound.contains("Level", 10) && nbttagcompound.getCompound("Level").contains("Status", 8);
if (flag) {
@@ -595,7 +600,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -644,7 +649,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
ChunkMap.LOGGER.error("Chunk file at {} is missing level data, skipping", pos);
@ -1089,7 +1089,7 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
} catch (ReportedException reportedexception) {
Throwable throwable = reportedexception.getCause();
@@ -709,6 +714,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -758,6 +763,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
ChunkStatus chunkstatus = ChunkHolder.getStatus(playerchunk.getTicketLevel());
return !chunkstatus.isOrAfter(ChunkStatus.FULL) ? ChunkHolder.UNLOADED_CHUNK : either.mapLeft((ichunkaccess) -> {
@ -1097,7 +1097,7 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
ChunkPos chunkcoordintpair = playerchunk.getPos();
ProtoChunk protochunk = (ProtoChunk) ichunkaccess;
LevelChunk chunk;
@@ -732,6 +738,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -781,6 +787,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
return chunk;
@ -1105,7 +1105,7 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
});
}, (runnable) -> {
ProcessorHandle mailbox = this.mainThreadMailbox;
@@ -1189,6 +1196,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1238,6 +1245,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
ChunkMap.TrackedEntity playerchunkmap_entitytracker;
ObjectIterator objectiterator;
@ -1113,7 +1113,7 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
for (objectiterator = this.entityMap.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.serverEntity.sendChanges()) {
playerchunkmap_entitytracker = (ChunkMap.TrackedEntity) objectiterator.next();
@@ -1206,14 +1214,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1255,14 +1263,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
playerchunkmap_entitytracker.lastSectionPos = sectionposition1;
}
}
@ -1132,10 +1132,10 @@ index 2b62f4664f439808661d559dc99762bfbac09b16..d5067a9a4931e0bf267dbacc925bef80
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c70453e835a5 100644
index 77d98bfa0ad9fc92a8e794b5a4e00c3e471c123a..3e2a5f83afcc3b9c9fe62748895d489135af03bf 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -346,13 +346,15 @@ public class ServerChunkCache extends ChunkSource {
@@ -507,13 +507,15 @@ public class ServerChunkCache extends ChunkSource {
}
gameprofilerfiller.incrementCounter("getChunkCacheMiss");
@ -1153,7 +1153,7 @@ index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c704
ichunkaccess = (ChunkAccess) ((Either) completablefuture.join()).map((ichunkaccess1) -> {
return ichunkaccess1;
}, (playerchunk_failure) -> {
@@ -552,7 +554,9 @@ public class ServerChunkCache extends ChunkSource {
@@ -713,7 +715,9 @@ public class ServerChunkCache extends ChunkSource {
public void save(boolean flush) {
this.runDistanceManagerUpdates();
@ -1163,7 +1163,7 @@ index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c704
}
@Override
@@ -590,7 +594,9 @@ public class ServerChunkCache extends ChunkSource {
@@ -751,7 +755,9 @@ public class ServerChunkCache extends ChunkSource {
this.runDistanceManagerUpdates();
this.level.timings.doChunkMap.stopTiming(); // Spigot
this.level.getProfiler().popPush("chunks");
@ -1173,7 +1173,7 @@ index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c704
this.level.timings.doChunkUnload.startTiming(); // Spigot
this.level.getProfiler().popPush("unload");
this.chunkMap.tick(booleansupplier);
@@ -614,14 +620,17 @@ public class ServerChunkCache extends ChunkSource {
@@ -775,14 +781,17 @@ public class ServerChunkCache extends ChunkSource {
boolean flag2 = level.ticksPerAnimalSpawns != 0L && worlddata.getGameTime() % level.ticksPerAnimalSpawns == 0L; // CraftBukkit
this.level.getProfiler().push("naturalSpawnCount");
@ -1191,7 +1191,7 @@ index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c704
list.forEach((playerchunk) -> {
Optional<LevelChunk> optional = ((Either) playerchunk.getTickingChunkFuture().getNow(ChunkHolder.UNLOADED_LEVEL_CHUNK)).left();
@@ -635,15 +644,18 @@ public class ServerChunkCache extends ChunkSource {
@@ -796,15 +805,18 @@ public class ServerChunkCache extends ChunkSource {
NaturalSpawner.spawnForChunk(this.level, chunk, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag2);
}
@ -1212,7 +1212,7 @@ index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c704
}
this.level.getProfiler().popPush("broadcast");
@@ -651,15 +663,20 @@ public class ServerChunkCache extends ChunkSource {
@@ -812,15 +824,20 @@ public class ServerChunkCache extends ChunkSource {
Optional<LevelChunk> optional = ((Either) playerchunk.getTickingChunkFuture().getNow(ChunkHolder.UNLOADED_LEVEL_CHUNK)).left(); // CraftBukkit - decompile error
Objects.requireNonNull(playerchunk);
@ -1237,7 +1237,7 @@ index 48c876381d75c66f24d59bd2c415dd7de293afee..e11b4be6e6990101ce77b6349ab8c704
private void getFullChunk(long pos, Consumer<LevelChunk> chunkConsumer) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3a54d79fc 100644
index 24b763a7d333be18e3b31b20f9405eb814741f8a..9d00198c74bae8507df75553c9005ba847fd7c11 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1,6 +1,8 @@
@ -1257,7 +1257,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
import org.bukkit.craftbukkit.event.CraftEventFactory;
import org.bukkit.craftbukkit.util.WorldUUID;
import org.bukkit.event.entity.CreatureSpawnEvent;
@@ -217,13 +218,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -308,13 +309,13 @@ public class ServerLevel extends Level implements WorldGenLevel {
DefaultedRegistry registryblocks = Registry.BLOCK;
Objects.requireNonNull(registryblocks);
@ -1273,7 +1273,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
this.navigatingMobs = new ObjectOpenHashSet();
this.blockEvents = new ObjectLinkedOpenHashSet();
this.dragonParts = new Int2ObjectOpenHashMap();
@@ -430,17 +431,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -521,17 +522,21 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.updateSkyBrightness();
this.tickTime();
gameprofilerfiller.popPush("tickPending");
@ -1297,7 +1297,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
gameprofilerfiller.popPush("blockEvents");
timings.doSounds.startTiming(); // Spigot
this.runBlockEvents();
@@ -598,6 +603,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -689,6 +694,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.popPush("tickBlocks");
@ -1305,7 +1305,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
if (randomTickSpeed > 0) {
LevelChunkSection[] achunksection = chunk.getSections();
int l = achunksection.length;
@@ -630,6 +636,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -721,6 +727,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
@ -1313,7 +1313,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
gameprofilerfiller.pop();
}
@@ -755,14 +762,22 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -846,14 +853,22 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
public void tickNonPassenger(Entity entity) {
@ -1337,7 +1337,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
entity.setOldPosAndRot();
ProfilerFiller gameprofilerfiller = this.getProfiler();
@@ -781,7 +796,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -872,7 +887,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.tickPassenger(entity, entity1);
}
@ -1346,7 +1346,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
}
@@ -823,6 +838,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -914,6 +929,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (!flag1) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
@ -1354,7 +1354,7 @@ index f9fde3155944bb44ecb14524c585ed8eb9eac78c..e8184b64a0a8807f898deffc913adfd3
if (progressListener != null) {
progressListener.progressStartNoAbort(new TranslatableComponent("menu.savingLevel"));
}
@@ -832,7 +848,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -923,7 +939,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
progressListener.progressStage(new TranslatableComponent("menu.savingChunks"));
}
@ -1445,7 +1445,7 @@ index 8c4744b3a3ebf73d31f59d1566320031550aa3bb..c731f22390773bcd43d392b86ae5b42b
public UserWhiteList getWhiteList() {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 89ed84d2e3ac8f25785a2d39b4fd37e50497e49e..96f8a886f348c1e18b4b1b97579ea44d43a05a44 100644
index 264d216429c164798d5e645c044b95892b3b615e..1b8563be119498b8a9199ebd6fd4ad405577e0ee 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -126,7 +126,6 @@ import org.bukkit.craftbukkit.event.CraftPortalEvent;
@ -1464,7 +1464,7 @@ index 89ed84d2e3ac8f25785a2d39b4fd37e50497e49e..96f8a886f348c1e18b4b1b97579ea44d
// Spigot start
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
@@ -717,7 +715,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -722,7 +720,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
}
public void move(MoverType movementType, Vec3 movement) {
@ -1472,7 +1472,7 @@ index 89ed84d2e3ac8f25785a2d39b4fd37e50497e49e..96f8a886f348c1e18b4b1b97579ea44d
if (this.noPhysics) {
this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z);
} else {
@@ -864,7 +861,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -869,7 +866,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
this.level.getProfiler().pop();
}
}

View file

@ -7,7 +7,7 @@ Co-authored-by: zml <zml@stellardrift.ca>
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 997041d4bc1cd6be97a2d403723eded7eda60351..8330f57d57181002dab4599e2c1f477cf9e51784 100644
index 666d956d0417d02a3c9e78a688edbe66e42cce18..f5155d4b48f17c82b7a637418c40ffcdc6cc6271 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -222,4 +222,13 @@ public class PaperConfig {

View file

@ -25,7 +25,7 @@ index 3618cc017feb60e257a28f67cbddca3f792a9833..796c17e0941922a9716212c6eae91643
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 564e8cb28c094a1bb9ab7d214464d6e6d9788bcf..f8b97aa5819e228f31c7953ee6e5c4e69fe55666 100644
index 2846a0e71e3e349319fa6483d547eb676ff5d058..30d89a97a396d0037279489b756c4e1a254b8ef9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -79,7 +79,7 @@ import org.bukkit.event.entity.EntityTransformEvent;

View file

@ -19,10 +19,10 @@ index 78948c42b13194005bdbbbc69c2b7ae0732a78c5..b41e7922dd96c3358eb849ab39982a75
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 96f8a886f348c1e18b4b1b97579ea44d43a05a44..f1230adeaf399424630412975310cb3e31ed001f 100644
index 1b8563be119498b8a9199ebd6fd4ad405577e0ee..f903453fd129f6fb5023615088bd84d33052f0dc 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1265,6 +1265,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -1270,6 +1270,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
return this.isInWater() || this.isInRain();
}

View file

@ -30,7 +30,7 @@ index b41e7922dd96c3358eb849ab39982a75736e3476..2f0d582baf0eb2bb477944d0cb1369db
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 5c01a30ccdcf05f516700fb95a46606f2c4cfc6b..78813a0efcab432c8c8c869da13ea49c93874cbf 100644
index abaa57d9a4d222753d28801c6ab86b11c71aca6b..c9a9a4c6ba930dedb227c1f1d4ca4bb520983854 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -778,16 +778,16 @@ public abstract class Mob extends LivingEntity {

View file

@ -20,7 +20,7 @@ index 2f0d582baf0eb2bb477944d0cb1369db6ca33956..89e76dd73811fd0f6f8c8e7e5af804d5
+ }
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index e38cd4df0924cce7fee4fd98967990945a62ecf4..a682e7a621b799d0855318788c7f5ad108716256 100644
index 64bf654a622e2b5e79c45d288c812e32518769c6..339601220b91b9b9881ed031c8709d6bc4e32729 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -237,6 +237,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -19,10 +19,10 @@ index 2c53a400611c78236c5a1c1270d27c02e94251bf..a1d5c0f8fe2adb2ee56f3217e089211e
if (outputStream != null) {
try {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index b3707d09bd73c306ea5e87785e6754ede9fc2846..cb1caae296d8d27d65f6f63f0f86aee53d363664 100644
index 5de0b15ee206ad01b1b4522b2d375fae08d2486f..c24c5c39103fd2ae37711b745fef74c44ac18565 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1435,7 +1435,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1443,7 +1443,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@ -32,7 +32,7 @@ index b3707d09bd73c306ea5e87785e6754ede9fc2846..cb1caae296d8d27d65f6f63f0f86aee5
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 70d1ac0c352f16ee2dc394e5df31eea02d7c3ad9..2092bd94bc151264e1e5d0efd687ee92c3ac8c3c 100644
index ca36773a4a01d050a79bfabeb5aba854a86be168..7d197e075874c70207e1068e300eaf5f076745a8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -242,7 +242,7 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;

View file

@ -12,7 +12,7 @@ Previous implementation did not calculate TPS correctly.
Switch to a realistic rolling average and factor in std deviation as an extra reporting variable
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index cb1caae296d8d27d65f6f63f0f86aee53d363664..5756f151de059f6b0de811498fe9e6e07d40063f 100644
index c24c5c39103fd2ae37711b745fef74c44ac18565..d9a305f39a4004f28ad5f8c35db1016c1bedea16 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -283,7 +283,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@ -33,7 +33,7 @@ index cb1caae296d8d27d65f6f63f0f86aee53d363664..5756f151de059f6b0de811498fe9e6e0
public final double[] recentTps = new double[ 3 ];
public final SlackActivityAccountant slackActivityAccountant = new SlackActivityAccountant();
// Spigot end
@@ -1005,6 +1005,57 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1006,6 +1006,57 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
{
return ( avg * exp ) + ( tps * ( 1 - exp ) );
}
@ -91,7 +91,7 @@ index cb1caae296d8d27d65f6f63f0f86aee53d363664..5756f151de059f6b0de811498fe9e6e0
// Spigot End
protected void runServer() {
@@ -1017,25 +1068,32 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1018,26 +1069,33 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot start
Arrays.fill( recentTps, 20 );
@ -112,6 +112,7 @@ index cb1caae296d8d27d65f6f63f0f86aee53d363664..5756f151de059f6b0de811498fe9e6e0
this.lastOverloadWarning = this.nextTickTime;
}
++MinecraftServer.currentTickLong; // Paper
- if ( tickCount++ % MinecraftServer.SAMPLE_INTERVAL == 0 )
+ if ( ++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0 )
{
@ -132,7 +133,7 @@ index cb1caae296d8d27d65f6f63f0f86aee53d363664..5756f151de059f6b0de811498fe9e6e0
tickSection = curTime;
}
// Spigot end
@@ -1045,7 +1103,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1047,7 +1105,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.debugCommandProfiler = new MinecraftServer.TimeProfiler(Util.getNanos(), this.tickCount);
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Entity Origin API
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 0db1607dc6bbf0def58bdc14fca33dbaa48a8e40..491bbaac18d006f9476c6aa2c584ec6efab23296 100644
index 9d00198c74bae8507df75553c9005ba847fd7c11..29cff1fba174be7fb6b26958db61bd4ea6c3125d 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1855,6 +1855,15 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1946,6 +1946,15 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
entity.valid = true; // CraftBukkit
@ -25,7 +25,7 @@ index 0db1607dc6bbf0def58bdc14fca33dbaa48a8e40..491bbaac18d006f9476c6aa2c584ec6e
public void onTrackingEnd(Entity entity) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index f1230adeaf399424630412975310cb3e31ed001f..628ac6ab6b5b12c4baf451e4cecac5ce4a62b964 100644
index f903453fd129f6fb5023615088bd84d33052f0dc..3d6b2a74182485af701838be075edd999520ddf2 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -281,6 +281,27 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@ -56,7 +56,7 @@ index f1230adeaf399424630412975310cb3e31ed001f..628ac6ab6b5b12c4baf451e4cecac5ce
// Spigot start
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
@@ -1813,6 +1834,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -1818,6 +1839,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
this.bukkitEntity.storeBukkitValues(nbt);
}
// CraftBukkit end
@ -72,7 +72,7 @@ index f1230adeaf399424630412975310cb3e31ed001f..628ac6ab6b5b12c4baf451e4cecac5ce
return nbt;
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
@@ -1939,6 +1969,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -1944,6 +1974,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
}
// CraftBukkit end

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Prevent tile entity and entity crashes
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index a682e7a621b799d0855318788c7f5ad108716256..cb8512221e17e1a5066aa6610564c2f24ef02da8 100644
index 339601220b91b9b9881ed031c8709d6bc4e32729..bbf3135e71a798536641c279eb6b84132e338629 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -734,11 +734,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -29,10 +29,10 @@ index d16ae924bcbe31c964f7fb448757c748e5c4418c..4bba6977a0287837b8927718c040ac61
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 628ac6ab6b5b12c4baf451e4cecac5ce4a62b964..1a3b67fba88c6cea96a08f8d3085a6fb342ada48 100644
index 3d6b2a74182485af701838be075edd999520ddf2..8c8ef6d7df8589d37cb722949fc3ffe9a9432c48 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -623,7 +623,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -628,7 +628,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
}
public void checkOutOfWorld() {

View file

@ -20,7 +20,7 @@ index 4bba6977a0287837b8927718c040ac61463f0469..e6e18f309dc09ea9416ea37dcc697ddc
+ }
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 5358faada2d6cf806a468190ec568ffa322aa121..65ef47b59f9096e7ae4358cf417d73327f9d91a4 100644
index d1efa7b3fb2b22bd77fd01ffd137ddc975e5fe60..6bee392787a517d5ab8966b94c035db00eeb7d99 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -936,6 +936,7 @@ public class ServerPlayer extends Player {

View file

@ -25,10 +25,10 @@ index e6e18f309dc09ea9416ea37dcc697ddc2b571a96..4881b03d470646843bad1bc343eb6a6a
+ }
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 5756f151de059f6b0de811498fe9e6e07d40063f..36305b91d6e529900074040b8448bc57b9ef85bd 100644
index d9a305f39a4004f28ad5f8c35db1016c1bedea16..770134bd7a74616bf8d22439ff1ad1379fa27f0a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1414,6 +1414,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1422,6 +1422,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.pop();
this.profiler.pop();

View file

@ -19,7 +19,7 @@ index 4881b03d470646843bad1bc343eb6a6ab9072d8e..2222c1bb5f8625eee4d88946e4bfdfa2
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 759cd74cda7f0d1f3c0f3bc0a2a941e16258a1c0..5b285714ce231d45d879be83ae36d94eaa8310c0 100644
index 914f69157ac5e5e9e77de968c4e328d8f44b9465..0f1a9e7561f6df4844545ff4565e996bb21eb9dc 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1380,6 +1380,7 @@ public abstract class LivingEntity extends Entity {

View file

@ -19,10 +19,10 @@ index 2222c1bb5f8625eee4d88946e4bfdfa2fe598977..083e421f8496b5336af473b108498ed2
+ }
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index d721d05841d9557583045ab3adc347c24a6d751d..2176d1db94de2a608deadf0cd3e95c3c9ffac019 100644
index 29cff1fba174be7fb6b26958db61bd4ea6c3125d..bf42ee77cb877a83031ce19f1b54f5659cd93ea0 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -553,7 +553,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -644,7 +644,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
gameprofilerfiller.push("thunder");
BlockPos blockposition;

View file

@ -19,10 +19,10 @@ index 083e421f8496b5336af473b108498ed28b984774..2f7a5a4a5a7b29750cfd777e0bc5d19a
+ }
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 2176d1db94de2a608deadf0cd3e95c3c9ffac019..6bde7dee09b9cf2b3acd66f9c9d55b338f20fe25 100644
index bf42ee77cb877a83031ce19f1b54f5659cd93ea0..c9ee1a12b6fe92db6896cd4abd7e7833b094c9da 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -577,7 +577,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -668,7 +668,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
gameprofilerfiller.popPush("iceandsnow");

View file

@ -7,7 +7,7 @@ I hope to look at this more in-depth soon. It appears doable.
However this should not block the update.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 094228ff071218f49d07f8e5343e1544c98e14d1..505cf31d1cc89d463c1b61fdf9b2247ce2743dc8 100644
index 6bee392787a517d5ab8966b94c035db00eeb7d99..ae63083b1283a5628fa900827c0af6e9254592c2 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -171,6 +171,8 @@ import org.bukkit.inventory.MainHand;
@ -20,7 +20,7 @@ index 094228ff071218f49d07f8e5343e1544c98e14d1..505cf31d1cc89d463c1b61fdf9b2247c
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_XZ = 32;
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y = 10;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4178dc224e3cbff004a55e1e84512ae345d7ec9c..b2d17fa187d8de8ff99923fef0485209338f2783 100644
index 2685ebf77191a797bc1835a3da13a238ce9432a7..fd054c48c3306d316c944a01a861186581429fd0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -371,6 +371,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {

View file

@ -19,7 +19,7 @@ index 4de86b09c6bc3c1974ce61b550ccb73d37f6f170..5a4c3a8c511f22c8c3240c9c7cd83a65
+ }
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 505cf31d1cc89d463c1b61fdf9b2247ce2743dc8..3f676bab4448de3658a4c631916740be7be6a193 100644
index ae63083b1283a5628fa900827c0af6e9254592c2..2b7dd46fe090db01aa4d1f0e4211bed769ad76dc 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -217,6 +217,7 @@ public class ServerPlayer extends Player {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Disable spigot tick limiters
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index cd40ec40a09c87e3a2e35b121970d1518f43a8f8..bc0adb68931c9c1404bf87a3f7643b4982e4ae35 100644
index ef1422963d13837afaccbddde3a9eb0e36167848..d7c745b11a484665ebd5f4d2df94689896024b06 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -700,9 +700,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -48,7 +48,7 @@ index da9f4b3337b49597c17b50964656457cd629a0b7..22c2c121bbcc7b0e15d73d20c9cc83d5
} else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) {
// Do nothing, this is coming from a plugin
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 167558990f82c9b463377bbc64e18baa956871db..d8f5476067cb41d04ebccd690b83756b95396500 100644
index 66420a9b1e917856b94343b90859323a1d84341f..022326790d61d163a47b2fe888627f0625405755 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -773,6 +773,28 @@ public final class CraftServer implements Server {
@ -93,7 +93,7 @@ index 19c44daaa407b7c1c7a7ffe56fef8c8814c6d5b2..6a073a9dc44d93eba296a0e18a9c7be8
} finally {
try {
diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java
index bbf0d9d9c44fe8d7add2f978994ec129420814c7..7a23b56752f6733ee626a8b1e4c3b78591855c4e 100644
index 78669fa035b7537ff7e533cf32aaf2995625424f..7585a30e8f063ac2656b5de519b1e9edaceffbc7 100644
--- a/src/main/java/org/spigotmc/AsyncCatcher.java
+++ b/src/main/java/org/spigotmc/AsyncCatcher.java
@@ -6,6 +6,7 @@ public class AsyncCatcher

View file

@ -63,7 +63,7 @@ index bd808eb312ade7122973a47f4b96505829511da5..bf0f9cab7c66c089f35b851e799ba4a4
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b2d17fa187d8de8ff99923fef0485209338f2783..a1b816bc32adb4085c5d5457ed24996e0c5f3bc5 100644
index fd054c48c3306d316c944a01a861186581429fd0..e1c3472c15a85d47d8abd24ddb69fd99c8a6b3e2 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1,5 +1,6 @@

View file

@ -23,10 +23,10 @@ index 416a6760883cb40367535c7c5acd779742bb8af5..670efbe53241a0ae32d618c83da601cc
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 1a3b67fba88c6cea96a08f8d3085a6fb342ada48..db2933ed070a75bf4f46e37b52a8dbb7e9afb364 100644
index 8c8ef6d7df8589d37cb722949fc3ffe9a9432c48..e26973d77ba380c91b2f0561f2c6c5886d7b82b8 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2901,7 +2901,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -2906,7 +2906,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
double d4 = DimensionType.getTeleportationScale(this.level.dimensionType(), destination.dimensionType());
BlockPos blockposition = new BlockPos(Mth.clamp(this.getX() * d4, d0, d2), this.getY(), Mth.clamp(this.getZ() * d4, d1, d3));
// CraftBukkit start

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Add velocity warnings
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 461251cc096e3e2efc52f7b5cc4de90dc5334a34..7c9e42e85e2ccc220d30d72f3f1c2c139e195bbb 100644
index 45c6c2bc739c842d27cb9c4a87c2154f6e447d17..28a3fa002a77ecc7f5bd16aa4316f6d74e2503e1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -278,6 +278,7 @@ public final class CraftServer implements Server {

View file

@ -49,10 +49,10 @@ index 0000000000000000000000000000000000000000..f699ce18ca044f813e194ef2786b7ea8
+ }
+}
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 4788946d7fb25c1b0f26e6a038924c4a62978d53..82b25044e1852f5dbde1a658fe5f4f7526fa2b34 100644
index e0794c0eac5c2d323b10e1f69d9c1875731da125..a1d0bcf16026ca1cf8a0110e6f59498cbebb2969 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -826,6 +826,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -875,6 +875,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return true;
} catch (Exception exception) {
ChunkMap.LOGGER.error("Failed to save chunk {},{}", chunkcoordintpair.x, chunkcoordintpair.z, exception);
@ -108,7 +108,7 @@ index 08c5f6fd1a307c89cf8365f56314a0c6d3e89e4b..26e0f03f2e736ed6ba86e2510a7962de
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index bc0adb68931c9c1404bf87a3f7643b4982e4ae35..33b20b43961051d2c116871ad63baa908fa71cd5 100644
index d7c745b11a484665ebd5f4d2df94689896024b06..a5cf87f9ef0756e9940cdaef7811aa106194aaa5 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1,5 +1,10 @@

View file

@ -25,10 +25,10 @@ index abbbe1786eb68af02f9d39650aad730ac44aac8a..3ac2ac3db9b1c271b3c21930bb137166
+ }
}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index db2933ed070a75bf4f46e37b52a8dbb7e9afb364..76304c6bd6b9509cf83e4a580ebdecdc10b64354 100644
index e26973d77ba380c91b2f0561f2c6c5886d7b82b8..9fbe3ed59416d773dc5c19d5ea73f95ddd9b5143 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2550,6 +2550,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -2555,6 +2555,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@Nullable
public Team getTeam() {

View file

@ -16,7 +16,7 @@ modify that. Under the previous logic, plugins were unable (cleanly) override pe
A config option has been added for those who depend on the previous behavior, but I don't expect that.
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 8330f57d57181002dab4599e2c1f477cf9e51784..e3ca633a99d30ebf9dc35fd9236836b577a2b598 100644
index f5155d4b48f17c82b7a637418c40ffcdc6cc6271..acdbd21947093ed076c4668d3480a50f4e289b8d 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -231,4 +231,9 @@ public class PaperConfig {
@ -30,7 +30,7 @@ index 8330f57d57181002dab4599e2c1f477cf9e51784..e3ca633a99d30ebf9dc35fd9236836b5
+ }
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 7c9e42e85e2ccc220d30d72f3f1c2c139e195bbb..f3e50cebfbac08d9cf997faf99e63f750fff8a5c 100644
index 28a3fa002a77ecc7f5bd16aa4316f6d74e2503e1..451d911334dc1477c99f94705632c9fd5184ddb0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -415,6 +415,7 @@ public final class CraftServer implements Server {

View file

@ -7,7 +7,7 @@ Metadata is not meant to persist reload as things break badly with non primitive
This will remove metadata on reload so it does not crash everything if a plugin uses it.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index d9196e8268ffcdd5e696b98b4a384baa03d8bb21..d4c1b181ac1d1f4aaedf2c2ace8aff632439c8d7 100644
index c2b16834ccddda703973dc7ad85f584e2625a57f..8020aa53077e3eb09a866257c5648bf10ecc9227 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -883,8 +883,16 @@ public final class CraftServer implements Server {

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Add World Util Methods
Methods that can be used for other patches to help improve logic.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 6bde7dee09b9cf2b3acd66f9c9d55b338f20fe25..a13d70d6e4a6c60e61f0c8c1b5bb88b092a110a0 100644
index c9ee1a12b6fe92db6896cd4abd7e7833b094c9da..41dab560595a6d052c82b4474d824a584756371a 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -198,7 +198,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -199,7 +199,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
public final LevelStorageSource.LevelStorageAccess convertable;
public final UUID uuid;
@ -19,7 +19,7 @@ index 6bde7dee09b9cf2b3acd66f9c9d55b338f20fe25..a13d70d6e4a6c60e61f0c8c1b5bb88b0
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 33b20b43961051d2c116871ad63baa908fa71cd5..8eff4c4b82cd2d0d58af00c6c88f156315d53600 100644
index a5cf87f9ef0756e9940cdaef7811aa106194aaa5..ef6289d67f54d81497edc0d7e4f3789d5bcb28f9 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -310,11 +310,27 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Custom replacement for eaten items
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 6c2adddb3d55e5384d1386788bce13ee4c7a6bbe..a492f0b8393c185f0464f0fb0e5d5dce4d0e3824 100644
index 200aca8237dd7fbb0e4959831bda877c58ec37fb..8d9c6cebd22e453024716b9fb88786e8ec95fccb 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3563,9 +3563,10 @@ public abstract class LivingEntity extends Entity {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] handle NaN health/absorb values and repair bad data
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index a492f0b8393c185f0464f0fb0e5d5dce4d0e3824..bcf7fc1bdee10baaff7ec15ad2572061c2c800ec 100644
index 8d9c6cebd22e453024716b9fb88786e8ec95fccb..dcf12a35a5a4e0682db81c58ad115687ad5ae7cc 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -764,7 +764,13 @@ public abstract class LivingEntity extends Entity {

View file

@ -6,7 +6,7 @@ Subject: [PATCH] Use a Shared Random for Entities
Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 76304c6bd6b9509cf83e4a580ebdecdc10b64354..48ecf563e32315894fe363d95505c5899e6294c1 100644
index 9fbe3ed59416d773dc5c19d5ea73f95ddd9b5143..287ee89418e28366866e70bd104cd11b5ae0aad6 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -153,6 +153,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@ -31,7 +31,7 @@ index 76304c6bd6b9509cf83e4a580ebdecdc10b64354..48ecf563e32315894fe363d95505c589
private CraftEntity bukkitEntity;
public CraftEntity getBukkitEntity() {
@@ -325,7 +340,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
@@ -330,7 +345,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
this.bb = Entity.INITIAL_AABB;
this.stuckSpeedMultiplier = Vec3.ZERO;
this.nextStep = 1.0F;

View file

@ -22,10 +22,10 @@ index 3c78d3234054ce2dc46ef77decb6adb0cbd10620..cd64fb9d0c6d123e1c86cb33f12cd9ce
+ }
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index a13d70d6e4a6c60e61f0c8c1b5bb88b092a110a0..7251c939dabb4591f1c30bd1b33b6e707615b6e9 100644
index 41dab560595a6d052c82b4474d824a584756371a..5df7fe061fdfd7f1455cf283973be471d878ffb2 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -557,7 +557,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -648,7 +648,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15));
if (this.isRainingAt(blockposition)) {
DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition);

View file

@ -33,7 +33,7 @@ index 964bec1d3fecfe43a43bd9968159fca069f00dfd..e188f130e47ef319477050981de53a74
this.x = x;
this.y = y;
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 8eff4c4b82cd2d0d58af00c6c88f156315d53600..c6dbace64d19de52112c64c824640cf48db216e3 100644
index ef6289d67f54d81497edc0d7e4f3789d5bcb28f9..be2b000c899e52cc6a97b87c854f10cec44d8ea1 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -260,7 +260,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Only process BlockPhysicsEvent if a plugin has a listener
Saves on some object allocation and processing when no plugin listens to this
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 36305b91d6e529900074040b8448bc57b9ef85bd..597b8d4c79714484e7c8be6e4f90294a96259e4e 100644
index 770134bd7a74616bf8d22439ff1ad1379fa27f0a..1faf63b6de560b23e3ca3b8358a4fd1ff9204bd4 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1380,6 +1380,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1383,6 +1383,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
while (iterator.hasNext()) {
ServerLevel worldserver = (ServerLevel) iterator.next();
@ -18,10 +18,10 @@ index 36305b91d6e529900074040b8448bc57b9ef85bd..597b8d4c79714484e7c8be6e4f90294a
this.profiler.push(() -> {
return worldserver + " " + worldserver.dimension().location();
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index c19276ce8a2f4045ca7fe7b7600bd952b8bd5777..b178f93d38a865ae2841d044326370623065b112 100644
index 5df7fe061fdfd7f1455cf283973be471d878ffb2..c2dc2ec29949074e71d0b4e5244ec71587f01178 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -197,6 +197,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -198,6 +198,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
private int tickPosition;
public final LevelStorageSource.LevelStorageAccess convertable;
public final UUID uuid;

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Entity AddTo/RemoveFrom World Events
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index ba964bc8b2d86b86be2d527fdc8d8aa342ac0e5e..4291492dc5cf0c845af30f62e2dcb15826842d12 100644
index c2dc2ec29949074e71d0b4e5244ec71587f01178..9d6ff9aff140574038b7f619cdfebf47d4b3a14c 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1865,6 +1865,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1956,6 +1956,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
entity.setOrigin(entity.getOriginVector().toLocation(getWorld()));
}
// Paper end
@ -16,7 +16,7 @@ index ba964bc8b2d86b86be2d527fdc8d8aa342ac0e5e..4291492dc5cf0c845af30f62e2dcb158
}
public void onTrackingEnd(Entity entity) {
@@ -1929,6 +1930,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -2020,6 +2021,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
entity.valid = false; // CraftBukkit

View file

@ -11,7 +11,7 @@ The implementation uses a LinkedHashMap as an LRU cache (modified from HashMap).
The maximum size of the RegionFileCache is also made configurable.
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index e3ca633a99d30ebf9dc35fd9236836b577a2b598..78f3e00715a5d3a60c341461a7cd4fa52e2492f0 100644
index acdbd21947093ed076c4668d3480a50f4e289b8d..a3a4ecabed1ec7511005affe610fc2ec8a87d67a 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -236,4 +236,9 @@ public class PaperConfig {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Fix Cancelling BlockPlaceEvent triggering physics
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 5c395ffa57372dee3fc29e9bd4b5545211aec29c..22c4c94a4b81c8ca53d717005b6260f0bafbbea4 100644
index f05dcb3c9f17a0aa991fcbd3b3f58f507059a8cd..c028b74f4a6c5e52be48b042f44fe4b98466382b 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -542,6 +542,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Configurable Player Collision
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 78f3e00715a5d3a60c341461a7cd4fa52e2492f0..2413ed16de148ea63667dca7ab3ee89fb714cf84 100644
index a3a4ecabed1ec7511005affe610fc2ec8a87d67a..1d2680ad57c2a44838157fbf8601b14fda03ce17 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -241,4 +241,9 @@ public class PaperConfig {
@ -32,7 +32,7 @@ index 8885220e4813b34627b42523834bbec995d8950d..4c9660176e783999301565790b8cf6f4
buf.writeComponent(this.playerPrefix);
buf.writeComponent(this.playerSuffix);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 597b8d4c79714484e7c8be6e4f90294a96259e4e..5ef6d6cafbd39cf15189bc65cc4dea1f99ef37a0 100644
index 1faf63b6de560b23e3ca3b8358a4fd1ff9204bd4..7b947c0d5bd63957df6348ea2ade79f9dc3e59fa 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -161,6 +161,7 @@ import net.minecraft.world.level.storage.loot.LootTables;
@ -43,7 +43,7 @@ index 597b8d4c79714484e7c8be6e4f90294a96259e4e..5ef6d6cafbd39cf15189bc65cc4dea1f
import org.apache.commons.lang3.Validate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -614,6 +615,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -615,6 +616,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldLoadEvent(worldserver.getWorld()));
}

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Implement PlayerLocaleChangeEvent
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 36edbdf8717f8cf4611da2e304c9aac0b9f44b49..2b13aec562182ce56a2fe16b70f20af3fc2df46c 100644
index 2b7dd46fe090db01aa4d1f0e4211bed769ad76dc..7e7bbb6817ceddbbb90c1ac45d8e974d3f95c089 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1709,7 +1709,7 @@ public class ServerPlayer extends Player {

View file

@ -6,7 +6,7 @@ Subject: [PATCH] EntityRegainHealthEvent isFastRegen API
Don't even get me started
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index bcf7fc1bdee10baaff7ec15ad2572061c2c800ec..fe74e130309fbef3f763d875310cbd7a5d9b74fd 100644
index dcf12a35a5a4e0682db81c58ad115687ad5ae7cc..a5e47e581a79546e10ad2f5bdabcd92607384867 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1230,10 +1230,16 @@ public abstract class LivingEntity extends Entity {

View file

@ -6,7 +6,7 @@ Subject: [PATCH] remove null possibility for getServer singleton
to stop IDE complaining about potential NPE
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 5ef6d6cafbd39cf15189bc65cc4dea1f99ef37a0..7cabb48a2b82fd0ce1522d5fbca6841613159329 100644
index 7b947c0d5bd63957df6348ea2ade79f9dc3e59fa..2c605296eb674b96813aa0c8f2711cf0662af3d2 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -188,6 +188,7 @@ import org.spigotmc.SlackActivityAccountant; // Spigot
@ -17,7 +17,7 @@ index 5ef6d6cafbd39cf15189bc65cc4dea1f99ef37a0..7cabb48a2b82fd0ce1522d5fbca68416
public static final Logger LOGGER = LogManager.getLogger();
private static final float AVERAGE_TICK_TIME_SMOOTHING = 0.8F;
private static final int TICK_STATS_SPAN = 100;
@@ -316,6 +317,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -317,6 +318,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public MinecraftServer(OptionSet options, DataPackConfig datapackconfiguration, Thread thread, RegistryAccess.RegistryHolder iregistrycustom_dimension, LevelStorageSource.LevelStorageAccess convertable_conversionsession, WorldData savedata, PackRepository resourcepackrepository, Proxy proxy, DataFixer datafixer, ServerResources datapackresources, @Nullable MinecraftSessionService minecraftsessionservice, @Nullable GameProfileRepository gameprofilerepository, @Nullable GameProfileCache usercache, ChunkProgressListenerFactory worldloadlistenerfactory) {
super("Server");
@ -25,7 +25,7 @@ index 5ef6d6cafbd39cf15189bc65cc4dea1f99ef37a0..7cabb48a2b82fd0ce1522d5fbca68416
this.metricsRecorder = InactiveMetricsRecorder.INSTANCE;
this.profiler = this.metricsRecorder.getProfiler();
this.onMetricsRecordingStopped = (methodprofilerresults) -> {
@@ -2250,7 +2252,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2258,7 +2260,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@Deprecated
public static MinecraftServer getServer() {

View file

@ -13,10 +13,10 @@ custom renderers are in use, defaulting to the much simpler Vanilla system.
Additionally, numerous issues to player position tracking on maps has been fixed.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 4291492dc5cf0c845af30f62e2dcb15826842d12..160da347ed52739e930044fe456a4dd36e561a43 100644
index 9d6ff9aff140574038b7f619cdfebf47d4b3a14c..26c25b103f08a2e66179d1ed8f450778aa2e539a 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1885,6 +1885,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1976,6 +1976,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
{
if ( iter.next().player == entity )
{

View file

@ -515,7 +515,7 @@ index 0000000000000000000000000000000000000000..3377b86c337d0234bbb9b0349e4034a7
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 48ecf563e32315894fe363d95505c5899e6294c1..877e8093be0d97ee4479b0ba0c95713362498766 100644
index 287ee89418e28366866e70bd104cd11b5ae0aad6..8473dcb54b26ea6b264125423fc2d52b87176b83 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -168,6 +168,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Don't save empty scoreboard teams to scoreboard.dat
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index 2413ed16de148ea63667dca7ab3ee89fb714cf84..b4746ddf18a492e8993bbc534f41d13d4da65eeb 100644
index 1d2680ad57c2a44838157fbf8601b14fda03ce17..f94db56dfcae9843ef341912c43b092d62fe0627 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -246,4 +246,9 @@ public class PaperConfig {

View file

@ -12,10 +12,10 @@ the user never changed the default setting for Spigot's save on stop only.
1.17: TODO does this need the synchronized blocks anymore?
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 7cabb48a2b82fd0ce1522d5fbca6841613159329..6f46c66890429e438c484e3a5f425936bd7d4130 100644
index 2c605296eb674b96813aa0c8f2711cf0662af3d2..69f4f8e5fdb7958076671dec0614c401beed9854 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -987,7 +987,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -988,7 +988,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} catch (java.lang.InterruptedException ignored) {} // Paper
if (org.spigotmc.SpigotConfig.saveUserCacheOnStopOnly) {
MinecraftServer.LOGGER.info("Saving usercache.json");

View file

@ -6,7 +6,7 @@ Subject: [PATCH] Faster redstone torch rapid clock removal
Only resize the the redstone torch list once, since resizing arrays / lists is costly
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 22c4c94a4b81c8ca53d717005b6260f0bafbbea4..6257d002f8ed39065a1a85ff53c6747900e890a5 100644
index c028b74f4a6c5e52be48b042f44fe4b98466382b..fedadb7d9d216d126da54941be63901b7d171c30 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -160,6 +160,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

View file

@ -5,7 +5,7 @@ Subject: [PATCH] Add server-name parameter
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 12ff16869c01aa5459274ae70bad5c9f91f5acbb..07015442c0a7b9a008c8053dcaabb1caa6ef6a10 100644
index 2da0896ca3b15deded3556c6298a41f18324db58..f09520b7723dee6ab04215276d037012d643999f 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -143,6 +143,14 @@ public class Main {

View file

@ -6,7 +6,7 @@ Subject: [PATCH] Add setting for proxy online mode status
TODO: Add isProxyOnlineMode check to Metrics
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
index b4746ddf18a492e8993bbc534f41d13d4da65eeb..092f9f9588d3a3621d6221c397c0e64aff9067e2 100644
index f94db56dfcae9843ef341912c43b092d62fe0627..e7606adc0e7e81e1878f87d2538d8b75c58d5555 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -23,6 +23,7 @@ import org.bukkit.configuration.InvalidConfigurationException;

Some files were not shown because too many files have changed in this diff Show more