From bb981b509d65f80a88d5a0310cabde4041337236 Mon Sep 17 00:00:00 2001 From: Luck Date: Mon, 5 Apr 2021 10:46:22 +0100 Subject: Tidy up --- spark-forge1122/build.gradle | 2 +- .../lucko/spark/forge/Forge1122CommandSender.java | 75 ++++++++++++ .../lucko/spark/forge/Forge1122PlatformInfo.java | 53 ++++++++ .../me/lucko/spark/forge/Forge1122SparkMod.java | 83 +++++++++++++ .../me/lucko/spark/forge/Forge1122TickHook.java | 60 +++++++++ .../lucko/spark/forge/Forge1122TickReporter.java | 72 +++++++++++ .../me/lucko/spark/forge/ForgeCommandSender.java | 75 ------------ .../me/lucko/spark/forge/ForgePlatformInfo.java | 53 -------- .../java/me/lucko/spark/forge/ForgeSparkMod.java | 83 ------------- .../java/me/lucko/spark/forge/ForgeTickHook.java | 60 --------- .../me/lucko/spark/forge/ForgeTickReporter.java | 72 ----------- .../forge/plugin/Forge1122ClientSparkPlugin.java | 90 ++++++++++++++ .../forge/plugin/Forge1122ServerSparkPlugin.java | 98 +++++++++++++++ .../spark/forge/plugin/Forge1122SparkPlugin.java | 135 +++++++++++++++++++++ .../spark/forge/plugin/ForgeClientSparkPlugin.java | 90 -------------- .../spark/forge/plugin/ForgeServerSparkPlugin.java | 98 --------------- .../lucko/spark/forge/plugin/ForgeSparkPlugin.java | 135 --------------------- spark-sponge8/build.gradle | 39 +++--- .../lucko/spark/sponge/Sponge8CommandSender.java | 40 ++++-- .../me/lucko/spark/sponge/Sponge8SparkPlugin.java | 20 ++- .../me/lucko/spark/sponge/Sponge8TickHook.java | 4 +- .../src/main/resources/META-INF/plugins.json | 2 +- 22 files changed, 728 insertions(+), 711 deletions(-) create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122CommandSender.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122PlatformInfo.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122SparkMod.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickHook.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickReporter.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/ForgePlatformInfo.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickHook.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickReporter.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ClientSparkPlugin.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ServerSparkPlugin.java create mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java delete mode 100644 spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java diff --git a/spark-forge1122/build.gradle b/spark-forge1122/build.gradle index d247db1..2b78ea7 100644 --- a/spark-forge1122/build.gradle +++ b/spark-forge1122/build.gradle @@ -46,7 +46,7 @@ processResources { } blossom { - replaceTokenIn('src/main/java/me/lucko/spark/forge/ForgeSparkMod.java') + replaceTokenIn('src/main/java/me/lucko/spark/forge/Forge1122SparkMod.java') replaceToken '@version@', project.pluginVersion } diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122CommandSender.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122CommandSender.java new file mode 100644 index 0000000..7e7d73c --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122CommandSender.java @@ -0,0 +1,75 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge; + +import me.lucko.spark.common.command.sender.AbstractCommandSender; +import me.lucko.spark.forge.plugin.Forge1122SparkPlugin; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.rcon.RConConsoleSource; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.text.ITextComponent; + +import java.util.UUID; + +public class Forge1122CommandSender extends AbstractCommandSender { + private final Forge1122SparkPlugin plugin; + + public Forge1122CommandSender(ICommandSender source, Forge1122SparkPlugin plugin) { + super(source); + this.plugin = plugin; + } + + @Override + public String getName() { + if (super.delegate instanceof EntityPlayer) { + return ((EntityPlayer) super.delegate).getGameProfile().getName(); + } else if (super.delegate instanceof MinecraftServer) { + return "Console"; + } else if (super.delegate instanceof RConConsoleSource) { + return "RCON Console"; + } else { + return "unknown:" + super.delegate.getClass().getSimpleName(); + } + } + + @Override + public UUID getUniqueId() { + if (super.delegate instanceof EntityPlayer) { + return ((EntityPlayer) super.delegate).getUniqueID(); + } + return null; + } + + @Override + public void sendMessage(Component message) { + ITextComponent component = ITextComponent.Serializer.jsonToComponent(GsonComponentSerializer.gson().serialize(message)); + super.delegate.sendMessage(component); + } + + @Override + public boolean hasPermission(String permission) { + return this.plugin.hasPermission(super.delegate, permission); + } +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122PlatformInfo.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122PlatformInfo.java new file mode 100644 index 0000000..379c0e3 --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122PlatformInfo.java @@ -0,0 +1,53 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge; + +import me.lucko.spark.common.platform.AbstractPlatformInfo; + +import net.minecraftforge.common.ForgeVersion; + +public class Forge1122PlatformInfo extends AbstractPlatformInfo { + private final Type type; + + public Forge1122PlatformInfo(Type type) { + this.type = type; + } + + @Override + public Type getType() { + return this.type; + } + + @Override + public String getName() { + return "Forge"; + } + + @Override + public String getVersion() { + return ForgeVersion.getVersion(); + } + + @Override + public String getMinecraftVersion() { + return ForgeVersion.mcVersion; + } +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122SparkMod.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122SparkMod.java new file mode 100644 index 0000000..535c69e --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122SparkMod.java @@ -0,0 +1,83 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge; + +import me.lucko.spark.forge.plugin.Forge1122ClientSparkPlugin; +import me.lucko.spark.forge.plugin.Forge1122ServerSparkPlugin; + +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventHandler; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.event.FMLServerStartingEvent; +import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; +import net.minecraftforge.fml.relauncher.Side; + +import java.nio.file.Path; + +@Mod( + modid = "spark", + name = "spark", + version = "@version@", + acceptableRemoteVersions = "*" +) +public class Forge1122SparkMod { + + private Path configDirectory; + private Forge1122ServerSparkPlugin activeServerPlugin; + + public String getVersion() { + return Forge1122SparkMod.class.getAnnotation(Mod.class).version(); + } + + @EventHandler + public void preInit(FMLPreInitializationEvent e) { + this.configDirectory = e.getModConfigurationDirectory().toPath(); + } + + @EventHandler + public void clientInit(FMLInitializationEvent e) { + if (FMLCommonHandler.instance().getSide() == Side.CLIENT) { + Forge1122ClientSparkPlugin.register(this); + } + } + + @EventHandler + public void serverInit(FMLServerStartingEvent e) { + this.activeServerPlugin = Forge1122ServerSparkPlugin.register(this, e); + } + + @EventHandler + public void serverStop(FMLServerStoppingEvent e) { + if (this.activeServerPlugin != null) { + this.activeServerPlugin.disable(); + this.activeServerPlugin = null; + } + } + + public Path getConfigDirectory() { + if (this.configDirectory == null) { + throw new IllegalStateException("Config directory not set"); + } + return this.configDirectory; + } +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickHook.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickHook.java new file mode 100644 index 0000000..7ff9893 --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickHook.java @@ -0,0 +1,60 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge; + +import me.lucko.spark.common.tick.AbstractTickHook; +import me.lucko.spark.common.tick.TickHook; + +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +public class Forge1122TickHook extends AbstractTickHook implements TickHook { + private final TickEvent.Type type; + + public Forge1122TickHook(TickEvent.Type type) { + this.type = type; + } + + @SubscribeEvent + public void onTick(TickEvent e) { + if (e.phase != TickEvent.Phase.START) { + return; + } + + if (e.type != this.type) { + return; + } + + onTick(); + } + + @Override + public void start() { + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void close() { + MinecraftForge.EVENT_BUS.unregister(this); + } + +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickReporter.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickReporter.java new file mode 100644 index 0000000..97698d4 --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/Forge1122TickReporter.java @@ -0,0 +1,72 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge; + +import me.lucko.spark.common.tick.AbstractTickReporter; +import me.lucko.spark.common.tick.TickReporter; + +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +public class Forge1122TickReporter extends AbstractTickReporter implements TickReporter { + private final TickEvent.Type type; + + private long start = 0; + + public Forge1122TickReporter(TickEvent.Type type) { + this.type = type; + } + + @SubscribeEvent + public void onTick(TickEvent e) { + if (e.type != this.type) { + return; + } + + switch (e.phase) { + case START: + this.start = System.nanoTime(); + break; + case END: + if (this.start == 0) { + return; + } + + double duration = (System.nanoTime() - this.start) / 1000000d; + onTick(duration); + break; + default: + throw new AssertionError(e.phase); + } + } + + @Override + public void start() { + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void close() { + MinecraftForge.EVENT_BUS.unregister(this); + } + +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java deleted file mode 100644 index 3d07a44..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeCommandSender.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge; - -import me.lucko.spark.common.command.sender.AbstractCommandSender; -import me.lucko.spark.forge.plugin.ForgeSparkPlugin; - -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.network.rcon.RConConsoleSource; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.text.ITextComponent; - -import java.util.UUID; - -public class ForgeCommandSender extends AbstractCommandSender { - private final ForgeSparkPlugin plugin; - - public ForgeCommandSender(ICommandSender source, ForgeSparkPlugin plugin) { - super(source); - this.plugin = plugin; - } - - @Override - public String getName() { - if (super.delegate instanceof EntityPlayer) { - return ((EntityPlayer) super.delegate).getGameProfile().getName(); - } else if (super.delegate instanceof MinecraftServer) { - return "Console"; - } else if (super.delegate instanceof RConConsoleSource) { - return "RCON Console"; - } else { - return "unknown:" + super.delegate.getClass().getSimpleName(); - } - } - - @Override - public UUID getUniqueId() { - if (super.delegate instanceof EntityPlayer) { - return ((EntityPlayer) super.delegate).getUniqueID(); - } - return null; - } - - @Override - public void sendMessage(Component message) { - ITextComponent component = ITextComponent.Serializer.jsonToComponent(GsonComponentSerializer.gson().serialize(message)); - super.delegate.sendMessage(component); - } - - @Override - public boolean hasPermission(String permission) { - return this.plugin.hasPermission(super.delegate, permission); - } -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgePlatformInfo.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgePlatformInfo.java deleted file mode 100644 index 128c314..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgePlatformInfo.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge; - -import me.lucko.spark.common.platform.AbstractPlatformInfo; - -import net.minecraftforge.common.ForgeVersion; - -public class ForgePlatformInfo extends AbstractPlatformInfo { - private final Type type; - - public ForgePlatformInfo(Type type) { - this.type = type; - } - - @Override - public Type getType() { - return type; - } - - @Override - public String getName() { - return "Forge"; - } - - @Override - public String getVersion() { - return ForgeVersion.getVersion(); - } - - @Override - public String getMinecraftVersion() { - return ForgeVersion.mcVersion; - } -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java deleted file mode 100644 index ed8e9eb..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeSparkMod.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge; - -import me.lucko.spark.forge.plugin.ForgeClientSparkPlugin; -import me.lucko.spark.forge.plugin.ForgeServerSparkPlugin; - -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventHandler; -import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import net.minecraftforge.fml.common.event.FMLServerStartingEvent; -import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; -import net.minecraftforge.fml.relauncher.Side; - -import java.nio.file.Path; - -@Mod( - modid = "spark", - name = "spark", - version = "@version@", - acceptableRemoteVersions = "*" -) -public class ForgeSparkMod { - - private Path configDirectory; - private ForgeServerSparkPlugin activeServerPlugin; - - public String getVersion() { - return ForgeSparkMod.class.getAnnotation(Mod.class).version(); - } - - @EventHandler - public void preInit(FMLPreInitializationEvent e) { - this.configDirectory = e.getModConfigurationDirectory().toPath(); - } - - @EventHandler - public void clientInit(FMLInitializationEvent e) { - if (FMLCommonHandler.instance().getSide() == Side.CLIENT) { - ForgeClientSparkPlugin.register(this); - } - } - - @EventHandler - public void serverInit(FMLServerStartingEvent e) { - this.activeServerPlugin = ForgeServerSparkPlugin.register(this, e); - } - - @EventHandler - public void serverStop(FMLServerStoppingEvent e) { - if (this.activeServerPlugin != null) { - this.activeServerPlugin.disable(); - this.activeServerPlugin = null; - } - } - - public Path getConfigDirectory() { - if (this.configDirectory == null) { - throw new IllegalStateException("Config directory not set"); - } - return this.configDirectory; - } -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickHook.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickHook.java deleted file mode 100644 index ac4d4a8..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickHook.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge; - -import me.lucko.spark.common.tick.AbstractTickHook; -import me.lucko.spark.common.tick.TickHook; - -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent; - -public class ForgeTickHook extends AbstractTickHook implements TickHook { - private final TickEvent.Type type; - - public ForgeTickHook(TickEvent.Type type) { - this.type = type; - } - - @SubscribeEvent - public void onTick(TickEvent e) { - if (e.phase != TickEvent.Phase.START) { - return; - } - - if (e.type != this.type) { - return; - } - - onTick(); - } - - @Override - public void start() { - MinecraftForge.EVENT_BUS.register(this); - } - - @Override - public void close() { - MinecraftForge.EVENT_BUS.unregister(this); - } - -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickReporter.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickReporter.java deleted file mode 100644 index b82a817..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/ForgeTickReporter.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge; - -import me.lucko.spark.common.tick.AbstractTickReporter; -import me.lucko.spark.common.tick.TickReporter; - -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent; - -public class ForgeTickReporter extends AbstractTickReporter implements TickReporter { - private final TickEvent.Type type; - - private long start = 0; - - public ForgeTickReporter(TickEvent.Type type) { - this.type = type; - } - - @SubscribeEvent - public void onTick(TickEvent e) { - if (e.type != this.type) { - return; - } - - switch (e.phase) { - case START: - this.start = System.nanoTime(); - break; - case END: - if (this.start == 0) { - return; - } - - double duration = (System.nanoTime() - this.start) / 1000000d; - onTick(duration); - break; - default: - throw new AssertionError(e.phase); - } - } - - @Override - public void start() { - MinecraftForge.EVENT_BUS.register(this); - } - - @Override - public void close() { - MinecraftForge.EVENT_BUS.unregister(this); - } - -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ClientSparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ClientSparkPlugin.java new file mode 100644 index 0000000..7ab0356 --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ClientSparkPlugin.java @@ -0,0 +1,90 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge.plugin; + +import me.lucko.spark.common.platform.PlatformInfo; +import me.lucko.spark.common.tick.TickHook; +import me.lucko.spark.common.tick.TickReporter; +import me.lucko.spark.forge.Forge1122CommandSender; +import me.lucko.spark.forge.Forge1122PlatformInfo; +import me.lucko.spark.forge.Forge1122SparkMod; +import me.lucko.spark.forge.Forge1122TickHook; +import me.lucko.spark.forge.Forge1122TickReporter; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.ICommandSender; +import net.minecraftforge.client.ClientCommandHandler; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +import java.util.stream.Stream; + +public class Forge1122ClientSparkPlugin extends Forge1122SparkPlugin { + + public static void register(Forge1122SparkMod mod) { + Forge1122ClientSparkPlugin plugin = new Forge1122ClientSparkPlugin(mod, Minecraft.getMinecraft()); + plugin.enable(); + + // register listeners + MinecraftForge.EVENT_BUS.register(plugin); + + // register commands + ClientCommandHandler.instance.registerCommand(plugin); + } + + private final Minecraft minecraft; + + public Forge1122ClientSparkPlugin(Forge1122SparkMod mod, Minecraft minecraft) { + super(mod); + this.minecraft = minecraft; + } + + @Override + public boolean hasPermission(ICommandSender sender, String permission) { + return true; + } + + @Override + public Stream getCommandSenders() { + return Stream.of(new Forge1122CommandSender(this.minecraft.player, this)); + } + + @Override + public TickHook createTickHook() { + return new Forge1122TickHook(TickEvent.Type.CLIENT); + } + + @Override + public TickReporter createTickReporter() { + return new Forge1122TickReporter(TickEvent.Type.CLIENT); + } + + @Override + public PlatformInfo getPlatformInfo() { + return new Forge1122PlatformInfo(PlatformInfo.Type.CLIENT); + } + + @Override + public String getCommandName() { + return "sparkc"; + } + +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ServerSparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ServerSparkPlugin.java new file mode 100644 index 0000000..72b1429 --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122ServerSparkPlugin.java @@ -0,0 +1,98 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge.plugin; + +import me.lucko.spark.common.platform.PlatformInfo; +import me.lucko.spark.common.tick.TickHook; +import me.lucko.spark.common.tick.TickReporter; +import me.lucko.spark.forge.Forge1122CommandSender; +import me.lucko.spark.forge.Forge1122PlatformInfo; +import me.lucko.spark.forge.Forge1122SparkMod; +import me.lucko.spark.forge.Forge1122TickHook; +import me.lucko.spark.forge.Forge1122TickReporter; + +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.server.MinecraftServer; +import net.minecraftforge.fml.common.event.FMLServerStartingEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.server.permission.DefaultPermissionLevel; +import net.minecraftforge.server.permission.PermissionAPI; + +import java.util.stream.Stream; + +public class Forge1122ServerSparkPlugin extends Forge1122SparkPlugin { + + public static Forge1122ServerSparkPlugin register(Forge1122SparkMod mod, FMLServerStartingEvent event) { + Forge1122ServerSparkPlugin plugin = new Forge1122ServerSparkPlugin(mod, event.getServer()); + plugin.enable(); + + // register commands & permissions + event.registerServerCommand(plugin); + PermissionAPI.registerNode("spark", DefaultPermissionLevel.OP, "Access to the spark command"); + + return plugin; + } + + private final MinecraftServer server; + + public Forge1122ServerSparkPlugin(Forge1122SparkMod mod, MinecraftServer server) { + super(mod); + this.server = server; + } + + @Override + public boolean hasPermission(ICommandSender sender, String permission) { + if (sender instanceof EntityPlayer) { + return PermissionAPI.hasPermission((EntityPlayer) sender, permission); + } else { + return true; + } + } + + @Override + public Stream getCommandSenders() { + return Stream.concat( + this.server.getPlayerList().getPlayers().stream(), + Stream.of(this.server) + ).map(sender -> new Forge1122CommandSender(sender, this)); + } + + @Override + public TickHook createTickHook() { + return new Forge1122TickHook(TickEvent.Type.SERVER); + } + + @Override + public TickReporter createTickReporter() { + return new Forge1122TickReporter(TickEvent.Type.SERVER); + } + + @Override + public PlatformInfo getPlatformInfo() { + return new Forge1122PlatformInfo(PlatformInfo.Type.SERVER); + } + + @Override + public String getCommandName() { + return "spark"; + } +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java new file mode 100644 index 0000000..936e0b9 --- /dev/null +++ b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/Forge1122SparkPlugin.java @@ -0,0 +1,135 @@ +/* + * This file is part of spark. + * + * Copyright (c) lucko (Luck) + * 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 . + */ + +package me.lucko.spark.forge.plugin; + +import me.lucko.spark.common.SparkPlatform; +import me.lucko.spark.common.SparkPlugin; +import me.lucko.spark.common.sampler.ThreadDumper; +import me.lucko.spark.forge.Forge1122CommandSender; +import me.lucko.spark.forge.Forge1122SparkMod; + +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; + +import java.nio.file.Path; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; + +import javax.annotation.Nullable; + +public abstract class Forge1122SparkPlugin implements SparkPlugin, ICommand { + + private final Forge1122SparkMod mod; + protected final ScheduledExecutorService scheduler; + protected final SparkPlatform platform; + protected final ThreadDumper.GameThread threadDumper = new ThreadDumper.GameThread(); + + protected Forge1122SparkPlugin(Forge1122SparkMod mod) { + this.mod = mod; + this.scheduler = Executors.newSingleThreadScheduledExecutor(r -> { + Thread thread = Executors.defaultThreadFactory().newThread(r); + thread.setName("spark-forge-async-worker"); + thread.setDaemon(true); + return thread; + }); + this.platform = new SparkPlatform(this); + this.platform.enable(); + } + + public void enable() { + this.platform.enable(); + } + + public void disable() { + this.platform.disable(); + this.scheduler.shutdown(); + } + + public abstract boolean hasPermission(ICommandSender sender, String permission); + + @Override + public String getVersion() { + return this.mod.getVersion(); + } + + @Override + public Path getPluginDirectory() { + return this.mod.getConfigDirectory(); + } + + @Override + public void executeAsync(Runnable task) { + this.scheduler.execute(task); + } + + @Override + public ThreadDumper getDefaultThreadDumper() { + return this.threadDumper.get(); + } + + // implement ICommand + + @Override + public String getName() { + return getCommandName(); + } + + @Override + public String getUsage(ICommandSender iCommandSender) { + return "/" + getCommandName(); + } + + @Override + public List getAliases() { + return Collections.singletonList(getCommandName()); + } + + @Override + public void execute(MinecraftServer server, ICommandSender sender, String[] args) { + this.threadDumper.ensureSetup(); + this.platform.executeCommand(new Forge1122CommandSender(sender, this), args); + } + + @Override + public List getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos blockPos) { + return this.platform.tabCompleteCommand(new Forge1122CommandSender(sender, this), args); + } + + @Override + public boolean checkPermission(MinecraftServer minecraftServer, ICommandSender sender) { + return this.platform.hasPermissionForAnyCommand(new Forge1122CommandSender(sender, this)); + } + + @Override + public boolean isUsernameIndex(String[] strings, int i) { + return false; + } + + @Override + public int compareTo(ICommand o) { + return getCommandName().compareTo(o.getName()); + } + +} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java deleted file mode 100644 index f2efbf8..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeClientSparkPlugin.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge.plugin; - -import me.lucko.spark.common.platform.PlatformInfo; -import me.lucko.spark.common.tick.TickHook; -import me.lucko.spark.common.tick.TickReporter; -import me.lucko.spark.forge.ForgeCommandSender; -import me.lucko.spark.forge.ForgePlatformInfo; -import me.lucko.spark.forge.ForgeSparkMod; -import me.lucko.spark.forge.ForgeTickHook; -import me.lucko.spark.forge.ForgeTickReporter; - -import net.minecraft.client.Minecraft; -import net.minecraft.command.ICommandSender; -import net.minecraftforge.client.ClientCommandHandler; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fml.common.gameevent.TickEvent; - -import java.util.stream.Stream; - -public class ForgeClientSparkPlugin extends ForgeSparkPlugin { - - public static void register(ForgeSparkMod mod) { - ForgeClientSparkPlugin plugin = new ForgeClientSparkPlugin(mod, Minecraft.getMinecraft()); - plugin.enable(); - - // register listeners - MinecraftForge.EVENT_BUS.register(plugin); - - // register commands - ClientCommandHandler.instance.registerCommand(plugin); - } - - private final Minecraft minecraft; - - public ForgeClientSparkPlugin(ForgeSparkMod mod, Minecraft minecraft) { - super(mod); - this.minecraft = minecraft; - } - - @Override - public boolean hasPermission(ICommandSender sender, String permission) { - return true; - } - - @Override - public Stream getCommandSenders() { - return Stream.of(new ForgeCommandSender(this.minecraft.player, this)); - } - - @Override - public TickHook createTickHook() { - return new ForgeTickHook(TickEvent.Type.CLIENT); - } - - @Override - public TickReporter createTickReporter() { - return new ForgeTickReporter(TickEvent.Type.CLIENT); - } - - @Override - public PlatformInfo getPlatformInfo() { - return new ForgePlatformInfo(PlatformInfo.Type.CLIENT); - } - - @Override - public String getCommandName() { - return "sparkc"; - } - -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java deleted file mode 100644 index 2bfcd65..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge.plugin; - -import me.lucko.spark.common.platform.PlatformInfo; -import me.lucko.spark.common.tick.TickHook; -import me.lucko.spark.common.tick.TickReporter; -import me.lucko.spark.forge.ForgeCommandSender; -import me.lucko.spark.forge.ForgePlatformInfo; -import me.lucko.spark.forge.ForgeSparkMod; -import me.lucko.spark.forge.ForgeTickHook; -import me.lucko.spark.forge.ForgeTickReporter; - -import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.server.MinecraftServer; -import net.minecraftforge.fml.common.event.FMLServerStartingEvent; -import net.minecraftforge.fml.common.gameevent.TickEvent; -import net.minecraftforge.server.permission.DefaultPermissionLevel; -import net.minecraftforge.server.permission.PermissionAPI; - -import java.util.stream.Stream; - -public class ForgeServerSparkPlugin extends ForgeSparkPlugin { - - public static ForgeServerSparkPlugin register(ForgeSparkMod mod, FMLServerStartingEvent event) { - ForgeServerSparkPlugin plugin = new ForgeServerSparkPlugin(mod, event.getServer()); - plugin.enable(); - - // register commands & permissions - event.registerServerCommand(plugin); - PermissionAPI.registerNode("spark", DefaultPermissionLevel.OP, "Access to the spark command"); - - return plugin; - } - - private final MinecraftServer server; - - public ForgeServerSparkPlugin(ForgeSparkMod mod, MinecraftServer server) { - super(mod); - this.server = server; - } - - @Override - public boolean hasPermission(ICommandSender sender, String permission) { - if (sender instanceof EntityPlayer) { - return PermissionAPI.hasPermission((EntityPlayer) sender, permission); - } else { - return true; - } - } - - @Override - public Stream getCommandSenders() { - return Stream.concat( - this.server.getPlayerList().getPlayers().stream(), - Stream.of(this.server) - ).map(sender -> new ForgeCommandSender(sender, this)); - } - - @Override - public TickHook createTickHook() { - return new ForgeTickHook(TickEvent.Type.SERVER); - } - - @Override - public TickReporter createTickReporter() { - return new ForgeTickReporter(TickEvent.Type.SERVER); - } - - @Override - public PlatformInfo getPlatformInfo() { - return new ForgePlatformInfo(PlatformInfo.Type.SERVER); - } - - @Override - public String getCommandName() { - return "spark"; - } -} diff --git a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java b/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java deleted file mode 100644 index ed32638..0000000 --- a/spark-forge1122/src/main/java/me/lucko/spark/forge/plugin/ForgeSparkPlugin.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * This file is part of spark. - * - * Copyright (c) lucko (Luck) - * 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 . - */ - -package me.lucko.spark.forge.plugin; - -import me.lucko.spark.common.SparkPlatform; -import me.lucko.spark.common.SparkPlugin; -import me.lucko.spark.common.sampler.ThreadDumper; -import me.lucko.spark.forge.ForgeCommandSender; -import me.lucko.spark.forge.ForgeSparkMod; - -import net.minecraft.command.ICommand; -import net.minecraft.command.ICommandSender; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.math.BlockPos; - -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; - -import javax.annotation.Nullable; - -public abstract class ForgeSparkPlugin implements SparkPlugin, ICommand { - - private final ForgeSparkMod mod; - protected final ScheduledExecutorService scheduler; - protected final SparkPlatform platform; - protected final ThreadDumper.GameThread threadDumper = new ThreadDumper.GameThread(); - - protected ForgeSparkPlugin(ForgeSparkMod mod) { - this.mod = mod; - this.scheduler = Executors.newSingleThreadScheduledExecutor(r -> { - Thread thread = Executors.defaultThreadFactory().newThread(r); - thread.setName("spark-forge-async-worker"); - thread.setDaemon(true); - return thread; - }); - this.platform = new SparkPlatform(this); - this.platform.enable(); - } - - public void enable() { - this.platform.enable(); - } - - public void disable() { - this.platform.disable(); - this.scheduler.shutdown(); - } - - public abstract boolean hasPermission(ICommandSender sender, String permission); - - @Override - public String getVersion() { - return this.mod.getVersion(); - } - - @Override - public Path getPluginDirectory() { - return this.mod.getConfigDirectory(); - } - - @Override - public void executeAsync(Runnable task) { - this.scheduler.execute(task); - } - - @Override - public ThreadDumper getDefaultThreadDumper() { - return this.threadDumper.get(); - } - - // implement ICommand - - @Override - public String getName() { - return getCommandName(); - } - - @Override - public String getUsage(ICommandSender iCommandSender) { - return "/" + getCommandName(); - } - - @Override - public List getAliases() { - return Collections.singletonList(getCommandName()); - } - - @Override - public void execute(MinecraftServer server, ICommandSender sender, String[] args) { - this.threadDumper.ensureSetup(); - this.platform.executeCommand(new ForgeCommandSender(sender, this), args); - } - - @Override - public List getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos blockPos) { - return this.platform.tabCompleteCommand(new ForgeCommandSender(sender, this), args); - } - - @Override - public boolean checkPermission(MinecraftServer minecraftServer, ICommandSender sender) { - return this.platform.hasPermissionForAnyCommand(new ForgeCommandSender(sender, this)); - } - - @Override - public boolean isUsernameIndex(String[] strings, int i) { - return false; - } - - @Override - public int compareTo(ICommand o) { - return getCommandName().compareTo(o.getName()); - } - -} diff --git a/spark-sponge8/build.gradle b/spark-sponge8/build.gradle index e4ee48c..89b2ac3 100644 --- a/spark-sponge8/build.gradle +++ b/spark-sponge8/build.gradle @@ -1,6 +1,5 @@ plugins { - id("java-library") - id('com.github.johnrengelman.shadow') version '4.0.1' + id 'com.github.johnrengelman.shadow' version '4.0.1' } dependencies { @@ -9,29 +8,35 @@ dependencies { } repositories { - maven { - url "https://repo.spongepowered.org/repository/maven-public/" - name "sponge" + maven { 'https://repo.spongepowered.org/repository/maven-public/' } +} + +processResources { + from(sourceSets.main.resources.srcDirs) { + include 'META-INF/plugins.json' + expand ( + version: project.version, + description: project.pluginDescription + ) } } shadowJar { archiveFileName = 'spark-sponge8.jar' + + relocate 'okio', 'me.lucko.spark.lib.okio' + relocate 'okhttp3', 'me.lucko.spark.lib.okhttp3' + relocate 'org.tukaani.xz', 'me.lucko.spark.lib.xz' + relocate 'com.google.protobuf', 'me.lucko.spark.lib.protobuf' + relocate 'org.objectweb.asm', 'me.lucko.spark.lib.asm' + relocate 'one.profiler', 'me.lucko.spark.lib.asyncprofiler' + + exclude 'module-info.class' + exclude 'META-INF/maven/**' + exclude 'META-INF/proguard/**' } artifacts { archives shadowJar shadow shadowJar } - -processResources { - from(sourceSets.main.resources.srcDirs) { - include 'META-INF/plugins.json' - - expand ( - version: project.version, - description: project.pluginDescription - ) - } -} - diff --git a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8CommandSender.java b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8CommandSender.java index cc0778c..60a4b8f 100644 --- a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8CommandSender.java +++ b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8CommandSender.java @@ -22,43 +22,61 @@ package me.lucko.spark.sponge; import me.lucko.spark.common.command.sender.AbstractCommandSender; import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.identity.Identity; import net.kyori.adventure.text.Component; -import org.spongepowered.api.service.permission.Subject; +import org.spongepowered.api.command.CommandCause; +import org.spongepowered.api.service.permission.Subject; +import org.spongepowered.api.util.Identifiable; import java.util.UUID; import static java.nio.charset.StandardCharsets.UTF_8; -public class Sponge8CommandSender extends AbstractCommandSender { - private final Subject subject; +public class Sponge8CommandSender extends AbstractCommandSender { + private final CommandCause cause; + private final Audience audience; + + public Sponge8CommandSender(CommandCause cause) { + super(cause); + this.cause = cause; + this.audience = cause.audience(); + } - public Sponge8CommandSender(Subject subject, Audience audience) { - super(audience); - this.subject = subject; + public Sponge8CommandSender(T cause) { + super(cause); + this.cause = null; + this.audience = cause; } @Override public String getName() { - return subject.friendlyIdentifier().orElse(subject.identifier()); + return super.delegate.friendlyIdentifier().orElse(super.delegate.identifier()); } @Override public UUID getUniqueId() { + if (this.cause != null) { + Identifiable identifiable = this.cause.first(Identifiable.class).orElse(null); + if (identifiable != null) { + return identifiable.uniqueId(); + } + } + try { - return UUID.fromString(subject.identifier()); + return UUID.fromString(super.delegate.identifier()); } catch (Exception e) { - return UUID.nameUUIDFromBytes(subject.identifier().getBytes(UTF_8)); + return UUID.nameUUIDFromBytes(super.delegate.identifier().getBytes(UTF_8)); } } @Override public void sendMessage(Component message) { - delegate.sendMessage(message); + this.audience.sendMessage(Identity.nil(), message); } @Override public boolean hasPermission(String permission) { - return subject.hasPermission(permission); + return super.delegate.hasPermission(permission); } } diff --git a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java index aa05153..ff44c93 100644 --- a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java +++ b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8SparkPlugin.java @@ -30,13 +30,13 @@ import me.lucko.spark.common.sampler.ThreadDumper; import me.lucko.spark.common.tick.TickHook; import net.kyori.adventure.text.Component; + import org.checkerframework.checker.nullness.qual.NonNull; import org.spongepowered.api.Game; import org.spongepowered.api.Server; import org.spongepowered.api.command.Command; import org.spongepowered.api.command.CommandCause; import org.spongepowered.api.command.CommandResult; -import org.spongepowered.api.command.exception.CommandException; import org.spongepowered.api.command.parameter.ArgumentReader; import org.spongepowered.api.command.registrar.tree.CommandTreeNode; import org.spongepowered.api.config.ConfigDir; @@ -66,7 +66,6 @@ public class Sponge8SparkPlugin implements SparkPlugin { @Inject public Sponge8SparkPlugin(PluginContainer pluginContainer, Game game, @ConfigDir(sharedRoot = false) Path configDirectory) { - this.pluginContainer = pluginContainer; this.game = game; this.configDirectory = configDirectory; @@ -76,7 +75,7 @@ public class Sponge8SparkPlugin implements SparkPlugin { @Listener public void onRegisterCommands(final RegisterCommandEvent event) { - event.register(this.pluginContainer, new SparkCommand(this), pluginContainer.getMetadata().getId()); + event.register(this.pluginContainer, new SparkCommand(this), this.pluginContainer.getMetadata().getId()); } @Listener @@ -110,7 +109,7 @@ public class Sponge8SparkPlugin implements SparkPlugin { return Stream.concat( this.game.server().onlinePlayers().stream(), Stream.of(this.game.systemSubject()) - ).map(s -> new Sponge8CommandSender(s, s)); + ).map(Sponge8CommandSender::new); } @Override @@ -134,8 +133,7 @@ public class Sponge8SparkPlugin implements SparkPlugin { } private static final class SparkCommand implements Command.Raw { - - private Sponge8SparkPlugin plugin; + private final Sponge8SparkPlugin plugin; public SparkCommand(Sponge8SparkPlugin plugin) { this.plugin = plugin; @@ -144,22 +142,18 @@ public class Sponge8SparkPlugin implements SparkPlugin { @Override public CommandResult process(CommandCause cause, ArgumentReader.Mutable arguments) { this.plugin.threadDumper.ensureSetup(); - this.plugin.platform.executeCommand(getSenderFromCause(cause), arguments.input().split(" ")); + this.plugin.platform.executeCommand(new Sponge8CommandSender(cause), arguments.input().split(" ")); return CommandResult.empty(); } @Override public List suggestions(CommandCause cause, ArgumentReader.Mutable arguments) { - return this.plugin.platform.tabCompleteCommand(getSenderFromCause(cause), arguments.input().split(" ")); - } - - private static CommandSender getSenderFromCause(CommandCause cause) { - return new Sponge8CommandSender(cause.subject(), cause.audience()); + return this.plugin.platform.tabCompleteCommand(new Sponge8CommandSender(cause), arguments.input().split(" ")); } @Override public boolean canExecute(CommandCause cause) { - return this.plugin.platform.hasPermissionForAnyCommand(getSenderFromCause(cause)); + return this.plugin.platform.hasPermissionForAnyCommand(new Sponge8CommandSender(cause)); } @Override diff --git a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8TickHook.java b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8TickHook.java index 29698c9..f6918db 100644 --- a/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8TickHook.java +++ b/spark-sponge8/src/main/java/me/lucko/spark/sponge/Sponge8TickHook.java @@ -49,10 +49,10 @@ public class Sponge8TickHook extends AbstractTickHook implements TickHook, Runna Task task = Task.builder() .interval(Ticks.of(1)) .name("spark-ticker") - .plugin(plugin) + .plugin(this.plugin) .execute(this) .build(); - this.task = game.server().scheduler().submit(task); + this.task = this.game.server().scheduler().submit(task); } @Override diff --git a/spark-sponge8/src/main/resources/META-INF/plugins.json b/spark-sponge8/src/main/resources/META-INF/plugins.json index 1cf2eaa..ac4e3cf 100644 --- a/spark-sponge8/src/main/resources/META-INF/plugins.json +++ b/spark-sponge8/src/main/resources/META-INF/plugins.json @@ -15,7 +15,7 @@ "contributors": [ { "name": "Luck", - "description": "Lead Developer" + "description": "Developer" } ], "dependencies": [ -- cgit