Plex-FAWE/favs/src/main/java/com/thevoxelbox/voxelsniper/VoxelSniper.java
2018-08-24 01:22:30 +10:00

228 lines
11 KiB
Java

package com.thevoxelbox.voxelsniper;
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.google.common.base.Preconditions;
import com.thevoxelbox.voxelsniper.brush.*;
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 org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
/**
* Bukkit extension point.
*/
public class VoxelSniper extends JavaPlugin
{
private static VoxelSniper instance;
private SniperManager sniperManager = new SniperManager(this);
private final VoxelSniperListener voxelSniperListener = new VoxelSniperListener(this);
private VoxelSniperConfiguration voxelSniperConfiguration;
/**
* Returns {@link com.thevoxelbox.voxelsniper.Brushes} for current instance.
*
* @return Brush Manager for current instance.
*/
public Brushes getBrushManager()
{
return brushManager;
}
private Brushes brushManager = new Brushes();
/**
* @return {@link VoxelSniper}
*/
public static VoxelSniper getInstance()
{
return VoxelSniper.instance;
}
/**
* Returns object for accessing global VoxelSniper options.
*
* @return {@link VoxelSniperConfiguration} object for accessing global VoxelSniper options.
*/
public VoxelSniperConfiguration getVoxelSniperConfiguration()
{
return voxelSniperConfiguration;
}
/**
* Returns {@link com.thevoxelbox.voxelsniper.SniperManager} for current instance.
*
* @return SniperManager
*/
public SniperManager getSniperManager()
{
return sniperManager;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args)
{
if (sender instanceof Player)
{
String[] arguments = args;
if (arguments == null)
{
arguments = new String[0];
}
return voxelSniperListener.onCommand((Player) sender, arguments, command.getName());
}
getLogger().info("Only Players can execute commands.");
return true;
}
@Override
public void onEnable()
{
VoxelSniper.instance = this;
registerBrushes();
getLogger().info("Registered " + brushManager.registeredSniperBrushes() + " Sniper Brushes with " + brushManager.registeredSniperBrushHandles() + " handles.");
saveDefaultConfig();
voxelSniperConfiguration = new VoxelSniperConfiguration(getConfig());
Bukkit.getPluginManager().registerEvents(this.voxelSniperListener, this);
getLogger().info("Registered Sniper Listener.");
try {
setupCommand("/p", new FaweCommand("voxelsniper.sniper") {
@Override
public boolean execute(FawePlayer fp, String... args) {
Player player = (Player) fp.parent;
return 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 onCommand(player, new Command("d") {
@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
return false;
}
}, null, args);
}
});
} catch (Throwable ignore) {}
}
/**
* Registers all brushes.
*/
public void registerBrushes()
{
brushManager.registerSniperBrush(BallBrush.class, "b", "ball");
brushManager.registerSniperBrush(BiomeBrush.class, "bio", "biome");
brushManager.registerSniperBrush(BlendBallBrush.class, "bb", "blendball");
brushManager.registerSniperBrush(BlendDiscBrush.class, "bd", "blenddisc");
brushManager.registerSniperBrush(BlendVoxelBrush.class, "bv", "blendvoxel");
brushManager.registerSniperBrush(BlendVoxelDiscBrush.class, "bvd", "blendvoxeldisc");
brushManager.registerSniperBrush(BlobBrush.class, "blob", "splatblob");
brushManager.registerSniperBrush(BlockResetBrush.class, "brb", "blockresetbrush");
brushManager.registerSniperBrush(BlockResetSurfaceBrush.class, "brbs", "blockresetbrushsurface");
brushManager.registerSniperBrush(CanyonBrush.class, "ca", "canyon");
brushManager.registerSniperBrush(CanyonSelectionBrush.class, "cas", "canyonselection");
brushManager.registerSniperBrush(CheckerVoxelDiscBrush.class, "cvd", "checkervoxeldisc");
brushManager.registerSniperBrush(CleanSnowBrush.class, "cls", "cleansnow");
brushManager.registerSniperBrush(CloneStampBrush.class, "cs", "clonestamp");
brushManager.registerSniperBrush(CometBrush.class, "com", "comet");
brushManager.registerSniperBrush(CopyPastaBrush.class, "cp", "copypasta");
brushManager.registerSniperBrush(CylinderBrush.class, "c", "cylinder");
brushManager.registerSniperBrush(DiscBrush.class, "d", "disc");
brushManager.registerSniperBrush(DiscFaceBrush.class, "df", "discface");
brushManager.registerSniperBrush(DomeBrush.class, "dome", "domebrush");
brushManager.registerSniperBrush(DrainBrush.class, "drain");
brushManager.registerSniperBrush(EllipseBrush.class, "el", "ellipse");
brushManager.registerSniperBrush(EllipsoidBrush.class, "elo", "ellipsoid");
brushManager.registerSniperBrush(EntityBrush.class, "en", "entity");
brushManager.registerSniperBrush(EntityRemovalBrush.class, "er", "entityremoval");
brushManager.registerSniperBrush(EraserBrush.class, "erase", "eraser");
brushManager.registerSniperBrush(ErodeBrush.class, "e", "erode");
brushManager.registerSniperBrush(ExtrudeBrush.class, "ex", "extrude");
brushManager.registerSniperBrush(FillDownBrush.class, "fd", "filldown");
brushManager.registerSniperBrush(FlatOceanBrush.class, "fo", "flatocean");
brushManager.registerSniperBrush(GenerateTreeBrush.class, "gt", "generatetree");
brushManager.registerSniperBrush(HeatRayBrush.class, "hr", "heatray");
brushManager.registerSniperBrush(JaggedLineBrush.class, "j", "jagged");
brushManager.registerSniperBrush(JockeyBrush.class, "jockey");
brushManager.registerSniperBrush(LightningBrush.class, "light", "lightning");
brushManager.registerSniperBrush(LineBrush.class, "l", "line");
brushManager.registerSniperBrush(MoveBrush.class, "mv", "move");
brushManager.registerSniperBrush(OceanBrush.class, "o", "ocean");
brushManager.registerSniperBrush(OverlayBrush.class, "over", "overlay");
brushManager.registerSniperBrush(PaintingBrush.class, "paint", "painting");
brushManager.registerSniperBrush(PullBrush.class, "pull");
brushManager.registerSniperBrush(PunishBrush.class, "p", "punish");
brushManager.registerSniperBrush(RandomErodeBrush.class, "re", "randomerode");
brushManager.registerSniperBrush(RegenerateChunkBrush.class, "gc", "generatechunk");
brushManager.registerSniperBrush(RingBrush.class, "ri", "ring");
brushManager.registerSniperBrush(Rot2DBrush.class, "rot2", "rotation2d");
brushManager.registerSniperBrush(Rot2DvertBrush.class, "rot2v", "rotation2dvertical");
brushManager.registerSniperBrush(Rot3DBrush.class, "rot3", "rotation3d");
brushManager.registerSniperBrush(RulerBrush.class, "r", "ruler");
brushManager.registerSniperBrush(ScannerBrush.class, "sc", "scanner");
brushManager.registerSniperBrush(SetBrush.class, "set");
brushManager.registerSniperBrush(SetRedstoneFlipBrush.class, "setrf", "setredstoneflip");
brushManager.registerSniperBrush(ShellBallBrush.class, "shb", "shellball");
brushManager.registerSniperBrush(ShellSetBrush.class, "shs", "shellset");
brushManager.registerSniperBrush(ShellVoxelBrush.class, "shv", "shellvoxel");
brushManager.registerSniperBrush(SignOverwriteBrush.class, "sio", "signoverwriter");
brushManager.registerSniperBrush(SnipeBrush.class, "s", "snipe");
brushManager.registerSniperBrush(SnowConeBrush.class, "snow", "snowcone");
brushManager.registerSniperBrush(SpiralStaircaseBrush.class, "sstair", "spiralstaircase");
brushManager.registerSniperBrush(SplatterBallBrush.class, "sb", "splatball");
brushManager.registerSniperBrush(SplatterDiscBrush.class, "sd", "splatdisc");
brushManager.registerSniperBrush(SplatterOverlayBrush.class, "sover", "splatteroverlay");
brushManager.registerSniperBrush(SplatterVoxelBrush.class, "sv", "splattervoxel");
brushManager.registerSniperBrush(SplatterDiscBrush.class, "svd", "splatvoxeldisc");
brushManager.registerSniperBrush(SplineBrush.class, "sp", "spline");
brushManager.registerSniperBrush(StencilBrush.class, "st", "stencil");
brushManager.registerSniperBrush(StencilListBrush.class, "sl", "stencillist");
brushManager.registerSniperBrush(ThreePointCircleBrush.class, "tpc", "threepointcircle");
brushManager.registerSniperBrush(TreeSnipeBrush.class, "t", "tree", "treesnipe");
brushManager.registerSniperBrush(TriangleBrush.class, "tri", "triangle");
brushManager.registerSniperBrush(UnderlayBrush.class, "under", "underlay");
brushManager.registerSniperBrush(VoltMeterBrush.class, "volt", "voltmeter");
brushManager.registerSniperBrush(VoxelBrush.class, "v", "voxel");
brushManager.registerSniperBrush(VoxelDiscBrush.class, "vd", "voxeldisc");
brushManager.registerSniperBrush(VoxelDiscFaceBrush.class, "vdf", "voxeldiscface");
brushManager.registerSniperBrush(WarpBrush.class, "w", "warp");
}
public void setupCommand(final String label, final FaweCommand cmd) {
this.getCommand(label).setExecutor(new BukkitCommand(cmd));
}
}