Skip to content

Commit

Permalink
Initial work on POV server
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexProgrammerDE committed Feb 26, 2024
1 parent 5ad2a25 commit 10765b9
Show file tree
Hide file tree
Showing 8 changed files with 364 additions and 34 deletions.
6 changes: 2 additions & 4 deletions build.gradle.kts
Expand Up @@ -25,11 +25,9 @@ allprojects {
}
}

var mainClassString = "com.soulfiremc.launcher.SoulFireJava8Launcher"

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

dependencies {
Expand Down Expand Up @@ -135,7 +133,7 @@ dependencies {
}

fun Manifest.applySFAttributes() {
attributes["Main-Class"] = mainClassString
attributes["Main-Class"] = "com.soulfiremc.launcher.SoulFireJava8Launcher"
attributes["Name"] = "SoulFire"
attributes["Specification-Title"] = "SoulFire"
attributes["Specification-Version"] = version.toString()
Expand Down
35 changes: 11 additions & 24 deletions src/main/java/com/soulfiremc/SoulFireBootstrap.java
Expand Up @@ -23,11 +23,11 @@
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;
import io.netty.util.ResourceLeakDetector;
import java.awt.GraphicsEnvironment;
import java.io.IOException;
import java.net.ServerSocket;
import java.nio.file.Files;
import java.time.Instant;
import java.util.ArrayList;
Expand Down Expand Up @@ -124,7 +124,7 @@ private static void injectMixinsAndRun(boolean runServer, String[] args) {

private static void postMixinMain(boolean runServer, String[] args) {
var host = getHost();
var port = getAvailablePort();
var port = getRPCPort();
if (runServer) {
log.info("Starting server on {}:{}", host, port);
SoulFireLoader.runHeadless(host, port, args);
Expand All @@ -137,6 +137,15 @@ private static void postMixinMain(boolean runServer, String[] args) {
}
}

private static int getRPCPort() {
var portProperty = System.getProperty("sw.grpc.port");
if (portProperty != null) {
return Integer.parseInt(portProperty);
}

return PortHelper.getAvailablePort(38765);
}

public static void injectExceptionHandler() {
Thread.setDefaultUncaughtExceptionHandler(
(thread, throwable) -> {
Expand Down Expand Up @@ -177,26 +186,4 @@ public static void setupLogging(SettingsHolder settingsHolder) {
private static String getHost() {
return System.getProperty("sw.grpc.host", "localhost");
}

private static int getAvailablePort() {
var portProperty = System.getProperty("sw.grpc.port");
if (portProperty != null) {
return Integer.parseInt(portProperty);
}

var initialPort = 38765;

while (true) {
try {
var serverSocket = new ServerSocket(initialPort);
serverSocket.close();
break; // Port is available, exit the loop
} catch (IOException e) {
log.info("Port {} is already in use, trying next port...", initialPort);
initialPort++; // Increment the port number and try again
}
}

return initialPort;
}
}
3 changes: 2 additions & 1 deletion src/main/java/com/soulfiremc/server/AttackManager.java
Expand Up @@ -86,6 +86,7 @@ public class AttackManager {
private final Map<UUID, BotConnection> botConnections = new ConcurrentHashMap<>();
private final ExecutorManager executorManager = new ExecutorManager("SoulFire-Attack-" + id);
private final SoulFireServer soulFireServer;
private final SettingsHolder settingsHolder;
@Setter private AttackState attackState = AttackState.STOPPED;

private static MinecraftAccount getAccount(
Expand Down Expand Up @@ -117,7 +118,7 @@ private static Optional<SFProxy> getProxy(
return Optional.of(selectedProxy.getKey());
}

public CompletableFuture<?> start(SettingsHolder settingsHolder) {
public CompletableFuture<?> start() {
if (!attackState.isStopped()) {
throw new IllegalStateException("Attack is already running");
}
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/com/soulfiremc/server/SoulFireServer.java
Expand Up @@ -43,6 +43,7 @@
import com.soulfiremc.server.plugins.ForwardingBypass;
import com.soulfiremc.server.plugins.KillAura;
import com.soulfiremc.server.plugins.ModLoaderSupport;
import com.soulfiremc.server.plugins.POVServer;
import com.soulfiremc.server.plugins.ServerListBypass;
import com.soulfiremc.server.settings.AccountSettings;
import com.soulfiremc.server.settings.BotSettings;
Expand Down Expand Up @@ -247,7 +248,8 @@ private static void registerInternalServerExtensions() {
new FakeVirtualHost(), // Needs to be before ModLoaderSupport to not break it
new ModLoaderSupport(), // Needs to be before ForwardingBypass to not break it
new ForwardingBypass(),
new KillAura());
new KillAura(),
new POVServer());

plugins.forEach(SoulFireAPI::registerServerExtension);
}
Expand Down Expand Up @@ -296,12 +298,12 @@ private void shutdownHook() {
}

public int startAttack(SettingsHolder settingsHolder) {
var attackManager = injector.newInstance(AttackManager.class);
var attackManager = new AttackManager(this, settingsHolder);
SoulFireAPI.postEvent(new AttackInitEvent(attackManager));

attacks.put(attackManager.id(), attackManager);

attackManager.start(settingsHolder);
attackManager.start();

log.debug("Started attack with id {}", attackManager.id());

Expand Down
Expand Up @@ -17,4 +17,4 @@
*/
package com.soulfiremc.server.api;

public interface BotContext {}
public interface ObjectContext {}
3 changes: 2 additions & 1 deletion src/main/java/com/soulfiremc/server/api/PluginHelper.java
Expand Up @@ -69,7 +69,8 @@ public static <T extends SoulFireAttackEvent> void registerAttackEventConsumer(
() -> event.attackManager().eventBus().registerConsumer(consumer, clazz)));
}

public static void registerBotContextFactory(Function<BotConnection, BotContext> contextFactory) {
public static void registerBotContextFactory(
Function<BotConnection, ObjectContext> contextFactory) {
registerAttackEventConsumer(
BotConnectionInitEvent.class,
event ->
Expand Down

0 comments on commit 10765b9

Please sign in to comment.