Skip to content

Commit

Permalink
Resolve some dependency issues
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexProgrammerDE committed Mar 10, 2024
1 parent 4e3bcf6 commit df24c6a
Show file tree
Hide file tree
Showing 19 changed files with 121 additions and 175 deletions.
34 changes: 4 additions & 30 deletions client/build.gradle.kts
Expand Up @@ -17,9 +17,11 @@ tasks.withType<AbstractArchiveTask> {
}
}

val projectMainClass = "com.soulfiremc.launcher.SoulFireClientLauncher"

application {
applicationName = "SoulFire"
mainClass = "com.soulfiremc.SoulFireLauncher"
mainClass = projectMainClass
}

dependencies {
Expand All @@ -31,18 +33,6 @@ dependencies {
// The java 8 launcher takes care of notifying the user if they are using an unsupported java version
implementation(projects.j8Launcher)

// Log/Console libraries
implementation(libs.bundles.log4j)
implementation(libs.jline)
implementation(libs.jansi)
implementation(libs.bundles.ansi4j)
implementation(libs.terminalconsoleappender)
api(libs.slf4j)
implementation(libs.disruptor)

// For command handling
api(libs.brigadier)

// For CLI support
implementation(libs.picoli)
annotationProcessor(libs.picoli.codegen)
Expand All @@ -63,17 +53,6 @@ dependencies {
}
implementation("org.lwjgl:lwjgl-nfd:$lwjglVersion")

api(libs.commons.validator)
api(libs.commons.io)

api(libs.guava)
api(libs.gson)
api(libs.pf4j) {
isTransitive = false
}
api(libs.fastutil)
api(libs.caffeine)

api(libs.bundles.mixins)
api(libs.reflect)
api(libs.lambdaevents)
Expand All @@ -85,7 +64,7 @@ dependencies {
}

fun Manifest.applySFAttributes() {
attributes["Main-Class"] = "com.soulfiremc.launcher.SoulFireJava8Launcher"
attributes["Main-Class"] = projectMainClass
attributes["Name"] = "SoulFire"
attributes["Specification-Title"] = "SoulFire"
attributes["Specification-Version"] = version.toString()
Expand All @@ -110,14 +89,9 @@ tasks {
run.get().apply {
outputs.upToDateWhen { false }
}
withType<Checkstyle> {
exclude("**/com/soulfiremc/data**")
}
jar {
archiveClassifier = "unshaded"

from(rootProject.file("LICENSE"))

duplicatesStrategy = DuplicatesStrategy.EXCLUDE
dependsOn(configurations.runtimeClasspath)
from({
Expand Down
4 changes: 0 additions & 4 deletions client/src/main/java/com/soulfiremc/SoulFireBootstrap.java
Expand Up @@ -20,8 +20,6 @@
import com.soulfiremc.builddata.BuildData;
import com.soulfiremc.client.gui.GUIManager;
import com.soulfiremc.server.api.MixinExtension;
import com.soulfiremc.server.settings.DevSettings;
import com.soulfiremc.server.settings.lib.SettingsHolder;
import com.soulfiremc.server.util.CustomClassProvider;
import com.soulfiremc.util.PortHelper;
import com.soulfiremc.util.SFPathConstants;
Expand All @@ -37,8 +35,6 @@
import net.lenni0451.classtransform.TransformerManager;
import net.lenni0451.classtransform.mixinstranslator.MixinsTranslator;
import net.lenni0451.reflect.Agents;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configurator;
import org.fusesource.jansi.AnsiConsole;
import org.pf4j.JarPluginManager;
import org.pf4j.PluginManager;
Expand Down
Expand Up @@ -18,7 +18,7 @@
package com.soulfiremc.client.gui.libs;

import com.soulfiremc.util.GsonInstance;
import com.soulfiremc.server.util.HttpHelper;
import com.soulfiremc.util.ReactorHttpHelper;
import java.net.URI;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Flux;
Expand All @@ -31,7 +31,7 @@ public class PastesDevService {
private PastesDevService() {}

public static String upload(String text) {
return HttpHelper.createReactorClient(null, true)
return ReactorHttpHelper.createReactorClient(null, true)
.post()
.uri(PASTES_DEV_URI)
.send(ByteBufFlux.fromString(Flux.just(text)))
Expand Down
17 changes: 9 additions & 8 deletions common/build.gradle.kts
Expand Up @@ -7,19 +7,17 @@ dependencies {
implementation(projects.proto)

// Log/Console libraries
implementation(libs.bundles.log4j)
implementation(libs.jline)
implementation(libs.jansi)
implementation(libs.bundles.ansi4j)
implementation(libs.terminalconsoleappender)
api(libs.bundles.log4j)
api(libs.jline)
api(libs.jansi)
api(libs.bundles.ansi4j)
api(libs.terminalconsoleappender)
api(libs.slf4j)
implementation(libs.disruptor)
api(libs.disruptor)

// For command handling
api(libs.brigadier)

api(libs.bundles.kyori)

api(libs.commons.validator)
api(libs.commons.io)

Expand All @@ -30,6 +28,9 @@ dependencies {
}
api(libs.fastutil)
api(libs.caffeine)
api(libs.jetbrains.annotations)

api(libs.bundles.reactor.netty)

api(libs.bundles.mixins)
api(libs.reflect)
Expand Down
69 changes: 69 additions & 0 deletions common/src/main/java/com/soulfiremc/util/ReactorHttpHelper.java
@@ -0,0 +1,69 @@
/*
* SoulFire
* Copyright (C) 2024 AlexProgrammerDE
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.soulfiremc.util;

import com.soulfiremc.builddata.BuildData;
import com.soulfiremc.proxy.SFProxy;
import java.time.Duration;
import reactor.netty.transport.ProxyProvider;

public class ReactorHttpHelper {
private ReactorHttpHelper() {}

public static reactor.netty.http.client.HttpClient createReactorClient(
SFProxy proxyData, boolean withBody) {
var base =
reactor.netty.http.client.HttpClient.create()
.responseTimeout(Duration.ofSeconds(5))
.headers(
h -> {
h.add("Accept", "application/json");
if (withBody) {
h.add("Content-Type", "application/json");
}

h.add("Accept-Language", "en-US,en");
h.add("User-Agent", "SoulFire/" + BuildData.VERSION);
});

return proxyData == null
? base
: base.proxy(
p -> {
var spec =
p.type(
switch (proxyData.type()) {
case HTTP -> ProxyProvider.Proxy.HTTP;
case SOCKS4 -> ProxyProvider.Proxy.SOCKS4;
case SOCKS5 -> ProxyProvider.Proxy.SOCKS5;
})
.host(proxyData.host())
.port(proxyData.port())
.nonProxyHosts("localhost")
.connectTimeoutMillis(20_000);

if (proxyData.username() != null) {
spec.username(proxyData.username());
}

if (proxyData.password() != null) {
spec.password(s -> proxyData.password());
}
});
}
}
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Expand Up @@ -72,6 +72,7 @@ gson = "com.google.code.gson:gson:2.10.1"
pf4j = "org.pf4j:pf4j:3.11.0"
fastutil = "it.unimi.dsi:fastutil:8.5.13"
caffeine = "com.github.ben-manes.caffeine:caffeine:3.1.8"
jetbrains-annotations = "org.jetbrains:annotations:22.0.0"
classtransform-mixinstranslator = "net.lenni0451.classtransform:mixinstranslator:1.13.0"
classtransform-mixinsdummy = "net.lenni0451.classtransform:mixinsdummy:1.13.0"
classtransform-additionalclassprovider = "net.lenni0451.classtransform:additionalclassprovider:1.13.0"
Expand Down
@@ -0,0 +1,7 @@
package com.soulfiremc.launcher;

public class SoulFireClientLauncher {
public static void main(String[] args) {
SoulFireJava8LauncherWrapper.mainWrapper(args, "com.soulfiremc.SoulFireLauncher");
}
}
@@ -0,0 +1,7 @@
package com.soulfiremc.launcher;

public class SoulFireDedicatedServerLauncher {
public static void main(String[] args) {
SoulFireJava8LauncherWrapper.mainWrapper(args, "com.soulfiremc.SoulFireLauncher");
}
}
Expand Up @@ -13,10 +13,10 @@

// Too early to init loggers
@SuppressWarnings("CallToPrintStackTrace")
public class SoulFireJava8Launcher {
public static void main(String[] args) {
public class SoulFireJava8LauncherWrapper {
public static void mainWrapper(String[] args, String className) {
try {
Class.forName("com.soulfiremc.SoulFireLauncher")
Class.forName(className)
.getMethod("main", String[].class)
.invoke(null, (Object) args);
} catch (UnsupportedClassVersionError e) {
Expand Down
68 changes: 2 additions & 66 deletions server/build.gradle.kts
Expand Up @@ -8,20 +8,9 @@ dependencies {
implementation(projects.proto)
implementation(projects.common)

// Log/Console libraries
implementation(libs.bundles.log4j)
implementation(libs.jline)
implementation(libs.jansi)
implementation(libs.bundles.ansi4j)
implementation(libs.terminalconsoleappender)
api(libs.slf4j)
implementation(libs.disruptor)

// For command handling
api(libs.brigadier)

// Main protocol library
api(libs.mcprotocollib)
api(libs.bundles.kyori)

// For advanced encryption and compression
implementation(libs.velocity.native)
Expand Down Expand Up @@ -50,19 +39,6 @@ dependencies {
// For YAML support (ViaVersion)
api(libs.snakeyaml)

api(libs.bundles.kyori)

api(libs.commons.validator)
api(libs.commons.io)

api(libs.guava)
api(libs.gson)
api(libs.pf4j) {
isTransitive = false
}
api(libs.fastutil)
api(libs.caffeine)

api(libs.bundles.mixins)
api(libs.reflect)
api(libs.lambdaevents)
Expand All @@ -72,45 +48,16 @@ dependencies {
exclude("com.google.code.gson", "gson")
exclude("org.slf4j", "slf4j-api")
}
api(libs.bundles.reactor.netty)

// For class injection
api(libs.injector)

testImplementation(libs.junit)
}

fun Manifest.applySFAttributes() {
attributes["Main-Class"] = "com.soulfiremc.launcher.SoulFireJava8Launcher"
attributes["Name"] = "SoulFire"
attributes["Specification-Title"] = "SoulFire"
attributes["Specification-Version"] = version.toString()
attributes["Specification-Vendor"] = "AlexProgrammerDE"
attributes["Implementation-Title"] = "SoulFire"
attributes["Implementation-Version"] = version.toString()
attributes["Implementation-Vendor"] = "AlexProgrammerDE"
attributes["Multi-Release"] = "true"
}

tasks {
withType<Checkstyle> {
exclude("**/com/soulfiremc/data**")
}
jar {
archiveClassifier = "unshaded"

from(rootProject.file("LICENSE"))

duplicatesStrategy = DuplicatesStrategy.EXCLUDE
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get()
.filter { it.name.endsWith("jar") }
.filter { it.toString().contains("build/libs") }
.map { zipTree(it) }
})

manifest.applySFAttributes()
exclude("**/com/soulfiremc/server/data**")
}
}

Expand All @@ -119,14 +66,3 @@ jmh {
iterations = 2
fork = 2
}

val repoName = if (version.toString().endsWith("SNAPSHOT")) "maven-snapshots" else "maven-releases"
publishing {
repositories {
maven("https://repo.codemc.org/repository/${repoName}/") {
credentials.username = System.getenv("CODEMC_USERNAME")
credentials.password = System.getenv("CODEMC_PASSWORD")
name = "codemc"
}
}
}
Expand Up @@ -51,6 +51,7 @@
import com.soulfiremc.server.settings.lib.ServerSettingsRegistry;
import com.soulfiremc.server.settings.lib.SettingsHolder;
import com.soulfiremc.server.util.SFLogAppender;
import com.soulfiremc.server.util.SFUpdateChecker;
import com.soulfiremc.server.viaversion.SFViaLoader;
import com.soulfiremc.server.viaversion.platform.SFViaAprilFools;
import com.soulfiremc.server.viaversion.platform.SFViaBackwards;
Expand All @@ -59,7 +60,6 @@
import com.soulfiremc.server.viaversion.platform.SFViaPlatform;
import com.soulfiremc.server.viaversion.platform.SFViaRewind;
import com.soulfiremc.util.SFPathConstants;
import com.soulfiremc.server.util.SFUpdateChecker;
import com.soulfiremc.util.ShutdownManager;
import com.viaversion.viaversion.ViaManagerImpl;
import com.viaversion.viaversion.api.Via;
Expand Down
Expand Up @@ -21,7 +21,7 @@
import com.soulfiremc.account.MinecraftAccount;
import com.soulfiremc.account.service.BedrockData;
import com.soulfiremc.proxy.SFProxy;
import com.soulfiremc.server.util.HttpHelper;
import com.soulfiremc.server.util.LenniHttpHelper;
import java.io.IOException;
import net.raphimc.minecraftauth.MinecraftAuth;
import net.raphimc.minecraftauth.step.msa.StepCredentialsMsaCode;
Expand All @@ -35,7 +35,7 @@ public MinecraftAccount login(BedrockMicrosoftAuthData data, SFProxy proxyData)
try {
var fullBedrockSession =
MinecraftAuth.BEDROCK_CREDENTIALS_LOGIN.getFromInput(
HttpHelper.createLenniMCAuthHttpClient(proxyData),
LenniHttpHelper.createLenniMCAuthHttpClient(proxyData),
new StepCredentialsMsaCode.MsaCredentials(data.email, data.password));

var mcChain = fullBedrockSession.getMcChain();
Expand Down

0 comments on commit df24c6a

Please sign in to comment.