Skip to content

Commit

Permalink
- 示例配置文件更新。
Browse files Browse the repository at this point in the history
- 软件包移动。
- 清理文件。
- 为低配置设备添加单线程兼容。
  • Loading branch information
KasumiNova committed Oct 1, 2024
1 parent fe44c17 commit 7dd6631
Show file tree
Hide file tree
Showing 24 changed files with 225 additions and 79 deletions.
173 changes: 162 additions & 11 deletions ExampleConfiguration.cfg

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ plugins {

// Project properties
group = "github.kasuminova.stellarcore"
version = "1.4.15"
version = "1.4.16"

// Set the toolchain version to decouple the Java we run Gradle with from the Java used to compile and run the mod
java {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ public void preInit() {
super.preInit();
MinecraftForge.EVENT_BUS.register(ClientEventHandler.INSTANCE);

if (Mods.REPLAY.loaded() && StellarCoreConfig.PERFORMANCE.vanilla.hudCaching) {
StellarCoreConfig.PERFORMANCE.vanilla.hudCaching = false;
StellarLog.LOG.warn("Replay Mod is not compatible with Performance/HUDCaching feature, auto disabled!");
}
// if (Mods.REPLAY.loaded() && StellarCoreConfig.PERFORMANCE.vanilla.hudCaching) {
// StellarCoreConfig.PERFORMANCE.vanilla.hudCaching = false;
// StellarLog.LOG.warn("Replay Mod is not compatible with Performance/HUDCaching feature, auto disabled!");
// }

TitleUtils.setRandomTitle("*PreInit*");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.llamalad7.betterchat.gui.GuiBetterChat;
import com.windanesz.ancientspellcraft.client.entity.ASFakePlayer;
import github.kasuminova.stellarcore.client.hudcaching.HUDCaching;
import github.kasuminova.stellarcore.client.pool.ResourceLocationPool;
import github.kasuminova.stellarcore.common.pool.ResourceLocationPool;
import github.kasuminova.stellarcore.client.pool.StellarUnpackedDataPool;
import github.kasuminova.stellarcore.client.util.TitleUtils;
import github.kasuminova.stellarcore.common.config.StellarCoreConfig;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package github.kasuminova.stellarcore.client.pool;

import github.kasuminova.stellarcore.common.pool.AsyncCanonicalizePool;
import github.kasuminova.stellarcore.common.pool.CanonicalizeTask;
import github.kasuminova.stellarcore.common.util.StellarLog;
import it.unimi.dsi.fastutil.Hash;
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package github.kasuminova.stellarcore.client.pool;

import github.kasuminova.stellarcore.common.config.StellarCoreConfig;
import github.kasuminova.stellarcore.common.pool.AsyncCanonicalizePool;
import github.kasuminova.stellarcore.common.util.StellarLog;
import it.unimi.dsi.fastutil.floats.FloatArrays;
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package github.kasuminova.stellarcore.client.pool;

import github.kasuminova.stellarcore.common.config.StellarCoreConfig;
import github.kasuminova.stellarcore.common.pool.AsyncCanonicalizePool;
import github.kasuminova.stellarcore.common.pool.CanonicalizeWorker;
import github.kasuminova.stellarcore.common.util.StellarLog;
import it.unimi.dsi.fastutil.Hash;
import it.unimi.dsi.fastutil.floats.FloatArrays;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package github.kasuminova.stellarcore.client.pool;

import github.kasuminova.stellarcore.common.config.StellarCoreConfig;
import github.kasuminova.stellarcore.common.pool.AsyncCanonicalizePool;
import github.kasuminova.stellarcore.common.util.StellarLog;
import it.unimi.dsi.fastutil.floats.FloatArrayList;
import it.unimi.dsi.fastutil.floats.FloatList;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package github.kasuminova.stellarcore.client.pool;

import github.kasuminova.stellarcore.common.config.StellarCoreConfig;
import github.kasuminova.stellarcore.common.pool.AsyncCanonicalizePool;
import github.kasuminova.stellarcore.common.util.StellarLog;
import it.unimi.dsi.fastutil.Hash;
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package github.kasuminova.stellarcore.common;

import github.kasuminova.stellarcore.client.pool.ResourceLocationPool;
import github.kasuminova.stellarcore.common.pool.ResourceLocationPool;
import github.kasuminova.stellarcore.common.bugfix.TileEntityContainerFixes;
import github.kasuminova.stellarcore.common.handler.StellarCoreTickHandler;
import github.kasuminova.stellarcore.common.integration.fluxnetworks.IntegrationsFluxNetworks;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package github.kasuminova.stellarcore.client.pool;
package github.kasuminova.stellarcore.common.pool;

import github.kasuminova.stellarcore.common.util.StellarLog;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package github.kasuminova.stellarcore.client.pool;
package github.kasuminova.stellarcore.common.pool;

import javax.annotation.Nullable;
import java.util.function.Consumer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package github.kasuminova.stellarcore.client.pool;
package github.kasuminova.stellarcore.common.pool;

import javax.annotation.Nullable;
import java.util.function.Consumer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package github.kasuminova.stellarcore.client.pool;
package github.kasuminova.stellarcore.common.pool;

import github.kasuminova.stellarcore.common.util.StellarLog;
import io.netty.util.internal.shaded.org.jctools.queues.atomic.MpscLinkedAtomicQueue;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package github.kasuminova.stellarcore.client.pool;
package github.kasuminova.stellarcore.common.pool;

import github.kasuminova.stellarcore.common.mod.Mods;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
import org.spongepowered.asm.mixin.Unique;

import java.util.Collections;
import java.util.LinkedList;
Expand All @@ -22,6 +23,8 @@ public class ParallelRandomBlockTicker {

public static final ParallelRandomBlockTicker INSTANCE = new ParallelRandomBlockTicker();

private static final boolean SHOULD_PARALLEL = Runtime.getRuntime().availableProcessors() > 2;

private final List<Tuple<Chunk, List<TickData>>> enqueuedChunks = new ObjectArrayList<>();

private World currentWorld = null;
Expand All @@ -45,7 +48,7 @@ public void execute(final World world, final Random rand, final Profiler profile
this.currentRand = rand;
this.profiler = profiler;

boolean parallel = enqueuedChunks.size() * randomTickSpeed >= 300;
boolean parallel = SHOULD_PARALLEL && enqueuedChunks.size() * randomTickSpeed >= 300;
List<List<RandomTickTask>> randomTickData = parallel ? Collections.synchronizedList(new LinkedList<>()) : new LinkedList<>();

(parallel ? enqueuedChunks.parallelStream() : enqueuedChunks.stream()).forEach(entry -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
Expand All @@ -19,9 +20,12 @@
@Mixin(value = CommonProxy.class, remap = false)
public class MixinCommonProxy {

@Unique
private static final boolean stellar_core$SHOULD_PARALLEL = Runtime.getRuntime().availableProcessors() > 2;

@Inject(method = "onServerTick", at = @At("HEAD"))
private void injectOnServerTick(final TickEvent.ServerTickEvent event, final CallbackInfo ci) {
if (!StellarCoreConfig.PERFORMANCE.fluxNetworks.parallelNetworkCalculation) {
if (!StellarCoreConfig.PERFORMANCE.fluxNetworks.parallelNetworkCalculation || !stellar_core$SHOULD_PARALLEL) {
return;
}
if (event.phase == TickEvent.Phase.END) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
import github.kasuminova.stellarcore.common.config.StellarCoreConfig;
import github.kasuminova.stellarcore.mixin.util.IStellarFluxNetwork;
import net.minecraft.entity.player.EntityPlayer;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
Expand All @@ -29,6 +26,9 @@
@Mixin(value = FluxNetworkServer.class, remap = false)
public abstract class MixinFluxNetworkServer extends FluxNetworkBase implements IFluxNetwork, IStellarFluxNetwork {

@Unique
private static final boolean stellar_core$SHOULD_PARALLEL = Runtime.getRuntime().availableProcessors() > 2;

@Shadow
protected abstract void handleConnectionQueue();

Expand Down Expand Up @@ -76,7 +76,7 @@ public Runnable getCycleStartRunnable() {
*/
@Inject(method = "onEndServerTick", at = @At("HEAD"), cancellable = true)
public void onEndServerTick(final CallbackInfo ci) {
if (!StellarCoreConfig.PERFORMANCE.fluxNetworks.parallelNetworkCalculation) {
if (!StellarCoreConfig.PERFORMANCE.fluxNetworks.parallelNetworkCalculation || !stellar_core$SHOULD_PARALLEL) {
return;
}
ci.cancel();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,24 @@
import net.minecraft.world.World;
import org.apache.commons.lang3.mutable.MutableDouble;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;

@SuppressWarnings("MethodMayBeStatic")
@Mixin(value = EnergyCalculatorLeg.class, remap = false)
public abstract class MixinEnergyCalculatorLeg implements IStellarEnergyCalculatorLeg {

@Unique
private static final boolean stellar_core$SHOULD_PARALLEL = Runtime.getRuntime().availableProcessors() > 2;

@Unique
private static volatile MethodHandle stellar_core$distribute = null;

Expand All @@ -42,8 +48,12 @@ private static void applyCableEffects(final Collection eventPaths, final World w
* @author Kasumi_Nova
* @reason Parallel calculation
*/
@Overwrite
public boolean runSyncStep(EnergyNetLocal enet) {
@Inject(method = "runSyncStep(Lic2/core/energy/grid/EnergyNetLocal;)Z", at = @At("HEAD"), cancellable = true)
public void runSyncStep(final EnergyNetLocal enet, final CallbackInfoReturnable<Boolean> cir) {
if (!stellar_core$SHOULD_PARALLEL) {
return;
}

final AtomicBoolean foundAny = new AtomicBoolean(false);
enet.getSources().parallelStream().forEach(tile -> {
IEnergySource source = (IEnergySource) tile.getMainTile();
Expand All @@ -68,7 +78,8 @@ public boolean runSyncStep(EnergyNetLocal enet) {
amount = Math.min(amount, power * packets);
tile.setSourceData(amount, packets);
});
return foundAny.get();

cir.setReturnValue(foundAny.get());
}

@Unique
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import io.netty.util.internal.shaded.org.jctools.queues.MpmcArrayQueue;
import io.netty.util.internal.shaded.org.jctools.queues.atomic.MpscLinkedAtomicQueue;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
Expand All @@ -25,6 +28,9 @@
@Mixin(targets = "ic2.core.energy.grid.GridUpdater", remap = false)
public class MixinGridUpdater {

@Unique
private static final boolean stellar_core$SHOULD_PARALLEL = Runtime.getRuntime().availableProcessors() > 2;

@Shadow
private boolean busy;

Expand Down Expand Up @@ -60,8 +66,13 @@ public class MixinGridUpdater {
* @author Kasumi_Nova
* @reason Parallel Calculation
*/
@Overwrite
void startTransferCalc() {
@Inject(method = "startTransferCalc", at = @At("HEAD"), cancellable = true)
void startTransferCalc(final CallbackInfo ci) {
if (!stellar_core$SHOULD_PARALLEL) {
return;
}
ci.cancel();

assert !this.busy;
this.isChangeStep = false;
IEnergyCalculator energyCalculator = stellar_core$EnergyNetGlobal$getCalculator();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package github.kasuminova.stellarcore.mixin.minecraft.resourcelocation;

import github.kasuminova.stellarcore.client.pool.ResourceLocationPool;
import github.kasuminova.stellarcore.common.pool.ResourceLocationPool;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package github.kasuminova.stellarcore.mixin.minecraft.resourcelocation;

import github.kasuminova.stellarcore.client.pool.ResourceLocationPool;
import github.kasuminova.stellarcore.common.pool.ResourceLocationPool;
import net.minecraft.util.ResourceLocation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit 7dd6631

Please sign in to comment.