FastAsyncWorldedit/favs/src/main/java/com/boydti/fawe/bukkit/favs/Favs.java

108 lines
4.5 KiB
Java

package com.boydti.fawe.bukkit.favs;
import com.boydti.fawe.Fawe;
import com.boydti.fawe.bukkit.BukkitCommand;
import com.boydti.fawe.object.FaweCommand;
import com.boydti.fawe.object.FawePlayer;
import com.boydti.fawe.util.Jars;
import com.boydti.fawe.util.MainUtil;
import com.boydti.fawe.bukkit.favs.Metrics;
import com.thevoxelbox.voxelsniper.RangeBlockHelper;
import com.thevoxelbox.voxelsniper.SnipeData;
import com.thevoxelbox.voxelsniper.Sniper;
import com.thevoxelbox.voxelsniper.brush.WarpBrush;
import com.thevoxelbox.voxelsniper.brush.perform.PerformBrush;
import com.thevoxelbox.voxelsniper.command.VoxelVoxelCommand;
import com.thevoxelbox.voxelsniper.event.SniperBrushChangedEvent;
import com.thevoxelbox.voxelsniper.event.SniperMaterialChangedEvent;
import java.io.File;
import java.io.FileOutputStream;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Favs extends JavaPlugin {
private static final int BSTATS_ID = 6405;
@Override
public void onEnable() {
try {
if (Bukkit.getPluginManager().getPlugin("VoxelSniper") == null) {
try {
File thisFile = MainUtil.getJarFile();
String thisName = thisFile.getName().toLowerCase();
File output = null;
for (File file : getDataFolder().getParentFile().listFiles()) {
String name = file.getName().toLowerCase();
if (name.endsWith(".jar") && name.contains("voxelsniper") && !name.contains("fastasyncvoxelsniper")) {
output = file;
break;
}
}
if (output == null) {
output = new File(this.getDataFolder().getParentFile(), "VoxelSniper.jar");
byte[] vsJar = Jars.VS_B_5_171_0.download();
try (FileOutputStream fos = new FileOutputStream(output)) {
fos.write(vsJar);
}
}
Bukkit.getPluginManager().loadPlugin(output);
} catch (Throwable e) {
e.printStackTrace();
Fawe.debug("====== INSTALL VOXELSNIPER ======");
Fawe.debug("FAVS requires VoxelSniper to function correctly");
Fawe.debug("Info: https://github.com/boy0001/FastAsyncWorldedit/releases/");
Fawe.debug("===============================");
return;
}
}
SnipeData.inject();
Sniper.inject();
VoxelVoxelCommand.inject();
PerformBrush.inject();
RangeBlockHelper.inject();
SniperBrushChangedEvent.inject();
SniperMaterialChangedEvent.inject();
// Enable metrics
new Metrics(this, BSTATS_ID);
WarpBrush.inject(); // Fixes for async tp
// Forward the commands so //p and //d will work
setupCommand("/p", new FaweCommand("voxelsniper.sniper") {
@Override
public boolean execute(FawePlayer fp, String... args) {
Player player = (Player) fp.parent;
return (Bukkit.getPluginManager().getPlugin("VoxelSniper")).onCommand(player, new Command("p") {
@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
return false;
}
}, null, args);
}
});
setupCommand("/d", new FaweCommand("voxelsniper.sniper") {
@Override
public boolean execute(FawePlayer fp, String... args) {
Player player = (Player) fp.parent;
return (Bukkit.getPluginManager().getPlugin("VoxelSniper")).onCommand(player, new Command("d") {
@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
return false;
}
}, null, args);
}
});
} catch (Throwable ignore) {}
}
public void setupCommand(final String label, final FaweCommand cmd) {
this.getCommand(label).setExecutor(new BukkitCommand(cmd));
}
}