Skip to content

Commit

Permalink
fix: protocollib as soft dependency #9 (#10)
Browse files Browse the repository at this point in the history
* Updating libraries (Java 11 fix)

* Build action setup

* gradlew permission

* Gradle Shadow, fix

* improv: push jar to repo after build

* Smaller jar, "Bungee fix", ProtocolLib fix

* Version change

* Updated version

* Version 3.0.1

* Version 3.0.1

* Version 3.0.1

* Smaller jar, "Bungee fix", ProtocolLib fix

* Version change

* Updated version

* Version 3.0.1

* Version 3.0.1

* Version 3.0.1

* Checking if ProtocolLib is enabled.

* "No such file or directory" fix

* Fixed Bungee's reflection for Java 11

* Fixing author in bungee.yml

* Custom port for Bungee & fix

* Compiled JAR

Co-authored-by: Valentin T. <[email protected]>
  • Loading branch information
Shyrogan and Eywek committed Dec 24, 2019
1 parent b3d7a23 commit 1e3766e
Show file tree
Hide file tree
Showing 10 changed files with 94 additions and 91 deletions.
6 changes: 2 additions & 4 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,16 @@ jobs:
with:
java-version: 1.8
- name: Build with Gradle
run: ./gradlew build
run: ./gradlew shadowJar
- uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }}
- name: Push jar
run: |
mv ./build/libs/*.jar ./mineweb_bridge-$VERSION.jar
git config --global user.email "[email protected]"
git config --global user.name "MineWeb Bot"
git add mineweb_bridge-$VERSION.jar
git commit -m "build: Add mineweb_bridge-$VERSION.jar"
git push $REPO master
env:
REPO: [email protected]:${{github.repository}}.git
VERSION: "3.0.0"
VERSION: "3.0.1"
10 changes: 6 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ apply plugin: 'eclipse'
apply plugin: 'maven'

group = 'fr.vmarchaud'
version = '3.0.0'
version = '3.0.1'

description = "mineweb_bridge"

Expand All @@ -24,6 +24,7 @@ repositories {
mavenLocal()
maven { url "https://hub.spigotmc.org/nexus/content/groups/public/" }
maven { url "http://repo.dmulloy2.net/content/groups/public/" }
maven { url 'https://repo.spongepowered.org/maven' }
mavenCentral()
jcenter()
flatDir {
Expand All @@ -32,17 +33,18 @@ repositories {
}

dependencies {
compile "com.google.guava:guava:17.0"
compileOnly "com.google.guava:guava:17.0"
//compile files('/Users/valentin/Sites/mineweb_bridge/guava-17.0.jar')
//compile group: 'com.google.guava', name: 'guava', version: '17.0'
compile "com.google.code.gson:gson:2.5"
compile ("com.comphenix.protocol:ProtocolLib:4.4.0") {
compileOnly "com.google.code.gson:gson:2.5"
compileOnly ("com.comphenix.protocol:ProtocolLib:4.4.0") {
exclude group: "com.comphenix.executors"
// For
exclude group: "cglib"
}
compile 'com.annimon:stream:1.1.1'
compile 'javax.xml.bind:jaxb-api:2.3.0'
compileOnly 'org.spongepowered:spongeapi:7.1.0'
compileOnly "org.spigotmc:spigot-api:1.14.4-R0.1-SNAPSHOT"
compileOnly 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
Expand Down
Binary file added mineweb_bridge-3.0.1.jar
Binary file not shown.
65 changes: 29 additions & 36 deletions src/main/java/fr/vmarchaud/mineweb/bukkit/BukkitCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,51 +23,37 @@
*******************************************************************************/
package fr.vmarchaud.mineweb.bukkit;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

