mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 13:16:45 +01:00
Support v2 schematics properly. No 3D biomes are supported by it as yet. (#2716)
This commit is contained in:
parent
2f4eea118a
commit
412a3ee344
@ -7,26 +7,17 @@ import com.github.intellectualsites.plotsquared.plot.util.MainUtil;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.SchematicHandler;
|
import com.github.intellectualsites.plotsquared.plot.util.SchematicHandler;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
import com.github.intellectualsites.plotsquared.plot.util.TaskManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
||||||
import com.sk89q.jnbt.ByteArrayTag;
|
import com.sk89q.jnbt.*;
|
||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.jnbt.IntArrayTag;
|
import com.sk89q.worldedit.extension.platform.Capability;
|
||||||
import com.sk89q.jnbt.IntTag;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.jnbt.ListTag;
|
|
||||||
import com.sk89q.jnbt.ShortTag;
|
|
||||||
import com.sk89q.jnbt.StringTag;
|
|
||||||
import com.sk89q.jnbt.Tag;
|
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.util.ArrayDeque;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,7 +43,9 @@ public class BukkitSchematicHandler extends SchematicHandler {
|
|||||||
int height = cuboidRegion.getHeight();
|
int height = cuboidRegion.getHeight();
|
||||||
final int length = cuboidRegion.getLength();
|
final int length = cuboidRegion.getLength();
|
||||||
Map<String, Tag> schematic = new HashMap<>();
|
Map<String, Tag> schematic = new HashMap<>();
|
||||||
schematic.put("Version", new IntTag(1));
|
schematic.put("Version", new IntTag(2));
|
||||||
|
schematic.put("DataVersion", new IntTag(WorldEdit.getInstance().getPlatformManager()
|
||||||
|
.queryCapability(Capability.WORLD_EDITING).getDataVersion()));
|
||||||
|
|
||||||
Map<String, Tag> metadata = new HashMap<>();
|
Map<String, Tag> metadata = new HashMap<>();
|
||||||
metadata.put("WEOffsetX", new IntTag(0));
|
metadata.put("WEOffsetX", new IntTag(0));
|
||||||
@ -69,9 +62,11 @@ public class BukkitSchematicHandler extends SchematicHandler {
|
|||||||
schematic.put("Offset", new IntArrayTag(new int[] {0, 0, 0,}));
|
schematic.put("Offset", new IntArrayTag(new int[] {0, 0, 0,}));
|
||||||
|
|
||||||
Map<String, Integer> palette = new HashMap<>();
|
Map<String, Integer> palette = new HashMap<>();
|
||||||
|
Map<String, Integer> biomePalette = new HashMap<>();
|
||||||
|
|
||||||
List<CompoundTag> tileEntities = new ArrayList<>();
|
List<CompoundTag> tileEntities = new ArrayList<>();
|
||||||
ByteArrayOutputStream buffer = new ByteArrayOutputStream(width * height * length);
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream(width * height * length);
|
||||||
|
ByteArrayOutputStream biomeBuffer = new ByteArrayOutputStream(width * length);
|
||||||
// Queue
|
// Queue
|
||||||
final ArrayDeque<CuboidRegion> queue = new ArrayDeque<>(regions);
|
final ArrayDeque<CuboidRegion> queue = new ArrayDeque<>(regions);
|
||||||
TaskManager.runTask(new Runnable() {
|
TaskManager.runTask(new Runnable() {
|
||||||
@ -88,6 +83,14 @@ public class BukkitSchematicHandler extends SchematicHandler {
|
|||||||
schematic.put("BlockData", new ByteArrayTag(buffer.toByteArray()));
|
schematic.put("BlockData", new ByteArrayTag(buffer.toByteArray()));
|
||||||
schematic.put("TileEntities",
|
schematic.put("TileEntities",
|
||||||
new ListTag(CompoundTag.class, tileEntities));
|
new ListTag(CompoundTag.class, tileEntities));
|
||||||
|
|
||||||
|
schematic.put("BiomePaletteMax", new IntTag(biomePalette.size()));
|
||||||
|
|
||||||
|
Map<String, Tag> biomePaletteTag = new HashMap<>();
|
||||||
|
biomePalette.forEach((key, value) -> biomePaletteTag.put(key, new IntTag(value)));
|
||||||
|
|
||||||
|
schematic.put("BiomePalette", new CompoundTag(biomePaletteTag));
|
||||||
|
schematic.put("BiomeData", new ByteArrayTag(biomeBuffer.toByteArray()));
|
||||||
whenDone.value = new CompoundTag(schematic);
|
whenDone.value = new CompoundTag(schematic);
|
||||||
TaskManager.runTask(whenDone);
|
TaskManager.runTask(whenDone);
|
||||||
});
|
});
|
||||||
@ -177,6 +180,31 @@ public class BukkitSchematicHandler extends SchematicHandler {
|
|||||||
blockId >>>= 7;
|
blockId >>>= 7;
|
||||||
}
|
}
|
||||||
buffer.write(blockId);
|
buffer.write(blockId);
|
||||||
|
|
||||||
|
if (ry == sy) {
|
||||||
|
BlockVector2 pt =
|
||||||
|
BlockVector2.at(x, z);
|
||||||
|
BiomeType biome =
|
||||||
|
cuboidRegion.getWorld()
|
||||||
|
.getBiome(pt);
|
||||||
|
String biomeStr = biome.getId();
|
||||||
|
int biomeId;
|
||||||
|
if (biomePalette
|
||||||
|
.containsKey(biomeStr)) {
|
||||||
|
biomeId =
|
||||||
|
biomePalette.get(biomeStr);
|
||||||
|
} else {
|
||||||
|
biomeId = biomePalette.size();
|
||||||
|
biomePalette
|
||||||
|
.put(biomeStr, biomeId);
|
||||||
|
}
|
||||||
|
while ((biomeId & -128) != 0) {
|
||||||
|
biomeBuffer
|
||||||
|
.write(biomeId & 127 | 128);
|
||||||
|
biomeId >>>= 7;
|
||||||
|
}
|
||||||
|
biomeBuffer.write(biomeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (xiter.hasNext()) {
|
if (xiter.hasNext()) {
|
||||||
this.run();
|
this.run();
|
||||||
|
@ -9,9 +9,7 @@ import com.github.intellectualsites.plotsquared.plot.util.world.BlockUtil;
|
|||||||
import com.sk89q.jnbt.CompoundTag;
|
import com.sk89q.jnbt.CompoundTag;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.WorldEditException;
|
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
import com.sk89q.worldedit.function.operation.Operations;
|
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
@ -90,6 +88,9 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
|||||||
@Override public final void setComponents(LocalChunk lc)
|
@Override public final void setComponents(LocalChunk lc)
|
||||||
throws ExecutionException, InterruptedException {
|
throws ExecutionException, InterruptedException {
|
||||||
setBaseBlocks(lc);
|
setBaseBlocks(lc);
|
||||||
|
if (setBiome()) {
|
||||||
|
setBiomes(lc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBaseBlocks(LocalChunk localChunk) {
|
public void setBaseBlocks(LocalChunk localChunk) {
|
||||||
@ -143,22 +144,26 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setBiomes(LocalChunk lc) {
|
public void setBiomes(LocalChunk lc) {
|
||||||
if (lc.biomes != null) {
|
World worldObj = Bukkit.getWorld(getWorld());
|
||||||
World worldObj = Bukkit.getWorld(getWorld());
|
if (worldObj == null) {
|
||||||
int bx = lc.getX() << 4;
|
throw new NullPointerException("World cannot be null.");
|
||||||
int bz = lc.getX() << 4;
|
}
|
||||||
|
PaperLib.getChunkAtAsync(worldObj, lc.getX(), lc.getZ(), true).thenAccept(chunk -> {
|
||||||
for (int x = 0; x < lc.biomes.length; x++) {
|
for (int x = 0; x < lc.biomes.length; x++) {
|
||||||
BiomeType[] biomes2 = lc.biomes[x];
|
BiomeType[] biomeZ = lc.biomes[x];
|
||||||
if (biomes2 != null) {
|
if (biomeZ != null) {
|
||||||
for (BiomeType biomeStr : biomes2) {
|
for (int z = 0; z < biomeZ.length; z++) {
|
||||||
if (biomeStr != null) {
|
if (biomeZ[z] != null) {
|
||||||
Biome biome = BukkitAdapter.adapt(biomeStr);
|
BiomeType biomeType = biomeZ[z];
|
||||||
worldObj.setBiome(bx, bz, biome);
|
|
||||||
|
Biome biome = BukkitAdapter.adapt(biomeType);
|
||||||
|
worldObj
|
||||||
|
.setBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, biome);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import com.github.intellectualsites.plotsquared.plot.object.PlotId;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
|
import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -34,6 +35,10 @@ public class HybridGen extends IndependentPlotGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BiomeType biome = world.G_SCH_B.get(MathMan.pair(relativeX, relativeZ));
|
||||||
|
if (biome != null) {
|
||||||
|
result.setBiome(x, z, biome);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void generateChunk(@NotNull ScopedLocalBlockQueue result, @NotNull PlotArea settings) {
|
@Override public void generateChunk(@NotNull ScopedLocalBlockQueue result, @NotNull PlotArea settings) {
|
||||||
|
@ -118,6 +118,12 @@ public class HybridPlotManager extends ClassicPlotManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BiomeType biome = hybridPlotWorld.G_SCH_B.get(MathMan.pair(absX, absZ));
|
||||||
|
if (biome != null) {
|
||||||
|
queue.setBiome(x, z, biome);
|
||||||
|
} else {
|
||||||
|
queue.setBiome(x, z, hybridPlotWorld.PLOT_BIOME);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,12 @@ import com.sk89q.jnbt.CompoundTagBuilder;
|
|||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.extent.transform.BlockTransformExtent;
|
import com.sk89q.worldedit.extent.transform.BlockTransformExtent;
|
||||||
import com.sk89q.worldedit.internal.helper.MCDirections;
|
import com.sk89q.worldedit.internal.helper.MCDirections;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.math.Vector3;
|
import com.sk89q.worldedit.math.Vector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.util.Direction;
|
import com.sk89q.worldedit.util.Direction;
|
||||||
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -36,6 +38,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
|||||||
public short PATH_WIDTH_LOWER;
|
public short PATH_WIDTH_LOWER;
|
||||||
public short PATH_WIDTH_UPPER;
|
public short PATH_WIDTH_UPPER;
|
||||||
public HashMap<Integer, BaseBlock[]> G_SCH;
|
public HashMap<Integer, BaseBlock[]> G_SCH;
|
||||||
|
public HashMap<Integer, BiomeType> G_SCH_B;
|
||||||
public int SCHEM_Y;
|
public int SCHEM_Y;
|
||||||
private Location SIGN_LOCATION;
|
private Location SIGN_LOCATION;
|
||||||
|
|
||||||
@ -211,6 +214,10 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
|||||||
id, false, h3);
|
id, false, h3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BiomeType biome = blockArrayClipboard3
|
||||||
|
.getBiome(BlockVector2.at(x + min.getBlockX(), z + min.getBlockZ()));
|
||||||
|
addOverlayBiome((short) (x + shift + oddshift + centerShiftX),
|
||||||
|
(short) (z + shift + oddshift + centerShiftZ), biome);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* HashMap<BlockLoc, CompoundTag> items = schematic3.getTiles();
|
/* HashMap<BlockLoc, CompoundTag> items = schematic3.getTiles();
|
||||||
@ -319,4 +326,19 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
|||||||
}
|
}
|
||||||
existing[y] = id;
|
existing[y] = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addOverlayBiome(short x, short z, BiomeType id) {
|
||||||
|
if (z < 0) {
|
||||||
|
z += this.SIZE;
|
||||||
|
} else if (z >= this.SIZE) {
|
||||||
|
z -= this.SIZE;
|
||||||
|
}
|
||||||
|
if (x < 0) {
|
||||||
|
x += this.SIZE;
|
||||||
|
} else if (x >= this.SIZE) {
|
||||||
|
x -= this.SIZE;
|
||||||
|
}
|
||||||
|
int pair = MathMan.pair(x, z);
|
||||||
|
this.G_SCH_B.put(pair, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.worldedit.math.BlockVector2;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
@ -613,6 +614,14 @@ public abstract class HybridUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BiomeType biome = plotWorld.G_SCH_B.get(MathMan.pair(absX, absZ));
|
||||||
|
if (biome != null) {
|
||||||
|
queue.setBiome(finalX + X + plotWorld.ROAD_OFFSET_X,
|
||||||
|
finalZ + Z + plotWorld.ROAD_OFFSET_Z, biome);
|
||||||
|
} else {
|
||||||
|
queue.setBiome(finalX + X + plotWorld.ROAD_OFFSET_X,
|
||||||
|
finalZ + Z + plotWorld.ROAD_OFFSET_Z, plotWorld.PLOT_BIOME);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import com.sk89q.worldedit.extent.clipboard.io.SpongeSchematicReader;
|
|||||||
import com.sk89q.worldedit.math.BlockVector2;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -234,6 +235,11 @@ public abstract class SchematicHandler {
|
|||||||
BaseBlock id = blockArrayClipboard
|
BaseBlock id = blockArrayClipboard
|
||||||
.getFullBlock(BlockVector3.at(rx, ry, rz));
|
.getFullBlock(BlockVector3.at(rx, ry, rz));
|
||||||
queue.setBlock(xx, yy, zz, id);
|
queue.setBlock(xx, yy, zz, id);
|
||||||
|
if (ry == 0) {
|
||||||
|
BiomeType biome =
|
||||||
|
blockArrayClipboard.getBiome(BlockVector2.at(rx, rz));
|
||||||
|
queue.setBiome(xx, zz, biome);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -392,7 +398,7 @@ public abstract class SchematicHandler {
|
|||||||
TaskManager.runTask(whenDone);
|
TaskManager.runTask(whenDone);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MainUtil.upload(uuid, file, "schematic", new RunnableVal<OutputStream>() {
|
MainUtil.upload(uuid, file, "schem", new RunnableVal<OutputStream>() {
|
||||||
@Override public void run(OutputStream output) {
|
@Override public void run(OutputStream output) {
|
||||||
try (NBTOutputStream nos = new NBTOutputStream(
|
try (NBTOutputStream nos = new NBTOutputStream(
|
||||||
new GZIPOutputStream(output, true))) {
|
new GZIPOutputStream(output, true))) {
|
||||||
@ -444,7 +450,7 @@ public abstract class SchematicHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class UnsupportedFormatException extends Exception {
|
public static class UnsupportedFormatException extends Exception {
|
||||||
/**
|
/**
|
||||||
* Throw with a message.
|
* Throw with a message.
|
||||||
*
|
*
|
||||||
|
@ -24,6 +24,7 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
|||||||
private LocalChunk lastWrappedChunk;
|
private LocalChunk lastWrappedChunk;
|
||||||
private int lastX = Integer.MIN_VALUE;
|
private int lastX = Integer.MIN_VALUE;
|
||||||
private int lastZ = Integer.MIN_VALUE;
|
private int lastZ = Integer.MIN_VALUE;
|
||||||
|
private boolean setbiome = false;
|
||||||
|
|
||||||
public BasicLocalBlockQueue(String world) {
|
public BasicLocalBlockQueue(String world) {
|
||||||
super(world);
|
super(world);
|
||||||
@ -139,9 +140,14 @@ public abstract class BasicLocalBlockQueue extends LocalBlockQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.setBiome(x & 15, z & 15, biomeType);
|
result.setBiome(x & 15, z & 15, biomeType);
|
||||||
|
setbiome = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public final boolean setBiome() {
|
||||||
|
return setbiome;
|
||||||
|
}
|
||||||
|
|
||||||
public final void setChunk(LocalChunk chunk) {
|
public final void setChunk(LocalChunk chunk) {
|
||||||
LocalChunk previous = this.blockChunks.put(chunk.longHash(), chunk);
|
LocalChunk previous = this.blockChunks.put(chunk.longHash(), chunk);
|
||||||
if (previous != null) {
|
if (previous != null) {
|
||||||
|
@ -80,6 +80,10 @@ public class DelegateLocalBlockQueue extends LocalBlockQueue {
|
|||||||
return parent.setBiome(x, z, biome);
|
return parent.setBiome(x, z, biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public boolean setBiome() {
|
||||||
|
return parent.setBiome();
|
||||||
|
}
|
||||||
|
|
||||||
@Override public String getWorld() {
|
@Override public String getWorld() {
|
||||||
return parent.getWorld();
|
return parent.getWorld();
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,8 @@ public abstract class LocalBlockQueue {
|
|||||||
|
|
||||||
public abstract boolean setBiome(int x, int z, BiomeType biome);
|
public abstract boolean setBiome(int x, int z, BiomeType biome);
|
||||||
|
|
||||||
|
public abstract boolean setBiome();
|
||||||
|
|
||||||
public abstract String getWorld();
|
public abstract String getWorld();
|
||||||
|
|
||||||
public abstract void flush();
|
public abstract void flush();
|
||||||
|
Loading…
Reference in New Issue
Block a user