geforkt von Mirrors/Paper
2873869bb1
Signs no longer have a specific isEdiable state, the entire API in this regard needs updating/deprecation. The boolean field is completely gone, replaced by a uuid (which will need a new setEditingPlayer(UUID) method on the Sign interface), and the current upstream implementation of setEdiable simply flips the is_waxed state. This patch is hence not needed as it neither allows editing (which will be redone in a later patch) nor is required to copy the is_waxed boolean flag as it lives in the signs compound tag and is covered by applyTo.
57 Zeilen
2.4 KiB
Diff
57 Zeilen
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: dfsek <dfsek@protonmail.com>
|
|
Date: Sat, 19 Jun 2021 20:15:59 -0700
|
|
Subject: [PATCH] Add more LimitedRegion API
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java
|
|
index 10fb28aabf8c9f764cdd614edbeec4523f8ab431..0ea1586bab74983fca19dcc5415fbc7a044fe186 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftLimitedRegion.java
|
|
@@ -251,4 +251,45 @@ public class CraftLimitedRegion extends CraftRegionAccessor implements LimitedRe
|
|
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);
|
|
+ getHandle().scheduleTick(position, getHandle().getBlockState(position).getBlock(), 0);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void scheduleFluidUpdate(int x, int y, int z) {
|
|
+ BlockPos position = new BlockPos(x, y, z);
|
|
+ getHandle().scheduleTick(position, getHandle().getFluidState(position).getType(), 0);
|
|
+ }
|
|
+
|
|
+ @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
|
|
}
|