Plex-FAWE/worldedit-core/src/main/java/com/boydti/fawe/regions/general/plot/FaweLocalBlockQueue.java

142 lines
3.8 KiB
Java
Raw Normal View History

package com.boydti.fawe.regions.general.plot;
2019-07-22 09:05:14 +00:00
import com.boydti.fawe.Fawe;
import com.boydti.fawe.FaweAPI;
import com.boydti.fawe.FaweCache;
2019-07-18 20:49:29 +00:00
import com.boydti.fawe.beta.IQueueExtent;
import com.github.intellectualsites.plotsquared.plot.object.PlotBlock;
import com.github.intellectualsites.plotsquared.plot.util.StringMan;
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.extension.platform.Capability;
2019-07-22 09:05:14 +00:00
import com.sk89q.worldedit.world.World;
2019-04-03 05:53:58 +00:00
import com.sk89q.worldedit.world.biome.BiomeType;
2019-04-03 13:25:16 +00:00
import com.sk89q.worldedit.world.biome.BiomeTypes;
import com.sk89q.worldedit.world.biome.Biomes;
import com.sk89q.worldedit.world.block.BaseBlock;
2019-07-22 09:05:14 +00:00
import com.sk89q.worldedit.world.block.BlockState;
import com.sk89q.worldedit.world.registry.BiomeRegistry;
import com.sk89q.worldedit.world.registry.LegacyMapper;
2019-04-05 04:15:10 +00:00
import java.util.Collection;
// TODO FIXME
public class FaweLocalBlockQueue extends LocalBlockQueue {
2019-07-18 20:49:29 +00:00
public final IQueueExtent IMP;
private final LegacyMapper legacyMapper;
2019-08-18 01:09:09 +00:00
private final World world;
2019-07-22 09:05:14 +00:00
public FaweLocalBlockQueue(String worldName) {
super(worldName);
2019-08-18 01:09:09 +00:00
this.world = FaweAPI.getWorld(worldName);
2019-07-22 09:05:14 +00:00
IMP = Fawe.get().getQueueHandler().getQueue(world);
legacyMapper = LegacyMapper.getInstance();
}
@Override
public boolean next() {
2019-07-22 09:05:14 +00:00
if (!IMP.isEmpty()) {
IMP.flush();
}
return false;
}
@Override
public void startSet(boolean parallel) {
2019-07-22 09:05:14 +00:00
Fawe.get().getQueueHandler().startSet(parallel);
}
@Override
public void endSet(boolean parallel) {
2019-07-22 09:05:14 +00:00
Fawe.get().getQueueHandler().endSet(parallel);
}
@Override
public int size() {
2019-07-22 09:05:14 +00:00
return IMP.isEmpty() ? 0 : 1;
}
@Override
public void optimize() {
}
@Override
public void setModified(long l) {
}
@Override
public long getModified() {
2019-07-22 09:05:14 +00:00
return IMP.size();
}
2019-07-22 20:42:40 +00:00
@Override
public boolean setBlock(final int x, final int y, final int z, final PlotBlock id) {
2019-07-22 20:42:40 +00:00
return setBlock(x, y, z, legacyMapper.getBaseBlockFromPlotBlock(id));
}
2019-07-22 20:42:40 +00:00
@Override
public boolean setBlock(final int x, final int y, final int z, final BaseBlock id) {
2019-07-22 20:42:40 +00:00
return IMP.setBlock(x, y, z, id);
}
@Override
public PlotBlock getBlock(int x, int y, int z) {
2019-07-22 09:05:14 +00:00
BlockState block = IMP.getBlock(x, y, z);
return PlotBlock.get(block.toBaseBlock());
}
2019-04-03 05:53:58 +00:00
private BiomeType biome;
private String lastBiome;
private BiomeRegistry reg;
@Override
public boolean setBiome(int x, int z, String biome) {
if (!StringMan.isEqual(biome, lastBiome)) {
if (reg == null) {
reg = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.USER_COMMANDS).getRegistries().getBiomeRegistry();
}
2019-04-05 04:15:10 +00:00
Collection<BiomeType> biomes = BiomeTypes.values();
lastBiome = biome;
this.biome = Biomes.findBiomeByName(biomes, biome, reg);
}
2019-07-22 09:05:14 +00:00
return IMP.setBiome(x, 0, z, this.biome);
}
@Override
public String getWorld() {
2019-08-18 01:09:09 +00:00
return world.getId();
}
@Override
public void flush() {
IMP.flush();
}
@Override
public void enqueue() {
super.enqueue();
2019-07-22 09:05:14 +00:00
IMP.enableQueue();
}
@Override
public void refreshChunk(int x, int z) {
2019-07-22 20:58:18 +00:00
IMP.sendChunk(x, z, 0);
}
@Override
public void fixChunkLighting(int x, int z) {
}
@Override
public void regenChunk(int x, int z) {
2019-07-22 09:05:14 +00:00
IMP.regenerateChunk(x, z, null, null);
}
@Override
public boolean setTile(int x, int y, int z, CompoundTag tag) {
2019-08-18 01:09:09 +00:00
IMP.setTile(x, y, z, (com.sk89q.jnbt.CompoundTag) FaweCache.IMP.asTag(tag));
return true;
}
}