aboutsummaryrefslogtreecommitdiff
path: root/spark-forge/src
diff options
context:
space:
mode:
authorLuck <git@lucko.me>2019-04-28 15:37:32 +0100
committerLuck <git@lucko.me>2019-05-04 23:22:32 +0100
commitc3ae37e88f967a21522af7d0cb79a571326cd7e9 (patch)
tree7ce46c61407dacdff3cabaeb1ffc8eb5e7cd614a /spark-forge/src
parent51fa2b3e64f021c3c0535f9f931d3fae27ca7adc (diff)
downloadspark-c3ae37e88f967a21522af7d0cb79a571326cd7e9.tar.gz
spark-c3ae37e88f967a21522af7d0cb79a571326cd7e9.tar.bz2
spark-c3ae37e88f967a21522af7d0cb79a571326cd7e9.zip
Start implementing activity log feature
Diffstat (limited to 'spark-forge/src')
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java16
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java66
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java20
-rw-r--r--spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java45
4 files changed, 97 insertions, 50 deletions
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java
index b214308..ec6a0fc 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeClientSparkPlugin.java
@@ -20,10 +20,10 @@
package me.lucko.spark.forge;
+import me.lucko.spark.common.CommandSender;
import me.lucko.spark.common.sampler.TickCounter;
import net.minecraft.client.Minecraft;
import net.minecraft.command.ICommandSender;
-import net.minecraft.server.MinecraftServer;
import net.minecraftforge.client.ClientCommandHandler;
import net.minecraftforge.fml.common.gameevent.TickEvent;
@@ -43,8 +43,13 @@ public class ForgeClientSparkPlugin extends ForgeSparkPlugin {
}
@Override
- public Set<ICommandSender> getSendersWithPermission(String permission) {
- return new HashSet<>(Collections.singleton(Minecraft.getMinecraft().player));
+ boolean hasPermission(ICommandSender sender, String permission) {
+ return true;
+ }
+
+ @Override
+ public Set<CommandSender> getSendersWithPermission(String permission) {
+ return new HashSet<>(Collections.singleton(new ForgeCommandSender(Minecraft.getMinecraft().player, this)));
}
@Override
@@ -66,9 +71,4 @@ public class ForgeClientSparkPlugin extends ForgeSparkPlugin {
public List<String> getAliases() {
return Collections.singletonList("sparkclient");
}
-
- @Override
- public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
- return true;
- }
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java
new file mode 100644
index 0000000..4b71d86
--- /dev/null
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java
@@ -0,0 +1,66 @@
+/*
+ * This file is part of spark.
+ *
+ * Copyright (c) lucko (Luck) <luck@lucko.me>
+ * Copyright (c) contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package me.lucko.spark.forge;
+
+import me.lucko.spark.common.CommandSender;
+import net.kyori.text.Component;
+import net.kyori.text.serializer.gson.GsonComponentSerializer;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.util.text.ITextComponent;
+
+public class ForgeCommandSender implements CommandSender {
+ private final ICommandSender sender;
+ private final ForgeSparkPlugin plugin;
+
+ public ForgeCommandSender(ICommandSender sender, ForgeSparkPlugin plugin) {
+ this.sender = sender;
+ this.plugin = plugin;
+ }
+
+ @Override
+ public String getName() {
+ return this.sender.getName();
+ }
+
+ @Override
+ public void sendMessage(Component message) {
+ ITextComponent component = ITextComponent.Serializer.jsonToComponent(GsonComponentSerializer.INSTANCE.serialize(message));
+ this.sender.sendMessage(component);
+ }
+
+ @Override
+ public boolean hasPermission(String permission) {
+ return this.plugin.hasPermission(this.sender, permission);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ForgeCommandSender that = (ForgeCommandSender) o;
+ return this.sender.equals(that.sender);
+ }
+
+ @Override
+ public int hashCode() {
+ return this.sender.hashCode();
+ }
+}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java
index 167aa94..ba56f44 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeServerSparkPlugin.java
@@ -20,6 +20,7 @@
package me.lucko.spark.forge;
+import me.lucko.spark.common.CommandSender;
import me.lucko.spark.common.sampler.TickCounter;
import net.minecraft.command.ICommandSender;
import net.minecraft.server.MinecraftServer;
@@ -27,9 +28,10 @@ import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import java.util.Collections;
-import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
public class ForgeServerSparkPlugin extends ForgeSparkPlugin {
public ForgeServerSparkPlugin(SparkForgeMod mod) {
@@ -37,12 +39,17 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin {
}
@Override
- public Set<ICommandSender> getSendersWithPermission(String permission) {
+ boolean hasPermission(ICommandSender sender, String permission) {
+ return sender.canUseCommand(4, permission);
+ }
+
+ @Override
+ public Set<CommandSender> getSendersWithPermission(String permission) {
MinecraftServer mcServer = FMLCommonHandler.instance().getMinecraftServerInstance();
- Set<ICommandSender> senders = new HashSet<>(mcServer.getPlayerList().getPlayers());
+ List<ICommandSender> senders = new LinkedList<>(mcServer.getPlayerList().getPlayers());
senders.removeIf(sender -> !sender.canUseCommand(4, permission));
senders.add(mcServer);
- return senders;
+ return senders.stream().map(sender -> new ForgeCommandSender(sender, this)).collect(Collectors.toSet());
}
@Override
@@ -64,9 +71,4 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin {
public List<String> getAliases() {
return Collections.emptyList();
}
-
- @Override
- public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
- return sender.canUseCommand(4, "spark");
- }
}
diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java
index 7298793..039a7de 100644
--- a/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java
+++ b/spark-forge/src/main/java/me/lucko/spark/forge/ForgeSparkPlugin.java
@@ -24,43 +24,36 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
import me.lucko.spark.common.SparkPlatform;
import me.lucko.spark.common.SparkPlugin;
import me.lucko.spark.common.sampler.ThreadDumper;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.serializer.ComponentSerializers;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.text.ITextComponent;
-import net.minecraft.util.text.Style;
-import net.minecraft.util.text.TextComponentString;
-import net.minecraft.util.text.TextFormatting;
-import net.minecraft.util.text.event.ClickEvent;
import net.minecraftforge.fml.common.Mod;
import javax.annotation.Nullable;
import java.nio.file.Path;
-import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@SuppressWarnings("NullableProblems")
-public abstract class ForgeSparkPlugin implements SparkPlugin<ICommandSender>, ICommand {
+public abstract class ForgeSparkPlugin implements SparkPlugin, ICommand {
private final SparkForgeMod mod;
private final ScheduledExecutorService scheduler;
- private final SparkPlatform<ICommandSender> platform;
+ private final SparkPlatform platform;
protected ForgeSparkPlugin(SparkForgeMod mod) {
this.mod = mod;
this.scheduler = Executors.newSingleThreadScheduledExecutor(
new ThreadFactoryBuilder().setNameFormat("spark-forge-async-worker").build()
);
- this.platform = new SparkPlatform<>(this);
+ this.platform = new SparkPlatform(this);
this.platform.enable();
}
+ abstract boolean hasPermission(ICommandSender sender, String permission);
+
@Override
public String getVersion() {
return SparkForgeMod.class.getAnnotation(Mod.class).version();
@@ -72,12 +65,6 @@ public abstract class ForgeSparkPlugin implements SparkPlugin<ICommandSender>, I
}
@Override
- public void sendMessage(ICommandSender sender, Component message) {
- ITextComponent component = ITextComponent.Serializer.jsonToComponent(ComponentSerializers.JSON.serialize(message));
- sender.sendMessage(component);
- }
-
- @Override
public void runAsync(Runnable r) {
this.scheduler.execute(r);
}
@@ -96,25 +83,17 @@ public abstract class ForgeSparkPlugin implements SparkPlugin<ICommandSender>, I
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) {
- if (!checkPermission(server, sender)) {
- TextComponentString msg = new TextComponentString("You do not have permission to use this command.");
- Style style = msg.getStyle();
- style.setColor(TextFormatting.GRAY);
- msg.setStyle(style);
-
- sender.sendMessage(msg);
- return;
- }
-
- this.platform.executeCommand(sender, args);
+ this.platform.executeCommand(new ForgeCommandSender(sender, this), args);
}
@Override
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos blockPos) {
- if (!checkPermission(server, sender)) {
- return Collections.emptyList();
- }
- return this.platform.tabCompleteCommand(sender, args);
+ return this.platform.tabCompleteCommand(new ForgeCommandSender(sender, this), args);
+ }
+
+ @Override
+ public boolean checkPermission(MinecraftServer minecraftServer, ICommandSender sender) {
+ return hasPermission(sender, "spark");
}
@Override