mirror of
https://github.com/lucko/LuckPerms.git
synced 2025-09-03 11:22:33 +02:00
Implement jar-in-jar loader system (#2899)
This fixes an issue that prevented LuckPerms from loading on Java 16
This commit is contained in:
@@ -35,8 +35,8 @@ import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
|
||||
import me.lucko.luckperms.common.dependencies.classloader.PluginClassLoader;
|
||||
import me.lucko.luckperms.common.plugin.bootstrap.LuckPermsBootstrap;
|
||||
import me.lucko.luckperms.common.plugin.classpath.ClassPathAppender;
|
||||
import me.lucko.luckperms.common.plugin.logging.PluginLogger;
|
||||
import me.lucko.luckperms.common.plugin.logging.Slf4jPluginLogger;
|
||||
import me.lucko.luckperms.common.plugin.scheduler.SchedulerAdapter;
|
||||
@@ -45,7 +45,6 @@ import net.luckperms.api.platform.Platform;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Path;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
@@ -79,9 +78,9 @@ public class LPVelocityBootstrap implements LuckPermsBootstrap {
|
||||
private final SchedulerAdapter schedulerAdapter;
|
||||
|
||||
/**
|
||||
* The plugin classloader
|
||||
* The plugin class path appender
|
||||
*/
|
||||
private final PluginClassLoader classLoader;
|
||||
private final ClassPathAppender classPathAppender;
|
||||
|
||||
/**
|
||||
* The plugin instance
|
||||
@@ -108,7 +107,7 @@ public class LPVelocityBootstrap implements LuckPermsBootstrap {
|
||||
public LPVelocityBootstrap(Logger logger) {
|
||||
this.logger = new Slf4jPluginLogger(logger);
|
||||
this.schedulerAdapter = new VelocitySchedulerAdapter(this);
|
||||
this.classLoader = new VelocityClassLoader(this);
|
||||
this.classPathAppender = new VelocityClassPathAppender(this);
|
||||
this.plugin = new LPVelocityPlugin(this);
|
||||
}
|
||||
|
||||
@@ -125,8 +124,8 @@ public class LPVelocityBootstrap implements LuckPermsBootstrap {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PluginClassLoader getPluginClassLoader() {
|
||||
return this.classLoader;
|
||||
public ClassPathAppender getClassPathAppender() {
|
||||
return this.classPathAppender;
|
||||
}
|
||||
|
||||
// lifecycle
|
||||
@@ -202,11 +201,6 @@ public class LPVelocityBootstrap implements LuckPermsBootstrap {
|
||||
return this.configDirectory.toAbsolutePath();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getResourceStream(String path) {
|
||||
return getClass().getClassLoader().getResourceAsStream(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Player> getPlayer(UUID uniqueId) {
|
||||
return this.proxy.getPlayer(uniqueId);
|
||||
|
@@ -41,7 +41,6 @@ import me.lucko.luckperms.common.plugin.util.AbstractConnectionListener;
|
||||
import me.lucko.luckperms.common.sender.Sender;
|
||||
import me.lucko.luckperms.common.tasks.CacheHousekeepingTask;
|
||||
import me.lucko.luckperms.common.tasks.ExpireTemporaryTask;
|
||||
import me.lucko.luckperms.common.util.MoreFiles;
|
||||
import me.lucko.luckperms.velocity.calculator.VelocityCalculatorFactory;
|
||||
import me.lucko.luckperms.velocity.context.VelocityContextManager;
|
||||
import me.lucko.luckperms.velocity.context.VelocityPlayerCalculator;
|
||||
@@ -52,10 +51,6 @@ import me.lucko.luckperms.velocity.messaging.VelocityMessagingFactory;
|
||||
import net.luckperms.api.LuckPerms;
|
||||
import net.luckperms.api.query.QueryOptions;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -101,7 +96,7 @@ public class LPVelocityPlugin extends AbstractLuckPermsPlugin {
|
||||
|
||||
@Override
|
||||
protected ConfigurationAdapter provideConfigurationAdapter() {
|
||||
return new VelocityConfigAdapter(this, resolveConfig());
|
||||
return new VelocityConfigAdapter(this, resolveConfig("config.yml"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -169,22 +164,6 @@ public class LPVelocityPlugin extends AbstractLuckPermsPlugin {
|
||||
|
||||
}
|
||||
|
||||
private Path resolveConfig() {
|
||||
Path path = this.bootstrap.getConfigDirectory().resolve("config.yml");
|
||||
if (!Files.exists(path)) {
|
||||
try {
|
||||
MoreFiles.createDirectoriesIfNotExists(this.bootstrap.getConfigDirectory());
|
||||
try (InputStream is = getClass().getClassLoader().getResourceAsStream("config.yml")) {
|
||||
Files.copy(is, path);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<QueryOptions> getQueryOptionsForUser(User user) {
|
||||
return this.bootstrap.getPlayer(user.getUniqueId()).map(player -> this.contextManager.getQueryOptions(player));
|
||||
|
@@ -25,14 +25,14 @@
|
||||
|
||||
package me.lucko.luckperms.velocity;
|
||||
|
||||
import me.lucko.luckperms.common.dependencies.classloader.PluginClassLoader;
|
||||
import me.lucko.luckperms.common.plugin.classpath.ClassPathAppender;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class VelocityClassLoader implements PluginClassLoader {
|
||||
public class VelocityClassPathAppender implements ClassPathAppender {
|
||||
private final LPVelocityBootstrap bootstrap;
|
||||
|
||||
public VelocityClassLoader(LPVelocityBootstrap bootstrap) {
|
||||
public VelocityClassPathAppender(LPVelocityBootstrap bootstrap) {
|
||||
this.bootstrap = bootstrap;
|
||||
}
|
||||
|
Reference in New Issue
Block a user