Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update LDLib to fix server freezing sometimes (and various other issues) #2184

Merged
merged 3 commits into from
Oct 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ dependencyResolutionManagement {
def vineFlowerVersion = "1.+"
def macheteVersion = "1.+"
def configurationVersion = "2.2.0"
def ldLibVersion = "1.0.28.a"
def ldLibVersion = "1.0.30.a"
def mixinextrasVersion = "0.2.0"
def shimmerVersion = "0.2.4"
def lombokPluginVersion = "8.7.1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ public void selectResult(Object item) {
public void search(String s, Consumer<Object> consumer) {
var added = new HashSet<String>();
for (var item : this.items) {
if (Thread.currentThread().isInterrupted()) return;
var id = mode.getUniqueID(item);
if (!added.contains(id)) {
added.add(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController;

import com.lowdragmc.lowdraglib.Platform;

import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel;
Expand Down Expand Up @@ -112,6 +114,7 @@ public void removeAsyncLogic(IMultiController controller) {

private void searchingTask() {
try {
if (Platform.isServerNotSafe()) return;
IN_SERVICE.set(true);
for (var controller : controllers) {
controller.asyncCheckPattern(periodID);
Expand All @@ -125,7 +128,7 @@ private void searchingTask() {
}

public static boolean isThreadService() {
return IN_SERVICE.get();
return IN_SERVICE.get() && !Platform.isServerNotSafe();
}

public void releaseExecutorService() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem;
import com.gregtechceu.gtceu.api.machine.MetaMachine;
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData;
import com.gregtechceu.gtceu.api.registry.GTRegistries;
import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData;
import com.gregtechceu.gtceu.common.capability.LocalizedHazardSavedData;
Expand Down Expand Up @@ -75,6 +76,7 @@
import net.minecraftforge.event.level.BlockEvent;
import net.minecraftforge.event.level.ChunkWatchEvent;
import net.minecraftforge.event.level.LevelEvent;
import net.minecraftforge.event.server.ServerStoppingEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.LogicalSide;
Expand Down Expand Up @@ -249,6 +251,17 @@ public static void levelTick(TickEvent.LevelTickEvent event) {
public static void worldUnload(LevelEvent.Unload event) {
if (event.getLevel() instanceof ServerLevel serverLevel) {
TaskHandler.onWorldUnLoad(serverLevel);
MultiblockWorldSavedData.getOrCreate(serverLevel).releaseExecutorService();
}
}

@SubscribeEvent
public static void onServerStopping(ServerStoppingEvent event) {
var levels = event.getServer().getAllLevels();
for (var level : levels) {
if (!level.isClientSide()) {
MultiblockWorldSavedData.getOrCreate(level).releaseExecutorService();
}
}
}

Expand Down
Loading