geforkt von Mirrors/FastAsyncWorldEdit
Made a few schematic related fixes. Made the deprecation error more obvious.
Dieser Commit ist enthalten in:
Ursprung
9f9fda72b7
Commit
3f1f52d1f1
@ -22,8 +22,6 @@ package com.sk89q.worldedit;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||
import com.sk89q.worldedit.command.ClipboardCommands;
|
||||
import com.sk89q.worldedit.command.SchematicCommands;
|
||||
import com.sk89q.worldedit.entity.Entity;
|
||||
@ -32,11 +30,9 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
|
||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||
import com.sk89q.worldedit.regions.Region;
|
||||
import com.sk89q.worldedit.schematic.SchematicFormat;
|
||||
import com.sk89q.worldedit.world.DataException;
|
||||
import com.sk89q.worldedit.world.block.BlockStateHolder;
|
||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -83,7 +79,7 @@ public class CuboidClipboard {
|
||||
checkNotNull(size);
|
||||
|
||||
this.size = size;
|
||||
data = new BaseBlock[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
|
||||
data = new BlockStateHolder[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
|
||||
origin = new Vector();
|
||||
offset = new Vector();
|
||||
}
|
||||
@ -100,7 +96,7 @@ public class CuboidClipboard {
|
||||
checkNotNull(origin);
|
||||
|
||||
this.size = size;
|
||||
data = new BaseBlock[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
|
||||
data = new BlockStateHolder[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
|
||||
this.origin = origin;
|
||||
offset = new Vector();
|
||||
}
|
||||
@ -119,7 +115,7 @@ public class CuboidClipboard {
|
||||
checkNotNull(offset);
|
||||
|
||||
this.size = size;
|
||||
data = new BaseBlock[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
|
||||
data = new BlockStateHolder[size.getBlockX()][size.getBlockY()][size.getBlockZ()];
|
||||
this.origin = origin;
|
||||
this.offset = offset;
|
||||
}
|
||||
@ -160,8 +156,12 @@ public class CuboidClipboard {
|
||||
for (int x = 0; x < size.getBlockX(); ++x) {
|
||||
for (int y = 0; y < size.getBlockY(); ++y) {
|
||||
for (int z = 0; z < size.getBlockZ(); ++z) {
|
||||
data[x][y][z] =
|
||||
editSession.getBlock(new Vector(x, y, z).add(getOrigin()));
|
||||
BaseBlock fullBlock = editSession.getFullBlock(new Vector(x, y, z).add(getOrigin()));
|
||||
if (fullBlock.getNbtData() != null) {
|
||||
data[x][y][z] = fullBlock;
|
||||
} else {
|
||||
data[x][y][z] = fullBlock.toImmutableState();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -179,7 +179,12 @@ public class CuboidClipboard {
|
||||
for (int z = 0; z < size.getBlockZ(); ++z) {
|
||||
final Vector pt = new Vector(x, y, z).add(getOrigin());
|
||||
if (region.contains(pt)) {
|
||||
data[x][y][z] = editSession.getBlock(pt);
|
||||
BaseBlock fullBlock = editSession.getFullBlock(pt);
|
||||
if (fullBlock.getNbtData() != null) {
|
||||
data[x][y][z] = fullBlock;
|
||||
} else {
|
||||
data[x][y][z] = fullBlock.toImmutableState();
|
||||
}
|
||||
} else {
|
||||
data[x][y][z] = null;
|
||||
}
|
||||
@ -287,26 +292,6 @@ public class CuboidClipboard {
|
||||
this.entities.add(new CopiedEntity(entity));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the block at the given position.
|
||||
*
|
||||
* <p>If the position is out of bounds, air will be returned.</p>
|
||||
*
|
||||
* @param position the point, relative to the origin of the copy (0, 0, 0) and not to the actual copy origin
|
||||
* @return air, if this block was outside the (non-cuboid) selection while copying
|
||||
* @throws ArrayIndexOutOfBoundsException if the position is outside the bounds of the CuboidClipboard
|
||||
* @deprecated use {@link #getBlock(Vector)} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public BlockStateHolder getPoint(Vector position) throws ArrayIndexOutOfBoundsException {
|
||||
final BlockStateHolder block = getBlock(position);
|
||||
if (block == null) {
|
||||
return BlockTypes.AIR.getDefaultState();
|
||||
}
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the block at the given position.
|
||||
*
|
||||
@ -327,7 +312,7 @@ public class CuboidClipboard {
|
||||
* @param block the block to set
|
||||
* @throws ArrayIndexOutOfBoundsException if the position is outside the bounds of the CuboidClipboard
|
||||
*/
|
||||
public void setBlock(Vector position, BaseBlock block) {
|
||||
public void setBlock(Vector position, BlockStateHolder block) {
|
||||
data[position.getBlockX()][position.getBlockY()][position.getBlockZ()] = block;
|
||||
}
|
||||
|
||||
@ -340,35 +325,6 @@ public class CuboidClipboard {
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the clipboard data to a .schematic-format file.
|
||||
*
|
||||
* @param path the path to the file to save
|
||||
* @throws IOException thrown on I/O error
|
||||
* @throws DataException thrown on error writing the data for other reasons
|
||||
* @deprecated use {@link SchematicFormat#MCEDIT}
|
||||
*/
|
||||
@Deprecated
|
||||
public void saveSchematic(File path) throws IOException, DataException {
|
||||
checkNotNull(path);
|
||||
SchematicFormat.MCEDIT.save(this, path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a .schematic file into a clipboard.
|
||||
*
|
||||
* @param path the path to the file to load
|
||||
* @return a clipboard
|
||||
* @throws IOException thrown on I/O error
|
||||
* @throws DataException thrown on error writing the data for other reasons
|
||||
* @deprecated use {@link SchematicFormat#MCEDIT}
|
||||
*/
|
||||
@Deprecated
|
||||
public static CuboidClipboard loadSchematic(File path) throws DataException, IOException {
|
||||
checkNotNull(path);
|
||||
return SchematicFormat.MCEDIT.load(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the origin point, which corresponds to where the copy was
|
||||
* originally copied from. The origin is the lowest possible X, Y, and
|
||||
|
@ -57,7 +57,7 @@ public enum ClipboardFormat {
|
||||
|
||||
@Override
|
||||
public ClipboardWriter getWriter(OutputStream outputStream) throws IOException {
|
||||
throw new UnsupportedOperationException("This clipboard format is deprecated.");
|
||||
throw new IOException("This clipboard format no longer supports saving.");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -85,7 +85,7 @@ public enum ClipboardFormat {
|
||||
*
|
||||
* @param aliases an array of aliases by which this format may be referred to
|
||||
*/
|
||||
private ClipboardFormat(String ... aliases) {
|
||||
ClipboardFormat(String... aliases) {
|
||||
this.aliases = aliases;
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,8 @@ import com.sk89q.worldedit.CuboidClipboard;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.blocks.BaseBlock;
|
||||
import com.sk89q.worldedit.world.DataException;
|
||||
import com.sk89q.worldedit.world.block.BlockState;
|
||||
import com.sk89q.worldedit.world.registry.LegacyMapper;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.File;
|
||||
@ -181,12 +183,13 @@ public class MCEditSchematicFormat extends SchematicFormat {
|
||||
for (int z = 0; z < length; ++z) {
|
||||
int index = y * width * length + z * width + x;
|
||||
BlockVector pt = new BlockVector(x, y, z);
|
||||
BaseBlock block = getBlockForId(blocks[index], blockData[index]);
|
||||
BlockState state = LegacyMapper.getInstance().getBlockFromLegacy(blocks[index], blockData[index]);
|
||||
|
||||
if (tileEntitiesMap.containsKey(pt)) {
|
||||
block.setNbtData(new CompoundTag(tileEntitiesMap.get(pt)));
|
||||
clipboard.setBlock(pt, new BaseBlock(state, new CompoundTag(tileEntitiesMap.get(pt))));
|
||||
} else {
|
||||
clipboard.setBlock(pt, state);
|
||||
}
|
||||
clipboard.setBlock(pt, block);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -201,7 +204,7 @@ public class MCEditSchematicFormat extends SchematicFormat {
|
||||
|
||||
@Override
|
||||
public void save(CuboidClipboard clipboard, File file) throws IOException, DataException {
|
||||
throw new UnsupportedOperationException("Saving is deprecated");
|
||||
throw new DataException("This clipboard format no longer supports saving.");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -83,42 +83,6 @@ public abstract class SchematicFormat {
|
||||
return lookupNames;
|
||||
}
|
||||
|
||||
public BaseBlock getBlockForId(int id, short data) {
|
||||
BaseBlock block;
|
||||
switch (id) {
|
||||
/*case BlockID.WALL_SIGN:
|
||||
case BlockID.SIGN_POST:
|
||||
block = new SignBlock(id, data);
|
||||
break;
|
||||
|
||||
case BlockID.CHEST:
|
||||
block = new ChestBlock(data);
|
||||
break;
|
||||
|
||||
case BlockID.FURNACE:
|
||||
case BlockID.BURNING_FURNACE:
|
||||
block = new FurnaceBlock(id, data);
|
||||
break;
|
||||
|
||||
case BlockID.DISPENSER:
|
||||
block = new DispenserBlock(data);
|
||||
break;
|
||||
|
||||
case BlockID.MOB_SPAWNER:
|
||||
block = new MobSpawnerBlock(id);
|
||||
break;
|
||||
|
||||
case BlockID.NOTE_BLOCK:
|
||||
block = new NoteBlock(data);
|
||||
break;*/
|
||||
|
||||
default:
|
||||
block = new BaseBlock(id, data);
|
||||
break;
|
||||
}
|
||||
return block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a schematic from the given file into a CuboidClipboard
|
||||
* @param file The file to load from
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren