2021-06-20 06:48:30 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: dfsek <dfsek@protonmail.com>
|
|
|
|
Date: Sat, 19 Jun 2021 20:15:59 -0700
|
2021-08-28 15:43:26 +02:00
|
|
|
Subject: [PATCH] Add more LimitedRegion API
|
2021-06-20 06:48:30 +02:00
|
|
|
|
|
|
|
|
2021-08-28 15:43:26 +02:00
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java
|
2023-05-12 13:10:08 +02:00
|
|
|
index 10fb28aabf8c9f764cdd614edbeec4523f8ab431..0ea1586bab74983fca19dcc5415fbc7a044fe186 100644
|
2021-08-28 15:43:26 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java
|
2023-05-12 13:10:08 +02:00
|
|
|
@@ -251,4 +251,45 @@ public class CraftLimitedRegion extends CraftRegionAccessor implements LimitedRe
|
2021-08-28 15:43:26 +02:00
|
|
|
public void addEntityToWorld(net.minecraft.world.entity.Entity entity, CreatureSpawnEvent.SpawnReason reason) {
|
|
|
|
this.entities.add(entity);
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+ // Paper start
|
|
|
|
+ @Override
|
|
|
|
+ public void setBlockState(int x, int y, int z, BlockState state) {
|
|
|
|
+ BlockPos pos = new BlockPos(x, y, z);
|
|
|
|
+ if (!state.getBlockData().matches(getHandle().getBlockState(pos).createCraftBlockData())) {
|
|
|
|
+ throw new IllegalArgumentException("BlockData does not match! Expected " + state.getBlockData().getAsString(false) + ", got " + getHandle().getBlockState(pos).createCraftBlockData().getAsString(false));
|
|
|
|
+ }
|
|
|
|
+ getHandle().getBlockEntity(pos).load(((org.bukkit.craftbukkit.block.CraftBlockEntityState<?>) state).getSnapshotNBT());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void scheduleBlockUpdate(int x, int y, int z) {
|
|
|
|
+ BlockPos position = new BlockPos(x, y, z);
|
2022-02-12 14:51:13 +01:00
|
|
|
+ getHandle().scheduleTick(position, getHandle().getBlockState(position).getBlock(), 0);
|
2021-08-28 15:43:26 +02:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void scheduleFluidUpdate(int x, int y, int z) {
|
|
|
|
+ BlockPos position = new BlockPos(x, y, z);
|
2021-11-25 00:26:29 +01:00
|
|
|
+ getHandle().scheduleTick(position, getHandle().getFluidState(position).getType(), 0);
|
2021-08-28 15:43:26 +02:00
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public World getWorld() {
|
|
|
|
+ // reading/writing the returned Minecraft world causes a deadlock.
|
|
|
|
+ // By implementing this, and covering it in warnings, we're assuming people won't be stupid, and
|
|
|
|
+ // if they are stupid, they'll figure it out pretty fast.
|
|
|
|
+ return getHandle().getMinecraftWorld().getWorld();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public int getCenterChunkX() {
|
|
|
|
+ return centerChunkX;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public int getCenterChunkZ() {
|
|
|
|
+ return centerChunkZ;
|
|
|
|
+ }
|
|
|
|
+ // Paper end
|
|
|
|
}
|