Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9088)

Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
5efeb7bd Also update compiler version
c13b867a Update some Maven plugin versions
deb28d9f PR-837: Add more bell API
e938d62a PR-819: Allow Player#sendBlockDamage() to specify a source entity
0e75532c PR-818: Add more Guardian API, particularly for its laser
a10155aa PR-839: Add BlockData#rotate and BlockData#mirror
77e690b4 PR-836: Add missing API for explosive minecarts
60722059 PR-832: Allow getting chunks without generating them and optimize chunk data request for ungenerated chunks
0a2c4b4b PR-834: Add Player#sendHurtAnimation()

CraftBukkit Changes:
be8682aa8 Also update compiler version
08e305f5b Update some Maven plugin versions
187bdd463 PR-1160: Add more bell API
2f8e5bc7c PR-1145: Allow Player#sendBlockDamage() to specify a source entity
bcbb61b36 PR-1144: Add more Guardian API, particularly for its laser
722ddff6d PR-1162: Add BlockData#rotate and BlockData#mirror
80998277c PR-1159: Add missing API for explosive minecarts
1fddefce1 PR-1155: Allow getting chunks without generating them and optimize chunk data request for ungenerated chunks
20e8a486f PR-1157: Add Player#sendHurtAnimation()

Spigot Changes:
b31949f2 Rebuild patches
This commit is contained in:
Jake Potrebic 2023-04-07 11:39:13 -07:00 committed by GitHub
parent ad6c14c62e
commit 29b17a892d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
274 changed files with 557 additions and 771 deletions

View file

@ -171,10 +171,10 @@ index 0000000000000000000000000000000000000000..e090175d2fbe8eba664500feafc29c05
+}
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 9c1719f6931450637a93f64fd2b43b2cd00929a0..0000000000000000000000000000000000000000
index 67ae7c25ee4e007e1fdfb3ac37687e1bd8ab58ca..0000000000000000000000000000000000000000
--- a/pom.xml
+++ /dev/null
@@ -1,585 +0,0 @@
@@ -1,587 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
@ -505,7 +505,7 @@ index 9c1719f6931450637a93f64fd2b43b2cd00929a0..00000000000000000000000000000000
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>3.2.2</version>
- <version>3.3.0</version>
- <configuration>
- <archive>
- <manifest>
@ -623,7 +623,7 @@ index 9c1719f6931450637a93f64fd2b43b2cd00929a0..00000000000000000000000000000000
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>3.3.0</version>
- <version>3.5.0</version>
- <executions>
- <execution>
- <phase>package</phase>
@ -650,23 +650,25 @@ index 9c1719f6931450637a93f64fd2b43b2cd00929a0..00000000000000000000000000000000
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.10.1</version>
- <version>3.11.0</version>
- <configuration>
- <!-- we use the Eclipse compiler as it doesn't need a JDK -->
- <compilerId>eclipse</compilerId>
- <!-- default changed with version 3.11.0 -->
- <showWarnings>false</showWarnings>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-compiler-eclipse</artifactId>
- <version>2.12.0</version>
- <version>2.13.0</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.12.4</version>
- <version>3.0.0</version>
- <configuration>
- <workingDirectory>${basedir}/target/test-server</workingDirectory>
- <excludes>
@ -695,7 +697,7 @@ index 9c1719f6931450637a93f64fd2b43b2cd00929a0..00000000000000000000000000000000
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <version>3.1.2</version>
- <version>3.2.1</version>
- <executions>
- <execution>
- <phase>test-compile</phase>

View file

