Remove Shields from Check Arena

This commit is contained in:
2025-06-08 22:34:05 +02:00
parent 1a570dca17
commit dfd9febd8c
4 changed files with 36 additions and 4 deletions
@@ -21,9 +21,11 @@ package de.steamwar.fightsystem.utils;
import com.sk89q.jnbt.NBTInputStream;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.bukkit.BukkitBlockRegistry;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
@@ -39,6 +41,7 @@ import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.session.ClipboardHolder;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockType;
import com.sk89q.worldedit.world.block.BlockTypes;
import de.steamwar.fightsystem.Config;
import de.steamwar.fightsystem.FightSystem;
@@ -47,6 +50,7 @@ import de.steamwar.sql.SchematicData;
import de.steamwar.sql.SchematicNode;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.util.Vector;
import java.io.ByteArrayOutputStream;
@@ -147,4 +151,15 @@ public class WorldeditWrapper14 implements WorldeditWrapper {
new SchematicData(schem).saveFromBytes(outputStream.toByteArray(), NodeData.SchematicFormat.SPONGE_V2);
}
@Override
public void fillRegion(org.bukkit.World world, Region region, Material material) {
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(world), -1);
try {
e.setBlocks(new CuboidRegion(new BukkitWorld(world), BlockVector3.at(region.getMinX(), region.getMinY(), region.getMinZ()), BlockVector3.at(region.getMaxX(), region.getMaxY(), region.getMaxZ())), BlockTypes.get(material.name()).getDefaultState().toBaseBlock());
} catch (MaxChangedBlocksException ex) {
throw new RuntimeException(ex);
}
e.flushSession();
}
}
@@ -20,11 +20,9 @@
package de.steamwar.fightsystem.utils;
import com.sk89q.jnbt.NBTInputStream;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.*;
import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.blocks.BlockType;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
@@ -145,4 +143,15 @@ public class WorldeditWrapper8 implements WorldeditWrapper {
new SchematicData(schem).saveFromBytes(outputStream.toByteArray(), NodeData.SchematicFormat.MCEDIT);
}
@Override
public void fillRegion(org.bukkit.World world, Region region, Material material) {
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(world), -1);
try {
e.setBlocks(new CuboidRegion(new BukkitWorld(world), BlockVector.toBlockPoint(region.getMinX(), region.getMinY(), region.getMinZ()), BlockVector.toBlockPoint(region.getMaxX(), region.getMaxY(), region.getMaxZ())), new BaseBlock(BlockType.lookup(material.name()).getID()));
} catch (MaxChangedBlocksException ex) {
throw new RuntimeException(ex);
}
e.flushQueue();
}
}
@@ -140,6 +140,11 @@ public class FightSchematic extends StateDependent {
FreezeWorld freezer = new FreezeWorld();
team.teleportToSpawn();
if(Config.mode == ArenaMode.CHECK) {
WorldeditWrapper.impl.fillRegion(Config.world, region, Material.AIR);
}
Vector dims = WorldeditWrapper.impl.getDimensions(clipboard);
WorldeditWrapper.impl.pasteClipboard(
clipboard,
@@ -27,6 +27,8 @@ import de.steamwar.fightsystem.FightSystem;
import de.steamwar.sql.SchematicNode;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.util.Vector;
import java.io.IOException;
@@ -40,4 +42,5 @@ public interface WorldeditWrapper {
Vector getDimensions(Clipboard clipboard);
Clipboard loadChar(String charName) throws IOException;
void saveSchem(SchematicNode schem, Region region, int minY) throws WorldEditException;
void fillRegion(World world, Region region, Material material);
}