mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-21 05:50:18 +08:00
Slimjar 1.3.0/1.2.6 & custom Injectables for Fabric and Velocity (#2126)
* Update slimjar to 1.3.0/1.2.6 * Add custom Injectable impl for Fabric module * Add custom Injectable impl for Velocity
This commit is contained in:
parent
7d8b797b42
commit
bcfd52d76b
@ -8,7 +8,7 @@ buildscript {
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id "com.github.johnrengelman.shadow" version "7.1.0" apply false
|
id "com.github.johnrengelman.shadow" version "7.1.0" apply false
|
||||||
id "io.github.slimjar" version "1.2.2" apply false
|
id "io.github.slimjar" version "1.3.0" apply false
|
||||||
id "java"
|
id "java"
|
||||||
id "jacoco"
|
id "jacoco"
|
||||||
id "checkstyle"
|
id "checkstyle"
|
||||||
@ -100,11 +100,11 @@ subprojects {
|
|||||||
maven { url = "https://repo.md-5.net/content/repositories/snapshots/" } // RedisBungee
|
maven { url = "https://repo.md-5.net/content/repositories/snapshots/" } // RedisBungee
|
||||||
maven { url = "https://repo.velocitypowered.com/snapshots/" } // Velocity
|
maven { url = "https://repo.velocitypowered.com/snapshots/" } // Velocity
|
||||||
maven { url = "https://repo.playeranalytics.net/releases" } // Plan
|
maven { url = "https://repo.playeranalytics.net/releases" } // Plan
|
||||||
maven { url = " https://repo.vshnv.tech/"} // slimjar
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Dependency Injection used across the project
|
// Dependency Injection used across the project
|
||||||
|
implementation "io.github.slimjar:slimjar:1.2.6" // Runtime dependency injection
|
||||||
implementation "com.google.dagger:dagger:$daggerVersion"
|
implementation "com.google.dagger:dagger:$daggerVersion"
|
||||||
annotationProcessor "com.google.dagger:dagger-compiler:$daggerCompilerVersion"
|
annotationProcessor "com.google.dagger:dagger-compiler:$daggerCompilerVersion"
|
||||||
testAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerCompilerVersion"
|
testAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerCompilerVersion"
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Player Analytics (Plan).
|
||||||
|
*
|
||||||
|
* Plan is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License v3 as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Plan 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package net.playeranalytics.plan;
|
||||||
|
|
||||||
|
import io.github.slimjar.injector.loader.Injectable;
|
||||||
|
import net.fabricmc.loader.launch.common.FabricLauncher;
|
||||||
|
import net.fabricmc.loader.launch.common.FabricLauncherBase;
|
||||||
|
import net.playeranalytics.plugin.server.FabricPluginLogger;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom {@link Injectable} implementation for Fabric.
|
||||||
|
* Appends dependencies to the classpath via Fabric's own launcher.
|
||||||
|
*/
|
||||||
|
public class FabricInjectable implements Injectable {
|
||||||
|
|
||||||
|
private final FabricLauncher launcher;
|
||||||
|
private final FabricPluginLogger pluginLogger;
|
||||||
|
|
||||||
|
public FabricInjectable(FabricPluginLogger pluginLogger) {
|
||||||
|
this.pluginLogger = pluginLogger;
|
||||||
|
this.launcher = FabricLauncherBase.getLauncher();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void inject(final URL url) throws IOException, InvocationTargetException, IllegalAccessException, URISyntaxException {
|
||||||
|
pluginLogger.info("Proposed " + Paths.get(url.toURI()).getFileName().toString() + " to classpath");
|
||||||
|
launcher.propose(url);
|
||||||
|
}
|
||||||
|
}
|
@ -168,7 +168,7 @@ public class PlanFabric implements PlanPlugin, DedicatedServerModInitializer {
|
|||||||
|
|
||||||
pluginLogger.info("Loading dependencies, this might take a while...");
|
pluginLogger.info("Loading dependencies, this might take a while...");
|
||||||
try {
|
try {
|
||||||
ApplicationBuilder.appending("Plan")
|
ApplicationBuilder.injecting("Plan", new FabricInjectable(pluginLogger))
|
||||||
.logger((message, args) -> pluginLogger.info(message, args))
|
.logger((message, args) -> pluginLogger.info(message, args))
|
||||||
// Use paper repository for downloading slimjar dependencies
|
// Use paper repository for downloading slimjar dependencies
|
||||||
.internalRepositories(Collections.singletonList(new Repository(new URL("https://papermc.io/repo/repository/maven-public/"))))
|
.internalRepositories(Collections.singletonList(new Repository(new URL("https://papermc.io/repo/repository/maven-public/"))))
|
||||||
|
@ -1,2 +1 @@
|
|||||||
org.gradle.jvmargs=-Xmx1024m
|
org.gradle.jvmargs=-Xmx1024m
|
||||||
slimjar.version=1.2.5
|
|
||||||
|
@ -101,7 +101,7 @@ public class PlanVelocity implements PlanPlugin {
|
|||||||
|
|
||||||
logger.info("Loading dependencies, this might take a while...");
|
logger.info("Loading dependencies, this might take a while...");
|
||||||
try {
|
try {
|
||||||
ApplicationBuilder.appending("Plan")
|
ApplicationBuilder.injecting("Plan", new VelocityInjectable(this, proxy, logger))
|
||||||
.logger((message, args) -> slf4jLogger.info(fixMsgParams(message), args))
|
.logger((message, args) -> slf4jLogger.info(fixMsgParams(message), args))
|
||||||
// Use paper repository for downloading slimjar dependencies
|
// Use paper repository for downloading slimjar dependencies
|
||||||
.internalRepositories(Collections.singletonList(new Repository(new URL("https://papermc.io/repo/repository/maven-public/"))))
|
.internalRepositories(Collections.singletonList(new Repository(new URL("https://papermc.io/repo/repository/maven-public/"))))
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Player Analytics (Plan).
|
||||||
|
*
|
||||||
|
* Plan is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License v3 as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Plan 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.djrapitops.plan;
|
||||||
|
|
||||||
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
|
import io.github.slimjar.injector.loader.Injectable;
|
||||||
|
import net.playeranalytics.plugin.server.PluginLogger;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom {@link Injectable} implementation for Velocity.
|
||||||
|
* Appends dependencies to the classpath via Velocity's internal methods.
|
||||||
|
*/
|
||||||
|
public class VelocityInjectable implements Injectable {
|
||||||
|
|
||||||
|
private final PlanPlugin plugin;
|
||||||
|
private final ProxyServer proxyServer;
|
||||||
|
private final PluginLogger logger;
|
||||||
|
|
||||||
|
public VelocityInjectable(PlanPlugin plugin, ProxyServer proxyServer, PluginLogger logger) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.proxyServer = proxyServer;
|
||||||
|
this.logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void inject(URL url) throws IOException, InvocationTargetException, IllegalAccessException, URISyntaxException {
|
||||||
|
logger.info("Proposed " + Paths.get(url.toURI()).getFileName().toString() + " to classpath");
|
||||||
|
proxyServer.getPluginManager().addToClasspath(plugin, Paths.get(url.toURI()));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user