@ -7059,7 +7059,7 @@ index db6a64ae4437b76c39e7ddb02adbea27c95fde78..3fdbb777d4722596cc4df79b2d4d7b9c
this.levelHeightAccessor = heightLimitView;
this.sections = new LevelChunkSection[heightLimitView.getSectionsCount()];
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 802a927de07b5ebcdd41bf3dc75c53eca582f1df..0307083079c0a257ecb82b8cb4fb8f91af3816bc 100644
index 876d52861880d405bfc718a38113cd2bdfb1d447..bedafac1c29f4b2a820822b01814b871f88528d4 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -25,6 +25,7 @@ import net.minecraft.nbt.CompoundTag;
@ -7070,8 +7070,8 @@ index 802a927de07b5ebcdd41bf3dc75c53eca582f1df..0307083079c0a257ecb82b8cb4fb8f91
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.profiling.ProfilerFiller;
import net.minecraft.world.entity.Entity;
@@ -124,6 +125,109 @@ public class LevelChunk extends ChunkAccess {
@@ -117,6 +118,109 @@ public class LevelChunk extends ChunkAccess {
public boolean needsDecoration;
// CraftBukkit end
+ // Paper start
@ -7180,7 +7180,7 @@ index 802a927de07b5ebcdd41bf3dc75c53eca582f1df..0307083079c0a257ecb82b8cb4fb8f91
public LevelChunk(ServerLevel world, ProtoChunk protoChunk, @Nullable LevelChunk.PostLoadProcessor entityLoader) {
this(world, protoChunk.getPos(), protoChunk.getUpgradeData(), protoChunk.unpackBlockTicks(), protoChunk.unpackFluidTicks(), protoChunk.getInhabitedTime(), protoChunk.getSections(), entityLoader, protoChunk.getBlendingData());
Iterator iterator = protoChunk.getBlockEntities().values().iterator();
@@ -233,6 +337,18 @@ public class LevelChunk extends ChunkAccess {
@@ -226,6 +330,18 @@ public class LevelChunk extends ChunkAccess {
}
}
@ -7199,7 +7199,7 @@ index 802a927de07b5ebcdd41bf3dc75c53eca582f1df..0307083079c0a257ecb82b8cb4fb8f91
@Override
public FluidState getFluidState(BlockPos pos) {
return this.getFluidState(pos.getX(), pos.getY(), pos.getZ());
@@ -354,6 +470,7 @@ public class LevelChunk extends ChunkAccess {
@@ -347,6 +463,7 @@ public class LevelChunk extends ChunkAccess {
return this.getBlockEntity(pos, LevelChunk.EntityCreationType.CHECK);
}
@ -7207,7 +7207,7 @@ index 802a927de07b5ebcdd41bf3dc75c53eca582f1df..0307083079c0a257ecb82b8cb4fb8f91
@Nullable
public BlockEntity getBlockEntity(BlockPos pos, LevelChunk.EntityCreationType creationType) {
// CraftBukkit start
@@ -535,7 +652,25 @@ public class LevelChunk extends ChunkAccess {
@@ -528,7 +645,25 @@ public class LevelChunk extends ChunkAccess {
// CraftBukkit start
public void loadCallback() {
@ -7233,7 +7233,7 @@ index 802a927de07b5ebcdd41bf3dc75c53eca582f1df..0307083079c0a257ecb82b8cb4fb8f91
if (server != null) {
/*
* If it's a new world, the first few chunks are generated inside
@@ -574,6 +709,22 @@ public class LevelChunk extends ChunkAccess {
@@ -569,6 +704,22 @@ public class LevelChunk extends ChunkAccess {
server.getPluginManager().callEvent(unloadEvent);
// note: saving can be prevented, but not forced if no saving is actually required
this.mustNotSave = !unloadEvent.isSaveChunk();
@ -7303,21 +7303,21 @@ index f66369ddaeab5c5ac643c0979dac3ed21337ff71..038abf2ac104ceecaab11b10d466ea69
return false;
} else {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index b685b6064a32884e5617f2debb7ea10159d9ce0d..3b9e42adb657d0feb99de4b55dc0c628e9cd5afd 100644
index 5e36e5af2f6e5a705f36105d4ffed8d142886f6f..9a033c136062c43e6db8107fdff059a6807aed02 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -233,8 +233,8 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -245,8 +245,8 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public Chunk[] getLoadedChunks() {
- Long2ObjectLinkedOpenHashMap<ChunkHolder> chunks = this.world.getChunkSource().chunkMap.visibleChunkMap;
- return chunks.values().stream().map(ChunkHolder::getFullChunkNow).filter(Objects::nonNull).map(net.minecraft.world.level.chunk.LevelChunk::getBukkitChunk).toArray(Chunk[]::new);
- return chunks.values().stream().map(ChunkHolder::getFullChunkNow).filter(Objects::nonNull).map(CraftChunk::new).toArray(Chunk[]::new);
+ List<ChunkHolder> chunks = io.papermc.paper.chunk.system.ChunkSystem.getVisibleChunkHolders(this.world); // Paper
+ return chunks.stream().map(ChunkHolder::getFullChunkNow).filter(Objects::nonNull).map(net.minecraft.world.level.chunk.LevelChunk::getBukkitChunk).toArray(Chunk[]::new);
+ return chunks.stream().map(ChunkHolder::getFullChunkNow).filter(Objects::nonNull).map(CraftChunk::new).toArray(Chunk[]::new);
}
@Override
@@ -309,7 +309,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -321,7 +321,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean refreshChunk(int x, int z) {
@ -7326,7 +7326,7 @@ index b685b6064a32884e5617f2debb7ea10159d9ce0d..3b9e42adb657d0feb99de4b55dc0c628
if (playerChunk == null) return false;
playerChunk.getTickingChunkFuture().thenAccept(either -> {
@@ -1959,4 +1959,32 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1970,4 +1970,32 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return this.spigot;
}
// Spigot end
@ -7335,7 +7335,7 @@ index b685b6064a32884e5617f2debb7ea10159d9ce0d..3b9e42adb657d0feb99de4b55dc0c628
+ if (Bukkit.isPrimaryThread()) {
+ net.minecraft.world.level.chunk.LevelChunk immediate = this.world.getChunkSource().getChunkAtIfLoadedImmediately(x, z);
+ if (immediate != null) {
+ return java.util.concurrent.CompletableFuture.completedFuture(immediate.getBukkitChunk());
+ return java.util.concurrent.CompletableFuture.completedFuture(new CraftChunk(immediate));
+ }
+ }
+
@ -7351,7 +7351,7 @@ index b685b6064a32884e5617f2debb7ea10159d9ce0d..3b9e42adb657d0feb99de4b55dc0c628
+ io.papermc.paper.chunk.system.ChunkSystem.scheduleChunkLoad(this.getHandle(), x, z, gen, ChunkStatus.FULL, true, priority, (c) -> {
+ net.minecraft.server.MinecraftServer.getServer().scheduleOnMain(() -> {
+ net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk)c;
+ ret.complete(chunk == null ? null : chunk.getBukkitChunk());
+ ret.complete(chunk == null ? null : new CraftChunk(chunk));
+ });
+ });
+

View file

@ -2958,10 +2958,10 @@ index 059ba63319f6ca04750a7d6b095e6179cae68b4f..cb2dc6db887856c5f60d127f5999a078
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 3b9e42adb657d0feb99de4b55dc0c628e9cd5afd..253f965e52cd488af88d55cdd09f1bad0ddbeb56 100644
index 9a033c136062c43e6db8107fdff059a6807aed02..4186943ba9e94758d579477e8fadaf8e05ef93f3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -149,6 +149,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -150,6 +150,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
private final BlockMetadataStore blockMetadata = new BlockMetadataStore(this);
private final Object2IntOpenHashMap<SpawnCategory> spawnCategoryLimit = new Object2IntOpenHashMap<>();
private final CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(CraftWorld.DATA_TYPE_REGISTRY);
@ -2969,7 +2969,7 @@ index 3b9e42adb657d0feb99de4b55dc0c628e9cd5afd..253f965e52cd488af88d55cdd09f1bad
private static final Random rand = new Random();
@@ -1986,5 +1987,18 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1997,5 +1998,18 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return ret;
}
@ -3471,10 +3471,10 @@ index 446fdca49a5a6999626a7ee3a1d5c168b15a09dd..f9863e138994f6c7a7975a852f106faa
public boolean isOp() {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b670c41abf 100644
index f8e659dcf69705ab54bc3f47e2ca95d0419c65e4..ba2853ae514e31bf46a72e2f845c8edf206a4d55 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -278,14 +278,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -279,14 +279,39 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getDisplayName() {
@ -3514,7 +3514,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
@Override
public String getPlayerListName() {
return this.getHandle().listName == null ? getName() : CraftChatMessage.fromComponent(this.getHandle().listName);
@@ -304,42 +329,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -305,42 +330,42 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@ -3566,7 +3566,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
this.getHandle().connection.send(packet);
}
@@ -371,6 +396,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -372,6 +397,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.disconnect(message == null ? "" : message);
}
@ -3590,7 +3590,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
@Override
public void setCompassTarget(Location loc) {
if (this.getHandle().connection == null) return;
@@ -684,6 +726,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -700,6 +742,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
@ -3626,7 +3626,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
@Override
public void sendSignChange(Location loc, String[] lines) {
this.sendSignChange(loc, lines, DyeColor.BLACK);
@@ -711,14 +782,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -727,14 +798,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
Component[] components = CraftSign.sanitizeLines(lines);
@ -3644,7 +3644,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
}
@Override
@@ -1586,7 +1658,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1616,7 +1688,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url) {
@ -3653,7 +3653,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
}
@Override
@@ -1601,7 +1673,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1631,7 +1703,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setResourcePack(String url, byte[] hash, boolean force) {
@ -3662,7 +3662,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
}
@Override
@@ -1617,6 +1689,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1647,6 +1719,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}
@ -3684,7 +3684,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
public void addChannel(String channel) {
Preconditions.checkState(this.channels.size() < 128, "Cannot register channel '%s'. Too many channels registered!", channel);
channel = StandardMessenger.validateAndCorrectChannel(channel);
@@ -2021,6 +2108,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2051,6 +2138,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return (this.getHandle().clientViewDistance == null) ? Bukkit.getViewDistance() : this.getHandle().clientViewDistance;
}
@ -3697,7 +3697,7 @@ index 4a82ab70a1fd8027af67e7eb5b507c7c2236819a..d7767d86d14df2529f1c17f4e3e0d0b6
@Override
public int getPing() {
return this.getHandle().latency;
@@ -2066,6 +2159,254 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2096,6 +2189,254 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().allowsListing();
}
@ -3975,10 +3975,10 @@ index b7f54a7d90a2a34e641f152eb8f5c3c62033e511..2d04443a9efd6e4b5eb1e360a727d849
@Override
public int getLineWidth() {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 5e02ea662a1307b2718811bab98ed0d6d17edd87..54a9a630ca1aa3cabc9aa29ba7d9e516c0f88a00 100644
index c1a3f7b281ecc1551dd51faac046e02064a72afe..9bf4b8865237fd2555ed0e4b2e619afd7dc6845e 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -820,9 +820,9 @@ public class CraftEventFactory {
@@ -836,9 +836,9 @@ public class CraftEventFactory {
return event;
}
@ -3990,7 +3990,7 @@ index 5e02ea662a1307b2718811bab98ed0d6d17edd87..54a9a630ca1aa3cabc9aa29ba7d9e516
event.setKeepInventory(keepInventory);
event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel
org.bukkit.World world = entity.getWorld();
@@ -847,7 +847,7 @@ public class CraftEventFactory {
@@ -863,7 +863,7 @@ public class CraftEventFactory {
* Server methods
*/
public static ServerListPingEvent callServerListPingEvent(Server craftServer, InetAddress address, String motd, int numPlayers, int maxPlayers) {

View file

@ -1586,21 +1586,21 @@ index c02fa35cefc9194d1838abbe4f2dc2b226a41e41..b300d12e9e00519028b53aca9c3fb01f
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
public CraftPersistentDataContainer persistentDataContainer;
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 0307083079c0a257ecb82b8cb4fb8f91af3816bc..8e11ca5e8cc43a27482a1794d843359d7428bdde 100644
index bedafac1c29f4b2a820822b01814b871f88528d4..13202fc9f73f3485328b923de8c1e6080f08e773 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -680,6 +680,7 @@ public class LevelChunk extends ChunkAccess {
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration));
@@ -674,6 +674,7 @@ public class LevelChunk extends ChunkAccess {
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(bukkitChunk, this.needsDecoration));
if (this.needsDecoration) {
+ try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper
this.needsDecoration = false;
java.util.Random random = new java.util.Random();
random.setSeed(this.level.getSeed());
@@ -699,6 +700,7 @@ public class LevelChunk extends ChunkAccess {
@@ -693,6 +694,7 @@ public class LevelChunk extends ChunkAccess {
}
}
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(this.bukkitChunk));
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkPopulateEvent(bukkitChunk));
+ } // Paper
}
}
@ -1846,10 +1846,10 @@ index b0ffa23faf62629043dfd613315eaf9c5fcc2cfe..00000000000000000000000000000000
- }
-}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index d7767d86d14df2529f1c17f4e3e0d0b670c41abf..a983573269d5e575c845df3a566d147668ccd86b 100644
index ba2853ae514e31bf46a72e2f845c8edf206a4d55..67cfa69c73c04931a190918c17a1cd5f9cb006c6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2492,6 +2492,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2522,6 +2522,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
CraftPlayer.this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(components, position == net.md_5.bungee.api.ChatMessageType.ACTION_BAR));
}

View file

@ -5023,7 +5023,7 @@ index 80b98e6667f1a0c21d019c58a8a0d4cc5b0f48e1..8033c8741a0f73919a357893652592b3
super(wrapped.getPos(), UpgradeData.EMPTY, wrapped.levelHeightAccessor, wrapped.getLevel().registryAccess().registryOrThrow(Registries.BIOME), wrapped.getBlendingData());
this.wrapped = wrapped;
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 8e11ca5e8cc43a27482a1794d843359d7428bdde..2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7 100644
index 13202fc9f73f3485328b923de8c1e6080f08e773..975973e858ceb8340d2fdad54f636627d16612fd 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -93,6 +93,10 @@ public class LevelChunk extends ChunkAccess {
@ -5037,7 +5037,7 @@ index 8e11ca5e8cc43a27482a1794d843359d7428bdde..2753e2a1991ec39f03c2a81f3262f94f
this.tickersInLevel = Maps.newHashMap();
this.clientLightReady = false;
this.level = (ServerLevel) world; // CraftBukkit - type
@@ -230,6 +234,12 @@ public class LevelChunk extends ChunkAccess {
@@ -223,6 +227,12 @@ public class LevelChunk extends ChunkAccess {
public LevelChunk(ServerLevel world, ProtoChunk protoChunk, @Nullable LevelChunk.PostLoadProcessor entityLoader) {
this(world, protoChunk.getPos(), protoChunk.getUpgradeData(), protoChunk.unpackBlockTicks(), protoChunk.unpackFluidTicks(), protoChunk.getInhabitedTime(), protoChunk.getSections(), entityLoader, protoChunk.getBlendingData());

View file

@ -16695,10 +16695,10 @@ index e2278ed457a7342d0d1b1a5fc1b5bdef6358816b..71df7c590e31932f2b8fc26a2afaaa54
public int getIndex() {
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 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244ffedb505 100644
index 975973e858ceb8340d2fdad54f636627d16612fd..a17ea775afb51dd31871a66a1b6f9f623dd7751a 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -183,6 +183,43 @@ public class LevelChunk extends ChunkAccess {
@@ -176,6 +176,43 @@ public class LevelChunk extends ChunkAccess {
protected void onNeighbourChange(final long bitsetBefore, final long bitsetAfter) {
@ -16742,7 +16742,7 @@ index 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244
}
public final boolean isAnyNeighborsLoaded() {
@@ -660,9 +697,26 @@ public class LevelChunk extends ChunkAccess {
@@ -653,9 +690,26 @@ public class LevelChunk extends ChunkAccess {
}
@ -16772,7 +16772,7 @@ index 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244
int chunkX = this.chunkPos.x;
int chunkZ = this.chunkPos.z;
ServerChunkCache chunkProvider = this.level.getChunkSource();
@@ -677,10 +731,56 @@ public class LevelChunk extends ChunkAccess {
@@ -670,10 +724,56 @@ public class LevelChunk extends ChunkAccess {
}
}
this.setNeighbourLoaded(0, 0, this);
@ -16831,27 +16831,28 @@ index 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244
if (server != null) {
/*
* If it's a new world, the first few chunks are generated inside
@@ -688,6 +788,7 @@ public class LevelChunk extends ChunkAccess {
* no way of creating a CraftWorld/CraftServer at that point.
@@ -682,6 +782,7 @@ public class LevelChunk extends ChunkAccess {
*/
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(this.bukkitChunk, this.needsDecoration));
org.bukkit.Chunk bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this);
server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(bukkitChunk, this.needsDecoration));
+ this.chunkHolder.getEntityChunk().callEntitiesLoadEvent(); // Paper - rewrite chunk system
if (this.needsDecoration) {
try (co.aikar.timings.Timing ignored = this.level.timings.chunkLoadPopulate.startTiming()) { // Paper
@@ -716,8 +817,10 @@ public class LevelChunk extends ChunkAccess {
@@ -710,9 +811,11 @@ public class LevelChunk extends ChunkAccess {
}
public void unloadCallback() {
+ if (!this.loadedTicketLevel) { LOGGER.error("Double calling chunk unload!", new Throwable()); } // Paper
org.bukkit.Server server = this.level.getCraftServer();
- org.bukkit.event.world.ChunkUnloadEvent unloadEvent = new org.bukkit.event.world.ChunkUnloadEvent(this.bukkitChunk, this.isUnsaved());
+ this.chunkHolder.getEntityChunk().callEntitiesUnloadEvent(); // Paper - rewrite chunk system
+ org.bukkit.event.world.ChunkUnloadEvent unloadEvent = new org.bukkit.event.world.ChunkUnloadEvent(this.bukkitChunk, true); // Paper - rewrite chunk system - force save to true so that mustNotSave is correctly set below
org.bukkit.Chunk bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this);
- org.bukkit.event.world.ChunkUnloadEvent unloadEvent = new org.bukkit.event.world.ChunkUnloadEvent(bukkitChunk, this.isUnsaved());
+ org.bukkit.event.world.ChunkUnloadEvent unloadEvent = new org.bukkit.event.world.ChunkUnloadEvent(bukkitChunk, true); // Paper - rewrite chunk system - force save to true so that mustNotSave is correctly set below
server.getPluginManager().callEvent(unloadEvent);
// note: saving can be prevented, but not forced if no saving is actually required
this.mustNotSave = !unloadEvent.isSaveChunk();
@@ -739,9 +842,26 @@ public class LevelChunk extends ChunkAccess {
@@ -734,9 +837,26 @@ public class LevelChunk extends ChunkAccess {
// Paper end
}
@ -16879,7 +16880,7 @@ index 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244
}
// CraftBukkit end
@@ -816,7 +936,10 @@ public class LevelChunk extends ChunkAccess {
@@ -811,7 +931,10 @@ public class LevelChunk extends ChunkAccess {
});
}
@ -16890,7 +16891,7 @@ index 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244
ChunkPos chunkcoordintpair = this.getPos();
for (int i = 0; i < this.postProcessing.length; ++i) {
@@ -854,6 +977,11 @@ public class LevelChunk extends ChunkAccess {
@@ -849,6 +972,11 @@ public class LevelChunk extends ChunkAccess {
this.pendingBlockEntities.clear();
this.upgradeData.upgrade(this);
@ -16902,7 +16903,7 @@ index 2753e2a1991ec39f03c2a81f3262f94f0e3fe9a7..b696638d63998c6dde6df700fd5c9244
}
@Nullable
@@ -903,7 +1031,7 @@ public class LevelChunk extends ChunkAccess {
@@ -898,7 +1026,7 @@ public class LevelChunk extends ChunkAccess {
}
public ChunkHolder.FullChunkStatus getFullStatus() {
@ -17780,10 +17781,10 @@ index 9f6c2e5b5d9e8d714a47c770e255d06c0ef7c190..ac807277a6b26d140ea9873d17c7aa4f
for(SavedTick<T> savedTick : this.pendingTicks) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 738d3ce38a42ff8cd53eec042ef8bc74f2b8d059..a895c81ea6af0822c8371ae93cfe4b72d419439d 100644
index 1a4963804182e4ba1cae5d6eee2ac50f8fa0052a..1889e53161a2b17b32e838b5bc1cbda820b28619 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -120,7 +120,7 @@ public class CraftChunk implements Chunk {
@@ -103,7 +103,7 @@ public class CraftChunk implements Chunk {
@Override
public boolean isEntitiesLoaded() {
@ -17792,7 +17793,7 @@ index 738d3ce38a42ff8cd53eec042ef8bc74f2b8d059..a895c81ea6af0822c8371ae93cfe4b72
}
@Override
@@ -129,51 +129,7 @@ public class CraftChunk implements Chunk {
@@ -112,51 +112,7 @@ public class CraftChunk implements Chunk {
this.getWorld().getChunkAt(x, z); // Transient load for this tick
}
@ -17846,7 +17847,7 @@ index 738d3ce38a42ff8cd53eec042ef8bc74f2b8d059..a895c81ea6af0822c8371ae93cfe4b72
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 36c1fd2987843d74b6f8f5711e77d67565f25c5b..cfae708f784546be04e4cedbc707c7b35aa40a46 100644
index 394d8631cb0a143cc7b5d71c919a8298652d5678..cd667805a4ace3edc88a8ff11369fd169e5614e3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1124,7 +1124,7 @@ public final class CraftServer implements Server {
@ -17877,10 +17878,10 @@ index 36c1fd2987843d74b6f8f5711e77d67565f25c5b..cfae708f784546be04e4cedbc707c7b3
// Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 253f965e52cd488af88d55cdd09f1bad0ddbeb56..30137f60a3796cf845e8fd7bd3c291be979b8b0c 100644
index 4186943ba9e94758d579477e8fadaf8e05ef93f3..1684b3ee1b51597e799486bbe129b344a9fe3098 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -313,10 +313,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -325,10 +325,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z));
if (playerChunk == null) return false;
@ -17898,7 +17899,7 @@ index 253f965e52cd488af88d55cdd09f1bad0ddbeb56..30137f60a3796cf845e8fd7bd3c291be
ClientboundLevelChunkWithLightPacket refreshPacket = new ClientboundLevelChunkWithLightPacket(chunk, this.world.getLightEngine(), null, null, true);
for (ServerPlayer player : playersInRange) {
@@ -324,8 +328,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -336,8 +340,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
player.connection.send(refreshPacket);
}
@ -17908,7 +17909,7 @@ index 253f965e52cd488af88d55cdd09f1bad0ddbeb56..30137f60a3796cf845e8fd7bd3c291be
return true;
}
@@ -403,20 +406,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -414,20 +417,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public Collection<Plugin> getPluginChunkTickets(int x, int z) {
DistanceManager chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager;
@ -17930,7 +17931,7 @@ index 253f965e52cd488af88d55cdd09f1bad0ddbeb56..30137f60a3796cf845e8fd7bd3c291be
}
@Override
@@ -424,7 +414,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -435,7 +425,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Map<Plugin, ImmutableList.Builder<Chunk>> ret = new HashMap<>();
DistanceManager chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager;
@ -17939,7 +17940,7 @@ index 253f965e52cd488af88d55cdd09f1bad0ddbeb56..30137f60a3796cf845e8fd7bd3c291be
long chunkKey = chunkTickets.getLongKey();
SortedArraySet<Ticket<?>> tickets = chunkTickets.getValue();
@@ -1920,14 +1910,53 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1931,14 +1921,53 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Spigot start
@Override
public int getViewDistance() {
@ -17996,10 +17997,10 @@ index 253f965e52cd488af88d55cdd09f1bad0ddbeb56..30137f60a3796cf845e8fd7bd3c291be
// Spigot start
private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index a983573269d5e575c845df3a566d147668ccd86b..feb848813b80acb527e981b653208350639c97cc 100644
index 67cfa69c73c04931a190918c17a1cd5f9cb006c6..83471457a723a41141d06f0fd11a042d6e5d7918 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -177,6 +177,81 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -178,6 +178,81 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.firstPlayed = System.currentTimeMillis();
}

View file

@ -137,10 +137,10 @@ index be6e3e21ad62da01e5e2dd78e300cbc8efdbeb42..ea98625fe7c00743b8df74a24e6d4b75
for(Player player : this.players()) {
if (EntitySelector.NO_SPECTATORS.test(player) && EntitySelector.LIVING_ENTITY_STILL_ALIVE.test(player)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index feb848813b80acb527e981b653208350639c97cc..72ec95cc014de2ac44e3d27b90e7544cb58c2ee4 100644
index 83471457a723a41141d06f0fd11a042d6e5d7918..de288116429c7ee87ba2e180e3e39855feee27f5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2197,8 +2197,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2227,8 +2227,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {
return this.getHandle().locale;

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Only refresh abilities if needed
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 72ec95cc014de2ac44e3d27b90e7544cb58c2ee4..cbefc896cf9e2d8899bb78f694bc1ab64082d0eb 100644
index de288116429c7ee87ba2e180e3e39855feee27f5..1e710c73c45fc34d2809e75b5e43c32e1cd7c7f1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1866,12 +1866,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1896,12 +1896,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setFlying(boolean value) {

View file

@ -44,10 +44,10 @@ index b300d12e9e00519028b53aca9c3fb01f589eaa91..63acd109a79ed752a05df3d4f1b99309
}
}
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 b696638d63998c6dde6df700fd5c9244ffedb505..f30a5bd3c954afa063bf85d9d91340bd017cf896 100644
index a17ea775afb51dd31871a66a1b6f9f623dd7751a..8254e72595ae5c1ddf5cf969570d83758b744c7b 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -1196,11 +1196,11 @@ public class LevelChunk extends ChunkAccess {
@@ -1191,11 +1191,11 @@ public class LevelChunk extends ChunkAccess {
gameprofilerfiller.pop();
} catch (Throwable throwable) {

View file

@ -30,10 +30,10 @@ index edb8537e4fdd82991eda914a7d5c3ff6ef773fe0..e1b545cda20f5f165497b751044ff323
this.locale = packet.language;
// Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index cbefc896cf9e2d8899bb78f694bc1ab64082d0eb..7eec465d1997dabc57be5731ff6488839d860dea 100644
index 1e710c73c45fc34d2809e75b5e43c32e1cd7c7f1..7a2db8458cffd98e8324da101a27b3aee20bbeed 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2197,8 +2197,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2227,8 +2227,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public String getLocale() {

View file

@ -21,7 +21,7 @@ character.
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 504f3ddca160797a13a39bc813eb12322359ce50..30a6be5487e0bff49d134c5dcae520071763d2ac 100644
index c1db84d0ed569dd44d1f54cca227f77890e0f66a..026b43e74d99d7b5a971e4de996a30f02d0f8d24 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2034,7 +2034,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@ -74,7 +74,7 @@ index 504f3ddca160797a13a39bc813eb12322359ce50..30a6be5487e0bff49d134c5dcae52007
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 07536b696f734fb9e8d0abe1f414ae536610f9ce..a8a9e109b11d124a2018857d0d13c1aacabfa37a 100644
index 77b8b4d56883dcf672af82189da75ddef7c935a2..af2d401c3faa14664732c001a1ea59f61683374e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -852,6 +852,28 @@ public final class CraftServer implements Server {
@ -107,10 +107,10 @@ index 07536b696f734fb9e8d0abe1f414ae536610f9ce..a8a9e109b11d124a2018857d0d13c1aa
return true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 10572393e1c45ed277f56e3f8978f73a02eed4c4..c0e3ac7448f50d861914c18a44537882f24709dd 100644
index 7a2db8458cffd98e8324da101a27b3aee20bbeed..34aca43bf55be421755dd5aff7abc5a833e08ce7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -505,7 +505,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -506,7 +506,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void chat(String msg) {
if (this.getHandle().connection == null) return;

View file

@ -18,10 +18,10 @@ index ca1d97d6eeea2b0fd2a9b90624ca083026f549de..02aca470c3b41114204da54e2365ee29
if (random.nextInt(10) == 0 && flag && pos.getY() < 40) {
return checkMobSpawnRules(type, world, spawnReason, pos, random);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index a895c81ea6af0822c8371ae93cfe4b72d419439d..e4a533ace96829414844607a013831dba7a1e73e 100644
index 1889e53161a2b17b32e838b5bc1cbda820b28619..579f96e6778abe1c565ee359b79cca96a43ae600 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -177,7 +177,7 @@ public class CraftChunk implements Chunk {
@@ -161,7 +161,7 @@ public class CraftChunk implements Chunk {
@Override
public boolean isSlimeChunk() {
// 987234911L is deterimined in EntitySlime when seeing if a slime can spawn in a chunk

View file

@ -63,7 +63,7 @@ index bd808eb312ade7122973a47f4b96505829511da5..bf0f9cab7c66c089f35b851e799ba4a4
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index c0e3ac7448f50d861914c18a44537882f24709dd..ebbf77b1620a08ecee8917cd6a8f6beee69a645a 100644
index 34aca43bf55be421755dd5aff7abc5a833e08ce7..3429595e2a28bda3430ac198e60798374a7fc051 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1,5 +1,6 @@
@ -73,7 +73,7 @@ index c0e3ac7448f50d861914c18a44537882f24709dd..ebbf77b1620a08ecee8917cd6a8f6bee
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.BaseEncoding;
@@ -351,6 +352,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -352,6 +353,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}

View file

@ -16,10 +16,10 @@ The wanted destination was on top of the emerald block however the player ended
This only is the case if the player is teleporting between worlds.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index ebbf77b1620a08ecee8917cd6a8f6beee69a645a..120461eb5d4129453ccff4304b376045ccf6f2e7 100644
index 3429595e2a28bda3430ac198e60798374a7fc051..41753aff6c12c9ceb142b886c35a62bd86e430e7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1178,7 +1178,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1208,7 +1208,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (fromWorld == toWorld) {
entity.connection.teleport(to);
} else {

View file

@ -131,7 +131,7 @@ index f1675e35be0ab7670c875c6b0d1e982a3ae09d1e..b2bb9bbd3af414c50ec3f8e3e171a679
}
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 f30a5bd3c954afa063bf85d9d91340bd017cf896..58048d90a66cf3291a31d7c1f13ae66eac04ed64 100644
index 8254e72595ae5c1ddf5cf969570d83758b744c7b..03f7394057c927f55fa962a65988d03553c6a642 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -1,6 +1,7 @@
@ -142,7 +142,7 @@ index f30a5bd3c954afa063bf85d9d91340bd017cf896..58048d90a66cf3291a31d7c1f13ae66e
import com.google.common.collect.Maps;
import com.google.common.collect.UnmodifiableIterator;
import com.mojang.logging.LogUtils;
@@ -605,10 +606,16 @@ public class LevelChunk extends ChunkAccess {
@@ -598,10 +599,16 @@ public class LevelChunk extends ChunkAccess {
// CraftBukkit start
} else {
@ -163,7 +163,7 @@ index f30a5bd3c954afa063bf85d9d91340bd017cf896..58048d90a66cf3291a31d7c1f13ae66e
// CraftBukkit end
}
}
@@ -1199,6 +1206,7 @@ public class LevelChunk extends ChunkAccess {
@@ -1194,6 +1201,7 @@ public class LevelChunk extends ChunkAccess {
// Paper start - Prevent tile entity and entity crashes
final String msg = String.format("BlockEntity threw exception at %s:%s,%s,%s", LevelChunk.this.getLevel().getWorld().getName(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ());
net.minecraft.server.MinecraftServer.LOGGER.error(msg, throwable);

View file

@ -23,10 +23,10 @@ index 026b43e74d99d7b5a971e4de996a30f02d0f8d24..cf905220ac5bbce62e5e061f0dfc9690
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 238bef8e1e9f1e932476b3bbcc9258bca4adbb08..e46023675573e42e6bd510ddaa4bfc470536136f 100644
index 41753aff6c12c9ceb142b886c35a62bd86e430e7..be1f40a40d805f2e7cde39d5636a9fc793718b93 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -153,6 +153,7 @@ import org.bukkit.plugin.Plugin;
@@ -154,6 +154,7 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.messaging.StandardMessenger;
import org.bukkit.profile.PlayerProfile;
import org.bukkit.scoreboard.Scoreboard;
@ -34,7 +34,7 @@ index 238bef8e1e9f1e932476b3bbcc9258bca4adbb08..e46023675573e42e6bd510ddaa4bfc47
import net.md_5.bungee.api.chat.BaseComponent; // Spigot
@@ -171,6 +172,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -172,6 +173,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private double healthScale = 20;
private CraftWorldBorder clientWorldBorder = null;
private BorderChangeListener clientWorldBorderListener = this.createWorldBorderListener();
@ -45,7 +45,7 @@ index 238bef8e1e9f1e932476b3bbcc9258bca4adbb08..e46023675573e42e6bd510ddaa4bfc47
public CraftPlayer(CraftServer server, ServerPlayer entity) {
super(server, entity);
@@ -2320,6 +2325,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2350,6 +2355,45 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean getAffectsSpawning() {
return this.getHandle().affectsSpawning;
}

View file

@ -44,10 +44,10 @@ index 9936fb67766dedba71b582316dd2bddd6567c342..2f161145789890fcd9bfd893b099f25a
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index e46023675573e42e6bd510ddaa4bfc470536136f..814bcc343fc2568844dd8da1f328fbae8b09f592 100644
index be1f40a40d805f2e7cde39d5636a9fc793718b93..2e1d8d53f91bccf3cd565b94b8ab5949f470cbd5 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2125,6 +2125,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2155,6 +2155,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setRealHealth(double health) {

View file

@ -88,10 +88,10 @@ index 8033c8741a0f73919a357893652592b317bfb417..9a1cffd51aaf97f759a9057aefbf50bd
@Override
public FluidState getFluidState(BlockPos pos) {
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 58048d90a66cf3291a31d7c1f13ae66eac04ed64..8775163c42d639516a533559eaf312ee16c19f10 100644
index 03f7394057c927f55fa962a65988d03553c6a642..a37377f1b8eba0a86cdeb31026c5e7fe790b898a 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -342,12 +342,29 @@ public class LevelChunk extends ChunkAccess {
@@ -335,12 +335,29 @@ public class LevelChunk extends ChunkAccess {
}
}

View file

@ -11,10 +11,10 @@ For people who want all chunks to be treated equally, you can chose a fixed valu
This allows to fine-tune vanilla gameplay.
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 8775163c42d639516a533559eaf312ee16c19f10..b55080c38b1ac4581b73f0d55ac8a432824a13a4 100644
index a37377f1b8eba0a86cdeb31026c5e7fe790b898a..f5dcd970fc2828a4ba9ff2c0d495aa8d8cd4ed74 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -327,6 +327,13 @@ public class LevelChunk extends ChunkAccess {
@@ -320,6 +320,13 @@ public class LevelChunk extends ChunkAccess {
return new ChunkAccess.TicksToSave(this.blockTicks, this.fluidTicks);
}

View file

@ -86,7 +86,7 @@ index 0000000000000000000000000000000000000000..88e32ed64f90bfd277dac84ba4bd84f0
+}
diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlockInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlockInventory.java
new file mode 100644
index 0000000000000000000000000000000000000000..70ca5625ff5d13a8e9cd64953066a7e1547ff223
index 0000000000000000000000000000000000000000..24c6ff57cd25533e71f8a1d0b3c0ece2fdbbf87e
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableBlockInventory.java
@@ -0,0 +1,33 @@
@ -109,18 +109,18 @@ index 0000000000000000000000000000000000000000..70ca5625ff5d13a8e9cd64953066a7e1
+
+ @Override
+ default Level getNMSWorld() {
+ return getTileEntity().getLevel();
+ return this.getTileEntity().getLevel();
+ }
+
+ default Block getBlock() {
+ final BlockPos position = getTileEntity().getBlockPos();
+ final Chunk bukkitChunk = getTileEntity().getLevel().getChunkAt(position).bukkitChunk;
+ final BlockPos position = this.getTileEntity().getBlockPos();
+ final Chunk bukkitChunk = this.getBukkitWorld().getChunkAt(org.bukkit.craftbukkit.block.CraftBlock.at(this.getNMSWorld(), position));
+ return bukkitChunk.getBlock(position.getX(), position.getY(), position.getZ());
+ }
+
+ @Override
+ default PaperLootableInventoryData getLootableData() {
+ return getTileEntity().lootableData;
+ return this.getTileEntity().lootableData;
+ }
+}
diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableEntityInventory.java b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableEntityInventory.java
@ -490,7 +490,7 @@ index 0000000000000000000000000000000000000000..9cfa5d36a6991067a3866e0d437749fa
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 7f32aae16af188ec0c3dcbcdd7aeae5f1b9526b6..384e4371e56d877118cb68e4ca94a0cc38b4d101 100644
index ec566ca4525ab9f6131dab57dc693982357c42d8..0aec74557ef981c1e360485ee4bcb57836eb1dbd 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -234,6 +234,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {

View file

@ -28,10 +28,10 @@ index efbf6b316a70b94e4bd490df8ebe77cd9f638ba4..cad8854cc7523d60c06ca1f03bfd4fbf
entitywitch.finalizeSpawn(world, world.getCurrentDifficultyAt(entitywitch.blockPosition()), MobSpawnType.CONVERSION, (SpawnGroupData) null, (CompoundTag) null);
entitywitch.setNoAi(this.isNoAi());
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 54a9a630ca1aa3cabc9aa29ba7d9e516c0f88a00..ed1a1ca9494bbdde3f496ee284d63e86665d6de0 100644
index 9bf4b8865237fd2555ed0e4b2e619afd7dc6845e..0d19b629e2e674b9908c25543c739ec357f20d8a 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1164,6 +1164,14 @@ public class CraftEventFactory {
@@ -1180,6 +1180,14 @@ public class CraftEventFactory {
return event;
}

View file

@ -18,10 +18,10 @@ index 5391c60398c8a7d1d49dc2e73116b27862653873..5a79b49e321cba352d8e4189dfbfdd05
--this.count;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index ed1a1ca9494bbdde3f496ee284d63e86665d6de0..e7f673b38615c116227bb1abcbd10746d4cc74d4 100644
index 0d19b629e2e674b9908c25543c739ec357f20d8a..774063ea6bd7ef9afbc3fd7046c236519e62e3bc 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1123,6 +1123,17 @@ public class CraftEventFactory {
@@ -1139,6 +1139,17 @@ public class CraftEventFactory {
return event;
}

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Add ProjectileCollideEvent
Deprecated now and replaced with ProjectileHitEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index e7f673b38615c116227bb1abcbd10746d4cc74d4..a1efb66de4cb509781de498bee5c44456ad93395 100644
index 774063ea6bd7ef9afbc3fd7046c236519e62e3bc..fea90633f10bad7498f8f5e90093eee2a09df549 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1267,6 +1267,17 @@ public class CraftEventFactory {
@@ -1283,6 +1283,17 @@ public class CraftEventFactory {
return CraftItemStack.asNMSCopy(bitem);
}
@ -27,7 +27,7 @@ index e7f673b38615c116227bb1abcbd10746d4cc74d4..a1efb66de4cb509781de498bee5c4445
public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) {
Projectile bukkitEntity = (Projectile) entity.getBukkitEntity();
ProjectileLaunchEvent event = new ProjectileLaunchEvent(bukkitEntity);
@@ -1291,8 +1302,15 @@ public class CraftEventFactory {
@@ -1307,8 +1318,15 @@ public class CraftEventFactory {
if (position.getType() == HitResult.Type.ENTITY) {
hitEntity = ((EntityHitResult) position).getEntity().getBukkitEntity();
}

View file

@ -26,10 +26,10 @@ index 32ef3edebe94a2014168b7e438752a80b2687e5f..ab6c58eed6707ab7b0aa3e7549a871ad
// Paper end
buf.writeComponent(this.text);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 814bcc343fc2568844dd8da1f328fbae8b09f592..ff35189ca0f8c0957fab889039fe2283a190a4d0 100644
index 2e1d8d53f91bccf3cd565b94b8ab5949f470cbd5..2a77e7ffb748c5b7f89aa232b51e7d62732850d9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -358,6 +358,29 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -359,6 +359,29 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// Paper start

View file

@ -20,10 +20,10 @@ index 1a0accca970ca5eb895c63c5a45a5261440d0e12..35eecb719a813fda6113da24a858188a
private final List<TickingBlockEntity> pendingBlockEntityTickers = Lists.newArrayList();
private boolean tickingBlockEntities;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 30137f60a3796cf845e8fd7bd3c291be979b8b0c..030ad193dc657810709817c55fb3eb9a08d41459 100644
index 1684b3ee1b51597e799486bbe129b344a9fe3098..857fac09453f99a56d41a3a57a5f36c22496a643 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -151,6 +151,56 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -152,6 +152,56 @@ public class CraftWorld extends CraftRegionAccessor implements World {
private final CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(CraftWorld.DATA_TYPE_REGISTRY);
private net.kyori.adventure.pointer.Pointers adventure$pointers; // Paper - implement pointers

View file

@ -90,10 +90,10 @@ index 2be1bd39ee1341128f02e38afe5698b837735827..cca08b8c6e1e15f13326a2a7e33e7f32
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 981ac7ad6efb4024216a0967fd4c2f01245a8816..75017f7464247a4766859250453954c4b775d36f 100644
index 2a77e7ffb748c5b7f89aa232b51e7d62732850d9..1a4778052126cde62126e04b7bbf285be07b69b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -302,6 +302,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -303,6 +303,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
}

View file

@ -14,10 +14,10 @@ public net.minecraft.world.entity.ExperienceOrb durabilityToXp(I)I
public net.minecraft.world.entity.ExperienceOrb xpToDurability(I)I
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index a9494390868b62824fddd2b7a95f52f3ab31d605..61baea9efa7c1b35c437f6f0a4387c7611f401c3 100644
index 1a4778052126cde62126e04b7bbf285be07b69b6..26de9507f46a2f811cd8b0ccaf2233f12b250ae1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1496,7 +1496,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1526,7 +1526,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
@Override

View file

@ -58,7 +58,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/
index 61baea9efa7c1b35c437f6f0a4387c7611f401c3..9099604b5bffc92ca46c096d2d6d7d857ef22c38 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -82,6 +82,7 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
@@ -83,6 +83,7 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.level.GameType;
import net.minecraft.world.level.block.Blocks;
@ -66,7 +66,7 @@ index 61baea9efa7c1b35c437f6f0a4387c7611f401c3..9099604b5bffc92ca46c096d2d6d7d85
import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraft.world.level.border.BorderChangeListener;
import net.minecraft.world.level.saveddata.maps.MapDecoration;
@@ -285,11 +286,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -286,11 +287,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return server.getPlayer(getUniqueId()) != null;
}
@ -78,7 +78,7 @@ index 61baea9efa7c1b35c437f6f0a4387c7611f401c3..9099604b5bffc92ca46c096d2d6d7d85
@Override
public InetSocketAddress getAddress() {
if (this.getHandle().connection == null) return null;
@@ -1646,8 +1642,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1676,8 +1672,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private void untrackAndHideEntity(org.bukkit.entity.Entity entity) {
// Remove this entity from the hidden player's EntityTrackerEntry
@ -95,7 +95,7 @@ index 61baea9efa7c1b35c437f6f0a4387c7611f401c3..9099604b5bffc92ca46c096d2d6d7d85
ChunkMap.TrackedEntity entry = tracker.entityMap.get(other.getId());
if (entry != null) {
entry.removePlayer(this.getHandle());
@@ -1660,8 +1663,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1690,8 +1693,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(new ClientboundPlayerInfoRemovePacket(List.of(otherPlayer.getUUID())));
}
}
@ -104,7 +104,7 @@ index 61baea9efa7c1b35c437f6f0a4387c7611f401c3..9099604b5bffc92ca46c096d2d6d7d85
}
void resetAndHideEntity(org.bukkit.entity.Entity entity) {
@@ -1738,8 +1739,38 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1768,8 +1769,38 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (entry != null && !entry.seenBy.contains(this.getHandle().connection)) {
entry.updatePlayer(this.getHandle());
}
@ -144,7 +144,7 @@ index 61baea9efa7c1b35c437f6f0a4387c7611f401c3..9099604b5bffc92ca46c096d2d6d7d85
}
void resetAndShowEntity(org.bukkit.entity.Entity entity) {
@@ -1752,6 +1783,36 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1782,6 +1813,36 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.trackAndShowEntity(entity);
}
}

View file

@ -9,10 +9,10 @@ e.g. servers which allow and support the usage of mod packs.
provide an optional flag to disable this check, at your own risk.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 9099604b5bffc92ca46c096d2d6d7d857ef22c38..78e6946466d455f39d08df7063a494ee297a477e 100644
index 9f2cf313791b146a6e183c805653e445e498c44e..65471cac37cd7b9cf52ef8405434ae8ecb0775d0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -176,6 +176,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -177,6 +177,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper start
private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
private String resourcePackHash;
@ -20,7 +20,7 @@ index 9099604b5bffc92ca46c096d2d6d7d857ef22c38..78e6946466d455f39d08df7063a494ee
// Paper end
public CraftPlayer(CraftServer server, ServerPlayer entity) {
@@ -2021,7 +2022,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2051,7 +2052,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
public void addChannel(String channel) {

View file

@ -34,10 +34,10 @@ index d273673978c8270f2e0719412372039406e31f5e..65110445ff8a245742c4f7a7055f544f
if (this.sendParticles(entityplayer, force, d0, d1, d2, packetplayoutworldparticles)) { // CraftBukkit
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 030ad193dc657810709817c55fb3eb9a08d41459..eaf38f39e550699fe1ab74174896c8f1cd3b0af0 100644
index 857fac09453f99a56d41a3a57a5f36c22496a643..323bd3b006f01505f2912ab7e07cd80798a1f054 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1824,11 +1824,17 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1835,11 +1835,17 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public <T> void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, double offsetY, double offsetZ, double extra, T data, boolean force) {

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Expand Explosions API
Add Entity as a Source capability, and add more API choices, and on Location.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index eaf38f39e550699fe1ab74174896c8f1cd3b0af0..c7cf5f1eaedbeff2bd82106a0a1a670c419b2211 100644
index 323bd3b006f01505f2912ab7e07cd80798a1f054..920579a1061cd8b46d920e48cea8ac0d6c986ad5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -702,6 +702,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -713,6 +713,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) {
return !this.world.explode(source == null ? null : ((CraftEntity) source).getHandle(), x, y, z, power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE).wasCanceled;
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Implement World.getEntity(UUID) API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index c7cf5f1eaedbeff2bd82106a0a1a670c419b2211..0c3c47bfa9af7d0780e60598b703e0d9f906ed9f 100644
index 920579a1061cd8b46d920e48cea8ac0d6c986ad5..ea55b206eb94a3349585435f6e7184fffccd7bd3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1036,6 +1036,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1047,6 +1047,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return list;
}

View file

@ -173,10 +173,10 @@ index 787ccb37a39bb506cf9fd8d54cf772b346981f85..f5b3190ffb9e9f92977afc9e40ddfa15
@Override
public boolean isBlocking() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 6d0800737d1e017bc841fddcbd9ac6cb0be0f4fd..25b3e7f8f8182bb5de491fc2f6debf4d7a8cd252 100644
index b1b4513d9b86195b8c96c49990cb2bf6d3951506..9592da53e4b2ec28c71887ef68a0327c0e3ec119 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1210,7 +1210,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1240,7 +1240,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Close any foreign inventory
if (this.getHandle().containerMenu != this.getHandle().inventoryMenu) {
@ -186,10 +186,10 @@ index 6d0800737d1e017bc841fddcbd9ac6cb0be0f4fd..25b3e7f8f8182bb5de491fc2f6debf4d
// Check if the fromWorld and toWorld are the same.
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index a1efb66de4cb509781de498bee5c44456ad93395..9d088e25eb24af5cbb5cf3038de589313b0afe1d 100644
index fea90633f10bad7498f8f5e90093eee2a09df549..8a856d7c65e1002d32fa5b2619606e9d08d7286b 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1236,7 +1236,7 @@ public class CraftEventFactory {
@@ -1252,7 +1252,7 @@ public class CraftEventFactory {
public static AbstractContainerMenu callInventoryOpenEvent(ServerPlayer player, AbstractContainerMenu container, boolean cancelled) {
if (player.containerMenu != player.inventoryMenu) { // fire INVENTORY_CLOSE if one already open
@ -198,7 +198,7 @@ index a1efb66de4cb509781de498bee5c44456ad93395..9d088e25eb24af5cbb5cf3038de58931
}
CraftServer server = player.level.getCraftServer();
@@ -1410,8 +1410,18 @@ public class CraftEventFactory {
@@ -1426,8 +1426,18 @@ public class CraftEventFactory {
return event;
}

View file

@ -89,10 +89,10 @@ index f07e70ab26fffaec5055a7dd2571dc4d29c66d35..754e1667aadef89bbaccebc0f437197b
public boolean isClientSide() {
return this.isClientSide;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 9d088e25eb24af5cbb5cf3038de589313b0afe1d..ea385119db05699e355411e779f4464067f923f1 100644
index 8a856d7c65e1002d32fa5b2619606e9d08d7286b..171f2f3187b0f1d2e86c884cb566d23c048c337b 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1273,6 +1273,14 @@ public class CraftEventFactory {
@@ -1289,6 +1289,14 @@ public class CraftEventFactory {
Projectile projectile = (Projectile) entity.getBukkitEntity();
org.bukkit.entity.Entity collided = position.getEntity().getBukkitEntity();
com.destroystokyo.paper.event.entity.ProjectileCollideEvent event = new com.destroystokyo.paper.event.entity.ProjectileCollideEvent(projectile, collided);

View file

@ -5,21 +5,10 @@ Subject: [PATCH] Ability to get Tile Entities from a chunk without snapshots
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index e4a533ace96829414844607a013831dba7a1e73e..832c6d92daaa96210a9c7edbd357ca824a60a4a5 100644
index 579f96e6778abe1c565ee359b79cca96a43ae600..9316db9a29d446a9c4facfa956927741dffa9a27 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -4,8 +4,10 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Predicates;
import com.mojang.serialization.Codec;
import java.lang.ref.WeakReference;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.List;
import java.util.Objects;
import java.util.concurrent.locks.LockSupport;
import java.util.function.BooleanSupplier;
@@ -134,6 +136,13 @@ public class CraftChunk implements Chunk {
@@ -117,6 +117,13 @@ public class CraftChunk implements Chunk {
@Override
public BlockState[] getTileEntities() {
@ -33,10 +22,10 @@ index e4a533ace96829414844607a013831dba7a1e73e..832c6d92daaa96210a9c7edbd357ca82
if (!this.isLoaded()) {
this.getWorld().getChunkAt(x, z); // Transient load for this tick
}
@@ -148,7 +157,29 @@ public class CraftChunk implements Chunk {
}
@@ -126,7 +133,29 @@ public class CraftChunk implements Chunk {
BlockState[] entities = new BlockState[chunk.blockEntities.size()];
BlockPos position = (BlockPos) obj;
for (BlockPos position : chunk.blockEntities.keySet()) {
- entities[index++] = this.worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()).getState();
+ // Paper start
+ entities[index++] = this.worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()).getState(useSnapshot);
@ -48,15 +37,15 @@ index e4a533ace96829414844607a013831dba7a1e73e..832c6d92daaa96210a9c7edbd357ca82
+ @Override
+ public Collection<BlockState> getTileEntities(Predicate<Block> blockPredicate, boolean useSnapshot) {
+ Preconditions.checkNotNull(blockPredicate, "blockPredicate");
+ if (!isLoaded()) {
+ getWorld().getChunkAt(x, z); // Transient load for this tick
+ if (!this.isLoaded()) {
+ this.getWorld().getChunkAt(this.x, this.z); // Transient load for this tick
+ }
+ net.minecraft.world.level.chunk.LevelChunk chunk = getHandle();
+ ChunkAccess chunk = this.getHandle(ChunkStatus.FULL);
+
+ List<BlockState> entities = new ArrayList<>();
+ java.util.List<BlockState> entities = new java.util.ArrayList<>();
+
+ for (BlockPos position : chunk.blockEntities.keySet()) {
+ Block block = worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ());
+ Block block = this.worldServer.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ());
+ if (blockPredicate.test(block)) {
+ entities.add(block.getState(useSnapshot));
+ }

View file

@ -26,10 +26,10 @@ index 0eb877c80c6492d03681c70f7866ad705a62454e..7cc6dcb128f2792fc32bb8f50e4c94d6
// Paper start
protected boolean shapeExceedsCube = true;
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index e5a496b72073f75af2df4cea0cf367f47ad9f9f3..ffdd7638d0b88f79ae981924d1c42d2fda2b284e 100644
index d293ba4f1c4a095c7aee7e4b1b06ab4214ff821c..ccd511f189a9ec57564b2372d7f662da15ef3bba 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -550,7 +550,17 @@ public class CraftBlockData implements BlockData {
@@ -553,7 +553,17 @@ public class CraftBlockData implements BlockData {
return craft;
}

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Make CraftWorld#loadChunk(int, int, false) load unconverted
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 0c3c47bfa9af7d0780e60598b703e0d9f906ed9f..dfd87e2711e5bca09e29071375fec239e4e7538c 100644
index ea55b206eb94a3349585435f6e7184fffccd7bd3..577f488cab5219d2cad203972731bd14a28e869e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -391,7 +391,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -403,7 +403,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean loadChunk(int x, int z, boolean generate) {
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot

View file

@ -8,7 +8,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/
index cd1a2796f8a16775f6fc5fd43d46a398711601ee..b133bb407b88d7bc3ab8cb2011e8ad9e65df4bcd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2778,6 +2778,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2808,6 +2808,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.adventure$pointers;
}

View file

@ -355,7 +355,7 @@ diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/
index b133bb407b88d7bc3ab8cb2011e8ad9e65df4bcd..8fdc2b677ef881b28e49f9bf2b39db065ea3d014 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2281,7 +2281,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2311,7 +2311,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void sendHealthUpdate() {
@ -372,10 +372,10 @@ index b133bb407b88d7bc3ab8cb2011e8ad9e65df4bcd..8fdc2b677ef881b28e49f9bf2b39db06
public void injectScaledMaxHealth(Collection<AttributeInstance> collection, boolean force) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index ea385119db05699e355411e779f4464067f923f1..ea83f115d96302731ee7576b682bee95259422de 100644
index 171f2f3187b0f1d2e86c884cb566d23c048c337b..b8dbc05857e5fa1c0bacabd022be3669884aba40 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -806,9 +806,16 @@ public class CraftEventFactory {
@@ -822,9 +822,16 @@ public class CraftEventFactory {
public static EntityDeathEvent callEntityDeathEvent(net.minecraft.world.entity.LivingEntity victim, List<org.bukkit.inventory.ItemStack> drops) {
CraftLivingEntity entity = (CraftLivingEntity) victim.getBukkitEntity();
EntityDeathEvent event = new EntityDeathEvent(entity, drops, victim.getExpReward());
@ -392,7 +392,7 @@ index ea385119db05699e355411e779f4464067f923f1..ea83f115d96302731ee7576b682bee95
victim.expToDrop = event.getDroppedExp();
for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
@@ -825,8 +832,15 @@ public class CraftEventFactory {
@@ -841,8 +848,15 @@ public class CraftEventFactory {
PlayerDeathEvent event = new PlayerDeathEvent(entity, drops, victim.getExpReward(), 0, deathMessage, stringDeathMessage); // Paper - Adventure
event.setKeepInventory(keepInventory);
event.setKeepLevel(victim.keepLevel); // SPIGOT-2222: pre-set keepLevel
@ -408,7 +408,7 @@ index ea385119db05699e355411e779f4464067f923f1..ea83f115d96302731ee7576b682bee95
victim.keepLevel = event.getKeepLevel();
victim.newLevel = event.getNewLevel();
@@ -843,6 +857,31 @@ public class CraftEventFactory {
@@ -859,6 +873,31 @@ public class CraftEventFactory {
return event;
}

View file

@ -7,10 +7,10 @@ Subject: [PATCH] Add sun related API
public net.minecraft.world.entity.Mob isSunBurnTick()Z
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index dfd87e2711e5bca09e29071375fec239e4e7538c..3889e880e3a8a21e38d613c552829ad998c24fd5 100644
index 577f488cab5219d2cad203972731bd14a28e869e..fd908bbcbb652b2b6bc8703c5cdf1374b77a70dd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -678,6 +678,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -689,6 +689,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
}
}

View file

@ -106,10 +106,10 @@ index 69a1852905dd4724c30ac8ab88c14251eee2c371..17b3d5de58a9ef3acc67624c46cd6bbd
public Location getLastDeathLocation() {
if (this.getData().contains("LastDeathLocation", 10)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 8fdc2b677ef881b28e49f9bf2b39db065ea3d014..05fd3758b4ac1e2a91dfee7862dba2c2a7850e7b 100644
index 73e8083b3ab009904ff7bc2003dfb506ee481d4e..5d5823871ea23eae07facb5eecf1708430089b84 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -177,6 +177,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -178,6 +178,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
private String resourcePackHash;
private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit
@ -117,7 +117,7 @@ index 8fdc2b677ef881b28e49f9bf2b39db065ea3d014..05fd3758b4ac1e2a91dfee7862dba2c2
// Paper end
public CraftPlayer(CraftServer server, ServerPlayer entity) {
@@ -1893,6 +1894,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1923,6 +1924,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.firstPlayed = firstPlayed;
}
@ -136,7 +136,7 @@ index 8fdc2b677ef881b28e49f9bf2b39db065ea3d014..05fd3758b4ac1e2a91dfee7862dba2c2
public void readExtraData(CompoundTag nbttagcompound) {
this.hasPlayedBefore = true;
if (nbttagcompound.contains("bukkit")) {
@@ -1915,6 +1928,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1945,6 +1958,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setExtraData(CompoundTag nbttagcompound) {
@ -145,7 +145,7 @@ index 8fdc2b677ef881b28e49f9bf2b39db065ea3d014..05fd3758b4ac1e2a91dfee7862dba2c2
if (!nbttagcompound.contains("bukkit")) {
nbttagcompound.put("bukkit", new CompoundTag());
}
@@ -1929,6 +1944,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1959,6 +1974,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
data.putLong("firstPlayed", this.getFirstPlayed());
data.putLong("lastPlayed", System.currentTimeMillis());
data.putString("lastKnownName", handle.getScoreboardName());

View file

@ -12,10 +12,10 @@ Player we will look at limiting the scope of this change. It appears to
be unintentional in the few cases we've seen so far.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 05fd3758b4ac1e2a91dfee7862dba2c2a7850e7b..b89faca2cbb7fd597175955ebe1f50c6122f7529 100644
index 5d5823871ea23eae07facb5eecf1708430089b84..da70f20983d3d000fa7731a1388c86a2fd087c4c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2825,6 +2825,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2855,6 +2855,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void resetCooldown() {
getHandle().resetAttackStrengthTicker();
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add Heightmap API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 3889e880e3a8a21e38d613c552829ad998c24fd5..05b2c78c64dc9258b2a6621bc2aed041d66c33ee 100644
index fd908bbcbb652b2b6bc8703c5cdf1374b77a70dd..d828b777ae2435579d5f7ea51f920e77a684bb7b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -221,6 +221,29 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -222,6 +222,29 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return this.getHighestBlockYAt(x, z, org.bukkit.HeightMap.MOTION_BLOCKING);
}

View file

@ -200,10 +200,10 @@ index 4d2348df25410a0b5364eec066880326d6667dad..286aad3205ef8a9e21a47ef07893844f
this.maxCount = i * i;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 05b2c78c64dc9258b2a6621bc2aed041d66c33ee..ba6d74692039c39660ed5e1d960cb090553a82f0 100644
index d828b777ae2435579d5f7ea51f920e77a684bb7b..112d6202635d8e9ce101248d69cc7ab5e1feb2cb 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1345,15 +1345,21 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1356,15 +1356,21 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setKeepSpawnInMemory(boolean keepLoaded) {

View file

@ -156,10 +156,10 @@ index 8f729134d8f024678f3f5927059791e28ccb5b90..b294ef87fb93e7f4651dc04128124f29
} catch (Throwable throwable) {
if (dataoutputstream != null) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index ba6d74692039c39660ed5e1d960cb090553a82f0..19f711f82386aaa731699f60ddb95ac208bf3a19 100644
index 112d6202635d8e9ce101248d69cc7ab5e1feb2cb..7f04e2009f4917f3350f9e223891cdd9b394d163 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -298,9 +298,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -310,9 +310,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean isChunkGenerated(int x, int z) {
@ -185,7 +185,7 @@ index ba6d74692039c39660ed5e1d960cb090553a82f0..19f711f82386aaa731699f60ddb95ac2
throw new RuntimeException(ex);
}
}
@@ -414,20 +428,48 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -426,20 +440,48 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean loadChunk(int x, int z, boolean generate) {
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot

View file

@ -1226,7 +1226,7 @@ index 508c2fff8d8e0c6f37b6c4e3b72ba772c2ab2ee5..e254b2d04e4fc1dc76c26f61ea38aeb2
}
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 b55080c38b1ac4581b73f0d55ac8a432824a13a4..f5bdb76e554c9fc492dbf2a67166845ada0ac103 100644
index f5dcd970fc2828a4ba9ff2c0d495aa8d8cd4ed74..b1471b43392863ce1f2861d07baddbd711e761dc 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -93,7 +93,7 @@ public class LevelChunk extends ChunkAccess {
@ -1559,10 +1559,10 @@ index b1c5e5ecf2488d1a6f0a5261d4ba8958de9659ae..4138ba8bdf6f359327dfc86d3402b787
// CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 832c6d92daaa96210a9c7edbd357ca824a60a4a5..0fadc763fb482cf9f3b51ed44427029bec9f7f63 100644
index 9316db9a29d446a9c4facfa956927741dffa9a27..72743bf4a8583c712558fb3ed1441fc7b9d2708c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -55,7 +55,7 @@ public class CraftChunk implements Chunk {
@@ -51,7 +51,7 @@ public class CraftChunk implements Chunk {
private final ServerLevel worldServer;
private final int x;
private final int z;
@ -1572,7 +1572,7 @@ index 832c6d92daaa96210a9c7edbd357ca824a60a4a5..0fadc763fb482cf9f3b51ed44427029b
public CraftChunk(net.minecraft.world.level.chunk.LevelChunk chunk) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 804f39d980907ddfb71399bd08db14a690d726ba..5101993aabe77289b56f3ae33900a97d2177fe33 100644
index c27e18a2ba0558f9e7fdc2fb3ed5c6ddc564917e..f870f488cdb78ef1652ce6726d5133d05997e0ab 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2243,7 +2243,7 @@ public final class CraftServer implements Server {
@ -1585,10 +1585,10 @@ index 804f39d980907ddfb71399bd08db14a690d726ba..5101993aabe77289b56f3ae33900a97d
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 19f711f82386aaa731699f60ddb95ac208bf3a19..c46e875709d83a1684c5e37c6a11bb3e9acd20e5 100644
index 7f04e2009f4917f3350f9e223891cdd9b394d163..a17ae89a82958bdc3bfa0553440e2887585693c1 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -409,11 +409,16 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -421,11 +421,16 @@ public class CraftWorld extends CraftRegionAccessor implements World {
List<ServerPlayer> playersInRange = playerChunk.playerProvider.getPlayers(playerChunk.getPos(), false);
if (playersInRange.isEmpty()) return true; // Paper - rewrite player chunk loader

View file

@ -5,10 +5,10 @@ Subject: [PATCH] add hand to BlockMultiPlaceEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index bdd4572489cd12ea19560fe82006e3fe4db29b50..cdfd63b5d1a9c6fc9a957730adf2406decef633b 100644
index b8dbc05857e5fa1c0bacabd022be3669884aba40..e35f44571666d125bb2ce6c30037c6298e428c3f 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -348,13 +348,18 @@ public class CraftEventFactory {
@@ -364,13 +364,18 @@ public class CraftEventFactory {
}
org.bukkit.inventory.ItemStack item;

View file

@ -8,10 +8,10 @@ faster on its own, however removing the try catch makes it
easier to inline due to code size
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 f5bdb76e554c9fc492dbf2a67166845ada0ac103..39defceb694875322b3433a3ad4bb16256413ea8 100644
index b1471b43392863ce1f2861d07baddbd711e761dc..703830416a0483e960643bee269fe01e170112bd 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -427,18 +427,20 @@ public class LevelChunk extends ChunkAccess {
@@ -420,18 +420,20 @@ public class LevelChunk extends ChunkAccess {
}
public FluidState getFluidState(int x, int y, int z) {
@ -38,7 +38,7 @@ index f5bdb76e554c9fc492dbf2a67166845ada0ac103..39defceb694875322b3433a3ad4bb162
} catch (Throwable throwable) {
CrashReport crashreport = CrashReport.forThrowable(throwable, "Getting fluid state");
CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Block being got");
@@ -448,6 +450,7 @@ public class LevelChunk extends ChunkAccess {
@@ -441,6 +443,7 @@ public class LevelChunk extends ChunkAccess {
});
throw new ReportedException(crashreport);
}

View file

@ -306,10 +306,10 @@ index 637092303bbce94fd37f193367264d51b855847d..31edf8f2c683f56e53040e735d015ca6
final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level.getWorld().getName(), entity.getX(), entity.getY(), entity.getZ());
MinecraftServer.LOGGER.error(msg, throwable);
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 39defceb694875322b3433a3ad4bb16256413ea8..86f19b7ed15c2029c5483f21b44895d8982a90b8 100644
index 703830416a0483e960643bee269fe01e170112bd..ee1c9f2c8dd30b3f32a6d49aa1c43148f4e5ccac 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -1230,6 +1230,7 @@ public class LevelChunk extends ChunkAccess {
@@ -1225,6 +1225,7 @@ public class LevelChunk extends ChunkAccess {
gameprofilerfiller.pop();
} catch (Throwable throwable) {

View file

@ -116,10 +116,10 @@ index 71fac1a579b375759462b843d9ef7c8a2a463db5..2d54f2abae82521fbd34aa046f26ec8e
if (getMainArm() != packet.mainHand()) {
PlayerChangedMainHandEvent event = new PlayerChangedMainHandEvent(this.getBukkitEntity(), getMainArm() == HumanoidArm.LEFT ? MainHand.LEFT : MainHand.RIGHT);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index fdad04d657612979b5b9d30d132ca38efe81858d..254ff289883b37d42095ee286b138015f8dfb81f 100644
index a6ac9a628cbfeb021934221105a6a193bef61f56..69d4554bb79da980acc4d5de8c00d331f3bd4fea 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -621,6 +621,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -622,6 +622,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
connection.disconnect(message == null ? net.kyori.adventure.text.Component.empty() : message);
}
}

View file

@ -16,7 +16,7 @@ So even if something NEW comes up, it would be impossible to drop the
same item twice because the source was destroyed.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index d3f9954bda58b459e2f64b5d949807ab60905d48..c69cc5dadac4bd81f08258f0420b7acd506cb04a 100644
index d04c5cd4afd09fbe511811a198135c19ee99c036..52339e85607adb77c260744a48701d8d8da4ef2e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2329,11 +2329,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@ -80,7 +80,7 @@ index d3f9954bda58b459e2f64b5d949807ab60905d48..c69cc5dadac4bd81f08258f0420b7acd
public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) {
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 6541caa4a574271fa940d1dceef434655ffd8aa9..b0a57ff0780c3f37110a9c3640f29cb08daa52d5 100644
index f7ae0c52313f4d8c64849605148f8293e0e96141..65f5381c3362b16fa709728458f87b9283b73291 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1636,9 +1636,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@ -135,10 +135,10 @@ index dbb4bfb3d1f1ce2e435ca531be36ea448c0e3212..3be5ea477cb3dd3ce75f3feced8daf7c
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index cdfd63b5d1a9c6fc9a957730adf2406decef633b..440806cc3d7852f9cf3648a747c48236afff7e80 100644
index e35f44571666d125bb2ce6c30037c6298e428c3f..81d1654ed3520df5cecb929b7089528893b2fd29 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -809,6 +809,11 @@ public class CraftEventFactory {
@@ -825,6 +825,11 @@ public class CraftEventFactory {
}
public static EntityDeathEvent callEntityDeathEvent(net.minecraft.world.entity.LivingEntity victim, List<org.bukkit.inventory.ItemStack> drops) {
@ -150,7 +150,7 @@ index cdfd63b5d1a9c6fc9a957730adf2406decef633b..440806cc3d7852f9cf3648a747c48236
CraftLivingEntity entity = (CraftLivingEntity) victim.getBukkitEntity();
EntityDeathEvent event = new EntityDeathEvent(entity, drops, victim.getExpReward());
populateFields(victim, event); // Paper - make cancellable
@@ -822,11 +827,13 @@ public class CraftEventFactory {
@@ -838,11 +843,13 @@ public class CraftEventFactory {
playDeathSound(victim, event);
// Paper end
victim.expToDrop = event.getDroppedExp();

View file

@ -592,10 +592,10 @@ index 6599f874d9f97e9ef4862039ecad7277bbc5fd91..7edd4b88eb0476f0630630bc4681e859
}
}
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 86f19b7ed15c2029c5483f21b44895d8982a90b8..05b8b37a4b1089b859b399323ecda8f23e9f6e67 100644
index ee1c9f2c8dd30b3f32a6d49aa1c43148f4e5ccac..73a3f9eae86df8e9afd08ee9da4c1b8e16dededd 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -640,7 +640,7 @@ public class LevelChunk extends ChunkAccess {
@@ -633,7 +633,7 @@ public class LevelChunk extends ChunkAccess {
+ " (" + getBlockState(blockposition) + ") where there was no entity tile!\n" +
"Chunk coordinates: " + (this.chunkPos.x * 16) + "," + (this.chunkPos.z * 16) +
"\nWorld: " + level.getLevel().dimension().location());

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Option for maximum exp value when merging orbs
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 440806cc3d7852f9cf3648a747c48236afff7e80..e40053ef61b49e3c9269595f714a6c93e872fd6c 100644
index 81d1654ed3520df5cecb929b7089528893b2fd29..5f61fe52c6fc15c3114a6ba44eea6d219228f26e 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -630,16 +630,30 @@ public class CraftEventFactory {
@@ -646,16 +646,30 @@ public class CraftEventFactory {
net.minecraft.world.entity.ExperienceOrb xp = (net.minecraft.world.entity.ExperienceOrb) entity;
double radius = world.spigotConfig.expMerge;
if (radius > 0) {

View file

@ -9,10 +9,10 @@ Plugins can cancel this if they want to ensure experience orbs do not lose impor
metadata such as spawn reason, or conditionally move data from source to target.
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index e40053ef61b49e3c9269595f714a6c93e872fd6c..eb8b13becd2d72c4cac12a11e27aa467d1901b7e 100644
index 5f61fe52c6fc15c3114a6ba44eea6d219228f26e..6045ebda7250545c255c1e1c1eb614deff3dfc96 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -640,7 +640,7 @@ public class CraftEventFactory {
@@ -656,7 +656,7 @@ public class CraftEventFactory {
if (e instanceof net.minecraft.world.entity.ExperienceOrb) {
net.minecraft.world.entity.ExperienceOrb loopItem = (net.minecraft.world.entity.ExperienceOrb) e;
// Paper start

View file

@ -102,7 +102,7 @@ index 77f502c279ec471d65f6cc007d2bc08e3b34d79a..1517c09ccd95448cb0fce0f9ffbb7bd2
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 9e278a740cf7cb7a593d76f01d6aa590407b087b..5b29bdd8c39bcdec81ed58b8e06ec6b6940363ab 100644
index fcf43140189efb93e77807a2a6bb982132fef787..777f114e9cb0cfa3633b9a89116be1c73d552065 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -941,8 +941,8 @@ public final class CraftServer implements Server {
@ -117,10 +117,10 @@ index 9e278a740cf7cb7a593d76f01d6aa590407b087b..5b29bdd8c39bcdec81ed58b8e06ec6b6
for (SpawnCategory spawnCategory : SpawnCategory.values()) {
if (CraftSpawnCategory.isValidForLimits(spawnCategory)) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index c46e875709d83a1684c5e37c6a11bb3e9acd20e5..efa01ad6ac0757da033f2bdf7729717239e474f2 100644
index a17ae89a82958bdc3bfa0553440e2887585693c1..0084dceef60b23fa79fadc0a3c1a06c1a3b048cd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1146,7 +1146,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1157,7 +1157,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setDifficulty(Difficulty difficulty) {

View file

@ -22,7 +22,7 @@ wants it to collect even faster, they can restore that setting back to 1 instead
Not adding it to .getType() though to keep behavior consistent with vanilla for performance reasons.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 5b29bdd8c39bcdec81ed58b8e06ec6b6940363ab..fb98133b733b86596272609533d311633cbf9231 100644
index 777f114e9cb0cfa3633b9a89116be1c73d552065..4056ba7e9860c8eb8ccd265d9c5ca575c1cabd24 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -369,7 +369,7 @@ public final class CraftServer implements Server {
@ -44,33 +44,38 @@ index 5b29bdd8c39bcdec81ed58b8e06ec6b6940363ab..fb98133b733b86596272609533d31163
this.printSaveWarning = false;
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index efa01ad6ac0757da033f2bdf7729717239e474f2..977004b4b5a294c4eab2995777df6fb1faff4625 100644
index 0084dceef60b23fa79fadc0a3c1a06c1a3b048cd..3cf399c2e698af057e8e3c7036d8967318e0c415 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -281,8 +281,21 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -282,7 +282,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public Chunk getChunkAt(int x, int z) {
- return this.world.getChunkSource().getChunk(x, z, true).bukkitChunk;
- net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk) this.world.getChunk(x, z, ChunkStatus.FULL, true);
+ // Paper start - add ticket to hold chunk for a little while longer if plugin accesses it
+ net.minecraft.world.level.chunk.LevelChunk chunk = world.getChunkSource().getChunkAtIfLoadedImmediately(x, z);
+ net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkSource().getChunkAtIfLoadedImmediately(x, z);
+ if (chunk == null) {
+ addTicket(x, z);
+ this.addTicket(x, z);
+ chunk = this.world.getChunkSource().getChunk(x, z, true);
+ }
+ return chunk.bukkitChunk;
+ // Paper end
+ }
+
return new CraftChunk(chunk);
}
@@ -296,6 +302,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return new CraftChunk(this.getHandle(), x, z);
}
+ // Paper start
+ private void addTicket(int x, int z) {
+ io.papermc.paper.util.MCUtil.MAIN_EXECUTOR.execute(() -> world.getChunkSource().addRegionTicket(TicketType.PLUGIN, new ChunkPos(x, z), 0, Unit.INSTANCE)); // Paper
}
+ io.papermc.paper.util.MCUtil.MAIN_EXECUTOR.execute(() -> this.world.getChunkSource().addRegionTicket(TicketType.PLUGIN, new ChunkPos(x, z), 0, Unit.INSTANCE)); // Paper
+ }
+ // Paper end
+
@Override
public Chunk getChunkAt(Block block) {
@@ -349,7 +362,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Preconditions.checkArgument(block != null, "null block");
@@ -361,7 +373,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public boolean unloadChunkRequest(int x, int z) {
org.spigotmc.AsyncCatcher.catchOp("chunk unload"); // Spigot
if (this.isChunkLoaded(x, z)) {
@ -79,7 +84,7 @@ index efa01ad6ac0757da033f2bdf7729717239e474f2..977004b4b5a294c4eab2995777df6fb1
}
return true;
@@ -435,9 +448,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -447,9 +459,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot
// Paper start - Optimize this method
ChunkPos chunkPos = new ChunkPos(x, z);
@ -93,7 +98,7 @@ index efa01ad6ac0757da033f2bdf7729717239e474f2..977004b4b5a294c4eab2995777df6fb1
if (immediate == null) {
immediate = world.getChunkSource().chunkMap.getUnloadingChunk(x, z);
}
@@ -445,7 +461,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -457,7 +472,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!(immediate instanceof ImposterProtoChunk) && !(immediate instanceof net.minecraft.world.level.chunk.LevelChunk)) {
return false; // not full status
}
@ -102,7 +107,7 @@ index efa01ad6ac0757da033f2bdf7729717239e474f2..977004b4b5a294c4eab2995777df6fb1
world.getChunk(x, z); // make sure we're at ticket level 32 or lower
return true;
}
@@ -471,7 +487,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -483,7 +498,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// we do this so we do not re-read the chunk data on disk
}
@ -111,11 +116,11 @@ index efa01ad6ac0757da033f2bdf7729717239e474f2..977004b4b5a294c4eab2995777df6fb1
world.getChunkSource().getChunk(x, z, ChunkStatus.FULL, true);
return true;
// Paper end
@@ -2164,6 +2180,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2175,6 +2190,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
io.papermc.paper.chunk.system.ChunkSystem.scheduleChunkLoad(this.getHandle(), x, z, gen, ChunkStatus.FULL, true, priority, (c) -> {
net.minecraft.server.MinecraftServer.getServer().scheduleOnMain(() -> {
net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk)c;
+ if (chunk != null) addTicket(x, z); // Paper
ret.complete(chunk == null ? null : chunk.getBukkitChunk());
+ if (chunk != null) this.addTicket(x, z); // Paper
ret.complete(chunk == null ? null : new CraftChunk(chunk));
});
});

View file

@ -94,10 +94,10 @@ index 665b01ff3579c8fd87074edfc6da6b7ef07693b2..24c31e96be460bcb5062a1fcf7f86c1a
private void setupRecipeList(Container input, ItemStack stack) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 1061f45f20ff085c88123e7ca9aa05f8927035e2..b8a3bdb98ce4be5813996d178da06910b13d38bd 100644
index 6045ebda7250545c255c1e1c1eb614deff3dfc96..7d409becab302fdd5c3f3eaf7288cbda7de4722d 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1599,26 +1599,53 @@ public class CraftEventFactory {
@@ -1615,26 +1615,53 @@ public class CraftEventFactory {
return event;
}

View file

@ -56,10 +56,10 @@ index 1517c09ccd95448cb0fce0f9ffbb7bd2e704113b..221a695acf3cbeaeaf9eda818b6cf809
return (!this.player.joining && !this.connection.isConnected()) || this.processedDisconnect; // Paper
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 5d4ad1e41a6a0a4b520645b3dccbaff15f52d044..57641d5d1aea6b322198110dc2430055541fd5c0 100644
index 99ebc5c686b295c0c66f0073e2ede10a79b80f5c..cefac7bf8a7a73f3d195d9ed66d82f0e94462c5c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2952,6 +2952,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2982,6 +2982,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
};

View file

@ -21,10 +21,10 @@ index 06d20e9fde26540d1575975345f3d69405f767d0..959a8a170363227bb8ca833d8399f0c4
// if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
this.removeTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange * 16, prevSpawn);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 977004b4b5a294c4eab2995777df6fb1faff4625..217725e90d3c820467fe9a3b6a7116aeac255105 100644
index 3cf399c2e698af057e8e3c7036d8967318e0c415..47d4a61934f07836d9275841fa566bf1d6851381 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -261,12 +261,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -262,12 +262,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean setSpawnLocation(int x, int y, int z, float angle) {
try {

View file

@ -6,23 +6,20 @@ Subject: [PATCH] Add BellRingEvent
Add a new event, BellRingEvent, to trigger whenever a player rings a
village bell. Passes along the bell block and the player who rang it.
diff --git a/src/main/java/net/minecraft/world/level/block/BellBlock.java b/src/main/java/net/minecraft/world/level/block/BellBlock.java
index 8ccf71bddb2637a9e468e3d958665bbd58c37647..8878d8882d7aee4d44ad8339daff180812912649 100644
--- a/src/main/java/net/minecraft/world/level/block/BellBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BellBlock.java
@@ -3,6 +3,7 @@ package net.minecraft.world.level.block;
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
+import io.papermc.paper.util.MCUtil;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.stats.Stats;
@@ -131,6 +132,7 @@ public class BellBlock extends BaseEntityBlock {
direction = world.getBlockState(pos).getValue(FACING);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 7d409becab302fdd5c3f3eaf7288cbda7de4722d..d590d0d2a2a66fdf91aca6238268aa4be91dcf9a 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -330,10 +330,11 @@ public class CraftEventFactory {
return tradeSelectEvent;
}
+ if (!new io.papermc.paper.event.block.BellRingEvent(world.getWorld().getBlockAt(MCUtil.toLocation(world, pos)), entity == null ? null : entity.getBukkitEntity()).callEvent()) return false; // Paper - BellRingEvent
((BellBlockEntity)blockEntity).onHit(direction);
world.playSound((Player)null, pos, SoundEvents.BELL_BLOCK, SoundSource.BLOCKS, 2.0F, 1.0F);
world.gameEvent(entity, GameEvent.BLOCK_CHANGE, pos);
+ @SuppressWarnings("deprecation") // Paper use deprecated event to maintain compat (it extends modern event)
public static boolean handleBellRingEvent(Level world, BlockPos position, Direction direction, Entity entity) {
Block block = CraftBlock.at(world, position);
BlockFace bukkitDirection = CraftBlock.notchToBlockFace(direction);
- BellRingEvent event = new BellRingEvent(block, bukkitDirection, (entity != null) ? entity.getBukkitEntity() : null);
+ BellRingEvent event = new io.papermc.paper.event.block.BellRingEvent(block, bukkitDirection, (entity != null) ? entity.getBukkitEntity() : null); // Paper - deprecated BellRingEvent
Bukkit.getPluginManager().callEvent(event);
return !event.isCancelled();
}

View file

@ -17,10 +17,10 @@ index 4fec26c84cb435756fe4b2dcdfc90716f342f9f1..e2ed1ab01ac95d18aa2d3553ccbc5aab
if (this.isSameThread()) {
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index 6dbc8b6b39b8d4e3c7645e6b982e97a885ee2438..2f9045d216d52fba11d1d1d1ba6a90c1c2eea3d5 100644
index ccd511f189a9ec57564b2372d7f662da15ef3bba..9b2b90453935b73a814255101f6d1bd3ff0a4362 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -517,9 +517,39 @@ public class CraftBlockData implements BlockData {
@@ -520,9 +520,39 @@ public class CraftBlockData implements BlockData {
Preconditions.checkState(CraftBlockData.MAP.put(nms, bukkit) == null, "Duplicate mapping %s->%s", nms, bukkit);
}

View file

@ -28,7 +28,7 @@ index da878e180c6b94f98dc82c6e8395f63ecc9b2c1e..a9b0f5950b6f97ea4c2a1075946b9200
super(block, propertyMap, codec);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
index 484e5d5a2793d18eb49b73898d944776a1ec48e8..05512cc19eb213b6be5c869e133376ee42827806 100644
index eebac2ea211f58c385b2ceb36ab911ac5e115296..d1aaca5de055fd5e3bf2c6d39ef397bbb2deeaae 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
@@ -98,7 +98,7 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
@ -67,10 +67,10 @@ index 0a755f38fae9dc84440f43113920c5b4c6d8218b..7b9e943b391c061782fccd2b8d705cee
public void setFlag(int flag) {
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index 780cd4f5fb4bb2ed42b0a168d94f0adde8fd0fc3..6361f096eeb5da035a01fc3a2d79f48def33b38d 100644
index 9b2b90453935b73a814255101f6d1bd3ff0a4362..a585deb47ceb721489e0da4a09a94922fef86a3f 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -53,7 +53,7 @@ public class CraftBlockData implements BlockData {
@@ -56,7 +56,7 @@ public class CraftBlockData implements BlockData {
@Override
public Material getMaterial() {

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Player elytra boost API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 56f88fbc08154d30348bdead4e79b5f96b0aeb0d..f26aa477634f50e1e868c2f56006a5f058223916 100644
index 9402f57ae6cf4316b55af93d879e770bff1cfc3d..bea687c7a4f48078e0cf3c7a2e8b1cc7371ad4ae 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -643,6 +643,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -644,6 +644,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
throw new RuntimeException("Unknown settings type");
}

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Fixed TileEntityBell memory leak
TileEntityBell has a list of entities (entitiesAtRing) that was not being cleared at the right time, causing leaks whenever a bell would be rung near a crowd of entities.
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
index 4353ad2f67556feaa0fdd34e8e907b17ab697565..feaad48e9bbc1e658324ef9e1e7e73aca0b3bf48 100644
index 30e9d4b20005dc6d20baf578f2ae958bdfcea02a..b446d6549922f3dabaaa05793d8ee3eb45566ac3 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
@@ -61,6 +61,11 @@ public class BellBlockEntity extends BlockEntity {
@@ -63,6 +63,11 @@ public class BellBlockEntity extends BlockEntity {
if (blockEntity.ticks >= 50) {
blockEntity.shaking = false;
@ -21,7 +21,7 @@ index 4353ad2f67556feaa0fdd34e8e907b17ab697565..feaad48e9bbc1e658324ef9e1e7e73ac
blockEntity.ticks = 0;
}
@@ -74,6 +79,7 @@ public class BellBlockEntity extends BlockEntity {
@@ -76,6 +81,7 @@ public class BellBlockEntity extends BlockEntity {
++blockEntity.resonationTicks;
} else {
bellEffect.run(world, pos, blockEntity.nearbyEntities);
@ -29,7 +29,7 @@ index 4353ad2f67556feaa0fdd34e8e907b17ab697565..feaad48e9bbc1e658324ef9e1e7e73ac
blockEntity.resonating = false;
}
}
@@ -116,6 +122,7 @@ public class BellBlockEntity extends BlockEntity {
@@ -125,6 +131,7 @@ public class BellBlockEntity extends BlockEntity {
}
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Fix Player spawnParticle x/y/z precision loss
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 5b3c1dbb6d37de327efb0c43d9c776b2c0b1b665..0bd24de222863654a1721529508007a8f972a1e6 100644
index f84962620f6800977dcb105eeb13b86bd8f14480..a82e1f7230e8d39f264e6a84336d88747e40b23b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2474,7 +2474,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2504,7 +2504,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (data != null && !particle.getDataType().isInstance(data)) {
throw new IllegalArgumentException("data should be " + particle.getDataType() + " got " + data.getClass());
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add OBSTRUCTED reason to BedEnterResult
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 2cbe470e30807f7c54d1726a824c3c265fd3265c..8b00741f2e17d9f1b2759ffba5d322b6e3439ab5 100644
index d590d0d2a2a66fdf91aca6238268aa4be91dcf9a..47519c7eca8ed44ea17edb0f7256b000c0af7f9d 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -264,6 +264,10 @@ public class CraftEventFactory {
@@ -265,6 +265,10 @@ public class CraftEventFactory {
return BedEnterResult.TOO_FAR_AWAY;
case NOT_SAFE:
return BedEnterResult.NOT_SAFE;

View file

@ -64,10 +64,10 @@ index 4a0321f56ef80aa4991e61f586ddd3f6b45e499b..de713f1ca1d61a6b1fca2b66de916255
public int get() {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 217725e90d3c820467fe9a3b6a7116aeac255105..d0a2e20d4d85056abb54e6916753305ef2f3dfab 100644
index 47d4a61934f07836d9275841fa566bf1d6851381..d51999ddb1403d72e38c93e5f6ad9d41ab34a059 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1808,8 +1808,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1818,8 +1818,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!this.isGameRule(rule)) return false;
@ -82,7 +82,7 @@ index 217725e90d3c820467fe9a3b6a7116aeac255105..d0a2e20d4d85056abb54e6916753305e
handle.onChanged(this.getHandle().getServer());
return true;
}
@@ -1844,8 +1849,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1854,8 +1859,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
if (!this.isGameRule(rule.getName())) return false;

View file

@ -32,10 +32,10 @@ index 1415ad60163f6584619cc7caa61f1848d6ebaa93..801c4c120e98584bcf218a4ef9bd66d7
} else {
ItemStack itemstack = tileentitydispenser.getItem(i);
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 791f1c454a1ead8eeb4c18483bf9e40b898b5f7a..48d499c60739835f603629e248a9a92f54b3cda4 100644
index 47519c7eca8ed44ea17edb0f7256b000c0af7f9d..74c45f5451f9284e3c6b46941b65f535574deda6 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1882,4 +1882,12 @@ public class CraftEventFactory {
@@ -1899,4 +1899,12 @@ public class CraftEventFactory {
EntitiesUnloadEvent event = new EntitiesUnloadEvent(new CraftChunk((ServerLevel) world, coords.x, coords.z), bukkitEntities);
Bukkit.getPluginManager().callEvent(event);
}

View file

@ -18,10 +18,10 @@ index 77eec518940ae41880e395b3dd051d89bd67c319..e6154cf74df39d0c87fc820027adc964
this.interactResult = event.useItemInHand() == Event.Result.DENY;
this.interactPosition = blockposition.immutable();
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 48d499c60739835f603629e248a9a92f54b3cda4..a7c8736391692dfdf028c40d82754adf47fd26dc 100644
index 74c45f5451f9284e3c6b46941b65f535574deda6..702a30fd7f3178ce30043283afd36a0ea6745cf9 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -58,7 +58,9 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
@@ -57,7 +57,9 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.HitResult;
@ -31,7 +31,7 @@ index 48d499c60739835f603629e248a9a92f54b3cda4..a7c8736391692dfdf028c40d82754adf
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.Server;
@@ -473,7 +475,13 @@ public class CraftEventFactory {
@@ -490,7 +492,13 @@ public class CraftEventFactory {
return CraftEventFactory.callPlayerInteractEvent(who, action, position, direction, itemstack, false, hand);
}
@ -45,7 +45,7 @@ index 48d499c60739835f603629e248a9a92f54b3cda4..a7c8736391692dfdf028c40d82754adf
Player player = (who == null) ? null : (Player) who.getBukkitEntity();
CraftItemStack itemInHand = CraftItemStack.asCraftMirror(itemstack);
@@ -499,7 +507,10 @@ public class CraftEventFactory {
@@ -516,7 +524,10 @@ public class CraftEventFactory {
itemInHand = null;
}

View file

@ -32,10 +32,10 @@ index 22f362143f7c01742dd07220dac5ea3dc691d43c..e3631616f04c3051b306fbdf49138b50
public boolean isWhiteListed(GameProfile profile) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index c0338f597b9c50218862005220a8753d5822a6e4..0b0dc51dfb7174c359305448575ae714398917e4 100644
index 69f1c668cb303d30bb228e7f79f5df462b791b2c..43d204c7013150b8525b7d0106edac6d0611d723 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -657,6 +657,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -658,6 +658,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
? (org.bukkit.entity.Firework) entity.getBukkitEntity()
: null;
}

View file

@ -17,10 +17,10 @@ index 85c5319837295bd2f85baebfe8d6660b267f1d5f..8f55d0753fa26924235c943595f0d1a0
tileentitydispenser.setItem(i, idispensebehavior.dispense(sourceblock, itemstack));
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index a7c8736391692dfdf028c40d82754adf47fd26dc..a86b1f163bf1801ba8b5118b9994c1c57808bc1a 100644
index 702a30fd7f3178ce30043283afd36a0ea6745cf9..9aca4ca86176c18428440218715485f18ea6e069 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1900,5 +1900,11 @@ public class CraftEventFactory {
@@ -1917,5 +1917,11 @@ public class CraftEventFactory {
io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block);
return event.callEvent();
}

View file

@ -122,10 +122,10 @@ index b5e35033e63da0e5f2c21fddf3b704d6730f0938..7a6cdae1b566f59508b180e720de4eff
flag1 = true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index a86b1f163bf1801ba8b5118b9994c1c57808bc1a..15b4be18064137d21565434adae97883fb0a8d6a 100644
index 9aca4ca86176c18428440218715485f18ea6e069..9beed77bacf77ab480a5fffac8c542e834730eac 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1532,8 +1532,10 @@ public class CraftEventFactory {
@@ -1549,8 +1549,10 @@ public class CraftEventFactory {
return itemInHand;
}

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Allow adding items to BlockDropItemEvent
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 15b4be18064137d21565434adae97883fb0a8d6a..451fee716b07c8daadcffc9b87973a56641e8198 100644
index 9beed77bacf77ab480a5fffac8c542e834730eac..c00b2460f40c5c806e88645af63dfeb6f89ddd00 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -399,13 +399,30 @@ public class CraftEventFactory {
@@ -416,13 +416,30 @@ public class CraftEventFactory {
}
public static void handleBlockDropItemEvent(Block block, BlockState state, ServerPlayer player, List<ItemEntity> items) {

View file

@ -5,10 +5,10 @@ Subject: [PATCH] More World API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index d0a2e20d4d85056abb54e6916753305ef2f3dfab..8a068c4fe548a3744244c96a3062e10bbf05e793 100644
index d51999ddb1403d72e38c93e5f6ad9d41ab34a059..87fca10b6e37f01250bff14862215120763232d5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2050,6 +2050,69 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2060,6 +2060,69 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return new CraftStructureSearchResult(CraftStructure.minecraftToBukkit(found.getSecond().value(), this.getHandle().registryAccess()), new Location(this, found.getFirst().getX(), found.getFirst().getY(), found.getFirst().getZ()));
}

View file

@ -142,10 +142,10 @@ index dffb219c0abdac46320aaec168e232df322a4bca..8987bbb4feed89c44e3615a58dac321a
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index a927c725d08738fdd0f42e21efd09362e9da938d..2095d844bd819321c984f5432ceec9bea135fb73 100644
index 43d204c7013150b8525b7d0106edac6d0611d723..0f73f0e377c84ed3e1064b9ce6d9254a938c1ae0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1521,7 +1521,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1551,7 +1551,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
throw new IllegalArgumentException("Mode cannot be null");
}

View file

@ -95,10 +95,10 @@ index 543d578eb87da6ff526cad7e65c8af76b1043e84..936b7f464097c30fe4dfbe4cee1c1490
if (weather.isCancelled()) {
return;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 71fbfdaab3ff03c7ba3b987d0285bbaa6d3cbce4..ad53803f90faa5805cc0e961094752830328cbf5 100644
index 87fca10b6e37f01250bff14862215120763232d5..c28f873cbc3c6f9180f051cf6277f75866415474 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1183,7 +1183,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1193,7 +1193,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setStorm(boolean hasStorm) {
@ -107,7 +107,7 @@ index 71fbfdaab3ff03c7ba3b987d0285bbaa6d3cbce4..ad53803f90faa5805cc0e96109475283
this.setWeatherDuration(0); // Reset weather duration (legacy behaviour)
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
}
@@ -1205,7 +1205,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1215,7 +1215,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setThundering(boolean thundering) {

View file

@ -491,10 +491,10 @@ index a24e7a66d52eddbdad8db71cf5e45f1a458c389f..e1c13ac7b11fb0080435fc34502208c8
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 2095d844bd819321c984f5432ceec9bea135fb73..1944f812bffbe0d2b4d0a2d879acd83c0da98497 100644
index 0f73f0e377c84ed3e1064b9ce6d9254a938c1ae0..24f77ef4a948bf5cf0346a8d8e1907f27a41cd2b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -603,7 +603,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -604,7 +604,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
org.spigotmc.AsyncCatcher.catchOp("player kick"); // Spigot
if (this.getHandle().connection == null) return;
@ -503,7 +503,7 @@ index 2095d844bd819321c984f5432ceec9bea135fb73..1944f812bffbe0d2b4d0a2d879acd83c
}
// Paper start
@@ -615,10 +615,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -616,10 +616,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void kick(final net.kyori.adventure.text.Component message) {

View file

@ -5,19 +5,19 @@ Subject: [PATCH] Add BellRevealRaiderEvent
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
index feaad48e9bbc1e658324ef9e1e7e73aca0b3bf48..648d8f3e72e30aacf68eb073a1ac30f8ec29503c 100644
index b446d6549922f3dabaaa05793d8ee3eb45566ac3..79e74a5f020ad971fdbef75c502a5aa8bead2258 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BellBlockEntity.java
@@ -138,7 +138,7 @@ public class BellBlockEntity extends BlockEntity {
private static void makeRaidersGlow(Level world, BlockPos pos, List<LivingEntity> hearingEntities) {
hearingEntities.stream().filter((entity) -> {
return isRaiderWithinRange(pos, entity);
- }).forEach(BellBlockEntity::glow);
+ }).forEach(entity -> glow(entity, pos)); // Paper - pass BlockPos
@@ -156,7 +156,7 @@ public class BellBlockEntity extends BlockEntity {
return BellBlockEntity.isRaiderWithinRange(pos, entityliving);
}).map((entity) -> (org.bukkit.entity.LivingEntity) entity.getBukkitEntity()).collect(java.util.stream.Collectors.toCollection(java.util.ArrayList::new)); // CraftBukkit
- org.bukkit.craftbukkit.event.CraftEventFactory.handleBellResonateEvent(world, pos, entities).forEach(BellBlockEntity::glow);
+ org.bukkit.craftbukkit.event.CraftEventFactory.handleBellResonateEvent(world, pos, entities).forEach(entity -> glow(entity, pos)); // Paper - pass BlockPos
// CraftBukkit end
}
private static void showBellParticles(Level world, BlockPos pos, List<LivingEntity> hearingEntities) {
@@ -170,7 +170,11 @@ public class BellBlockEntity extends BlockEntity {
@@ -191,7 +191,11 @@ public class BellBlockEntity extends BlockEntity {
return entity.isAlive() && !entity.isRemoved() && pos.closerToCenterThan(entity.position(), 48.0D) && entity.getType().is(EntityTypeTags.RAIDERS);
}

View file

@ -6,10 +6,10 @@ Subject: [PATCH] add per world spawn limits
Taken from #2982. Credit to Chasewhip8
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index ad53803f90faa5805cc0e961094752830328cbf5..3b36581c30ee7fa19de573c2ee270eefc6027c38 100644
index c28f873cbc3c6f9180f051cf6277f75866415474..39412e69ac3bc5ff15162741d7f418bd32196745 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -209,6 +209,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -210,6 +210,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
this.biomeProvider = biomeProvider;
this.environment = env;

View file

@ -37,7 +37,7 @@ Co-authored-by: William Blake Galbreath <blake.galbreath@gmail.com>
Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
index 1ec0f71cb9882648bdd1e645f5719d8c3cc53a3d..ed74f2b90afaa43ae66fbd4797d23cfac9ea9e88 100644
index f80a6ad7638453348ee82ea00b166a3aac029142..a08c00b8c0488d18be5e182f7892e5ab71d12247 100644
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -164,7 +164,7 @@ public class MobGoalHelper {
@ -786,61 +786,6 @@ index ee9648739fb39c5842063d7442df6eb5c9336d7f..67fe56cc4c2af24f6bd883c6e1485101
+ public void setPickupCooldown(int cooldown) {
+ throw new UnsupportedOperationException("Hopper minecarts don't have cooldowns");
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java
index 9569068c0a6e1eb934f063634f5d3efe674aa33d..5e3f0180accf633aa28ae87fe07464edfde50bff 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java
@@ -5,7 +5,7 @@ import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.minecart.ExplosiveMinecart;
-final class CraftMinecartTNT extends CraftMinecart implements ExplosiveMinecart {
+public final class CraftMinecartTNT extends CraftMinecart implements ExplosiveMinecart { // Paper - getHandle -> make public
CraftMinecartTNT(CraftServer server, MinecartTNT entity) {
super(server, entity);
}
@@ -19,4 +19,41 @@ final class CraftMinecartTNT extends CraftMinecart implements ExplosiveMinecart
public EntityType getType() {
return EntityType.MINECART_TNT;
}
+ // Paper start
+ @Override
+ public net.minecraft.world.entity.vehicle.MinecartTNT getHandle() {
+ return (net.minecraft.world.entity.vehicle.MinecartTNT) entity;
+ }
+
+ @Override
+ public void setFuseTicks(int fuseTicks) {
+ this.getHandle().fuse = fuseTicks;
+ }
+
+ @Override
+ public int getFuseTicks() {
+ return this.getHandle().getFuse();
+ }
+
+ @Override
+ public boolean isIgnited() {
+ return this.getHandle().isPrimed();
+ }
+
+ @Override
+ public void ignite() {
+ this.getHandle().primeFuse();
+ }
+
+ @Override
+ public void explode() {
+ explode(this.getHandle().getDeltaMovement().horizontalDistanceSqr());
+ }
+
+ @Override
+ public void explode(double power) {
+ com.google.common.base.Preconditions.checkArgument(power >= 0 && Double.isFinite(power), "Explosion power must be a finite non-negative number");
+ this.getHandle().explode(power);
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java

View file

@ -129,10 +129,10 @@ index a64cd3b54840af9a9c946b3e4e4f91d1c5f4bc97..16f23ecffa52925904d585f3fed76aa6
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 1944f812bffbe0d2b4d0a2d879acd83c0da98497..e5a9d5862461f2458987eecf05ea9a395afe368c 100644
index 24f77ef4a948bf5cf0346a8d8e1907f27a41cd2b..b16ce6bde4d7478a3fabe5a5c0a48489ada2d579 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1341,9 +1341,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1371,9 +1371,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setBedSpawnLocation(Location location, boolean override) {
if (location == null) {

View file

@ -31,10 +31,10 @@ index 16b73f0498936a8413f6adedd7f92bab07a4a108..f12d844d422ca4175d4cb2b8e3112b59
blockposition1 = blockposition1.above(2);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 3b36581c30ee7fa19de573c2ee270eefc6027c38..bf0ad61418f0832c23ed9374be91e586c73050de 100644
index 39412e69ac3bc5ff15162741d7f418bd32196745..cf0892b4d4e5d3759ce743de9a0e36bb8924c7cd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -685,6 +685,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -695,6 +695,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return (LightningStrike) lightning.getBukkitEntity();
}

View file

@ -71,10 +71,10 @@ index 6486fa86e4bf3c90c09c0425d825bab568a68757..8257563afc3fe04c9e821da363b1f3f6
int k = entity.getRemainingFireTicks();
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 451fee716b07c8daadcffc9b87973a56641e8198..30360517235b2a568b92a43aa5efc0d6759c7e8e 100644
index c00b2460f40c5c806e88645af63dfeb6f89ddd00..d2c0461bcc8e4c08bf375f76fad0c10086c40fd4 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -969,7 +969,7 @@ public class CraftEventFactory {
@@ -986,7 +986,7 @@ public class CraftEventFactory {
} else {
damageCause = DamageCause.ENTITY_EXPLOSION;
}
@ -83,7 +83,7 @@ index 451fee716b07c8daadcffc9b87973a56641e8198..30360517235b2a568b92a43aa5efc0d6
}
event.setCancelled(cancelled);
@@ -1001,7 +1001,7 @@ public class CraftEventFactory {
@@ -1018,7 +1018,7 @@ public class CraftEventFactory {
cause = DamageCause.SONIC_BOOM;
}
@ -92,7 +92,7 @@ index 451fee716b07c8daadcffc9b87973a56641e8198..30360517235b2a568b92a43aa5efc0d6
} else if (source.is(DamageTypes.OUT_OF_WORLD)) {
EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, modifiers, modifierFunctions);
event.setCancelled(cancelled);
@@ -1071,7 +1071,7 @@ public class CraftEventFactory {
@@ -1088,7 +1088,7 @@ public class CraftEventFactory {
} else {
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.getMsgId()));
}
@ -101,7 +101,7 @@ index 451fee716b07c8daadcffc9b87973a56641e8198..30360517235b2a568b92a43aa5efc0d6
event.setCancelled(cancelled);
CraftEventFactory.callEvent(event);
if (!event.isCancelled()) {
@@ -1116,20 +1116,28 @@ public class CraftEventFactory {
@@ -1133,20 +1133,28 @@ public class CraftEventFactory {
}
if (cause != null) {

View file

@ -278,7 +278,7 @@ index a1770e5ae4b3014c3538b52d4912c60864e186a8..906def91bba96bab7c7aea9b87d9ec56
// Paper start - add parameters and int ret type
spawnCategoryForChunk(group, world, chunk, checker, runner, Integer.MAX_VALUE, null);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index fdad054d9e6fedc7c6367abb12c38f66bf6fdfca..ed0aa7ddb4cd3d2f1a08baa4754b01f08a1537d1 100644
index 46755f34fb0af5dea2db8d8321caebfc163a8268..9b3f01e84b5855b64e9f59ca29e5ff9a598084a4 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -2165,6 +2165,11 @@ public final class CraftServer implements Server {
@ -294,10 +294,10 @@ index fdad054d9e6fedc7c6367abb12c38f66bf6fdfca..ed0aa7ddb4cd3d2f1a08baa4754b01f0
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index d0e1c1eb00409523f7e771cfa5ec21b6b23516cd..e955b72d6a26224c39059fa56874b5e47384b5f4 100644
index cf0892b4d4e5d3759ce743de9a0e36bb8924c7cd..dc9e6042e6c8deb997f609e10455f7947faa479e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1700,9 +1700,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1710,9 +1710,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Validate.notNull(spawnCategory, "SpawnCategory cannot be null");
Validate.isTrue(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory." + spawnCategory + " are not supported.");

View file

@ -208,7 +208,7 @@ index 9523f6acd2c86892b390e14aaab628b40b452bf1..a3e8765e00ca816781441448d8bd4ac3
this.handlingTick = true;
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 00c6605f06773c52f6f5c5c1f5bcdd6dd67fb5b6..ba1a43758bb29e3204b5f88edf4cb02af2cc07b3 100644
index 83b1bed5bb6588ad009727e473337eebaf385cfa..02cb6b8c1d59855ff4a8aad3024fe12007eca0ee 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -855,7 +855,12 @@ public abstract class Mob extends LivingEntity implements Targeting {
@ -322,10 +322,10 @@ index 906def91bba96bab7c7aea9b87d9ec56374e6588..15d266fc97eb73338f4f6fb2cfe25d68
private static Boolean isValidSpawnPostitionForType(ServerLevel world, MobCategory group, StructureManager structureAccessor, ChunkGenerator chunkGenerator, MobSpawnSettings.SpawnerData spawnEntry, BlockPos.MutableBlockPos pos, double squaredDistance) { // Paper
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 05b8b37a4b1089b859b399323ecda8f23e9f6e67..206dc04086a218b510930739a6c573f2653ab0fa 100644
index 73a3f9eae86df8e9afd08ee9da4c1b8e16dededd..d190bad5d287766ed4165ed827d9901a9d878687 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -269,6 +269,98 @@ public class LevelChunk extends ChunkAccess {
@@ -262,6 +262,98 @@ public class LevelChunk extends ChunkAccess {
}
}
// Paper end

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Add player health update API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index acc5eaab4ecfd16290f845099dfe5ea7b132a7c6..bdcc739eed7adec1610af56c47afff114dc91477 100644
index df7471ce615077933577f1e9e62933577a3b9781..d044420955a2a8e19337771ce155777a462c00fe 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2353,9 +2353,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2383,9 +2383,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().maxHealthCache = getMaxHealth();
}
@ -22,7 +22,7 @@ index acc5eaab4ecfd16290f845099dfe5ea7b132a7c6..bdcc739eed7adec1610af56c47afff11
if (this.getHandle().queueHealthUpdatePacket) {
this.getHandle().queuedHealthUpdatePacket = packet;
} else {
@@ -2364,6 +2366,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2394,6 +2396,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end
}

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Fix ChunkSnapshot#isSectionEmpty(int) and optimize
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 0fadc763fb482cf9f3b51ed44427029bec9f7f63..edb726d7db0c2e1c276458c997bbfed9b76b69d4 100644
index 72743bf4a8583c712558fb3ed1441fc7b9d2708c..ce51563e97274253363c727e541cfe4161a7ad15 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -298,13 +298,17 @@ public class CraftChunk implements Chunk {
@@ -281,13 +281,17 @@ public class CraftChunk implements Chunk {
PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>[] biome = (includeBiome || includeBiomeTempRain) ? new PalettedContainer[cs.length] : null;
Registry<net.minecraft.world.level.biome.Biome> iregistry = this.worldServer.registryAccess().registryOrThrow(Registries.BIOME);
@ -29,9 +29,9 @@ index 0fadc763fb482cf9f3b51ed44427029bec9f7f63..edb726d7db0c2e1c276458c997bbfed9
+ }
+ // Paper end
LevelLightEngine lightengine = chunk.level.getLightEngine();
LevelLightEngine lightengine = this.worldServer.getLightEngine();
DataLayer skyLightArray = lightengine.getLayerListener(LightLayer.SKY).getDataLayerData(SectionPos.of(x, i, z));
@@ -323,8 +327,7 @@ public class CraftChunk implements Chunk {
@@ -306,8 +310,7 @@ public class CraftChunk implements Chunk {
}
if (biome != null) {

View file

@ -18,7 +18,7 @@ index 24c88555ea85dd2a0656e1f67a4828a5137157b8..cbbb0ff40488c430d15c2ed054d1b288
biomeProvider = gen.getDefaultBiomeProvider(worldInfo);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 8543dd8e933364befa5d29f80f53408a2cd2606b..532ea1dd6548264f4ccc639d7cccab39a851a1ad 100644
index 9f172ccae28779ae28eeeceb4305298b9ceed44a..8be3aeab748b57a73522f6124f8e3aacf1f2ee0e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1217,7 +1217,7 @@ public final class CraftServer implements Server {
@ -31,10 +31,10 @@ index 8543dd8e933364befa5d29f80f53408a2cd2606b..532ea1dd6548264f4ccc639d7cccab39
biomeProvider = generator.getDefaultBiomeProvider(worldInfo);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index e955b72d6a26224c39059fa56874b5e47384b5f4..8fcc553b6f1bf62fb9febb46402940039c37606a 100644
index dc9e6042e6c8deb997f609e10455f7947faa479e..5f9696a4a2490baf7667fa15a8b01a5f845e5f23 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -199,6 +199,30 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -200,6 +200,30 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public int getPlayerCount() {
return world.players().size();
}

View file

@ -25,26 +25,23 @@ index c96e75456c2f8564d3bc75993cc6e03ba605597d..7c6a6693760638a07b7c7c330aaeffd9
public void write(FriendlyByteBuf buf) {
buf.writeLong(this.sectionPos.asLong());
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 64c2026a5b4231434bb750bdf95a7751942cd701..51ddd6f0265c64241ff9d8b85959346e8106fa5e 100644
index de5bd1107f21c8319178c2287a4a01091b4966b0..93a7d7a3b65c85b639bfa7a419ef8ea840b1d92f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -947,6 +947,35 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -948,6 +948,32 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(packet);
}
+ // Paper start
+ @Override
+ public void sendMultiBlockChange(Map<Location, BlockData> blockChanges, boolean suppressLightUpdates) {
+ public void sendMultiBlockChange(final Map<? extends io.papermc.paper.math.Position, BlockData> blockChanges, final boolean suppressLightUpdates) {
+ if (this.getHandle().connection == null) return;
+
+ Map<SectionPos, it.unimi.dsi.fastutil.shorts.Short2ObjectMap<net.minecraft.world.level.block.state.BlockState>> sectionMap = new HashMap<>();
+
+ for (Map.Entry<Location, BlockData> entry : blockChanges.entrySet()) {
+ Location location = entry.getKey();
+ if (!location.getWorld().equals(this.getWorld())) continue;
+
+ for (Map.Entry<? extends io.papermc.paper.math.Position, BlockData> entry : blockChanges.entrySet()) {
+ BlockData blockData = entry.getValue();
+ BlockPos blockPos = new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ());
+ BlockPos blockPos = io.papermc.paper.util.MCUtil.toBlockPos(entry.getKey());
+ SectionPos sectionPos = SectionPos.of(blockPos);
+
+ it.unimi.dsi.fastutil.shorts.Short2ObjectMap<net.minecraft.world.level.block.state.BlockState> sectionData = sectionMap.computeIfAbsent(sectionPos, key -> new it.unimi.dsi.fastutil.shorts.Short2ObjectArrayMap<>());

View file

@ -6,10 +6,10 @@ Subject: [PATCH] Implement regenerateChunk
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 8fcc553b6f1bf62fb9febb46402940039c37606a..eeeaaf379c7273c276e1faac5d6c55730d5b51bc 100644
index 5f9696a4a2490baf7667fa15a8b01a5f845e5f23..8e8edda568b60b7bb0d2ebd454c7d52df4d16d24 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -138,6 +138,7 @@ import org.bukkit.util.Vector;
@@ -139,6 +139,7 @@ import org.jetbrains.annotations.NotNull;
public class CraftWorld extends CraftRegionAccessor implements World {
public static final int CUSTOM_DIMENSION_OFFSET = 10;
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
@ -17,7 +17,7 @@ index 8fcc553b6f1bf62fb9febb46402940039c37606a..eeeaaf379c7273c276e1faac5d6c5573
private final ServerLevel world;
private WorldBorder worldBorder;
@@ -418,27 +419,62 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -429,27 +430,62 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean regenerateChunk(int x, int z) {
org.spigotmc.AsyncCatcher.catchOp("chunk regenerate"); // Spigot

View file

@ -24,10 +24,10 @@ index a92d43c0c4793a594b3e17b5e03f7e944b781a55..a968b27ef287b699f3e0d7e666741979
if (Snowball.class.isAssignableFrom(clazz)) {
entity = new net.minecraft.world.entity.projectile.Snowball(world, x, y, z);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index e52008c574d1f8738c02848c98aee12dd5fb30ab..56e086458783a5f85f88184dd063f73647c2ee8f 100644
index 8e8edda568b60b7bb0d2ebd454c7d52df4d16d24..8c566479d0936a4d21a40adb87f6272158b217bd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1394,7 +1394,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1404,7 +1404,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Validate.notNull(material, "Material cannot be null");
Validate.isTrue(material.isBlock(), "Material must be a block");
@ -41,7 +41,7 @@ index e52008c574d1f8738c02848c98aee12dd5fb30ab..56e086458783a5f85f88184dd063f736
return (FallingBlock) entity.getBukkitEntity();
}
@@ -1403,7 +1408,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1413,7 +1418,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Validate.notNull(location, "Location cannot be null");
Validate.notNull(data, "BlockData cannot be null");

View file

@ -158,10 +158,10 @@ index de713f1ca1d61a6b1fca2b66de9162556d102449..edd2c9d0cf5a81c779011cb4215d496a
this.onChanged(server);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 56e086458783a5f85f88184dd063f73647c2ee8f..e5e38c225e7c83dfb8a8427ef6a38d644a492d09 100644
index 8c566479d0936a4d21a40adb87f6272158b217bd..831c746e9aeab0fd5d6b1eec2fad4d9222c2f359 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1914,7 +1914,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1924,7 +1924,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper end
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(CraftWorld.getGameRulesNMS().get(rule));
handle.deserialize(event.getValue()); // Paper
@ -170,7 +170,7 @@ index 56e086458783a5f85f88184dd063f73647c2ee8f..e5e38c225e7c83dfb8a8427ef6a38d64
return true;
}
@@ -1954,7 +1954,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1964,7 +1964,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper end
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(CraftWorld.getGameRulesNMS().get(rule.getName()));
handle.deserialize(event.getValue()); // Paper

View file

@ -74,10 +74,10 @@ index 7df1eebce5b62214943e55314e9ec98f056fa330..2aee8aacd50431c18ff28af678348ec2
// Let the server handle cross world teleports
if (location.getWorld() != null && !location.getWorld().equals(this.getWorld())) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 51ddd6f0265c64241ff9d8b85959346e8106fa5e..0df3bb9893d5ed22a9e9f85ebc8ef7987168923a 100644
index 93a7d7a3b65c85b639bfa7a419ef8ea840b1d92f..1253b9d39582baa9f3be36b2f9f134032a7e91b3 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1234,13 +1234,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1261,13 +1261,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setRotation(float yaw, float pitch) {
@ -179,7 +179,7 @@ index 51ddd6f0265c64241ff9d8b85959346e8106fa5e..0df3bb9893d5ed22a9e9f85ebc8ef798
location.checkFinite();
ServerPlayer entity = this.getHandle();
@@ -1253,7 +1340,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1280,7 +1367,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return false;
}
@ -188,7 +188,7 @@ index 51ddd6f0265c64241ff9d8b85959346e8106fa5e..0df3bb9893d5ed22a9e9f85ebc8ef798
return false;
}
@@ -1271,7 +1358,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1298,7 +1385,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
// If this player is riding another entity, we must dismount before teleporting.
@ -197,7 +197,7 @@ index 51ddd6f0265c64241ff9d8b85959346e8106fa5e..0df3bb9893d5ed22a9e9f85ebc8ef798
// SPIGOT-5509: Wakeup, similar to riding
if (this.isSleeping()) {
@@ -1287,13 +1374,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1314,13 +1401,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
ServerLevel toWorld = ((CraftWorld) to.getWorld()).getHandle();
// Close any foreign inventory

View file

@ -18,10 +18,10 @@ index 4ace5a32e8d17303a4b5d9e8935a803d7c0df409..174f5ff8f827dab2d85cee525429d46b
private static boolean isOutsideSpawnableHeight(int y) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80e320ffc5 100644
index 831c746e9aeab0fd5d6b1eec2fad4d9222c2f359..86ffc869b57410fd4993c0fd0ae000da2e2c070c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -312,9 +312,24 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -313,9 +313,24 @@ public class CraftWorld extends CraftRegionAccessor implements World {
public boolean setSpawnLocation(int x, int y, int z) {
return this.setSpawnLocation(x, y, z, 0.0F);
}
@ -44,9 +44,9 @@ index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80
public Chunk getChunkAt(int x, int z) {
+ warnUnsafeChunk("getting a faraway chunk", x, z); // Paper
// Paper start - add ticket to hold chunk for a little while longer if plugin accesses it
net.minecraft.world.level.chunk.LevelChunk chunk = world.getChunkSource().getChunkAtIfLoadedImmediately(x, z);
net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkSource().getChunkAtIfLoadedImmediately(x, z);
if (chunk == null) {
@@ -419,6 +434,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -430,6 +445,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean regenerateChunk(int x, int z) {
org.spigotmc.AsyncCatcher.catchOp("chunk regenerate"); // Spigot
@ -54,7 +54,7 @@ index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80
// Paper start - implement regenerateChunk method
final ServerLevel serverLevel = this.world;
final net.minecraft.server.level.ServerChunkCache serverChunkCache = serverLevel.getChunkSource();
@@ -515,6 +531,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -526,6 +542,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean loadChunk(int x, int z, boolean generate) {
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot
@ -62,7 +62,7 @@ index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80
// Paper start - Optimize this method
ChunkPos chunkPos = new ChunkPos(x, z);
ChunkAccess immediate = world.getChunkSource().getChunkAtIfLoadedImmediately(x, z); // Paper
@@ -579,6 +596,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -589,6 +606,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public boolean addPluginChunkTicket(int x, int z, Plugin plugin) {
@ -70,7 +70,7 @@ index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80
Preconditions.checkArgument(plugin != null, "null plugin");
Preconditions.checkArgument(plugin.isEnabled(), "plugin is not enabled");
@@ -647,6 +665,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -657,6 +675,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public void setChunkForceLoaded(int x, int z, boolean forced) {
@ -78,7 +78,7 @@ index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80
this.getHandle().setChunkForced(x, z, forced);
}
@@ -958,6 +977,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -968,6 +987,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
@ -86,7 +86,7 @@ index e5e38c225e7c83dfb8a8427ef6a38d644a492d09..e25f2922abb0c83789796aa6fcf8fe80
// Transient load for this tick
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
}
@@ -2334,6 +2354,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2344,6 +2364,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Spigot end
// Paper start
public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent) {

View file

@ -5,10 +5,10 @@ Subject: [PATCH] Custom Chat Completion Suggestions API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 0df3bb9893d5ed22a9e9f85ebc8ef7987168923a..7ad4d931f6dabff1400695fcc016da2cd8f7df07 100644
index 1253b9d39582baa9f3be36b2f9f134032a7e91b3..63da84519af19680d93c5d845d337ec784f2dc9e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -669,6 +669,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -670,6 +670,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().getServer().getPlayerList().sendPlayerPermissionLevel(this.getHandle(), level, false);
}

View file

@ -31,12 +31,12 @@ index 0d30b388d8d93a6dbbf8dfb30d26eb44c73e1e4e..962c950ca9c7e047a3aec215d4faa736
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index b052f197a4616e0e6151f81ec3287666b64da5ad..d70541cf10674aeb7581043d09269793f109e657 100644
index a585deb47ceb721489e0da4a09a94922fef86a3f..27344a44b776311801b03034730fd6710190e11a 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -662,4 +662,11 @@ public class CraftBlockData implements BlockData {
public Material getPlacementMaterial() {
return CraftMagicNumbers.getMaterial(this.state.getBlock().asItem());
@@ -675,4 +675,11 @@ public class CraftBlockData implements BlockData {
public void mirror(Mirror mirror) {
this.state = this.state.mirror(net.minecraft.world.level.block.Mirror.valueOf(mirror.name()));
}
+
+ // Paper start - Block tick API

View file

@ -1,32 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: TheFruxz <cedricspitzer@outlook.de>
Date: Sat, 26 Mar 2022 18:41:36 +0100
Subject: [PATCH] Add custom destroyerIdentity to sendBlockDamage
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 7ad4d931f6dabff1400695fcc016da2cd8f7df07..0bb3a20c1f390b14edc9286eee5d976ab7d45f44 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1032,13 +1032,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void sendBlockDamage(Location loc, float progress) {
+ // Paper start - customBlockDamage identity
+ sendBlockDamage(loc, progress, this.getHandle().getId());
+ }
+
+ @Override
+ public void sendBlockDamage(Location loc, float progress, int destroyerIdentity) {
+ // Paper end - customBlockDamage identity
Preconditions.checkArgument(loc != null, "loc must not be null");
Preconditions.checkArgument(progress >= 0.0 && progress <= 1.0, "progress must be between 0.0 and 1.0 (inclusive)");
if (this.getHandle().connection == null) return;
int stage = (int) (9 * progress); // There are 0 - 9 damage states
- ClientboundBlockDestructionPacket packet = new ClientboundBlockDestructionPacket(this.getHandle().getId(), new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), stage);
+ ClientboundBlockDestructionPacket packet = new ClientboundBlockDestructionPacket(destroyerIdentity, new BlockPos(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()), stage); // Paper - customBlockDamage identity
this.getHandle().connection.send(packet);
}

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