193 lines
5.0 KiB
Java
193 lines
5.0 KiB
Java
package com.boydti.fawe.nukkit.optimization;
|
|
|
|
import cn.nukkit.Nukkit;
|
|
import cn.nukkit.Player;
|
|
import cn.nukkit.event.EventHandler;
|
|
import cn.nukkit.event.Listener;
|
|
import cn.nukkit.event.player.PlayerFormRespondedEvent;
|
|
import cn.nukkit.event.player.PlayerQuitEvent;
|
|
import com.boydti.fawe.Fawe;
|
|
import com.boydti.fawe.IFawe;
|
|
import com.boydti.fawe.config.Settings;
|
|
import com.boydti.fawe.nukkit.core.NukkitTaskManager;
|
|
import com.boydti.fawe.nukkit.core.NukkitWorldEdit;
|
|
import com.boydti.fawe.nukkit.core.gui.NukkitFormBuilder;
|
|
import com.boydti.fawe.nukkit.listener.BrushListener;
|
|
import com.boydti.fawe.nukkit.optimization.queue.NukkitQueue;
|
|
import com.boydti.fawe.object.FaweChunk;
|
|
import com.boydti.fawe.object.FaweCommand;
|
|
import com.boydti.fawe.object.FawePlayer;
|
|
import com.boydti.fawe.object.FaweQueue;
|
|
import com.boydti.fawe.object.brush.visualization.VisualChunk;
|
|
import com.boydti.fawe.regions.FaweMaskManager;
|
|
import com.boydti.fawe.util.TaskManager;
|
|
import com.boydti.fawe.util.gui.FormBuilder;
|
|
import com.sk89q.worldedit.world.World;
|
|
import java.io.File;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.UUID;
|
|
import java.util.logging.Level;
|
|
|
|
public class FaweNukkit implements IFawe, Listener {
|
|
|
|
private final NukkitWorldEdit plugin;
|
|
|
|
public FaweNukkit(NukkitWorldEdit mod) {
|
|
this.plugin = mod;
|
|
FaweChunk.HEIGHT = 256;
|
|
VisualChunk.VISUALIZE_BLOCK = 20 << 4;
|
|
|
|
|
|
|
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
|
try {
|
|
new BrushListener(mod);
|
|
} catch (Throwable e) {
|
|
debug("====== BRUSH LISTENER FAILED ======");
|
|
e.printStackTrace();
|
|
debug("===================================");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public FormBuilder getFormBuilder() {
|
|
return new NukkitFormBuilder();
|
|
}
|
|
|
|
@Override
|
|
public int getPlayerCount() {
|
|
return plugin.getServer().getOnlinePlayers().size();
|
|
}
|
|
|
|
@Override
|
|
public boolean isOnlineMode() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public String getPlatformVersion() {
|
|
return Nukkit.VERSION;
|
|
}
|
|
|
|
@EventHandler
|
|
public void onFormSubmit(PlayerFormRespondedEvent event) {
|
|
// TODO
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
|
Player player = event.getPlayer();
|
|
FawePlayer fp = FawePlayer.wrap(player);
|
|
if (fp != null) {
|
|
fp.unregister();
|
|
}
|
|
Fawe.get().unregister(event.getPlayer().getName());
|
|
}
|
|
|
|
@Override
|
|
public void debug(String s) {
|
|
if (plugin.getWELogger() == null) {
|
|
System.out.println(s);
|
|
} else {
|
|
plugin.getWELogger().log(Level.INFO, s);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public File getDirectory() {
|
|
return plugin.getDataFolder();
|
|
}
|
|
|
|
@Override
|
|
public void setupCommand(String label, final FaweCommand cmd) {
|
|
plugin.getServer().getCommandMap().register(label, new NukkitCommand(label, cmd));
|
|
|
|
|
|
}
|
|
|
|
@Override
|
|
public FawePlayer wrap(Object obj) {
|
|
if (obj.getClass() == String.class) {
|
|
String name = (String) obj;
|
|
FawePlayer existing = Fawe.get().getCachedPlayer(name);
|
|
if (existing != null) {
|
|
return existing;
|
|
}
|
|
return new FaweNukkitPlayer(getPlugin().getServer().getPlayer(name));
|
|
} else if (obj instanceof Player) {
|
|
Player player = (Player) obj;
|
|
FawePlayer existing = Fawe.get().getCachedPlayer(player.getName());
|
|
return existing != null ? existing : new FaweNukkitPlayer(player);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public NukkitWorldEdit getPlugin() {
|
|
return plugin;
|
|
}
|
|
|
|
@Override
|
|
public void setupVault() {
|
|
|
|
}
|
|
|
|
@Override
|
|
public TaskManager getTaskManager() {
|
|
return new NukkitTaskManager(plugin);
|
|
}
|
|
|
|
@Override
|
|
public FaweQueue getNewQueue(World world, boolean fast) {
|
|
Settings.IMP.HISTORY.COMBINE_STAGES = false;
|
|
return new NukkitQueue(this, world);
|
|
}
|
|
|
|
@Override
|
|
public FaweQueue getNewQueue(String world, boolean fast) {
|
|
Settings.IMP.HISTORY.COMBINE_STAGES = false;
|
|
return new NukkitQueue(this, world);
|
|
}
|
|
|
|
@Override
|
|
public String getWorldName(World world) {
|
|
return world.getName();
|
|
}
|
|
|
|
@Override
|
|
public Collection<FaweMaskManager> getMaskManagers() {
|
|
return new ArrayList<>();
|
|
}
|
|
|
|
@Override
|
|
public void startMetrics() {
|
|
Metrics metrics = new Metrics(plugin);
|
|
metrics.start();
|
|
}
|
|
|
|
@Override
|
|
public String getPlatform() {
|
|
return "nukkit";
|
|
}
|
|
|
|
@Override
|
|
public UUID getUUID(String name) {
|
|
try {
|
|
return UUID.fromString(name);
|
|
} catch (Exception e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String getName(UUID uuid) {
|
|
return uuid.toString();
|
|
}
|
|
|
|
@Override
|
|
public Object getBlocksHubApi() {
|
|
return null;
|
|
}
|
|
}
|