From 99880c7d46d99d2cb7e047c7e41b55add7cab334 Mon Sep 17 00:00:00 2001 From: rtm516 Date: Thu, 30 Apr 2020 07:40:45 +0100 Subject: [PATCH] Adds a message if someone runs one of the plugins directly (#457) * Added Bukkit run message * Added the rest of the plugins run messages * Renamed plugin run classes to main * Added gui message if the jar isnt run from command line * Updated help message * Changed wording for bukkit --- bootstrap/bukkit/pom.xml | 20 +++-- .../platform/bukkit/GeyserBukkitMain.java | 44 +++++++++++ bootstrap/bungeecord/pom.xml | 20 +++-- .../platform/bungeecord/GeyserBungeeMain.java | 44 +++++++++++ bootstrap/sponge/pom.xml | 20 +++-- .../platform/sponge/GeyserSpongeMain.java | 44 +++++++++++ bootstrap/velocity/pom.xml | 20 +++-- .../platform/velocity/GeyserVelocityMain.java | 44 +++++++++++ .../org/geysermc/common/main/IGeyserMain.java | 74 +++++++++++++++++++ common/src/main/resources/help.txt | 18 +++++ 10 files changed, 316 insertions(+), 32 deletions(-) create mode 100644 bootstrap/bukkit/src/main/java/org/geysermc/platform/bukkit/GeyserBukkitMain.java create mode 100644 bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeMain.java create mode 100644 bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeMain.java create mode 100644 bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityMain.java create mode 100644 common/src/main/java/org/geysermc/common/main/IGeyserMain.java create mode 100644 common/src/main/resources/help.txt diff --git a/bootstrap/bukkit/pom.xml b/bootstrap/bukkit/pom.xml index fd2ecbf0d..94fab83ba 100644 --- a/bootstrap/bukkit/pom.xml +++ b/bootstrap/bukkit/pom.xml @@ -33,6 +33,18 @@ + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + org.geysermc.platform.bukkit.GeyserBukkitMain + + + + org.apache.maven.plugins maven-shade-plugin @@ -58,14 +70,6 @@ - - - *:* - - META-INF/* - - - com.google.code.gson:* diff --git a/bootstrap/bukkit/src/main/java/org/geysermc/platform/bukkit/GeyserBukkitMain.java b/bootstrap/bukkit/src/main/java/org/geysermc/platform/bukkit/GeyserBukkitMain.java new file mode 100644 index 000000000..b6da66c1b --- /dev/null +++ b/bootstrap/bukkit/src/main/java/org/geysermc/platform/bukkit/GeyserBukkitMain.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + * + */ + +package org.geysermc.platform.bukkit; + +import org.geysermc.common.main.IGeyserMain; + +public class GeyserBukkitMain extends IGeyserMain { + + public static void main(String[] args) { + new GeyserBukkitMain().displayMessage(); + } + + public String getPluginType() { + return "Spigot or Paper (recommended)"; + } + + public String getPluginFolder() { + return "plugins"; + } +} diff --git a/bootstrap/bungeecord/pom.xml b/bootstrap/bungeecord/pom.xml index 0f6de3faa..b9f069165 100644 --- a/bootstrap/bungeecord/pom.xml +++ b/bootstrap/bungeecord/pom.xml @@ -33,6 +33,18 @@ + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + org.geysermc.platform.bungeecord.GeyserBungeeMain + + + + org.apache.maven.plugins maven-shade-plugin @@ -58,14 +70,6 @@ - - - *:* - - META-INF/* - - - com.google.code.gson:* diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeMain.java b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeMain.java new file mode 100644 index 000000000..eabbcc698 --- /dev/null +++ b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeMain.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + * + */ + +package org.geysermc.platform.bungeecord; + +import org.geysermc.common.main.IGeyserMain; + +public class GeyserBungeeMain extends IGeyserMain { + + public static void main(String[] args) { + new GeyserBungeeMain().displayMessage(); + } + + public String getPluginType() { + return "BungeeCord"; + } + + public String getPluginFolder() { + return "plugins"; + } +} diff --git a/bootstrap/sponge/pom.xml b/bootstrap/sponge/pom.xml index 696721d20..c9abbe3ed 100644 --- a/bootstrap/sponge/pom.xml +++ b/bootstrap/sponge/pom.xml @@ -33,6 +33,18 @@ + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + org.geysermc.platform.sponge.GeyserSpongeMain + + + + org.apache.maven.plugins maven-shade-plugin @@ -62,14 +74,6 @@ - - - *:* - - META-INF/* - - - com.google.code.gson:* diff --git a/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeMain.java b/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeMain.java new file mode 100644 index 000000000..11b9583f9 --- /dev/null +++ b/bootstrap/sponge/src/main/java/org/geysermc/platform/sponge/GeyserSpongeMain.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + * + */ + +package org.geysermc.platform.sponge; + +import org.geysermc.common.main.IGeyserMain; + +public class GeyserSpongeMain extends IGeyserMain { + + public static void main(String[] args) { + new GeyserSpongeMain().displayMessage(); + } + + public String getPluginType() { + return "Sponge"; + } + + public String getPluginFolder() { + return "mods"; + } +} diff --git a/bootstrap/velocity/pom.xml b/bootstrap/velocity/pom.xml index 075aedc32..fb06767e0 100644 --- a/bootstrap/velocity/pom.xml +++ b/bootstrap/velocity/pom.xml @@ -33,6 +33,18 @@ + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + org.geysermc.platform.velocity.GeyserVelocityMain + + + + org.apache.maven.plugins maven-shade-plugin @@ -54,14 +66,6 @@ - - - *:* - - META-INF/* - - - com.google.code.gson:* diff --git a/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityMain.java b/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityMain.java new file mode 100644 index 000000000..73eaddf09 --- /dev/null +++ b/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityMain.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + * + */ + +package org.geysermc.platform.velocity; + +import org.geysermc.common.main.IGeyserMain; + +public class GeyserVelocityMain extends IGeyserMain { + + public static void main(String[] args) { + new GeyserVelocityMain().displayMessage(); + } + + public String getPluginType() { + return "Velocity"; + } + + public String getPluginFolder() { + return "plugins"; + } +} diff --git a/common/src/main/java/org/geysermc/common/main/IGeyserMain.java b/common/src/main/java/org/geysermc/common/main/IGeyserMain.java new file mode 100644 index 000000000..75da4e6b9 --- /dev/null +++ b/common/src/main/java/org/geysermc/common/main/IGeyserMain.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + * + */ + +package org.geysermc.common.main; + +import javax.swing.*; +import java.io.InputStream; +import java.util.Scanner; + +public class IGeyserMain { + + public void displayMessage() { + String message = createMessage(); + + if (System.console() == null) { + JOptionPane.showMessageDialog(null, message, "GeyserMC Plugin: " + this.getPluginType(), JOptionPane.ERROR_MESSAGE); + } + + printMessage(message); + } + + private String createMessage() { + String message = ""; + + InputStream helpStream = IGeyserMain.class.getClassLoader().getResourceAsStream("help.txt"); + Scanner help = new Scanner(helpStream).useDelimiter("\\Z"); + String line = ""; + while (help.hasNext()) { + line = help.next(); + + line = line.replace("${plugin_type}", this.getPluginType()); + line = line.replace("${plugin_folder}", this.getPluginFolder()); + + message += line + "\n"; + } + + return message; + } + + private void printMessage(String message) { + System.out.print(message); + } + + public String getPluginType() { + return "unknown"; + } + + public String getPluginFolder() { + return "unknown"; + } +} diff --git a/common/src/main/resources/help.txt b/common/src/main/resources/help.txt new file mode 100644 index 000000000..3512ed839 --- /dev/null +++ b/common/src/main/resources/help.txt @@ -0,0 +1,18 @@ + +-------------------------------------------------------------------------------- + + Oops! You attempted to run a plugin version of Geyser directly! + + This jar file is a plugin for ${plugin_type}. You can run this file as a + plugin by dropping the jar file into the "${plugin_folder}" directory. + + There is also a standalone version available that doesn't need to + be installed as a plugin, you can find it on our build server: + + http://ci.geysermc.org/ + + If you need more help, you should check out our discord: + + http://discord.geysermc.org/ + +-------------------------------------------------------------------------------- \ No newline at end of file