Skip to content
This repository was archived by the owner on Jul 4, 2022. It is now read-only.

Commit 60f181d

Browse files
committed
Improve support for old mc versions
1 parent 1e65efb commit 60f181d

File tree

4 files changed

+92
-21
lines changed
  • simplixcore-common/simplixcore-common-api/src/main/java/dev/simplix/core/common/inject
  • simplixcore-minecraft/simplixcore-minecraft-spigot/simplixcore-minecraft-spigot-plugin

4 files changed

+92
-21
lines changed

simplixcore-common/simplixcore-common-api/src/main/java/dev/simplix/core/common/inject/SimplixInstaller.java

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -454,33 +454,27 @@ public Optional<DependencyLoadingException> earlyLoadDependencies(
454454
return processRemoteDependencies(false, appClass, tempInfo);
455455
}
456456

457+
public Optional<DependencyLoadingException> earlyLoadDependencies(
458+
@NonNull Platform platform,
459+
@NonNull Class<?> appClass,
460+
@NonNull DependencyManifest dependencyManifest
461+
) {
462+
this.platform = platform;
463+
ApplicationInfo tempInfo = new ApplicationInfo(appClass.getSimpleName(),
464+
"1.0", new String[0], new File("."), new String[0]);
465+
return processRemoteDependencies(false, appClass, dependencyManifest, tempInfo);
466+
}
467+
468+
457469
private Optional<DependencyLoadingException> processRemoteDependencies(
458470
boolean isLibrary,
459471
@NonNull Class<?> appOwner,
472+
@NonNull DependencyManifest dependencyManifest,
460473
@NonNull ApplicationInfo info) {
461474
if (this.dependencyLoader == null) {
462475
initDependencyLoader();
463476
}
464-
if (this.dependenciesMap.containsKey(appOwner)) {
465-
return Optional.empty();
466-
}
467-
468-
Optional<DependencyManifest> optionalDependencies;
469-
470-
try {
471-
optionalDependencies = loadDependencies(isLibrary, appOwner);
472-
} catch (JsonParseException jsonParseException) {
473-
log.error(
474-
SIMPLIX_BOOTSTRAP + info.name() + ": Cannot parse dependencies.json",
475-
jsonParseException);
476-
optionalDependencies = Optional.empty();
477-
}
478477

479-
if (!optionalDependencies.isPresent()) {
480-
return Optional.empty();
481-
}
482-
483-
DependencyManifest dependencyManifest = optionalDependencies.get();
484478
this.dependenciesMap.put(appOwner, dependencyManifest);
485479

486480
List<Repository> repositories = Arrays.asList(dependencyManifest.repositories());
@@ -507,6 +501,35 @@ private Optional<DependencyLoadingException> processRemoteDependencies(
507501
return Optional.empty();
508502
}
509503

504+
private Optional<DependencyLoadingException> processRemoteDependencies(
505+
boolean isLibrary,
506+
@NonNull Class<?> appOwner,
507+
@NonNull ApplicationInfo info) {
508+
if (this.dependencyLoader == null) {
509+
initDependencyLoader();
510+
}
511+
if (this.dependenciesMap.containsKey(appOwner)) {
512+
return Optional.empty();
513+
}
514+
515+
Optional<DependencyManifest> optionalDependencies;
516+
517+
try {
518+
optionalDependencies = loadDependencies(isLibrary, appOwner);
519+
} catch (JsonParseException jsonParseException) {
520+
log.error(
521+
SIMPLIX_BOOTSTRAP + info.name() + ": Cannot parse dependencies.json",
522+
jsonParseException);
523+
optionalDependencies = Optional.empty();
524+
}
525+
526+
if (!optionalDependencies.isPresent()) {
527+
return Optional.empty();
528+
}
529+
530+
return processRemoteDependencies(isLibrary, appOwner, optionalDependencies.get(), info);
531+
}
532+
510533
private void initDependencyLoader() {
511534
try {
512535
String depLoaderClass = System.getProperty(
@@ -544,7 +567,7 @@ private void createAppInjector(@NonNull InstallationContext context) {
544567
+ " by "
545568
+ Arrays
546569
.toString(context.applicationInfo.authors()));
547-
} catch (CreationException exception) {
570+
} catch (Exception exception) {
548571
log.error(SIMPLIX_BOOTSTRAP + "Cannot create injector for application "
549572
+ context.applicationInfo.name(), exception);
550573
context.onException.accept(exception);

simplixcore-minecraft/simplixcore-minecraft-spigot/simplixcore-minecraft-spigot-plugin/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
<artifactSet>
125125
<excludes>
126126
<exclude>com.google.guava:guava*</exclude>
127+
<exclude>com.google.inject:guice*</exclude>
127128
<exclude>org.apache.logging.log4j:log4j-api</exclude>
128129
<exclude>org.jetbrains:annotations</exclude>
129130
<exclude>com.google.code.findbugs:annotations</exclude>

simplixcore-minecraft/simplixcore-minecraft-spigot/simplixcore-minecraft-spigot-plugin/src/main/java/dev/simplix/core/minecraft/spigot/plugin/SimplixPlugin.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import dev.simplix.core.common.aop.ScanComponents;
44
import dev.simplix.core.common.aop.SimplixApplication;
55
import dev.simplix.core.common.deploader.ArtifactDependencyLoader;
6+
import dev.simplix.core.common.deploader.Dependency;
7+
import dev.simplix.core.common.deploader.DependencyManifest;
8+
import dev.simplix.core.common.deploader.Repository;
69
import dev.simplix.core.common.inject.SimplixInstaller;
710
import dev.simplix.core.common.platform.Platform;
811
import dev.simplix.core.minecraft.spigot.dynamiclisteners.DynamicListenersSimplixModule;
@@ -53,9 +56,51 @@ public void onLoad() {
5356
"dev.simplix.core.libloader.ClassLoaderFabricator",
5457
"dev.simplix.core.minecraft.spigot.plugin.libloader.PluginClassLoaderFabricator");
5558
ArtifactDependencyLoader.registerTypeHandler("plugin", new PluginTypeHandler());
59+
60+
SimplixInstaller.instance().earlyLoadDependencies(
61+
Platform.SPIGOT,
62+
getClass(),
63+
generateDependencyManifest()
64+
);
65+
5666
SimplixInstaller.instance().libraryLoader().loadLibraries(new File("libraries"));
5767
}
5868

69+
private DependencyManifest generateDependencyManifest() {
70+
final String bukkitVersion = Bukkit.getBukkitVersion();
71+
72+
String guiceVersion;
73+
if (
74+
bukkitVersion.startsWith("1.8") ||
75+
bukkitVersion.startsWith("1.9") ||
76+
bukkitVersion.startsWith("1.10") ||
77+
bukkitVersion.startsWith("1.11")
78+
) {
79+
guiceVersion = "4.1.0";
80+
} else {
81+
guiceVersion = "5.0.1";
82+
}
83+
84+
// Legacy
85+
final DependencyManifest dependencyManifest = new DependencyManifest();
86+
final Dependency dependency = new Dependency();
87+
dependency.artifactId("guice");
88+
dependency.groupId("com.google.inject");
89+
dependency.version(guiceVersion);
90+
dependencyManifest.dependencies(new Dependency[]{
91+
dependency
92+
});
93+
final Repository repository = new Repository();
94+
repository.id("central");
95+
repository.url("https://repo1.maven.org/maven2/");
96+
97+
dependencyManifest.repositories(new Repository[]{
98+
repository
99+
});
100+
101+
return dependencyManifest;
102+
}
103+
59104
@Override
60105
public void onEnable() {
61106
Bukkit.getPluginManager().registerEvents(new SpigotListenerImpl(), this);
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
name: SimplixCore
22
main: dev.simplix.core.minecraft.spigot.plugin.SimplixPlugin
33
version: '${project.version}'
4-
author: SimplixSoftworks
4+
author: SimplixSoftworks
5+
softdepend:
6+
- SimplixBridge

0 commit comments

Comments
 (0)