import fr.vmarchaud.mineweb.common.injector.NettyServer;
import fr.vmarchaud.mineweb.common.injector.WebThread;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.command.CommandSender;
import org.bukkit.command.Command;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import fr.vmarchaud.mineweb.bukkit.methods.BukkitGetBannedPlayers;
import fr.vmarchaud.mineweb.bukkit.methods.BukkitGetMOTD;
import fr.vmarchaud.mineweb.bukkit.methods.BukkitGetMaxPlayers;
import fr.vmarchaud.mineweb.bukkit.methods.BukkitGetVersion;
import fr.vmarchaud.mineweb.bukkit.methods.BukkitGetWhitelistedPlayers;
import fr.vmarchaud.mineweb.bukkit.methods.*;
import fr.vmarchaud.mineweb.common.CommandScheduler;
import fr.vmarchaud.mineweb.common.ICore;
import fr.vmarchaud.mineweb.common.IMethod;
import fr.vmarchaud.mineweb.common.RequestHandler;
import fr.vmarchaud.mineweb.common.CommandScheduler;
import fr.vmarchaud.mineweb.common.configuration.PluginConfiguration;
import fr.vmarchaud.mineweb.common.configuration.ScheduledStorage;
import fr.vmarchaud.mineweb.common.injector.NettyInjector;
import fr.vmarchaud.mineweb.common.injector.WebThread;
import fr.vmarchaud.mineweb.common.injector.router.RouteMatcher;
import fr.vmarchaud.mineweb.common.methods.CommonGetPlayerCount;
import fr.vmarchaud.mineweb.common.methods.CommonGetPlayerList;
import fr.vmarchaud.mineweb.common.methods.CommonGetSystemStats;
import fr.vmarchaud.mineweb.common.methods.CommonGetTimestamp;
import fr.vmarchaud.mineweb.common.methods.CommonIsConnected;
import fr.vmarchaud.mineweb.common.methods.CommonPluginType;
import fr.vmarchaud.mineweb.common.methods.CommonRunCommand;
import fr.vmarchaud.mineweb.common.methods.CommonScheduledCommand;
import fr.vmarchaud.mineweb.common.methods.*;
import fr.vmarchaud.mineweb.utils.CustomLogFormatter;
import fr.vmarchaud.mineweb.utils.http.HttpResponseBuilder;
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 org.bukkit.scheduler.BukkitTask;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class BukkitCore extends JavaPlugin implements ICore {

Expand Down Expand Up @@ -109,10 +95,17 @@ public void onEnable() {
logger.info("Loading ...");
methods = new HashMap<String, IMethod>();
players = new HashSet<String>();
if (config.getPort() == null)

if (config.getPort() == null) {
if (!Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) {
throw new RuntimeException("The bridge requires ProtocolLib to run on server's port");
}

injector = new BukkitNettyInjector(this);
else
} else {
nettyServerThread = new WebThread(this);
}

httpRouter = new RouteMatcher();
logger.info("Registering route ...");
registerRoutes();
Expand Down
48 changes: 26 additions & 22 deletions src/main/java/fr/vmarchaud/mineweb/bungee/BungeeCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,43 +23,36 @@
*******************************************************************************/
package fr.vmarchaud.mineweb.bungee;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import fr.vmarchaud.mineweb.bungee.methods.BungeeGetMOTD;
import fr.vmarchaud.mineweb.bungee.methods.BungeeGetMaxPlayers;
import fr.vmarchaud.mineweb.bungee.methods.BungeeGetVersion;
import fr.vmarchaud.mineweb.common.CommandScheduler;
import fr.vmarchaud.mineweb.common.ICore;
import fr.vmarchaud.mineweb.common.IMethod;
import fr.vmarchaud.mineweb.common.RequestHandler;
import fr.vmarchaud.mineweb.common.CommandScheduler;
import fr.vmarchaud.mineweb.common.configuration.PluginConfiguration;
import fr.vmarchaud.mineweb.common.configuration.ScheduledStorage;
import fr.vmarchaud.mineweb.common.injector.NettyInjector;
import fr.vmarchaud.mineweb.common.injector.WebThread;
import fr.vmarchaud.mineweb.common.injector.router.RouteMatcher;
import fr.vmarchaud.mineweb.common.methods.CommonGetPlayerCount;
import fr.vmarchaud.mineweb.common.methods.CommonGetPlayerList;
import fr.vmarchaud.mineweb.common.methods.CommonGetSystemStats;
import fr.vmarchaud.mineweb.common.methods.CommonGetTimestamp;
import fr.vmarchaud.mineweb.common.methods.CommonIsConnected;
import fr.vmarchaud.mineweb.common.methods.CommonPluginType;
import fr.vmarchaud.mineweb.common.methods.CommonRunCommand;
import fr.vmarchaud.mineweb.common.methods.CommonScheduledCommand;
import fr.vmarchaud.mineweb.common.methods.*;
import fr.vmarchaud.mineweb.utils.CustomLogFormatter;
import fr.vmarchaud.mineweb.utils.http.HttpResponseBuilder;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.scheduler.ScheduledTask;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class BungeeCore extends Plugin implements ICore {

public static ICore instance;
Expand All @@ -69,6 +62,7 @@ public static ICore get() {

private RouteMatcher httpRouter;
private NettyInjector injector;
private WebThread nettyServerThread;
private HashMap<String, IMethod> methods;
private RequestHandler requestHandler;
private PluginConfiguration config;
Expand Down Expand Up @@ -104,8 +98,14 @@ public void onEnable() {
getProxy().getPluginManager().registerListener(this, new BungeeListeners(instance));

// inject when we are ready
logger.info("Injecting http server ...");
injector.inject();
if(config.port == null) {
logger.info("Injecting http server ...");
injector.inject();
} else {
logger.info("Starting http server thread ...");
nettyServerThread = new WebThread(this);
nettyServerThread.start();
}
logger.info("Registering methods ...");
requestHandler = new RequestHandler(instance);
registerMethods();
Expand Down Expand Up @@ -226,4 +226,8 @@ public void runCommand(String command) {
public CommandScheduler getCommandScheduler() {
return commandScheduler;
}

public NettyInjector getInjector() {
return injector;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@
*******************************************************************************/
package fr.vmarchaud.mineweb.bungee;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

import fr.vmarchaud.mineweb.common.ICore;
import fr.vmarchaud.mineweb.common.injector.JSONAPIChannelDecoder;
import fr.vmarchaud.mineweb.common.injector.NettyInjector;
Expand All @@ -37,11 +34,10 @@
import net.md_5.bungee.connection.InitialHandler;
import net.md_5.bungee.netty.HandlerBoss;
import net.md_5.bungee.netty.PipelineUtils;
import net.md_5.bungee.protocol.KickStringWriter;
import net.md_5.bungee.protocol.LegacyDecoder;
import net.md_5.bungee.protocol.MinecraftDecoder;
import net.md_5.bungee.protocol.MinecraftEncoder;
import net.md_5.bungee.protocol.Protocol;
import net.md_5.bungee.protocol.*;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class BungeeNettyInjector extends NettyInjector {

Expand All @@ -60,6 +56,7 @@ public synchronized void inject() {
Class<PipelineUtils> server = PipelineUtils.class;
Field field = server.getDeclaredField("SERVER_CHILD");
Field modifiersField = Field.class.getDeclaredField("modifiers");
field.setAccessible(true);
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package fr.vmarchaud.mineweb.common.configuration;

import fr.vmarchaud.mineweb.common.ICore;
import lombok.Data;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import fr.vmarchaud.mineweb.common.ICore;
import lombok.Data;

@Data
public class PluginConfiguration {

Expand All @@ -24,11 +24,8 @@ public PluginConfiguration(File path) {

/**
* Load the configuration from the file
* @param File object representing the path of the file
* @param ICore interface for logging and use gson instance
*
* @throws IllegalAccessException
* @throws InstantiationException
* @param path object representing the path of the file
* @param api interface for logging and use gson instance
*/
public static PluginConfiguration load(File path, ICore api) {
if (path.exists()) {
Expand All @@ -45,21 +42,30 @@ public static PluginConfiguration load(File path, ICore api) {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
api.logger().warning("Cant find a config file, creating it");
return new PluginConfiguration(path);
PluginConfiguration config = new PluginConfiguration(path);
config.save(api);
return config;
}
}

/**
* Save the configuration to the file
* @param ICore interface for logging and use gson instance
* @param api interface for logging and use gson instance
*/
public void save(ICore api) {
try {
// Create the folder
new File(path.getParent()).mkdirs();
// Create the file
path.createNewFile();
// Write it
String config = api.gson().toJson(this);
FileWriter writer = new FileWriter(path);
writer.write(config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import fr.vmarchaud.mineweb.common.ICore;
import lombok.Getter;
import org.bukkit.Bukkit;

public class WebThread extends Thread {

Expand All @@ -20,7 +19,6 @@ public void run() {
try {
webServer.start();
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage("HTTP server start failed! (" + e.getMessage() + ")");
api.logger().info("HTTP server start failed! (" + e.getMessage() + ")");
this.interrupt();
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/bungee.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: MinewebBridge
main: fr.vmarchaud.mineweb.bungee.BungeeCore
version: 1.0
author: ThisIsMac
version: 3.0.1
author: ThisIsMac, Shyrogan
9 changes: 7 additions & 2 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
name: MinewebBridge
main: fr.vmarchaud.mineweb.bukkit.BukkitCore
version: 2.0.0
author: ThisIsMac
version: 3.0.1
authors:
- ThisIsMac
- Shyrogan
softdepend:
- ProtocolLib
load: STARTUP
commands:
mineweb:
description: Commands to manage MineWebBridge
Expand Down

0 comments on commit 1e3766e

Please sign in to comment.