Fight FightWorld

This commit is contained in:
2026-05-16 13:07:06 +02:00
parent a100d2d798
commit e7454f6ce8
@@ -20,15 +20,19 @@
package de.steamwar.misslewars; package de.steamwar.misslewars;
import de.steamwar.core.CraftbukkitWrapper; import de.steamwar.core.CraftbukkitWrapper;
import net.minecraft.world.level.chunk.Chunk; import net.minecraft.core.BlockPos;
import net.minecraft.world.level.chunk.LevelChunk;
import net.minecraft.world.level.chunk.LevelChunkSection;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.WorldCreator; import org.bukkit.WorldCreator;
import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.HashSet;
import java.util.Set;
import java.util.function.ObjIntConsumer; import java.util.function.ObjIntConsumer;
public class FightWorld { public class FightWorld {
@@ -71,10 +75,14 @@ public class FightWorld {
} }
private static void resetChunk(World world, World backup, int x, int z) { private static void resetChunk(World world, World backup, int x, int z) {
Chunk chunk = ((CraftWorld) world).getHandle().d(x, z); LevelChunk worldChunk = ((CraftWorld) world).getHandle().getChunk(x, z);
Chunk backupChunk = ((CraftWorld) backup).getHandle().d(x, z); LevelChunk backupChunk = ((CraftWorld) backup).getHandle().getChunk(x, z);
LevelChunkSection[] sections = worldChunk.getSections();
System.arraycopy(backupChunk.d(), 0, chunk.d(), 0, chunk.d().length); System.arraycopy(backupChunk.getSections(), 0, sections, 0, sections.length);
Set<BlockPos> blocks = new HashSet<>(worldChunk.blockEntities.keySet());
blocks.stream().filter(key -> !backupChunk.blockEntities.containsKey(key)).forEach(worldChunk::removeBlockEntity);
worldChunk.heightmaps.clear();
worldChunk.heightmaps.putAll(backupChunk.heightmaps);
for(Player p : Bukkit.getOnlinePlayers()) for(Player p : Bukkit.getOnlinePlayers())
CraftbukkitWrapper.impl.sendChunk(p, x, z); CraftbukkitWrapper.impl.sendChunk(p, x, z);