reduce diff

This commit is contained in:
Jesse Boyd
2019-11-21 07:57:32 +00:00
parent 52a502a1c6
commit 37b6c406ac
18 changed files with 248 additions and 269 deletions

View File

@ -190,48 +190,50 @@ public class BukkitWorld extends AbstractWorld {
@Override
public boolean regenerate(Region region, EditSession editSession) {
/*
BaseBlock[] history = new BaseBlock[16 * 16 * (getMaxY() + 1)];
for (BlockVector2 chunk : region.getChunks()) {
BlockVector3 min = BlockVector3.at(chunk.getBlockX() * 16, 0, chunk.getBlockZ() * 16);
// First save all the blocks inside
for (int x = 0; x < 16; ++x) {
for (int y = 0; y < (getMaxY() + 1); ++y) {
for (int z = 0; z < 16; ++z) {
BlockVector3 pt = min.add(x, y, z);
int index = y * 16 * 16 + z * 16 + x;
history[index] = editSession.getFullBlock(pt);
}
}
}
try {
getWorld().regenerateChunk(chunk.getBlockX(), chunk.getBlockZ());
} catch (Throwable t) {
logger.warn("Chunk generation via Bukkit raised an error", t);
}
// Then restore
for (int x = 0; x < 16; ++x) {
for (int y = 0; y < (getMaxY() + 1); ++y) {
for (int z = 0; z < 16; ++z) {
BlockVector3 pt = min.add(x, y, z);
int index = y * 16 * 16 + z * 16 + x;
// We have to restore the block if it was outside
if (!region.contains(pt)) {
editSession.smartSetBlock(pt, history[index]);
} else { // Otherwise fool with history
editSession.getChangeSet().add(new BlockChange(pt, history[index], editSession.getFullBlock(pt)));
}
}
}
}
}
return true;
*/
return editSession.regenerate(region);
// BaseBlock[] history = new BaseBlock[16 * 16 * (getMaxY() + 1)];
//
// for (BlockVector2 chunk : region.getChunks()) {
// BlockVector3 min = BlockVector3.at(chunk.getBlockX() * 16, 0, chunk.getBlockZ() * 16);
//
// // First save all the blocks inside
// for (int x = 0; x < 16; ++x) {
// for (int y = 0; y < (getMaxY() + 1); ++y) {
// for (int z = 0; z < 16; ++z) {
// BlockVector3 pt = min.add(x, y, z);
// int index = y * 16 * 16 + z * 16 + x;
// history[index] = editSession.getFullBlock(pt);
// }
// }
// }
//
// try {
// getWorld().regenerateChunk(chunk.getBlockX(), chunk.getBlockZ());
// } catch (Throwable t) {
// logger.warn("Chunk generation via Bukkit raised an error", t);
// }
//
// // Then restore
// for (int x = 0; x < 16; ++x) {
// for (int y = 0; y < (getMaxY() + 1); ++y) {
// for (int z = 0; z < 16; ++z) {
// BlockVector3 pt = min.add(x, y, z);
// int index = y * 16 * 16 + z * 16 + x;
//
// // We have to restore the block if it was outside
// if (!region.contains(pt)) {
// editSession.smartSetBlock(pt, history[index]);
// } else { // Otherwise fool with history
// editSession.getChangeSet().add(new BlockChange(pt, history[index], editSession.getFullBlock(pt)));
// }
// }
// }
// }
// }
//
// return true;
}
/**
@ -514,28 +516,38 @@ public class BukkitWorld extends AbstractWorld {
return false;
}
@Override
public boolean useItem(BlockVector3 position, BaseItem item, Direction face) {
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
if (adapter != null) {
return adapter.simulateItemUse(getWorld(), position, item, face);
}
return false;
}
@Override
public BiomeType getBiome(BlockVector2 position) {
return BukkitAdapter.adapt(getWorld().getBiome(position.getBlockX(), position.getBlockZ()));
}
@Override
public <T extends BlockStateHolder<T>> boolean setBlock(int x, int y, int z, T block)
throws WorldEditException {
return setBlock(BlockVector3.at(x,y,z), block);
}
@Override
public boolean setTile(int x, int y, int z, CompoundTag tile) throws WorldEditException {
return false;
}
@Override
public boolean setBiome(BlockVector2 position, BiomeType biome) {
getWorld().setBiome(position.getBlockX(), position.getBlockZ(), BukkitAdapter.adapt(biome));
return true;
}
@Override
public <T extends BlockStateHolder<T>> boolean setBlock(int x, int y, int z, T block)
throws WorldEditException {
return setBlock(BlockVector3.at(x,y,z), block);
}
@Override
public boolean setTile(int x, int y, int z, CompoundTag tile) throws WorldEditException {
return false;
}
@Override
public boolean setBiome(int x, int y, int z, BiomeType biome) {
return setBiome(BlockVector2.at(x,z), biome);
@ -556,14 +568,4 @@ public class BukkitWorld extends AbstractWorld {
org.bukkit.entity.Player bukkitPlayer = BukkitAdapter.adapt(player);
WorldEditPlugin.getInstance().getBukkitImplAdapter().sendFakeChunk(getWorld(), bukkitPlayer, packet);
}
@Override
public boolean useItem(BlockVector3 position, BaseItem item, Direction face) {
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
if (adapter != null) {
return adapter.simulateItemUse(getWorld(), position, item, face);
}
return false;
}
}