Skip to content

Commit

Permalink
Websockets
Browse files Browse the repository at this point in the history
  • Loading branch information
DaNussi committed Apr 3, 2024
1 parent b3ae080 commit e984261
Show file tree
Hide file tree
Showing 15 changed files with 622 additions and 118 deletions.
Binary file modified redis/data/dump.rdb
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,19 @@
import net.nussi.dedicated_applied_energistics.init.BlockInit;
import net.nussi.dedicated_applied_energistics.init.ItemInit;
import net.nussi.dedicated_applied_energistics.init.TabInit;
import net.nussi.dedicated_applied_energistics.websockets.WebsocketClientManager;
import net.nussi.dedicated_applied_energistics.websockets.WebsocketHost;
import org.slf4j.Logger;

@Mod(DedicatedAppliedEnegistics.MODID)
public class DedicatedAppliedEnegistics
{
public static final String MODID = "dae2";
private static final Logger LOGGER = LogUtils.getLogger();

public static final String MODID = "dae2";
public static final WebsocketHost WEBSOCKET_HOST = new WebsocketHost();
public static final WebsocketClientManager WEBSOCKET_CLIENT_MANAGER = new WebsocketClientManager();

public DedicatedAppliedEnegistics()
{
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
Expand All @@ -30,8 +35,19 @@ public DedicatedAppliedEnegistics()
modEventBus.addListener(DedicatedAppliedEnegistics::commonSetup);

ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, DedicatedAppliedEnergisticsController.CONFIG_SPEC, "dae2-config.toml");

}

public static void commonSetup(FMLCommonSetupEvent event) { }
public static void commonSetup(FMLCommonSetupEvent event) {

if(DedicatedAppliedEnergisticsController.CONFIG_VALUE_BEHAVIOUR_HOST_IP_AUTO_DETECT.get()) {
String ip = DedicatedAppliedEnergisticsController.getHostAddress();
LOGGER.info("BEHAVIOUR_HOST_IP_AUTO_DETECT is enabled and detected ip: " + ip);
DedicatedAppliedEnergisticsController.CONFIG_VALUE_HOST_IP.set(ip);
}

WEBSOCKET_HOST.start();
WEBSOCKET_CLIENT_MANAGER.start();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.minecraftforge.fml.common.Mod;
import org.slf4j.Logger;

import java.net.InetAddress;
import java.util.UUID;

@Mod.EventBusSubscriber(modid = DedicatedAppliedEnegistics.MODID)
Expand All @@ -19,22 +20,36 @@ public class DedicatedAppliedEnergisticsController {
public static ForgeConfigSpec.ConfigValue<String> CONFIG_VALUE_RABBITMQ_URI;
public static ForgeConfigSpec.ConfigValue<String> CONFIG_VALUE_REDIS_URI;
public static ForgeConfigSpec.ConfigValue<String> CONFIG_VALUE_HOST_ID;
public static ForgeConfigSpec.ConfigValue<String> CONFIG_VALUE_HOST_IP;
public static ForgeConfigSpec.ConfigValue<Integer> CONFIG_VALUE_HOST_PORT;

public static ForgeConfigSpec.ConfigValue<Boolean> CONFIG_VALUE_BEHAVIOUR_AUTOSTART;
public static ForgeConfigSpec.ConfigValue<Boolean> CONFIG_VALUE_BEHAVIOUR_HOST_IP_AUTO_DETECT;

static {
CONFIG_BUILDER.push("Config for DAE2!");

CONFIG_VALUE_RABBITMQ_URI = CONFIG_BUILDER.define("RABBITMQ_URI", "amqp://guest:guest@localhost:5672/");
CONFIG_VALUE_REDIS_URI = CONFIG_BUILDER.define("REDIS_URI", "redis://localhost:6379/");
CONFIG_VALUE_HOST_ID = CONFIG_BUILDER.define("HOST_ID", UUID.randomUUID().toString());
CONFIG_VALUE_HOST_IP = CONFIG_BUILDER.define("HOST_IP", getHostAddress());
CONFIG_VALUE_HOST_PORT = CONFIG_BUILDER.define("HOST_PORT", 7894);

CONFIG_VALUE_BEHAVIOUR_AUTOSTART = CONFIG_BUILDER.define("BEHAVIOUR_AUTOSTART", false);
CONFIG_VALUE_BEHAVIOUR_HOST_IP_AUTO_DETECT = CONFIG_BUILDER.define("BEHAVIOUR_HOST_IP_AUTO_DETECT", true);

CONFIG_BUILDER.pop();
CONFIG_SPEC = CONFIG_BUILDER.build();
}

public static String getHostAddress() {
try {
return InetAddress.getLocalHost().getHostAddress();
} catch (Exception e) {
LOGGER.error("Failed to get host ip using 127.0.0.1");
return "127.0.0.1";
}
}

@SubscribeEvent
public static void onServerStopping(ServerStoppingEvent event) throws Exception {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package net.nussi.dedicated_applied_energistics.misc;

public abstract class Lifecycle {
private boolean isRunning = false;

public boolean start() {
if(isRunning) return true;
if(onStart()) {
isRunning = true;
return true;
} else {
return false;
}
}

public boolean stop() {
if(!isRunning) return true;
if(onStop()) {
isRunning = false;
return true;
} else {
return false;
}
}

protected abstract boolean onStart();
protected abstract boolean onStop();

public boolean isRunning() {
return isRunning;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package net.nussi.dedicated_applied_energistics.misc;

import java.util.concurrent.atomic.AtomicBoolean;

public abstract class LifecycleTickable extends Tickable {
private boolean isRunning = false;
private Thread thread = new Thread(this);
private AtomicBoolean ticking = new AtomicBoolean(false);

public boolean start() {
if(isRunning) return true;

if(!onStart()) return false;
if(!this.startTicking()) return false;

isRunning = true;
return true;
}

public boolean stop() {
if(!isRunning) return true;

if(!this.stopTicking()) return false;
if(!onStop()) return false;

isRunning = false;
return true;
}

protected abstract boolean onStart();
protected abstract boolean onStop();

public boolean isRunning() {
return isRunning;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package net.nussi.dedicated_applied_energistics.misc;

import com.mojang.logging.LogUtils;
import org.slf4j.Logger;

import java.util.concurrent.atomic.AtomicBoolean;

public abstract class Tickable implements Runnable {
private static final Logger LOGGER = LogUtils.getLogger();

private Thread thread = new Thread(this);
private AtomicBoolean ticking = new AtomicBoolean(false);

protected boolean startTicking() {
if(ticking.get()) return true;

try {
ticking.set(true);
thread.start();
return true;
} catch (Exception e) {
LOGGER.error("Failed to start thread");
e.printStackTrace();
return false;
}
}

public boolean stopTicking() {
if(!ticking.get()) return true;

try {
ticking.set(false);
thread.join(1000);
return true;
} catch (Exception e) {
LOGGER.error("Failed to stop thread");
e.printStackTrace();
return false;
}
}

@Override
public void run() {
while (ticking.get()) {
try {
onTick();
} catch (Exception e) {
LOGGER.error("Failed to tick");
e.printStackTrace();
}
}
}

protected abstract void onTick() throws Exception;

public boolean isTicking() {
return ticking.get();
}
}
Loading

0 comments on commit e984261

Please sign in to comment.