mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-01-23 00:21:30 +01:00
Remove NMS support and add setBlock raw setter
This commit is contained in:
parent
8e93aca953
commit
75586e1648
@ -9,6 +9,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBlock;
|
||||
@ -38,6 +39,14 @@ public interface PasteHandler {
|
||||
|
||||
CompletableFuture<Void> setBlock(Island island, Location location, BlueprintBlock bpBlock);
|
||||
|
||||
/**
|
||||
* Set the block at location to the block data
|
||||
* @param location
|
||||
* @param blockData
|
||||
* @return
|
||||
*/
|
||||
Block setBlock(Location location, BlockData blockData);
|
||||
|
||||
/**
|
||||
* Create a future to paste the entities
|
||||
*
|
||||
|
@ -7,6 +7,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
|
||||
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBlock;
|
||||
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintEntity;
|
||||
@ -43,4 +45,12 @@ public class PasteHandlerImpl implements PasteHandler {
|
||||
public CompletableFuture<Void> setBlock(Island island, Location location, BlueprintBlock bpBlock) {
|
||||
return DefaultPasteUtil.setBlock(island, location, bpBlock);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block setBlock(Location location, BlockData blockData) {
|
||||
Block block = location.getBlock();
|
||||
block.setBlockData(blockData);
|
||||
return block;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
package world.bentobox.bentobox.nms.v1_21_1_R0_1_SNAPSHOT;
|
||||
|
||||
/**
|
||||
* Same as 1.21
|
||||
*/
|
||||
public class PasteHandlerImpl extends world.bentobox.bentobox.nms.v1_21_R0_1_SNAPSHOT.PasteHandlerImpl {
|
||||
// Do nothing special
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package world.bentobox.bentobox.nms.v1_21_1_R0_1_SNAPSHOT;
|
||||
|
||||
/**
|
||||
* Same as 1.21
|
||||
*/
|
||||
public class WorldRegeneratorImpl extends world.bentobox.bentobox.nms.v1_21_R0_1_SNAPSHOT.WorldRegeneratorImpl {
|
||||
// Do nothing special
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package world.bentobox.bentobox.nms.v1_21_2_R0_1_SNAPSHOT;
|
||||
|
||||
/**
|
||||
* Same as 1.21
|
||||
*/
|
||||
public class PasteHandlerImpl extends world.bentobox.bentobox.nms.v1_21_R0_1_SNAPSHOT.PasteHandlerImpl {
|
||||
// Do nothing special
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package world.bentobox.bentobox.nms.v1_21_2_R0_1_SNAPSHOT;
|
||||
|
||||
/**
|
||||
* Same as 1.21
|
||||
*/
|
||||
public class WorldRegeneratorImpl extends world.bentobox.bentobox.nms.v1_21_R0_1_SNAPSHOT.WorldRegeneratorImpl {
|
||||
// Do nothing special
|
||||
}
|
@ -31,9 +31,19 @@ public class PasteHandlerImpl implements PasteHandler {
|
||||
@Override
|
||||
public CompletableFuture<Void> setBlock(Island island, Location location, BlueprintBlock bpBlock) {
|
||||
return Util.getChunkAtAsync(location).thenRun(() -> {
|
||||
Block block = setBlock(location, DefaultPasteUtil.createBlockData(bpBlock));
|
||||
DefaultPasteUtil.setBlockState(island, block, bpBlock);
|
||||
// Set biome
|
||||
if (bpBlock.getBiome() != null) {
|
||||
block.setBiome(bpBlock.getBiome());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block setBlock(Location location, BlockData bd) {
|
||||
Block block = location.getBlock();
|
||||
// Set the block data - default is AIR
|
||||
BlockData bd = DefaultPasteUtil.createBlockData(bpBlock);
|
||||
CraftBlockData craft = (CraftBlockData) bd;
|
||||
net.minecraft.world.level.World nmsWorld = ((CraftWorld) location.getWorld()).getHandle();
|
||||
Chunk nmsChunk = nmsWorld.d(location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
@ -42,11 +52,6 @@ public class PasteHandlerImpl implements PasteHandler {
|
||||
nmsChunk.a(bp, AIR, false);
|
||||
nmsChunk.a(bp, craft.getState(), false);
|
||||
block.setBlockData(bd, false);
|
||||
DefaultPasteUtil.setBlockState(island, block, bpBlock);
|
||||
// Set biome
|
||||
if (bpBlock.getBiome() != null) {
|
||||
block.setBiome(bpBlock.getBiome());
|
||||
}
|
||||
});
|
||||
return block;
|
||||
}
|
||||
}
|
||||
|
@ -31,17 +31,7 @@ public class PasteHandlerImpl implements PasteHandler {
|
||||
@Override
|
||||
public CompletableFuture<Void> setBlock(Island island, Location location, BlueprintBlock bpBlock) {
|
||||
return Util.getChunkAtAsync(location).thenRun(() -> {
|
||||
Block block = location.getBlock();
|
||||
// Set the block data - default is AIR
|
||||
BlockData bd = DefaultPasteUtil.createBlockData(bpBlock);
|
||||
CraftBlockData craft = (CraftBlockData) bd;
|
||||
net.minecraft.world.level.World nmsWorld = ((CraftWorld) location.getWorld()).getHandle();
|
||||
Chunk nmsChunk = nmsWorld.d(location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
BlockPosition bp = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
// Setting the block to air before setting to another state prevents some console errors
|
||||
nmsChunk.a(bp, AIR, false);
|
||||
nmsChunk.a(bp, craft.getState(), false);
|
||||
block.setBlockData(bd, false);
|
||||
Block block = setBlock(location, DefaultPasteUtil.createBlockData(bpBlock));
|
||||
DefaultPasteUtil.setBlockState(island, block, bpBlock);
|
||||
// Set biome
|
||||
if (bpBlock.getBiome() != null) {
|
||||
@ -49,4 +39,19 @@ public class PasteHandlerImpl implements PasteHandler {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block setBlock(Location location, BlockData bd) {
|
||||
Block block = location.getBlock();
|
||||
// Set the block data - default is AIR
|
||||
CraftBlockData craft = (CraftBlockData) bd;
|
||||
net.minecraft.world.level.World nmsWorld = ((CraftWorld) location.getWorld()).getHandle();
|
||||
Chunk nmsChunk = nmsWorld.d(location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
BlockPosition bp = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
// Setting the block to air before setting to another state prevents some console errors
|
||||
nmsChunk.a(bp, AIR, false);
|
||||
nmsChunk.a(bp, craft.getState(), false);
|
||||
block.setBlockData(bd, false);
|
||||
return block;
|
||||
}
|
||||
}
|
||||
|
@ -1,52 +0,0 @@
|
||||
package world.bentobox.bentobox.nms.v1_21_R0_1_SNAPSHOT;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.craftbukkit.v1_21_R1.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_21_R1.block.data.CraftBlockData;
|
||||
|
||||
import net.minecraft.core.BlockPosition;
|
||||
import net.minecraft.world.level.block.state.IBlockData;
|
||||
import net.minecraft.world.level.chunk.Chunk;
|
||||
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBlock;
|
||||
import world.bentobox.bentobox.database.objects.Island;
|
||||
import world.bentobox.bentobox.nms.PasteHandler;
|
||||
import world.bentobox.bentobox.util.DefaultPasteUtil;
|
||||
import world.bentobox.bentobox.util.Util;
|
||||
|
||||
public class PasteHandlerImpl implements PasteHandler {
|
||||
|
||||
protected static final IBlockData AIR = ((CraftBlockData) AIR_BLOCKDATA).getState();
|
||||
|
||||
/**
|
||||
* Set the block to the location
|
||||
*
|
||||
* @param island - island
|
||||
* @param location - location
|
||||
* @param bpBlock - blueprint block
|
||||
*/
|
||||
@Override
|
||||
public CompletableFuture<Void> setBlock(Island island, Location location, BlueprintBlock bpBlock) {
|
||||
return Util.getChunkAtAsync(location).thenRun(() -> {
|
||||
Block block = location.getBlock();
|
||||
// Set the block data - default is AIR
|
||||
BlockData bd = DefaultPasteUtil.createBlockData(bpBlock);
|
||||
CraftBlockData craft = (CraftBlockData) bd;
|
||||
net.minecraft.world.level.World nmsWorld = ((CraftWorld) location.getWorld()).getHandle();
|
||||
Chunk nmsChunk = nmsWorld.d(location.getBlockX() >> 4, location.getBlockZ() >> 4);
|
||||
BlockPosition bp = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
// Setting the block to air before setting to another state prevents some console errors
|
||||
nmsChunk.a(bp, AIR, false);
|
||||
nmsChunk.a(bp, craft.getState(), false);
|
||||
block.setBlockData(bd, false);
|
||||
DefaultPasteUtil.setBlockState(island, block, bpBlock);
|
||||
// Set biome
|
||||
if (bpBlock.getBiome() != null) {
|
||||
block.setBiome(bpBlock.getBiome());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package world.bentobox.bentobox.nms.v1_21_R0_1_SNAPSHOT;
|
||||
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.craftbukkit.v1_21_R1.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_21_R1.block.data.CraftBlockData;
|
||||
|
||||
import net.minecraft.core.BlockPosition;
|
||||
import net.minecraft.world.level.World;
|
||||
import net.minecraft.world.level.chunk.Chunk;
|
||||
import world.bentobox.bentobox.nms.CopyWorldRegenerator;
|
||||
|
||||
public class WorldRegeneratorImpl extends CopyWorldRegenerator {
|
||||
|
||||
@Override
|
||||
public void setBlockInNativeChunk(org.bukkit.Chunk chunk, int x, int y, int z, BlockData blockData,
|
||||
boolean applyPhysics) {
|
||||
CraftBlockData craft = (CraftBlockData) blockData;
|
||||
World nmsWorld = ((CraftWorld) chunk.getWorld()).getHandle();
|
||||
Chunk nmsChunk = nmsWorld.d(chunk.getX(), chunk.getZ());
|
||||
BlockPosition bp = new BlockPosition((chunk.getX() << 4) + x, y, (chunk.getZ() << 4) + z);
|
||||
// Setting the block to air before setting to another state prevents some console errors
|
||||
nmsChunk.a(bp, PasteHandlerImpl.AIR, applyPhysics);
|
||||
nmsChunk.a(bp, craft.getState(), applyPhysics);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user