aboutsummaryrefslogtreecommitdiff
path: root/sponge/src
diff options
context:
space:
mode:
Diffstat (limited to 'sponge/src')
-rw-r--r--sponge/src/main/java-templates/me/lucko/spark/sponge/utils/PomData.java8
-rw-r--r--sponge/src/main/java/me/lucko/spark/sponge/SparkSpongePlugin.java97
2 files changed, 105 insertions, 0 deletions
diff --git a/sponge/src/main/java-templates/me/lucko/spark/sponge/utils/PomData.java b/sponge/src/main/java-templates/me/lucko/spark/sponge/utils/PomData.java
new file mode 100644
index 0000000..d81e8f5
--- /dev/null
+++ b/sponge/src/main/java-templates/me/lucko/spark/sponge/utils/PomData.java
@@ -0,0 +1,8 @@
+package me.lucko.spark.sponge.utils;
+
+public class PomData {
+
+ public static final String DESCRIPTION = "${project.description}";
+ public static final String VERSION = "${project.version}";
+
+}
diff --git a/sponge/src/main/java/me/lucko/spark/sponge/SparkSpongePlugin.java b/sponge/src/main/java/me/lucko/spark/sponge/SparkSpongePlugin.java
new file mode 100644
index 0000000..b763549
--- /dev/null
+++ b/sponge/src/main/java/me/lucko/spark/sponge/SparkSpongePlugin.java
@@ -0,0 +1,97 @@
+package me.lucko.spark.sponge;
+
+import com.google.inject.Inject;
+
+import me.lucko.spark.common.CommandHandler;
+import me.lucko.spark.sponge.utils.PomData;
+
+import org.spongepowered.api.Game;
+import org.spongepowered.api.command.CommandCallable;
+import org.spongepowered.api.command.CommandResult;
+import org.spongepowered.api.command.CommandSource;
+import org.spongepowered.api.event.Listener;
+import org.spongepowered.api.event.game.state.GameStartedServerEvent;
+import org.spongepowered.api.plugin.Plugin;
+import org.spongepowered.api.scheduler.AsynchronousExecutor;
+import org.spongepowered.api.scheduler.SpongeExecutorService;
+import org.spongepowered.api.text.Text;
+import org.spongepowered.api.text.format.TextColors;
+import org.spongepowered.api.text.serializer.TextSerializers;
+import org.spongepowered.api.world.Location;
+import org.spongepowered.api.world.World;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+import javax.annotation.Nullable;
+
+@Plugin(
+ id = "spark",
+ name = "spark",
+ version = PomData.VERSION,
+ description = PomData.DESCRIPTION,
+ authors = {"Luck", "sk89q"}
+)
+public class SparkSpongePlugin implements CommandCallable {
+
+ private final CommandHandler<CommandSource> commandHandler = new CommandHandler<CommandSource>() {
+ @Override
+ protected void sendMessage(CommandSource sender, String message) {
+ sender.sendMessage(TextSerializers.FORMATTING_CODE.deserialize(message));
+ }
+
+ @Override
+ protected void runAsync(Runnable r) {
+ asyncExecutor.execute(r);
+ }
+ };
+
+ @Inject
+ @AsynchronousExecutor
+ private SpongeExecutorService asyncExecutor;
+
+ @Inject
+ private Game game;
+
+ @Listener
+ public void onServerStart(GameStartedServerEvent event) {
+ game.getCommandManager().register(this, this, "profiler");
+ }
+
+ @Override
+ public CommandResult process(CommandSource source, String arguments) {
+ if (!testPermission(source)) {
+ source.sendMessage(Text.builder("You do not have permission to use this command.").color(TextColors.RED).build());
+ return CommandResult.empty();
+ }
+
+ commandHandler.handleCommand(source, arguments.split(" "));
+ return CommandResult.empty();
+ }
+
+ @Override
+ public List<String> getSuggestions(CommandSource source, String arguments, @Nullable Location<World> targetPosition) {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean testPermission(CommandSource source) {
+ return source.hasPermission("spark.profiler");
+ }
+
+ @Override
+ public Optional<Text> getShortDescription(CommandSource source) {
+ return Optional.of(Text.of("Main spark plugin command"));
+ }
+
+ @Override
+ public Optional<Text> getHelp(CommandSource source) {
+ return Optional.of(Text.of("Run '/profiler' to view usage."));
+ }
+
+ @Override
+ public Text getUsage(CommandSource source) {
+ return Text.of("Run '/profiler' to view usage.");
+ }
+}