all patches have been applied \o/

This commit is contained in:
granny
2024-10-26 02:10:18 -07:00
parent b7daf30869
commit abdb5b653e
46 changed files with 1262 additions and 1247 deletions

View File

@@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source.
This comes with a performance gain, but technical players may prefer the ability to manipulate RNG.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 338c2afa277178b3d4d667142799f015c7b97cd0..7e7d13424ea1328ca37b1201a74ac0d4f933a8c3 100644
index d2f2301cff71b8ce64b803dadcb09610e8a2a289..aa0771c7ab8302c03d7a54c6c1282e21defc4de7 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -582,7 +582,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -640,7 +640,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.bb = Entity.INITIAL_AABB;
this.stuckSpeedMultiplier = Vec3.ZERO;
this.nextStep = 1.0F;
@@ -20,10 +20,10 @@ index 338c2afa277178b3d4d667142799f015c7b97cd0..7e7d13424ea1328ca37b1201a74ac0d4
this.fluidHeight = new Object2DoubleArrayMap(2);
this.fluidOnEyes = new HashSet();
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index ea474ba1d37a594177ada2fd93302f874ed5dc73..3ca9a7f289d8c3f0b0df8f1cd4a5ca1254653c50 100644
index dd807cd532fbdbcc20bd29659e2b578714302d25..01cd55eaac78e35dc57f4f07628ad97bc535da5a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -41,7 +41,7 @@ public class Squid extends WaterAnimal {
@@ -46,7 +46,7 @@ public class Squid extends AgeableWaterCreature {
public Squid(EntityType<? extends Squid> type, Level world) {
super(type, world);
@@ -33,10 +33,10 @@ index ea474ba1d37a594177ada2fd93302f874ed5dc73..3ca9a7f289d8c3f0b0df8f1cd4a5ca12
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e90f8c2ca467d9567366ae5c04175e3b5bc7cfc4..72b51d2db04c6cc8a3c4f9bf350e40873ef51d8c 100644
index 3853e9e894c19da5a0e74c30a5e248c3e8790160..a647855f277d79d4ebbf370cff0d15991acbb308 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -211,9 +211,11 @@ public class PurpurWorldConfig {
@@ -209,9 +209,11 @@ public class PurpurWorldConfig {
public int entityLifeSpan = 0;
public float entityLeftHandedChance = 0.05f;

View File

@@ -29,10 +29,10 @@ index 0c3c82b28e581286b798ee58ca4193efc2faff4a..24121a43aeb5e9bce013f30c92dddd15
// return true as command was handled
return 1;
diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
index e2c24813f59c2fd075c740ac1842a38f20ed8554..01efbc507b3d58f13f78ee286f93df40cdc3f0cb 100644
index d0d36a57ec4896bcb74970f8fb24d8f3e17db133..0c8fe5b2500480c3a9e9ab3285ad22e0e599d953 100644
--- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java
+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
@@ -52,7 +52,7 @@ public class PacketUtils {
@@ -32,7 +32,7 @@ public class PacketUtils {
if (listener instanceof ServerCommonPacketListenerImpl serverCommonPacketListener && serverCommonPacketListener.processedDisconnect) return; // CraftBukkit - Don't handle sync packets for kicked players
if (listener.shouldHandleMessage(packet)) {
co.aikar.timings.Timing timing = co.aikar.timings.MinecraftTimings.getPacketTiming(packet); // Paper - timings
@@ -42,16 +42,20 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..01efbc507b3d58f13f78ee286f93df40
} catch (Exception exception) {
if (exception instanceof ReportedException) {
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949edba80c373 100644
index c3c5d392f1295e7edc0e96881f90f96cace5486f..9ab3a164c079721d2c4650ff0cf5aec82ada09bc 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1613,15 +1613,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1619,7 +1619,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void tickServer(BooleanSupplier shouldKeepTicking) {
- co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper
+ //co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Paper // Purpur
long i = Util.getNanos();
int j = this.pauseWhileEmptySeconds() * 20;
@@ -1643,11 +1643,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper start - move oversleep into full server tick
- isOversleep = true;MinecraftTimings.serverOversleep.startTiming();
@@ -62,11 +66,11 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
- isOversleep = false;MinecraftTimings.serverOversleep.stopTiming();
+ //isOversleep = false;MinecraftTimings.serverOversleep.stopTiming(); // Purpur
// Paper end
this.server.spark.tickStart(); // Paper - spark
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events
@@ -1658,9 +1658,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.pop();
// Paper end - Incremental chunk and player saving
@@ -1667,9 +1667,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
ProfilerFiller gameprofilerfiller = Profiler.get();
// Paper start - move executeAll() into full server tick timing
- try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) {
+ //try (co.aikar.timings.Timing ignored = MinecraftTimings.processTasksTimer.startTiming()) { // Purpur
@@ -76,37 +80,37 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
// Paper end
// Paper start - Server Tick Events
long endTime = System.nanoTime();
@@ -1684,7 +1684,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1691,7 +1691,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Add tick times API and /mspt command
this.logTickMethodTime(i);
this.profiler.pop();
org.spigotmc.WatchdogThread.tick(); // Spigot
gameprofilerfiller.pop();
- co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper
+ //co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Paper // Purpur
}
private void logTickMethodTime(long tickStartTime) {
@@ -1755,9 +1755,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private void autoSave() {
@@ -1775,9 +1775,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.getPlayerList().getPlayers().forEach((entityplayer) -> {
entityplayer.connection.suspendFlushing();
});
- MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper
+ //MinecraftTimings.bukkitSchedulerTimer.startTiming(); // Spigot // Paper // Purpur
this.server.getScheduler().mainThreadHeartbeat(this.tickCount); // CraftBukkit
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
- MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper
+ //MinecraftTimings.bukkitSchedulerTimer.stopTiming(); // Spigot // Paper // Purpur
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick();
getAllLevels().forEach(level -> {
@@ -1774,21 +1774,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1794,21 +1794,21 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
this.profiler.push("commandFunctions");
gameprofilerfiller.push("commandFunctions");
- MinecraftTimings.commandFunctionsTimer.startTiming(); // Spigot // Paper
+ //MinecraftTimings.commandFunctionsTimer.startTiming(); // Spigot // Paper // Purpur
this.getFunctions().tick();
- MinecraftTimings.commandFunctionsTimer.stopTiming(); // Spigot // Paper
+ //MinecraftTimings.commandFunctionsTimer.stopTiming(); // Spigot // Paper // Purpur
this.profiler.popPush("levels");
gameprofilerfiller.popPush("levels");
//Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; moved down
// CraftBukkit start
@@ -124,7 +128,7 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
// Send time updates to everyone, it will get the right time from the world the player is in.
// Paper start - Perf: Optimize time updates
for (final ServerLevel level : this.getAllLevels()) {
@@ -1808,7 +1808,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1828,7 +1828,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Paper end - Perf: Optimize time updates
@@ -133,8 +137,8 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
Iterator iterator = this.getAllLevels().iterator(); // Paper - Throw exception on world create while being ticked; move down
@@ -1836,9 +1836,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.profiler.push("tick");
@@ -1855,9 +1855,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
gameprofilerfiller.push("tick");
try {
- worldserver.timings.doTick.startTiming(); // Spigot
@@ -145,16 +149,16 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
@@ -1853,24 +1853,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1871,24 +1871,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
this.profiler.popPush("connection");
gameprofilerfiller.popPush("connection");
- MinecraftTimings.connectionTimer.startTiming(); // Spigot // Paper
+ // MinecraftTimings.connectionTimer.startTiming(); // Spigot // Paper // Purpur
this.getConnection().tick();
this.tickConnection();
- MinecraftTimings.connectionTimer.stopTiming(); // Spigot // Paper
+ // MinecraftTimings.connectionTimer.stopTiming(); // Spigot // Paper // Purpur
this.profiler.popPush("players");
gameprofilerfiller.popPush("players");
- MinecraftTimings.playerListTimer.startTiming(); // Spigot // Paper
+ //MinecraftTimings.playerListTimer.startTiming(); // Spigot // Paper // Purpur
this.playerList.tick();
@@ -164,7 +168,7 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
GameTestTicker.SINGLETON.tick();
}
this.profiler.popPush("server gui refresh");
gameprofilerfiller.popPush("server gui refresh");
- MinecraftTimings.tickablesTimer.startTiming(); // Spigot // Paper
+ //MinecraftTimings.tickablesTimer.startTiming(); // Spigot // Paper // Purpur
@@ -174,13 +178,13 @@ index 226fa1fa3b7949e23c3f6f283d728949694a8a5c..73d6c71c6e38dcfff9f09fd2f54949ed
- MinecraftTimings.tickablesTimer.stopTiming(); // Spigot // Paper
+ //MinecraftTimings.tickablesTimer.stopTiming(); // Spigot // Paper // Purpur
this.profiler.popPush("send chunks");
gameprofilerfiller.popPush("send chunks");
iterator = this.playerList.getPlayers().iterator();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index f679caa20e762f21704d8d5f1a69990195634000..430418990e218bca55fd7c817086bf7a6866fa1a 100644
index 136ac58eef2c243650ffb390459d6959b90d5202..51abda23e30e56d79b3e020d0407c1cfe25d8ab9 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -548,7 +548,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -524,7 +524,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
public void handleConsoleInputs() {
@@ -189,7 +193,7 @@ index f679caa20e762f21704d8d5f1a69990195634000..430418990e218bca55fd7c817086bf7a
// Paper start - Perf: use proper queue
ConsoleInput servercommand;
while ((servercommand = this.serverCommandQueue.poll()) != null) {
@@ -565,7 +565,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -541,7 +541,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// CraftBukkit end
}
@@ -199,10 +203,10 @@ index f679caa20e762f21704d8d5f1a69990195634000..430418990e218bca55fd7c817086bf7a
@Override
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 6abae547de1c9de07a75800550631ca5ee693e0a..4b2a66b68e96b85e78c12a12c410ffab3c14ab71 100644
index d692af061ded8cd5bcf1d268e6bd521d84f99c39..987d8567034e06bfb916d3e0a4a87f6c9169bccf 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -962,7 +962,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -961,7 +961,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
List<ServerPlayer> list = Lists.newArrayList();
List<ServerPlayer> list1 = this.level.players();
ObjectIterator objectiterator = this.entityMap.values().iterator();
@@ -211,7 +215,7 @@ index 6abae547de1c9de07a75800550631ca5ee693e0a..4b2a66b68e96b85e78c12a12c410ffab
ChunkMap.TrackedEntity playerchunkmap_entitytracker;
@@ -987,17 +987,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -986,17 +986,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
playerchunkmap_entitytracker.serverEntity.sendChanges();
}
}
@@ -233,10 +237,10 @@ index 6abae547de1c9de07a75800550631ca5ee693e0a..4b2a66b68e96b85e78c12a12c410ffab
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index dbc62bf37a9e6e1936558338521938a47a51e2d6..793f16cb4049d121a6ef7ca4fcd9519dc8c0a7b0 100644
index 4b5985c284faac7b06c0f99d53065f5060ecff4a..96f9d18eb22380cccd35b486713583d6dfa46646 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -359,9 +359,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -423,9 +423,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
public void save(boolean flush) {
// Paper - rewrite chunk system
@@ -248,10 +252,10 @@ index dbc62bf37a9e6e1936558338521938a47a51e2d6..793f16cb4049d121a6ef7ca4fcd9519d
}
@Override
@@ -397,26 +397,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@Override
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
this.level.getProfiler().push("purge");
@@ -461,26 +461,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
ProfilerFiller gameprofilerfiller = Profiler.get();
gameprofilerfiller.push("purge");
- this.level.timings.doChunkMap.startTiming(); // Spigot
+ //this.level.timings.doChunkMap.startTiming(); // Spigot // Purpur
if (this.level.tickRateManager().runsNormally() || !tickChunks || this.level.spigotConfig.unloadFrozenChunks) { // Spigot
@@ -261,7 +265,7 @@ index dbc62bf37a9e6e1936558338521938a47a51e2d6..793f16cb4049d121a6ef7ca4fcd9519d
this.runDistanceManagerUpdates();
- this.level.timings.doChunkMap.stopTiming(); // Spigot
+ //this.level.timings.doChunkMap.stopTiming(); // Spigot // Purpur
this.level.getProfiler().popPush("chunks");
gameprofilerfiller.popPush("chunks");
if (tickChunks) {
- this.level.timings.chunks.startTiming(); // Paper - timings
+ //this.level.timings.chunks.startTiming(); // Paper - timings // Purpur
@@ -274,85 +278,57 @@ index dbc62bf37a9e6e1936558338521938a47a51e2d6..793f16cb4049d121a6ef7ca4fcd9519d
- this.level.timings.doChunkUnload.startTiming(); // Spigot
+ //this.level.timings.doChunkUnload.startTiming(); // Spigot // Purpur
this.level.getProfiler().popPush("unload");
gameprofilerfiller.popPush("unload");
this.chunkMap.tick(shouldKeepTicking);
- this.level.timings.doChunkUnload.stopTiming(); // Spigot
+ //this.level.timings.doChunkUnload.stopTiming(); // Spigot // Purpur
this.level.getProfiler().pop();
gameprofilerfiller.pop();
this.clearCache();
}
@@ -452,13 +451,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
}
// Paper end - chunk tick iteration optimisations
Iterator iterator = null; // Paper - chunk tick iteration optimisations
- if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper
+ //if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper // Purpur
@@ -561,10 +560,10 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
// Paper - chunk tick iteration optimisations
if (this.level.tickRateManager().runsNormally()) {
gameprofilerfiller.popPush("naturalSpawnCount");
private void tickChunks(ProfilerFiller profiler, long timeDelta, List<LevelChunk> chunks) {
profiler.popPush("naturalSpawnCount");
- this.level.timings.countNaturalMobs.startTiming(); // Paper - timings
+ //this.level.timings.countNaturalMobs.startTiming(); // Paper - timings // Purpur
int k = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - Optional per player mob spawns
int naturalSpawnChunkCount = k;
@@ -488,7 +487,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
// Pufferfish end
}
// Paper end - Optional per player mob spawns
int j = this.distanceManager.getNaturalSpawnChunkCount();
NaturalSpawner.SpawnState spawnercreature_d = NaturalSpawner.createState(j, this.level.getAllEntities(), this::getFullChunk, new LocalMobCapCalculator(this.chunkMap));
- this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings
+ // this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings // Purpur
// this.lastSpawnState = spawnercreature_d; // Pufferfish - this is managed asynchronously
gameprofilerfiller.popPush("spawnAndTick");
@@ -529,19 +528,19 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
}
this.lastSpawnState = spawnercreature_d;
profiler.popPush("spawnAndTick");
@@ -605,13 +604,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
}
}
- this.level.timings.chunkTicks.stopTiming(); // Paper
+ //this.level.timings.chunkTicks.stopTiming(); // Paper // Purpur
gameprofilerfiller.popPush("customSpawners");
profiler.popPush("customSpawners");
if (flag) {
- try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings
+ //try (co.aikar.timings.Timing ignored = this.level.timings.miscMobSpawning.startTiming()) { // Paper - timings // Purpur
this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies);
- } // Paper - timings
+ //} // Paper - timings // Purpur
}
- }
+ //} // Purpur
}
gameprofilerfiller.popPush("broadcast");
// Paper start - chunk tick iteration optimisations
- this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing
+ //this.level.timings.broadcastChunkUpdates.startTiming(); // Paper - timing // Purpur
{
final it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder> chunks = (it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder>)list;
final ServerChunkCache.ChunkAndHolder[] raw = chunks.elements();
@@ -555,7 +554,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
holder.holder().broadcastChanges(holder.chunk());
}
}
- this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing
+ //this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing // Purpur
// Paper end - chunk tick iteration optimisations
gameprofilerfiller.pop();
gameprofilerfiller.pop();
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e25300d47 100644
index f2bf1a9856fb1200f750b06b64e83b1b12e4068d..6e4ca03d66d870cca45aef1e49c18a470ebd7dc0 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -687,7 +687,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -757,7 +757,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
gameprofilerfiller.popPush("tickPending");
gameprofilerfiller.push("tickPending");
- this.timings.scheduledBlocks.startTiming(); // Paper
+ //this.timings.scheduledBlocks.startTiming(); // Paper // Purpur
if (!this.isDebug() && flag) {
j = this.getGameTime();
gameprofilerfiller.push("blockTicks");
@@ -696,24 +696,24 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -766,24 +766,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks
gameprofilerfiller.pop();
}
@@ -384,7 +360,7 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
}
this.handlingTick = false;
@@ -726,7 +726,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -796,7 +796,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
if (flag1 || this.emptyTime++ < 300) {
gameprofilerfiller.push("entities");
@@ -393,16 +369,16 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
if (this.dragonFight != null && flag) {
gameprofilerfiller.push("dragonFight");
this.dragonFight.tick();
@@ -734,7 +734,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -804,7 +804,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
- this.timings.entityTick.startTiming(); // Spigot
+ //this.timings.entityTick.startTiming(); // Spigot // Purpur
this.entityTickList.forEach((entity) -> {
entity.activatedPriorityReset = false; // Pufferfish - DAB
if (!entity.isRemoved()) {
@@ -775,8 +775,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
if (!tickratemanager.isEntityFrozen(entity)) {
@@ -829,8 +829,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
}
});
@@ -413,7 +389,7 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
gameprofilerfiller.pop();
this.tickBlockEntities();
}
@@ -966,12 +966,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -1014,12 +1014,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
} // Paper - Option to disable ice and snow
gameprofilerfiller.popPush("tickBlocks");
@@ -428,7 +404,7 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
gameprofilerfiller.pop();
}
@@ -1314,8 +1314,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -1344,8 +1344,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Spigot end
// Paper start- timings
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity);
@@ -438,55 +414,17 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
+ //try { // Purpur
// Paper end - timings
entity.setOldPosAndRot();
ProfilerFiller gameprofilerfiller = this.getProfiler();
@@ -1331,7 +1331,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
ProfilerFiller gameprofilerfiller = Profiler.get();
@@ -1360,7 +1360,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
entity.postTick(); // CraftBukkit
} else { entity.inactiveTick(); } // Paper - EAR 2
this.getProfiler().pop();
- } finally { timer.stopTiming(); } // Paper - timings
+ //} finally { timer.stopTiming(); } // Paper - timings // Purpur
gameprofilerfiller.pop();
- } finally { timer.stopTiming(); } // Paper - timings // EAR 2
+ //} finally { timer.stopTiming(); } // Paper - timings // EAR 2 // Purpur
Iterator iterator = entity.getPassengers().iterator();
while (iterator.hasNext()) {
@@ -1354,8 +1354,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
if (passenger instanceof Player || this.entityTickList.contains(passenger)) {
// Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
- co.aikar.timings.Timing timer = isActive ? passenger.getType().passengerTickTimer.startTiming() : passenger.getType().passengerInactiveTickTimer.startTiming(); // Paper
- try {
+ //co.aikar.timings.Timing timer = isActive ? passenger.getType().passengerTickTimer.startTiming() : passenger.getType().passengerInactiveTickTimer.startTiming(); // Paper // Purpur
+ //try { // Purpur
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -1385,7 +1385,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.tickPassenger(passenger, entity2);
}
- } finally { timer.stopTiming(); }// Paper - EAR2 timings
+ //} finally { timer.stopTiming(); }// Paper - EAR2 timings // Purpur
}
} else {
passenger.stopRiding();
@@ -1405,7 +1405,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld()));
}
- try (co.aikar.timings.Timing ignored = this.timings.worldSave.startTiming()) {
+ //try (co.aikar.timings.Timing ignored = this.timings.worldSave.startTiming()) { // Purpur
if (doFull) {
this.saveLevelData(true);
}
@@ -1422,7 +1422,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.convertable.saveDataTag(this.server.registryAccess(), this.serverLevelData, this.server.getPlayerList().getSingleplayerData());
}
// CraftBukkit end
- }
+ //} // Purpur
}
// Paper end - Incremental chunk and player saving
@@ -1436,7 +1436,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -1424,7 +1424,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
if (!savingDisabled) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit
@@ -495,7 +433,7 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
if (progressListener != null) {
progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel"));
}
@@ -1446,10 +1446,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -1434,10 +1434,10 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
progressListener.progressStage(Component.translatable("menu.savingChunks"));
}
@@ -510,21 +448,17 @@ index bfc36c239dab4df5130cbde190d513655b9f12a1..b6fd5b83cff5ea21221d029b8729932e
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index c55f721a611dc215bcbf3f74f752b3bebfbe9ea4..0ea07da1b4bd420cd6765577b4719a2368b5740c 100644
index a170b6b357987d6e1cb42a9b54a2b8d965395db6..988490d84188e61ce716506585c80c85e59c692a 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1238,7 +1238,7 @@ public abstract class PlayerList {
@@ -1192,11 +1192,11 @@ public abstract class PlayerList {
public void saveAll(int interval) {
public void saveAll() {
io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main
- MinecraftTimings.savePlayers.startTiming(); // Paper
+ //MinecraftTimings.savePlayers.startTiming(); // Paper // Purpur
int numSaved = 0;
long now = MinecraftServer.currentTick;
for (int i = 0; i < this.players.size(); ++i) {
@@ -1249,7 +1249,7 @@ public abstract class PlayerList {
}
// Paper end - Incremental chunk and player saving
this.save(this.players.get(i));
}
- MinecraftTimings.savePlayers.stopTiming(); // Paper
+ //MinecraftTimings.savePlayers.stopTiming(); // Paper // Purpur
@@ -564,15 +498,16 @@ index 9379dd4056018b52c93ed4888dcdc94579bd9691..612a14806ec63b0dcf31814396282f4b
protected void tick(ServerLevel world, E entity, long time) {
diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2e7ae1578 100644
index 8bc7979fb9c2a796921a2a279b78294809f2ed03..043e078f2c108d9ff77d3b21f96a6a106bcea51d 100644
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
@@ -53,10 +53,10 @@ public abstract class Sensor<E extends LivingEntity> {
@@ -56,11 +56,11 @@ public abstract class Sensor<E extends LivingEntity> {
if (--this.timeToTick <= 0L) {
// Paper start - configurable sensor tick rate and timings
this.timeToTick = java.util.Objects.requireNonNullElse(world.paperConfig().tickRates.sensor.get(entity.getType(), this.configKey), this.scanRate);
- this.timing.startTiming();
+ //this.timing.startTiming(); // Purpur
this.updateTargetingConditionRanges(entity);
// Paper end
this.doTick(world, entity);
- this.timing.stopTiming(); // Paper - sensor timings
@@ -581,11 +516,11 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac..ccc6204141298deea56d996fab24254d25857da5 100644
index 85ae5c9c873dab19f897fe50b70c62e3c094bd42..5a8b02d93f3d7eb882e93c9698858e7ae55c79e6 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1415,15 +1415,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
ProfilerFiller gameprofilerfiller = this.getProfiler();
@@ -1491,15 +1491,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
ProfilerFiller gameprofilerfiller = Profiler.get();
gameprofilerfiller.push("blockEntities");
- this.timings.tileEntityPending.startTiming(); // Spigot
@@ -603,7 +538,7 @@ index 7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac..ccc6204141298deea56d996fab24254d
// Spigot start
// Iterator<TickingBlockEntity> iterator = this.blockEntityTickers.iterator();
boolean flag = this.tickRateManager().runsNormally();
@@ -1454,7 +1454,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
@@ -1530,7 +1530,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
}
this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075
@@ -613,33 +548,33 @@ index 7bc1d9ed3a3e3679caff8da0a38a3de93fc9ebac..ccc6204141298deea56d996fab24254d
co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper
gameprofilerfiller.pop();
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
index e524b27d185da3e88668f8ef107517272860bd66..735f39fed209e086a52185565f8bd6873c0b8d6e 100644
index 6eb69ebe688c1c52d5a5986dfc63cdd42e66687e..f6fb4892c95f9716628ed8a90d1560b7c0a2e032 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -128,7 +128,7 @@ public final class NaturalSpawner {
@@ -155,7 +155,7 @@ public final class NaturalSpawner {
ProfilerFiller gameprofilerfiller = Profiler.get();
public static void spawnForChunk(ServerLevel world, LevelChunk chunk, NaturalSpawner.SpawnState info, boolean spawnAnimals, boolean spawnMonsters, boolean rareSpawn) {
world.getProfiler().push("spawner");
gameprofilerfiller.push("spawner");
- world.timings.mobSpawn.startTiming(); // Spigot
+ //world.timings.mobSpawn.startTiming(); // Spigot // Purpur
MobCategory[] aenumcreaturetype = NaturalSpawner.SPAWNING_CATEGORIES;
int i = aenumcreaturetype.length;
Iterator iterator = spawnableGroups.iterator();
@@ -181,7 +181,7 @@ public final class NaturalSpawner {
while (iterator.hasNext()) {
@@ -170,7 +170,7 @@ public final class NaturalSpawner {
}
}
- world.timings.mobSpawn.stopTiming(); // Spigot
+ //world.timings.mobSpawn.stopTiming(); // Spigot // Purpur
world.getProfiler().pop();
gameprofilerfiller.pop();
}
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index 6282db087ac330d0e3a97c93f03eb64e8b3246f3..a0e6f39ba00212a078e04b21831a5ed22ad0825b 100644
index e03d57f58a9f962cd429e8851fb3f35f3491e2c0..a1a5b34b059d3beaa042f8f2d0ba509191df6f15 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -680,7 +680,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system
@@ -691,7 +691,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
org.bukkit.craftbukkit.event.CraftEventFactory.callEntitiesLoadEvent(this.level, this.chunkPos, ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(this.locX, this.locZ).getEntityChunk().getAllEntities()); // Paper - rewrite chunk system
if (this.needsDecoration) {
- try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper
@@ -647,7 +582,7 @@ index 6282db087ac330d0e3a97c93f03eb64e8b3246f3..a0e6f39ba00212a078e04b21831a5ed2
this.needsDecoration = false;
java.util.Random random = new java.util.Random();
random.setSeed(this.level.getSeed());
@@ -700,7 +700,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -711,7 +711,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
}
}
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
@@ -656,8 +591,8 @@ index 6282db087ac330d0e3a97c93f03eb64e8b3246f3..a0e6f39ba00212a078e04b21831a5ed2
}
}
}
@@ -1040,7 +1040,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
ProfilerFiller gameprofilerfiller = LevelChunk.this.level.getProfiler();
@@ -1063,7 +1063,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
ProfilerFiller gameprofilerfiller = Profiler.get();
gameprofilerfiller.push(this::getType);
- this.blockEntity.tickTimer.startTiming(); // Spigot
@@ -665,7 +600,7 @@ index 6282db087ac330d0e3a97c93f03eb64e8b3246f3..a0e6f39ba00212a078e04b21831a5ed2
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
if (this.blockEntity.getType().isValid(iblockdata)) {
@@ -1067,7 +1067,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1089,7 +1089,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
// Paper end - Prevent block entity and entity crashes
// Spigot start
} finally {
@@ -675,7 +610,7 @@ index 6282db087ac330d0e3a97c93f03eb64e8b3246f3..a0e6f39ba00212a078e04b21831a5ed2
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 30ddb35140ae4a6faba98c191bb8eadbafc35377..48999a860a3b9ed691691c355beaf3e0674acb95 100644
index 4178f48c1614af8e6796cf07fd018b9c6e67dcd0..c8eb39afabf6953c248b4d1dd4cac9948283aa47 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -504,10 +504,10 @@ public class CraftScheduler implements BukkitScheduler {
@@ -688,7 +623,7 @@ index 30ddb35140ae4a6faba98c191bb8eadbafc35377..48999a860a3b9ed691691c355beaf3e0
temp.clear();
- MinecraftTimings.bukkitSchedulerFinishTimer.stopTiming(); // Paper
+ //MinecraftTimings.bukkitSchedulerFinishTimer.stopTiming(); // Paper // Purpur
//this.debugHead = this.debugHead.getNextHead(currentTick); // Paper
//this.debugHead = this.debugHead.getNextHead(this.currentTick); // Paper
}
@@ -550,7 +550,7 @@ public class CraftScheduler implements BukkitScheduler {
@@ -752,10 +687,10 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..d3ec817e95628f1fc8be4a29c9a0f13c
// Paper end - add timings for scoreboard search
}
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index ba180127a50b1a1ed155ee4053440074e38adef4..ed1cdea66dd117ecafd14a52727f094430f39b60 100644
index ca05c37dad39808683429276d85d970b7cc63f82..6936fa0d25377292a94ba694eaf50e4ea8277506 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -171,7 +171,7 @@ public class ActivationRange
@@ -167,7 +167,7 @@ public class ActivationRange
*/
public static void activateEntities(Level world)
{
@@ -764,7 +699,7 @@ index ba180127a50b1a1ed155ee4053440074e38adef4..ed1cdea66dd117ecafd14a52727f0944
final int miscActivationRange = world.spigotConfig.miscActivationRange;
final int raiderActivationRange = world.spigotConfig.raiderActivationRange;
final int animalActivationRange = world.spigotConfig.animalActivationRange;
@@ -251,7 +251,7 @@ public class ActivationRange
@@ -228,7 +228,7 @@ public class ActivationRange
}
// Paper end
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add more logger output for invalid movement kicks
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index cdb5062d4d6325ada90dec3d4de6c0fd7546e8ab..682f353c0e409fcc7375efc62d9f64b4952ff230 100644
index 8da850ab34e576caf89681171124f617f57d00a7..06050ed59dde5c8a5291160cc890621083425963 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -755,6 +755,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -727,6 +727,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
if (packet.getId() == this.awaitingTeleport) {
if (this.awaitingPositionFromClient == null) {
@@ -16,7 +16,7 @@ index cdb5062d4d6325ada90dec3d4de6c0fd7546e8ab..682f353c0e409fcc7375efc62d9f64b4
this.disconnect((Component) Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause
return;
}
@@ -1360,7 +1361,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1337,7 +1338,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@Override
public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add Bee API
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index 46d55f60cb91fc32b505582c8eecb393959b5d3f..9a6ec5e465684be7f0d54b1f7e66bdf52603e442 100644
index 4b32a783cabf05f5bae0dba22eea8ac7ba2cd285..dc8df0912c1d18176e18a8f4dc43c4f60f81b659 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -809,6 +809,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -954,6 +954,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
if (optional.isPresent()) {
Bee.this.savedFlowerPos = (BlockPos) optional.get();
Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D);
@@ -16,7 +16,7 @@ index 46d55f60cb91fc32b505582c8eecb393959b5d3f..9a6ec5e465684be7f0d54b1f7e66bdf5
return true;
} else {
Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60);
@@ -865,6 +866,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -997,6 +998,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
this.pollinating = false;
Bee.this.navigation.stop();
Bee.this.remainingCooldownBeforeLocatingNewFlower = 200;
@@ -24,7 +24,7 @@ index 46d55f60cb91fc32b505582c8eecb393959b5d3f..9a6ec5e465684be7f0d54b1f7e66bdf5
}
@Override
@@ -911,6 +913,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -1046,6 +1048,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
this.setWantedPos();
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 8fc42922d2f5ab3de6050fe9e5f1d7a0b4ed19de..647c86b529d7da3fb96126a0a7b0fa37a52453f4 100644
index 4eb332ed95fd0ca196f3712037deb7637bfa4d8b..da3c89bc037c42268987c5923ca58c93adace80d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1624,6 +1624,42 @@ public final class CraftServer implements Server {
@@ -1601,6 +1601,42 @@ public final class CraftServer implements Server {
public void removeFuel(org.bukkit.Material material) {
net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material)));
}
@@ -52,10 +52,10 @@ index 8fc42922d2f5ab3de6050fe9e5f1d7a0b4ed19de..647c86b529d7da3fb96126a0a7b0fa37
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 9ad02908bbcbaec7b6ce2abd4091a8146ee1616b..0921894dbc0d81b943827ecda6e6befdbfd715f5 100644
index 3be5c25f8ce15e2f035c92e5fe90693e0236967d..ea1b4f0073f775fdd18eb080886d60c71a08ab2c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2390,6 +2390,42 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2403,6 +2403,42 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public float getLocalDifficultyAt(Location location) {
return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty();
}
@@ -99,10 +99,10 @@ index 9ad02908bbcbaec7b6ce2abd4091a8146ee1616b..0921894dbc0d81b943827ecda6e6befd
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index b6db9d9326f30deb02d5530e014bd3abbaf9c54e..531632ed0a1adaf87acf9bdd651001e9157b1200 100644
index 0d7e460cc73d7e236883e71ab77d51c7ef5e72ce..c4935709b031a98f58c7de3b40e18dc558f76741 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3617,5 +3617,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3647,5 +3647,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetIdleTimer() {
getHandle().resetLastActionTime();
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] mob spawning option to ignore creative players
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
index 4dc060bc677984d91a30a88155c576d5e187aa1b..061706ee732f9809d6b73305c14871257af8305e 100644
index 4bdfba6dbe88dbc7ce901b235a524ba28027f203..3741c0bb2e7c67cd2b0600f1e8ada38eda8698f8 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -253,7 +253,7 @@ public final class NaturalSpawner {
@@ -230,7 +230,7 @@ public final class NaturalSpawner {
blockposition_mutableblockposition.set(l, i, i1);
double d0 = (double) l + 0.5D;
double d1 = (double) i1 + 0.5D;
@@ -18,10 +18,10 @@ index 4dc060bc677984d91a30a88155c576d5e187aa1b..061706ee732f9809d6b73305c1487125
if (entityhuman != null) {
double d2 = entityhuman.distanceToSqr(d0, (double) i, d1);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 72b51d2db04c6cc8a3c4f9bf350e40873ef51d8c..a4e97284add91c54508759e7d38d9c992fdff89a 100644
index a647855f277d79d4ebbf370cff0d15991acbb308..6afa859dd0d18d57ba438e34a73b512a137d7cb0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -378,6 +378,7 @@ public class PurpurWorldConfig {
@@ -376,6 +376,7 @@ public class PurpurWorldConfig {
public boolean phantomSpawning;
public boolean villagerTraderSpawning;
public boolean villageSiegeSpawning;
@@ -29,7 +29,7 @@ index 72b51d2db04c6cc8a3c4f9bf350e40873ef51d8c..a4e97284add91c54508759e7d38d9c99
private void mobSpawnerSettings() {
// values of "default" or null will default to true only if the world environment is normal (aka overworld)
Predicate<Boolean> predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL);
@@ -386,6 +387,7 @@ public class PurpurWorldConfig {
@@ -384,6 +385,7 @@ public class PurpurWorldConfig {
phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate);
villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate);
villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate);

View File

@@ -5,23 +5,23 @@ Subject: [PATCH] Add skeleton bow accuracy option
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index 4aeb23de31e826d5cf27f8c91bd60c911f769a17..f9532a45419699585d1f20d27d5857a3e953ec55 100644
index 2cadbc0d56908ca978e1735eff07f5e634548606..39d02cf0e31832e30c4f034b0b5385e3e0057e60 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -185,7 +185,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
double d2 = target.getZ() - this.getZ();
double d3 = Math.sqrt(d0 * d0 + d2 * d2);
@@ -197,7 +197,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
}
- entityarrow.shoot(d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, (float) (14 - this.level().getDifficulty().getId() * 4));
+ entityarrow.shoot(d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, this.level().purpurConfig.skeletonBowAccuracyMap.getOrDefault(this.level().getDifficulty().getId(), (float) (14 - this.level().getDifficulty().getId() * 4))); // Purpur
// CraftBukkit start
org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper
if (event.isCancelled()) {
if (event.getProjectile() == entityarrow.getBukkitEntity()) {
- Projectile.spawnProjectileUsingShoot(entityarrow, worldserver, itemstack1, d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, (float) (14 - worldserver.getDifficulty().getId() * 4));
+ Projectile.spawnProjectileUsingShoot(entityarrow, worldserver, itemstack1, d0, d1 + d3 * 0.20000000298023224D, d2, 1.6F, this.level().purpurConfig.skeletonBowAccuracyMap.getOrDefault(this.level().getDifficulty().getId(), (float) (14 - this.level().getDifficulty().getId() * 4))); // Purpur
}
// CraftBukkit end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a4e97284add91c54508759e7d38d9c992fdff89a..cb2ef867f74711c9e7f111c833b2aefb9c32a672 100644
index 6afa859dd0d18d57ba438e34a73b512a137d7cb0..c5028b16ee9ae1ad042bb99f5398163e28c48d12 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2589,6 +2589,8 @@ public class PurpurWorldConfig {
@@ -2585,6 +2585,8 @@ public class PurpurWorldConfig {
public boolean skeletonAlwaysDropExp = false;
public double skeletonHeadVisibilityPercent = 0.5D;
public int skeletonFeedWitherRoses = 0;
@@ -30,7 +30,7 @@ index a4e97284add91c54508759e7d38d9c992fdff89a..cb2ef867f74711c9e7f111c833b2aefb
private void skeletonSettings() {
skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable);
skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater);
@@ -2604,6 +2606,18 @@ public class PurpurWorldConfig {
@@ -2600,6 +2602,18 @@ public class PurpurWorldConfig {
skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp);
skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent);
skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 531632ed0a1adaf87acf9bdd651001e9157b1200..1dd883ac37389b67a380680b868e665daef3938e 100644
index c4935709b031a98f58c7de3b40e18dc558f76741..820ddd8114af64d72fcf0b8757f2058c909956c8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3655,5 +3655,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3685,5 +3685,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return;
this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload()));
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Implement ram and rambar commands
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 7e0a05608a205ab81b3597dd3a9b5d4446d92fec..4fa19a701a61ad359f07d2e3ff99c731c9a60f43 100644
index 0ba926b6ff0bd54159765cc7f37d1753ded89dee..cbbddb924f46203bd600b838fc22902cbcb2124b 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -256,6 +256,8 @@ public class Commands {
@@ -261,6 +261,8 @@ public class Commands {
org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.CompassCommand.register(this.dispatcher); // Purpur
@@ -18,10 +18,10 @@ index 7e0a05608a205ab81b3597dd3a9b5d4446d92fec..4fa19a701a61ad359f07d2e3ff99c731
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index d8bff9a83c4c2ad1ec1e7d44aac23068f6dc930b..4f72ce384f4c0dbae98effa89aed5c3bb802e635 100644
index 5b4edb2386bb624d3633385106472070868acccc..b7ba01f174aa8a4c43684866f62fbeadbdf24a2f 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -305,6 +305,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -326,6 +326,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
public boolean purpurClient = false; // Purpur
private boolean tpsBar = false; // Purpur
private boolean compassBar = false; // Purpur
@@ -29,7 +29,7 @@ index d8bff9a83c4c2ad1ec1e7d44aac23068f6dc930b..4f72ce384f4c0dbae98effa89aed5c3b
// Paper start - rewrite chunk system
private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -604,6 +605,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -690,6 +691,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur
if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur
@@ -37,15 +37,15 @@ index d8bff9a83c4c2ad1ec1e7d44aac23068f6dc930b..4f72ce384f4c0dbae98effa89aed5c3b
}
@Override
@@ -680,6 +682,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
});
@@ -742,6 +744,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
}
this.saveEnderPearls(nbt);
+ nbt.putBoolean("Purpur.RamBar", this.ramBar); // Purpur
nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur
nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur
}
@@ -3104,5 +3107,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -3459,5 +3462,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
public void compassBar(boolean compassBar) {
this.compassBar = compassBar;
}
@@ -60,7 +60,7 @@ index d8bff9a83c4c2ad1ec1e7d44aac23068f6dc930b..4f72ce384f4c0dbae98effa89aed5c3b
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 585fa894e7c4b72b93de6a5abb60471b1689f9b6..b49138a7bc45d6d56f7fab393e9b1e11e4a2ec40 100644
index afb165af34f365210fdfa6542cf7a81435096738..7ce9115c4a90e22befdd6b82c2e6588f2be3a07c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -184,6 +184,8 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block blast resistance
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
index dd607038f42a73f6311d7a6003a2cf57c1589c83..40f15a30b1a0dd2040e75045f32f33082e70aaeb 100644
index 6b987ee220d94b482d2aeb4ff6bf271853605dc1..852bfe68ab722a5cbdd90dbd70501b751fe81a78 100644
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -86,7 +86,7 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -91,7 +91,7 @@ public abstract class BlockBehaviour implements FeatureElement {
protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP};
public final boolean hasCollision;
@@ -18,10 +18,10 @@ index dd607038f42a73f6311d7a6003a2cf57c1589c83..40f15a30b1a0dd2040e75045f32f3308
protected final SoundType soundType;
protected final float friction;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index b49138a7bc45d6d56f7fab393e9b1e11e4a2ec40..061a364c4c0b0a3117e8a3ae09386b27c0a24c7f 100644
index 7ce9115c4a90e22befdd6b82c2e6588f2be3a07c..60f522926b5c8dada7720142573d03af34e5a330 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -499,4 +499,19 @@ public class PurpurConfig {
@@ -497,4 +497,19 @@ public class PurpurConfig {
String setPattern = getString("settings.username-valid-characters", defaultPattern);
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block fall damage modifiers
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
index b59dd6b512021c335f3c21999958e2ea081daf69..17c994a39a1b99cc7727e328ce7493d534247a21 100644
index 3b19395f2ddee654a77df5738a1942a08c20c179..c130d316e87f1f896d33ab43831063a89e3bef2b 100644
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
@@ -181,7 +181,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
@@ -183,7 +183,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
@Override
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
@@ -18,7 +18,7 @@ index b59dd6b512021c335f3c21999958e2ea081daf69..17c994a39a1b99cc7727e328ce7493d5
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 6673133b93677d9329bab814ee64e37de3578dde..4ff7e3693305069e7fad185802a3b0481ab70a4a 100644
index e8c649d1db3dd82bb544aa6e96b6a19e96559b09..395a093c1daf8236faaa92405472a500afc3ce68 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -88,6 +88,10 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -32,7 +32,7 @@ index 6673133b93677d9329bab814ee64e37de3578dde..4ff7e3693305069e7fad185802a3b048
// Paper start
public final boolean isDestroyable() {
return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits ||
@@ -485,7 +489,7 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -480,7 +484,7 @@ public class Block extends BlockBehaviour implements ItemLike {
}
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
@@ -40,7 +40,7 @@ index 6673133b93677d9329bab814ee64e37de3578dde..4ff7e3693305069e7fad185802a3b048
+ entity.causeFallDamage(fallDistance * fallDistanceMultiplier, fallDamageMultiplier, entity.damageSources().fall()); // Purpur
}
public void updateEntityAfterFallOn(BlockGetter world, Entity entity) {
public void updateEntityMovementAfterFallOn(BlockGetter world, Entity entity) {
diff --git a/src/main/java/net/minecraft/world/level/block/HayBlock.java b/src/main/java/net/minecraft/world/level/block/HayBlock.java
index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb2551a3a393 100644
--- a/src/main/java/net/minecraft/world/level/block/HayBlock.java
@@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 061a364c4c0b0a3117e8a3ae09386b27c0a24c7f..c8540178affcffaf0e300b612b21fdca006b6350 100644
index 60f522926b5c8dada7720142573d03af34e5a330..0304e57559d6791cf4ddbec1a8dd2c2b6caa2d8e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -514,4 +514,50 @@ public class PurpurConfig {
@@ -512,4 +512,50 @@ public class PurpurConfig {
block.explosionResistance = blastResistance.floatValue();
});
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Language API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 300c8a94771d56e6bb6da692092882c329a9f0e4..479a8422a6786a8ada8536d528e7f57a06c8107a 100644
index da3c89bc037c42268987c5923ca58c93adace80d..8499ed65b3af621d25474c55fb23c35c0f7e127c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -411,6 +411,20 @@ public final class CraftServer implements Server {
@@ -413,6 +413,20 @@ public final class CraftServer implements Server {
this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager);
this.pluginManager.paperPluginManager = this.paperPluginManager;
// Paper end

View File

@@ -5,22 +5,22 @@ Subject: [PATCH] Milk Keeps Beneficial Effects
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 7e00f1f875c7761cfbc1964a3d76da08c36c60f1..f714e2dc212a3b70977e93c55e94f8b272c5b02d 100644
index 38a7bde1bc2836352a62dfe1dd3b9a60877c20e2..ade67ca5e0b203f9554b792302da576c6d419ea5 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1129,6 +1129,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
for (flag = false; iterator.hasNext(); flag = true) {
// CraftBukkit start
MobEffectInstance effect = (MobEffectInstance) iterator.next();
@@ -1151,6 +1151,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
while (iterator.hasNext()) {
MobEffectInstance effect = iterator.next();
+ if (cause == EntityPotionEffectEvent.Cause.MILK && !this.level().purpurConfig.milkClearsBeneficialEffects && effect.getEffect().value().isBeneficial()) continue; // Purpur
EntityPotionEffectEvent event = CraftEventFactory.callEntityPotionEffectChangeEvent(this, effect, null, cause, EntityPotionEffectEvent.Action.CLEARED);
if (event.isCancelled()) {
continue;
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09bb02e41d0 100644
index ac4b31ab1297b34b5105c7bdc30ddea6d2d5e9a3..959e10586cddaae2590d2d84f5fd809dad80889b 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -115,7 +115,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -116,7 +116,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
return this.canDrinkPotion && this.level().isNight() && !entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API
}));
this.goalSelector.addGoal(0, new UseItemGoal<>(this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> {
@@ -30,22 +30,22 @@ index d342752271c76b447bb8cde50d57407259b93c43..360514d5afcafcf6dd83335938bfa09b
this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this));
this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cb2ef867f74711c9e7f111c833b2aefb9c32a672..267b3b4f0977f13ee166a3662b864de32975ade8 100644
index c5028b16ee9ae1ad042bb99f5398163e28c48d12..ebc20d82351dc6b9834a3dcb3ed61d22e821a45c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -131,6 +131,7 @@ public class PurpurWorldConfig {
public boolean imposeTeleportRestrictionsOnNetherPortals = false;
public boolean imposeTeleportRestrictionsOnEndPortals = false;
public boolean milkCuresBadOmen = true;
+ public boolean milkClearsBeneficialEffects = true;
public boolean noteBlockIgnoreAbove = false;
public boolean persistentDroppableEntityDisplayNames = true;
@@ -144,6 +144,7 @@ public class PurpurWorldConfig {
public boolean persistentTileEntityLore = false;
@@ -158,6 +159,7 @@ public class PurpurWorldConfig {
imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals);
imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
public boolean persistentTileEntityDisplayName = true;
public int mobLastHurtByPlayerTime = 100;
+ public boolean milkClearsBeneficialEffects = true;
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
@@ -176,6 +177,7 @@ public class PurpurWorldConfig {
persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore);
persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName);
mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime);
+ milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects);
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);
if (PurpurConfig.version < 35) {
boolean oldVal = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityLore);
}
public int daytimeTicks = 12000;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index c8540178affcffaf0e300b612b21fdca006b6350..d6b99dd0fffaf3247ddfc5dd23dffdc2fb4e7897 100644
index 0304e57559d6791cf4ddbec1a8dd2c2b6caa2d8e..e13ec4125047db4edc9dc5de3a2adcdde51bce12 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -472,11 +472,14 @@ public class PurpurConfig {
@@ -470,11 +470,14 @@ public class PurpurConfig {
public static boolean loggerSuppressIgnoredAdvancementWarnings = false;
public static boolean loggerSuppressUnrecognizedRecipeErrors = false;
public static boolean loggerSuppressSetBlockFarChunk = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting)
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
index 2ace900721f4aa185b8ed28ac95feb50cb89453f..1dd61ee306231f77664dee7e4f2b617fe2e3659f 100644
index 75d65b795a7802c0c5b5bd4a6ed429209f987452..f91519f73e766cf891351a95d76abb416da2f957 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
@@ -80,6 +80,7 @@ public abstract class AbstractArrow extends Projectile {
@@ -16,7 +16,7 @@ index 2ace900721f4aa185b8ed28ac95feb50cb89453f..1dd61ee306231f77664dee7e4f2b617f
// Spigot Start
@Override
@@ -589,6 +590,12 @@ public abstract class AbstractArrow extends Projectile {
@@ -623,6 +624,12 @@ public abstract class AbstractArrow extends Projectile {
return this.firedFromWeapon;
}
@@ -30,10 +30,10 @@ index 2ace900721f4aa185b8ed28ac95feb50cb89453f..1dd61ee306231f77664dee7e4f2b617f
return SoundEvents.ARROW_HIT;
}
diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
index 32dd0b13a0819f597d8a93c6bc3a155781067544..9751eea2d8aa3a45da34f09377d2fc81fe9a90d8 100644
index 78ba170a83f8c026bd110eae494c52577182ed61..c2ae50872cead7202246b9cce4db6e0a81e1cf5f 100644
--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
+++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
@@ -110,6 +110,8 @@ public abstract class ProjectileWeaponItem extends Item {
@@ -105,6 +105,8 @@ public abstract class ProjectileWeaponItem extends Item {
entityarrow.setCritArrow(true);
}
@@ -43,24 +43,25 @@ index 32dd0b13a0819f597d8a93c6bc3a155781067544..9751eea2d8aa3a45da34f09377d2fc81
}
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
index 1be074074283f12543ac771ac9201580e7736289..8cf0b69fee110af05b89afa8e3236575aa6850e2 100644
index 4e863ae1f94291b391a142e04e0c41e83417ab70..d7eb680b977656556a618431b1511c1050f6db5e 100644
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
@@ -86,6 +86,8 @@ public class TridentItem extends Item implements ProjectileItem {
entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
@@ -100,6 +100,9 @@ public class TridentItem extends Item implements ProjectileItem {
return false;
}
ThrownTrident entitythrowntrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent
+
+ entitythrowntrident.setActualEnchantments(stack.getEnchantments()); // Purpur - Add an option to fix MC-3304 projectile looting
+
// CraftBukkit start
// Paper start - PlayerLaunchProjectileEvent
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) entitythrowntrident.getBukkitEntity());
if (event.shouldConsume()) stack.hurtWithoutBreaking(1, entityhuman); // Paper - PlayerLaunchProjectileEvent
entitythrowntrident.pickupItemStack = stack.copy(); // SPIGOT-4511 update since damage call moved
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java b/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java
index d86189bd446c7cd7215cfbcef72b2125a064e3d1..53608b9dbb81c58819b9ae6bc676ffb3ed01ce70 100644
index 5f27e1ce23f2ed68e4c8af1986fafce940dbf826..3eff81e1e83e8f4fa4b91ea5d472407e6081f01b 100644
--- a/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java
+++ b/src/main/java/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java
@@ -66,6 +66,11 @@ public class EnchantedCountIncreaseFunction extends LootItemConditionalFunction
Entity entity = context.getParamOrNull(LootContextParams.ATTACKING_ENTITY);
Entity entity = context.getOptionalParameter(LootContextParams.ATTACKING_ENTITY);
if (entity instanceof LivingEntity livingEntity) {
int i = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity);
+ // Purpur start - Add an option to fix MC-3304 projectile looting
@@ -72,10 +73,10 @@ index d86189bd446c7cd7215cfbcef72b2125a064e3d1..53608b9dbb81c58819b9ae6bc676ffb3
return stack;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index d6b99dd0fffaf3247ddfc5dd23dffdc2fb4e7897..9a60abb073d9512cb85b1ea1ae542d07e594300e 100644
index e13ec4125047db4edc9dc5de3a2adcdde51bce12..b881bfac6c8204bfe7ccd38583daf48013c5f639 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -503,6 +503,11 @@ public class PurpurConfig {
@@ -501,6 +501,11 @@ public class PurpurConfig {
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
}

View File

@@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 267b3b4f0977f13ee166a3662b864de32975ade8..6f1a035e5e1d8f7477fc311eceff24b4e92e2b35 100644
index ebc20d82351dc6b9834a3dcb3ed61d22e821a45c..f8a0049919f7542d8eccf5f2b1b5d2ee1a696943 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1426,6 +1426,7 @@ public class PurpurWorldConfig {
@@ -1424,6 +1424,7 @@ public class PurpurWorldConfig {
public boolean creeperHealthRadius = false;
public boolean creeperAlwaysDropExp = false;
public double creeperHeadVisibilityPercent = 0.5D;
@@ -35,7 +35,7 @@ index 267b3b4f0977f13ee166a3662b864de32975ade8..6f1a035e5e1d8f7477fc311eceff24b4
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -1445,6 +1446,7 @@ public class PurpurWorldConfig {
@@ -1443,6 +1444,7 @@ public class PurpurWorldConfig {
creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp);
creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent);

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Fire Immunity API
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 95885f71825cbf1e46001d60f81dc88049ec6e22..0e3494fc7a073eb6cde1a2e62303b1238d59b156 100644
index 1bab4593cfb738ed6253482d36dc99b755d4e55f..285ef87b7088f905bb77c408465ccbca6644454f 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -433,6 +433,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public boolean activatedPriorityReset = false; // Pufferfish - DAB
public int activatedPriority = gg.pufferfish.pufferfish.PufferfishConfig.maximumActivationPrio; // Pufferfish - DAB (golf score)
public final BlockPos.MutableBlockPos cachedBlockPos = new BlockPos.MutableBlockPos(); // Pufferfish - reduce entity allocations
@@ -432,6 +432,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
private UUID originWorld;
public boolean freezeLocked = false; // Paper - Freeze Tick Lock API
public boolean fixedPose = false; // Paper - Expand Pose API
+ public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API
public void setOrigin(@javax.annotation.Nonnull Location location) {
this.origin = location.toVector();
@@ -1880,7 +1881,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1950,7 +1951,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean fireImmune() {
@@ -25,7 +25,7 @@ index 95885f71825cbf1e46001d60f81dc88049ec6e22..0e3494fc7a073eb6cde1a2e62303b123
}
public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) {
@@ -2589,6 +2590,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2705,6 +2706,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
nbttagcompound.putBoolean("Paper.FreezeLock", true);
}
// Paper end
@@ -37,7 +37,7 @@ index 95885f71825cbf1e46001d60f81dc88049ec6e22..0e3494fc7a073eb6cde1a2e62303b123
return nbttagcompound;
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
@@ -2736,6 +2742,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2853,6 +2859,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
freezeLocked = nbt.getBoolean("Paper.FreezeLock");
}
// Paper end
@@ -50,10 +50,10 @@ index 95885f71825cbf1e46001d60f81dc88049ec6e22..0e3494fc7a073eb6cde1a2e62303b123
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT");
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 7b7a58039eb1a288262228444712c84d6e2aef24..770606c4462d85d116f6d0bf91192dc49f438d0f 100644
index b5885d16cd3371d34bd031bd00a22a0ba6db6509..cc7d5aeb2044019aabad93dd79a16178c7483037 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -87,6 +87,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -88,6 +88,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
}
// Purpur start - API for any mob to burn daylight

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 0e3494fc7a073eb6cde1a2e62303b1238d59b156..7aadcaa1785c6560eb1ce2f1179225facca47d84 100644
index 285ef87b7088f905bb77c408465ccbca6644454f..49da1a25e39d6e58786f6f20177610d5aa7626f6 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -970,6 +970,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1032,6 +1032,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
&& this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v)
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
// Paper end - Configurable nether ceiling damage
@@ -17,10 +17,10 @@ index 0e3494fc7a073eb6cde1a2e62303b1238d59b156..7aadcaa1785c6560eb1ce2f1179225fa
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6f1a035e5e1d8f7477fc311eceff24b4e92e2b35..05572fa65d666afb6af697c398521457dea9821d 100644
index f8a0049919f7542d8eccf5f2b1b5d2ee1a696943..c6d307c69afd9fc58c4bde7f8b755d96d9bcf9d6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -418,6 +418,7 @@ public class PurpurWorldConfig {
@@ -416,6 +416,7 @@ public class PurpurWorldConfig {
public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false;
@@ -28,7 +28,7 @@ index 6f1a035e5e1d8f7477fc311eceff24b4e92e2b35..05572fa65d666afb6af697c398521457
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
public boolean creativeOnePunch = false;
@@ -445,6 +446,7 @@ public class PurpurWorldConfig {
@@ -443,6 +444,7 @@ public class PurpurWorldConfig {
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Added got ram event
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
index 1b298bfb440e5ddcc88b0b41e8c733b3883c5998..004a0212540c0a9061eb3aed458857d3da4c1c3d 100644
index 51dcc3893b964e6d20a2b963d3105a2687b3c426..ebf53d48b09918c7453f982a5e4f9a1584dfc544 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -429,6 +429,7 @@ public class Goat extends Animal {
@@ -432,6 +432,7 @@ public class Goat extends Animal {
// Paper start - Goat ram API
public void ram(net.minecraft.world.entity.LivingEntity entity) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Log skipped entity's position
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index bad5b622477a637440649ec18ea5a79c321bc523..d3de0362dd1ef3954d05c4d8fa56a25edfe1bb2b 100644
index 663dde75a9fc4fd7323ae9abe73cdb83aa74f2b3..f297e771e677ddefa3bf0d6f50d04f2e50197c30 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -627,6 +627,12 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -691,6 +691,12 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
entity.load(nbt);
}, () -> {
EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id"));

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] End Crystal Cramming
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f8e17e9ee 100644
index 305c3350116f656c3d0e6134e4d8023eac50f3ad..b1db1e92de3a88a0f0e0fdb42b0bf9732095c8a9 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -102,6 +102,7 @@ public class EndCrystal extends Entity {
@@ -17,10 +17,10 @@ index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f
// Purpur start
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 05572fa65d666afb6af697c398521457dea9821d..1b8386bbdf197d5f241f821fec2b4ba3d5b53f72 100644
index c6d307c69afd9fc58c4bde7f8b755d96d9bcf9d6..91d4c39e72296147bc095c1fee943c63082cf848 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -915,6 +915,7 @@ public class PurpurWorldConfig {
@@ -913,6 +913,7 @@ public class PurpurWorldConfig {
public double basedEndCrystalExplosionPower = 6.0D;
public boolean basedEndCrystalExplosionFire = false;
public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
@@ -28,7 +28,7 @@ index 05572fa65d666afb6af697c398521457dea9821d..1b8386bbdf197d5f241f821fec2b4ba3
private void endCrystalSettings() {
if (PurpurConfig.version < 31) {
if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) {
@@ -942,6 +943,7 @@ public class PurpurWorldConfig {
@@ -940,6 +941,7 @@ public class PurpurWorldConfig {
log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`");
basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc97a8085c0 100644
index fbc6b0099af34b0247f6144a9cef020f9ccddeef..2d190b3a6378b8cbadfa65510df1ccfbd5882ef8 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
@@ -178,6 +178,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name
@@ -23,7 +23,7 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9
+ if (world.purpurConfig.beaconAllowEffectsWithTintedGlass && block.equals(Blocks.TINTED_GLASS)) {
+ isTintedGlass = true;
+ }
if (tileentitybeacon_beaconcolortracker == null || iblockdata1.getLightBlock(world, blockposition1) >= 15 && !iblockdata1.is(Blocks.BEDROCK)) {
if (tileentitybeacon_beaconcolortracker == null || iblockdata1.getLightBlock() >= 15 && !iblockdata1.is(Blocks.BEDROCK)) {
blockEntity.checkingBeamSections.clear();
blockEntity.lastCheckY = l;
@@ -230,7 +234,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name
@@ -36,10 +36,10 @@ index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc9
BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1b8386bbdf197d5f241f821fec2b4ba3d5b53f72..ef6f0febae8db9e0c6a7a61e40c3498a7bf35375 100644
index 91d4c39e72296147bc095c1fee943c63082cf848..fc772f2be46eada82f6a3db52fef930c82a76e6c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -814,11 +814,13 @@ public class PurpurWorldConfig {
@@ -812,11 +812,13 @@ public class PurpurWorldConfig {
public int beaconLevelTwo = 30;
public int beaconLevelThree = 40;
public int beaconLevelFour = 50;

View File

@@ -39,10 +39,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 9a60abb073d9512cb85b1ea1ae542d07e594300e..c5a516d647dd694b311013a7b2b0dac9d30b94c6 100644
index b881bfac6c8204bfe7ccd38583daf48013c5f639..569d178584ddafd38c476e56ed1809da0ddc3b1f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -508,6 +508,16 @@ public class PurpurConfig {
@@ -506,6 +506,16 @@ public class PurpurConfig {
fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer);
}

View File

@@ -4,20 +4,20 @@ Date: Mon, 9 Jan 2023 19:45:55 -0500
Subject: [PATCH] Config to remove explosion radius clamp
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 6395bd2ffd734ca73af17b003d1505971ea31a48..261613d254edef33431794d5e1f7802cc8793a6e 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -341,7 +341,7 @@ public class Explosion {
this.hitPlayers = Maps.newHashMap();
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index bbbd451ff184be8fa13bd93d53c89a9502f9951a..913f7d5fd9823eea9fad2d4e6689511f8d0cfda6 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -311,7 +311,7 @@ public class ServerExplosion implements Explosion {
public ServerExplosion(ServerLevel world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, Vec3 pos, float power, boolean createFire, Explosion.BlockInteraction destructionType) {
this.level = world;
this.source = entity;
- this.radius = (float) Math.max(power, 0.0); // CraftBukkit - clamp bad values
+ this.radius = (float) (world == null || world.purpurConfig.explosionClampRadius ? Math.max(power, 0.0) : power); // CraftBukkit - clamp bad values // Purpur
this.x = x;
this.y = y;
this.z = z;
@@ -404,7 +404,7 @@ public class Explosion {
this.center = pos;
this.fire = createFire;
this.blockInteraction = destructionType;
@@ -666,7 +666,7 @@ public class ServerExplosion implements Explosion {
public void explode() {
// CraftBukkit start
@@ -27,10 +27,10 @@ index 6395bd2ffd734ca73af17b003d1505971ea31a48..261613d254edef33431794d5e1f7802c
}
// CraftBukkit end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ef6f0febae8db9e0c6a7a61e40c3498a7bf35375..6076db7b948d932575a179d99dfae229f6f884ea 100644
index fc772f2be46eada82f6a3db52fef930c82a76e6c..df551a65fbd722c15de5b5a14fb1dff60a839e85 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -225,6 +225,11 @@ public class PurpurWorldConfig {
@@ -223,6 +223,11 @@ public class PurpurWorldConfig {
infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] bonemealable sugarcane, cactus, and netherwart
diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
index 9200d75b05ce535f7b7f5c1572cd8f6261c6955b..066181ed274a492762baebf05bf51ac7848878cc 100644
index bbfd8f5d404d0add94f0d8ac89a2964692b37e44..9f163ed07f8e6a5370c4c355b4e910f7a49b6bcd 100644
--- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
@@ -23,7 +23,7 @@ import net.minecraft.world.phys.shapes.CollisionContext;
@@ -24,7 +24,7 @@ import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
@@ -17,7 +17,7 @@ index 9200d75b05ce535f7b7f5c1572cd8f6261c6955b..066181ed274a492762baebf05bf51ac7
public static final MapCodec<CactusBlock> CODEC = simpleCodec(CactusBlock::new);
public static final IntegerProperty AGE = BlockStateProperties.AGE_15;
@@ -134,4 +134,34 @@ public class CactusBlock extends Block {
@@ -135,4 +135,34 @@ public class CactusBlock extends Block {
protected boolean isPathfindable(BlockState state, PathComputationType type) {
return false;
}
@@ -89,7 +89,7 @@ index da1c7999ca64199387054de46489d3ff4a299289..b8355ea1de26c4b6905f477fb4e110f1
// Purpur end
}
diff --git a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce803449418fbed2a 100644
index 547ea09ed84595286c97c128b3b96f6d387ae25f..d0f8a13f27132257ece6dadf736c2dc6b1e5720e 100644
--- a/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SugarCaneBlock.java
@@ -20,7 +20,7 @@ import net.minecraft.world.level.material.FluidState;
@@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6076db7b948d932575a179d99dfae229f6f884ea..e363a2af2d5ac8bde8894017e5403213c1877823 100644
index df551a65fbd722c15de5b5a14fb1dff60a839e85..44f6d8b1b4653bf4398f914045deadb9c34a3d35 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -868,8 +868,20 @@ public class PurpurWorldConfig {
@@ -866,8 +866,20 @@ public class PurpurWorldConfig {
}
public boolean cactusBreaksFromSolidNeighbors = true;

View File

@@ -4,24 +4,23 @@ Date: Mon, 26 Dec 2022 23:42:37 +0100
Subject: [PATCH] Add PreExplodeEvents
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 261613d254edef33431794d5e1f7802cc8793a6e..4ea1ce1cface25b9bf0e3958d55ba2fbbff69a9e 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -408,6 +408,25 @@ public class Explosion {
diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java
index 913f7d5fd9823eea9fad2d4e6689511f8d0cfda6..3c3d219c9339f64c23ec0b31783bf68a4423636c 100644
--- a/src/main/java/net/minecraft/world/level/ServerExplosion.java
+++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java
@@ -670,6 +670,23 @@ public class ServerExplosion implements Explosion {
return;
}
// CraftBukkit end
+
+ // Purpur start - add PreExplodeEvents
+ if(this.source != null){
+ Location location = new Location(this.level.getWorld(), this.x, this.y, this.z);
+ if (this.source != null) {
+ Location location = new Location(this.level.getWorld(), this.center.x, this.center.y, this.center.z);
+ if(!new org.purpurmc.purpur.event.entity.PreEntityExplodeEvent(this.source.getBukkitEntity(), location, this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) {
+ this.wasCanceled = true;
+ return;
+ }
+ }else {
+ Location location = new Location(this.level.getWorld(), this.x, this.y, this.z);
+ } else {
+ Location location = new Location(this.level.getWorld(), this.center.x, this.center.y, this.center.z);
+ org.bukkit.block.Block block = location.getBlock();
+ org.bukkit.block.BlockState blockState = (this.damageSource.getDirectBlockState() != null) ? this.damageSource.getDirectBlockState() : block.getState();
+ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) {
@@ -29,8 +28,7 @@ index 261613d254edef33431794d5e1f7802cc8793a6e..4ea1ce1cface25b9bf0e3958d55ba2fb
+ return;
+ }
+ }
+ //Purpur end
+
this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, new Vec3(this.x, this.y, this.z));
+ // Purpur end
// Paper start - collision optimisations
this.blockCache = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>();
this.chunkPosCache = new long[CHUNK_CACHE_WIDTH * CHUNK_CACHE_WIDTH];

View File

@@ -96,10 +96,10 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 4bd75f2a4f932fc63efd4e4d884aa834184250fa..6e6f4dffceb0032153c5be119303c5809629cfcc 100644
index 51abda23e30e56d79b3e020d0407c1cfe25d8ab9..73216c774f2ee5455c4b118180b2dcc2e3a24f0d 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -114,6 +114,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -113,6 +113,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
return;
}
// Paper start - Use TerminalConsoleAppender
@@ -398,11 +398,11 @@ index 0000000000000000000000000000000000000000..d75fb5e77eff27d86135ed7d605dbc25
+ }
+}
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index d2a75850af9c6ad2aca66a5f994f1b587d73eac4..a056aa167887abef9e6d531a9edd2cda433567d2 100644
index 637d64da9938e51a97338b9253b43889585c67bb..f9313059b4e3b2d100e66ed8a70d4811dc394031 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -2,7 +2,16 @@
<Configuration status="WARN" shutdownHook="disable">
<Configuration status="WARN">
<Appenders>
<Queue name="ServerGuiConsole">
- <PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg{nolookups}%n" />

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Stored Bee API
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
index 5e982bab268746a05b97f5b9f71422548ea12983..a9cff34c85e1907bcbca2b051289781484580a15 100644
index b7ad467d7d7f50bcb90e50f00f905873e89c7956..def408384cbd571b7bee23f5cecf430a5d690c4b 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java
@@ -146,11 +146,33 @@ public class BeehiveBlockEntity extends BlockEntity {
@@ -147,11 +147,33 @@ public class BeehiveBlockEntity extends BlockEntity {
return list;
}
@@ -42,7 +42,7 @@ index 5e982bab268746a05b97f5b9f71422548ea12983..a9cff34c85e1907bcbca2b0512897814
// Paper start - Add EntityBlockStorage clearEntities
public void clearBees() {
this.stored.clear();
@@ -471,9 +493,9 @@ public class BeehiveBlockEntity extends BlockEntity {
@@ -472,9 +494,9 @@ public class BeehiveBlockEntity extends BlockEntity {
}
}

View File

@@ -8,10 +8,10 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t
By default the option is disabled to avoid breaking any possible vanilla mechanics.
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0bafc2aa1c2 100644
index de87483600e55d88176fe25db621bbd3e464729f..5d3002ae9f8e73851c65c2131343b2762dc9eae8 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -230,4 +230,29 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -249,4 +249,29 @@ public class PrimedTnt extends Entity implements TraceableEntity {
return !level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid();
}
// Paper end - Option to prevent TNT from moving in water
@@ -42,10 +42,10 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0ba
+ // Purpur end - Shears can defuse TNT
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e363a2af2d5ac8bde8894017e5403213c1877823..a47f3ef381b67e1cf0b0ca96c1bd1a22ba5f7429 100644
index 44f6d8b1b4653bf4398f914045deadb9c34a3d35..1e561d12f4b04a536cc891e6a6d123c90e77266c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -3399,4 +3399,11 @@ public class PurpurWorldConfig {
@@ -3395,4 +3395,11 @@ public class PurpurWorldConfig {
cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance);
cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Explorer Map API
diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java
index ce461b1a8d7fab87ae28e30205f6fab67f1808b6..608390ed36710a419de1542b80340dd3fcc7299c 100644
index 571f2540a1e9422025efe651167e26b44b437daa..c2f3c8b3d8eeb609b6d6067c4fb404aefbf94ec5 100644
--- a/src/main/java/net/minecraft/world/item/MapItem.java
+++ b/src/main/java/net/minecraft/world/item/MapItem.java
@@ -195,6 +195,7 @@ public class MapItem extends ComplexItem {
@@ -194,6 +194,7 @@ public class MapItem extends Item {
public static void renderBiomePreviewMap(ServerLevel world, ItemStack map) {
MapItemSavedData mapItemSavedData = getSavedData(map, world);
if (mapItemSavedData != null) {
@@ -17,10 +17,10 @@ index ce461b1a8d7fab87ae28e30205f6fab67f1808b6..608390ed36710a419de1542b80340dd3
int i = 1 << mapItemSavedData.scale;
int j = mapItemSavedData.centerX;
diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
index 6794466051dd4b725d579b2136c37844995a648e..769d283cd98cba829262e45020ce3936c484938a 100644
index ae321b3b8d98e42ef07fd1f0f738c1a2b428f6db..26da9e7c25ef6a89482838010d8ed6bcf8c87511 100644
--- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
+++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java
@@ -80,6 +80,7 @@ public class MapItemSavedData extends SavedData {
@@ -81,6 +81,7 @@ public class MapItemSavedData extends SavedData {
private final Map<String, MapFrame> frameMarkers = Maps.newHashMap();
private int trackedDecorationCount;
private org.bukkit.craftbukkit.map.RenderData vanillaRender = new org.bukkit.craftbukkit.map.RenderData(); // Paper

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option Ocelot Spawn Under Sea Level
diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
index 92b71f76c7518068b4b5d19b5f41f2d1c796ac47..82ba970f265142e2fe7c8c5152f5004af984dc03 100644
index 14634de26c218a3d26afd3e7e6ca89c1a0595178..dee59cb4b87845c940ee089aa932aa69dd2539d6 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
@@ -285,7 +285,7 @@ public class Ocelot extends Animal {
@@ -284,7 +284,7 @@ public class Ocelot extends Animal {
if (world.isUnobstructed(this) && !world.containsAnyLiquid(this.getBoundingBox())) {
BlockPos blockposition = this.blockPosition();
@@ -18,10 +18,10 @@ index 92b71f76c7518068b4b5d19b5f41f2d1c796ac47..82ba970f265142e2fe7c8c5152f5004a
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a47f3ef381b67e1cf0b0ca96c1bd1a22ba5f7429..5c0212eb9536b60a54b91a4a91ebfdca9ce0f88b 100644
index 1e561d12f4b04a536cc891e6a6d123c90e77266c..a433ca73bdc61aed436743daadaa58e818d54f50 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2139,6 +2139,7 @@ public class PurpurWorldConfig {
@@ -2135,6 +2135,7 @@ public class PurpurWorldConfig {
public int ocelotBreedingTicks = 6000;
public boolean ocelotTakeDamageFromWater = false;
public boolean ocelotAlwaysDropExp = false;
@@ -29,7 +29,7 @@ index a47f3ef381b67e1cf0b0ca96c1bd1a22ba5f7429..5c0212eb9536b60a54b91a4a91ebfdca
private void ocelotSettings() {
ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable);
ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater);
@@ -2153,6 +2154,7 @@ public class PurpurWorldConfig {
@@ -2149,6 +2150,7 @@ public class PurpurWorldConfig {
ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks);
ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater);
ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp);

View File

@@ -5,15 +5,15 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
index b9810a1f6ac91ae9631dd1ebc225f009d91b7845..d6cac5ed7916040104f2a79ed38eb8b453ea3db6 100644
index e283b1296c1e831376bfe9491cbf02ed4b3fffe4..49e57d9fb96cab6ee8204600d86430b04e3b4861 100644
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
@@ -606,11 +606,18 @@ public class PiglinAi {
ItemStack itemstack = (ItemStack) iterator.next();
@@ -605,11 +605,18 @@ public class PiglinAi {
}
item = itemstack.getItem();
- } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD));
+ } while (!(item instanceof ArmorItem) || !((ArmorItem) item).getMaterial().is(ArmorMaterials.GOLD) && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(item))); // Purpur
itemstack = (ItemStack) iterator.next();
- } while (!itemstack.is(ItemTags.PIGLIN_SAFE_ARMOR));
+ } while (!itemstack.is(ItemTags.PIGLIN_SAFE_ARMOR) && (!entity.level().purpurConfig.piglinIgnoresArmorWithGoldTrim || !isWearingGoldTrim(item))); // Purpur
return true;
}
@@ -29,10 +29,10 @@ index b9810a1f6ac91ae9631dd1ebc225f009d91b7845..d6cac5ed7916040104f2a79ed38eb8b4
piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET);
piglin.getNavigation().stop();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 5c0212eb9536b60a54b91a4a91ebfdca9ce0f88b..c7587d62ad302abc399e24c7be76a3646326a543 100644
index a433ca73bdc61aed436743daadaa58e818d54f50..10b7fabd0c04a62b328dfd8cf0ad6797e3d5e4ee 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2316,6 +2316,7 @@ public class PurpurWorldConfig {
@@ -2312,6 +2312,7 @@ public class PurpurWorldConfig {
public int piglinPortalSpawnModifier = 2000;
public boolean piglinAlwaysDropExp = false;
public double piglinHeadVisibilityPercent = 0.5D;
@@ -40,7 +40,7 @@ index 5c0212eb9536b60a54b91a4a91ebfdca9ce0f88b..c7587d62ad302abc399e24c7be76a364
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
@@ -2332,6 +2333,7 @@ public class PurpurWorldConfig {
@@ -2328,6 +2329,7 @@ public class PurpurWorldConfig {
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp);
piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent);

View File

@@ -31,10 +31,10 @@ index d95d122601dd47a27e8d82a13b071919c360fe68..4a96d914f8aa6f0c5f13fc85369a311f
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index c5a516d647dd694b311013a7b2b0dac9d30b94c6..c7cd04e40a34bbb4a909490007e90f49b1c5507b 100644
index 569d178584ddafd38c476e56ed1809da0ddc3b1f..6d7b5a84ac541c92747d4154298c5e62c9987199 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -578,4 +578,9 @@ public class PurpurConfig {
@@ -576,4 +576,9 @@ public class PurpurConfig {
block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue();
});
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block
diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java
index cc1e5882bee94864ad189d7f01ce78223411e51d..4c827c26656ac487cc8c66eeb67e4f38a29fec36 100644
index b62db8c7c8c57e43869ee239ebf4b02f112355d9..f60e39e56a5dab2de62ae9cfd7a30a70b4985c09 100644
--- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java
+++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java
@@ -27,7 +27,7 @@ public class EndCrystalItem extends Item {
@@ -18,10 +18,10 @@ index cc1e5882bee94864ad189d7f01ce78223411e51d..4c827c26656ac487cc8c66eeb67e4f38
} else {
BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c7587d62ad302abc399e24c7be76a3646326a543..069d6623c2a228cbb645b3716cb5c2cc832753d8 100644
index 10b7fabd0c04a62b328dfd8cf0ad6797e3d5e4ee..62beabc316c3faba3b1c4d471fb33e33cd4b1a3d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -935,6 +935,7 @@ public class PurpurWorldConfig {
@@ -933,6 +933,7 @@ public class PurpurWorldConfig {
public boolean basedEndCrystalExplosionFire = false;
public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
public int endCrystalCramming = 0;
@@ -29,7 +29,7 @@ index c7587d62ad302abc399e24c7be76a3646326a543..069d6623c2a228cbb645b3716cb5c2cc
private void endCrystalSettings() {
if (PurpurConfig.version < 31) {
if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) {
@@ -963,6 +964,7 @@ public class PurpurWorldConfig {
@@ -961,6 +962,7 @@ public class PurpurWorldConfig {
basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK;
}
endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming);

View File

@@ -18,21 +18,21 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2
return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty();
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 069d6623c2a228cbb645b3716cb5c2cc832753d8..d8841b0a294083c36d4bb8806fa8c9756fc9856e 100644
index 62beabc316c3faba3b1c4d471fb33e33cd4b1a3d..84efc4ae58a3a33ac15282c462df72982248dac3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -146,6 +146,7 @@ public class PurpurWorldConfig {
public boolean rainStopsAfterSleep = true;
public boolean thunderStopsAfterSleep = true;
@@ -145,6 +145,7 @@ public class PurpurWorldConfig {
public boolean persistentTileEntityDisplayName = true;
public int mobLastHurtByPlayerTime = 100;
public boolean milkClearsBeneficialEffects = true;
+ public boolean disableOxidationProximityPenalty = false;
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
@@ -180,6 +181,7 @@ public class PurpurWorldConfig {
rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep);
thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep);
@@ -178,6 +179,7 @@ public class PurpurWorldConfig {
persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName);
mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime);
milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects);
+ disableOxidationProximityPenalty = getBoolean("gameplay-mechanics.disable-oxidation-proximity-penalty", disableOxidationProximityPenalty);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] register minecraft debug commands
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 4fa19a701a61ad359f07d2e3ff99c731c9a60f43..ac93dcca5576b9d4e7d15305f5d0dbaf940b7b1d 100644
index cbbddb924f46203bd600b838fc22902cbcb2124b..647a3ac2aea4dadd638836f831cc3768d10c7b74 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -221,8 +221,8 @@ public class Commands {
@@ -226,8 +226,8 @@ public class Commands {
JfrCommand.register(this.dispatcher);
}
@@ -20,10 +20,10 @@ index 4fa19a701a61ad359f07d2e3ff99c731c9a60f43..ac93dcca5576b9d4e7d15305f5d0dbaf
DebugPathCommand.register(this.dispatcher);
DebugMobSpawningCommand.register(this.dispatcher);
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
index 85a0a07707a2b4029879b8caea79ded4bd849dab..aad2cdf4c2237caf2c99695d0cbb01f56c0074e2 100644
index cccdf61ff0b08531ec0f2165588abe5dd4d488eb..5af4bed9602fb3bb2e5c92f97e95b97294ee6123 100644
--- a/src/main/java/net/minecraft/server/Main.java
+++ b/src/main/java/net/minecraft/server/Main.java
@@ -123,6 +123,7 @@ public class Main {
@@ -122,6 +122,7 @@ public class Main {
// Purpur start - load config files early
org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionset.valueOf("purpur-settings"));
org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels");
@@ -32,10 +32,10 @@ index 85a0a07707a2b4029879b8caea79ded4bd849dab..aad2cdf4c2237caf2c99695d0cbb01f5
io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index c7cd04e40a34bbb4a909490007e90f49b1c5507b..e7ef546de2259a3969a63765d951a36e37a548c3 100644
index 6d7b5a84ac541c92747d4154298c5e62c9987199..c1f14b11dbd472bc84993156d41a777167ec9ad7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -583,4 +583,9 @@ public class PurpurConfig {
@@ -581,4 +581,9 @@ public class PurpurConfig {
private static void playerDeathsAlwaysShowItem() {
playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem);
}

View File

@@ -5,36 +5,39 @@ Subject: [PATCH] Configurable-villager-search-radius
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
index e1b6fe9ecda25f86431baf414f1bfd3a26a8b2bd..ecd1bbd17cb0134cf1f4e99a3fea9e205d38f46b 100644
index e8aa27547e3fa1a42720889c7038d4fb0273e7b5..928f7fb89329df8cc3192af122cf6644a869b48d 100644
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
@@ -73,7 +73,7 @@ public class AcquirePoi {
@@ -72,7 +72,7 @@ public class AcquirePoi {
}
};
// Paper start - optimise POI access
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>();
- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes);
+ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur
Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes);
// Paper end - optimise POI access
Path path = findPathToPois(entity, set);
Set<Pair<Holder<PoiType>, BlockPos>> set = poiManager.findAllClosestFirstWithType(
- poiPredicate, predicate2, entity.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE
+ poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE
)
.limit(5L)
.collect(Collectors.toSet());
diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c53f76da2 100644
index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..2903703a5fb09649dbbc8d640af15039cab42434 100644
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor<Mob> {
// Paper start - optimise POI access
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>();
// don't ask me why it's unbounded. ask mojang.
- io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes);
+ io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur
Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes));
// Paper end - optimise POI access
@@ -54,9 +54,9 @@ public class NearestBedSensor extends Sensor<Mob> {
}
};
Set<Pair<Holder<PoiType>, BlockPos>> set = poiManager.findAllWithType(
- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY
+ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY
)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet()); // Purpur
Path path = AcquirePoi.findPathToPois(entity, set);
if (path != null && path.canReach()) {
BlockPos blockPos = path.getTarget();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d8841b0a294083c36d4bb8806fa8c9756fc9856e..e58de3cdd77fdb64db93b15192705148d621407a 100644
index 84efc4ae58a3a33ac15282c462df72982248dac3..4b01853b4aaae722738e5d1e0256f87d468b0df7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2992,6 +2992,8 @@ public class PurpurWorldConfig {
@@ -2988,6 +2988,8 @@ public class PurpurWorldConfig {
public boolean villagerDisplayTradeItem = true;
public int villagerSpawnIronGolemRadius = 0;
public int villagerSpawnIronGolemLimit = 0;
@@ -43,7 +46,7 @@ index d8841b0a294083c36d4bb8806fa8c9756fc9856e..e58de3cdd77fdb64db93b15192705148
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -3029,6 +3031,8 @@ public class PurpurWorldConfig {
@@ -3025,6 +3027,8 @@ public class PurpurWorldConfig {
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);

View File

@@ -6,22 +6,22 @@ Subject: [PATCH] option to make ravagers afraid of rabbits
https://github.com/PurpurMC/Purpur/discussions/713
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
index 963df673d7f63e2aea25d4dce28edef06899eabe..4f10d4686f12a81a77f5fc103139aa03069b398c 100644
index 06aa58b0e036ce4e9615365d03060eb9d9a518b7..487f21c6e6ffc0dc9c0733241a8ded8c73a5ec8f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
@@ -113,6 +113,7 @@ public class Ravager extends Raider {
super.registerGoals();
@@ -122,6 +122,7 @@ public class Ravager extends Raider {
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Creaking.class, 8.0F, 1.0D, 1.2D));
+ if (level().purpurConfig.ravagerAvoidRabbits) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.AvoidEntityGoal<>(this, net.minecraft.world.entity.animal.Rabbit.class, 6.0F, 1.0D, 1.2D)); // Purpur
this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, true));
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e58de3cdd77fdb64db93b15192705148d621407a..3bcbf5e2dbb991a8416d827ddfe59e04f701ebf7 100644
index 4b01853b4aaae722738e5d1e0256f87d468b0df7..b6b308735adc57e1cefeda63d90460716ee4a65f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2474,6 +2474,7 @@ public class PurpurWorldConfig {
@@ -2470,6 +2470,7 @@ public class PurpurWorldConfig {
public boolean ravagerTakeDamageFromWater = false;
public List<Block> ravagerGriefableBlocks = new ArrayList<>();
public boolean ravagerAlwaysDropExp = false;
@@ -29,7 +29,7 @@ index e58de3cdd77fdb64db93b15192705148d621407a..3bcbf5e2dbb991a8416d827ddfe59e04
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
@@ -2505,6 +2506,7 @@ public class PurpurWorldConfig {
@@ -2501,6 +2502,7 @@ public class PurpurWorldConfig {
}
});
ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] config for startup commands
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 96902343e202617413672ddb609e4b91713e5b94..d78cb68c3a53b277aa26186062efc716c8f80f36 100644
index 195f5fa4f01a3c835bbb98e8aaf3d5666118daf5..c069393863937cbd37718ab5a93c97a63acd79dd 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1272,6 +1272,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1258,6 +1258,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Purpur end
@@ -27,10 +27,10 @@ index 96902343e202617413672ddb609e4b91713e5b94..d78cb68c3a53b277aa26186062efc716
long i;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index e7ef546de2259a3969a63765d951a36e37a548c3..e4eac421efaafd66c5fa020f6a8fa6326a1c33cc 100644
index c1f14b11dbd472bc84993156d41a777167ec9ad7..86e3983ff899bebbdc14493ac6b37b2371134e13 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -588,4 +588,16 @@ public class PurpurConfig {
@@ -586,4 +586,16 @@ public class PurpurConfig {
private static void registerMinecraftDebugCommands() {
registerMinecraftDebugCommands = getBoolean("settings.register-minecraft-debug-commands", registerMinecraftDebugCommands);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config to reverse bubble column flow
diff --git a/src/main/java/net/minecraft/world/level/block/BubbleColumnBlock.java b/src/main/java/net/minecraft/world/level/block/BubbleColumnBlock.java
index 4c1f20fafdbd86011959cc2d4983b6c2f8e87a5f..78679c2c26a36cf08cf3ffe78617d97d3439e14c 100644
index 385da0585f409ee453f10d45f5837cdc09adc21b..c65016cba376a41c267fb4b6499ec0a263851558 100644
--- a/src/main/java/net/minecraft/world/level/block/BubbleColumnBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BubbleColumnBlock.java
@@ -122,10 +122,10 @@ public class BubbleColumnBlock extends Block implements BucketPickup {
@@ -123,10 +123,10 @@ public class BubbleColumnBlock extends Block implements BucketPickup {
if (state.is(Blocks.BUBBLE_COLUMN)) {
return state;
} else if (state.is(Blocks.SOUL_SAND)) {
@@ -22,7 +22,7 @@ index 4c1f20fafdbd86011959cc2d4983b6c2f8e87a5f..78679c2c26a36cf08cf3ffe78617d97d
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index e4eac421efaafd66c5fa020f6a8fa6326a1c33cc..09f83c13c2e89772766e1d59dc32f33bc6611041 100644
index 86e3983ff899bebbdc14493ac6b37b2371134e13..aa23302af702f422b8686c5dbdb29cba5e44e3d5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -343,6 +343,8 @@ public class PurpurConfig {
@@ -42,4 +42,4 @@ index e4eac421efaafd66c5fa020f6a8fa6326a1c33cc..09f83c13c2e89772766e1d59dc32f33b
+ soulSandBlockReverseBubbleColumnFlow = getBoolean("settings.blocks.soul-sand.reverse-bubble-column-flow", soulSandBlockReverseBubbleColumnFlow);
}
public static boolean allowShearsLooting = false;
public static boolean allowInapplicableEnchants = false;

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fire EntityTeleportHinderedEvent when attempting to teleport
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 1dd883ac37389b67a380680b868e665daef3938e..173e4a075078af67f030750c9a6294ab3f796677 100644
index 820ddd8114af64d72fcf0b8757f2058c909956c8..9db85096974bd16140b8f58bacb0a2b79d9edd89 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1462,6 +1462,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1480,6 +1480,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] ItemStack convenience methods
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
index 6081c588c61406d0d21a15e8e6140d5d5240f0a8..52811706808f3adff16fb0e969ebbcae36c609c3 100644
index 756c73a401437566258813946fa10c7caa8f2469..2b6f9fce59178525b1211f2133645a7991a146dd 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java
@@ -514,4 +514,285 @@ public final class CraftItemStack extends ItemStack {
@@ -526,4 +526,285 @@ public final class CraftItemStack extends ItemStack {
return this.pdcView;
}
// Paper end - pdc